diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 3b99e37f2..e688c6909 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -33,6 +33,10 @@ body: options: # The below comment is used to insert a new version with on-release.yml #NEXT_VERSION# + - 1.45.1 + - 1.45.0 + - 1.44.0 + - 1.43.1 - 1.43.0 - 1.42.1 - 1.42.0 diff --git a/.github/actions/extract-build-artifact/action.yaml b/.github/actions/extract-build-artifact/action.yaml new file mode 100644 index 000000000..2f5fe835a --- /dev/null +++ b/.github/actions/extract-build-artifact/action.yaml @@ -0,0 +1,43 @@ +name: Extract Build Artifact +description: Extracts artifacts from an existing Docker image to be used for from source installation +inputs: + digest: + description: Digest of Docker image to use + required: true + architecture: + description: Name of architecture, will be used to create directories (e.g. amd64, arm64) + required: true + release-tag: + description: Tag of the release to which the artifact will be attached + required: true + repository: + description: Repository to which the release belongs, e.g. owner/repo + required: true + token: + description: GitHub token with permissions to upload release assets + required: true +runs: + using: "composite" + steps: + - name: Start docker container for ${{ inputs.architecture }} + run: | + docker run --name homarr \ + -e "SECRET_ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000" \ + --detach --rm ${{ inputs.digest }} + shell: bash + - name: Extract build from ${{ inputs.architecture }} container + run: | + docker exec homarr cp /etc/nginx/templates/nginx.conf /app && \ + docker exec homarr tar -czf extraction.tar.gz -C /app . && \ + mkdir -p ${{ runner.temp }}/extraction/${{ inputs.architecture }} && \ + docker cp homarr:/app/extraction.tar.gz ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-${{ inputs.architecture }}.tar.gz + shell: bash + - name: Stop ${{ inputs.architecture }} container + if: always() + run: docker container remove --force --volumes homarr + shell: bash + - name: Add build archive to release + env: + GH_TOKEN: ${{ inputs.token }} + run: gh release upload --repo ${{ inputs.repository }} ${{ inputs.release-tag }} ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-${{ inputs.architecture }}.tar.gz --clobber + shell: bash diff --git a/.github/renovate.json5 b/.github/renovate.json5 index eddf9b48d..e3c3e433f 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -15,6 +15,21 @@ matchUpdateTypes: ["minor", "patch", "pin", "digest"], automerge: true, }, + { + // disallow automerge for onlyBuiltDependencies + matchPackageNames: [ + "@tree-sitter-grammars/tree-sitter-yaml", + "bcrypt", + "better-sqlite3", + "cpu-features", + "esbuild", + "sharp", + "ssh2", + "tree-sitter", + "tree-sitter-json", + ], + automerge: false, + }, ], updateInternalDeps: true, rangeStrategy: "bump", diff --git a/.github/workflows/automatic-approval.yml b/.github/workflows/automatic-approval.yml index 7a38b6e02..7f212e23b 100644 --- a/.github/workflows/automatic-approval.yml +++ b/.github/workflows/automatic-approval.yml @@ -11,7 +11,7 @@ jobs: if: github.actor_id == 158783068 || github.actor_id == 190541745 || github.actor_id == 210161987 # Id of renovate bot and crowdin bot see https://api.github.com/users/homarr-renovate%5Bbot%5D and https://api.github.com/users/homarr-crowdin%5Bbot%5D and https://api.github.com/users/homarr-update-contributors%5Bbot%5D steps: - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Obtain token id: obtainToken uses: actions/create-github-app-token@v2 diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 0f504353c..2b5e8a3d7 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -1,4 +1,6 @@ name: "[Quality] Code Analysis" +permissions: + contents: read on: pull_request: @@ -22,7 +24,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup @@ -37,7 +39,7 @@ jobs: format: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup @@ -48,7 +50,7 @@ jobs: typecheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup @@ -59,7 +61,7 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup @@ -77,7 +79,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Build docker image @@ -100,7 +102,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Copy env diff --git a/.github/workflows/crowdin-schedule-download.yml b/.github/workflows/crowdin-schedule-download.yml index c4fead5ad..a62f9e31d 100644 --- a/.github/workflows/crowdin-schedule-download.yml +++ b/.github/workflows/crowdin-schedule-download.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Obtain token id: obtainToken diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml index 6212ba64c..4cdf60b66 100644 --- a/.github/workflows/crowdin-upload.yml +++ b/.github/workflows/crowdin-upload.yml @@ -1,4 +1,6 @@ name: "[Crowdin] Upload translations" +permissions: + contents: read on: workflow_dispatch: @@ -15,7 +17,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Upload Crowdin translations uses: crowdin/github-action@v2 diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 769cdcb7e..1f9f40f17 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -37,7 +37,7 @@ jobs: outputs: version: ${{ steps.read-semver.outputs.version || steps.version-fallback.outputs.version }} git_ref: ${{ steps.read-git-ref.outputs.ref || github.ref }} - + skipped: ${{ env.SKIP_RELEASE }} steps: - run: echo "Skipping release for workflow_dispatch event" if: env.SKIP_RELEASE == 'true' @@ -55,16 +55,16 @@ jobs: app-id: ${{ secrets.RENOVATE_MERGE_APP_ID }} permission-contents: write # required to commit package.json & changelog changes, merge them to dev and publish the release - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 if: env.SKIP_RELEASE == 'false' with: persist-credentials: false - uses: pnpm/action-setup@v4 if: env.SKIP_RELEASE == 'false' - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 if: env.SKIP_RELEASE == 'false' with: - node-version: 24.10.0 + node-version: 24.11.1 cache: "pnpm" - run: npm i -g pnpm if: env.SKIP_RELEASE == 'false' @@ -115,7 +115,7 @@ jobs: outputs: digest: ${{ steps.build.outputs.digest }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: ref: ${{ needs.release.outputs.git_ref }} @@ -146,7 +146,6 @@ jobs: outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=true env: SKIP_ENV_VALIDATION: true - build-arm64: name: Build docker image for arm64 needs: release @@ -154,7 +153,7 @@ jobs: outputs: digest: ${{ steps.build.outputs.digest }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: ref: ${{ needs.release.outputs.git_ref }} @@ -185,10 +184,38 @@ jobs: outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=true env: SKIP_ENV_VALIDATION: true + extract-asset-amd64: + name: Extract amd64 asset from docker image + needs: [release, build-amd64] + runs-on: ubuntu-latest + steps: + - name: Extract amd64 + if: needs.release.outputs.skipped == 'false' + uses: homarr-labs/homarr/.github/actions/extract-build-artifact@dev + with: + digest: "${{ env.GHCR_REPO }}@${{ needs.build-amd64.outputs.digest }}" + architecture: amd64 + release-tag: ${{ needs.release.outputs.version }} + token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} + extract-asset-arm64: + name: Extract arm64 asset from docker image + needs: [release, build-arm64] + runs-on: ubuntu-24.04-arm + steps: + - name: Extract arm64 + if: needs.release.outputs.skipped == 'false' + uses: homarr-labs/homarr/.github/actions/extract-build-artifact@dev + with: + digest: "${{ env.GHCR_REPO }}@${{ needs.build-arm64.outputs.digest }}" + architecture: arm64 + release-tag: ${{ needs.release.outputs.version }} + token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} publish: name: Complete deployment and notify - needs: [release, build-amd64, build-arm64] + needs: [release, build-amd64, build-arm64, extract-asset-amd64, extract-asset-arm64] runs-on: ubuntu-latest env: NEXT_VERSION: ${{ needs.release.outputs.version }} @@ -222,6 +249,13 @@ jobs: ${{ env.GHCR_REPO }}@${{ needs.build-amd64.outputs.digest }} \ ${{ env.GHCR_REPO }}@${{ needs.build-arm64.outputs.digest }} + - name: Publish release + if: needs.release.outputs.skipped == 'false' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release edit --repo ${{ github.repository }} ${{ needs.release.outputs.version }} --draft=false + - name: Discord notification env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/deployment-weekly-release.yml b/.github/workflows/deployment-weekly-release.yml index e96cf4eec..8eae236c4 100644 --- a/.github/workflows/deployment-weekly-release.yml +++ b/.github/workflows/deployment-weekly-release.yml @@ -27,7 +27,7 @@ jobs: with: args: "Automatic release has been triggered: [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Get Next Version diff --git a/.github/workflows/on-pr-renovate-validate.yml b/.github/workflows/on-pr-renovate-validate.yml index a6096c033..ebfb57ed2 100644 --- a/.github/workflows/on-pr-renovate-validate.yml +++ b/.github/workflows/on-pr-renovate-validate.yml @@ -12,7 +12,7 @@ jobs: renovate-validate: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: | npx --yes --package renovate -- \ renovate-config-validator --strict .github/renovate.json5 diff --git a/.github/workflows/on-release.yml b/.github/workflows/on-release.yml index 9aac94c45..884e7c162 100644 --- a/.github/workflows/on-release.yml +++ b/.github/workflows/on-release.yml @@ -49,7 +49,7 @@ jobs: permission-contents: write # required to commit to branch permission-pull-requests: write # required to create pr & enable automerge - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: token: ${{ steps.obtainToken.outputs.token }} - name: Setup @@ -67,7 +67,7 @@ jobs: - name: Create Pull Request id: create-pull-request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v8 with: token: ${{ steps.obtainToken.outputs.token }} branch: update-bug-report-template diff --git a/.github/workflows/update-contributors.yml b/.github/workflows/update-contributors.yml index c8cb1efde..e6ef7f6ae 100644 --- a/.github/workflows/update-contributors.yml +++ b/.github/workflows/update-contributors.yml @@ -9,6 +9,8 @@ env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CROWDIN_TOKEN: "${{ secrets.CROWDIN_UPDATE_CONTRIBUTORS_TOKEN }}" +permissions: + contents: read jobs: update-contributors: runs-on: ubuntu-latest @@ -26,13 +28,13 @@ jobs: permission-pull-requests: write # required to create pr & enable automerge - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} - uses: pnpm/action-setup@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: "pnpm" @@ -51,7 +53,7 @@ jobs: - name: Create Pull Request id: create-pull-request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v8 with: token: ${{ steps.obtainToken.outputs.token }} branch: update-contributors diff --git a/.github/workflows/update-integration-list.yml b/.github/workflows/update-integration-list.yml index ff7ad9ae8..ef68a5c54 100644 --- a/.github/workflows/update-integration-list.yml +++ b/.github/workflows/update-integration-list.yml @@ -27,7 +27,7 @@ jobs: permission-contents: write # required to commit to branch permission-pull-requests: write # required to create pr & enable automerge - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@v6 env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} - name: Setup @@ -44,7 +44,7 @@ jobs: - name: Create Pull Request id: create-pull-request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v8 with: token: ${{ steps.obtainToken.outputs.token }} branch: update-integrations-readme diff --git a/.npmrc b/.npmrc index cfcb8e31b..34451fb2f 100644 --- a/.npmrc +++ b/.npmrc @@ -3,3 +3,4 @@ # @link https://docs.expo.dev/guides/monorepos/#common-issues node-linker=hoisted strict-peer-dependencies=false +engine-strict=true \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index aa50a62f2..9e2934aa3 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.21.0 +24.11.1 diff --git a/.releaserc.json b/.releaserc.json index e2414a583..0f2b07b43 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -44,6 +44,7 @@ { "successComment": false, "failComment": false, + "draftRelease": true, "releaseBodyTemplate": "<%= _.truncate(nextRelease.notes, { 'length': 124000, 'omission': '' }) %>" } ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cee49fef..2c8a7b694 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,171 @@ +## [1.46.0](https://github.com/homarr-labs/homarr/compare/v1.45.3...v1.46.0) (2025-12-12) + +### Features + +* **docker:** add widget options to sort containers ([#4636](https://github.com/homarr-labs/homarr/issues/4636)) ([dd24925](https://github.com/homarr-labs/homarr/commit/dd24925d906dc13d73c52a47fdd07bec89798789)) + +### Bug Fixes + +* add autocomplete and id attributes for password manager compatibility ([#4602](https://github.com/homarr-labs/homarr/issues/4602)) ([681aee0](https://github.com/homarr-labs/homarr/commit/681aee05f07a6e09371ed089d2b9ef361494c416)) +* **deps:** update dependency @tanstack/react-query to ^5.90.12 ([#4615](https://github.com/homarr-labs/homarr/issues/4615)) ([efc0384](https://github.com/homarr-labs/homarr/commit/efc0384b372fadafb65f61f715f08edd2a8f8573)) +* **deps:** update dependency better-sqlite3 to ^12.5.0 ([#4569](https://github.com/homarr-labs/homarr/issues/4569)) ([a20248d](https://github.com/homarr-labs/homarr/commit/a20248d0b689ab1ca475f606edfca458897ce442)) +* **deps:** update dependency drizzle-kit to ^0.31.8 ([#4618](https://github.com/homarr-labs/homarr/issues/4618)) ([5cbab28](https://github.com/homarr-labs/homarr/commit/5cbab28099d41b8ade6cc8a42e69c4191310296c)) +* **deps:** update dependency drizzle-orm to ^0.45.0 ([#4619](https://github.com/homarr-labs/homarr/issues/4619)) ([cab5d19](https://github.com/homarr-labs/homarr/commit/cab5d19141a38fbb977f4ef6e9c2ddbfdfea6aff)) +* **deps:** update dependency ldapts to v8.0.12 ([#4613](https://github.com/homarr-labs/homarr/issues/4613)) ([4689ec9](https://github.com/homarr-labs/homarr/commit/4689ec9933e5286c0d19c66989023b5b3376ffb1)) +* **deps:** update dependency ldapts to v8.0.13 ([#4626](https://github.com/homarr-labs/homarr/issues/4626)) ([8a14a6c](https://github.com/homarr-labs/homarr/commit/8a14a6cb456a6f16975372f64451e3b54ebfd88d)) +* **deps:** update dependency ldapts to v8.0.14 ([#4627](https://github.com/homarr-labs/homarr/issues/4627)) ([e37325f](https://github.com/homarr-labs/homarr/commit/e37325f5e0314b13d031fba1bff591b881baf8d1)) +* **deps:** update dependency winston to v3.19.0 ([#4632](https://github.com/homarr-labs/homarr/issues/4632)) ([3b1c564](https://github.com/homarr-labs/homarr/commit/3b1c564a5abbf1d1fca6ecab46e173c8f6938130)) +* **deps:** update next monorepo to v16.0.10 [security] ([#4634](https://github.com/homarr-labs/homarr/issues/4634)) ([2b2c0e7](https://github.com/homarr-labs/homarr/commit/2b2c0e7e3a813525bd977276df6e5594bc283055)) +* **deps:** update react monorepo to v19.2.1 ([#4608](https://github.com/homarr-labs/homarr/issues/4608)) ([f6d16fe](https://github.com/homarr-labs/homarr/commit/f6d16fe44bf239fb85a4ee3e9ae6491131315dce)) +* **deps:** update tiptap monorepo to v3 (major) ([#3612](https://github.com/homarr-labs/homarr/issues/3612)) ([d111eee](https://github.com/homarr-labs/homarr/commit/d111eee0e0a41e55de87049f3cb0a9154ae82ea1)) +* **deps:** update turbo monorepo to ^2.6.2 ([#4612](https://github.com/homarr-labs/homarr/issues/4612)) ([7de45e6](https://github.com/homarr-labs/homarr/commit/7de45e6fe50ccf4333959f924889463a22316984)) +* **deps:** update turbo monorepo to ^2.6.3 ([#4622](https://github.com/homarr-labs/homarr/issues/4622)) ([85689ca](https://github.com/homarr-labs/homarr/commit/85689caf6c25b80cb4ce04a0baf2980a1a4deece)) +* format issues ([1dd9694](https://github.com/homarr-labs/homarr/commit/1dd9694719ec4dcefe3c8d221015ba9aecede78c)) +* improve run script ([#4609](https://github.com/homarr-labs/homarr/issues/4609)) ([d084dfb](https://github.com/homarr-labs/homarr/commit/d084dfb4705fca68bb9f9465ec9564050d0b04b2)) +* **plex:** test connection not fully checking connection ([#4617](https://github.com/homarr-labs/homarr/issues/4617)) ([6a90839](https://github.com/homarr-labs/homarr/commit/6a908397cd8a6189123b91ea9d68f683af2bed05)) +* **transmission:** total download incorrect for cross seeded torrents ([#3211](https://github.com/homarr-labs/homarr/issues/3211)) ([0b4ca93](https://github.com/homarr-labs/homarr/commit/0b4ca93aa13e9838b481daed5703640d30a52ffc)) + +## [1.45.3](https://github.com/homarr-labs/homarr/compare/v1.45.2...v1.45.3) (2025-12-08) + +### Bug Fixes + +* **deps:** update dependency glob to v13 ([#4584](https://github.com/homarr-labs/homarr/issues/4584)) ([020cbd7](https://github.com/homarr-labs/homarr/commit/020cbd72d387c9f50f4eddcbc2685829cf7787de)) +* **deps:** update dependency jotai to ^2.15.2 ([#4597](https://github.com/homarr-labs/homarr/issues/4597)) ([ed638d4](https://github.com/homarr-labs/homarr/commit/ed638d47679594eab3cc19a12473722644ebf694)) +* **deps:** update dependency next-intl to v4.5.7 ([#4598](https://github.com/homarr-labs/homarr/issues/4598)) ([6b28aa8](https://github.com/homarr-labs/homarr/commit/6b28aa86d0bad29e4806592079a7f5d2e22b5ade)) +* **deps:** update dependency next-intl to v4.5.8 ([#4606](https://github.com/homarr-labs/homarr/issues/4606)) ([4f92e52](https://github.com/homarr-labs/homarr/commit/4f92e5265a40c636f303406e728e88cc056da23c)) +* **deps:** update dependency prettier to ^3.7.4 ([#4582](https://github.com/homarr-labs/homarr/issues/4582)) ([5480982](https://github.com/homarr-labs/homarr/commit/54809823e9edeacc245b560747b622aba683b3bf)) +* **deps:** update dependency typescript-eslint to ^8.48.1 ([#4438](https://github.com/homarr-labs/homarr/issues/4438)) ([d88c602](https://github.com/homarr-labs/homarr/commit/d88c6027fe3accf7a6872ada8aa2724d30bf691c)) + +## [1.45.2](https://github.com/homarr-labs/homarr/compare/v1.45.1...v1.45.2) (2025-12-05) + +### Bug Fixes + +* add ipv6 support for internal nginx proxy ([2c48b18](https://github.com/homarr-labs/homarr/commit/2c48b18968a74cb7150c246ebb2505d07764f109)) +* disable react-compiler due to issue with mantine-react-table data updates ([#4593](https://github.com/homarr-labs/homarr/issues/4593)) ([10572ca](https://github.com/homarr-labs/homarr/commit/10572ca962081961fb63b3ad9f164c610edf35e4)) + +## [1.45.1](https://github.com/homarr-labs/homarr/compare/v1.45.0...v1.45.1) (2025-12-03) + +### Bug Fixes + +* **deps:** update dependency chroma-js to ^3.1.4 ([#4570](https://github.com/homarr-labs/homarr/issues/4570)) ([d6fc46d](https://github.com/homarr-labs/homarr/commit/d6fc46df3b5e2dd79ff6f9a3dd3a3e2050a0eeef)) +* **deps:** update dependency chroma-js to ^3.2.0 ([#4585](https://github.com/homarr-labs/homarr/issues/4585)) ([b2c46d3](https://github.com/homarr-labs/homarr/commit/b2c46d33d6cc769e89e208fd29d3a1d143cf74c7)) +* **deps:** update dependency isomorphic-dompurify to ^2.33.0 ([#4581](https://github.com/homarr-labs/homarr/issues/4581)) ([ca01a31](https://github.com/homarr-labs/homarr/commit/ca01a31fe5cbce53eb0e6bd1a943320c092161ef)) +* **deps:** update dependency next-intl to v4.5.6 ([#4571](https://github.com/homarr-labs/homarr/issues/4571)) ([3062dda](https://github.com/homarr-labs/homarr/commit/3062ddafbe0bc1dbac9259af4036f0fa32d85237)) +* **deps:** update dependency sass to ^1.94.2 ([#4572](https://github.com/homarr-labs/homarr/issues/4572)) ([7a8c50f](https://github.com/homarr-labs/homarr/commit/7a8c50fa4c5224dd74af3c17f56e2e5b8d6a4f43)) +* **deps:** update dependency superjson to v2.2.6 ([#4573](https://github.com/homarr-labs/homarr/issues/4573)) ([deb5e9d](https://github.com/homarr-labs/homarr/commit/deb5e9d96092069e296ba473eaad58367b516f85)) +* **deps:** update dependency swagger-ui-react to ^5.30.3 ([#4574](https://github.com/homarr-labs/homarr/issues/4574)) ([d2c1dc3](https://github.com/homarr-labs/homarr/commit/d2c1dc3cc1dd72fc9fc8ae9613467fa0b0b8d75a)) +* **deps:** update dependency zod to ^4.1.13 ([#4575](https://github.com/homarr-labs/homarr/issues/4575)) ([879a77f](https://github.com/homarr-labs/homarr/commit/879a77ff2a81b0d0a17d1487eaf6d8539a955301)) +* **deps:** update mantine monorepo to ^8.3.9 ([#4576](https://github.com/homarr-labs/homarr/issues/4576)) ([d5d59dd](https://github.com/homarr-labs/homarr/commit/d5d59dd2561f0be2f4f4c689f33c6a9a7840a21c)) +* **deps:** update nextjs monorepo to v16.0.5 ([#4577](https://github.com/homarr-labs/homarr/issues/4577)) ([16f12d9](https://github.com/homarr-labs/homarr/commit/16f12d98e6cdae50fe2989db0911cb1350fcb93b)) +* **deps:** update tanstack-query monorepo ([#4578](https://github.com/homarr-labs/homarr/issues/4578)) ([59bcbc8](https://github.com/homarr-labs/homarr/commit/59bcbc8b4de4a0a8cee8adf6336c7c10477c766a)) +* **deps:** update testcontainers-node monorepo to ^11.9.0 ([#4583](https://github.com/homarr-labs/homarr/issues/4583)) ([10bdd74](https://github.com/homarr-labs/homarr/commit/10bdd74b2b287cb08ec0926147ac0e7fcfd492bb)) +* **deps:** update trpc monorepo to ^11.7.2 ([#4579](https://github.com/homarr-labs/homarr/issues/4579)) ([3453482](https://github.com/homarr-labs/homarr/commit/3453482ed43644025c39dee8e20549e1beb86be0)) +* **security:** rce vulnerability in nextjs ([b40deba](https://github.com/homarr-labs/homarr/commit/b40deba9ff1a3d629b6027565378d9f3ad2f1980)) + +## [1.45.0](https://github.com/homarr-labs/homarr/compare/v1.44.0...v1.45.0) (2025-11-28) + +### Features + +* **docker:** hide containers with label homarr.hide ([#4506](https://github.com/homarr-labs/homarr/issues/4506)) ([60ab98a](https://github.com/homarr-labs/homarr/commit/60ab98ae36abe712c825f7828394d3e3e98c888a)) + +### Bug Fixes + +* Add fallback when no icon in Minecraft Server widget ([#4544](https://github.com/homarr-labs/homarr/issues/4544)) ([#4545](https://github.com/homarr-labs/homarr/issues/4545)) ([99949fe](https://github.com/homarr-labs/homarr/commit/99949fe095ac5a3616c8e9c1964d7eb253c9f826)) +* **deps:** update dependency @tanstack/react-query to ^5.90.10 ([#4523](https://github.com/homarr-labs/homarr/issues/4523)) ([e87170a](https://github.com/homarr-labs/homarr/commit/e87170ae6e56cdbeef52e943353060329c39bdc9)) +* **deps:** update dependency glob to ^11.1.0 ([#4529](https://github.com/homarr-labs/homarr/issues/4529)) ([24c9854](https://github.com/homarr-labs/homarr/commit/24c985424ecc795eb96b56881a9b00c0c37386c1)) +* **deps:** update dependency glob to v12 ([#4530](https://github.com/homarr-labs/homarr/issues/4530)) ([18a6bfd](https://github.com/homarr-labs/homarr/commit/18a6bfd69d86de8c58dbfe6dc8b8fab78b2b5ee6)) +* **deps:** update dependency next-intl to v4.5.4 ([#4540](https://github.com/homarr-labs/homarr/issues/4540)) ([77a86ea](https://github.com/homarr-labs/homarr/commit/77a86ead41c0d098987561249203667ac4d88177)) +* **deps:** update dependency next-intl to v4.5.5 ([#4542](https://github.com/homarr-labs/homarr/issues/4542)) ([2bc6964](https://github.com/homarr-labs/homarr/commit/2bc6964f7efb5203f626d2f07b847dffd53191f0)) +* **deps:** update dependency sass to ^1.94.1 ([#4531](https://github.com/homarr-labs/homarr/issues/4531)) ([292e36f](https://github.com/homarr-labs/homarr/commit/292e36fec5acff9b1d143f19e18ea170c87fa0d0)) +* **deps:** update dependency zod-validation-error to v5 ([#4437](https://github.com/homarr-labs/homarr/issues/4437)) ([9a3feb4](https://github.com/homarr-labs/homarr/commit/9a3feb404c0c284b4f33fce12d87a469741a6ebd)) +* **security:** restrict modification of entrypoint script ([#4555](https://github.com/homarr-labs/homarr/issues/4555)) ([524e1a4](https://github.com/homarr-labs/homarr/commit/524e1a485be56dbebf8f71d4546bc65672737f30)) + +## [1.44.0](https://github.com/homarr-labs/homarr/compare/v1.43.3...v1.44.0) (2025-11-21) + +### Features + +* **pi-hole:** support no-auth ([#4480](https://github.com/homarr-labs/homarr/issues/4480)) ([c89e35e](https://github.com/homarr-labs/homarr/commit/c89e35e13c794bbdf98748c00644b86f7f5dbe68)) + +### Bug Fixes + +* **deps:** update dependency @tanstack/react-query to ^5.90.8 ([#4494](https://github.com/homarr-labs/homarr/issues/4494)) ([a5b6203](https://github.com/homarr-labs/homarr/commit/a5b6203be6ac3c2308614f10ef6a17590917e2c9)) +* **deps:** update dependency @tanstack/react-query to ^5.90.9 ([#4508](https://github.com/homarr-labs/homarr/issues/4508)) ([b3db5d5](https://github.com/homarr-labs/homarr/commit/b3db5d5f7bc2d146f0b2c230a52e7bd4efad3bcb)) +* **deps:** update dependency @tanstack/react-query-next-experimental to ^5.91.0 ([#4505](https://github.com/homarr-labs/homarr/issues/4505)) ([8ea6cff](https://github.com/homarr-labs/homarr/commit/8ea6cffb537ca54a413c583ab8b8fd24a52185be)) +* **deps:** update dependency drizzle-kit to ^0.31.7 ([#4507](https://github.com/homarr-labs/homarr/issues/4507)) ([b4f9fb8](https://github.com/homarr-labs/homarr/commit/b4f9fb8b46a8f74e2d7896dfe98e80618cfbcde4)) +* **deps:** update dependency fast-xml-parser to ^5.3.2 ([#4510](https://github.com/homarr-labs/homarr/issues/4510)) ([5e57a49](https://github.com/homarr-labs/homarr/commit/5e57a4906bcedc53d220e983827293f4a699c425)) +* **deps:** update dependency next-intl to v4.5.1 ([#4484](https://github.com/homarr-labs/homarr/issues/4484)) ([06942ec](https://github.com/homarr-labs/homarr/commit/06942ecbcd245f5540f2960f437ca2955a5ed0c3)) +* **deps:** update dependency next-intl to v4.5.3 ([#4503](https://github.com/homarr-labs/homarr/issues/4503)) ([0642773](https://github.com/homarr-labs/homarr/commit/064277373cacd3309d8da3779d5451d195da7f81)) +* **deps:** update dependency sass to ^1.94.0 ([#4482](https://github.com/homarr-labs/homarr/issues/4482)) ([19ecede](https://github.com/homarr-labs/homarr/commit/19ecedea4370924d47545ca8d9d46a0b7c016cc9)) +* **deps:** update mantine monorepo to ^8.3.8 ([#4516](https://github.com/homarr-labs/homarr/issues/4516)) ([ded4e72](https://github.com/homarr-labs/homarr/commit/ded4e72e5407b0076495a06111f3b04445f27276)) +* **deps:** update nextjs monorepo to v16.0.3 ([#4504](https://github.com/homarr-labs/homarr/issues/4504)) ([7d0c1a1](https://github.com/homarr-labs/homarr/commit/7d0c1a14fdf1731ff44e3d00793cf4cd1c3e9b1f)) +* **deps:** update testcontainers-node monorepo to ^11.8.1 ([#4486](https://github.com/homarr-labs/homarr/issues/4486)) ([64657d8](https://github.com/homarr-labs/homarr/commit/64657d831cbe28a59708b280b07889b9f0232743)) +* **deps:** update turbo monorepo to ^2.6.1 ([#4483](https://github.com/homarr-labs/homarr/issues/4483)) ([cd124d6](https://github.com/homarr-labs/homarr/commit/cd124d6e8392eef5df0092481ec3cc26599f2902)) +* **iframe:** allow clicking links within ([#4521](https://github.com/homarr-labs/homarr/issues/4521)) ([5a418d7](https://github.com/homarr-labs/homarr/commit/5a418d73bdb07cf3d3270983b6881f2de8d58ad7)) +* **media-requests:** incorrect availability mapping ([#4520](https://github.com/homarr-labs/homarr/issues/4520)) ([d9cc35b](https://github.com/homarr-labs/homarr/commit/d9cc35b9859a14f44c4e4b13c6518287f8d18e54)) + +## [1.43.3](https://github.com/homarr-labs/homarr/compare/v1.43.2...v1.43.3) (2025-11-14) + +### Bug Fixes + +* **deps:** update dependency @ctrl/qbittorrent to ^9.11.0 ([#4456](https://github.com/homarr-labs/homarr/issues/4456)) ([ddfed18](https://github.com/homarr-labs/homarr/commit/ddfed18acf44596dba15ea0ef56233c4936f9775)) +* **deps:** update dependency @tanstack/react-query to ^5.90.7 ([#4451](https://github.com/homarr-labs/homarr/issues/4451)) ([7bc2f87](https://github.com/homarr-labs/homarr/commit/7bc2f87f31f1babe691fa4a086a3897977f2d871)) +* **deps:** update dependency fast-xml-parser to ^5.3.1 ([#4435](https://github.com/homarr-labs/homarr/issues/4435)) ([65f2e82](https://github.com/homarr-labs/homarr/commit/65f2e825fdb9e5e79b814c9b49f663d1afac784d)) +* **deps:** update dependency fastify to ^5.6.2 ([#4471](https://github.com/homarr-labs/homarr/issues/4471)) ([e7071bf](https://github.com/homarr-labs/homarr/commit/e7071bf2bf6a45ff760cd3e7bd06382d2ed66cdc)) +* **deps:** update dependency next-intl to v4.5.0 ([#4462](https://github.com/homarr-labs/homarr/issues/4462)) ([51ce5da](https://github.com/homarr-labs/homarr/commit/51ce5da45bdccf061e593097ed751cf09d663437)) +* **deps:** update dependency swagger-ui-react to ^5.30.2 ([#4442](https://github.com/homarr-labs/homarr/issues/4442)) ([d3edfcf](https://github.com/homarr-labs/homarr/commit/d3edfcf3dca3d34afd5ef8ec21599cd08fde5092)) +* **deps:** update mantine monorepo to ^8.3.7 ([#4472](https://github.com/homarr-labs/homarr/issues/4472)) ([8a87dba](https://github.com/homarr-labs/homarr/commit/8a87dbad59786fa9789dd3efb8d9424bb950e977)) +* **deps:** update testcontainers-node monorepo to ^11.8.0 ([#4450](https://github.com/homarr-labs/homarr/issues/4450)) ([f648af0](https://github.com/homarr-labs/homarr/commit/f648af0e2b2b5d5f8180402c2734ea0c04559daa)) +* **stock-price:** ignore missing data points in price history ([#4429](https://github.com/homarr-labs/homarr/issues/4429)) ([c30c98b](https://github.com/homarr-labs/homarr/commit/c30c98b153fbec21551e45aedf83e0ae29d6e773)) +* **users:** next button in create form always disabled ([#4443](https://github.com/homarr-labs/homarr/issues/4443)) ([1c1f8a4](https://github.com/homarr-labs/homarr/commit/1c1f8a48d259c65ebeeec6856e1fe339defb4aaf)) + +## [1.43.2](https://github.com/homarr-labs/homarr/compare/v1.43.1...v1.43.2) (2025-11-07) + +### Bug Fixes + +* **deps:** update dependency @ctrl/deluge to ^7.5.0 ([#4407](https://github.com/homarr-labs/homarr/issues/4407)) ([57d1a91](https://github.com/homarr-labs/homarr/commit/57d1a9186653dd4c327b360a3bdaa78fd8e1187b)) +* **deps:** update dependency @gitbeaker/rest to ^43.7.0 ([#4386](https://github.com/homarr-labs/homarr/issues/4386)) ([dcf960f](https://github.com/homarr-labs/homarr/commit/dcf960fa97011c24475f303d587152b42eabec45)) +* **deps:** update dependency @gitbeaker/rest to ^43.8.0 ([#4425](https://github.com/homarr-labs/homarr/issues/4425)) ([4516f27](https://github.com/homarr-labs/homarr/commit/4516f27fa69445e5aec16760e1f6ed8080bc8fff)) +* **deps:** update dependency @jellyfin/sdk to ^0.13.0 ([#4399](https://github.com/homarr-labs/homarr/issues/4399)) ([4c4e901](https://github.com/homarr-labs/homarr/commit/4c4e901e7d38faf83a4725b7cee5526b0b223dc3)) +* **deps:** update dependency @octokit/auth-app to ^8.1.2 ([#4412](https://github.com/homarr-labs/homarr/issues/4412)) ([018a33b](https://github.com/homarr-labs/homarr/commit/018a33b07812fa59f1469ce8b4baa7b1d55c6103)) +* **deps:** update dependency @tanstack/react-query to ^5.90.6 ([#4427](https://github.com/homarr-labs/homarr/issues/4427)) ([5f9054b](https://github.com/homarr-labs/homarr/commit/5f9054b162daf974baafdbee9f844b3a860cbdd0)) +* **deps:** update dependency dayjs to ^1.11.19 ([#4414](https://github.com/homarr-labs/homarr/issues/4414)) ([97cbade](https://github.com/homarr-labs/homarr/commit/97cbade7135cb06e0780dd1b448c78c8802794ea)) +* **deps:** update dependency drizzle-kit to ^0.31.6 ([#4397](https://github.com/homarr-labs/homarr/issues/4397)) ([59434ee](https://github.com/homarr-labs/homarr/commit/59434ee33ae16e06f96e2f07cf85337c313c73f6)) +* **deps:** update dependency jotai to ^2.15.1 ([#4426](https://github.com/homarr-labs/homarr/issues/4426)) ([07af9d8](https://github.com/homarr-labs/homarr/commit/07af9d8673ea9573bc436626cd84d11980d023bc)) +* **deps:** update dependency octokit to ^5.0.5 ([#4413](https://github.com/homarr-labs/homarr/issues/4413)) ([186e3e4](https://github.com/homarr-labs/homarr/commit/186e3e445dfe6b4fb1aeda3830ae1f260b605882)) +* **deps:** update dependency sass to ^1.93.3 ([#4421](https://github.com/homarr-labs/homarr/issues/4421)) ([f216427](https://github.com/homarr-labs/homarr/commit/f2164272a5ca9b51bdf9110664ed5a40b87b60f6)) +* **deps:** update dependency superjson to v2.2.5 ([#4398](https://github.com/homarr-labs/homarr/issues/4398)) ([19e25a0](https://github.com/homarr-labs/homarr/commit/19e25a095fb0252e8f2a459e0a97d44a37d2188a)) +* **deps:** update dependency swagger-ui-react to ^5.30.0 ([#4391](https://github.com/homarr-labs/homarr/issues/4391)) ([b51e285](https://github.com/homarr-labs/homarr/commit/b51e285c92ef707076f321f0ce1a15d5cbd5de7d)) +* **deps:** update dependency swagger-ui-react to ^5.30.1 ([#4418](https://github.com/homarr-labs/homarr/issues/4418)) ([d9b14db](https://github.com/homarr-labs/homarr/commit/d9b14db6a1af515796951a1db670431d10f81eaf)) +* **deps:** update dependency tsdav to ^2.1.6 ([#4417](https://github.com/homarr-labs/homarr/issues/4417)) ([160c20a](https://github.com/homarr-labs/homarr/commit/160c20a9a6f850f75537e246f42e93f9a2ed79a0)) +* **deps:** update mantine monorepo to ^8.3.6 ([#4403](https://github.com/homarr-labs/homarr/issues/4403)) ([9e2bbb8](https://github.com/homarr-labs/homarr/commit/9e2bbb8a3f2db95c5598e5dca993bf6cd4ebc127)) +* **deps:** update nextjs monorepo to v16 (major) ([#4363](https://github.com/homarr-labs/homarr/issues/4363)) ([6ce23a6](https://github.com/homarr-labs/homarr/commit/6ce23a6e971b064292970fc4df90cc69cdb59a95)) +* **deps:** update tiptap monorepo to v2.27.0 ([#4404](https://github.com/homarr-labs/homarr/issues/4404)) ([f4caddf](https://github.com/homarr-labs/homarr/commit/f4caddfd564553014854347eb6dd14cc800eb027)) +* **deps:** update tiptap monorepo to v2.27.1 ([#4405](https://github.com/homarr-labs/homarr/issues/4405)) ([d34f9e5](https://github.com/homarr-labs/homarr/commit/d34f9e5b3ef999559a4c5f1165488fe4f8828a83)) +* **deps:** update trpc monorepo to ^11.7.1 ([#4396](https://github.com/homarr-labs/homarr/issues/4396)) ([5aca5d1](https://github.com/homarr-labs/homarr/commit/5aca5d1b0a76ab4cf0ed27dac62183c766ad398a)) +* **deps:** update turbo monorepo to ^2.6.0 ([#4422](https://github.com/homarr-labs/homarr/issues/4422)) ([742ef66](https://github.com/homarr-labs/homarr/commit/742ef66e3cf56fd351c8dee2d3dd05cd639e51fa)) + +## [1.43.1](https://github.com/homarr-labs/homarr/compare/v1.43.0...v1.43.1) (2025-10-31) + +### Bug Fixes + +* **deps:** update dependency @auth/core to ^0.41.1 ([#4387](https://github.com/homarr-labs/homarr/issues/4387)) ([747bb92](https://github.com/homarr-labs/homarr/commit/747bb922ccf0508bd00c37faeab29e28876577b1)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.11.1 ([#4388](https://github.com/homarr-labs/homarr/issues/4388)) ([2fe3656](https://github.com/homarr-labs/homarr/commit/2fe36564c26c33ae2625eb22ef4503c6dd8ebcf9)) +* **deps:** update dependency @jellyfin/sdk to ^0.12.0 ([#4359](https://github.com/homarr-labs/homarr/issues/4359)) ([554d19a](https://github.com/homarr-labs/homarr/commit/554d19a458e856141f90e795ecebabf205e945e9)) +* **deps:** update dependency @paralleldrive/cuid2 to v3 ([#4343](https://github.com/homarr-labs/homarr/issues/4343)) ([074d27e](https://github.com/homarr-labs/homarr/commit/074d27e37e3430e7e98cf28e2876afe009811027)) +* **deps:** update dependency drizzle-orm to ^0.44.7 ([#4372](https://github.com/homarr-labs/homarr/issues/4372)) ([8242bfc](https://github.com/homarr-labs/homarr/commit/8242bfc95cd0e67397b1bfc46d65aec3f568c304)) +* **deps:** update dependency ioredis to v5.8.2 ([#4357](https://github.com/homarr-labs/homarr/issues/4357)) ([3c4c26e](https://github.com/homarr-labs/homarr/commit/3c4c26ee214a37193aea31b69ce75322862fc534)) +* **deps:** update dependency mysql2 to v3.15.3 ([#4360](https://github.com/homarr-labs/homarr/issues/4360)) ([6e6c912](https://github.com/homarr-labs/homarr/commit/6e6c9122257934402848d6fdc51e6ccdfc2dcca0)) +* **deps:** update dependency next-auth to v5.0.0-beta.30 [security] ([#4379](https://github.com/homarr-labs/homarr/issues/4379)) ([c544d6e](https://github.com/homarr-labs/homarr/commit/c544d6ec2e426bc4c82db547d7c4a5dc4d6e2a27)) +* **deps:** update dependency next-intl to v4.4.0 ([#4365](https://github.com/homarr-labs/homarr/issues/4365)) ([ce63388](https://github.com/homarr-labs/homarr/commit/ce6338840c20fc46048687ed5566ff12fa4b2502)) +* **deps:** update dependency node-ical to ^0.22.1 ([#4346](https://github.com/homarr-labs/homarr/issues/4346)) ([ef18c58](https://github.com/homarr-labs/homarr/commit/ef18c58f5b09bafd697365a0182ab7bc8719db2b)) +* **deps:** update dependency superjson to v2.2.3 ([#4364](https://github.com/homarr-labs/homarr/issues/4364)) ([18cc04e](https://github.com/homarr-labs/homarr/commit/18cc04e7f2740226f7bc7c75c0b0cdaec7cda6f8)) +* **deps:** update dependency typescript-eslint to ^8.46.2 ([#4352](https://github.com/homarr-labs/homarr/issues/4352)) ([f96cbe0](https://github.com/homarr-labs/homarr/commit/f96cbe06525515112fad466cb8a5f33d74517aba)) +* **deps:** update testcontainers-node monorepo to ^11.7.2 ([#4366](https://github.com/homarr-labs/homarr/issues/4366)) ([7329135](https://github.com/homarr-labs/homarr/commit/7329135fd85906602a16a9bdc16a1ef1cc4607c5)) +* **deps:** update tiptap monorepo to v2.26.4 ([#4371](https://github.com/homarr-labs/homarr/issues/4371)) ([136ed8e](https://github.com/homarr-labs/homarr/commit/136ed8e8b401b801ba16f2079bdfb5aeebe9f57f)) +* **deps:** update trpc monorepo to ^11.7.0 ([#4385](https://github.com/homarr-labs/homarr/issues/4385)) ([24def99](https://github.com/homarr-labs/homarr/commit/24def9982709cd6de1765a7235169fe1ceb3cbea)) +* **media-releases:** support more media type mappings for jellyfin and emby ([#4382](https://github.com/homarr-labs/homarr/issues/4382)) ([6f3b7ec](https://github.com/homarr-labs/homarr/commit/6f3b7ec4915754e183300a915baebc11f264df62)) +* **releases-widget:** Search multiple docker hub pages for releases ([#4158](https://github.com/homarr-labs/homarr/issues/4158)) ([e0526c5](https://github.com/homarr-labs/homarr/commit/e0526c5ea7ee83adcd22d78fbf63334cb59bcf79)) + ## [1.43.0](https://github.com/homarr-labs/homarr/compare/v1.42.1...v1.43.0) (2025-10-24) ### Features diff --git a/Dockerfile b/Dockerfile index ab16b391f..50075fcb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.10.0-alpine AS base +FROM node:24.11.1-alpine AS base FROM base AS builder RUN apk add --no-cache libc6-compat @@ -55,7 +55,7 @@ COPY --from=builder /app/apps/nextjs/.next/standalone ./ COPY --from=builder /app/apps/nextjs/.next/static ./apps/nextjs/.next/static COPY --from=builder /app/apps/nextjs/public ./apps/nextjs/public COPY scripts/run.sh ./run.sh -COPY --chmod=777 scripts/entrypoint.sh ./entrypoint.sh +COPY --chmod=755 scripts/entrypoint.sh ./entrypoint.sh COPY packages/redis/redis.conf /app/redis.conf COPY nginx.conf /etc/nginx/templates/nginx.conf diff --git a/apps/nextjs/next.config.ts b/apps/nextjs/next.config.ts index be0798daa..7b9bcb915 100644 --- a/apps/nextjs/next.config.ts +++ b/apps/nextjs/next.config.ts @@ -20,19 +20,27 @@ const withNextIntl = createNextIntlPlugin({ const nextConfig: NextConfig = { output: "standalone", reactStrictMode: true, - /** We already do linting and typechecking as separate tasks in CI */ - eslint: { ignoreDuringBuilds: true }, + // react compiler breaks mantine-react-table, so disabled for now + //reactCompiler: true, + /** We already do typechecking as separate tasks in CI */ typescript: { ignoreBuildErrors: true }, /** * dockerode is required in the external server packages because of https://github.com/homarr-labs/homarr/issues/612 + * isomorphic-dompurify and jsdom are required, see https://github.com/kkomelin/isomorphic-dompurify/issues/356 */ - serverExternalPackages: ["dockerode"], + serverExternalPackages: ["dockerode", "isomorphic-dompurify", "jsdom"], experimental: { optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"], + turbopackFileSystemCacheForDev: true, }, transpilePackages: ["@homarr/ui", "@homarr/notifications", "@homarr/modals", "@homarr/spotlight", "@homarr/widgets"], images: { - domains: ["cdn.jsdelivr.net"], + localPatterns: [ + { + pathname: "/**", + search: "", + }, + ], }, // eslint-disable-next-line @typescript-eslint/require-await,no-restricted-syntax async headers() { diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ca87ac265..5c52f049e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -50,59 +50,61 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^8.3.5", - "@mantine/core": "^8.3.5", - "@mantine/dropzone": "^8.3.5", - "@mantine/hooks": "^8.3.5", - "@mantine/modals": "^8.3.5", - "@mantine/tiptap": "^8.3.5", + "@mantine/colors-generator": "^8.3.10", + "@mantine/core": "^8.3.10", + "@mantine/dropzone": "^8.3.10", + "@mantine/hooks": "^8.3.10", + "@mantine/modals": "^8.3.10", + "@mantine/tiptap": "^8.3.10", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.35.0", - "@tanstack/react-query": "^5.90.5", - "@tanstack/react-query-devtools": "^5.90.2", - "@tanstack/react-query-next-experimental": "^5.90.2", - "@trpc/client": "^11.6.0", - "@trpc/next": "^11.6.0", - "@trpc/react-query": "^11.6.0", - "@trpc/server": "^11.6.0", + "@tanstack/react-query": "^5.90.12", + "@tanstack/react-query-devtools": "^5.91.1", + "@tanstack/react-query-next-experimental": "^5.91.0", + "@trpc/client": "^11.7.2", + "@trpc/next": "^11.7.2", + "@trpc/react-query": "^11.7.2", + "@trpc/server": "^11.7.2", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.10.0", "@xterm/xterm": "^5.5.0", - "chroma-js": "^3.1.2", + "babel-plugin-react-compiler": "^1.0.0", + "chroma-js": "^3.2.0", "clsx": "^2.1.1", - "dayjs": "^1.11.18", + "dayjs": "^1.11.19", "dotenv": "^17.2.3", "flag-icons": "^7.5.0", - "glob": "^11.0.3", - "jotai": "^2.15.0", + "glob": "^13.0.0", + "isomorphic-dompurify": "^2.34.0", + "jotai": "^2.15.2", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.6", + "next": "16.0.10", "postcss-preset-mantine": "^1.18.0", "prismjs": "^1.30.0", - "react": "19.2.0", - "react-dom": "19.2.0", + "react": "19.2.1", + "react-dom": "19.2.1", "react-error-boundary": "^6.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.93.2", - "superjson": "2.2.3", - "swagger-ui-react": "^5.29.5", + "sass": "^1.95.0", + "superjson": "2.2.6", + "swagger-ui-react": "^5.30.3", "use-deep-compare-effect": "^1.8.1", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/chroma-js": "3.1.1", - "@types/node": "^24.9.1", + "@types/chroma-js": "3.1.2", + "@types/node": "^24.10.2", "@types/prismjs": "^1.26.5", - "@types/react": "19.2.2", - "@types/react-dom": "19.2.2", + "@types/react": "19.2.7", + "@types/react-dom": "19.2.3", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.2.1", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "node-loader": "^2.1.0", - "prettier": "^3.6.2", + "prettier": "^3.7.4", "typescript": "^5.9.3" } } diff --git a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx index f8d559ead..0ec4f70b9 100644 --- a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx @@ -64,16 +64,23 @@ export const RegistrationForm = ({ invite }: RegistrationFormProps) => {
- + diff --git a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx index ed86ea0f4..411055756 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx @@ -116,8 +116,18 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c <> void signInAsync(credentials.provider, credentials))}> - - + + {providers.includes("credentials") && ( diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx index ce6a24c28..9ee773d16 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx @@ -1,7 +1,6 @@ "use client"; import { useCallback, useEffect } from "react"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import { Group, Menu, ScrollArea } from "@mantine/core"; import { useHotkeys } from "@mantine/hooks"; @@ -29,6 +28,7 @@ import { useConfirmModal, useModalAction } from "@homarr/modals"; import { AppSelectModal } from "@homarr/modals-collection"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { useItemActions } from "~/components/board/items/item-actions"; import { ItemSelectModal } from "~/components/board/items/item-select-modal"; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx b/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx index d60da53ab..288b9adae 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import type { MantineColor } from "@mantine/core"; import { Button, Card, Stack, Text } from "@mantine/core"; import { IconBook2, IconCategoryPlus, IconLayoutDashboard, IconMailForward } from "@tabler/icons-react"; @@ -8,6 +7,7 @@ import { getMantineColor } from "@homarr/common"; import { db } from "@homarr/db"; import { createDocumentationLink } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import type { TablerIcon } from "@homarr/ui"; export const InitFinish = async () => { diff --git a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx index d423c2fce..0a91d4ced 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx @@ -12,7 +12,11 @@ import { groupCreateSchema } from "@homarr/validation/group"; export const InitGroup = () => { const t = useI18n(); - const { mutateAsync } = clientApi.group.createInitialExternalGroup.useMutation(); + const { mutateAsync } = clientApi.group.createInitialExternalGroup.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/init"); + }, + }); const form = useZodForm(groupCreateSchema, { initialValues: { name: "", @@ -21,9 +25,6 @@ export const InitGroup = () => { const handleSubmitAsync = async (values: z.infer) => { await mutateAsync(values, { - async onSuccess() { - await revalidatePathActionAsync("/init"); - }, onError(error) { if (error.data?.code === "CONFLICT") { form.setErrors({ name: t("common.zod.errors.custom.groupNameTaken") }); 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 b5839b743..08e3e0c2d 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 @@ -17,7 +17,11 @@ import { settingsInitSchema } from "@homarr/validation/settings"; export const InitSettings = () => { const tSection = useScopedI18n("management.page.settings.section"); const t = useI18n(); - const { mutateAsync } = clientApi.serverSettings.initSettings.useMutation(); + const { mutateAsync } = clientApi.serverSettings.initSettings.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/init"); + }, + }); const form = useZodForm(settingsInitSchema, { initialValues: defaultServerSettings }); form.watch("analytics.enableGeneral", ({ value }) => { @@ -31,11 +35,7 @@ export const InitSettings = () => { }); const handleSubmitAsync = async (values: z.infer) => { - await mutateAsync(values, { - async onSuccess() { - await revalidatePathActionAsync("/init"); - }, - }); + await mutateAsync(values); }; return ( diff --git a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx index daf73f7b3..3a659032f 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx @@ -26,19 +26,19 @@ export const InitUserForm = () => { const handleSubmitAsync = async (values: FormType) => { await mutateAsync(values, { - async onSuccess() { + onSuccess() { showSuccessNotification({ title: tUser("notification.success.title"), message: tUser("notification.success.message"), }); - await signIn("credentials", { + void signIn("credentials", { name: values.username, password: values.password, redirect: false, + }).then(async () => { + await revalidatePathActionAsync("/init"); }); - - await revalidatePathActionAsync("/init"); }, onError: (error) => { showErrorNotification({ diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index f94cff54f..27ab01fb5 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -1,5 +1,4 @@ import { Fragment } from "react"; -import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconBox, IconPencil } from "@tabler/icons-react"; @@ -10,7 +9,7 @@ import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; -import { SearchInput, TablePagination } from "@homarr/ui"; +import { Link, SearchInput, TablePagination } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx index 68ecf3a57..e5ae194af 100644 --- a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx +++ b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx @@ -1,7 +1,6 @@ "use client"; import { useCallback } from "react"; -import Link from "next/link"; import { Menu } from "@mantine/core"; import { IconCopy, IconDeviceMobile, IconHome, IconSettings, IconTrash } from "@tabler/icons-react"; @@ -12,6 +11,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useConfirmModal, useModalAction } from "@homarr/modals"; import { DuplicateBoardModal } from "@homarr/modals-collection"; import { useScopedI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { useBoardPermissions } from "~/components/board/permissions/client"; @@ -84,9 +84,6 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => id: board.id, name: board.name, }, - onSuccess: async () => { - await revalidatePathActionAsync("/manage/boards"); - }, }); }, [board.id, board.name, openDuplicateModal]); diff --git a/apps/nextjs/src/app/[locale]/manage/boards/page.tsx b/apps/nextjs/src/app/[locale]/manage/boards/page.tsx index f5beca147..9c0a28344 100644 --- a/apps/nextjs/src/app/[locale]/manage/boards/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/boards/page.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { ActionIcon, Badge, @@ -21,7 +20,7 @@ import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; import { getScopedI18n } from "@homarr/translation/server"; -import { UserAvatar } from "@homarr/ui"; +import { Link, UserAvatar } from "@homarr/ui"; import { getBoardPermissionsAsync } from "~/components/board/permissions/server"; import { ManageContainer } from "~/components/manage/manage-container"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 9dd9dbceb..05c8ec845 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -1,7 +1,6 @@ "use client"; import { useState } from "react"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import { Alert, Anchor, Button, ButtonGroup, Fieldset, Group, Stack, Text, TextInput } from "@mantine/core"; import { IconInfoCircle, IconPencil, IconPlus, IconUnlink } from "@tabler/icons-react"; @@ -17,6 +16,7 @@ import { useConfirmModal, useModalAction } from "@homarr/modals"; import { AppSelectModal } from "@homarr/modals-collection"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { integrationUpdateSchema } from "@homarr/validation/integration"; import { SecretCard } from "../../_components/secrets/integration-secret-card"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx index dd8b0a5de..25333e127 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx @@ -2,13 +2,12 @@ import type { ChangeEvent } from "react"; import React, { useMemo, useState } from "react"; -import Link from "next/link"; import { Flex, Group, Menu, ScrollArea, Text, TextInput } from "@mantine/core"; import { IconSearch } from "@tabler/icons-react"; import { getIntegrationName, integrationKinds } from "@homarr/definitions"; import { useI18n } from "@homarr/translation/client"; -import { IntegrationAvatar } from "@homarr/ui"; +import { IntegrationAvatar, Link } from "@homarr/ui"; interface IntegrationCreateDropdownContentProps { enableMockIntegration: boolean; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index 51de06b72..016b9336c 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -1,7 +1,6 @@ "use client"; import { startTransition, useState } from "react"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import { Alert, @@ -36,6 +35,7 @@ import type { GetInputPropsReturnType, UseFormReturnType } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { appHrefSchema } from "@homarr/validation/app"; import { integrationCreateSchema } from "@homarr/validation/integration"; @@ -86,7 +86,11 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => }, }); - const { mutateAsync: createIntegrationAsync, isPending } = clientApi.integration.create.useMutation(); + const { mutateAsync: createIntegrationAsync, isPending } = clientApi.integration.create.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/integrations"); + }, + }); const [error, setError] = useState(null); const handleSubmitAsync = async ({ appId, appHref, hasApp, ...values }: FormType) => { @@ -116,7 +120,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => app, }, { - async onSuccess(data) { + onSuccess(data) { // We do it this way as we are unable to send a typesafe error through onError if (data?.error) { setError(data.error); @@ -132,7 +136,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => message: t("integration.page.create.notification.success.message"), }); - await revalidatePathActionAsync("/manage/integrations").then(() => router.push("/manage/integrations")); + router.push("/manage/integrations"); }, onError: () => { showErrorNotification({ diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx index 48ead515d..1fe3a83e2 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx @@ -1,6 +1,5 @@ import { Fragment } from "react"; import type { PropsWithChildren } from "react"; -import Link from "next/link"; import { redirect } from "next/navigation"; import { AccordionControl, @@ -36,7 +35,7 @@ import { objectEntries } from "@homarr/common"; import type { IntegrationKind } from "@homarr/definitions"; import { getIntegrationName } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; -import { CountBadge, IntegrationAvatar } from "@homarr/ui"; +import { CountBadge, IntegrationAvatar, Link } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index 9bdbf22c7..b14ceb531 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { notFound } from "next/navigation"; import { ActionIcon, @@ -25,7 +24,7 @@ import { humanFileSize } from "@homarr/common"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { createLocalImageUrl } from "@homarr/icons/local"; import { getI18n } from "@homarr/translation/server"; -import { SearchInput, TablePagination, UserAvatar } from "@homarr/ui"; +import { Link, SearchInput, TablePagination, UserAvatar } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/app/[locale]/manage/page.tsx b/apps/nextjs/src/app/[locale]/manage/page.tsx index a77794f92..256eaddb5 100644 --- a/apps/nextjs/src/app/[locale]/manage/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/page.tsx @@ -1,10 +1,10 @@ import type { Metadata } from "next"; -import Link from "next/link"; import { Card, Group, SimpleGrid, Space, Stack, Text } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; import { api } from "@homarr/api/server"; import { getScopedI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { createMetaTitle } from "~/metadata"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx index c41b653ed..5a5c5b705 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx @@ -1,6 +1,5 @@ "use client"; -import Link from "next/link"; import type { SegmentedControlItem } from "@mantine/core"; import { Button, Fieldset, Grid, Group, SegmentedControl, Stack, Textarea, TextInput } from "@mantine/core"; import { WidgetIntegrationSelect } from "node_modules/@homarr/widgets/src/widget-integration-select"; @@ -12,6 +11,7 @@ import { useZodForm } from "@homarr/form"; import { IconPicker } from "@homarr/forms-collection"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { searchEngineManageSchema } from "@homarr/validation/search-engine"; type FormType = z.infer; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index a3faa2811..ce2500d02 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconPencil, IconSearch } from "@tabler/icons-react"; @@ -9,7 +8,7 @@ import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; -import { SearchInput, TablePagination } from "@homarr/ui"; +import { Link, SearchInput, TablePagination } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/remove-certificate.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/remove-certificate.tsx index 04e1c7613..ca45aefb3 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/remove-certificate.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/remove-certificate.tsx @@ -15,7 +15,11 @@ interface RemoveCertificateProps { export const RemoveCertificate = ({ fileName }: RemoveCertificateProps) => { const { openConfirmModal } = useConfirmModal(); - const { mutateAsync } = clientApi.certificates.removeCertificate.useMutation(); + const { mutateAsync } = clientApi.certificates.removeCertificate.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/tools/certificates"); + }, + }); const t = useI18n(); const handleClick = () => { @@ -27,12 +31,11 @@ export const RemoveCertificate = ({ fileName }: RemoveCertificateProps) => { await mutateAsync( { fileName }, { - async onSuccess() { + onSuccess() { showSuccessNotification({ title: t("certificate.action.remove.notification.success.title"), message: t("certificate.action.remove.notification.success.message"), }); - await revalidatePathActionAsync("/manage/tools/certificates"); }, onError() { showErrorNotification({ diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/_components/remove-hostname.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/_components/remove-hostname.tsx index d0004c849..445a301b2 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/_components/remove-hostname.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/_components/remove-hostname.tsx @@ -15,7 +15,11 @@ interface RemoveHostnameActionIconProps { } export const RemoveHostnameActionIcon = (input: RemoveHostnameActionIconProps) => { - const { mutateAsync } = clientApi.certificates.removeTrustedHostname.useMutation(); + const { mutateAsync } = clientApi.certificates.removeTrustedHostname.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/tools/certificates/hostnames"); + }, + }); const { openConfirmModal } = useConfirmModal(); const t = useI18n(); @@ -26,8 +30,7 @@ export const RemoveHostnameActionIcon = (input: RemoveHostnameActionIconProps) = // eslint-disable-next-line no-restricted-syntax async onConfirm() { await mutateAsync(input, { - async onSuccess() { - await revalidatePathActionAsync("/manage/tools/certificates/hostnames"); + onSuccess() { showSuccessNotification({ title: t("certificate.action.removeHostname.notification.success.title"), message: t("certificate.action.removeHostname.notification.success.message"), diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/page.tsx index 5482b27a0..2b9aa6ac6 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/hostnames/page.tsx @@ -1,5 +1,4 @@ import { X509Certificate } from "node:crypto"; -import Link from "next/link"; import { notFound } from "next/navigation"; import { Button, @@ -19,6 +18,7 @@ import { IconCertificateOff } from "@tabler/icons-react"; import { auth } from "@homarr/auth/next"; import { getTrustedCertificateHostnamesAsync } from "@homarr/certificates/server"; import { getI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NoResults } from "~/components/no-results"; diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx index 97aca1c59..fc9a29dd6 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx @@ -1,5 +1,4 @@ import { X509Certificate } from "node:crypto"; -import Link from "next/link"; import { notFound } from "next/navigation"; import { Button, Card, Group, SimpleGrid, Stack, Text, Title } from "@mantine/core"; import { IconAlertTriangle, IconCertificate, IconCertificateOff } from "@tabler/icons-react"; @@ -10,6 +9,7 @@ import { loadCustomRootCertificatesAsync } from "@homarr/certificates/server"; import { getMantineColor } from "@homarr/common"; import type { SupportedLanguage } from "@homarr/translation"; import { getI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NoResults } from "~/components/no-results"; diff --git a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx index 0db5d2116..ce087bf7d 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx @@ -206,15 +206,16 @@ const ContainerActionBarButton = (props: ContainerActionBarButtonProps) => { const t = useScopedI18n("docker.action"); const utils = clientApi.useUtils(); - const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation(); + const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation({ + async onSettled() { + await utils.docker.getContainers.invalidate(); + }, + }); const handleClickAsync = async () => { await mutateAsync( { ids: props.selectedIds }, { - async onSettled() { - await utils.docker.getContainers.invalidate(); - }, onSuccess() { showSuccessNotification({ title: t(`${props.action}.notification.success.title`), diff --git a/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx b/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx index 4fe1ae7b0..47a672e13 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx @@ -1,10 +1,10 @@ "use client"; -import Link from "next/link"; import { Anchor, Center, Stack, Text } from "@mantine/core"; import { IconShipOff } from "@tabler/icons-react"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; export default function DockerErrorPage() { const t = useI18n(); diff --git a/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/error.tsx b/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/error.tsx index 4baae5ace..7ca5b359a 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/error.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/error.tsx @@ -1,10 +1,10 @@ "use client"; -import Link from "next/link"; import { Anchor, Center, Stack, Text } from "@mantine/core"; import { IconCubeOff } from "@tabler/icons-react"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; export default function KubernetesErrorPage() { const t = useI18n(); diff --git a/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/resource-tile/resource-tile.tsx b/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/resource-tile/resource-tile.tsx index f1ad19df8..d2405fcf7 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/resource-tile/resource-tile.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/kubernetes/cluster-dashboard/resource-tile/resource-tile.tsx @@ -1,11 +1,11 @@ import React from "react"; import Image from "next/image"; -import Link from "next/link"; import { Card, Group, Text } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; import type { KubernetesLabelResourceType } from "@homarr/definitions"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import classes from "./resource-tile.module.css"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_profile-avatar-form.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_profile-avatar-form.tsx index 485bffdf5..e4ee64583 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_profile-avatar-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_profile-avatar-form.tsx @@ -18,7 +18,12 @@ interface UserProfileAvatarForm { } export const UserProfileAvatarForm = ({ user }: UserProfileAvatarForm) => { - const { mutate } = clientApi.user.setProfileImage.useMutation(); + const { mutate } = clientApi.user.setProfileImage.useMutation({ + async onSuccess() { + // Revalidate all as the avatar is used in multiple places + await revalidatePathActionAsync("/"); + }, + }); const [opened, { toggle }] = useDisclosure(false); const { openConfirmModal } = useConfirmModal(); const t = useI18n(); @@ -38,9 +43,7 @@ export const UserProfileAvatarForm = ({ user }: UserProfileAvatarForm) => { image: base64Url, }, { - async onSuccess() { - // Revalidate all as the avatar is used in multiple places - await revalidatePathActionAsync("/"); + onSuccess() { showSuccessNotification({ message: tManageAvatar("changeImage.notification.success.message"), }); @@ -74,9 +77,7 @@ export const UserProfileAvatarForm = ({ user }: UserProfileAvatarForm) => { image: null, }, { - async onSuccess() { - // Revalidate all as the avatar is used in multiple places - await revalidatePathActionAsync("/"); + onSuccess() { showSuccessNotification({ message: tManageAvatar("removeImage.notification.success.message"), }); diff --git a/apps/nextjs/src/app/[locale]/manage/users/_components/user-list.tsx b/apps/nextjs/src/app/[locale]/manage/users/_components/user-list.tsx index 9bb51106f..22f4d1b88 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/_components/user-list.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/_components/user-list.tsx @@ -1,7 +1,6 @@ "use client"; import { useMemo } from "react"; -import Link from "next/link"; import { Anchor, Button, Group, Text, Title, Tooltip } from "@mantine/core"; import { IconCheck } from "@tabler/icons-react"; import type { MRT_ColumnDef } from "mantine-react-table"; @@ -10,7 +9,7 @@ import { MantineReactTable } from "mantine-react-table"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { UserAvatar } from "@homarr/ui"; +import { Link, UserAvatar } from "@homarr/ui"; import { useTranslatedMantineReactTable } from "@homarr/ui/hooks"; interface UserListComponentProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx index dc4f1a7c3..e91cd3dfe 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx @@ -1,6 +1,6 @@ "use client"; -import { startTransition, useCallback, useMemo, useState } from "react"; +import { startTransition, useCallback, useState } from "react"; import { Badge, Button, @@ -20,8 +20,9 @@ import { IconPlus, IconUserCheck } from "@tabler/icons-react"; import { z } from "zod/v4"; import { clientApi } from "@homarr/api/client"; -import { everyoneGroup, groupPermissions } from "@homarr/definitions"; import type { GroupPermissionKey } from "@homarr/definitions"; +import { everyoneGroup, groupPermissions } from "@homarr/definitions"; +import type { IsValid } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { useModalAction } from "@homarr/modals"; import { showErrorNotification } from "@homarr/notifications"; @@ -113,11 +114,9 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC }, ); - const allForms = useMemo(() => [generalForm, securityForm, groupsForm], [generalForm, securityForm, groupsForm]); - - const activeForm = allForms[active]; - const isCurrentFormValid = activeForm ? activeForm.isValid : () => true; - const canNavigateToNextStep = isCurrentFormValid(); + const allForms = [generalForm, securityForm, groupsForm]; + const isValidCallback: IsValid | undefined = allForms[active]?.isValid; + const currentFormValid = isValidCallback?.() ?? true; const controlledGoToNextStep = useCallback(async () => { if (active + 1 === stepperMax) { @@ -218,7 +217,7 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC { const t = useI18n(); diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx index 9074c9ecf..a9fd0bd4f 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx @@ -25,7 +25,11 @@ export const TransferGroupOwnership = ({ group }: TransferGroupOwnershipProps) = const [innerOwnerId, setInnerOwnerId] = useState(group.ownerId); const { openModal } = useModalAction(UserSelectModal); const { openConfirmModal } = useConfirmModal(); - const { mutateAsync } = clientApi.group.transferOwnership.useMutation(); + const { mutateAsync } = clientApi.group.transferOwnership.useMutation({ + async onSuccess() { + await revalidatePathActionAsync(`/manage/users/groups/${group.id}`); + }, + }); const handleTransfer = useCallback(() => { openModal( @@ -47,7 +51,7 @@ export const TransferGroupOwnership = ({ group }: TransferGroupOwnershipProps) = userId: id, }, { - async onSuccess() { + onSuccess() { setInnerOwnerId(id); showSuccessNotification({ title: tRoot("common.notification.transfer.success"), @@ -56,7 +60,6 @@ export const TransferGroupOwnership = ({ group }: TransferGroupOwnershipProps) = user: name, }), }); - await revalidatePathActionAsync(`/manage/users/groups/${group.id}`); }, onError() { showErrorNotification({ diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx index d78a53fe5..fd6766417 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx @@ -1,10 +1,10 @@ import type { PropsWithChildren } from "react"; -import Link from "next/link"; import { Button, Grid, GridCol, Group, Stack, Text, Title } from "@mantine/core"; import { IconId, IconLock, IconSettings, IconUsersGroup } from "@tabler/icons-react"; import { api } from "@homarr/api/server"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { NavigationLink } from "./_navigation"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx index 965bb61ed..f0a6d879a 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { notFound } from "next/navigation"; import { Alert, Anchor, Center, Group, Stack, Table, TableTbody, TableTd, TableTr, Text, Title } from "@mantine/core"; import { IconExclamationCircle } from "@tabler/icons-react"; @@ -10,7 +9,7 @@ import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; import { everyoneGroup } from "@homarr/definitions"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; -import { SearchInput, UserAvatar } from "@homarr/ui"; +import { Link, SearchInput, UserAvatar } from "@homarr/ui"; import { ReservedGroupAlert } from "../_reserved-group-alert"; import { AddGroupMember } from "./_add-group-member"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/_groups-table.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/_groups-table.tsx index 95d5bdfaa..c03c8cddc 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/_groups-table.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/_groups-table.tsx @@ -2,7 +2,6 @@ import type { ReactNode } from "react"; import { useMemo, useState } from "react"; -import Link from "next/link"; import type { DragEndEvent, DraggableAttributes, DragStartEvent } from "@dnd-kit/core"; import { closestCenter, @@ -41,7 +40,7 @@ import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import { UserAvatarGroup } from "@homarr/ui"; +import { Link, UserAvatarGroup } from "@homarr/ui"; interface GroupsTableProps { initialGroupIds: string[]; @@ -57,16 +56,19 @@ export const GroupsTable = ({ groups, initialGroupIds, hasFilter }: GroupsTableP () => initialGroupIds.some((groupId, index) => groupIds.indexOf(groupId) !== index), [groupIds, initialGroupIds], ); - const { mutateAsync, isPending } = clientApi.group.savePositions.useMutation(); + const { mutateAsync, isPending } = clientApi.group.savePositions.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/users/groups"); + }, + }); const handleSavePositionsAsync = async () => { await mutateAsync( { positions: groupIds }, { - async onSuccess() { + onSuccess() { showSuccessNotification({ message: t("group.action.changePosition.notification.success.message"), }); - await revalidatePathActionAsync("/manage/users/groups"); }, onError() { showSuccessNotification({ diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx index abd348739..19ec73ff7 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { notFound } from "next/navigation"; import { Card, Group, Stack, Text, ThemeIcon, Title, UnstyledButton } from "@mantine/core"; import { IconChevronRight, IconUsersGroup } from "@tabler/icons-react"; @@ -7,6 +6,7 @@ import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; import { everyoneGroup } from "@homarr/definitions"; import { getI18n } from "@homarr/translation/server"; +import { Link } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/app/api/user-medias/[id]/route.ts b/apps/nextjs/src/app/api/user-medias/[id]/route.ts index f4ad85ba8..e3401c976 100644 --- a/apps/nextjs/src/app/api/user-medias/[id]/route.ts +++ b/apps/nextjs/src/app/api/user-medias/[id]/route.ts @@ -1,6 +1,7 @@ import { notFound } from "next/navigation"; import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; +import DOMPurify from "isomorphic-dompurify"; import { db, eq } from "@homarr/db"; import { medias } from "@homarr/db/schema"; @@ -19,11 +20,24 @@ export async function GET(_req: NextRequest, props: { params: Promise<{ id: stri notFound(); } + let content = new Uint8Array(image.content); + + // Sanitize SVG content to prevent XSS attacks + if (image.contentType === "image/svg+xml" || image.contentType === "image/svg") { + const svgText = new TextDecoder().decode(content); + const sanitized = DOMPurify.sanitize(svgText, { + USE_PROFILES: { svg: true, svgFilters: true }, + }); + content = new TextEncoder().encode(sanitized); + } + const headers = new Headers(); headers.set("Content-Type", image.contentType); - headers.set("Content-Length", image.content.length.toString()); + headers.set("Content-Length", content.length.toString()); + headers.set("Content-Security-Policy", "default-src 'none'; style-src 'unsafe-inline'; sandbox"); + headers.set("X-Content-Type-Options", "nosniff"); - return new NextResponse(new Uint8Array(image.content), { + return new NextResponse(content, { status: 200, headers, }); diff --git a/apps/nextjs/src/components/access/group-access-form.tsx b/apps/nextjs/src/components/access/group-access-form.tsx index 64dee26ab..749d62306 100644 --- a/apps/nextjs/src/components/access/group-access-form.tsx +++ b/apps/nextjs/src/components/access/group-access-form.tsx @@ -1,10 +1,10 @@ import { useState } from "react"; -import Link from "next/link"; import { Anchor, Button, Group, Stack, Table, TableTbody, TableTh, TableThead, TableTr } from "@mantine/core"; import { IconPlus } from "@tabler/icons-react"; import { useModalAction } from "@homarr/modals"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import type { AccessQueryData } from "./access-settings"; import { AccessSelectRow } from "./access-table-rows"; diff --git a/apps/nextjs/src/components/access/user-access-form.tsx b/apps/nextjs/src/components/access/user-access-form.tsx index 20b032861..1af278a5e 100644 --- a/apps/nextjs/src/components/access/user-access-form.tsx +++ b/apps/nextjs/src/components/access/user-access-form.tsx @@ -1,11 +1,10 @@ import { useState } from "react"; -import Link from "next/link"; import { Anchor, Box, Button, Group, Stack, Table, TableTbody, TableTh, TableThead, TableTr } from "@mantine/core"; import { IconPlus } from "@tabler/icons-react"; import { useModalAction } from "@homarr/modals"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { UserAvatar } from "@homarr/ui"; +import { Link, UserAvatar } from "@homarr/ui"; import type { AccessQueryData } from "./access-settings"; import { AccessDisplayRow, AccessSelectRow } from "./access-table-rows"; diff --git a/apps/nextjs/src/components/layout/header.tsx b/apps/nextjs/src/components/layout/header.tsx index e1f038343..f1e513f30 100644 --- a/apps/nextjs/src/components/layout/header.tsx +++ b/apps/nextjs/src/components/layout/header.tsx @@ -1,8 +1,8 @@ import type { ReactNode } from "react"; -import Link from "next/link"; import { AppShellHeader, Group, UnstyledButton } from "@mantine/core"; import { Spotlight } from "@homarr/spotlight"; +import { Link } from "@homarr/ui"; import { ClientBurger } from "./header/burger"; import { DesktopSearchInput, MobileSearchButton } from "./header/search"; diff --git a/apps/nextjs/src/components/layout/header/button.tsx b/apps/nextjs/src/components/layout/header/button.tsx index 98bdbe0b7..e8d858b6a 100644 --- a/apps/nextjs/src/components/layout/header/button.tsx +++ b/apps/nextjs/src/components/layout/header/button.tsx @@ -1,9 +1,10 @@ import type { ForwardedRef, ReactNode } from "react"; import { forwardRef } from "react"; -import Link from "next/link"; import type { ActionIconProps } from "@mantine/core"; import { ActionIcon } from "@mantine/core"; +import { Link } from "@homarr/ui"; + type HeaderButtonProps = ( | { onClick?: () => void; diff --git a/apps/nextjs/src/components/layout/navigation-link.tsx b/apps/nextjs/src/components/layout/navigation-link.tsx index 6aec0a9f1..dd6949682 100644 --- a/apps/nextjs/src/components/layout/navigation-link.tsx +++ b/apps/nextjs/src/components/layout/navigation-link.tsx @@ -1,10 +1,11 @@ "use client"; import type { ReactNode } from "react"; -import Link from "next/link"; import { usePathname } from "next/navigation"; import { NavLink } from "@mantine/core"; +import { Link } from "@homarr/ui"; + export const CommonNavLink = (props: ClientNavigationLink) => "href" in props ? : ; diff --git a/apps/nextjs/src/components/user-avatar-menu.tsx b/apps/nextjs/src/components/user-avatar-menu.tsx index 9b3e3647a..4a45a14d7 100644 --- a/apps/nextjs/src/components/user-avatar-menu.tsx +++ b/apps/nextjs/src/components/user-avatar-menu.tsx @@ -2,7 +2,6 @@ import type { ReactNode } from "react"; import { useCallback, useEffect } from "react"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import { Center, Menu, Stack, Text, useMantineColorScheme } from "@mantine/core"; import { useHotkeys, useTimeout } from "@mantine/hooks"; @@ -22,6 +21,7 @@ import { signOut, useSession } from "@homarr/auth/client"; import { hotkeys } from "@homarr/definitions"; import { createModal, useModalAction } from "@homarr/modals"; import { useScopedI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { useAuthContext } from "~/app/[locale]/_client-providers/session"; import { CurrentLanguageCombobox } from "./language/current-language-combobox"; diff --git a/apps/nextjs/src/middleware.ts b/apps/nextjs/src/proxy.ts similarity index 64% rename from apps/nextjs/src/middleware.ts rename to apps/nextjs/src/proxy.ts index 453b7b783..42553bc2c 100644 --- a/apps/nextjs/src/middleware.ts +++ b/apps/nextjs/src/proxy.ts @@ -1,10 +1,7 @@ -import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; -import { createTRPCClient, httpLink } from "@trpc/client"; -import SuperJSON from "superjson"; +import { NextResponse } from "next/server"; -import type { AppRouter } from "@homarr/api"; -import { createHeadersCallbackForSource, getTrpcUrl } from "@homarr/api/shared"; +import { api } from "@homarr/api/server"; import { localeCookieKey } from "@homarr/definitions"; import type { SupportedLanguage } from "@homarr/translation"; import { supportedLanguages } from "@homarr/translation"; @@ -12,12 +9,12 @@ import { createI18nMiddleware } from "@homarr/translation/middleware"; let isOnboardingFinished = false; -export async function middleware(request: NextRequest) { +export async function proxy(request: NextRequest) { // Redirect to onboarding if it's not finished yet const pathname = request.nextUrl.pathname; if (!isOnboardingFinished && !pathname.endsWith("/init")) { - const currentOnboardingStep = await serverFetchApi.onboard.currentStep.query(); + const currentOnboardingStep = await api.onboard.currentStep(); if (currentOnboardingStep.current !== "finish") { return NextResponse.redirect(new URL("/init", request.url)); } @@ -29,11 +26,12 @@ export async function middleware(request: NextRequest) { const currentLocale = request.cookies.get(localeCookieKey)?.value; let defaultLocale: SupportedLanguage = "en"; if (!currentLocale || !supportedLanguages.includes(currentLocale as SupportedLanguage)) { - defaultLocale = await serverFetchApi.serverSettings.getCulture.query().then((culture) => culture.defaultLocale); + defaultLocale = await api.serverSettings.getCulture().then((culture) => culture.defaultLocale); } // We don't want to fallback to accept-language header so we clear it request.headers.set("accept-language", ""); + const next = createI18nMiddleware(defaultLocale); return next(request); } @@ -41,13 +39,3 @@ export async function middleware(request: NextRequest) { export const config = { matcher: ["/((?!api|static|.*\\..*|_next|favicon.ico|robots.txt).*)"], }; - -export const serverFetchApi = createTRPCClient({ - links: [ - httpLink({ - url: getTrpcUrl(), - transformer: SuperJSON, - headers: createHeadersCallbackForSource("server-fetch"), - }), - ], -}); diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 47584d1bc..ecd41e5f1 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -37,21 +37,21 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "dayjs": "^1.11.18", + "dayjs": "^1.11.19", "dotenv": "^17.2.3", - "fastify": "^5.6.1", - "superjson": "2.2.3", + "fastify": "^5.6.2", + "superjson": "2.2.6", "undici": "7.16.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^24.9.1", - "dotenv-cli": "^10.0.0", - "esbuild": "^0.25.11", - "eslint": "^9.38.0", - "prettier": "^3.6.2", + "@types/node": "^24.10.2", + "dotenv-cli": "^11.0.0", + "esbuild": "^0.27.1", + "eslint": "^9.39.1", + "prettier": "^3.7.4", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 658c8be1d..3f77645a8 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,9 +34,9 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.18.1", - "esbuild": "^0.25.11", - "eslint": "^9.38.0", - "prettier": "^3.6.2", + "esbuild": "^0.27.1", + "eslint": "^9.39.1", + "prettier": "^3.7.4", "typescript": "^5.9.3" } } diff --git a/nginx.conf b/nginx.conf index e53f7b740..4b82c8ca5 100644 --- a/nginx.conf +++ b/nginx.conf @@ -5,6 +5,7 @@ events { http { server { listen 7575; + listen [::]:7575; # Route websockets traffic to port 3001 location /websockets { @@ -25,4 +26,4 @@ http { client_max_body_size 32M; } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index a0727824f..856a0724f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.43.0", + "version": "1.46.0", "private": true, "scripts": { "build": "cross-env CI=true turbo build", @@ -39,28 +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.0", - "@semantic-release/npm": "^13.1.1", + "@semantic-release/github": "^12.0.2", + "@semantic-release/npm": "^13.1.2", "@semantic-release/release-notes-generator": "^14.1.0", - "@testcontainers/redis": "^11.7.2", - "@turbo/gen": "^2.5.8", - "@vitejs/plugin-react": "^5.1.0", - "@vitest/coverage-v8": "^3.2.4", - "@vitest/ui": "^3.2.4", + "@testcontainers/redis": "^11.9.0", + "@turbo/gen": "^2.6.3", + "@vitejs/plugin-react": "^5.1.2", + "@vitest/coverage-v8": "^4.0.15", + "@vitest/ui": "^4.0.15", "conventional-changelog-conventionalcommits": "^9.1.0", "cross-env": "^10.1.0", - "jsdom": "^27.0.1", - "prettier": "^3.6.2", - "semantic-release": "^25.0.1", - "testcontainers": "^11.7.2", - "turbo": "^2.5.8", + "jsdom": "^27.3.0", + "json5": "^2.2.3", + "prettier": "^3.7.4", + "semantic-release": "^25.0.2", + "testcontainers": "^11.9.0", + "turbo": "^2.6.3", "typescript": "^5.9.3", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.2.4" + "vitest": "^4.0.15" }, - "packageManager": "pnpm@10.19.0", + "packageManager": "pnpm@10.25.0", "engines": { - "node": ">=22.21.0" + "node": ">=24.11.1", + "pnpm": ">=10.25.0" }, "pnpm": { "onlyBuiltDependencies": [ @@ -77,23 +79,23 @@ "overrides": { "@babel/helpers@<7.26.10": ">=7.28.4", "@babel/runtime@<7.26.10": ">=7.28.4", - "axios@>=1.0.0 <1.8.2": ">=1.12.2", + "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.25.11", - "form-data@>=4.0.0 <4.0.4": ">=4.0.4", - "hono@<4.6.5": ">=4.10.3", + "esbuild@<=0.24.2": ">=0.27.1", + "form-data@>=4.0.0 <4.0.4": ">=4.0.5", + "hono@<4.6.5": ">=4.10.8", "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.16.0", - "react-is": "^19.2.0", - "rollup@>=4.0.0 <4.22.4": ">=4.52.5", + "react-is": "^19.2.1", + "rollup@>=4.0.0 <4.22.4": ">=4.53.3", "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", "tmp@<=0.2.3": ">=0.2.5", - "vite@>=5.0.0 <=5.4.18": ">=7.1.12" + "vite@>=5.0.0 <=5.4.18": ">=7.2.7" }, "patchedDependencies": { "@types/node-unifi": "patches/@types__node-unifi.patch", diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 38dff5180..913f55d22 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -26,13 +26,13 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@umami/node": "^0.4.0", - "superjson": "2.2.3" + "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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/api/package.json b/packages/api/package.json index d34328079..9bf59dcbb 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -43,25 +43,25 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.4.0", - "@tanstack/react-query": "^5.90.5", - "@trpc/client": "^11.6.0", - "@trpc/react-query": "^11.6.0", - "@trpc/server": "^11.6.0", - "@trpc/tanstack-react-query": "^11.6.0", + "@tanstack/react-query": "^5.90.12", + "@trpc/client": "^11.7.2", + "@trpc/react-query": "^11.7.2", + "@trpc/server": "^11.7.2", + "@trpc/tanstack-react-query": "^11.7.2", "lodash.clonedeep": "^4.5.0", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", - "superjson": "2.2.3", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", + "superjson": "2.2.6", "trpc-to-openapi": "^3.1.0", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", - "prettier": "^3.6.2", + "eslint": "^9.39.1", + "prettier": "^3.7.4", "typescript": "^5.9.3" } } diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index d13854e88..a77c89b10 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -3,6 +3,7 @@ import { z } from "zod/v4"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { createIntegrationAsync } from "@homarr/integrations"; +import { mediaRequestStatusConfiguration } from "@homarr/integrations/types"; import type { MediaRequest } from "@homarr/integrations/types"; import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; @@ -35,7 +36,10 @@ export const mediaRequestsRouter = createTRPCRouter({ return dataB.createdAt.getTime() - dataA.createdAt.getTime(); } - return dataA.status - dataB.status; + return ( + mediaRequestStatusConfiguration[dataA.status].position - + mediaRequestStatusConfiguration[dataB.status].position + ); }); }), subscribeToLatestRequests: publicProcedure diff --git a/packages/api/src/router/widgets/releases.ts b/packages/api/src/router/widgets/releases.ts index f35813fbc..063f1185e 100644 --- a/packages/api/src/router/widgets/releases.ts +++ b/packages/api/src/router/widgets/releases.ts @@ -39,15 +39,22 @@ export const releasesRouter = createTRPCRouter({ .query(async ({ ctx, input }) => { return await Promise.all( input.repositories.map(async (repository) => { - const innerHandler = releasesRequestHandler.handler(ctx.integration, { - id: repository.id, - identifier: repository.identifier, - versionRegex: formatVersionFilterRegex(repository.versionFilter), - }); + const response = await releasesRequestHandler + .handler(ctx.integration, { + id: repository.id, + identifier: repository.identifier, + versionRegex: formatVersionFilterRegex(repository.versionFilter), + }) + .getCachedOrUpdatedDataAsync({ + forceUpdate: false, + }); - return await innerHandler.getCachedOrUpdatedDataAsync({ - forceUpdate: false, - }); + return { + id: repository.id, + integration: { name: ctx.integration.name, kind: ctx.integration.kind }, + timestamp: response.timestamp, + ...response.data, + }; }), ); }), diff --git a/packages/auth/package.json b/packages/auth/package.json index 6a87ffff0..65fe10911 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -23,8 +23,8 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@auth/core": "^0.41.0", - "@auth/drizzle-adapter": "^1.11.0", + "@auth/core": "^0.41.1", + "@auth/drizzle-adapter": "^1.11.1", "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", @@ -34,12 +34,12 @@ "@homarr/validation": "workspace:^0.1.0", "bcrypt": "^6.0.0", "cookies": "^0.9.1", - "ldapts": "8.0.9", - "next": "15.5.6", + "ldapts": "8.0.18", + "next": "16.0.10", "next-auth": "5.0.0-beta.30", - "react": "19.2.0", - "react-dom": "19.2.0", - "zod": "^4.1.12" + "react": "19.2.1", + "react-dom": "19.2.1", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", @@ -47,8 +47,8 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "6.0.0", "@types/cookies": "0.9.2", - "eslint": "^9.38.0", - "prettier": "^3.6.2", + "eslint": "^9.39.1", + "prettier": "^3.7.4", "typescript": "^5.9.3" } } diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts index 9f441aa9a..22dd15181 100644 --- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts +++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts @@ -6,14 +6,14 @@ import type { Database, InferInsertModel } from "@homarr/db"; import { and, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { logger } from "@homarr/log"; -import type { userSignInSchema } from "@homarr/validation/user"; +import type { ldapSignInSchema } from "@homarr/validation/user"; import { env } from "../../../env"; import { LdapClient } from "../ldap-client"; export const authorizeWithLdapCredentialsAsync = async ( db: Database, - credentials: z.infer, + credentials: z.infer, ) => { logger.info(`user ${credentials.name} is trying to log in using LDAP. Connecting to LDAP server...`); const client = new LdapClient(); @@ -38,7 +38,14 @@ export const authorizeWithLdapCredentialsAsync = async ( attributes: [env.AUTH_LDAP_USERNAME_ATTRIBUTE, env.AUTH_LDAP_USER_MAIL_ATTRIBUTE], }, }) - .then((entries) => entries.at(0)); + .then((entries) => { + if (entries.length > 1) { + logger.warn(`Multiple LDAP users found for ${credentials.name}, expected only one.`); + throw new CredentialsSignin(); + } + + return entries.at(0); + }); if (!ldapUser) { logger.warn(`User ${credentials.name} not found in LDAP`); diff --git a/packages/auth/providers/credentials/credentials-provider.ts b/packages/auth/providers/credentials/credentials-provider.ts index 79e5eddf6..9de08da14 100644 --- a/packages/auth/providers/credentials/credentials-provider.ts +++ b/packages/auth/providers/credentials/credentials-provider.ts @@ -1,7 +1,7 @@ import type Credentials from "@auth/core/providers/credentials"; import type { Database } from "@homarr/db"; -import { userSignInSchema } from "@homarr/validation/user"; +import { ldapSignInSchema, userSignInSchema } from "@homarr/validation/user"; import { authorizeWithBasicCredentialsAsync } from "./authorization/basic-authorization"; import { authorizeWithLdapCredentialsAsync } from "./authorization/ldap-authorization"; @@ -28,7 +28,7 @@ export const createLdapConfiguration = (db: Database) => name: "Ldap", // eslint-disable-next-line no-restricted-syntax async authorize(credentials) { - const data = await userSignInSchema.parseAsync(credentials); + const data = await ldapSignInSchema.parseAsync(credentials); return await authorizeWithLdapCredentialsAsync(db, data).catch(() => null); }, }) satisfies CredentialsConfiguration; diff --git a/packages/auth/providers/test/ldap-authorization.spec.ts b/packages/auth/providers/test/ldap-authorization.spec.ts index 09b7bd151..0b9fd8935 100644 --- a/packages/auth/providers/test/ldap-authorization.spec.ts +++ b/packages/auth/providers/test/ldap-authorization.spec.ts @@ -23,12 +23,11 @@ describe("authorizeWithLdapCredentials", () => { test("should fail when wrong ldap base credentials", async () => { // Arrange const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.reject(new Error("bindAsync"))), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.reject(new Error("bindAsync"))), + } as unknown as ldapClient.LdapClient; + }); // Act const act = () => @@ -44,13 +43,12 @@ describe("authorizeWithLdapCredentials", () => { test("should fail when user not found", async () => { // Arrange const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn(() => Promise.resolve([])), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn(() => Promise.resolve([])), + } as unknown as ldapClient.LdapClient; + }); // Act const act = () => @@ -66,20 +64,19 @@ describe("authorizeWithLdapCredentials", () => { test("should fail when user has invalid email", async () => { // Arrange const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn(() => - Promise.resolve([ - { - dn: "test", - mail: "test", - }, - ]), - ), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn(() => + Promise.resolve([ + { + dn: "test", + mail: "test", + }, + ]), + ), + } as unknown as ldapClient.LdapClient; + }); // Act const act = () => @@ -103,15 +100,14 @@ describe("authorizeWithLdapCredentials", () => { ]), ); const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn((props: ldapClient.BindOptions) => - props.distinguishedName === "test" ? Promise.reject(new Error("bindAsync")) : Promise.resolve(), - ), - searchAsync: searchSpy, - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn((props: ldapClient.BindOptions) => + props.distinguishedName === "test" ? Promise.reject(new Error("bindAsync")) : Promise.resolve(), + ), + searchAsync: searchSpy, + } as unknown as ldapClient.LdapClient; + }); // Act const act = () => @@ -129,21 +125,20 @@ describe("authorizeWithLdapCredentials", () => { // Arrange const db = createDb(); const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn(() => - Promise.resolve([ - { - dn: "test", - mail: "test@gmail.com", - }, - ]), - ), - disconnectAsync: vi.fn(), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn(() => + Promise.resolve([ + { + dn: "test", + mail: "test@gmail.com", + }, + ]), + ), + disconnectAsync: vi.fn(), + } as unknown as ldapClient.LdapClient; + }); // Act const result = await authorizeWithLdapCredentialsAsync(db, { @@ -168,21 +163,20 @@ describe("authorizeWithLdapCredentials", () => { // Arrange const db = createDb(); const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn(() => - Promise.resolve([ - { - dn: "test", - mail: "test@gmail.com", - }, - ]), - ), - disconnectAsync: vi.fn(), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn(() => + Promise.resolve([ + { + dn: "test", + mail: "test@gmail.com", + }, + ]), + ), + disconnectAsync: vi.fn(), + } as unknown as ldapClient.LdapClient; + }); await db.insert(users).values({ id: createId(), name: "test", @@ -220,21 +214,20 @@ describe("authorizeWithLdapCredentials", () => { test("should authorize user with correct credentials and return updated name", async () => { // Arrange const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn(() => - Promise.resolve([ - { - dn: "test55", - mail: "test@gmail.com", - }, - ]), - ), - disconnectAsync: vi.fn(), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn(() => + Promise.resolve([ + { + dn: "test55", + mail: "test@gmail.com", + }, + ]), + ), + disconnectAsync: vi.fn(), + } as unknown as ldapClient.LdapClient; + }); const userId = createId(); const db = createDb(); @@ -268,27 +261,26 @@ describe("authorizeWithLdapCredentials", () => { test("should authorize user with correct credentials and return his groups", async () => { // Arrange const spy = vi.spyOn(ldapClient, "LdapClient"); - spy.mockImplementation( - () => - ({ - bindAsync: vi.fn(() => Promise.resolve()), - searchAsync: vi.fn((argument: { options: { filter: string } }) => - argument.options.filter.includes("group") - ? Promise.resolve([ - { - cn: "homarr_example", - }, - ]) - : Promise.resolve([ - { - dn: "test55", - mail: "test@gmail.com", - }, - ]), - ), - disconnectAsync: vi.fn(), - }) as unknown as ldapClient.LdapClient, - ); + spy.mockImplementation(function () { + return { + bindAsync: vi.fn(() => Promise.resolve()), + searchAsync: vi.fn((argument: { options: { filter: string } }) => + argument.options.filter.includes("group") + ? Promise.resolve([ + { + cn: "homarr_example", + }, + ]) + : Promise.resolve([ + { + dn: "test55", + mail: "test@gmail.com", + }, + ]), + ), + disconnectAsync: vi.fn(), + } as unknown as ldapClient.LdapClient; + }); const db = createDb(); const userId = createId(); await db.insert(users).values({ diff --git a/packages/boards/package.json b/packages/boards/package.json index 6c9b2febf..d0dd09152 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.0", - "react-dom": "19.2.0" + "react": "19.2.1", + "react-dom": "19.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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/certificates/package.json b/packages/certificates/package.json index 4e7fc611a..c720ae98e 100644 --- a/packages/certificates/package.json +++ b/packages/certificates/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 003d506e3..f50b73e31 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,8 +34,8 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "esbuild": "^0.25.11", - "eslint": "^9.38.0", + "esbuild": "^0.27.1", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index 469891c5d..015f0b47b 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -30,21 +30,21 @@ "@homarr/core": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@paralleldrive/cuid2": "^3.1.0", - "dayjs": "^1.11.18", - "dns-caching": "^0.2.7", - "next": "15.5.6", - "octokit": "^5.0.4", - "react": "19.2.0", - "react-dom": "19.2.0", + "dayjs": "^1.11.19", + "dns-caching": "^0.2.9", + "next": "16.0.10", + "octokit": "^5.0.5", + "react": "19.2.1", + "react-dom": "19.2.1", "undici": "7.16.0", - "zod": "^4.1.12", - "zod-validation-error": "^4.0.2" + "zod": "^4.1.13", + "zod-validation-error": "^5.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/core/package.json b/packages/core/package.json index 6207ade4f..aced00b5b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,13 +26,13 @@ "dependencies": { "@t3-oss/env-nextjs": "^0.13.8", "ioredis": "5.8.2", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json index 198d81efe..a784b74f0 100644 --- a/packages/cron-job-api/package.json +++ b/packages/cron-job-api/package.json @@ -29,21 +29,21 @@ "@homarr/core": "workspace:^0.1.0", "@homarr/cron-jobs": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", - "@tanstack/react-query": "^5.90.5", - "@trpc/client": "^11.6.0", - "@trpc/server": "^11.6.0", - "@trpc/tanstack-react-query": "^11.6.0", + "@tanstack/react-query": "^5.90.12", + "@trpc/client": "^11.7.2", + "@trpc/server": "^11.7.2", + "@trpc/tanstack-react-query": "^11.7.2", "node-cron": "^4.2.1", - "react": "19.2.0", - "zod": "^4.1.12" + "react": "19.2.1", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "@types/react": "19.2.2", - "eslint": "^9.38.0", + "@types/react": "19.2.7", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index 9f2d76410..675b171f2 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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index 02a6e8ac8..01b4f86f6 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -33,7 +33,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 526942efc..d3baaa48b 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index 52c2fb1c7..913a14051 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -43,35 +43,35 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@auth/core": "^0.41.0", + "@auth/core": "^0.41.1", "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/core": "^8.3.5", + "@mantine/core": "^8.3.10", "@paralleldrive/cuid2": "^3.1.0", - "@testcontainers/mysql": "^11.7.2", - "@testcontainers/postgresql": "^11.7.2", - "better-sqlite3": "^12.4.1", + "@testcontainers/mysql": "^11.9.0", + "@testcontainers/postgresql": "^11.9.0", + "better-sqlite3": "^12.5.0", "dotenv": "^17.2.3", - "drizzle-kit": "^0.31.5", - "drizzle-orm": "^0.44.7", + "drizzle-kit": "^0.31.8", + "drizzle-orm": "^0.45.0", "drizzle-zod": "^0.8.3", "mysql2": "3.15.3", "pg": "^8.16.3", - "superjson": "2.2.3" + "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", "@types/better-sqlite3": "7.6.13", - "@types/pg": "^8.15.5", - "dotenv-cli": "^10.0.0", - "esbuild": "^0.25.11", - "eslint": "^9.38.0", - "prettier": "^3.6.2", + "@types/pg": "^8.15.6", + "dotenv-cli": "^11.0.0", + "esbuild": "^0.27.1", + "eslint": "^9.39.1", + "prettier": "^3.7.4", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 06c758914..ccb47af36 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.0", - "zod": "^4.1.12" + "fast-xml-parser": "^5.3.2", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "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 d47733e37..c1b1e3dc1 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -144,6 +144,7 @@ export type HomarrDocumentationPath = | "/docs/getting-started/installation/proxmox" | "/docs/getting-started/installation/qnap" | "/docs/getting-started/installation/railway" + | "/docs/getting-started/installation/runtipi" | "/docs/getting-started/installation/saltbox" | "/docs/getting-started/installation/source" | "/docs/getting-started/installation/synology" diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 61abd39fd..1309796d5 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -145,7 +145,7 @@ export const integrationDefs = { }, piHole: { name: "Pi-hole", - secretKinds: [["apiKey"]], + secretKinds: [["apiKey"], []], iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/pi-hole.svg", category: ["dnsHole"], documentationUrl: createDocumentationLink("/docs/integrations/pi-hole"), diff --git a/packages/docker/package.json b/packages/docker/package.json index 36a4ec01c..b6b91da4e 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": "^3.3.45", - "eslint": "^9.38.0", + "@types/dockerode": "^3.3.47", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/docker/src/index.ts b/packages/docker/src/index.ts index 131507d6a..bd8f5dc2a 100644 --- a/packages/docker/src/index.ts +++ b/packages/docker/src/index.ts @@ -8,3 +8,4 @@ export type { Docker }; export const containerStates = ["created", "running", "paused", "restarting", "exited", "removing", "dead"] as const; export type ContainerState = (typeof containerStates)[number]; +export * from "./labels"; diff --git a/packages/docker/src/labels.ts b/packages/docker/src/labels.ts new file mode 100644 index 000000000..84bf0071f --- /dev/null +++ b/packages/docker/src/labels.ts @@ -0,0 +1,4 @@ +export const dockerLabels = { + // Label to hide a container from Homarrs docker integration + hide: "homarr.hide", +} as const; diff --git a/packages/form/package.json b/packages/form/package.json index cf483f853..ab612e909 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,15 +26,15 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^8.3.5", + "@mantine/form": "^8.3.10", "mantine-form-zod-resolver": "^1.3.0", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/form/src/types.ts b/packages/form/src/types.ts index 4c6c1363a..78e3cdeb4 100644 --- a/packages/form/src/types.ts +++ b/packages/form/src/types.ts @@ -1,7 +1,9 @@ import type { ChangeEvent, FocusEvent } from "react"; -export interface InputPropsFor - extends BasePropsFor { +export interface InputPropsFor extends BasePropsFor< + TOnChangeArg, + TComponent +> { value?: T; defaultValue?: T; } diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index 765d19ad0..aa5c5a834 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -28,16 +28,17 @@ "@homarr/form": "workspace:^0.1.0", "@homarr/notifications": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", + "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.5", - "react": "19.2.0", - "zod": "^4.1.12" + "@mantine/core": "^8.3.10", + "react": "19.2.1", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/forms-collection/src/new-app/_form.tsx b/packages/forms-collection/src/new-app/_form.tsx index 00d60a033..82f5a7caa 100644 --- a/packages/forms-collection/src/new-app/_form.tsx +++ b/packages/forms-collection/src/new-app/_form.tsx @@ -2,7 +2,6 @@ import type { ChangeEventHandler } from "react"; import { useEffect, useRef } from "react"; -import Link from "next/link"; import { Button, Checkbox, Collapse, Group, Stack, Textarea, TextInput } from "@mantine/core"; import { useDebouncedValue, useDisclosure } from "@mantine/hooks"; import type { z } from "zod/v4"; @@ -10,6 +9,7 @@ import type { z } from "zod/v4"; import { clientApi } from "@homarr/api/client"; import { useZodForm } from "@homarr/form"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import { appManageSchema } from "@homarr/validation/app"; import { IconPicker } from "../icon-picker/icon-picker"; diff --git a/packages/forms-collection/src/upload-media/upload-media.tsx b/packages/forms-collection/src/upload-media/upload-media.tsx index 1a0779259..9da7a52d1 100644 --- a/packages/forms-collection/src/upload-media/upload-media.tsx +++ b/packages/forms-collection/src/upload-media/upload-media.tsx @@ -16,7 +16,19 @@ interface UploadMediaProps { export const UploadMedia = ({ children, onSettled, onSuccess, multiple = false }: UploadMediaProps) => { const t = useI18n(); - const { mutateAsync, isPending } = clientApi.media.uploadMedia.useMutation(); + const { mutateAsync, isPending } = clientApi.media.uploadMedia.useMutation({ + async onSuccess(mediaIds) { + await onSuccess?.( + mediaIds.map((id) => ({ + id, + url: `/api/user-medias/${id}`, + })), + ); + }, + async onSettled() { + await onSettled?.(); + }, + }); const handleFileUploadAsync = async (files: File[] | File | null) => { if (!files || (Array.isArray(files) && files.length === 0)) return; @@ -24,25 +36,16 @@ export const UploadMedia = ({ children, onSettled, onSuccess, multiple = false } const formData = new FormData(); filesArray.forEach((file) => formData.append("files", file)); await mutateAsync(formData, { - async onSuccess(mediaIds) { + onSuccess() { showSuccessNotification({ message: t("media.action.upload.notification.success.message"), }); - await onSuccess?.( - mediaIds.map((id) => ({ - id, - url: `/api/user-medias/${id}`, - })), - ); }, onError() { showErrorNotification({ message: t("media.action.upload.notification.error.message"), }); }, - async onSettled() { - await onSettled?.(); - }, }); }; diff --git a/packages/icons/package.json b/packages/icons/package.json index 9dfc6613b..682bfa651 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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/image-proxy/package.json b/packages/image-proxy/package.json index a7e5d8bca..e46fda9f9 100644 --- a/packages/image-proxy/package.json +++ b/packages/image-proxy/package.json @@ -33,7 +33,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "6.0.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index b1799ce95..401a86133 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -25,10 +25,10 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@ctrl/deluge": "^7.4.0", - "@ctrl/qbittorrent": "^9.10.0", + "@ctrl/deluge": "^7.5.0", + "@ctrl/qbittorrent": "^9.11.0", "@ctrl/transmission": "^7.4.0", - "@gitbeaker/rest": "^43.5.0", + "@gitbeaker/rest": "^43.8.0", "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", @@ -39,17 +39,17 @@ "@homarr/redis": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@jellyfin/sdk": "^0.12.0", - "@octokit/auth-app": "^8.1.1", + "@jellyfin/sdk": "^0.13.0", + "@octokit/auth-app": "^8.1.2", "ical.js": "^2.2.1", "maria2": "^0.4.1", "node-ical": "^0.22.1", - "octokit": "^5.0.4", + "octokit": "^5.0.5", "proxmox-api": "1.1.1", - "tsdav": "^2.1.5", + "tsdav": "^2.1.6", "undici": "7.16.0", "xml2js": "^0.6.2", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", @@ -57,7 +57,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-unifi": "^2.5.1", "@types/xml2js": "^0.4.14", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/integrations/src/codeberg/codeberg-integration.ts b/packages/integrations/src/codeberg/codeberg-integration.ts index 2836917a0..ea6543cbb 100644 --- a/packages/integrations/src/codeberg/codeberg-integration.ts +++ b/packages/integrations/src/codeberg/codeberg-integration.ts @@ -11,8 +11,7 @@ import type { ReleasesProviderIntegration } from "../interfaces/releases-provide import { getLatestRelease } from "../interfaces/releases-providers/releases-providers-integration"; import type { DetailsProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; import { detailsResponseSchema, releasesResponseSchema } from "./codeberg-schemas"; @@ -43,22 +42,23 @@ export class CodebergIntegration extends Integration implements ReleasesProvider }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const [owner, name] = repository.identifier.split("/"); + private parseIdentifier(identifier: string) { + const [owner, name] = identifier.split("/"); if (!owner || !name) { localLogger.warn( - `Invalid identifier format. Expected 'owner/name', for ${repository.identifier} with Codeberg integration`, - { - identifier: repository.identifier, - }, + `Invalid identifier format. Expected 'owner/name', for ${identifier} with Codeberg integration`, + { identifier }, ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; + return null; } + return { owner, name }; + } - const details = await this.getDetailsAsync(owner, name); + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + const parsedIdentifier = this.parseIdentifier(identifier); + if (!parsedIdentifier) return { success: false, error: { code: "invalidIdentifier" } }; + + const { owner, name } = parsedIdentifier; const releasesResponse = await this.withHeadersAsync(async (headers) => { return await fetchWithTrustedCertificatesAsync( @@ -66,34 +66,36 @@ export class CodebergIntegration extends Integration implements ReleasesProvider { headers }, ); }); - if (!releasesResponse.ok) { - return { - id: repository.id, - error: { message: releasesResponse.statusText }, - }; + return { success: false, error: { code: "unexpected", message: releasesResponse.statusText } }; } const releasesResponseJson: unknown = await releasesResponse.json(); const { data, success, error } = releasesResponseSchema.safeParse(releasesResponseJson); - if (!success) { return { - id: repository.id, + success: false, error: { + code: "unexpected", message: releasesResponseJson ? JSON.stringify(releasesResponseJson, null, 2) : error.message, }, }; - } else { - const formattedReleases = data.map((tag) => ({ - latestRelease: tag.tag_name, - latestReleaseAt: tag.published_at, - releaseUrl: tag.url, - releaseDescription: tag.body, - isPreRelease: tag.prerelease, - })); - return getLatestRelease(formattedReleases, repository, details); } + + const formattedReleases = data.map((tag) => ({ + latestRelease: tag.tag_name, + latestReleaseAt: tag.published_at, + releaseUrl: tag.url, + releaseDescription: tag.body, + isPreRelease: tag.prerelease, + })); + + const latestRelease = getLatestRelease(formattedReleases, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; + + const details = await this.getDetailsAsync(owner, name); + + return { success: true, data: { ...details, ...latestRelease } }; } protected async getDetailsAsync(owner: string, name: string): Promise { diff --git a/packages/integrations/src/docker-hub/docker-hub-integration.ts b/packages/integrations/src/docker-hub/docker-hub-integration.ts index a961ddc38..d0e99c0e6 100644 --- a/packages/integrations/src/docker-hub/docker-hub-integration.ts +++ b/packages/integrations/src/docker-hub/docker-hub-integration.ts @@ -14,8 +14,7 @@ import type { ReleasesProviderIntegration } from "../interfaces/releases-provide import { getLatestRelease } from "../interfaces/releases-providers/releases-providers-integration"; import type { DetailsProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; import { accessTokenResponseSchema, detailsResponseSchema, releasesResponseSchema } from "./docker-hub-schemas"; @@ -73,49 +72,61 @@ export class DockerHubIntegration extends Integration implements ReleasesProvide }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const relativeUrl = this.getRelativeUrl(repository.identifier); - if (relativeUrl === "/") { - localLogger.warn( - `Invalid identifier format. Expected 'owner/name' or 'name', for ${repository.identifier} on DockerHub`, - { - identifier: repository.identifier, - }, - ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; - } - - const details = await this.getDetailsAsync(relativeUrl); - - const releasesResponse = await this.withHeadersAsync(async (headers) => { - return await fetchWithTrustedCertificatesAsync(this.url(`${relativeUrl}/tags?page_size=100`), { - headers, + private parseIdentifier(identifier: string) { + if (!identifier.includes("/")) return { owner: "", name: identifier }; + const [owner, name] = identifier.split("/"); + if (!owner || !name) { + localLogger.warn(`Invalid identifier format. Expected 'owner/name' or 'name', for ${identifier} on DockerHub`, { + identifier, }); - }); + return null; + } + return { owner, name }; + } - if (!releasesResponse.ok) { - return { - id: repository.id, - error: { message: releasesResponse.statusText }, - }; + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + const parsedIdentifier = this.parseIdentifier(identifier); + if (!parsedIdentifier) return { success: false, error: { code: "invalidIdentifier" } }; + + const { owner, name } = parsedIdentifier; + + const relativeUrl: `/${string}` = owner + ? `/v2/namespaces/${encodeURIComponent(owner)}/repositories/${encodeURIComponent(name)}` + : `/v2/repositories/library/${encodeURIComponent(name)}`; + + for (let page = 0; page <= 5; page++) { + const releasesResponse = await this.withHeadersAsync(async (headers) => { + return await fetchWithTrustedCertificatesAsync(this.url(`${relativeUrl}/tags?page_size=100&page=${page}`), { + headers, + }); + }); + if (!releasesResponse.ok) { + return { success: false, error: { code: "unexpected", message: releasesResponse.statusText } }; + } + + const releasesResponseJson: unknown = await releasesResponse.json(); + const releasesResult = releasesResponseSchema.safeParse(releasesResponseJson); + if (!releasesResult.success) { + return { + success: false, + error: { + code: "unexpected", + message: releasesResponseJson + ? JSON.stringify(releasesResponseJson, null, 2) + : releasesResult.error.message, + }, + }; + } + + const latestRelease = getLatestRelease(releasesResult.data.results, versionRegex); + if (!latestRelease) continue; + + const details = await this.getDetailsAsync(relativeUrl); + + return { success: true, data: { ...details, ...latestRelease } }; } - const releasesResponseJson: unknown = await releasesResponse.json(); - const releasesResult = releasesResponseSchema.safeParse(releasesResponseJson); - - if (!releasesResult.success) { - return { - id: repository.id, - error: { - message: releasesResponseJson ? JSON.stringify(releasesResponseJson, null, 2) : releasesResult.error.message, - }, - }; - } else { - return getLatestRelease(releasesResult.data.results, repository, details); - } + return { success: false, error: { code: "noMatchingVersion" } }; } private async getDetailsAsync(relativeUrl: `/${string}`): Promise { @@ -154,18 +165,6 @@ export class DockerHubIntegration extends Integration implements ReleasesProvide }; } - private getRelativeUrl(identifier: string): `/${string}` { - if (identifier.indexOf("/") > 0) { - const [owner, name] = identifier.split("/"); - if (!owner || !name) { - return "/"; - } - return `/v2/namespaces/${encodeURIComponent(owner)}/repositories/${encodeURIComponent(name)}`; - } else { - return `/v2/repositories/library/${encodeURIComponent(identifier)}`; - } - } - private async getSessionAsync(fetchAsync: typeof fetch = fetchWithTrustedCertificatesAsync): Promise { const response = await fetchAsync(this.url("/v2/auth/token"), { method: "POST", diff --git a/packages/integrations/src/download-client/transmission/transmission-integration.ts b/packages/integrations/src/download-client/transmission/transmission-integration.ts index fe148dd55..7ce4d561e 100644 --- a/packages/integrations/src/download-client/transmission/transmission-integration.ts +++ b/packages/integrations/src/download-client/transmission/transmission-integration.ts @@ -46,6 +46,7 @@ export class TransmissionIntegration extends Integration implements IDownloadCli name: torrent.name, size: torrent.totalSize, sent: torrent.uploadedEver, + received: torrent.downloadedEver, downSpeed: torrent.percentDone !== 1 ? torrent.rateDownload : undefined, upSpeed: torrent.rateUpload, time: diff --git a/packages/integrations/src/emby/emby-integration.ts b/packages/integrations/src/emby/emby-integration.ts index 8efa03931..ccfc43222 100644 --- a/packages/integrations/src/emby/emby-integration.ts +++ b/packages/integrations/src/emby/emby-integration.ts @@ -11,7 +11,7 @@ import type { TestingResult } from "../base/test-connection/test-connection-serv import type { IMediaServerIntegration } from "../interfaces/media-server/media-server-integration"; import type { CurrentSessionsInput, StreamSession } from "../interfaces/media-server/media-server-types"; import { convertJellyfinType } from "../jellyfin/jellyfin-integration"; -import type { IMediaReleasesIntegration, MediaRelease } from "../types"; +import type { IMediaReleasesIntegration, MediaRelease, MediaType } from "../types"; const sessionSchema = z.object({ NowPlayingItem: z @@ -163,7 +163,7 @@ export class EmbyIntegration extends Integration implements IMediaServerIntegrat return items.map((item) => ({ id: item.Id, - type: item.Type === "Movie" ? "movie" : item.Type === "Series" ? "tv" : "unknown", + type: this.mapMediaReleaseType(item.Type), title: item.Name, subtitle: item.Taglines.at(0), description: item.Overview, @@ -179,6 +179,27 @@ export class EmbyIntegration extends Integration implements IMediaServerIntegrat })); } + private mapMediaReleaseType(type: string | undefined): MediaType { + switch (type) { + case "Audio": + case "AudioBook": + case "MusicAlbum": + return "music"; + case "Book": + return "book"; + case "Episode": + case "Series": + case "Season": + return "tv"; + case "Movie": + return "movie"; + case "Video": + return "video"; + default: + return "unknown"; + } + } + // https://dev.emby.media/reference/RestAPI/UserService/getUsersPublic.html private async fetchUsersPublicAsync(): Promise<{ id: string; name: string }[]> { const apiKey = super.getSecretValue("apiKey"); diff --git a/packages/integrations/src/github-container-registry/github-container-registry-integration.ts b/packages/integrations/src/github-container-registry/github-container-registry-integration.ts index bcb496acd..00a7b27c4 100644 --- a/packages/integrations/src/github-container-registry/github-container-registry-integration.ts +++ b/packages/integrations/src/github-container-registry/github-container-registry-integration.ts @@ -15,8 +15,7 @@ import { getLatestRelease } from "../interfaces/releases-providers/releases-prov import type { DetailsProviderResponse, ReleaseProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; const localLogger = logger.child({ module: "GitHubContainerRegistryIntegration" }); @@ -43,23 +42,24 @@ export class GitHubContainerRegistryIntegration extends Integration implements R }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const [owner, name] = repository.identifier.split("/"); + private parseIdentifier(identifier: string) { + const [owner, name] = identifier.split("/"); if (!owner || !name) { localLogger.warn( - `Invalid identifier format. Expected 'owner/name', for ${repository.identifier} with GitHub Container Registry integration`, - { - identifier: repository.identifier, - }, + `Invalid identifier format. Expected 'owner/name', for ${identifier} with GitHub Container Registry integration`, + { identifier }, ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; + return null; } + return { owner, name }; + } + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + const parsedIdentifier = this.parseIdentifier(identifier); + if (!parsedIdentifier) return { success: false, error: { code: "invalidIdentifier" } }; + + const { owner, name } = parsedIdentifier; const api = this.getApi(); - const details = await this.getDetailsAsync(api, owner, name); try { const releasesResponse = await api.rest.packages.getAllPackageVersionsForPackageOwnedByUser({ @@ -83,20 +83,20 @@ export class GitHubContainerRegistryIntegration extends Integration implements R return acc; }, []); - return getLatestRelease(releasesProviderResponse, repository, details); + const latestRelease = getLatestRelease(releasesProviderResponse, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; + + const details = await this.getDetailsAsync(api, owner, name); + + return { success: true, data: { ...details, ...latestRelease } }; } catch (error) { const errorMessage = error instanceof RequestError ? error.message : String(error); - localLogger.warn(`Failed to get releases for ${owner}\\${name} with GitHub Container Registry integration`, { owner, name, error: errorMessage, }); - - return { - id: repository.id, - error: { message: errorMessage }, - }; + return { success: false, error: { code: "unexpected", message: errorMessage } }; } } diff --git a/packages/integrations/src/github/github-integration.ts b/packages/integrations/src/github/github-integration.ts index 92fbcd802..65e103c38 100644 --- a/packages/integrations/src/github/github-integration.ts +++ b/packages/integrations/src/github/github-integration.ts @@ -15,8 +15,7 @@ import { getLatestRelease } from "../interfaces/releases-providers/releases-prov import type { DetailsProviderResponse, ReleaseProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; const localLogger = logger.child({ module: "GithubIntegration" }); @@ -43,38 +42,32 @@ export class GithubIntegration extends Integration implements ReleasesProviderIn }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const [owner, name] = repository.identifier.split("/"); + private parseIdentifier(identifier: string) { + const [owner, name] = identifier.split("/"); if (!owner || !name) { - localLogger.warn( - `Invalid identifier format. Expected 'owner/name', for ${repository.identifier} with Github integration`, - { - identifier: repository.identifier, - }, - ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; + localLogger.warn(`Invalid identifier format. Expected 'owner/name', for ${identifier} with Github integration`, { + identifier, + }); + return null; } + return { owner, name }; + } + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + const parsedIdentifier = this.parseIdentifier(identifier); + if (!parsedIdentifier) return { success: false, error: { code: "invalidIdentifier" } }; + + const { owner, name } = parsedIdentifier; const api = this.getApi(); - const details = await this.getDetailsAsync(api, owner, name); try { - const releasesResponse = await api.rest.repos.listReleases({ - owner, - repo: name, - }); + const releasesResponse = await api.rest.repos.listReleases({ owner, repo: name }); if (releasesResponse.data.length === 0) { - localLogger.warn(`No releases found, for ${repository.identifier} with Github integration`, { - identifier: repository.identifier, + localLogger.warn(`No releases found, for ${owner}/${name} with Github integration`, { + identifier: `${owner}/${name}`, }); - return { - id: repository.id, - error: { code: "noReleasesFound" }, - }; + return { success: false, error: { code: "noMatchingVersion" } }; } const releasesProviderResponse = releasesResponse.data.reduce((acc, release) => { @@ -90,20 +83,20 @@ export class GithubIntegration extends Integration implements ReleasesProviderIn return acc; }, []); - return getLatestRelease(releasesProviderResponse, repository, details); + const latestRelease = getLatestRelease(releasesProviderResponse, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; + + const details = await this.getDetailsAsync(api, owner, name); + + return { success: true, data: { ...details, ...latestRelease } }; } catch (error) { const errorMessage = error instanceof OctokitRequestError ? error.message : String(error); - localLogger.warn(`Failed to get releases for ${owner}\\${name} with Github integration`, { owner, name, error: errorMessage, }); - - return { - id: repository.id, - error: { message: errorMessage }, - }; + return { success: false, error: { code: "unexpected", message: errorMessage } }; } } diff --git a/packages/integrations/src/gitlab/gitlab-integration.ts b/packages/integrations/src/gitlab/gitlab-integration.ts index 1e42eea48..c6bad7a42 100644 --- a/packages/integrations/src/gitlab/gitlab-integration.ts +++ b/packages/integrations/src/gitlab/gitlab-integration.ts @@ -15,8 +15,7 @@ import { getLatestRelease } from "../interfaces/releases-providers/releases-prov import type { DetailsProviderResponse, ReleaseProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; const localLogger = logger.child({ module: "GitlabIntegration" }); @@ -40,25 +39,20 @@ export class GitlabIntegration extends Integration implements ReleasesProviderIn }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { const api = this.getApi(); - const details = await this.getDetailsAsync(api, repository.identifier); - try { - const releasesResponse = await api.ProjectReleases.all(repository.identifier, { + const releasesResponse = await api.ProjectReleases.all(identifier, { perPage: 100, }); if (releasesResponse instanceof Error) { - localLogger.warn(`Failed to get releases for ${repository.identifier} with Gitlab integration`, { - identifier: repository.identifier, + localLogger.warn(`Failed to get releases for ${identifier} with Gitlab integration`, { + identifier, error: releasesResponse.message, }); - return { - id: repository.id, - error: { code: "noReleasesFound" }, - }; + return { success: false, error: { code: "noReleasesFound" } }; } const releasesProviderResponse = releasesResponse.reduce((acc, release) => { @@ -76,17 +70,19 @@ export class GitlabIntegration extends Integration implements ReleasesProviderIn return acc; }, []); - return getLatestRelease(releasesProviderResponse, repository, details); - } catch (error) { - localLogger.warn(`Failed to get releases for ${repository.identifier} with Gitlab integration`, { - identifier: repository.identifier, - error: error instanceof Error ? error.message : String(error), - }); + const latestRelease = getLatestRelease(releasesProviderResponse, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; - return { - id: repository.id, - error: { code: "noReleasesFound" }, - }; + const details = await this.getDetailsAsync(api, identifier); + + return { success: true, data: { ...details, ...latestRelease } }; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + localLogger.warn(`Failed to get releases for ${identifier} with Gitlab integration`, { + identifier, + error: errorMessage, + }); + return { success: false, error: { code: "unexpected", message: errorMessage } }; } } @@ -112,7 +108,7 @@ export class GitlabIntegration extends Integration implements ReleasesProviderIn return { projectUrl: response.web_url, - projectDescription: response.description, + projectDescription: response.description ?? undefined, isFork: response.forked_from_project !== null, isArchived: response.archived, createdAt: new Date(response.created_at), diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index 9e35a4932..c23aa00b7 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -38,7 +38,7 @@ export type { FirewallMemorySummary, } from "./interfaces/firewall-summary/firewall-summary-types"; export type { SystemHealthMonitoring } from "./interfaces/health-monitoring/health-monitoring-types"; -export { MediaRequestStatus } from "./interfaces/media-requests/media-request-types"; +export { UpstreamMediaRequestStatus } from "./interfaces/media-requests/media-request-types"; export type { MediaRequestList, MediaRequestStats } from "./interfaces/media-requests/media-request-types"; export type { StreamSession } from "./interfaces/media-server/media-server-types"; export type { @@ -47,7 +47,7 @@ export type { TdarrStatistics, TdarrWorker, } from "./interfaces/media-transcoding/media-transcoding-types"; -export type { ReleasesResponse } from "./interfaces/releases-providers/releases-providers-types"; +export type { ReleasesRepository, ReleaseResponse } from "./interfaces/releases-providers/releases-providers-types"; export type { Notification } from "./interfaces/notifications/notification-types"; // Schemas diff --git a/packages/integrations/src/interfaces/downloads/download-client-items.ts b/packages/integrations/src/interfaces/downloads/download-client-items.ts index 2fed74538..a700cd5d4 100644 --- a/packages/integrations/src/interfaces/downloads/download-client-items.ts +++ b/packages/integrations/src/interfaces/downloads/download-client-items.ts @@ -26,6 +26,8 @@ export const downloadClientItemSchema = z.object({ size: z.number(), /** Total uploaded in Bytes, only required for Torrent items */ sent: z.number().optional(), + /** Total downloaded in Bytes, only required for Torrent items */ + received: z.number().optional(), /** Download speed in Bytes/s, only required if not complete * (Says 0 only if it should be downloading but isn't) */ downSpeed: z.number().optional(), diff --git a/packages/integrations/src/interfaces/media-requests/media-request-types.ts b/packages/integrations/src/interfaces/media-requests/media-request-types.ts index 15910eaf5..4d7b094ff 100644 --- a/packages/integrations/src/interfaces/media-requests/media-request-types.ts +++ b/packages/integrations/src/interfaces/media-requests/media-request-types.ts @@ -1,3 +1,5 @@ +import { objectKeys } from "@homarr/common"; + interface SerieSeason { id: number; seasonNumber: number; @@ -34,6 +36,64 @@ export interface MediaRequest { requestedBy?: Omit; } +export const mediaAvailabilityConfiguration = { + available: { + color: "green", + }, + partiallyAvailable: { + color: "yellow", + }, + processing: { + color: "blue", + }, + requested: { + color: "violet", + }, + pending: { + color: "violet", + }, + unknown: { + color: "orange", + }, + deleted: { + color: "red", + }, + blacklisted: { + color: "gray", + }, +} satisfies Record; + +export const mediaAvailabilities = objectKeys(mediaAvailabilityConfiguration); + +export type MediaAvailability = (typeof mediaAvailabilities)[number]; + +export const mediaRequestStatusConfiguration = { + pending: { + color: "blue", + position: 1, + }, + approved: { + color: "green", + position: 2, + }, + declined: { + color: "red", + position: 3, + }, + failed: { + color: "red", + position: 4, + }, + completed: { + color: "green", + position: 5, + }, +} satisfies Record; + +export const mediaRequestStatuses = objectKeys(mediaRequestStatusConfiguration); + +export type MediaRequestStatus = (typeof mediaRequestStatuses)[number]; + export interface MediaRequestList { integration: { id: string; @@ -66,7 +126,7 @@ export interface MediaRequestStats { } // https://github.com/fallenbagel/jellyseerr/blob/0fd03f38480f853e7015ad9229ed98160e37602e/server/constants/media.ts#L1 -export enum MediaRequestStatus { +export enum UpstreamMediaRequestStatus { PendingApproval = 1, Approved = 2, Declined = 3, @@ -75,12 +135,12 @@ export enum MediaRequestStatus { } // https://github.com/fallenbagel/jellyseerr/blob/0fd03f38480f853e7015ad9229ed98160e37602e/server/constants/media.ts#L14 -export enum MediaAvailability { +export enum UpstreamMediaAvailability { Unknown = 1, Pending = 2, Processing = 3, PartiallyAvailable = 4, Available = 5, - Blacklisted = 6, - Deleted = 7, + JellyseerrBlacklistedOrOverseerrDeleted = 6, + JellyseerrDeleted = 7, } diff --git a/packages/integrations/src/interfaces/releases-providers/releases-providers-integration.ts b/packages/integrations/src/interfaces/releases-providers/releases-providers-integration.ts index 442c607f1..e94f555fc 100644 --- a/packages/integrations/src/interfaces/releases-providers/releases-providers-integration.ts +++ b/packages/integrations/src/interfaces/releases-providers/releases-providers-integration.ts @@ -1,47 +1,21 @@ -import type { - DetailsProviderResponse, - ReleaseProviderResponse, - ReleasesRepository, - ReleasesResponse, -} from "./releases-providers-types"; +import type { ReleaseProviderResponse, ReleaseResponse } from "./releases-providers-types"; export const getLatestRelease = ( releases: ReleaseProviderResponse[], - repository: ReleasesRepository, - details?: DetailsProviderResponse, -): ReleasesResponse => { + versionRegex?: string, +): ReleaseProviderResponse | null => { const validReleases = releases.filter((result) => { if (result.latestRelease) { - return repository.versionRegex ? new RegExp(repository.versionRegex).test(result.latestRelease) : true; + return versionRegex ? new RegExp(versionRegex).test(result.latestRelease) : true; } - return true; }); - const latest = - validReleases.length === 0 - ? ({ - id: repository.id, - error: { code: "noMatchingVersion" }, - } as ReleasesResponse) - : validReleases.reduce( - (latest, result) => { - return { - ...details, - ...(result.latestReleaseAt > latest.latestReleaseAt ? result : latest), - id: repository.id, - }; - }, - { - id: "", - latestRelease: "", - latestReleaseAt: new Date(0), - }, - ); - - return latest; + return validReleases.length === 0 + ? null + : validReleases.reduce((latest, current) => (current.latestReleaseAt > latest.latestReleaseAt ? current : latest)); }; export interface ReleasesProviderIntegration { - getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise; + getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise; } diff --git a/packages/integrations/src/interfaces/releases-providers/releases-providers-types.ts b/packages/integrations/src/interfaces/releases-providers/releases-providers-types.ts index 335c64dcb..fb89b0fcb 100644 --- a/packages/integrations/src/interfaces/releases-providers/releases-providers-types.ts +++ b/packages/integrations/src/interfaces/releases-providers/releases-providers-types.ts @@ -1,5 +1,11 @@ import type { TranslationObject } from "@homarr/translation"; +export interface ReleasesRepository extends Record { + id: string; + identifier: string; + versionRegex?: string; +} + export interface DetailsProviderResponse { projectUrl?: string; projectDescription?: string; @@ -19,35 +25,10 @@ export interface ReleaseProviderResponse { isPreRelease?: boolean; } -export interface ReleasesRepository { - id: string; - identifier: string; - versionRegex?: string; -} - type ReleasesErrorKeys = keyof TranslationObject["widget"]["releases"]["error"]["messages"]; -export interface ReleasesResponse { - id: string; - latestRelease?: string; - latestReleaseAt?: Date; - releaseUrl?: string; - releaseDescription?: string; - isPreRelease?: boolean; - projectUrl?: string; - projectDescription?: string; - isFork?: boolean; - isArchived?: boolean; - createdAt?: Date; - starsCount?: number; - openIssues?: number; - forksCount?: number; +export type ReleaseData = DetailsProviderResponse & ReleaseProviderResponse; - error?: - | { - code: ReleasesErrorKeys; - } - | { - message: string; - }; -} +export type ReleaseError = { code: ReleasesErrorKeys } | { code: "unexpected"; message: string }; + +export type ReleaseResponse = { success: true; data: ReleaseData } | { success: false; error: ReleaseError }; diff --git a/packages/integrations/src/jellyfin/jellyfin-integration.ts b/packages/integrations/src/jellyfin/jellyfin-integration.ts index b755f62f5..34fee79b6 100644 --- a/packages/integrations/src/jellyfin/jellyfin-integration.ts +++ b/packages/integrations/src/jellyfin/jellyfin-integration.ts @@ -15,7 +15,7 @@ import { Integration } from "../base/integration"; import type { TestingResult } from "../base/test-connection/test-connection-service"; import type { IMediaServerIntegration } from "../interfaces/media-server/media-server-integration"; import type { CurrentSessionsInput, StreamSession } from "../interfaces/media-server/media-server-types"; -import type { IMediaReleasesIntegration, MediaRelease } from "../types"; +import type { IMediaReleasesIntegration, MediaRelease, MediaType } from "../types"; @HandleIntegrationErrors([integrationAxiosHttpErrorHandler]) export class JellyfinIntegration extends Integration implements IMediaServerIntegration, IMediaReleasesIntegration { @@ -122,7 +122,7 @@ export class JellyfinIntegration extends Integration implements IMediaServerInte return result.data.map((item) => ({ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion id: item.Id!, - type: item.Type === "Movie" ? "movie" : item.Type === "Series" ? "tv" : "unknown", + type: this.mapMediaReleaseType(item.Type), // eslint-disable-next-line @typescript-eslint/no-non-null-assertion title: item.Name!, subtitle: item.Taglines?.at(0), @@ -140,6 +140,27 @@ export class JellyfinIntegration extends Integration implements IMediaServerInte })); } + private mapMediaReleaseType(type: BaseItemKind | undefined): MediaType { + switch (type) { + case "Audio": + case "AudioBook": + case "MusicAlbum": + return "music"; + case "Book": + return "book"; + case "Episode": + case "Series": + case "Season": + return "tv"; + case "Movie": + return "movie"; + case "Video": + return "video"; + default: + return "unknown"; + } + } + /** * Constructs an ApiClient synchronously with an ApiKey or asynchronously * with a username and password. diff --git a/packages/integrations/src/jellyseerr/jellyseerr-integration.ts b/packages/integrations/src/jellyseerr/jellyseerr-integration.ts index c9e3a6193..eadb2b95f 100644 --- a/packages/integrations/src/jellyseerr/jellyseerr-integration.ts +++ b/packages/integrations/src/jellyseerr/jellyseerr-integration.ts @@ -1,3 +1,12 @@ +import type { MediaAvailability } from "../interfaces/media-requests/media-request-types"; +import { UpstreamMediaAvailability } from "../interfaces/media-requests/media-request-types"; import { OverseerrIntegration } from "../overseerr/overseerr-integration"; -export class JellyseerrIntegration extends OverseerrIntegration {} +export class JellyseerrIntegration extends OverseerrIntegration { + protected override mapAvailability(availability: UpstreamMediaAvailability, inProgress: boolean): MediaAvailability { + // Availability statuses are not exactly the same between Jellyseerr and Overseerr (Jellyseerr has "blacklisted" additionally (deleted is the same value in overseerr)) + if (availability === UpstreamMediaAvailability.JellyseerrBlacklistedOrOverseerrDeleted) return "blacklisted"; + if (availability === UpstreamMediaAvailability.JellyseerrDeleted) return "deleted"; + return super.mapAvailability(availability, inProgress); + } +} diff --git a/packages/integrations/src/linuxserverio/linuxserverio-integration.ts b/packages/integrations/src/linuxserverio/linuxserverio-integration.ts index b3039881d..8b5d1a69b 100644 --- a/packages/integrations/src/linuxserverio/linuxserverio-integration.ts +++ b/packages/integrations/src/linuxserverio/linuxserverio-integration.ts @@ -6,7 +6,7 @@ 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 { ReleasesProviderIntegration } from "../interfaces/releases-providers/releases-providers-integration"; -import type { ReleasesRepository, ReleasesResponse } from "../interfaces/releases-providers/releases-providers-types"; +import type { ReleaseResponse } from "../interfaces/releases-providers/releases-providers-types"; import { releasesResponseSchema } from "./linuxserverio-schemas"; const localLogger = logger.child({ module: "LinuxServerIOsIntegration" }); @@ -24,56 +24,44 @@ export class LinuxServerIOIntegration extends Integration implements ReleasesPro }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const [owner, name] = repository.identifier.split("/"); + private parseIdentifier(identifier: string) { + const [owner, name] = identifier.split("/"); if (!owner || !name) { localLogger.warn( - `Invalid identifier format. Expected 'owner/name', for ${repository.identifier} with LinuxServerIO integration`, - { - identifier: repository.identifier, - }, + `Invalid identifier format. Expected 'owner/name', for ${identifier} with LinuxServerIO integration`, + { identifier }, ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; + return null; } + return { owner, name }; + } + + public async getLatestMatchingReleaseAsync(identifier: string): Promise { + const { name } = this.parseIdentifier(identifier) ?? {}; + if (!name) return { success: false, error: { code: "invalidIdentifier" } }; const releasesResponse = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/images")); - if (!releasesResponse.ok) { - return { - id: repository.id, - error: { message: releasesResponse.statusText }, - }; + return { success: false, error: { code: "unexpected", message: releasesResponse.statusText } }; } const releasesResponseJson: unknown = await releasesResponse.json(); const { data, success, error } = releasesResponseSchema.safeParse(releasesResponseJson); - if (!success) { - return { - id: repository.id, - error: { - message: error.message, - }, - }; - } else { - const release = data.data.repositories.linuxserver.find((repo) => repo.name === name); - if (!release) { - localLogger.warn(`Repository ${name} not found on provider, with LinuxServerIO integration`, { - owner, - name, - }); + return { success: false, error: { code: "unexpected", message: error.message } }; + } - return { - id: repository.id, - error: { code: "noReleasesFound" }, - }; - } + const release = data.data.repositories.linuxserver.find((repo) => repo.name === name); + if (!release) { + localLogger.warn(`Repository ${name} not found on provider, with LinuxServerIO integration`, { + name, + }); + return { success: false, error: { code: "noMatchingVersion" } }; + } - return { - id: repository.id, + return { + success: true, + data: { latestRelease: release.version, latestReleaseAt: release.version_timestamp, releaseDescription: release.changelog?.shift()?.desc, @@ -82,7 +70,7 @@ export class LinuxServerIOIntegration extends Integration implements ReleasesPro isArchived: release.deprecated, createdAt: release.initial_date ? new Date(release.initial_date) : undefined, starsCount: release.stars, - }; - } + }, + }; } } diff --git a/packages/integrations/src/mock/data/media-request.ts b/packages/integrations/src/mock/data/media-request.ts index 5137177d8..2f134a8bb 100644 --- a/packages/integrations/src/mock/data/media-request.ts +++ b/packages/integrations/src/mock/data/media-request.ts @@ -1,8 +1,13 @@ -import { objectEntries } from "@homarr/common"; - import type { IMediaRequestIntegration } from "../../interfaces/media-requests/media-request-integration"; -import type { MediaInformation, MediaRequest, RequestStats, RequestUser } from "../../types"; -import { MediaAvailability, MediaRequestStatus } from "../../types"; +import type { + MediaAvailability, + MediaInformation, + MediaRequest, + MediaRequestStatus, + RequestStats, + RequestUser, +} from "../../types"; +import { mediaAvailabilities, mediaRequestStatuses } from "../../types"; export class MediaRequestMockService implements IMediaRequestIntegration { public async getSeriesInformationAsync(mediaType: "movie" | "tv", id: number): Promise { @@ -86,12 +91,10 @@ export class MediaRequestMockService implements IMediaRequestIntegration { } private static randomAvailability(): MediaAvailability { - const values = objectEntries(MediaAvailability).filter(([key]) => typeof key === "number"); - return values[Math.floor(Math.random() * values.length)]?.[1] ?? MediaAvailability.Available; + return mediaAvailabilities.at(Math.floor(Math.random() * mediaAvailabilities.length)) ?? "unknown"; } private static randomStatus(): MediaRequestStatus { - const values = objectEntries(MediaRequestStatus).filter(([key]) => typeof key === "number"); - return values[Math.floor(Math.random() * values.length)]?.[1] ?? MediaRequestStatus.PendingApproval; + return mediaRequestStatuses.at(Math.floor(Math.random() * mediaRequestStatuses.length)) ?? "pending"; } } diff --git a/packages/integrations/src/npm/npm-integration.ts b/packages/integrations/src/npm/npm-integration.ts index f82e0ba22..13a307467 100644 --- a/packages/integrations/src/npm/npm-integration.ts +++ b/packages/integrations/src/npm/npm-integration.ts @@ -6,7 +6,7 @@ import { TestConnectionError } from "../base/test-connection/test-connection-err import type { TestingResult } from "../base/test-connection/test-connection-service"; import type { ReleasesProviderIntegration } from "../interfaces/releases-providers/releases-providers-integration"; import { getLatestRelease } from "../interfaces/releases-providers/releases-providers-integration"; -import type { ReleasesRepository, ReleasesResponse } from "../interfaces/releases-providers/releases-providers-types"; +import type { ReleaseResponse } from "../interfaces/releases-providers/releases-providers-types"; import { releasesResponseSchema } from "./npm-schemas"; export class NPMIntegration extends Integration implements ReleasesProviderIntegration { @@ -22,35 +22,35 @@ export class NPMIntegration extends Integration implements ReleasesProviderInteg }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const releasesResponse = await fetchWithTrustedCertificatesAsync( - this.url(`/${encodeURIComponent(repository.identifier)}`), - ); + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + if (!identifier) return { success: false, error: { code: "invalidIdentifier" } }; + const releasesResponse = await fetchWithTrustedCertificatesAsync(this.url(`/${encodeURIComponent(identifier)}`)); if (!releasesResponse.ok) { - return { - id: repository.id, - error: { message: releasesResponse.statusText }, - }; + return { success: false, error: { code: "unexpected", message: releasesResponse.statusText } }; } const releasesResponseJson: unknown = await releasesResponse.json(); const { data, success, error } = releasesResponseSchema.safeParse(releasesResponseJson); - if (!success) { return { - id: repository.id, + success: false, error: { + code: "unexpected", message: releasesResponseJson ? JSON.stringify(releasesResponseJson, null, 2) : error.message, }, }; - } else { - const formattedReleases = data.time.map((tag) => ({ - ...tag, - releaseUrl: `https://www.npmjs.com/package/${encodeURIComponent(data.name)}/v/${encodeURIComponent(tag.latestRelease)}`, - releaseDescription: data.versions[tag.latestRelease]?.description ?? "", - })); - return getLatestRelease(formattedReleases, repository); } + + const formattedReleases = data.time.map((tag) => ({ + ...tag, + releaseUrl: `https://www.npmjs.com/package/${encodeURIComponent(data.name)}/v/${encodeURIComponent(tag.latestRelease)}`, + releaseDescription: data.versions[tag.latestRelease]?.description ?? "", + })); + + const latestRelease = getLatestRelease(formattedReleases, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; + + return { success: true, data: latestRelease }; } } diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index 88ba6239f..0127b2be6 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -9,8 +9,17 @@ import type { ISearchableIntegration } from "../base/searchable-integration"; import { TestConnectionError } from "../base/test-connection/test-connection-error"; import type { TestingResult } from "../base/test-connection/test-connection-service"; import type { IMediaRequestIntegration } from "../interfaces/media-requests/media-request-integration"; -import type { MediaRequest, RequestStats, RequestUser } from "../interfaces/media-requests/media-request-types"; -import { MediaAvailability, MediaRequestStatus } from "../interfaces/media-requests/media-request-types"; +import type { + MediaAvailability, + MediaRequest, + MediaRequestStatus, + RequestStats, + RequestUser, +} from "../interfaces/media-requests/media-request-types"; +import { + UpstreamMediaAvailability, + UpstreamMediaRequestStatus, +} from "../interfaces/media-requests/media-request-types"; interface OverseerrSearchResult { id: number; @@ -128,7 +137,7 @@ export class OverseerrIntegration if (pendingResults.length > 0 && allResults.length > 0) { requests = pendingResults.concat( - allResults.filter(({ status }) => status !== MediaRequestStatus.PendingApproval), + allResults.filter(({ status }) => status !== UpstreamMediaRequestStatus.PendingApproval), ); } else if (pendingResults.length > 0) requests = pendingResults; else if (allResults.length > 0) requests = allResults; @@ -137,11 +146,15 @@ export class OverseerrIntegration return await Promise.all( requests.map(async (request): Promise => { const information = await this.getItemInformationAsync(request.media.tmdbId, request.type); + + // See https://github.com/seerr-team/seerr/blob/af083a3cd5c3e3d5d7917fdf4fdd67fe3f39c46b/src/components/StatusBadge/index.tsx#L40 + const inProgress = (request.media.downloadStatus ?? []).length >= 1; + return { id: request.id, name: information.name, - status: request.status, - availability: request.media.status, + status: this.mapRequestStatus(request.status), + availability: this.mapAvailability(request.media.status, inProgress), backdropImageUrl: `https://image.tmdb.org/t/p/original/${information.backdropPath}`, posterImagePath: `https://image.tmdb.org/t/p/w600_and_h900_bestv2/${information.posterPath}`, href: this.externalUrl(`/${request.type}/${request.media.tmdbId}`).toString(), @@ -161,6 +174,42 @@ export class OverseerrIntegration ); } + protected mapRequestStatus(status: UpstreamMediaRequestStatus): MediaRequestStatus { + switch (status) { + case UpstreamMediaRequestStatus.PendingApproval: + return "pending"; + case UpstreamMediaRequestStatus.Approved: + return "approved"; + case UpstreamMediaRequestStatus.Declined: + return "declined"; + case UpstreamMediaRequestStatus.Failed: + return "failed"; + case UpstreamMediaRequestStatus.Completed: + return "completed"; + default: + return "failed"; + } + } + + // See https://github.com/seerr-team/seerr/blob/af083a3cd5c3e3d5d7917fdf4fdd67fe3f39c46b/src/components/StatusBadge/index.tsx#L153-L387 + protected mapAvailability(availability: UpstreamMediaAvailability, inProgress: boolean): MediaAvailability { + switch (availability) { + case UpstreamMediaAvailability.Available: + return inProgress ? "processing" : "available"; + case UpstreamMediaAvailability.PartiallyAvailable: + return inProgress ? "processing" : "partiallyAvailable"; + case UpstreamMediaAvailability.Processing: + return inProgress ? "processing" : "requested"; + case UpstreamMediaAvailability.Pending: + return "pending"; + case UpstreamMediaAvailability.JellyseerrBlacklistedOrOverseerrDeleted: + return "deleted"; + case UpstreamMediaAvailability.Unknown: + default: + return inProgress ? "processing" : "unknown"; + } + } + public async getStatsAsync(): Promise { const response = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/request/count"), { headers: { @@ -339,11 +388,12 @@ const getRequestsSchema = z.object({ .array( z.object({ id: z.number(), - status: z.nativeEnum(MediaRequestStatus), + status: z.enum(UpstreamMediaRequestStatus), createdAt: z.string().transform((value) => new Date(value)), media: z.object({ - status: z.nativeEnum(MediaAvailability), + status: z.enum(UpstreamMediaAvailability), tmdbId: z.number(), + downloadStatus: z.array(z.unknown()).optional(), }), type: z.enum(["movie", "tv"]), requestedBy: z diff --git a/packages/integrations/src/pi-hole/v6/pi-hole-integration-v6.ts b/packages/integrations/src/pi-hole/v6/pi-hole-integration-v6.ts index 2332d47bc..cf9b63599 100644 --- a/packages/integrations/src/pi-hole/v6/pi-hole-integration-v6.ts +++ b/packages/integrations/src/pi-hole/v6/pi-hole-integration-v6.ts @@ -17,7 +17,7 @@ import { dnsBlockingGetSchema, sessionResponseSchema, statsSummaryGetSchema } fr const localLogger = logger.child({ module: "PiHoleIntegrationV6" }); export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIntegration { - private readonly sessionStore: SessionStore; + private readonly sessionStore: SessionStore<{ sid: string | null }>; constructor(integration: IntegrationInput) { super(integration); @@ -28,7 +28,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn const response = await this.withAuthAsync(async (sessionId) => { return await fetchWithTrustedCertificatesAsync(this.url("/api/dns/blocking"), { headers: { - sid: sessionId, + sid: sessionId ?? undefined, }, }); }); @@ -46,7 +46,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn const response = await this.withAuthAsync(async (sessionId) => { return fetchWithTrustedCertificatesAsync(this.url("/api/stats/summary"), { headers: { - sid: sessionId, + sid: sessionId ?? undefined, }, }); }); @@ -85,7 +85,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn const response = await this.withAuthAsync(async (sessionId) => { return await fetchWithTrustedCertificatesAsync(this.url("/api/dns/blocking"), { headers: { - sid: sessionId, + sid: sessionId ?? undefined, }, body: JSON.stringify({ blocking: true }), method: "POST", @@ -101,7 +101,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn const response = await this.withAuthAsync(async (sessionId) => { return await fetchWithTrustedCertificatesAsync(this.url("/api/dns/blocking"), { headers: { - sid: sessionId, + sid: sessionId ?? undefined, }, body: JSON.stringify({ blocking: false, timer: duration }), method: "POST", @@ -118,12 +118,16 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn * @param callback * @returns */ - private async withAuthAsync(callback: (sessionId: string) => Promise) { + private async withAuthAsync(callback: (sessionId: string | null) => Promise) { + if (!super.hasSecretValue("apiKey")) { + return await callback(null); + } + const storedSession = await this.sessionStore.getAsync(); if (storedSession) { localLogger.debug("Using stored session for request", { integrationId: this.integration.id }); - const response = await callback(storedSession); + const response = await callback(storedSession.sid); if (response.status !== 401) { return response; } @@ -132,7 +136,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn } const sessionId = await this.getSessionAsync(); - await this.sessionStore.setAsync(sessionId); + await this.sessionStore.setAsync({ sid: sessionId }); const response = await callback(sessionId); return response; } @@ -141,11 +145,13 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn * Get a session id from the Pi-hole server * @returns The session id */ - private async getSessionAsync(fetchAsync: typeof undiciFetch = fetchWithTrustedCertificatesAsync): Promise { - const apiKey = super.getSecretValue("apiKey"); + private async getSessionAsync( + fetchAsync: typeof undiciFetch = fetchWithTrustedCertificatesAsync, + ): Promise { + const apiKey = super.hasSecretValue("apiKey") ? super.getSecretValue("apiKey") : null; const response = await fetchAsync(this.url("/api/auth"), { method: "POST", - body: JSON.stringify({ password: apiKey }), + body: JSON.stringify({ password: apiKey ?? "" }), headers: { "User-Agent": "Homarr", }, @@ -156,8 +162,13 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn const data = await response.json(); const result = await sessionResponseSchema.parseAsync(data); - if (!result.session.sid) { - throw new ResponseError({ status: 401, url: response.url }); + if (!result.session.valid) { + throw new ResponseError( + { status: 401, url: response.url }, + { + cause: result.session.message ? new Error(result.session.message) : undefined, + }, + ); } localLogger.info("Received session id successfully", { integrationId: this.integration.id }); @@ -170,9 +181,14 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn * @param sessionId The session id to remove */ private async clearSessionAsync( - sessionId: string, + sessionId: string | null, fetchAsync: typeof undiciFetch = fetchWithTrustedCertificatesAsync, ) { + if (!sessionId) { + localLogger.debug("No session id to clear"); + return; + } + const response = await fetchAsync(this.url("/api/auth"), { method: "DELETE", headers: { diff --git a/packages/integrations/src/pi-hole/v6/pi-hole-schemas-v6.ts b/packages/integrations/src/pi-hole/v6/pi-hole-schemas-v6.ts index 3be133aa9..34c7ea3c3 100644 --- a/packages/integrations/src/pi-hole/v6/pi-hole-schemas-v6.ts +++ b/packages/integrations/src/pi-hole/v6/pi-hole-schemas-v6.ts @@ -2,6 +2,7 @@ import { z } from "zod/v4"; export const sessionResponseSchema = z.object({ session: z.object({ + valid: z.boolean(), sid: z.string().nullable(), message: z.string().nullable(), }), diff --git a/packages/integrations/src/plex/plex-integration.ts b/packages/integrations/src/plex/plex-integration.ts index 982a617eb..ee5b9a6da 100644 --- a/packages/integrations/src/plex/plex-integration.ts +++ b/packages/integrations/src/plex/plex-integration.ts @@ -169,17 +169,15 @@ export class PlexIntegration extends Integration implements IMediaServerIntegrat protected async testingAsync(input: IntegrationTestingInput): Promise { const token = super.getSecretValue("apiKey"); - const response = await input.fetchAsync(this.url("/"), { + const response = await input.fetchAsync(super.url("/prefs"), { headers: { "X-Plex-Token": token, + Accept: "application/json", }, }); if (!response.ok) return TestConnectionError.StatusResult(response); - const result = await response.text(); - - await PlexIntegration.parseXmlAsync(result); return { success: true }; } diff --git a/packages/integrations/src/quay/quay-integration.ts b/packages/integrations/src/quay/quay-integration.ts index f84052315..f27349e6b 100644 --- a/packages/integrations/src/quay/quay-integration.ts +++ b/packages/integrations/src/quay/quay-integration.ts @@ -11,8 +11,7 @@ import type { ReleasesProviderIntegration } from "../interfaces/releases-provide import { getLatestRelease } from "../interfaces/releases-providers/releases-providers-integration"; import type { ReleaseProviderResponse, - ReleasesRepository, - ReleasesResponse, + ReleaseResponse, } from "../interfaces/releases-providers/releases-providers-types"; import { releasesResponseSchema } from "./quay-schemas"; @@ -43,20 +42,22 @@ export class QuayIntegration extends Integration implements ReleasesProviderInte }; } - public async getLatestMatchingReleaseAsync(repository: ReleasesRepository): Promise { - const [owner, name] = repository.identifier.split("/"); + private parseIdentifier(identifier: string) { + const [owner, name] = identifier.split("/"); if (!owner || !name) { - localLogger.warn( - `Invalid identifier format. Expected 'owner/name', for ${repository.identifier} with LinuxServerIO integration`, - { - identifier: repository.identifier, - }, - ); - return { - id: repository.id, - error: { code: "invalidIdentifier" }, - }; + localLogger.warn(`Invalid identifier format. Expected 'owner/name', for ${identifier} with Quay integration`, { + identifier, + }); + return null; } + return { owner, name }; + } + + public async getLatestMatchingReleaseAsync(identifier: string, versionRegex?: string): Promise { + const parsedIdentifier = this.parseIdentifier(identifier); + if (!parsedIdentifier) return { success: false, error: { code: "invalidIdentifier" } }; + + const { owner, name } = parsedIdentifier; const releasesResponse = await this.withHeadersAsync(async (headers) => { return await fetchWithTrustedCertificatesAsync( @@ -68,42 +69,29 @@ export class QuayIntegration extends Integration implements ReleasesProviderInte }, ); }); - if (!releasesResponse.ok) { - return { - id: repository.id, - error: { message: releasesResponse.statusText }, - }; + return { success: false, error: { code: "unexpected", message: releasesResponse.statusText } }; } const releasesResponseJson: unknown = await releasesResponse.json(); const { data, success, error } = releasesResponseSchema.safeParse(releasesResponseJson); - if (!success) { - return { - id: repository.id, - error: { - message: error.message, - }, - }; - } else { - const details = { - projectDescription: data.description, - }; - - const releasesProviderResponse = Object.entries(data.tags).reduce((acc, [_, tag]) => { - if (!tag.name || !tag.last_modified) return acc; - - acc.push({ - latestRelease: tag.name, - latestReleaseAt: new Date(tag.last_modified), - releaseUrl: `https://quay.io/repository/${encodeURIComponent(owner)}/${encodeURIComponent(name)}/tag/${encodeURIComponent(tag.name)}`, - }); - - return acc; - }, []); - - return getLatestRelease(releasesProviderResponse, repository, details); + return { success: false, error: { code: "unexpected", message: error.message } }; } + + const releasesProviderResponse = Object.entries(data.tags).reduce((acc, [_, tag]) => { + if (!tag.name || !tag.last_modified) return acc; + acc.push({ + latestRelease: tag.name, + latestReleaseAt: new Date(tag.last_modified), + releaseUrl: `https://quay.io/repository/${encodeURIComponent(owner)}/${encodeURIComponent(name)}/tag/${encodeURIComponent(tag.name)}`, + }); + return acc; + }, []); + + const latestRelease = getLatestRelease(releasesProviderResponse, versionRegex); + if (!latestRelease) return { success: false, error: { code: "noMatchingVersion" } }; + + return { success: true, data: { projectDescription: data.description, ...latestRelease } }; } } diff --git a/packages/log/package.json b/packages/log/package.json index 32b8418ec..8cc811cac 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -25,15 +25,15 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/core": "workspace:^0.1.0", - "superjson": "2.2.3", - "winston": "3.18.3", - "zod": "^4.1.12" + "superjson": "2.2.6", + "winston": "3.19.0", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index b09bde1de..79758343c 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.5", + "@mantine/core": "^8.3.10", "@tabler/icons-react": "^3.35.0", - "dayjs": "^1.11.18", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", - "zod": "^4.1.12" + "dayjs": "^1.11.19", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/modals-collection/src/apps/quick-add-app/quick-add-app-modal.tsx b/packages/modals-collection/src/apps/quick-add-app/quick-add-app-modal.tsx index 500e8540b..617bf6403 100644 --- a/packages/modals-collection/src/apps/quick-add-app/quick-add-app-modal.tsx +++ b/packages/modals-collection/src/apps/quick-add-app/quick-add-app-modal.tsx @@ -2,7 +2,6 @@ import type { z } from "zod/v4"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; -import type { MaybePromise } from "@homarr/common/types"; import { AppForm } from "@homarr/forms-collection"; import { createModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; @@ -10,7 +9,7 @@ import { useI18n, useScopedI18n } from "@homarr/translation/client"; import type { appManageSchema } from "@homarr/validation/app"; interface QuickAddAppModalProps { - onClose: (createdApp: Omit) => MaybePromise; + onClose: (createdApp: Omit) => void; } export const QuickAddAppModal = createModal(({ actions, innerProps }) => { @@ -28,13 +27,13 @@ export const QuickAddAppModal = createModal(({ actions, i const handleSubmit = (values: z.infer) => { mutate(values, { - async onSuccess(app) { + onSuccess(app) { showSuccessNotification({ title: tScoped("success.title"), message: tScoped("success.message"), }); - await innerProps.onClose(app); + innerProps.onClose(app); actions.closeModal(); }, }); diff --git a/packages/modals-collection/src/boards/duplicate-board-modal.tsx b/packages/modals-collection/src/boards/duplicate-board-modal.tsx index 441e16edf..85cfaed17 100644 --- a/packages/modals-collection/src/boards/duplicate-board-modal.tsx +++ b/packages/modals-collection/src/boards/duplicate-board-modal.tsx @@ -1,7 +1,7 @@ import { Button, Group, Stack, Text, TextInput } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; -import type { MaybePromise } from "@homarr/common/types"; +import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; @@ -15,7 +15,6 @@ interface InnerProps { id: string; name: string; }; - onSuccess: () => MaybePromise; } export const DuplicateBoardModal = createModal(({ actions, innerProps }) => { @@ -27,7 +26,11 @@ export const DuplicateBoardModal = createModal(({ actions, innerProp }, }); const boardNameStatus = useBoardNameStatus(form.values.name); - const { mutateAsync, isPending } = clientApi.board.duplicateBoard.useMutation(); + const { mutateAsync, isPending } = clientApi.board.duplicateBoard.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/boards"); + }, + }); return ( (({ actions, innerProp id: innerProps.board.id, }, { - async onSuccess() { + onSuccess() { actions.closeModal(); showSuccessNotification({ title: t("board.action.duplicate.notification.success.title"), message: t("board.action.duplicate.notification.success.message"), }); - await innerProps.onSuccess(); }, onError() { showErrorNotification({ diff --git a/packages/modals-collection/src/boards/import-board-modal.tsx b/packages/modals-collection/src/boards/import-board-modal.tsx index 1fd5cbfdf..3ddbd8324 100644 --- a/packages/modals-collection/src/boards/import-board-modal.tsx +++ b/packages/modals-collection/src/boards/import-board-modal.tsx @@ -65,7 +65,11 @@ export const ImportBoardModal = createModal(({ actions }) => { }, ); - const { mutateAsync, isPending } = clientApi.board.importOldmarrConfig.useMutation(); + const { mutateAsync, isPending } = clientApi.board.importOldmarrConfig.useMutation({ + async onSuccess() { + await revalidatePathActionAsync("/manage/boards"); + }, + }); const boardNameStatus = useBoardNameStatus(form.values.configuration.name); const handleSubmitAsync = async (values: { file: File; configuration: OldmarrImportConfiguration }) => { @@ -74,9 +78,8 @@ export const ImportBoardModal = createModal(({ actions }) => { formData.set("configuration", JSON.stringify(values.configuration)); await mutateAsync(formData, { - async onSuccess() { + onSuccess() { actions.closeModal(); - await revalidatePathActionAsync("/manage/boards"); showSuccessNotification({ title: tOldImport("notification.success.title"), message: tOldImport("notification.success.message"), diff --git a/packages/modals-collection/src/certificates/add-certificate-modal.tsx b/packages/modals-collection/src/certificates/add-certificate-modal.tsx index 100ee13cd..b414d0c6a 100644 --- a/packages/modals-collection/src/certificates/add-certificate-modal.tsx +++ b/packages/modals-collection/src/certificates/add-certificate-modal.tsx @@ -27,7 +27,11 @@ export const AddCertificateModal = createModal(({ actions, innerProp }, }, ); - const { mutateAsync } = clientApi.certificates.addCertificate.useMutation(); + const { mutateAsync } = clientApi.certificates.addCertificate.useMutation({ + async onSuccess() { + await innerProps.onSuccess?.(); + }, + }); return ( (({ actions, innerProp const formData = new FormData(); formData.set("file", values.file); await mutateAsync(formData, { - async onSuccess() { + onSuccess() { showSuccessNotification({ title: t("certificate.action.create.notification.success.title"), message: t("certificate.action.create.notification.success.message"), }); - await innerProps.onSuccess?.(); actions.closeModal(); }, onError() { diff --git a/packages/modals-collection/src/invites/invite-copy-modal.tsx b/packages/modals-collection/src/invites/invite-copy-modal.tsx index 08136af34..c8bdf4056 100644 --- a/packages/modals-collection/src/invites/invite-copy-modal.tsx +++ b/packages/modals-collection/src/invites/invite-copy-modal.tsx @@ -1,10 +1,10 @@ -import Link from "next/link"; import { usePathname } from "next/navigation"; import { Button, CopyButton, Mark, Stack, Text } from "@mantine/core"; import type { RouterOutputs } from "@homarr/api"; import { createModal } from "@homarr/modals"; import { useScopedI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; export const InviteCopyModal = createModal(({ actions, innerProps }) => { const t = useScopedI18n("management.page.user.invite"); diff --git a/packages/modals/package.json b/packages/modals/package.json index b92fa21a2..a153290c5 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.5", - "@mantine/hooks": "^8.3.5", - "react": "19.2.0" + "@mantine/core": "^8.3.10", + "@mantine/hooks": "^8.3.10", + "react": "19.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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 9c4dbce00..0770692fa 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.5", + "@mantine/notifications": "^8.3.10", "@tabler/icons-react": "^3.35.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 42dd7c8ce..e9f3638a3 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,14 +37,14 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.5", - "@mantine/hooks": "^8.3.5", + "@mantine/core": "^8.3.10", + "@mantine/hooks": "^8.3.10", "adm-zip": "0.5.16", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", - "superjson": "2.2.3", - "zod": "^4.1.12", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", + "superjson": "2.2.6", + "zod": "^4.1.13", "zod-form-data": "^3.0.1" }, "devDependencies": { @@ -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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/old-import/src/components/initial/token-modal.tsx b/packages/old-import/src/components/initial/token-modal.tsx index d519d312f..0bc5920f5 100644 --- a/packages/old-import/src/components/initial/token-modal.tsx +++ b/packages/old-import/src/components/initial/token-modal.tsx @@ -29,10 +29,10 @@ export const ImportTokenModal = createModal(({ actions, innerProps } mutate( { checksum: innerProps.checksum, token: values.token }, { - async onSuccess(isValid) { + onSuccess(isValid) { if (isValid) { actions.closeModal(); - await innerProps.onSuccessAsync(values.token); + void innerProps.onSuccessAsync(values.token); } else { showErrorNotification({ title: tTokenModal("notification.error.title"), diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index 098edf98f..5a5ec741f 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -23,13 +23,13 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/common": "workspace:^0.1.0", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index faf8eb871..364ca9f86 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index ce0c5a7e3..97df1742d 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -28,13 +28,13 @@ "@homarr/definitions": "workspace:^", "@homarr/log": "workspace:^", "ioredis": "5.8.2", - "superjson": "2.2.3" + "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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 2a420268a..0c3a0af88 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -26,20 +26,21 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", + "@homarr/docker": "workspace:^0.1.0", "@homarr/integrations": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", - "dayjs": "^1.11.18", - "octokit": "^5.0.4", - "superjson": "2.2.3", + "dayjs": "^1.11.19", + "octokit": "^5.0.5", + "superjson": "2.2.6", "undici": "7.16.0", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/request-handler/src/docker.ts b/packages/request-handler/src/docker.ts index cd82688d3..7a6d27be5 100644 --- a/packages/request-handler/src/docker.ts +++ b/packages/request-handler/src/docker.ts @@ -3,9 +3,9 @@ import type { ContainerInfo, ContainerStats } from "dockerode"; import { db, like, or } from "@homarr/db"; import { icons } from "@homarr/db/schema"; +import type { ContainerState } from "@homarr/docker"; +import { dockerLabels, DockerSingleton } from "@homarr/docker"; -import type { ContainerState } from "../../docker/src"; -import { DockerSingleton } from "../../docker/src"; import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler"; export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({ @@ -27,13 +27,11 @@ async function getContainersWithStatsAsync() { const containers = await Promise.all( dockerInstances.map(async ({ instance, host }) => { const instanceContainers = await instance.listContainers({ all: true }); - return instanceContainers.map((container) => ({ - ...container, - instance: host, - })); + return instanceContainers + .filter((container) => dockerLabels.hide in container.Labels === false) + .map((container) => ({ ...container, instance: host })); }), ).then((res) => res.flat()); - const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`)); const dbIcons = diff --git a/packages/request-handler/src/releases.ts b/packages/request-handler/src/releases.ts index 74158c05f..7bfd29348 100644 --- a/packages/request-handler/src/releases.ts +++ b/packages/request-handler/src/releases.ts @@ -1,36 +1,19 @@ import dayjs from "dayjs"; import type { IntegrationKindByCategory } from "@homarr/definitions"; -import { getIconUrl } from "@homarr/definitions"; -import type { ReleasesResponse } from "@homarr/integrations"; +import type { ReleaseResponse, ReleasesRepository } from "@homarr/integrations"; import { createIntegrationAsync } from "@homarr/integrations"; import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; export const releasesRequestHandler = createCachedIntegrationRequestHandler< - ReleasesResponse, + ReleaseResponse, IntegrationKindByCategory<"releasesProvider">, - { - id: string; - identifier: string; - versionRegex?: string; - } + ReleasesRepository >({ - async requestAsync(integration, input) { - const integrationInstance = await createIntegrationAsync(integration); - const response = await integrationInstance.getLatestMatchingReleaseAsync({ - id: input.id, - identifier: input.identifier, - versionRegex: input.versionRegex, - }); - - return { - ...response, - integration: { - name: integration.name, - iconUrl: getIconUrl(integration.kind), - }, - }; + requestAsync: async (integration, input) => { + const instance = await createIntegrationAsync(integration); + return instance.getLatestMatchingReleaseAsync(input.identifier, input.versionRegex); }, cacheDuration: dayjs.duration(5, "minutes"), queryKey: "repositoriesReleases", diff --git a/packages/request-handler/src/stock-price.ts b/packages/request-handler/src/stock-price.ts index 335e1a78e..420d26a6e 100644 --- a/packages/request-handler/src/stock-price.ts +++ b/packages/request-handler/src/stock-price.ts @@ -20,11 +20,19 @@ export const fetchStockPriceHandler = createCachedWidgetRequestHandler({ if (data.chart.result.length !== 1) { throw new Error("Received multiple results"); } - if (!data.chart.result[0]) { + const firstResult = data.chart.result[0]; + if (!firstResult) { throw new Error("Received invalid data"); } - - return data.chart.result[0]; + return { + priceHistory: + firstResult.indicators.quote[0]?.close.filter( + // Filter out null values from price arrays (Yahoo Finance returns null for missing data points) + (value) => value !== null && value !== undefined, + ) ?? [], + symbol: firstResult.meta.symbol, + shortName: firstResult.meta.shortName, + }; }, cacheDuration: dayjs.duration(5, "minutes"), }); @@ -43,7 +51,7 @@ const dataSchema = z indicators: z.object({ quote: z.array( z.object({ - close: z.array(z.number()), + close: z.array(z.number().nullish()), }), ), }), diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index d66f964c5..3e1411ac2 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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/settings/package.json b/packages/settings/package.json index 005b3ebf6..92d8fabe4 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -26,16 +26,16 @@ "@homarr/api": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/dates": "^8.3.5", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0" + "@mantine/dates": "^8.3.10", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 4bfca78fa..6ad01f633 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.5", - "@mantine/hooks": "^8.3.5", - "@mantine/spotlight": "^8.3.5", + "@mantine/core": "^8.3.10", + "@mantine/hooks": "^8.3.10", + "@mantine/spotlight": "^8.3.10", "@tabler/icons-react": "^3.35.0", - "jotai": "^2.15.0", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", + "jotai": "^2.15.2", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", "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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/spotlight/src/components/actions/items/children-action-item.tsx b/packages/spotlight/src/components/actions/items/children-action-item.tsx index 777446b78..f7c98c519 100644 --- a/packages/spotlight/src/components/actions/items/children-action-item.tsx +++ b/packages/spotlight/src/components/actions/items/children-action-item.tsx @@ -1,6 +1,7 @@ -import Link from "next/link"; import { Spotlight } from "@mantine/spotlight"; +import { Link } from "@homarr/ui"; + import type { inferSearchInteractionOptions } from "../../../lib/interaction"; import classes from "./action-item.module.css"; diff --git a/packages/spotlight/src/components/actions/items/group-action-item.tsx b/packages/spotlight/src/components/actions/items/group-action-item.tsx index a4221f514..d5f85f3be 100644 --- a/packages/spotlight/src/components/actions/items/group-action-item.tsx +++ b/packages/spotlight/src/components/actions/items/group-action-item.tsx @@ -1,7 +1,7 @@ -import Link from "next/link"; import { Spotlight } from "@mantine/spotlight"; import type { TranslationObject } from "@homarr/translation"; +import { Link } from "@homarr/ui"; import type { SearchGroup } from "../../../lib/group"; import type { inferSearchInteractionOptions } from "../../../lib/interaction"; diff --git a/packages/translation/package.json b/packages/translation/package.json index c2b232a98..dee4f50b8 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -29,19 +29,19 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", - "dayjs": "^1.11.18", + "dayjs": "^1.11.19", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.6", - "next-intl": "4.4.0", - "react": "19.2.0", - "react-dom": "19.2.0" + "next": "16.0.10", + "next-intl": "4.5.8", + "react": "19.2.1", + "react-dom": "19.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.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 5e67c3462..251b05c24 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 0819a4c92..e51894d33 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "现有", + "label": "选择现有应用" }, "new": { - "title": "", + "title": "新建", "url": { - "label": "", - "description": "" + "label": "应用网址", + "description": "当从面板访问时应用将打开的网址" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "链接应用", + "remove": "取消连接", + "select": "选择要链接的应用" } } }, @@ -709,7 +709,7 @@ "description": "集成“{kind}”可以与搜索引擎一起使用。勾选此项可自动配置搜索引擎。" }, "app": { - "sectionTitle": "" + "sectionTitle": "关联的应用" }, "createApp": { "label": "创建应用", @@ -1051,7 +1051,7 @@ "add": "添加", "apply": "应用", "backToOverview": "返回概览", - "change": "", + "change": "更改", "create": "创建", "createAnother": "创建并重新开始", "edit": "编辑", @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker 状态", "description": "您的容器状态 (这个小部件只能用管理员权限添加)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "获取容器统计信息失败" } @@ -2232,6 +2248,7 @@ "unknown": "未知", "pending": "等待处理", "processing": "处理中", + "requested": "", "partiallyAvailable": "部分", "available": "可用", "blacklisted": "已列入黑名单", diff --git a/packages/translation/src/lang/cr.json b/packages/translation/src/lang/cr.json index 943409778..59bbea670 100644 --- a/packages/translation/src/lang/cr.json +++ b/packages/translation/src/lang/cr.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "crwdns3424:0crwdne3424:0", "description": "crwdns3426:0crwdne3426:0", - "option": {}, + "option": { + "enableRowSorting": { + "label": "crwdns3808:0crwdne3808:0" + }, + "defaultSort": { + "label": "crwdns3810:0crwdne3810:0", + "option": { + "name": "crwdns3812:0crwdne3812:0", + "state": "crwdns3814:0crwdne3814:0", + "cpuUsage": "crwdns3816:0crwdne3816:0", + "memoryUsage": "crwdns3818:0crwdne3818:0" + } + }, + "descendingDefaultSort": { + "label": "crwdns3820:0crwdne3820:0" + } + }, "error": { "internalServerError": "crwdns3428:0crwdne3428:0" } @@ -2232,6 +2248,7 @@ "unknown": "crwdns1314:0crwdne1314:0", "pending": "crwdns1316:0crwdne1316:0", "processing": "crwdns1318:0crwdne1318:0", + "requested": "crwdns3806:0crwdne3806:0", "partiallyAvailable": "crwdns1320:0crwdne1320:0", "available": "crwdns1322:0crwdne1322:0", "blacklisted": "crwdns3468:0crwdne3468:0", diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 1b539a018..4cfe8f384 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Neznámý", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Částečně dostupné", "available": "K dispozici", "blacklisted": "", diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index abaca1718..1fc069004 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker statistik", "description": "Statistik for dine containere (Denne widget kan kun tilføjes med administratorrettigheder)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Kunne ikke hente containerstatistik" } @@ -2232,6 +2248,7 @@ "unknown": "Ukendt", "pending": "Afventende", "processing": "Behandler", + "requested": "Anmodet", "partiallyAvailable": "Delvis", "available": "Tilgængelig", "blacklisted": "Blacklistet", diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index 2e8d5f319..d2577803d 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Unbekannt", "pending": "Ausstehend", "processing": "In Bearbeitung", + "requested": "", "partiallyAvailable": "Teilweise", "available": "Verfügbar", "blacklisted": "", diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 3d57085d8..3479a7da6 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Vorhanden", + "label": "Vorhandene App auswählen" }, "new": { - "title": "", + "title": "Neu", "url": { - "label": "", - "description": "" + "label": "App URL", + "description": "Die URL, welche die App öffnet, sobald sie vom Dashboard aus aufgerufen wird" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Eine App verknüpfen", + "remove": "Verknüpfung aufheben", + "select": "Wählen Sie eine App zum Verknüpfen aus" } } }, @@ -709,7 +709,7 @@ "description": "Integration \"{kind}\" kann mit den Suchmaschinen verwendet werden. Wählen Sie dies, um die Suchmaschine automatisch zu konfigurieren." }, "app": { - "sectionTitle": "" + "sectionTitle": "Verknüpfte App" }, "createApp": { "label": "App erstellen", @@ -1051,7 +1051,7 @@ "add": "Hinzufügen", "apply": "Übernehmen", "backToOverview": "Zurück zur Übersicht", - "change": "", + "change": "Verändern", "create": "Erstellen", "createAnother": "Erstellen und neu starten", "edit": "Bearbeiten", @@ -1174,8 +1174,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/h", + "milesPerHour": "mph" } } }, @@ -1190,7 +1190,7 @@ "label": "Titel" }, "customCssClasses": { - "label": "" + "label": "Benutzerdefinierte CSS Klassen" }, "borderColor": { "label": "Rahmenfarbe" @@ -1780,7 +1780,7 @@ "description": "Nur bei aktuellem Wetter" }, "useImperialSpeed": { - "label": "" + "label": "Verwende miles per hour für die Windgeschwindigkeit" }, "location": { "label": "Wetterstandort" @@ -1800,12 +1800,12 @@ "description": "Wie das Datum aussehen sollte" } }, - "currentWindSpeed": "{currentWindSpeed} km/h", + "currentWindSpeed": "{currentWindSpeed} {unit}", "dailyForecast": { "sunrise": "Sonnenaufgang", "sunset": "Sonnenuntergang", - "maxWindSpeed": "Maximale Windgeschwindigkeit: {maxWindSpeed} km/h", - "maxWindGusts": "Maximale Windböen: {maxWindGusts} km/h" + "maxWindSpeed": "Maximale Windgeschwindigkeit: {maxWindSpeed} {unit}", + "maxWindGusts": "Maximale Windböen: {maxWindGusts} {unit}" }, "kind": { "clear": "Klar", @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker Statistiken", "description": "Statistiken Ihrer Container (Dieses Widget kann nur mit Administratorrechten hinzugefügt werden)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Fehler beim Abrufen der Container Statistiken" } @@ -2232,6 +2248,7 @@ "unknown": "Unbekannt", "pending": "Ausstehend", "processing": "In Bearbeitung", + "requested": "", "partiallyAvailable": "Teilweise", "available": "Verfügbar", "blacklisted": "Gesperrt", @@ -3013,8 +3030,8 @@ "integration": "Integrationen", "app": "Apps", "group": "Gruppen", - "searchEngine": "", - "media": "" + "searchEngine": "Suchmaschinen", + "media": "Medien" }, "statisticLabel": { "boards": "Boards", @@ -3023,8 +3040,8 @@ "authorization": "Autorisierung" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Willkommen zurück zu Ihrem", + "subtitle": "{app} Board" } }, "board": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 5d0b26de3..01610b5cc 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Άγνωστο", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Μερικώς", "available": "Διαθέσιμο", "blacklisted": "", diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index 0faef3089..f7bcf20cb 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -754,86 +754,86 @@ "notFound": "Not found", "tooManyRequests": "Too many requests", "internalServerError": "Internal server error", - "serviceUnavailable": "", - "gatewayTimeout": "" + "serviceUnavailable": "Service unavailable", + "gatewayTimeout": "Gateway timeout" } }, "certificate": { - "title": "", + "title": "Certificate error", "description": { - "expired": "", - "notYetValid": "", - "untrusted": "", - "hostnameMismatch": "" + "expired": "The certificate has expired.", + "notYetValid": "The certificate is not yet valid.", + "untrusted": "The certificate is not trusted.", + "hostnameMismatch": "The certificate hostname does not match the URL." }, "alert": { "permission": { - "title": "", - "message": "" + "title": "Not enough permissions", + "message": "You are not allowed to trust or upload certificates. Please contact your administrator to upload the necessary root certificate." }, "hostnameMismatch": { - "title": "", - "message": "" + "title": "Hostname mismatch", + "message": "The hostname in the certificate does not match the hostname you are connecting to. This could indicate a security risk, but you can still choose to trust this certificate." }, "extract": { - "title": "", - "message": "" + "title": "CA certificate extraction failed", + "message": "Only self-signed certificates without a chain can be fetched automatically. If you are using a self-signed certificate, please make sure to upload the CA certificate manually. You can find instructions on how to do this ." } }, "action": { "retry": { - "label": "" + "label": "Retry creation" }, "trust": { - "label": "" + "label": "Trust certificate" }, "upload": { - "label": "" + "label": "Upload certificate" } }, "hostnameMismatch": { "confirm": { - "title": "", - "message": "" + "title": "Trust hostname mismatch", + "message": "Are you sure you want to trust the certificate with a hostname mismatch?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Trusted certificate", + "message": "Added hostname to trusted certificate list" }, "error": { - "title": "", - "message": "" + "title": "Failed to trust certificate", + "message": "The certificate with a hostname mismatch could not be trusted" } } }, "selfSigned": { "confirm": { - "title": "", - "message": "" + "title": "Trust self-signed certificate", + "message": "Are you sure you want to trust this self-signed certificate?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Trusted certificate", + "message": "Added certificate to trusted certificate list" }, "error": { - "title": "", - "message": "" + "title": "Failed to trust certificate", + "message": "Failed to add certificate to trusted certificate list" } } }, "details": { - "title": "", - "description": "", + "title": "Details", + "description": "Review the certificate information before deciding to trust it.", "content": { - "action": "", - "title": "" + "action": "Show content", + "title": "PEM Certificate" } } }, "request": { - "title": "", + "title": "Request error", "description": { "connection": { "hostUnreachable": "", @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", @@ -4456,50 +4473,50 @@ "title": "", "description": "", "noResults": { - "title": "" + "title": "There are no hostnames yet" }, - "toCertificates": "" + "toCertificates": "Certificates" } }, "action": { "create": { - "label": "", + "label": "Add certificate", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificate added", + "message": "The certificate was added successfully" }, "error": { - "title": "", - "message": "" + "title": "Failed to add certificate", + "message": "The certificate could not be added" } } }, "remove": { - "label": "", - "confirm": "", + "label": "Remove certificate", + "confirm": "Are you sure you want to remove the certificate?", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificate removed", + "message": "The certificate was removed successfully" }, "error": { - "title": "", - "message": "" + "title": "Certificate not removed", + "message": "The certificate could not be removed" } } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Remove trusted hostname", + "confirm": "Are you sure you want to remove this trusted hostname? This can cause some integrations to stop working.", "notification": { "success": { - "title": "", - "message": "" + "title": "Hostname removed", + "message": "The hostname was removed successfully" }, "error": { - "title": "", - "message": "" + "title": "Hostname not removed", + "message": "The hostname could not be removed" } } } @@ -4508,10 +4525,10 @@ "log": { "level": { "option": { - "debug": "", - "info": "", - "warn": "", - "error": "" + "debug": "Debug", + "info": "Info", + "warn": "Warn", + "error": "Error" } } } diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index deb14ac2d..517ecfea1 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker stats", "description": "Stats of your containers (This widget can only be added with administrator privileges)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "Enable items sorting" + }, + "defaultSort": { + "label": "Column used for sorting by default", + "option": { + "name": "Name", + "state": "State", + "cpuUsage": "CPU usage", + "memoryUsage": "Memory usage" + } + }, + "descendingDefaultSort": { + "label": "Invert sorting" + } + }, "error": { "internalServerError": "Failed to fetch containers stats" } @@ -2232,6 +2248,7 @@ "unknown": "Unknown", "pending": "Pending", "processing": "Processing", + "requested": "Requested", "partiallyAvailable": "Partial", "available": "Available", "blacklisted": "Blacklisted", diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index ffb18a030..ae157ab9f 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Estadísticas de Docker", "description": "Estadísticas de tus contenedores (Este widget sólo puede ser añadido con privilegios de administrador)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "No se pudo obtener las estadísticas de los contenedores" } @@ -2232,6 +2248,7 @@ "unknown": "Desconocido", "pending": "Pendiente", "processing": "Procesando", + "requested": "Solicitado", "partiallyAvailable": "Parcial", "available": "Disponible", "blacklisted": "Lista negra", diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 3b0adc11b..35a0c3430 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 7a75ae544..cf026c16e 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Statistiques de Docker", "description": "Statistiques de vos conteneurs (Ce widget ne peut être ajouté qu'avec les privilèges d'administrateur)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Impossible de récupérer les statistiques des conteneurs" } @@ -2232,6 +2248,7 @@ "unknown": "Inconnu", "pending": "En attente", "processing": "Traitement en cours", + "requested": "", "partiallyAvailable": "Partiel", "available": "Disponible", "blacklisted": "Sur la liste noire", diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index bb41d30dd..9f649304e 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "סטטיסטיקות דוקר", "description": "סטטיסטיקות של המכולות שלך (ניתן להוסיף ווידג'ט זה רק עם הרשאות מנהל)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "נכשל באחזור סטטיסטיקות המכולות" } @@ -2232,6 +2248,7 @@ "unknown": "לא ידוע", "pending": "בהמתנה", "processing": "מעבד", + "requested": "", "partiallyAvailable": "חלקי", "available": "זמין", "blacklisted": "ברשימה השחורה", diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 6a2a6e6dd..d95f0d554 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Nepoznato", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 8eb6b57c1..5069d1763 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Ismeretlen", "pending": "", "processing": "Feldolgozás", + "requested": "", "partiallyAvailable": "Részleges", "available": "Elérhető", "blacklisted": "", diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 0132af836..ba022d88a 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -653,10 +653,10 @@ "label": "Seleziona app esistente" }, "new": { - "title": "", + "title": "Nuovo", "url": { "label": "Url app", - "description": "" + "description": "L'Url che l'app aprirà quando vi si accede dalla dashboard" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Collega un'app", + "remove": "Scollega", + "select": "Seleziona un'app da collegare" } } }, @@ -709,7 +709,7 @@ "description": "Integrazione \"{kind}\" può essere utilizzato con i motori di ricerca. Selezionare questa opzione per configurare automaticamente il motore di ricerca." }, "app": { - "sectionTitle": "" + "sectionTitle": "App Collegata" }, "createApp": { "label": "Crea app", @@ -730,7 +730,7 @@ "error": { "common": { "cause": { - "title": "" + "title": "Causa con più dettagli" } }, "unknown": { @@ -738,7 +738,7 @@ "description": "Si è verificato un errore sconosciuto, apri la causa sottostante per vedere maggiori dettagli" }, "parse": { - "title": "", + "title": "Errore di analisi", "description": "La risposta non può essere analizzata. Si prega di verificare che l'URL stia puntando all'URL di base del servizio." }, "authorization": { @@ -959,8 +959,8 @@ "newLabel": "Nuovo ID token" }, "realm": { - "label": "", - "newLabel": "" + "label": "Dominio", + "newLabel": "Nuovo dominio" }, "personalAccessToken": { "label": "Token d'Accesso Personale", @@ -1051,9 +1051,9 @@ "add": "Aggiungi", "apply": "Applica", "backToOverview": "Torna alla panoramica", - "change": "", + "change": "Cambia", "create": "Crea", - "createAnother": "", + "createAnother": "Crea e ricomincia", "edit": "Modifica", "import": "Importa", "insert": "Inserisci", @@ -1389,8 +1389,8 @@ } }, "dnsHoleSummary": { - "name": "", - "description": "", + "name": "Riepilogo del filtraggio DNS", + "description": "Mostra il riepilogo del tuo filtro DNS", "option": { "layout": { "label": "Layout", @@ -1411,7 +1411,7 @@ } }, "error": { - "internalServerError": "", + "internalServerError": "Impossibile recuperare il riepilogo del filtro DNS", "integrationsDisconnected": "Nessun dato disponibile, tutte le integrazioni disconnesse" }, "data": { @@ -1423,7 +1423,7 @@ "domainsTooltip": "A causa di più integrazioni, Homarr non può calcolare il numero esatto di domini bloccati" }, "dnsHoleControls": { - "name": "", + "name": "Controlli del filtro DNS", "description": "Controlla PiHole o AdGuard dalla tua dashboard", "option": { "layout": { @@ -1445,7 +1445,7 @@ } }, "error": { - "internalServerError": "" + "internalServerError": "Impossibile controllare il DNS Hole" }, "controls": { "enableAll": "Abilita tutto", @@ -1514,7 +1514,7 @@ "label": "Indirizzo del server" }, "isBedrockServer": { - "label": "" + "label": "Server Bedrock" } }, "status": { @@ -1625,7 +1625,7 @@ } }, "error": { - "noUrl": "", + "noUrl": "Nessun URL iFrame fornito", "unsupportedProtocol": "L'URL fornito sta usando un protocollo non supportato. Si prega di utilizzare uno di ({supportedProtocols})", "noBrowerSupport": "Il tuo browser non supporta iframes. Aggiorna il tuo browser." } @@ -1664,7 +1664,7 @@ } }, "stockPrice": { - "name": "", + "name": "Prezzo delle azioni", "description": "Visualizza il prezzo attuale delle azioni di una società", "option": { "stock": { @@ -1835,7 +1835,7 @@ "title": "Index manager", "testAll": "Prova tutto", "error": { - "internalServerError": "" + "internalServerError": "Impossibile recuperare lo stato degli indicizzatori" } }, "healthMonitoring": { @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Statistiche del docker", "description": "Statistiche dei tuoi contenitori (questo widget può essere aggiunto solo con privilegi di amministratore)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Recupero statistiche container non riuscito" } @@ -2020,7 +2036,7 @@ "name": "Nome", "id": "Id", "metadata": { - "title": "", + "title": "Statistiche per nerd", "video": { "title": "Video", "resolution": "Risoluzione" @@ -2034,7 +2050,7 @@ "title": "Transcodifica", "container": "Container", "resolution": "Risoluzione", - "target": "" + "target": "Codec di destinazione" } } } @@ -2098,12 +2114,12 @@ "detailsTitle": "Categorie (Informazioni aggiuntive)" }, "downSpeed": { - "columnTitle": "", + "columnTitle": "Giù", "detailsTitle": "Velocità Di Download" }, "index": { "columnTitle": "#", - "detailsTitle": "" + "detailsTitle": "Indice corrente all'interno del client" }, "id": { "columnTitle": "Id" @@ -2112,22 +2128,22 @@ "columnTitle": "Integrazione" }, "name": { - "columnTitle": "" + "columnTitle": "Nome del job" }, "progress": { "columnTitle": "Avanzamento", - "detailsTitle": "" + "detailsTitle": "Avanzamento del download" }, "ratio": { "columnTitle": "Rapporto", "detailsTitle": "Rapporto torrent (ricevuti/inviati)" }, "received": { - "columnTitle": "", + "columnTitle": "Totale fuori servizio", "detailsTitle": "Totale scaricati" }, "sent": { - "columnTitle": "", + "columnTitle": "Totale operativo", "detailsTitle": "Totale Caricati" }, "size": { @@ -2136,7 +2152,7 @@ }, "state": { "columnTitle": "Stato", - "detailsTitle": "" + "detailsTitle": "Stato job" }, "time": { "columnTitle": "Ora di fine", @@ -2158,7 +2174,7 @@ "completed": "Completato", "failed": "Non riuscito", "processing": "In lavorazione", - "leeching": "", + "leeching": "Leeching", "stalled": "In stallo", "unknown": "Sconosciuto", "seeding": "Seeding" @@ -2205,7 +2221,7 @@ "label": "Mostra suggerimento descrizione" }, "showType": { - "label": "" + "label": "Mostra il badge del tipo di media" }, "showSource": { "label": "Mostra sorgente integrazione" @@ -2216,7 +2232,7 @@ } }, "mediaRequests-requestList": { - "name": "", + "name": "Elenco Richieste Media", "description": "Visualizza un elenco di tutte le richieste media dalla tua istanza Overseerr o Jellyseerr", "option": { "linksTargetNewTab": { @@ -2232,9 +2248,10 @@ "unknown": "Sconosciuto", "pending": "In sospeso", "processing": "In lavorazione", + "requested": "Richiesto", "partiallyAvailable": "Parziale", "available": "Disponibile", - "blacklisted": "", + "blacklisted": "In blacklist", "deleted": "Eliminato" }, "status": { @@ -2247,7 +2264,7 @@ "toBeDetermined": "TBD" }, "mediaRequests-requestStats": { - "name": "", + "name": "Statistiche Richiesta Media", "description": "Statistiche sulle richieste dei media", "option": {}, "titles": { @@ -2338,7 +2355,7 @@ "label": "Abilita RTL" }, "textLinesClamp": { - "label": "" + "label": "Limita le righe della descrizione" }, "maximumAmountPosts": { "label": "Limite di post" @@ -2353,11 +2370,11 @@ "description": "Visualizza un elenco della versione corrente dei repository dati con la versione regex specificata.", "option": { "newReleaseWithin": { - "label": "", + "label": "Nuova versione entro", "description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le nuove versioni." }, "staleReleaseWithin": { - "label": "", + "label": "Rilascio obsoleto entro", "description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le release obsolete." }, "showOnlyHighlighted": { @@ -2702,7 +2719,7 @@ "label": "Titolo della pagina" }, "metaTitle": { - "label": "" + "label": "Meta title" }, "logoImageUrl": { "label": "URL immagine del logo" @@ -2948,8 +2965,8 @@ "label": "Numero di colonne" }, "breakpoint": { - "label": "", - "description": "" + "label": "Breakpoint", + "description": "Il layout verrà utilizzato su tutti gli schermi più grandi di questo breakpoint fino al breakpoint più grande successivo." } } }, @@ -3013,7 +3030,7 @@ "integration": "Integrazioni", "app": "Applicazioni", "group": "Gruppi", - "searchEngine": "", + "searchEngine": "Motori di ricerca", "media": "Media" }, "statisticLabel": { @@ -3023,8 +3040,8 @@ "authorization": "Autorizzazione" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Bentornato sulla tua", + "subtitle": "{app} Board" } }, "board": { @@ -3322,7 +3339,7 @@ "label": "Analytics" }, "smartHomeEntityState": { - "label": "" + "label": "Stato dell'entità Smart Home" }, "ping": { "label": "Ping" @@ -3337,10 +3354,10 @@ "label": "Scaricamenti" }, "mediaRequestStats": { - "label": "" + "label": "Statistiche richieste media" }, "mediaRequestList": { - "label": "" + "label": "Elenco richieste media" }, "rssFeeds": { "label": "Feeds RSS" @@ -3349,16 +3366,16 @@ "label": "Gestione Indicizzatori" }, "healthMonitoring": { - "label": "" + "label": "Monitoraggio integrità del sistema" }, "dnsHole": { - "label": "" + "label": "Dati di filtraggio DNS" }, "updateChecker": { "label": "Controllo aggiornamenti" }, "mediaTranscoding": { - "label": "" + "label": "Transcodifica del media" }, "networkController": { "label": "Controller di rete" @@ -3435,10 +3452,10 @@ }, "trigger": { "success": { - "message": "" + "message": "Attività attivata con successo" }, "error": { - "message": "" + "message": "Impossibile attivare l'attività" } }, "enable": { @@ -3453,7 +3470,7 @@ }, "toggle": { "error": { - "message": "" + "message": "Impossibile attivare lo stato dell'attività" } } }, @@ -3510,19 +3527,19 @@ "subtitle": "{count} utilizzato nel Codice di Homarr" }, "hotkeys": { - "title": "", + "title": "Tasti di scelta rapida", "subtitle": "Scorciatoie da tastiera per migliorare il flusso di lavoro", "field": { "shortcut": "Scorciatoia", "action": "Azione" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Attiva la modalità di modifica della board", + "toggleColorScheme": "Attiva tema chiaro/scuro", + "saveNotebook": "Salva notebook (solo nel widget notebook)", + "openSpotlight": "Apri ricerca" }, - "note": "" + "note": "Suggerimento: 'Mod' si riferisce sia al tasto Ctrl che al tasto ⌘ su macOS" } } } @@ -3534,7 +3551,7 @@ "updated": "Aggiornato {when}", "search": "Cerca {count} container", "selected": "{selectCount} di {totalCount} containers selezionati", - "footer": "" + "footer": "Totale container {count}" }, "field": { "name": { @@ -3672,11 +3689,11 @@ "resources": { "title": "Risorse", "nodes": "Nodi", - "namespaces": "", + "namespaces": "Spazi dei nomi", "ingresses": "Ingressi", "services": "Servizi", "pods": "Pods", - "configmaps": "", + "configmaps": "ConfigMaps", "secrets": "Secrets", "volumes": "Volumi" } @@ -3721,7 +3738,7 @@ } }, "namespaces": { - "label": "", + "label": "Spazi dei nomi", "field": { "name": { "label": "Nome" @@ -3730,7 +3747,7 @@ "label": "Stato", "option": { "active": "Attivo", - "terminating": "" + "terminating": "Terminare" } }, "creationTimestamp": { @@ -3738,7 +3755,7 @@ } }, "table": { - "search": "" + "search": "Cerca {count} spazi dei nomi" } }, "ingresses": { @@ -3748,7 +3765,7 @@ "label": "Nome" }, "namespace": { - "label": "" + "label": "Spazio dei nomi" }, "className": { "label": "Nome classe" @@ -3761,7 +3778,7 @@ } }, "table": { - "search": "" + "search": "Cerca {count} ingresses" } }, "services": { @@ -3771,7 +3788,7 @@ "label": "Nome" }, "namespace": { - "label": "" + "label": "Spazio del nome" }, "type": { "label": "Tipo" @@ -3800,7 +3817,7 @@ "label": "Nome" }, "namespace": { - "label": "" + "label": "Spazio del nome" }, "image": { "label": "Immagine" @@ -3826,7 +3843,7 @@ "label": "Nome" }, "namespace": { - "label": "" + "label": "spazio del nome" }, "type": { "label": "tipo" @@ -3836,24 +3853,24 @@ } }, "table": { - "search": "" + "search": "Cerca {count} segreti" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { "label": "Nome" }, "namespace": { - "label": "" + "label": "namespace" }, "creationTimestamp": { "label": "Creato" } }, "table": { - "search": "" + "search": "Cerca {count} ConfigMaps" } }, "volumes": { @@ -3863,7 +3880,7 @@ "label": "Nome" }, "namespace": { - "label": "" + "label": "Namespace" }, "accessModes": { "label": "Modalità Di Accesso" @@ -3872,7 +3889,7 @@ "label": "Spazio di archiviazione" }, "storageClassName": { - "label": "" + "label": "Nome Classe Archivio" }, "volumeMode": { "label": "Modalità Volume" @@ -3888,7 +3905,7 @@ } }, "table": { - "search": "" + "search": "Cerca {count} volumi" } }, "error": { @@ -3989,7 +4006,7 @@ "label": "Nodi" }, "namespaces": { - "label": "" + "label": "Namespaces" }, "ingresses": { "label": "Ingressi" @@ -4001,7 +4018,7 @@ "label": "pods" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { "label": "Secrets" @@ -4092,7 +4109,7 @@ "option": { "colorScheme": { "light": "Passa al tema chiaro", - "dark": "Passa alla modalità scura" + "dark": "Passa al tema scuro" }, "language": { "label": "Cambia lingua", diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index d4da6b72c..1a5d961ea 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -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,7 +709,7 @@ "description": "連携機能 \"{kind}\" は、検索エンジンで使用できます。検索エンジンを自動的に設定するには、これにチェックを入れてください。" }, "app": { - "sectionTitle": "" + "sectionTitle": "リンクされたアプリ" }, "createApp": { "label": "アプリの作成", @@ -1051,7 +1051,7 @@ "add": "追加", "apply": "適用", "backToOverview": "概要に戻る", - "change": "", + "change": "変更する", "create": "作成", "createAnother": "作成・新規入力", "edit": "編集", @@ -1174,8 +1174,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/h", + "milesPerHour": "mph" } } }, @@ -1190,7 +1190,7 @@ "label": "タイトル" }, "customCssClasses": { - "label": "" + "label": "カスタム css クラス" }, "borderColor": { "label": "境界線の色" @@ -1780,7 +1780,7 @@ "description": "現在の天気のみ表示" }, "useImperialSpeed": { - "label": "" + "label": "風速にmphを使用する" }, "location": { "label": "天候の場所" @@ -1800,12 +1800,12 @@ "description": "日付がどのように見えるか" } }, - "currentWindSpeed": "時速 {currentWindSpeed} km", + "currentWindSpeed": "時速 {currentWindSpeed} {unit}", "dailyForecast": { "sunrise": "日出", "sunset": "日没", - "maxWindSpeed": "最大風速: {maxWindSpeed} km/h", - "maxWindGusts": "最大瞬間風速: {maxWindGusts} km/h" + "maxWindSpeed": "最大風速: {maxWindSpeed} {unit}", + "maxWindGusts": "最大瞬間風速: {maxWindGusts} {unit}" }, "kind": { "clear": "晴れ", @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Dockerのステータス", "description": "あなたのコンテナの統計(このウィジェットは管理者権限でのみ追加できます)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "コンテナステータスの取得に失敗しました" } @@ -2232,6 +2248,7 @@ "unknown": "不明", "pending": "保留中", "processing": "処理中", + "requested": "", "partiallyAvailable": "一部", "available": "利用可能", "blacklisted": "ブラックリスト", @@ -3013,8 +3030,8 @@ "integration": "連携機能", "app": "アプリ", "group": "グループ", - "searchEngine": "", - "media": "" + "searchEngine": "検索エンジン", + "media": "メディア" }, "statisticLabel": { "boards": "ボード", @@ -3023,8 +3040,8 @@ "authorization": "認可" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "おかえりなさい", + "subtitle": "{app} ボード" } }, "board": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index c063c2976..4c8d60e7b 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "알 수 없음", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 1b3a24fe9..c13cf090a 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Nežinoma", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Dalis", "available": "Galima", "blacklisted": "", diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 89dd729f4..67d38b028 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Nezināms", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Daļējs", "available": "Pieejams", "blacklisted": "", diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 0b6f73a4f..702646e08 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Bestaand", + "label": "Bestaande app selecteren" }, "new": { - "title": "", + "title": "Nieuw", "url": { - "label": "", - "description": "" + "label": "App URL", + "description": "De URL die de app opent als deze wordt geopend vanaf het dashboard" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Een app koppelen", + "remove": "Ontkoppelen", + "select": "Selecteer een app om te koppelen" } } }, @@ -709,7 +709,7 @@ "description": "Integratie \"{kind}\" kan worden gebruikt met de zoekmachines. Controleer dit om automatisch de zoekmachine te configureren." }, "app": { - "sectionTitle": "" + "sectionTitle": "Gekoppelde app" }, "createApp": { "label": "App aanmaken", @@ -739,40 +739,40 @@ }, "parse": { "title": "Parser fout", - "description": "" + "description": "Het antwoord kon niet worden verwerkt. Controleer of de URL verwijst naar de basis-URL van de service." }, "authorization": { "title": "Autorisatie fout", - "description": "" + "description": "Het verzoek is niet geautoriseerd. Controleer of de referenties correct zijn en of je ze hebt geconfigureerd met voldoende rechten." }, "statusCode": { - "title": "", - "description": "", + "title": "Antwoord fout", + "description": "Onverwachte {statusCode} ({reason}) reactie van . Controleer of de URL wijst naar de basis-URL van de integratie.", "otherDescription": "", "reason": { - "badRequest": "", - "notFound": "", - "tooManyRequests": "", - "internalServerError": "", - "serviceUnavailable": "", - "gatewayTimeout": "" + "badRequest": "Onjuist verzoek", + "notFound": "Niet gevonden", + "tooManyRequests": "Te veel verzoeken", + "internalServerError": "Interne server fout", + "serviceUnavailable": "Dienst niet beschikbaar", + "gatewayTimeout": "Gateway time-out" } }, "certificate": { - "title": "", + "title": "Certificaat fout", "description": { - "expired": "", - "notYetValid": "", - "untrusted": "", + "expired": "Het certificaat is verlopen.", + "notYetValid": "Het certificaat is nog niet geldig.", + "untrusted": "Het certificaat wordt niet vertrouwd.", "hostnameMismatch": "" }, "alert": { "permission": { - "title": "", + "title": "Onvoldoende rechten", "message": "" }, "hostnameMismatch": { - "title": "", + "title": "Hostnaam komt niet overeen", "message": "" }, "extract": { @@ -782,13 +782,13 @@ }, "action": { "retry": { - "label": "" + "label": "Opnieuw aanmaken proberen" }, "trust": { - "label": "" + "label": "Certificaat vertrouwen" }, "upload": { - "label": "" + "label": "Certificaat uploaden" } }, "hostnameMismatch": { @@ -798,7 +798,7 @@ }, "notification": { "success": { - "title": "", + "title": "Vertrouwd certificaat", "message": "" }, "error": { @@ -810,11 +810,11 @@ "selfSigned": { "confirm": { "title": "", - "message": "" + "message": "Weet je zeker dat je dit zelfondertekende certificaat wilt vertrouwen?" }, "notification": { "success": { - "title": "", + "title": "Vertrouwd certificaat", "message": "" }, "error": { @@ -824,16 +824,16 @@ } }, "details": { - "title": "", + "title": "Details", "description": "", "content": { - "action": "", - "title": "" + "action": "Inhoud weergeven", + "title": "PEM-certificaat" } } }, "request": { - "title": "", + "title": "Aanvraag fout", "description": { "connection": { "hostUnreachable": "", @@ -963,36 +963,36 @@ "newLabel": "Nieuwe Realm" }, "personalAccessToken": { - "label": "", - "newLabel": "" + "label": "Personal Access Token", + "newLabel": "Nieuwe Personal Access Token" }, "topic": { - "label": "", - "newLabel": "" + "label": "Onderwerp", + "newLabel": "Nieuw onderwerp" }, "url": { - "label": "", - "newLabel": "" + "label": "URL", + "newLabel": "Nieuwe URL" }, "opnsenseApiKey": { - "label": "", - "newLabel": "" + "label": "API-sleutel (Key)", + "newLabel": "Nieuwe API-sleutel (Key)" }, "opnsenseApiSecret": { - "label": "", - "newLabel": "" + "label": "API-sleutel (geheim)", + "newLabel": "Nieuwe API-sleutel (geheim)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "App ID", + "newLabel": "Nieuwe App ID" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "Installatie ID", + "newLabel": "Nieuwe installatie ID" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Privésleutel", + "newLabel": "Nieuwe privésleutel" } } }, @@ -1044,14 +1044,14 @@ } }, "common": { - "success": "", + "success": "Succes", "beta": "Beta", "error": "Fout", "action": { "add": "Toevoegen", "apply": "Toepassen", "backToOverview": "Terug naar overzicht", - "change": "", + "change": "Wijzigen", "create": "Aanmaken", "createAnother": "Aanmaken en opnieuw beginnen", "edit": "Bewerken", @@ -1063,7 +1063,7 @@ "cancel": "Annuleren", "delete": "Verwijderen", "discard": "Negeren", - "close": "", + "close": "Sluiten", "confirm": "Bevestigen", "continue": "Doorgaan", "previous": "Vorige", @@ -1174,8 +1174,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/u", + "milesPerHour": "mph" } } }, @@ -1190,7 +1190,7 @@ "label": "Titel" }, "customCssClasses": { - "label": "" + "label": "Aangepaste CSS-classes" }, "borderColor": { "label": "Randkleur" @@ -1288,7 +1288,7 @@ "label": "Integraties" }, "title": { - "label": "" + "label": "Titel" }, "customCssClasses": { "label": "Aangepaste CSS-classes" @@ -1321,21 +1321,21 @@ "label": "Statuscontrole inschakelen" }, "layout": { - "label": "", + "label": "Lay-out", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Horizontaal", + "row-reverse": "Horizontaal (omgekeerd)", + "column": "Verticaal", + "column-reverse": "Verticaal (omgekeerd)" } }, "descriptionDisplayMode": { - "label": "", + "label": "Beschrijving weergavemodus", "description": "", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Binnen widget", + "tooltip": "Als tooltip", + "hidden": "Verborgen" } } }, @@ -1584,11 +1584,11 @@ }, "placeholder": "", "dismiss": { - "title": "", + "title": "Wijzigingen weggooien?", "message": "", "action": { - "discard": "", - "keepEditing": "" + "discard": "Aanpassingen weggooien", + "keepEditing": "Blijven bewerken" } } }, @@ -1743,7 +1743,7 @@ "name": "Kalender", "description": "Gebeurtenissen van je integraties weergeven in een kalenderweergave binnen een bepaalde relatieve tijdsperiode", "duration": { - "allDay": "" + "allDay": "Gehele dag" }, "option": { "releaseType": { @@ -1780,7 +1780,7 @@ "description": "Alleen op het huidige weer" }, "useImperialSpeed": { - "label": "" + "label": "Gebruik mph voor windsnelheid" }, "location": { "label": "Weerlocatie" @@ -1800,12 +1800,12 @@ "description": "Hoe de datum eruit moet zien" } }, - "currentWindSpeed": "{currentWindSpeed} km/u", + "currentWindSpeed": "{currentWindSpeed} {unit}", "dailyForecast": { "sunrise": "Zonsopgang", "sunset": "Zonsondergang", - "maxWindSpeed": "Max. windsnelheid: {maxWindSpeed} km/u", - "maxWindGusts": "Max. windvlagen: {maxWindGusts} km/u" + "maxWindSpeed": "Max. windsnelheid: {maxWindSpeed} {unit}", + "maxWindGusts": "Max. windstoten: {maxWindGusts} {unit}" }, "kind": { "clear": "Wissen", @@ -1856,7 +1856,7 @@ "label": "Werkgeheugen info weergeven" }, "showUptime": { - "label": "" + "label": "Uptime weergeven" }, "fileSystem": { "label": "Bestandssysteem info weergeven" @@ -1865,7 +1865,7 @@ "label": "Standaard tab" }, "visibleClusterSections": { - "label": "" + "label": "Zichtbare cluster secties" }, "sectionIndicatorRequirement": { "label": "Sectie indicator vereiste" @@ -1937,9 +1937,25 @@ } }, "dockerContainers": { - "name": "", + "name": "Docker statistieken", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2010,7 +2026,7 @@ "description": "De huidige streams op je mediaservers weergeven", "option": { "showOnlyPlaying": { - "label": "", + "label": "Alleen huidig spelende weergeven", "description": "" } }, @@ -2020,21 +2036,21 @@ "name": "Naam", "id": "Id", "metadata": { - "title": "", + "title": "Statistieken voor nerds", "video": { - "title": "", - "resolution": "" + "title": "Video", + "resolution": "Resolutie" }, "audio": { - "title": "", - "channelCount": "", - "codec": "" + "title": "Audio", + "channelCount": "Audio kanalen", + "codec": "Audio codec" }, "transcoding": { - "title": "", - "container": "", - "resolution": "", - "target": "" + "title": "Transcodering", + "container": "Container", + "resolution": "Resolutie", + "target": "Doel codec" } } } @@ -2062,7 +2078,7 @@ "label": "Torrentvermeldingen weergeven die zijn gemarkeerd als voltooid" }, "showCompletedHttp": { - "label": "" + "label": "Diverse items gemarkeerd als voltooid weergeven" }, "activeTorrentThreshold": { "label": "Voltooide torrent verbergen onder deze drempel (in kiB/s)" @@ -2077,7 +2093,7 @@ "label": "Gebruik filter om ratio te berekenen" }, "limitPerIntegration": { - "label": "", + "label": "Beperk items per integratie", "description": "" } }, @@ -2187,32 +2203,32 @@ "globalRatio": "Globale verhouding" }, "mediaReleases": { - "name": "", + "name": "Media uitgaves", "description": "", "option": { "layout": { - "label": "", + "label": "Lay-out", "option": { "backdrop": { - "label": "" + "label": "Achtergrond" }, "poster": { - "label": "" + "label": "Poster" } } }, "showDescriptionTooltip": { - "label": "" + "label": "Beschrijving tooltip weergeven" }, "showType": { - "label": "" + "label": "Mediatype badge weergeven" }, "showSource": { - "label": "" + "label": "Bronintegratie weergeven" } }, "length": { - "duration": "" + "duration": "{length}min." } }, "mediaRequests-requestList": { @@ -2232,17 +2248,18 @@ "unknown": "Onbekend", "pending": "In afwachting", "processing": "Verwerken", + "requested": "Aangevraagd", "partiallyAvailable": "Gedeeltelijk", "available": "Beschikbaar", - "blacklisted": "", - "deleted": "" + "blacklisted": "Geblacklist", + "deleted": "Verwijderd" }, "status": { "pending": "In afwachting", "approved": "Goedgekeurd", "declined": "Afgewezen", "failed": "Mislukt", - "completed": "" + "completed": "Voltooid" }, "toBeDetermined": "TBD" }, @@ -2344,16 +2361,16 @@ "label": "Aantal berichtenlimiet" }, "hideDescription": { - "label": "" + "label": "Beschrijving verbergen" } } }, "releases": { - "name": "", + "name": "Uitgaves", "description": "", "option": { "newReleaseWithin": { - "label": "", + "label": "Nieuwe uitgave binnen", "description": "" }, "staleReleaseWithin": { @@ -2361,109 +2378,109 @@ "description": "" }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "Alleen gemarkeerde weergeven", + "description": "Alleen nieuwe of oude uitgaves weergeven. Zoals hierboven." }, "showDetails": { - "label": "" + "label": "Details weergeven" }, "showOnlyIcon": { - "label": "" + "label": "Alleen icoon weergeven" }, "topReleases": { - "label": "", + "label": "Top uitgaven", "description": "" }, "repositories": { - "label": "", + "label": "Repositories", "addRepository": { - "label": "" + "label": "Repository toevoegen" }, "importRepositories": { - "label": "", - "loading": "", - "noImagesFound": "", - "listFoundImages": "", - "listAlreadyImportedImages": "", - "allImagesAlreadyImported": "", + "label": "Importeren vanuit Docker", + "loading": "Docker images laden", + "noImagesFound": "Geen Docker images gevonden", + "listFoundImages": "Lijst van gevonden afbeeldingen", + "listAlreadyImportedImages": "Lijst van reeds geïmporteerde afbeeldingen", + "allImagesAlreadyImported": "Alle afbeeldingen al geïmporteerd", "onlyAdminCanImport": "", - "selectAll": "", - "deselectAll": "" + "selectAll": "Alles selecteren", + "deselectAll": "Alles deselecteren" }, "provider": { - "label": "" + "label": "Aanbieder" }, "identifier": { - "label": "", - "placeholder": "" + "label": "Identificator", + "placeholder": "Naam of Eigenaar/naam" }, "name": { - "label": "" + "label": "Naam" }, "versionFilter": { - "label": "", + "label": "Versie filter", "prefix": { - "label": "" + "label": "Voorvoegsel" }, "precision": { - "label": "", + "label": "Precisie", "options": { - "none": "" + "none": "Geen" } }, "suffix": { - "label": "" + "label": "Achtervoegsel" }, "regex": { - "label": "" + "label": "Reguliere expressie" } }, "edit": { - "label": "" + "label": "Bewerken" }, "editForm": { - "title": "", + "title": "Archief bewerken", "cancel": { - "label": "" + "label": "Annuleren" }, "confirm": { - "label": "" + "label": "Bevestigen" } }, "importForm": { - "title": "" + "title": "Importeren vanuit Docker" }, "example": { - "label": "" + "label": "Voorbeeld" }, "invalid": "", "noProvider": { - "label": "", + "label": "Geen aanbieder", "tooltip": "" } } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "markViewed": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "projectDescription": "", - "created": "", + "not-found": "Niet gevonden", + "pre-release": "Pre-release", + "archived": "Gearchiveerd", + "forked": "Geforked", + "starsCount": "Sterren", + "forksCount": "Forks", + "issuesCount": "Openstaande issues", + "markViewed": "Markeren als bekeken", + "openProjectPage": "Projectpagina openen", + "openReleasePage": "Uitgavepagina openen", + "releaseDescription": "Uitgave beschrijving", + "projectDescription": "Project beschrijving", + "created": "Aangemaakt", "error": { - "label": "", + "label": "Fout", "messages": { - "invalidIdentifier": "", - "noMatchingVersion": "", - "noReleasesFound": "", - "noProviderSeleceted": "", - "noProviderResponse": "" + "invalidIdentifier": "Ongeldige identificator", + "noMatchingVersion": "Geen overeenkomende versie gevonden", + "noReleasesFound": "Geen uitgaves gevonden", + "noProviderSeleceted": "Geen aanbieder geselecteerd", + "noProviderResponse": "Geen reactie van aanbieder" } } }, @@ -2476,7 +2493,7 @@ }, "error": { "integrationsDisconnected": "Geen gegevens beschikbaar, alle integraties verbroken", - "unknownContentOption": "Onbekende inhoudsoptie voor netwerkcontroller samenvatting widget:" + "unknownContentOption": "Onbekende inhoudsoptie voor netwerkcontroller samenvatting widget: " }, "name": "Netwerkcontroller samenvatting", "description": "Geeft de samenvatting weer van een netwerkcontroller (zoals UniFi Controller)" @@ -2513,7 +2530,7 @@ }, "error": { "integrationsDisconnected": "Geen gegevens beschikbaar, alle integraties verbroken", - "unknownContentOption": "Onbekende inhoudsoptie voor netwerkstatus widget:" + "unknownContentOption": "Onbekende inhoudsoptie voor netwerkstatus widget: " }, "name": "Netwerkstatus", "description": "Verbonden apparaten op een netwerk weergeven" @@ -2524,72 +2541,72 @@ } }, "firewall": { - "name": "", - "description": "", + "name": "Firewall bewaking", + "description": "Een overzicht van firewalls weergeven", "tab": { - "system": "", - "interfaces": "" + "system": "Systeem", + "interfaces": "Interfaces" }, "error": { - "internalServerError": "" + "internalServerError": "Kan geen gegevens van firewall krijgen" }, "option": { - "interfaces": "" + "interfaces": "Netwerkinterfaces om weer te geven" }, "widget": { - "fwname": "", - "version": "", - "versiontitle": "", - "cputitle": "", - "memorytitle": "", - "cpu": "", - "memory": "", + "fwname": "Naam", + "version": "Versie", + "versiontitle": "Versies", + "cputitle": "CPU-gebruik", + "memorytitle": "Geheugen gebruik", + "cpu": "Processor", + "memory": "Geheugen", "interfaces": { - "name": "", - "trans": "", - "recv": "", - "title": "" + "name": "naam", + "trans": "Uitgezonden", + "recv": "Ontvangen", + "title": "Netwerkinterfaces" } } }, "notifications": { - "name": "", + "name": "Meldingen", "description": "", - "noItems": "", + "noItems": "Geen meldingen om weer te geven.", "option": {} }, "systemResources": { - "name": "", - "description": "", + "name": "Systeembronnen", + "description": "CPU, geheugen, schijf en ander hardwaregebruik van je systeem", "option": { "hasShadow": { - "label": "" + "label": "Grafiekschaduw inschakelen" }, "visibleCharts": { - "label": "", - "description": "", + "label": "Zichtbare grafieken", + "description": "Selecteer de grafieken die je zichtbaar wilt maken.", "option": { - "cpu": "", - "memory": "", - "network": "" + "cpu": "Processor", + "memory": "Geheugen", + "network": "Netwerk" } }, "labelDisplayMode": { - "label": "", + "label": "Weergavemodus label", "option": { - "textWithIcon": "", - "text": "", - "icon": "", - "hidden": "" + "textWithIcon": "Tekst met icoon weergeven", + "text": "Alleen tekst weergeven", + "icon": "Alleen icoon weergeven", + "hidden": "Label verbergen" } } }, "card": { - "cpu": "", - "memory": "", - "network": "", - "up": "", - "down": "" + "cpu": "CPU", + "memory": "MEM", + "network": "NET", + "up": "OMHOOG", + "down": "OMLAAG" } } }, @@ -2778,7 +2795,7 @@ "label": "Icoon kleur" }, "clearColor": { - "label": "" + "label": "Kleur wissen" }, "customCss": { "label": "Aangepaste CSS voor dit bord", @@ -3013,8 +3030,8 @@ "integration": "Integraties", "app": "Apps", "group": "Groepen", - "searchEngine": "", - "media": "" + "searchEngine": "Zoekmachines", + "media": "Media" }, "statisticLabel": { "boards": "Borden", @@ -3023,8 +3040,8 @@ "authorization": "Authorisatie" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Welkom terug bij je", + "subtitle": "{app} bord" } }, "board": { @@ -3309,7 +3326,7 @@ "idle": "Niet actief", "running": "Actief", "error": "Fout", - "disabled": "" + "disabled": "Uitgeschakeld" }, "job": { "minecraftServerStatus": { @@ -3364,96 +3381,96 @@ "label": "Netwerkcontroller" }, "refreshNotifications": { - "label": "" + "label": "Melding updater" }, "dockerContainers": { - "label": "" + "label": "Docker containers" }, "firewallCpu": { - "label": "" + "label": "Firewall CPU" }, "firewallMemory": { - "label": "" + "label": "Firewall geheugen" }, "firewallVersion": { - "label": "" + "label": "Firewall versie" }, "firewallInterfaces": { - "label": "" + "label": "Firewall interfaces" }, "weather": { - "label": "" + "label": "Weer" } }, "interval": { - "seconds": "", - "minutes": "", - "hours": "", - "midnight": "", - "weeklyMonday": "", + "seconds": "Elke {interval, plural, one {}=1 {seconde} other {# seconden}}", + "minutes": "Elke {interval, plural, one {}=1 {minuut} other {# minuten}}", + "hours": "Elk {interval, plural, one {}=1 {uur} other {# uren}}", + "midnight": "Elke dag om middernacht", + "weeklyMonday": "Elke week op maandag", "update": { "success": { - "message": "" + "message": "Interval succesvol bijgewerkt" }, "error": { - "message": "" + "message": "Kon interval niet bijwerken" } } }, "settings": { - "title": "" + "title": "Taakinstellingen voor {jobName}" }, "field": { "name": { - "label": "" + "label": "Naam" }, "interval": { - "label": "" + "label": "Interval plannen" }, "lastExecution": { - "label": "" + "label": "Laatste uitvoering" }, "actions": { - "label": "" + "label": "Acties" } }, "table": { - "search": "" + "search": "{count} taken zoeken…" }, "action": { "refresh": { - "label": "" + "label": "Vernieuwen" } }, "refresh": { "success": { - "message": "" + "message": "Taken succesvol vernieuwd" }, "error": { - "message": "" + "message": "Kon taak niet vernieuwen" } }, "trigger": { "success": { - "message": "" + "message": "Taak succesvol geactiveerd" }, "error": { - "message": "" + "message": "Kon taak niet activeren" } }, "enable": { "success": { - "message": "" + "message": "Taak succesvol ingeschakeld" } }, "disable": { "success": { - "message": "" + "message": "Taak succesvol uitgeschakeld" } }, "toggle": { "error": { - "message": "" + "message": "Kon taakstatus niet togglen" } } }, @@ -3510,19 +3527,19 @@ "subtitle": "{count} gebruikt in de code van Homarr" }, "hotkeys": { - "title": "", - "subtitle": "", + "title": "Sneltoetsen", + "subtitle": "Sneltoetsen om je workflow te verbeteren", "field": { - "shortcut": "", - "action": "" + "shortcut": "Snelkoppeling", + "action": "Actie" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Bord berwerkingsmodus togglen", + "toggleColorScheme": "Lichte/donkere modus togglen", + "saveNotebook": "Notitieblok opslaan (alleen in widget notitieblok)", + "openSpotlight": "Zoeken openen" }, - "note": "" + "note": "Tip: Mod verwijst naar zowel de Ctrl-toets als de ⌘ toets op macOS" } } } @@ -3534,7 +3551,7 @@ "updated": "{when} bijgewerkt", "search": "{count} containers zoeken", "selected": "{selectCount} van {totalCount} containers geselecteerd", - "footer": "" + "footer": "Totaal {count} containers" }, "field": { "name": { @@ -3554,10 +3571,10 @@ }, "stats": { "cpu": { - "label": "" + "label": "Processor" }, "memory": { - "label": "" + "label": "Geheugen" } }, "containerImage": { @@ -3568,7 +3585,7 @@ } }, "action": { - "title": "", + "title": "Acties", "start": { "label": "Starten", "notification": { @@ -3978,7 +3995,7 @@ "tools": { "label": "Gereedschappen", "tasks": { - "label": "" + "label": "Taken" }, "docker": { "label": "Docker" @@ -4016,7 +4033,7 @@ "certificates": { "label": "Certificaten", "hostnames": { - "label": "" + "label": "Hostnamen" } } }, @@ -4417,25 +4434,25 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Hostnaam" }, "subject": { - "label": "" + "label": "Onderwerp" }, "issuer": { - "label": "" + "label": "Uitgever" }, "validFrom": { - "label": "" + "label": "Geldig vanaf" }, "validTo": { - "label": "" + "label": "Geldig tot" }, "serialNumber": { - "label": "" + "label": "Serienummer" }, "fingerprint": { - "label": "" + "label": "Vingerafdruk" } }, "page": { @@ -4446,19 +4463,19 @@ "title": "Er zijn nog geen certificaten" }, "invalid": { - "title": "", - "description": "" + "title": "Ongeldig certificaat", + "description": "Certificaat kon niet worden opgehaald" }, "expires": "Verloopt {when}", - "toHostnames": "" + "toHostnames": "Vertrouwde hostnamen" }, "hostnames": { - "title": "", - "description": "", + "title": "Hostnamen van vertrouwde certificaten", + "description": "Sommige certificaten staan het specifieke domein dat Homarr gebruikt niet toe om ze op te vragen, hierdoor worden alle vertrouwde hostnamen met hun certificaat-thumbprints gebruikt om deze beperkingen te omzeilen.", "noResults": { - "title": "" + "title": "Er zijn nog geen hostnamen" }, - "toCertificates": "" + "toCertificates": "Certificaten" } }, "action": { @@ -4490,16 +4507,16 @@ } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Vertrouwde hostnaam verwijderen", + "confirm": "Weet je zeker dat je deze vertrouwde hostnaam wilt verwijderen? Dit kan ervoor zorgen dat sommige integraties niet meer werken.", "notification": { "success": { - "title": "", - "message": "" + "title": "Hostnaam verwijderd", + "message": "De hostnaam is succesvol verwijderd" }, "error": { - "title": "", - "message": "" + "title": "Hostnaam niet verwijderd", + "message": "De hostnaam kon niet worden verwijderd" } } } @@ -4508,10 +4525,10 @@ "log": { "level": { "option": { - "debug": "", - "info": "", - "warn": "", - "error": "" + "debug": "Debug", + "info": "Informatie", + "warn": "Waarschuwing", + "error": "Fout" } } } diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index d4596df47..8254597a5 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Ukjent", "pending": "Pågår", "processing": "Prosesserer", + "requested": "", "partiallyAvailable": "Delvis", "available": "Tilgjengelig", "blacklisted": "", diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 1a806e7a8..fb3d10537 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Statystyki Dockera", "description": "Statystyki Twoich kontenerów (ten widżet można dodać tylko z uprawnieniami administratora)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Nie udało się pobrać statystyk kontenerów" } @@ -2232,6 +2248,7 @@ "unknown": "Nieznany", "pending": "Oczekujący", "processing": "Przetwarzanie", + "requested": "Żądanie", "partiallyAvailable": "Częściowy", "available": "Dostępne", "blacklisted": "Zablokowany", diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index dbc71a242..5d041362f 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -7,7 +7,7 @@ "description": "Para começar, por favor selecione como você deseja configurar sua instância Homarr.", "action": { "scratch": "Começar do zero", - "importOldmarr": "Importe de uma instância Homarr anterior a 1,0" + "importOldmarr": "Importe de uma instância Homarr anterior a 1.0" } }, "import": { @@ -307,12 +307,12 @@ "name": "Nome", "members": "Membros", "homeBoard": { - "label": "", - "description": "" + "label": "Quadro inicial", + "description": "Somente quadros acessíveis ao grupo podem ser selecionados" }, "mobileBoard": { - "label": "", - "description": "" + "label": "Quadro para celular", + "description": "Somente quadros acessíveis ao grupo podem ser selecionados" } }, "permission": { @@ -320,8 +320,8 @@ "title": "Administrador", "item": { "admin": { - "label": "", - "description": "" + "label": "Administrador", + "description": "Membros com essa permissão têm acesso total a todos os recursos e configurações" } } }, @@ -329,19 +329,19 @@ "title": "Aplicativos", "item": { "create": { - "label": "", - "description": "" + "label": "Criar aplicativo", + "description": "Permitir que membros criem aplicativos" }, "use-all": { - "label": "", - "description": "" + "label": "Usar todas aplicações", + "description": "Permitir que os membros adicionem qualquer aplicativo aos seus quadros" }, "modify-all": { - "label": "", + "label": "Modificar todos os aplicativos", "description": "" }, "full-all": { - "label": "", + "label": "Acesso completo a aplicativos", "description": "" } } @@ -410,7 +410,7 @@ "item": { "view-logs": { "label": "", - "description": "" + "description": "Permitir que os membros visualizem os registros" } } }, @@ -419,7 +419,7 @@ "item": { "create": { "label": "", - "description": "" + "description": "Permitir que os membros criem mecanismos de busca" }, "modify-all": { "label": "", @@ -547,19 +547,19 @@ "title": "Aplicativos", "noResults": { "title": "", - "action": "" + "action": "Crie seu primeiro aplicativo" } }, "create": { - "title": "", + "title": "Novo Aplicativo", "notification": { "success": { - "title": "", - "message": "" + "title": "Criado com sucesso", + "message": "O aplicativo foi criado com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Falha ao criar", + "message": "Não foi possível criar o aplicativo" } } }, @@ -618,9 +618,9 @@ "title": "" }, "create": { - "title": "", - "description": "", - "action": "" + "title": "Criar aplicativo", + "description": "Criar um aplicativo", + "action": "Abrir criação de aplicativo" }, "add": "" } @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Existente", + "label": "Selecione um aplicativo existente" }, "new": { - "title": "", + "title": "Novo", "url": { - "label": "", - "description": "" + "label": "URL da aplicação", + "description": "A URL do aplicativo será aberta quando acessada a partir do painel de controle" } } } @@ -712,8 +712,8 @@ "sectionTitle": "" }, "createApp": { - "label": "", - "description": "" + "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": "" @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -1973,8 +1989,8 @@ }, "app": { "noData": "", - "description": "", - "quickCreate": "" + "description": "Clique para criar um aplicativo", + "quickCreate": "Criar aplicativo em tempo real" }, "error": { "noIntegration": "", @@ -2232,6 +2248,7 @@ "unknown": "Desconhecido", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Parcial", "available": "Disponível", "blacklisted": "", @@ -2659,7 +2676,7 @@ }, "onlyImportApps": { "label": "", - "description": "" + "description": "Só adiciona os aplicativos, o quadro precisa ser recriado manualmente" } }, "name": { @@ -2692,8 +2709,8 @@ }, "quickCreateApp": { "modal": { - "title": "", - "createAndUse": "" + "title": "Criar aplicativo em tempo real", + "createAndUse": "Criar e utilizar" } } }, @@ -2911,7 +2928,7 @@ "title": "", "description": "", "link": "", - "notice": "" + "notice": "Para fazer esta página desaparecer, crie um quadro e defina-o como quadro inicial" }, "notFound": { "title": "", @@ -4109,7 +4126,7 @@ "label": "" }, "newApp": { - "label": "" + "label": "Criar aplicativo" }, "newIntegration": { "label": "", diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index e8101d110..78d495554 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Necunoscut", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Parțial", "available": "Disponibil", "blacklisted": "", diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 6933b3fd9..a2204f0aa 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Неизвестно", "pending": "В ожидании", "processing": "Обработка", + "requested": "", "partiallyAvailable": "Частично доступно", "available": "Доступно", "blacklisted": "", diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 177ea8aee..482696ee7 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker stav", "description": "Štatistiky vašich kontajnerov (Túto miniaplikáciu je možné pridať iba s oprávneniami správcu)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Nepodarilo sa načítať štatistiky kontajnerov" } @@ -2232,6 +2248,7 @@ "unknown": "Neznámy", "pending": "Čakajúce", "processing": "Spracovanie", + "requested": "", "partiallyAvailable": "Čiastočný", "available": "K dispozícii", "blacklisted": "", diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 36a201943..194997b1d 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Neznano", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "", "available": "", "blacklisted": "", diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index b8e8a738a..fd81d0ae6 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Okänd", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Delmängd", "available": "Tillgänglig", "blacklisted": "", diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index cbeddb5a5..628775c28 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "Docker istatistikleri", "description": "Konteynerlerinizin istatistikleri (Bu widget yalnızca yönetici ayrıcalıklarıyla eklenebilir)", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "Konteyner istatistikleri alınamadı" } @@ -2232,6 +2248,7 @@ "unknown": "Bilinmeyen", "pending": "Bekleyen", "processing": "İşlemde", + "requested": "", "partiallyAvailable": "Kısmi", "available": "Mevcut", "blacklisted": "Engellenenler", diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index dc1d422fa..e1f8194d2 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Невідомо", "pending": "В очікуванні", "processing": "В обробці", + "requested": "", "partiallyAvailable": "Частково доступно", "available": "Доступно", "blacklisted": "", diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 879bcb087..0eb514480 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "Không rõ", "pending": "", "processing": "", + "requested": "", "partiallyAvailable": "Một phần", "available": "Khả dụng", "blacklisted": "", diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 2b6491908..518ab5634 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1939,7 +1939,23 @@ "dockerContainers": { "name": "", "description": "", - "option": {}, + "option": { + "enableRowSorting": { + "label": "" + }, + "defaultSort": { + "label": "", + "option": { + "name": "", + "state": "", + "cpuUsage": "", + "memoryUsage": "" + } + }, + "descendingDefaultSort": { + "label": "" + } + }, "error": { "internalServerError": "" } @@ -2232,6 +2248,7 @@ "unknown": "未知", "pending": "等待處理中", "processing": "處理中", + "requested": "", "partiallyAvailable": "部分", "available": "待定", "blacklisted": "", diff --git a/packages/ui/package.json b/packages/ui/package.json index 05d2e504b..5e196b6b2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -30,14 +30,14 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.5", - "@mantine/dates": "^8.3.5", - "@mantine/hooks": "^8.3.5", + "@mantine/core": "^8.3.10", + "@mantine/dates": "^8.3.10", + "@mantine/hooks": "^8.3.10", "@tabler/icons-react": "^3.35.0", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", "svgson": "^5.3.1" }, "devDependencies": { @@ -45,7 +45,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/ui/src/components/index.tsx b/packages/ui/src/components/index.tsx index ff7201e28..717359dac 100644 --- a/packages/ui/src/components/index.tsx +++ b/packages/ui/src/components/index.tsx @@ -15,3 +15,4 @@ export { BetaBadge } from "./beta-badge"; export { MaskedImage } from "./masked-image"; export { MaskedOrNormalImage } from "./masked-or-normal-image"; export { LanguageIcon } from "./language-icon"; +export { Link } from "./link"; diff --git a/packages/ui/src/components/link.tsx b/packages/ui/src/components/link.tsx new file mode 100644 index 000000000..fe0f9ebf2 --- /dev/null +++ b/packages/ui/src/components/link.tsx @@ -0,0 +1,5 @@ +"use client"; + +import NextLink from "next/link"; + +export const Link = NextLink; diff --git a/packages/ui/src/components/select-with-custom-items.tsx b/packages/ui/src/components/select-with-custom-items.tsx index d3ff3dff8..b1fe554e4 100644 --- a/packages/ui/src/components/select-with-custom-items.tsx +++ b/packages/ui/src/components/select-with-custom-items.tsx @@ -10,8 +10,10 @@ interface BaseSelectItem { label: string; } -export interface SelectWithCustomItemsProps - extends Pick { +export interface SelectWithCustomItemsProps extends Pick< + SelectProps, + "label" | "error" | "defaultValue" | "value" | "onChange" | "placeholder" | "clearable" +> { data: TSelectItem[]; description?: string; withAsterisk?: boolean; diff --git a/packages/ui/src/components/table-pagination.tsx b/packages/ui/src/components/table-pagination.tsx index e2380f821..9b1fabb1f 100644 --- a/packages/ui/src/components/table-pagination.tsx +++ b/packages/ui/src/components/table-pagination.tsx @@ -1,11 +1,12 @@ "use client"; import { useCallback } from "react"; -import Link from "next/link"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; import type { PaginationProps } from "@mantine/core"; import { Pagination } from "@mantine/core"; +import { Link } from "@homarr/ui"; + interface TablePaginationProps { total: number; } diff --git a/packages/validation/package.json b/packages/validation/package.json index 9473824c6..5bfbaae16 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -24,14 +24,14 @@ "dependencies": { "@homarr/definitions": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", - "zod": "^4.1.12", + "zod": "^4.1.13", "zod-form-data": "^3.0.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/validation/src/user.ts b/packages/validation/src/user.ts index 788eb2750..c00d9226d 100644 --- a/packages/validation/src/user.ts +++ b/packages/validation/src/user.ts @@ -69,6 +69,17 @@ export const userSignInSchema = z.object({ password: z.string().min(1), }); +export const ldapSignInSchema = z.object({ + name: z + .string() + .min(1) + // Prevent special characters that could lead to LDAP injection attacks + .regex(/^[^\\,+<>;"=)(*|!&]+$/, { + message: "Invalid characters in ldap username", + }), + password: z.string().min(1), +}); + export const userRegistrationSchema = addConfirmPasswordRefinement( z.object({ username: usernameSchema, diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 1c9aa25ca..6043f903c 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -48,44 +48,44 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/charts": "^8.3.5", - "@mantine/core": "^8.3.5", - "@mantine/hooks": "^8.3.5", + "@mantine/charts": "^8.3.10", + "@mantine/core": "^8.3.10", + "@mantine/hooks": "^8.3.10", "@tabler/icons-react": "^3.35.0", - "@tiptap/extension-color": "2.26.4", - "@tiptap/extension-highlight": "2.26.4", - "@tiptap/extension-image": "2.26.4", - "@tiptap/extension-link": "^2.26.4", - "@tiptap/extension-placeholder": "^2.26.4", - "@tiptap/extension-table": "2.26.4", - "@tiptap/extension-table-cell": "2.26.4", - "@tiptap/extension-table-header": "2.26.4", - "@tiptap/extension-table-row": "2.26.4", - "@tiptap/extension-task-item": "2.26.4", - "@tiptap/extension-task-list": "2.26.4", - "@tiptap/extension-text-align": "2.26.4", - "@tiptap/extension-text-style": "2.26.4", - "@tiptap/extension-underline": "2.26.4", - "@tiptap/react": "^2.26.4", - "@tiptap/starter-kit": "^2.26.4", + "@tiptap/extension-color": "3.13.0", + "@tiptap/extension-highlight": "3.13.0", + "@tiptap/extension-image": "3.13.0", + "@tiptap/extension-link": "^3.13.0", + "@tiptap/extension-placeholder": "^3.13.0", + "@tiptap/extension-table": "3.13.0", + "@tiptap/extension-table-cell": "3.13.0", + "@tiptap/extension-table-header": "3.13.0", + "@tiptap/extension-table-row": "3.13.0", + "@tiptap/extension-task-item": "3.13.0", + "@tiptap/extension-task-list": "3.13.0", + "@tiptap/extension-text-align": "3.13.0", + "@tiptap/extension-text-style": "3.13.0", + "@tiptap/extension-underline": "3.13.0", + "@tiptap/react": "^3.13.0", + "@tiptap/starter-kit": "^3.13.0", "clsx": "^2.1.1", - "dayjs": "^1.11.18", + "dayjs": "^1.11.19", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.6", - "react": "19.2.0", - "react-dom": "19.2.0", + "next": "16.0.10", + "react": "19.2.1", + "react-dom": "19.2.1", "react-markdown": "^10.1.0", "recharts": "^2.15.4", "video.js": "^8.23.4", - "zod": "^4.1.12" + "zod": "^4.1.13" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/packages/widgets/src/_inputs/widget-app-input.tsx b/packages/widgets/src/_inputs/widget-app-input.tsx index 5f1a1b18a..4640a7889 100644 --- a/packages/widgets/src/_inputs/widget-app-input.tsx +++ b/packages/widgets/src/_inputs/widget-app-input.tsx @@ -1,7 +1,6 @@ "use client"; import { memo, useMemo } from "react"; -import Link from "next/link"; import type { SelectProps } from "@mantine/core"; import { Anchor, Button, Group, Loader, Select, SimpleGrid, Text } from "@mantine/core"; import { IconCheck, IconRocket } from "@tabler/icons-react"; @@ -12,6 +11,7 @@ import { useSession } from "@homarr/auth/client"; import { useModalAction } from "@homarr/modals"; import { QuickAddAppModal } from "@homarr/modals-collection"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import type { CommonWidgetInputProps } from "./common"; import { useWidgetInputTranslation } from "./common"; @@ -69,10 +69,10 @@ export const WidgetAppInput = ({ property, kind }: CommonWidgetInputProps<"app"> variant="default" onClick={() => openModal({ - // eslint-disable-next-line no-restricted-syntax - async onClose(createdAppId) { - await refetch(); - form.setFieldValue(`options.${property}`, createdAppId); + onClose(createdAppId) { + void refetch().then(() => { + form.setFieldValue(`options.${property}`, createdAppId); + }); }, }) } diff --git a/packages/widgets/src/docker/component.tsx b/packages/widgets/src/docker/component.tsx index a17d365ee..869b76f0b 100644 --- a/packages/widgets/src/docker/component.tsx +++ b/packages/widgets/src/docker/component.tsx @@ -56,6 +56,7 @@ const createColumns = ( t: ReturnType>, ): MRT_ColumnDef[] => [ { + id: "name", accessorKey: "name", header: t("field.name.label"), Cell({ renderedCellValue, row }) { @@ -70,6 +71,7 @@ const createColumns = ( }, }, { + id: "state", accessorKey: "state", size: 100, header: t("field.state.label"), @@ -78,6 +80,13 @@ const createColumns = ( }, }, { + id: "cpuUsage", + sortingFn: (rowA, rowB) => { + const cpuUsageA = safeValue(rowA.original.cpuUsage); + const cpuUsageB = safeValue(rowB.original.cpuUsage); + + return cpuUsageA - cpuUsageB; + }, accessorKey: "cpuUsage", size: 80, header: t("field.stats.cpu.label"), @@ -92,6 +101,13 @@ const createColumns = ( }, }, { + id: "memoryUsage", + sortingFn: (rowA, rowB) => { + const memoryUsageA = safeValue(rowA.original.memoryUsage); + const memoryUsageB = safeValue(rowB.original.memoryUsage); + + return memoryUsageA - memoryUsageB; + }, accessorKey: "memoryUsage", size: 80, header: t("field.stats.memory.label"), @@ -106,14 +122,20 @@ const createColumns = ( }, }, { + id: "actions", accessorKey: "actions", size: 80, header: t("action.title"), + enableSorting: false, Cell({ row }) { const utils = clientApi.useUtils(); - const { mutateAsync: startContainer } = clientApi.docker.startAll.useMutation(); - const { mutateAsync: stopContainer } = clientApi.docker.stopAll.useMutation(); - const { mutateAsync: restartContainer } = clientApi.docker.restartAll.useMutation(); + // eslint-disable-next-line no-restricted-syntax + const onSettled = async () => { + await utils.docker.getContainers.invalidate(); + }; + const { mutateAsync: startContainer } = clientApi.docker.startAll.useMutation({ onSettled }); + const { mutateAsync: stopContainer } = clientApi.docker.stopAll.useMutation({ onSettled }); + const { mutateAsync: restartContainer } = clientApi.docker.restartAll.useMutation({ onSettled }); const handleActionAsync = async (action: "start" | "stop" | "restart") => { const mutation = action === "start" ? startContainer : action === "stop" ? stopContainer : restartContainer; @@ -121,9 +143,6 @@ const createColumns = ( await mutation( { ids: [row.original.id] }, { - async onSettled() { - await utils.docker.getContainers.invalidate(); - }, onSuccess() { showSuccessNotification({ title: t(`action.${action}.notification.success.title`), @@ -167,7 +186,7 @@ const createColumns = ( }, ]; -export default function DockerWidget({ width }: WidgetComponentProps<"dockerContainers">) { +export default function DockerWidget({ options, width, isEditMode }: WidgetComponentProps<"dockerContainers">) { const t = useScopedI18n("docker"); const isTiny = width <= 256; @@ -191,8 +210,8 @@ export default function DockerWidget({ width }: WidgetComponentProps<"dockerCont enablePagination: false, enableTopToolbar: false, enableBottomToolbar: false, - enableSorting: false, enableColumnActions: false, + enableSorting: options.enableRowSorting && !isEditMode, enableStickyHeader: false, enableColumnOrdering: false, enableRowSelection: false, @@ -202,6 +221,7 @@ export default function DockerWidget({ width }: WidgetComponentProps<"dockerCont enableFilters: false, enableHiding: false, initialState: { + sorting: [{ id: options.defaultSort, desc: options.descendingDefaultSort }], density: "xs", }, mantinePaperProps: { diff --git a/packages/widgets/src/docker/index.ts b/packages/widgets/src/docker/index.ts index fa738023a..1a0964af3 100644 --- a/packages/widgets/src/docker/index.ts +++ b/packages/widgets/src/docker/index.ts @@ -1,12 +1,35 @@ import { IconBrandDocker, IconServerOff } from "@tabler/icons-react"; +import type { RouterOutputs } from "@homarr/api"; + import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; +const columnsList = [ + "name", + "state", + "cpuUsage", + "memoryUsage", +] as const satisfies (keyof RouterOutputs["docker"]["getContainers"]["containers"][number])[]; + export const { definition, componentLoader } = createWidgetDefinition("dockerContainers", { icon: IconBrandDocker, createOptions() { - return optionsBuilder.from(() => ({})); + return optionsBuilder.from((factory) => ({ + enableRowSorting: factory.switch({ + defaultValue: false, + }), + defaultSort: factory.select({ + defaultValue: "name", + options: columnsList.map((value) => ({ + value, + label: (t) => t(`widget.dockerContainers.option.defaultSort.option.${value}`), + })), + }), + descendingDefaultSort: factory.switch({ + defaultValue: false, + }), + })); }, errors: { INTERNAL_SERVER_ERROR: { diff --git a/packages/widgets/src/downloads/component.tsx b/packages/widgets/src/downloads/component.tsx index c875855ed..9af29da6d 100644 --- a/packages/widgets/src/downloads/component.tsx +++ b/packages/widgets/src/downloads/component.tsx @@ -36,6 +36,7 @@ import { IconX, } from "@tabler/icons-react"; import dayjs from "dayjs"; +import relativeTime from "dayjs/plugin/relativeTime"; import type { MRT_ColumnDef, MRT_VisibilityState } from "mantine-react-table"; import { MantineReactTable, useMantineReactTable } from "mantine-react-table"; @@ -48,6 +49,8 @@ import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; +dayjs.extend(relativeTime); + interface QuickFilter { integrationKinds: string[]; statuses: ExtendedDownloadClientItem["state"][]; @@ -188,14 +191,14 @@ export default function DownloadClientsWidget({ ) //Add extrapolated data and actions if user is allowed interaction .map((item): ExtendedDownloadClientItem => { - const received = Math.floor(item.size * item.progress); + const received = item.received ?? Math.floor(item.size * item.progress); const integrationIds = [pair.integration.id]; return { integration: pair.integration, ...item, category: item.category !== undefined && item.category.length > 0 ? item.category : undefined, received, - ratio: item.sent !== undefined ? item.sent / (received || 1) : undefined, + ratio: item.sent !== undefined ? item.sent / item.size : undefined, //Only add if permission to use mutations actions: integrationsWithInteractions.includes(pair.integration.id) ? { @@ -470,13 +473,16 @@ export default function DownloadClientsWidget({ return ( - {new Intl.NumberFormat("en", { style: "percent", notation: "compact", unitDisplay: "narrow" }).format( - progress, - )} + {new Intl.NumberFormat("en", { + style: "percent", + notation: "compact", + unitDisplay: "narrow", + roundingMode: "floor", + }).format(progress)} @@ -714,7 +720,10 @@ const ItemInfoModal = ({ items, currentIndex, opened, onClose }: ItemInfoModalPr /> {item.type !== "miscellaneous" && } - + )} diff --git a/packages/widgets/src/errors/base-component.tsx b/packages/widgets/src/errors/base-component.tsx index 65135acff..8d656f0c4 100644 --- a/packages/widgets/src/errors/base-component.tsx +++ b/packages/widgets/src/errors/base-component.tsx @@ -1,9 +1,9 @@ -import Link from "next/link"; import { Anchor, Button, Stack, Text } from "@mantine/core"; import type { stringOrTranslation } from "@homarr/translation"; import { translateIfNecessary } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import type { TablerIcon } from "@homarr/ui"; export interface BaseWidgetErrorProps { diff --git a/packages/widgets/src/iframe/component.tsx b/packages/widgets/src/iframe/component.tsx index ae8a2bcfa..67fa73536 100644 --- a/packages/widgets/src/iframe/component.tsx +++ b/packages/widgets/src/iframe/component.tsx @@ -11,8 +11,9 @@ import classes from "./component.module.css"; export default function IFrameWidget({ options, isEditMode }: WidgetComponentProps<"iframe">) { const t = useI18n(); - const { embedUrl, ...permissions } = options; + const { embedUrl, allowScrolling, ...permissions } = options; const allowedPermissions = getAllowedPermissions(permissions); + const sandboxFlags = getSandboxFlags(permissions); if (embedUrl.trim() === "") return ; if (!isSupportedProtocol(embedUrl)) { @@ -26,8 +27,9 @@ export default function IFrameWidget({ options, isEditMode }: WidgetComponentPro className={classes.iframe} src={embedUrl} title="widget iframe" - allow={allowedPermissions.join(" ")} - scrolling={options.allowScrolling ? "yes" : "no"} + allow={allowedPermissions} + scrolling={allowScrolling ? "yes" : "no"} + sandbox={sandboxFlags.join(" ")} > {t("widget.iframe.error.noBrowerSupport")} @@ -75,9 +77,35 @@ const UnsupportedProtocol = () => { const getAllowedPermissions = ( permissions: Omit["options"], "embedUrl" | "allowScrolling">, ) => { - return objectEntries(permissions) - .filter(([_key, value]) => value) - .map(([key]) => permissionMapping[key]); + return ( + objectEntries(permissions) + .filter(([_key, value]) => value) + // * means it applies to all origins + .map(([key]) => `${permissionMapping[key]} *`) + .join("; ") + ); +}; + +const getSandboxFlags = ( + permissions: Omit["options"], "embedUrl" | "allowScrolling">, +) => { + const baseSandbox = [ + "allow-scripts", + "allow-same-origin", + "allow-forms", + "allow-popups", + "allow-top-navigation-by-user-activation", + ]; + + if (permissions.allowFullScreen) { + baseSandbox.push("allow-presentation"); + } + + if (permissions.allowPayment) { + baseSandbox.push("allow-popups-to-escape-sandbox"); + } + + return baseSandbox; }; const permissionMapping = { diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index d148ff916..3015451bc 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -3,10 +3,11 @@ import { ActionIcon, Anchor, Avatar, Badge, Card, Group, Image, ScrollArea, Stack, Text, Tooltip } from "@mantine/core"; import { IconThumbDown, IconThumbUp } from "@tabler/icons-react"; +import type { RouterInputs, RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useRequiredBoard } from "@homarr/boards/context"; -import { MediaAvailability, MediaRequestStatus } from "@homarr/integrations/types"; -import type { ScopedTranslationFunction } from "@homarr/translation"; +import type { MediaRequestStatus } from "@homarr/integrations/types"; +import { mediaAvailabilityConfiguration, mediaRequestStatusConfiguration } from "@homarr/integrations/types"; import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../../definition"; @@ -18,7 +19,6 @@ export default function MediaServerWidget({ options, width, }: WidgetComponentProps<"mediaRequests-requestList">) { - const t = useScopedI18n("widget.mediaRequests-requestList"); const [mediaRequests] = clientApi.widget.mediaRequests.getLatestRequests.useSuspenseQuery( { integrationIds, @@ -48,20 +48,18 @@ export default function MediaServerWidget({ return dataB.createdAt.getTime() - dataA.createdAt.getTime(); } - return dataA.status - dataB.status; + return ( + mediaRequestStatusConfiguration[dataA.status].position - + mediaRequestStatusConfiguration[dataB.status].position + ); }); }); }, }, ); - const { mutate: mutateRequestAnswer } = clientApi.widget.mediaRequests.answerRequest.useMutation(); - const board = useRequiredBoard(); - if (mediaRequests.length === 0) throw new NoIntegrationDataError(); - const isTiny = width < 256; - return ( {mediaRequests.map((mediaRequest) => ( - - - - - - {!isTiny && ( - - )} - - - - - - {mediaRequest.airDate?.getFullYear() ?? t("toBeDetermined")} - - {!isTiny && ( - - {getAvailabilityProperties(mediaRequest.availability, t).label} - - )} - - - - - {(mediaRequest.requestedBy?.displayName ?? "") || "unknown"} - - - - - - {mediaRequest.name || "unknown"} - - {mediaRequest.status === MediaRequestStatus.PendingApproval ? ( - - - { - mutateRequestAnswer({ - integrationId: mediaRequest.integrationId, - requestId: mediaRequest.id, - answer: "approve", - }); - }} - > - - - - - { - mutateRequestAnswer({ - integrationId: mediaRequest.integrationId, - requestId: mediaRequest.id, - answer: "decline", - }); - }} - > - - - - - ) : ( - - )} - - - - - + request={mediaRequest} + isTiny={width <= 256} + options={options} + /> ))} ); } -const statusMapping = { - [MediaRequestStatus.PendingApproval]: { color: "blue", label: (t) => t("pending") }, - [MediaRequestStatus.Approved]: { color: "green", label: (t) => t("approved") }, - [MediaRequestStatus.Declined]: { color: "red", label: (t) => t("declined") }, - [MediaRequestStatus.Failed]: { color: "red", label: (t) => t("failed") }, - [MediaRequestStatus.Completed]: { color: "green", label: (t) => t("completed") }, -} satisfies Record< - MediaRequestStatus, - { - color: string; - label: (t: ScopedTranslationFunction<"widget.mediaRequests-requestList.status">) => string; - } ->; +interface MediaRequestCardProps { + request: RouterOutputs["widget"]["mediaRequests"]["getLatestRequests"][number]; + isTiny: boolean; + options: WidgetComponentProps<"mediaRequests-requestList">["options"]; +} + +const MediaRequestCard = ({ request, isTiny, options }: MediaRequestCardProps) => { + const board = useRequiredBoard(); + const t = useScopedI18n("widget.mediaRequests-requestList"); + + return ( + + + + + + {!isTiny && ( + + )} + + + + + + {request.airDate?.getFullYear() ?? t("toBeDetermined")} + + {!isTiny && ( + + {t(`availability.${request.availability}`)} + + )} + + + + + {(request.requestedBy?.displayName ?? "") || "unknown"} + + + + + + {request.name || "unknown"} + + {request.status === "pending" ? ( + + ) : ( + + )} + + + + + + ); +}; + +interface DecisionButtonsProps { + requestId: number; + integrationId: string; +} + +const DecisionButtons = ({ requestId, integrationId }: DecisionButtonsProps) => { + const { mutate: mutateRequestAnswer } = clientApi.widget.mediaRequests.answerRequest.useMutation(); + const t = useScopedI18n("widget.mediaRequests-requestList"); + const handleDecision = (answer: RouterInputs["widget"]["mediaRequests"]["answerRequest"]["answer"]) => { + mutateRequestAnswer({ + integrationId, + requestId, + answer, + }); + }; + + return ( + + + { + handleDecision("approve"); + }} + > + + + + + { + handleDecision("decline"); + }} + > + + + + + ); +}; interface StatusBadgeProps { status: MediaRequestStatus; } const StatusBadge = ({ status }: StatusBadgeProps) => { - const { color, label } = statusMapping[status]; const tStatus = useScopedI18n("widget.mediaRequests-requestList.status"); return ( - - {label(tStatus)} + + {tStatus(status)} ); }; - -function getAvailabilityProperties( - mediaRequestAvailability: MediaAvailability, - t: ScopedTranslationFunction<"widget.mediaRequests-requestList">, -) { - switch (mediaRequestAvailability) { - case MediaAvailability.Available: - return { color: "green", label: t("availability.available") }; - case MediaAvailability.PartiallyAvailable: - return { color: "yellow", label: t("availability.partiallyAvailable") }; - case MediaAvailability.Processing: - return { color: "blue", label: t("availability.processing") }; - case MediaAvailability.Pending: - return { color: "violet", label: t("availability.pending") }; - case MediaAvailability.Blacklisted: - return { color: "gray", label: t("availability.blacklisted") }; - case MediaAvailability.Deleted: - return { color: "red", label: t("availability.deleted") }; - default: - return { color: "orange", label: t("availability.unknown") }; - } -} diff --git a/packages/widgets/src/minecraft/server-status/component.tsx b/packages/widgets/src/minecraft/server-status/component.tsx index 0d24784f7..00556be85 100644 --- a/packages/widgets/src/minecraft/server-status/component.tsx +++ b/packages/widgets/src/minecraft/server-status/component.tsx @@ -1,7 +1,7 @@ "use client"; import { Box, Flex, Group, Text, Tooltip } from "@mantine/core"; -import { IconUsersGroup } from "@tabler/icons-react"; +import { IconCube, IconUsersGroup } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { formatNumber } from "@homarr/common"; @@ -44,13 +44,25 @@ export default function MinecraftServerStatusWidget({ options }: WidgetComponent {data.online && ( <> - {!options.isBedrockServer && ( - {`minecraft - )} + {!options.isBedrockServer && + (data.icon ? ( + {`minecraft + ) : ( + + + + ))} diff --git a/packages/widgets/src/notebook/notebook.tsx b/packages/widgets/src/notebook/notebook.tsx index 09bad2b5f..e7377b4b9 100644 --- a/packages/widgets/src/notebook/notebook.tsx +++ b/packages/widgets/src/notebook/notebook.tsx @@ -41,21 +41,21 @@ import { IconX, } from "@tabler/icons-react"; import { Color } from "@tiptap/extension-color"; -import Highlight from "@tiptap/extension-highlight"; -import Image from "@tiptap/extension-image"; -import Placeholder from "@tiptap/extension-placeholder"; -import Table from "@tiptap/extension-table"; -import TableCell from "@tiptap/extension-table-cell"; -import TableHeader from "@tiptap/extension-table-header"; -import TableRow from "@tiptap/extension-table-row"; -import TaskItem from "@tiptap/extension-task-item"; -import TaskList from "@tiptap/extension-task-list"; -import TextAlign from "@tiptap/extension-text-align"; -import TextStyle from "@tiptap/extension-text-style"; -import Underline from "@tiptap/extension-underline"; +import { Highlight } from "@tiptap/extension-highlight"; +import { Image } from "@tiptap/extension-image"; +import { Placeholder } from "@tiptap/extension-placeholder"; +import { Table } from "@tiptap/extension-table"; +import { TableCell } from "@tiptap/extension-table-cell"; +import { TableHeader } from "@tiptap/extension-table-header"; +import { TableRow } from "@tiptap/extension-table-row"; +import { TaskItem } from "@tiptap/extension-task-item"; +import { TaskList } from "@tiptap/extension-task-list"; +import { TextAlign } from "@tiptap/extension-text-align"; +import { TextStyle } from "@tiptap/extension-text-style"; import type { Editor } from "@tiptap/react"; -import { BubbleMenu, useEditor } from "@tiptap/react"; -import StarterKit from "@tiptap/starter-kit"; +import { useEditor } from "@tiptap/react"; +import { BubbleMenu } from "@tiptap/react/menus"; +import { StarterKit } from "@tiptap/starter-kit"; import type { Node } from "prosemirror-model"; import { clientApi } from "@homarr/api/client"; @@ -133,7 +133,8 @@ export function Notebook({ options, setOptions, isEditMode, boardId, itemId }: W }; }, }), - StarterKit, + // we use a custom link implementation from mantine + StarterKit.configure({ link: false }), Table.configure({ resizable: true, lastColumnResizable: false, @@ -170,8 +171,9 @@ export function Notebook({ options, setOptions, isEditMode, boardId, itemId }: W TaskList.configure({ itemTypeName: "taskItem" }), TextAlign.configure({ types: ["heading", "paragraph"] }), TextStyle, - Underline, ], + shouldRerenderOnTransaction: true, + immediatelyRender: false, content, onUpdate: ({ editor }) => { setContent(editor.getHTML()); diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index d0fe2cdfb..2aa93b2cf 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -18,14 +18,17 @@ interface TextInput extends CommonInput { validate?: z.ZodType; } -interface MultiSelectInput - extends CommonInput[]> { +interface MultiSelectInput extends CommonInput< + inferSelectOptionValue[] +> { options: TOptions; searchable?: boolean; } -export interface SortableItemListInput - extends Omit, "withDescription"> { +export interface SortableItemListInput extends Omit< + CommonInput, + "withDescription" +> { AddButton: (props: { addItem: (item: TItem) => void; values: TOptionValue[] }) => React.ReactNode; ItemComponent: (props: { item: TItem; @@ -37,8 +40,9 @@ export interface SortableItemListInput { data: TItem[] | undefined; isLoading: boolean; error: unknown }; } -interface SelectInput - extends CommonInput> { +interface SelectInput extends CommonInput< + inferSelectOptionValue +> { options: TOptions; searchable?: boolean; } diff --git a/packages/widgets/src/releases/component.tsx b/packages/widgets/src/releases/component.tsx index 51cefebd0..fdd9f1f0b 100644 --- a/packages/widgets/src/releases/component.tsx +++ b/packages/widgets/src/releases/component.tsx @@ -21,6 +21,7 @@ import ReactMarkdown from "react-markdown"; import { clientApi } from "@homarr/api/client"; import { useRequiredBoard } from "@homarr/boards/context"; import { isDateWithin, isNullOrWhitespace, splitToChunksWithNItems } from "@homarr/common"; +import { getIconUrl } from "@homarr/definitions"; import { useScopedI18n } from "@homarr/translation/client"; import { MaskedOrNormalImage } from "@homarr/ui"; @@ -96,55 +97,33 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas const repositories = useMemo(() => { const formattedResults = options.repositories .map((repository) => { - if (repository.providerIntegrationId === undefined) { - return { - ...repository, - isNewRelease: false, - isStaleRelease: false, - latestReleaseAt: undefined, - error: { - code: "noProviderSeleceted", - }, - }; - } + if (!repository.providerIntegrationId) return { ...repository, error: { code: "noProviderSeleceted" } }; - const response = results.flat().find(({ data }) => data.id === repository.id)?.data; + const repositoryResult = results.flat().find(({ id }) => id === repository.id); + if (!repositoryResult) return { ...repository, error: { code: "noProviderResponse" } }; + if (!repositoryResult.success) return { ...repository, error: repositoryResult.error }; - if (response === undefined) - return { - ...repository, - isNewRelease: false, - isStaleRelease: false, - latestReleaseAt: undefined, - error: { - code: "noProviderResponse", - }, - }; + const { data: release, integration } = repositoryResult; + + const isReleaseWithin = (relativeDate: string) => + Boolean(relativeDate) && isDateWithin(release.latestReleaseAt, relativeDate); return { ...repository, - ...response, - isNewRelease: - relativeDateOptions.newReleaseWithin !== "" && response.latestReleaseAt - ? isDateWithin(response.latestReleaseAt, relativeDateOptions.newReleaseWithin) - : false, - isStaleRelease: - relativeDateOptions.staleReleaseWithin !== "" && response.latestReleaseAt - ? !isDateWithin(response.latestReleaseAt, relativeDateOptions.staleReleaseWithin) - : false, - viewed: releasesViewedList[repository.id] === response.latestRelease, + ...release, + integration: { name: integration.name, iconUrl: getIconUrl(integration.kind) }, + isNewRelease: isReleaseWithin(relativeDateOptions.newReleaseWithin), + isStaleRelease: !isReleaseWithin(relativeDateOptions.staleReleaseWithin), + viewed: releasesViewedList[repository.id] === release.latestRelease, }; }) .filter( (repository) => - repository.error !== undefined || - !options.showOnlyHighlighted || - repository.isNewRelease || - repository.isStaleRelease, + "error" in repository || !options.showOnlyHighlighted || repository.isNewRelease || repository.isStaleRelease, ) .sort((repoA, repoB) => { - if (repoA.latestReleaseAt === undefined) return -1; - if (repoB.latestReleaseAt === undefined) return 1; + if ("error" in repoA) return -1; + if ("error" in repoB) return 1; return repoA.latestReleaseAt > repoB.latestReleaseAt ? -1 : 1; }) as ReleasesRepositoryResponse[]; diff --git a/packages/widgets/src/stocks/component.tsx b/packages/widgets/src/stocks/component.tsx index c5dfe15d6..777cfa0b3 100644 --- a/packages/widgets/src/stocks/component.tsx +++ b/packages/widgets/src/stocks/component.tsx @@ -26,15 +26,13 @@ export default function StockPriceWidget({ options, width, height }: WidgetCompo const theme = useMantineTheme(); const [{ data }] = clientApi.widget.stockPrice.getPriceHistory.useSuspenseQuery(options); - const stockValues = data.indicators.quote[0]?.close ?? []; - - const stockValuesChange = round(calculateChange(stockValues[stockValues.length - 1] ?? 0, stockValues[0] ?? 0)); + const stockValuesChange = round(calculateChange(data.priceHistory.at(-1) ?? 0, data.priceHistory[0] ?? 0)); const stockValuesChangePercentage = round( - calculateChangePercentage(stockValues[stockValues.length - 1] ?? 0, stockValues[0] ?? 0), + calculateChangePercentage(data.priceHistory.at(-1) ?? 0, data.priceHistory[0] ?? 0), ); - const stockValuesMin = Math.min(...stockValues); - const stockGraphValues = stockValues.map((value) => value - stockValuesMin + 50); + const stockValuesMin = Math.min(...data.priceHistory); + const stockGraphValues = data.priceHistory.map((value) => value - stockValuesMin + 50); return ( @@ -57,17 +55,17 @@ export default function StockPriceWidget({ options, width, height }: WidgetCompo ) : ( )} - {data.meta.symbol} + {data.symbol} {width > 280 && height > 280 && ( - {data.meta.shortName} + {data.shortName} )} 280 ? 1 : 2} fw={700}> - {new Intl.NumberFormat().format(round(stockValues[stockValues.length - 1] ?? 0))} + {new Intl.NumberFormat().format(round(data.priceHistory.at(-1) ?? 0))} {width > 280 && ( @@ -90,11 +88,11 @@ export default function StockPriceWidget({ options, width, height }: WidgetCompo ) : ( )} - {data.meta.symbol} + {data.symbol} {width > 280 && height > 280 && ( - {data.meta.shortName} + {data.shortName} )} diff --git a/packages/widgets/src/widget-integration-select.tsx b/packages/widgets/src/widget-integration-select.tsx index 8567b39d3..8e41e8bec 100644 --- a/packages/widgets/src/widget-integration-select.tsx +++ b/packages/widgets/src/widget-integration-select.tsx @@ -1,7 +1,6 @@ "use client"; import type { FocusEventHandler } from "react"; -import Link from "next/link"; import { Anchor, Avatar, @@ -20,6 +19,7 @@ import { import type { IntegrationKind } from "@homarr/definitions"; import { getIconUrl } from "@homarr/definitions"; import { useI18n } from "@homarr/translation/client"; +import { Link } from "@homarr/ui"; import classes from "./widget-integration-select.module.css"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26283c233..fe2a8d747 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,23 +7,23 @@ settings: overrides: '@babel/helpers@<7.26.10': '>=7.28.4' '@babel/runtime@<7.26.10': '>=7.28.4' - axios@>=1.0.0 <1.8.2: '>=1.12.2' + 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.25.11' - form-data@>=4.0.0 <4.0.4: '>=4.0.4' - hono@<4.6.5: '>=4.10.3' + esbuild@<=0.24.2: '>=0.27.1' + form-data@>=4.0.0 <4.0.4: '>=4.0.5' + hono@<4.6.5: '>=4.10.8' 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.16.0 - react-is: ^19.2.0 - rollup@>=4.0.0 <4.22.4: '>=4.52.5' + react-is: ^19.2.1 + rollup@>=4.0.0 <4.22.4: '>=4.53.3' 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' tmp@<=0.2.3: '>=0.2.5' - vite@>=5.0.0 <=5.4.18: '>=7.1.12' + vite@>=5.0.0 <=5.4.18: '>=7.2.7' patchedDependencies: '@types/node-unifi': @@ -42,37 +42,37 @@ importers: version: link:tooling/prettier '@semantic-release/changelog': specifier: ^6.0.3 - version: 6.0.3(semantic-release@25.0.1(typescript@5.9.3)) + version: 6.0.3(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@25.0.1(typescript@5.9.3)) + version: 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/git': specifier: ^10.0.1 - version: 10.0.1(semantic-release@25.0.1(typescript@5.9.3)) + version: 10.0.1(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/github': - specifier: ^12.0.0 - version: 12.0.0(semantic-release@25.0.1(typescript@5.9.3)) + specifier: ^12.0.2 + version: 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/npm': - specifier: ^13.1.1 - version: 13.1.1(semantic-release@25.0.1(typescript@5.9.3)) + specifier: ^13.1.2 + version: 13.1.2(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/release-notes-generator': specifier: ^14.1.0 - version: 14.1.0(semantic-release@25.0.1(typescript@5.9.3)) + version: 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) '@testcontainers/redis': - specifier: ^11.7.2 - version: 11.7.2 + specifier: ^11.9.0 + version: 11.9.0 '@turbo/gen': - specifier: ^2.5.8 - version: 2.5.8(@types/node@24.9.2)(typescript@5.9.3) + specifier: ^2.6.3 + version: 2.6.3(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3) '@vitejs/plugin-react': - specifier: ^5.1.0 - version: 5.1.0(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) + specifier: ^5.1.2 + version: 5.1.2(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/coverage-v8': - specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + specifier: ^4.0.15 + version: 4.0.15(vitest@4.0.15) '@vitest/ui': - specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + specifier: ^4.0.15 + version: 4.0.15(vitest@4.0.15) conventional-changelog-conventionalcommits: specifier: ^9.1.0 version: 9.1.0 @@ -80,44 +80,47 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: ^27.0.1 - version: 27.0.1(postcss@8.5.6) + specifier: ^27.3.0 + version: 27.3.0(postcss@8.5.6) + json5: + specifier: ^2.2.3 + version: 2.2.3 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 semantic-release: - specifier: ^25.0.1 - version: 25.0.1(typescript@5.9.3) + specifier: ^25.0.2 + version: 25.0.2(typescript@5.9.3) testcontainers: - specifier: ^11.7.2 - version: 11.7.2 + specifier: ^11.9.0 + version: 11.9.0 turbo: - specifier: ^2.5.8 - version: 2.5.8 + specifier: ^2.6.3 + version: 2.6.3 typescript: specifier: ^5.9.3 version: 5.9.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) + version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.2)(@vitest/ui@3.2.4)(jsdom@27.0.1(postcss@8.5.6))(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + specifier: ^4.0.15 + version: 4.0.15(@types/node@24.10.3)(@vitest/ui@4.0.15)(jsdom@27.3.0(postcss@8.5.6))(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@dnd-kit/modifiers': specifier: ^9.0.0 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1) '@dnd-kit/utilities': specifier: ^3.2.2 - version: 3.2.2(react@19.2.0) + version: 3.2.2(react@19.2.1) '@homarr/analytics': specifier: workspace:^0.1.0 version: link:../../packages/analytics @@ -212,50 +215,50 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^8.3.5 - version: 8.3.5(chroma-js@3.1.2) + specifier: ^8.3.10 + version: 8.3.10(chroma-js@3.2.0) '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/dropzone': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) '@mantine/modals': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/tiptap': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tiptap/extension-link@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4))(@tiptap/react@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tiptap/extension-link@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(@tiptap/react@3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@million/lint': specifier: 1.0.14 - version: 1.0.14(webpack-sources@3.2.3) + version: 1.0.14(webpack-sources@3.3.3) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) '@tanstack/react-query': - specifier: ^5.90.5 - version: 5.90.5(react@19.2.0) + specifier: ^5.90.12 + version: 5.90.12(react@19.2.1) '@tanstack/react-query-devtools': - specifier: ^5.90.2 - version: 5.90.2(@tanstack/react-query@5.90.5(react@19.2.0))(react@19.2.0) + specifier: ^5.91.1 + version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.1))(react@19.2.1) '@tanstack/react-query-next-experimental': - specifier: ^5.90.2 - version: 5.90.2(@tanstack/react-query@5.90.5(react@19.2.0))(next@15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0) + specifier: ^5.91.0 + version: 5.91.0(@tanstack/react-query@5.90.12(react@19.2.1))(next@16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1) '@trpc/client': - specifier: ^11.6.0 - version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) '@trpc/next': - specifier: ^11.6.0 - version: 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(next@15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(next@16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) '@trpc/react-query': - specifier: ^11.6.0 - version: 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) '@trpc/server': - specifier: ^11.6.0 - version: 11.6.0(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(typescript@5.9.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -265,15 +268,18 @@ importers: '@xterm/xterm': specifier: ^5.5.0 version: 5.5.0 + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 chroma-js: - specifier: ^3.1.2 - version: 3.1.2 + specifier: ^3.2.0 + version: 3.2.0 clsx: specifier: ^2.1.1 version: 2.1.1 dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 dotenv: specifier: ^17.2.3 version: 17.2.3 @@ -281,17 +287,20 @@ importers: specifier: ^7.5.0 version: 7.5.0 glob: - specifier: ^11.0.3 - version: 11.0.3 + specifier: ^13.0.0 + version: 13.0.0 + isomorphic-dompurify: + specifier: ^2.34.0 + version: 2.34.0(postcss@8.5.6) jotai: - specifier: ^2.15.0 - version: 2.15.0(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.2)(react@19.2.0) + specifier: ^2.15.2 + version: 2.15.2(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tabler/icons-react@3.35.0(react@19.2.0))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tabler/icons-react@3.35.0(react@19.2.1))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) postcss-preset-mantine: specifier: ^1.18.0 version: 1.18.0(postcss@8.5.6) @@ -299,32 +308,32 @@ importers: specifier: ^1.30.0 version: 1.30.0 react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) react-error-boundary: specifier: ^6.0.0 - version: 6.0.0(react@19.2.0) + version: 6.0.0(react@19.2.1) react-simple-code-editor: specifier: ^0.14.1 - version: 0.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 0.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) sass: - specifier: ^1.93.2 - version: 1.93.2 + specifier: ^1.95.0 + version: 1.95.1 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 swagger-ui-react: - specifier: ^5.29.5 - version: 5.29.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^5.30.3 + version: 5.30.3(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) use-deep-compare-effect: specifier: ^1.8.1 - version: 1.8.1(react@19.2.0) + version: 1.8.1(react@19.2.1) zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -336,20 +345,20 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/chroma-js': - specifier: 3.1.1 - version: 3.1.1 + specifier: 3.1.2 + version: 3.1.2 '@types/node': - specifier: ^24.9.1 - version: 24.9.2 + specifier: ^24.10.2 + version: 24.10.3 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.2.2 - version: 19.2.2 + specifier: 19.2.7 + version: 19.2.7 '@types/react-dom': - specifier: 19.2.2 - version: 19.2.2(@types/react@19.2.2) + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.7) '@types/swagger-ui-react': specifier: ^5.18.0 version: 5.18.0 @@ -357,14 +366,14 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 node-loader: specifier: ^2.1.0 - version: 2.1.0(webpack@5.94.0) + version: 2.1.0(webpack@5.94.0(@swc/core@1.15.3)) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -423,17 +432,17 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 dotenv: specifier: ^17.2.3 version: 17.2.3 fastify: - specifier: ^5.6.1 - version: 5.6.1 + specifier: ^5.6.2 + version: 5.6.2 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 undici: specifier: 7.16.0 version: 7.16.0 @@ -448,20 +457,20 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^24.9.1 - version: 24.9.2 + specifier: ^24.10.2 + version: 24.10.3 dotenv-cli: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.0 + version: 11.0.0 esbuild: - specifier: ^0.25.11 - version: 0.25.11 + specifier: ^0.27.1 + version: 0.27.1 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 tsx: specifier: 4.20.4 version: 4.20.4 @@ -518,14 +527,14 @@ importers: specifier: ^8.18.1 version: 8.18.1 esbuild: - specifier: ^0.25.11 - version: 0.25.11 + specifier: ^0.27.1 + version: 0.27.1 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -545,8 +554,8 @@ importers: specifier: ^0.4.0 version: 0.4.0 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -558,8 +567,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -633,41 +642,41 @@ importers: specifier: ^1.4.0 version: 1.4.0 '@tanstack/react-query': - specifier: ^5.90.5 - version: 5.90.5(react@19.2.0) + specifier: ^5.90.12 + version: 5.90.12(react@19.2.1) '@trpc/client': - specifier: ^11.6.0 - version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) '@trpc/react-query': - specifier: ^11.6.0 - version: 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) '@trpc/server': - specifier: ^11.6.0 - version: 11.6.0(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(typescript@5.9.3) '@trpc/tanstack-react-query': - specifier: ^11.6.0 - version: 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) superjson: - specifier: 2.2.3 - version: 2.2.3 + 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.6.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.1.12))(zod@4.1.12) + version: 3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.7.2(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.1.13))(zod@4.1.13) zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -679,11 +688,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -691,11 +700,11 @@ importers: packages/auth: dependencies: '@auth/core': - specifier: ^0.41.0 - version: 0.41.0 + specifier: ^0.41.1 + version: 0.41.1 '@auth/drizzle-adapter': - specifier: ^1.11.0 - version: 1.11.0 + specifier: ^1.11.1 + version: 1.11.1 '@homarr/certificates': specifier: workspace:^0.1.0 version: link:../certificates @@ -724,23 +733,23 @@ importers: specifier: ^0.9.1 version: 0.9.1 ldapts: - specifier: 8.0.9 - version: 8.0.9 + specifier: 8.0.18 + version: 8.0.18 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) next-auth: specifier: 5.0.0-beta.30 - version: 5.0.0-beta.30(next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0) + version: 5.0.0-beta.30(next@16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -758,11 +767,11 @@ importers: specifier: 0.9.2 version: 0.9.2 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -773,11 +782,11 @@ importers: specifier: workspace:^0.1.0 version: link:../api react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -789,8 +798,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -817,8 +826,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -854,11 +863,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript esbuild: - specifier: ^0.25.11 - version: 0.25.11 + specifier: ^0.27.1 + version: 0.27.1 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -875,32 +884,32 @@ importers: specifier: ^3.1.0 version: 3.1.0 dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 dns-caching: - specifier: ^0.2.7 - version: 0.2.7 + specifier: ^0.2.9 + version: 0.2.9 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) octokit: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.0.5 + version: 5.0.5 react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) undici: specifier: 7.16.0 version: 7.16.0 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 zod-validation-error: - specifier: ^4.0.2 - version: 4.0.2(zod@4.1.12) + specifier: ^5.0.0 + version: 5.0.0(zod@4.1.13) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -912,8 +921,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -922,13 +931,13 @@ importers: dependencies: '@t3-oss/env-nextjs': specifier: ^0.13.8 - version: 0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.12) + version: 0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.13) ioredis: specifier: 5.8.2 version: 5.8.2 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -940,8 +949,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -961,26 +970,26 @@ importers: specifier: workspace:^0.1.0 version: link:../log '@tanstack/react-query': - specifier: ^5.90.5 - version: 5.90.5(react@19.2.0) + specifier: ^5.90.12 + version: 5.90.12(react@19.2.1) '@trpc/client': - specifier: ^11.6.0 - version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) '@trpc/server': - specifier: ^11.6.0 - version: 11.6.0(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(typescript@5.9.3) '@trpc/tanstack-react-query': - specifier: ^11.6.0 - version: 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: ^11.7.2 + version: 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) node-cron: specifier: ^4.2.1 version: 4.2.1 react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -995,11 +1004,11 @@ importers: specifier: ^3.0.11 version: 3.0.11 '@types/react': - specifier: 19.2.2 - version: 19.2.2 + specifier: 19.2.7 + version: 19.2.7 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1020,8 +1029,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1090,8 +1099,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1121,8 +1130,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1130,8 +1139,8 @@ importers: packages/db: dependencies: '@auth/core': - specifier: ^0.41.0 - version: 0.41.0 + specifier: ^0.41.1 + version: 0.41.1 '@homarr/common': specifier: workspace:^0.1.0 version: link:../common @@ -1148,32 +1157,32 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@paralleldrive/cuid2': specifier: ^3.1.0 version: 3.1.0 '@testcontainers/mysql': - specifier: ^11.7.2 - version: 11.7.2 + specifier: ^11.9.0 + version: 11.9.0 '@testcontainers/postgresql': - specifier: ^11.7.2 - version: 11.7.2 + specifier: ^11.9.0 + version: 11.9.0 better-sqlite3: - specifier: ^12.4.1 - version: 12.4.1 + specifier: ^12.5.0 + version: 12.5.0 dotenv: specifier: ^17.2.3 version: 17.2.3 drizzle-kit: - specifier: ^0.31.5 - version: 0.31.5 + specifier: ^0.31.8 + version: 0.31.8 drizzle-orm: - specifier: ^0.44.7 - version: 0.44.7(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.4.1)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) + specifier: ^0.45.0 + version: 0.45.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.44.7(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.4.1)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3))(zod@4.1.12) + version: 0.8.3(drizzle-orm@0.45.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3))(zod@4.1.13) mysql2: specifier: 3.15.3 version: 3.15.3 @@ -1181,8 +1190,8 @@ importers: specifier: ^8.16.3 version: 8.16.3 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1197,20 +1206,20 @@ importers: specifier: 7.6.13 version: 7.6.13 '@types/pg': - specifier: ^8.15.5 - version: 8.15.5 + specifier: ^8.15.6 + version: 8.15.6 dotenv-cli: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.0 + version: 11.0.0 esbuild: - specifier: ^0.25.11 - version: 0.25.11 + specifier: ^0.27.1 + version: 0.27.1 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 tsx: specifier: 4.20.4 version: 4.20.4 @@ -1224,11 +1233,11 @@ importers: specifier: workspace:^0.1.0 version: link:../common fast-xml-parser: - specifier: ^5.3.0 - version: 5.3.0 + specifier: ^5.3.2 + version: 5.3.2 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1240,8 +1249,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 tsx: specifier: 4.20.4 version: 4.20.4 @@ -1271,11 +1280,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/dockerode': - specifier: ^3.3.45 - version: 3.3.45 + specifier: ^3.3.47 + version: 3.3.47 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1292,14 +1301,14 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.3.5(react@19.2.0))(zod@4.1.12) + version: 1.3.0(@mantine/form@8.3.10(react@19.2.1))(zod@4.1.13) zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1311,8 +1320,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1337,18 +1346,21 @@ importers: '@homarr/translation': specifier: workspace:^0.1.0 version: link:../translation + '@homarr/ui': + specifier: workspace:^0.1.0 + version: link:../ui '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1360,8 +1372,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1388,8 +1400,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1425,8 +1437,8 @@ importers: specifier: 6.0.0 version: 6.0.0 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1434,17 +1446,17 @@ importers: packages/integrations: dependencies: '@ctrl/deluge': - specifier: ^7.4.0 - version: 7.4.0 + specifier: ^7.5.0 + version: 7.5.0 '@ctrl/qbittorrent': - specifier: ^9.10.0 - version: 9.10.0 + specifier: ^9.11.0 + version: 9.11.0 '@ctrl/transmission': specifier: ^7.4.0 version: 7.4.0 '@gitbeaker/rest': - specifier: ^43.5.0 - version: 43.5.0 + specifier: ^43.8.0 + version: 43.8.0 '@homarr/certificates': specifier: workspace:^0.1.0 version: link:../certificates @@ -1476,11 +1488,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@jellyfin/sdk': - specifier: ^0.12.0 - version: 0.12.0(axios@1.12.2) + specifier: ^0.13.0 + version: 0.13.0(axios@1.12.2) '@octokit/auth-app': - specifier: ^8.1.1 - version: 8.1.1 + specifier: ^8.1.2 + version: 8.1.2 ical.js: specifier: ^2.2.1 version: 2.2.1 @@ -1491,14 +1503,14 @@ importers: specifier: ^0.22.1 version: 0.22.1 octokit: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.0.5 + version: 5.0.5 proxmox-api: specifier: 1.1.1 version: 1.1.1 tsdav: - specifier: ^2.1.5 - version: 2.1.5 + specifier: ^2.1.6 + version: 2.1.6 undici: specifier: 7.16.0 version: 7.16.0 @@ -1506,8 +1518,8 @@ importers: specifier: ^0.6.2 version: 0.6.2 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1525,8 +1537,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1537,14 +1549,14 @@ importers: specifier: workspace:^0.1.0 version: link:../core superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 winston: - specifier: 3.18.3 - version: 3.18.3 + specifier: 3.19.0 + version: 3.19.0 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1556,8 +1568,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1571,14 +1583,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1590,8 +1602,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1632,26 +1644,26 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1663,8 +1675,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1675,11 +1687,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1691,8 +1703,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1733,32 +1745,32 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) adm-zip: specifier: 0.5.16 version: 0.5.16 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 zod-form-data: specifier: ^3.0.1 - version: 3.0.1(zod@4.1.12) + version: 3.0.1(zod@4.1.13) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1773,8 +1785,8 @@ importers: specifier: 0.5.7 version: 0.5.7 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1785,8 +1797,8 @@ importers: specifier: workspace:^0.1.0 version: link:../common zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1798,8 +1810,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1826,8 +1838,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1853,8 +1865,8 @@ importers: specifier: 5.8.2 version: 5.8.2 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1866,8 +1878,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1886,6 +1898,9 @@ importers: '@homarr/definitions': specifier: workspace:^0.1.0 version: link:../definitions + '@homarr/docker': + specifier: workspace:^0.1.0 + version: link:../docker '@homarr/integrations': specifier: workspace:^0.1.0 version: link:../integrations @@ -1896,20 +1911,20 @@ importers: specifier: workspace:^0.1.0 version: link:../redis dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 octokit: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.0.5 + version: 5.0.5 superjson: - specifier: 2.2.3 - version: 2.2.3 + specifier: 2.2.6 + version: 2.2.6 undici: specifier: 7.16.0 version: 7.16.0 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1921,8 +1936,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1946,8 +1961,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1964,17 +1979,17 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/dates': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1986,8 +2001,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2025,32 +2040,32 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) '@mantine/spotlight': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) jotai: - specifier: ^2.15.0 - version: 2.15.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.2.2)(react@19.2.0) + specifier: ^2.15.2 + version: 2.15.2(@babel/core@7.28.5)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) use-deep-compare-effect: specifier: ^1.8.1 - version: 1.8.1(react@19.2.0) + version: 1.8.1(react@19.2.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2062,8 +2077,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2077,26 +2092,26 @@ importers: specifier: workspace:^0.1.0 version: link:../definitions dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 deepmerge: specifier: 4.3.1 version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tabler/icons-react@3.35.0(react@19.2.0))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tabler/icons-react@3.35.0(react@19.2.1))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) next-intl: - specifier: 4.4.0 - version: 4.4.0(next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0)(typescript@5.9.3) + specifier: 4.5.8 + version: 4.5.8(next@16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1)(typescript@5.9.3) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2108,8 +2123,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2132,29 +2147,29 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/dates': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tabler/icons-react@3.35.0(react@19.2.0))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tabler/icons-react@3.35.0(react@19.2.1))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) svgson: specifier: ^5.3.1 version: 5.3.1 @@ -2172,8 +2187,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2187,11 +2202,11 @@ importers: specifier: workspace:^0.1.0 version: link:../translation zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 zod-form-data: specifier: ^3.0.1 - version: 3.0.1(zod@4.1.12) + version: 3.0.1(zod@4.1.13) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2203,8 +2218,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2213,10 +2228,10 @@ importers: dependencies: '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1) '@homarr/api': specifier: workspace:^0.1.0 version: link:../api @@ -2281,98 +2296,98 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/charts': - specifier: ^8.3.5 - version: 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) + specifier: ^8.3.10 + version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(recharts@2.15.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)) '@mantine/core': - specifier: ^8.3.5 - version: 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@mantine/hooks': - specifier: ^8.3.5 - version: 8.3.5(react@19.2.0) + specifier: ^8.3.10 + version: 8.3.10(react@19.2.1) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@19.2.0) + version: 3.35.0(react@19.2.1) '@tiptap/extension-color': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/extension-text-style@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-text-style@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))) '@tiptap/extension-highlight': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) '@tiptap/extension-image': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) '@tiptap/extension-link': - specifier: ^2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) + specifier: ^3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) '@tiptap/extension-placeholder': - specifier: ^2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) + specifier: ^3.13.0 + version: 3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-table': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) '@tiptap/extension-table-cell': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-table-header': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-table-row': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-task-item': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-task-list': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) '@tiptap/extension-text-align': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) '@tiptap/extension-text-style': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) '@tiptap/extension-underline': - specifier: 2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + specifier: 3.13.0 + version: 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) '@tiptap/react': - specifier: ^2.26.4 - version: 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^3.13.0 + version: 3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@tiptap/starter-kit': - specifier: ^2.26.4 - version: 2.26.4 + specifier: ^3.13.0 + version: 3.13.0 clsx: specifier: ^2.1.1 version: 2.1.1 dayjs: - specifier: ^1.11.18 - version: 1.11.18 + specifier: ^1.11.19 + version: 1.11.19 mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.3.5(react@19.2.0))(zod@4.1.12) + version: 1.3.0(@mantine/form@8.3.10(react@19.2.1))(zod@4.1.13) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tabler/icons-react@3.35.0(react@19.2.0))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tabler/icons-react@3.35.0(react@19.2.1))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) + specifier: 16.0.10 + version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) react: - specifier: 19.2.0 - version: 19.2.0 + specifier: 19.2.1 + version: 19.2.1 react-dom: - specifier: 19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 19.2.1 + version: 19.2.1(react@19.2.1) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@19.2.2)(react@19.2.0) + version: 10.1.0(@types/react@19.2.7)(react@19.2.1) recharts: specifier: ^2.15.4 - version: 2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 2.15.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) video.js: specifier: ^8.23.4 version: 8.23.4 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2387,8 +2402,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2396,29 +2411,29 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: 15.5.6 - version: 15.5.6 + specifier: 16.0.10 + version: 16.0.10 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.38.0) + version: 10.1.8(eslint@9.39.1) eslint-config-turbo: - specifier: ^2.5.8 - version: 2.5.8(eslint@9.38.0)(turbo@2.5.8) + specifier: ^2.6.3 + version: 2.6.3(eslint@9.39.1)(turbo@2.6.3) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0) + version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.38.0) + version: 6.10.2(eslint@9.39.1) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.38.0) + version: 7.37.5(eslint@9.39.1) eslint-plugin-react-hooks: specifier: ^6.1.1 - version: 6.1.1(eslint@9.38.0) + version: 6.1.1(eslint@9.39.1) typescript-eslint: - specifier: ^8.46.2 - version: 8.46.2(eslint@9.38.0)(typescript@5.9.3) + specifier: ^8.49.0 + version: 8.49.0(eslint@9.39.1)(typescript@5.9.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2427,8 +2442,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.38.0 - version: 9.38.0 + specifier: ^9.39.1 + version: 9.39.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2439,17 +2454,17 @@ importers: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.7.0 - version: 4.7.0(prettier@3.6.2) + version: 4.7.0(prettier@3.7.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 version: link:../typescript prettier-plugin-packagejson: - specifier: ^2.5.19 - version: 2.5.19(prettier@3.6.2) + specifier: ^2.5.20 + version: 2.5.20(prettier@3.7.4) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2458,6 +2473,9 @@ importers: packages: + '@acemir/cssom@0.9.28': + resolution: {integrity: sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==} + '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -2484,11 +2502,11 @@ packages: '@ark/util@0.46.0': resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==} - '@asamuzakjp/css-color@4.0.4': - resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==} + '@asamuzakjp/css-color@4.1.0': + resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} - '@asamuzakjp/dom-selector@6.7.2': - resolution: {integrity: sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==} + '@asamuzakjp/dom-selector@6.7.6': + resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2507,8 +2525,22 @@ packages: nodemailer: optional: true - '@auth/drizzle-adapter@1.11.0': - resolution: {integrity: sha512-7YHi5bTZZs4+D6TQIT/AWgZ2PLL7Zc9fS7bteHKMrsEMemarbdv3H5eF8RfF1FpRtyK8MAj4EQV4BWf0gCzAYw==} + '@auth/core@0.41.1': + resolution: {integrity: sha512-t9cJ2zNYAdWMacGRMT6+r4xr1uybIdmYa49calBPeTqwgAFPV/88ac9TEvCR85pvATiSPt8VaNf+Gt24JIT/uw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^7.0.7 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + + '@auth/drizzle-adapter@1.11.1': + resolution: {integrity: sha512-cQTvDZqsyF7RPhDm/B6SvqdVP9EzQhy3oM4Muu7fjjmSYFLbSR203E6dH631ZHSKDn2b4WZkfMnjPDzRsPSAeA==} '@axiomhq/js@1.0.0-rc.3': resolution: {integrity: sha512-Zm10TczcMLounWqC42nMkXQ7XKLqjzLrd5ia022oBKDUZqAFVg2y9d1quQVNV4FlXyg9MKDdfMjpKQRmzEGaog==} @@ -2538,6 +2570,10 @@ 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==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.26.2': resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} @@ -2546,6 +2582,10 @@ packages: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} @@ -2598,6 +2638,10 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -2625,6 +2669,11 @@ packages: 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/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -2665,6 +2714,10 @@ packages: resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} @@ -2677,6 +2730,10 @@ packages: 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'} + '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} @@ -2741,8 +2798,8 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@ctrl/deluge@7.4.0': - resolution: {integrity: sha512-h0cfxCzshsB+0cmO0BcKYbw/imqAMvPWp8ZHSlfBu8XB7xoEb51jtQp8pjIYNWQ8b/b9p49V28Ned0+sfape8w==} + '@ctrl/deluge@7.5.0': + resolution: {integrity: sha512-pdJEZBhyoJsPVLuGv4LPHLOdADxuVrEeI02p2tak2CZQF/tH/B0B+PMTIPBRX4knvJM52rZykHhHxHbHFlVXOQ==} engines: {node: '>=18'} '@ctrl/magnet-link@4.0.2': @@ -2753,8 +2810,8 @@ packages: resolution: {integrity: sha512-4pa9hnMWmgoGl+5HJ/B9d5ugIr105AGD3rsTSlE8pTR7d2+xrEhLPCKRp/Y6k/k9Fo6DaJ1FRgwRxdi60vmxtg==} engines: {node: '>=18'} - '@ctrl/qbittorrent@9.10.0': - resolution: {integrity: sha512-t73xR2NcTj8tOxLEJzX+smCHLUFLtJvdUAPeo2KKLmlPw0cbGDd/qN615t979oJB6F0mxVQ5/wNx5/zYN1SGkw==} + '@ctrl/qbittorrent@9.11.0': + resolution: {integrity: sha512-mltiPLncdpAHrRbd2H8uy9nTgFhk0urcmkHxCDHcJehRvgd6ta2qnhQ2aO0KI8lgNDvHfmiNh4FAx0yoPBz8Xg==} engines: {node: '>=18'} '@ctrl/shared-torrent@6.3.0': @@ -2814,8 +2871,8 @@ packages: '@drizzle-team/brocli@0.11.0': resolution: {integrity: sha512-hD3pekGiPg0WPCCGAZmusBBJsDqGUR66Y452YgQsZOnkdQ7ViEPKuyP4huUGEZQefp8g34RRodXYmJ2TbCH+tg==} - '@emnapi/runtime@1.4.4': - resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} @@ -2828,158 +2885,314 @@ packages: resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} deprecated: 'Merged into tsx: https://tsx.is' - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + '@esbuild/aix-ppc64@0.27.1': + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + '@esbuild/android-arm64@0.27.1': + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + '@esbuild/android-arm@0.27.1': + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + '@esbuild/android-x64@0.27.1': + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + '@esbuild/darwin-arm64@0.27.1': + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + '@esbuild/darwin-x64@0.27.1': + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + '@esbuild/freebsd-arm64@0.27.1': + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + '@esbuild/freebsd-x64@0.27.1': + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + '@esbuild/linux-arm64@0.27.1': + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + '@esbuild/linux-arm@0.27.1': + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + '@esbuild/linux-ia32@0.27.1': + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + '@esbuild/linux-loong64@0.27.1': + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + '@esbuild/linux-mips64el@0.27.1': + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + '@esbuild/linux-ppc64@0.27.1': + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + '@esbuild/linux-riscv64@0.27.1': + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + '@esbuild/linux-s390x@0.27.1': + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + '@esbuild/linux-x64@0.27.1': + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + '@esbuild/netbsd-arm64@0.27.1': + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + '@esbuild/netbsd-x64@0.27.1': + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + '@esbuild/openbsd-arm64@0.27.1': + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + '@esbuild/openbsd-x64@0.27.1': + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + '@esbuild/openharmony-arm64@0.27.1': + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + '@esbuild/sunos-x64@0.27.1': + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + '@esbuild/win32-arm64@0.27.1': + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + '@esbuild/win32-ia32@0.27.1': + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.1': + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2998,28 +3211,28 @@ packages: resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.4.1': - resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + '@eslint/core@0.17.0': + 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==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} + '@eslint/js@9.39.1': + resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.0': - resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@extractus/feed-extractor@7.1.7': @@ -3084,16 +3297,16 @@ packages: '@formatjs/intl-localematcher@0.5.5': resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} - '@gitbeaker/core@43.5.0': - resolution: {integrity: sha512-Lfsl6DE/2RkFvpSEhMEnN6sNuY0IeR68UEQq2qzR0MkUF1RMCmOFlD3OydnT9yY+fkWjB4FPSG4SA/oBVZYTFQ==} + '@gitbeaker/core@43.8.0': + resolution: {integrity: sha512-H+LfKuf4dExBinb79c+CXViRBvTVQNf5BYLNSizm2SiqdED5JruhKX88payefleY0szp7G/mySlFSXPyGRH1dQ==} engines: {node: '>=18.20.0'} - '@gitbeaker/requester-utils@43.5.0': - resolution: {integrity: sha512-C6CLAZDy6mNAKHqqt+T2s0RNXf7tmjT9PLAxTZCdtS0276eAj1xmqmPPy9RDKKPzhGaiUicn9q2pA3IyEDM1jQ==} + '@gitbeaker/requester-utils@43.8.0': + resolution: {integrity: sha512-d/SiJdxijc+aH5ZBQOw83XLxNSXqsBZNm5k3nPu1EHxGxK0fajXmxdMl0/vNXbKRggnIquFCxURkrQSEzfjqxQ==} engines: {node: '>=18.20.0'} - '@gitbeaker/rest@43.5.0': - resolution: {integrity: sha512-HJgzKSBtdHrfpbH3vHj+1qSyH9RR0L/zMDCwvo4NE2Fg9P2nkWMfj2AzhytENHGTtL6gcfSPOS16HLLTQ4uVeg==} + '@gitbeaker/rest@43.8.0': + resolution: {integrity: sha512-xxqsNsUXaFang9b2e/NTIgqUeuUlifA2Opy1mOVqTDuJZZNIOTgUNyziwBJoleBhMC0XuvY3JNVMWthufcVjRw==} engines: {node: '>=18.20.0'} '@grpc/grpc-js@1.12.5': @@ -3119,7 +3332,7 @@ packages: resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.10.3' + hono: '>=4.10.8' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -3159,124 +3372,142 @@ packages: prettier-plugin-ember-template-tag: optional: true - '@img/sharp-darwin-arm64@0.34.3': - resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.3': - resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.0': - resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.0': - resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.0': - resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} cpu: [arm64] os: [linux] + libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.0': - resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} cpu: [arm] os: [linux] + libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.0': - resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.0': - resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} cpu: [s390x] os: [linux] + libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.0': - resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} cpu: [x64] os: [linux] + libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': - resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} cpu: [arm64] os: [linux] + libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.0': - resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} cpu: [x64] os: [linux] + libc: [musl] - '@img/sharp-linux-arm64@0.34.3': - resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] - '@img/sharp-linux-arm@0.34.3': - resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] - '@img/sharp-linux-ppc64@0.34.3': - resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + libc: [glibc] - '@img/sharp-linux-s390x@0.34.3': - resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] - '@img/sharp-linux-x64@0.34.3': - resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} + '@img/sharp-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.3': - resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} + '@img/sharp-linuxmusl-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.3': - resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} + '@img/sharp-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] - '@img/sharp-wasm32@0.34.3': - resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} + '@img/sharp-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.3': - resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.3': - resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} + '@img/sharp-win32-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.3': - resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -3296,18 +3527,17 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jellyfin/sdk@0.12.0': - resolution: {integrity: sha512-do3cks7TD316Qw27lBMHZQ7ufaS1MC8HMsQF5rFv5/DUInuwEOqWthqVyHl3sIjThOThF1zxQyE6OdpUl0dNUg==} + '@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'} @@ -3327,18 +3557,24 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@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==} @@ -3368,88 +3604,88 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/charts@8.3.5': - resolution: {integrity: sha512-jXeItISiGZbRPG6YTfh+q4Ii2DSce3Vl9dBX1spbtYz+qnJ9TE3vLUlRA3Vn2JXHR1Nka1CtiGGl26NilC81tQ==} + '@mantine/charts@8.3.10': + resolution: {integrity: sha512-/JbuxY7qzrxrZR7ZjKj9dD8OXq03nAIClqJ+fD5ezF8J1cVYH9nx0IaIu8RPpaT4UwRdxz+TH/EutQ0LdeOz8w==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x recharts: '>=2.13.3' - '@mantine/colors-generator@8.3.5': - resolution: {integrity: sha512-hgoswBnpB+I2Al0MJ5puAiVniIieoFF5k6UPhd7R62IhyJY8WI3RCBMQdiCrOQTo8xGMcpgmcWqdkB9Dadjybg==} + '@mantine/colors-generator@8.3.10': + resolution: {integrity: sha512-wjTFe4jfnjnPPv/B7mu4tN3iBQiqynQ8sMf8R8JV5NeKZyaG+1EptqplyZrrLfqYm76GF7+cZbj2wTM64v8/ig==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@8.3.5': - resolution: {integrity: sha512-PdVNLMgOS2vFhOujRi6/VC9ic8w3UDyKX7ftwDeJ7yQT8CiepUxfbWWYpVpnq23bdWh/7fIT2Pn1EY8r8GOk7g==} + '@mantine/core@8.3.10': + resolution: {integrity: sha512-aKQFETN14v6GtM07b/G5yJneMM1yrgf9mNrTah6GVy5DvQM0AeutITT7toHqh5gxxwzdg/DoY+HQsv5zhqnc5g==} peerDependencies: - '@mantine/hooks': 8.3.5 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@8.3.5': - resolution: {integrity: sha512-LkIdC4eWPNQFv1BU1c52U3Z3RuA3yU1asvTgMEIQ/MdJsGK8GePwpgMH/jKQ8ba/AW9NfksdvtOJ6uIqPwjCkg==} + '@mantine/dates@8.3.10': + resolution: {integrity: sha512-P1uZ+alYGp7fsmkfd+7Fur4AGrqT0X6BWLiVTomzrbyykA+m4TSwPyQjKfsDc7XRqaqx992br/U65T82zy+qGQ==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@8.3.5': - resolution: {integrity: sha512-8eRNoEYQzUOav8Te58osGRt2vbqJO3ZORXgKALY+FhB0YGRCZYmS/gQ2T66SpyrpovY6k6OVi1ScM3wRaJrxUg==} + '@mantine/dropzone@8.3.10': + resolution: {integrity: sha512-PqY9gZ7tpz34iKek+UImbK1LBmSmkMlspqkUecAsMwbBqD2WNLNINTl7pkOh20BdYOaX1GvfkXwTA4/6ya/1kg==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@8.3.5': - resolution: {integrity: sha512-i9UFiHtO1dlrJXZkquyt+71YcNNxPPSkIcJCRp7k0Tif7bPqWK2xijPDEXzqvA53YvMvEMoqaQCEQLVmH7Esdg==} + '@mantine/form@8.3.10': + resolution: {integrity: sha512-TuBmCUIH0qHUig+y9My3bLL9CRoW4g9bijIF6743gqVh0o/daSwplc2TTVMj6sl+F1MR+SJiHtAC8FoR7fdhNw==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@8.3.5': - resolution: {integrity: sha512-0Wf08eWLKi3WkKlxnV1W5vfuN6wcvAV2VbhQlOy0R9nrWorGTtonQF6qqBE3PnJFYF1/ZE+HkYZQ/Dr7DmYSMQ==} + '@mantine/hooks@8.3.10': + resolution: {integrity: sha512-bv+yYHl+keTIvakiDzVJMIjW+o8/Px0G3EdpCMFG+U2ux6SwQqluqoq+/kqrTtT6RaLvQ0fMxjpIULF2cu/xAg==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@8.3.5': - resolution: {integrity: sha512-8pEhVc2NqUcO1+mQab1J5hDwMGKbqwMWMQptF++PUI0e82BGyoxuOdYywWvvW7+UzcA1REMF7uy0mfG9RLcjew==} + '@mantine/modals@8.3.10': + resolution: {integrity: sha512-XopCrP8dindhzSDazU47BgU8TVsiOyEG0u1UMJJ4u8TdvBctP7QVeJmGKj+B4MRHk2cHrjIF38dEGJhDgTITEg==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@8.3.5': - resolution: {integrity: sha512-8TvzrPxfdtOLGTalv7Ei1hy2F6KbR3P7/V73yw3AOKhrf1ydS89sqV2ShbsucHGJk9Pto0wjdTPd8Q7pm5MAYw==} + '@mantine/notifications@8.3.10': + resolution: {integrity: sha512-0aVpRCyn9u0wuryBnFu1jOwBYw6xGeaNNtTcTUnSvkL6NAypfPon6JG7Wsekf3IuWSTLBjhYaFEIEd4nh7VDpg==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@8.3.5': - resolution: {integrity: sha512-hK/nWnMGPicTjjRlM5eQdmXWi3HGYhM1bmc7NceIuS5Mmvcx3yb9llMZ9oHJz2StUgtGBe/uqFBKWAgFO2kYww==} + '@mantine/spotlight@8.3.10': + resolution: {integrity: sha512-0GfQd/smRcd5u0o6Ad7J9ZEWLcZZ81h9/Z9qUnzIlJeYjXqJdr40MMqDxNsXgZEDKscPJkggZMqMiRZXhFbdNQ==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@8.3.5': - resolution: {integrity: sha512-qN4fFsDMy86IV9oh1gZlDTv41RAsO0grjx90FGyT5QCv7NTgcavwxB74GBkhp45W8xn+Ms/awKy+6NxnmLmW1w==} + '@mantine/store@8.3.10': + resolution: {integrity: sha512-38t1UivcucZo9hQq27F/eqR5GvovNs4NHEz6DchOuZzV5IJWqO8+T07ivb8wct47ovYe42rPfLcaOdnIEvMsJA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@8.3.5': - resolution: {integrity: sha512-TgBu9IC1hxURgMFXHHUtBJjEpt4swRvQtEBGckMqlxc/HRKe1fzobK5HTXxtc0LE09OAOkhc5gBhiqjhmldxMQ==} + '@mantine/tiptap@8.3.10': + resolution: {integrity: sha512-gvHzn9ZPcQJyfHKfZxk9awwM8y0jqg3aWGEsOq0Ii47x9s5OD6PRo5NQeYUtTlh1md4toqIjVvolb9xWZGJpYg==} peerDependencies: - '@mantine/core': 8.3.5 - '@mantine/hooks': 8.3.5 + '@mantine/core': 8.3.10 + '@mantine/hooks': 8.3.10 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -3466,56 +3702,60 @@ packages: '@ndaidong/bellajs@12.0.1': resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==} - '@next/env@15.5.6': - resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==} + '@next/env@16.0.10': + resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==} - '@next/eslint-plugin-next@15.5.6': - resolution: {integrity: sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==} + '@next/eslint-plugin-next@16.0.10': + resolution: {integrity: sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==} - '@next/swc-darwin-arm64@15.5.6': - resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==} + '@next/swc-darwin-arm64@16.0.10': + resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.6': - resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==} + '@next/swc-darwin-x64@16.0.10': + resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.6': - resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==} + '@next/swc-linux-arm64-gnu@16.0.10': + resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@next/swc-linux-arm64-musl@15.5.6': - resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==} + '@next/swc-linux-arm64-musl@16.0.10': + resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] - '@next/swc-linux-x64-gnu@15.5.6': - resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==} + '@next/swc-linux-x64-gnu@16.0.10': + resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] - '@next/swc-linux-x64-musl@15.5.6': - resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==} + '@next/swc-linux-x64-musl@16.0.10': + resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] - '@next/swc-win32-arm64-msvc@15.5.6': - resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==} + '@next/swc-win32-arm64-msvc@16.0.10': + resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.6': - resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==} + '@next/swc-win32-x64-msvc@16.0.10': + resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3536,24 +3776,24 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@octokit/app@16.1.1': - resolution: {integrity: sha512-pcvKSN6Q6aT3gU5heoDFs3ywU5xejxeqs1rQpUwgN7CmBlxCSy9aCoqFuC6GpVv71O/Qq/VuYfCNzrOZp/9Ycw==} + '@octokit/app@16.1.2': + resolution: {integrity: sha512-8j7sEpUYVj18dxvh0KWj6W/l6uAiVRBl1JBDVRqH1VHKAO/G5eRVl4yEoYACjakWers1DjUkcCHyJNQK47JqyQ==} engines: {node: '>= 20'} - '@octokit/auth-app@8.1.1': - resolution: {integrity: sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==} + '@octokit/auth-app@8.1.2': + resolution: {integrity: sha512-db8VO0PqXxfzI6GdjtgEFHY9tzqUql5xMFXYA12juq8TeTgPAuiiP3zid4h50lwlIP457p5+56PnJOgd2GGBuw==} engines: {node: '>= 20'} - '@octokit/auth-oauth-app@9.0.2': - resolution: {integrity: sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ==} + '@octokit/auth-oauth-app@9.0.3': + resolution: {integrity: sha512-+yoFQquaF8OxJSxTb7rnytBIC2ZLbLqA/yb71I4ZXT9+Slw4TziV9j/kyGhUFRRTF2+7WlnIWsePZCWHs+OGjg==} engines: {node: '>= 20'} - '@octokit/auth-oauth-device@8.0.2': - resolution: {integrity: sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw==} + '@octokit/auth-oauth-device@8.0.3': + resolution: {integrity: sha512-zh2W0mKKMh/VWZhSqlaCzY7qFyrgd9oTWmTmHaXnHNeQRCZr/CXy2jCgHo4e4dJVTiuxP5dLa0YM5p5QVhJHbw==} engines: {node: '>= 20'} - '@octokit/auth-oauth-user@6.0.1': - resolution: {integrity: sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw==} + '@octokit/auth-oauth-user@6.0.2': + resolution: {integrity: sha512-qLoPPc6E6GJoz3XeDG/pnDhJpTkODTGG4kY0/Py154i/I003O9NazkrwJwRuzgCalhzyIeWQ+6MDvkUmKXjg/A==} engines: {node: '>= 20'} '@octokit/auth-token@6.0.0': @@ -3564,16 +3804,20 @@ packages: resolution: {integrity: sha512-vjcPRP1xsKWdYKiyKmHkLFCxeH4QvVTv05VJlZxwNToslBFcHRJlsWRaoI2+2JGCf9tIM99x8cN0b1rlAHJiQw==} engines: {node: '>= 20'} - '@octokit/core@7.0.5': - resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} + '@octokit/auth-unauthenticated@7.0.3': + resolution: {integrity: sha512-8Jb1mtUdmBHL7lGmop9mU9ArMRUTRhg8vp0T1VtZ4yd9vEm3zcLwmjQkhNEduKawOOORie61xhtYIhTDN+ZQ3g==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.1': - resolution: {integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==} + '@octokit/core@7.0.6': + resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} engines: {node: '>= 20'} - '@octokit/graphql@9.0.2': - resolution: {integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==} + '@octokit/endpoint@11.0.2': + resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==} + engines: {node: '>= 20'} + + '@octokit/graphql@9.0.3': + resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} engines: {node: '>= 20'} '@octokit/oauth-app@8.0.3': @@ -3584,13 +3828,16 @@ packages: resolution: {integrity: sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ==} engines: {node: '>= 20'} - '@octokit/oauth-methods@6.0.1': - resolution: {integrity: sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==} + '@octokit/oauth-methods@6.0.2': + resolution: {integrity: sha512-HiNOO3MqLxlt5Da5bZbLV8Zarnphi4y9XehrbaFMkcoJ+FL7sMxH/UlUsCVxpddVu4qvNDrBdaTVE2o4ITK8ng==} engines: {node: '>= 20'} '@octokit/openapi-types@26.0.0': resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} + '@octokit/openapi-webhooks-types@11.0.0': resolution: {integrity: sha512-ZBzCFj98v3SuRM7oBas6BHZMJRadlnDoeFfvm1olVxZnYeU6Vh97FhPxyS5aLh5pN51GYv2I51l/hVUAVkGBlA==} @@ -3600,44 +3847,44 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-paginate-rest@13.2.1': - resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@16.1.1': - resolution: {integrity: sha512-VztDkhM0ketQYSh5Im3IcKWFZl7VIrrsCaHbDINkdYeiiAsJzjhS2xRFCSJgfN6VOcsoW4laMtsmf3HcNqIimg==} + '@octokit/plugin-rest-endpoint-methods@17.0.0': + resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-retry@8.0.2': - resolution: {integrity: sha512-mVPCe77iaD8g1lIX46n9bHPUirFLzc3BfIzsZOpB7bcQh1ecS63YsAgcsyMGqvGa2ARQWKEFTrhMJX2MLJVHVw==} + '@octokit/plugin-retry@8.0.3': + resolution: {integrity: sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=7' - '@octokit/plugin-throttling@11.0.2': - resolution: {integrity: sha512-ntNIig4zZhQVOZF4fG9Wt8QCoz9ehb+xnlUwp74Ic2ANChCk8oKmRwV9zDDCtrvU1aERIOvtng8wsalEX7Jk5Q==} + '@octokit/plugin-throttling@11.0.3': + resolution: {integrity: sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': ^7.0.0 - '@octokit/request-error@7.0.1': - resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} + '@octokit/request-error@7.0.2': + resolution: {integrity: sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==} engines: {node: '>= 20'} - '@octokit/request@10.0.5': - resolution: {integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==} + '@octokit/request@10.0.6': + resolution: {integrity: sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==} engines: {node: '>= 20'} - '@octokit/types@15.0.0': - resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==} - '@octokit/types@15.0.1': resolution: {integrity: sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==} + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} + '@octokit/webhooks-methods@6.0.0': resolution: {integrity: sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ==} engines: {node: '>= 20'} @@ -3682,30 +3929,35 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-glibc@2.4.1': resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.4.1': resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.4.1': resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.4.1': resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.4.1': resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} @@ -3729,8 +3981,11 @@ packages: resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} - '@petamoriken/float16@3.9.1': - resolution: {integrity: sha512-j+ejhYwY6PeB+v1kn7lZFACUIG97u90WxMuGosILFsl9d4Ovi0sjk0GlPfoEcx+FzvXZDAfioD+NGnnPamXgMA==} + '@petamoriken/float16@3.9.3': + resolution: {integrity: sha512-8awtpHXCx/bNpFt4mt2xdkgtgVvKqty8VbjHI/WWWQuEw+KLzFot3f4+LkQY9YmOtq7A5GdOnqoIC8Pdygjk2g==} + + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3755,9 +4010,6 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3791,14 +4043,14 @@ packages: '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} - '@rolldown/pluginutils@1.0.0-beta.43': - resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.52.5' + rollup: '>=4.53.3' peerDependenciesMeta: rollup: optional: true @@ -3837,61 +4089,73 @@ packages: resolution: {integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.48.1': resolution: {integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.48.1': resolution: {integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.48.1': resolution: {integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.48.1': resolution: {integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.48.1': resolution: {integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.48.1': resolution: {integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.48.1': resolution: {integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.48.1': resolution: {integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.48.1': resolution: {integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.6.1': resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.48.1': resolution: {integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.48.1': resolution: {integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==} @@ -3952,14 +4216,14 @@ packages: peerDependencies: semantic-release: '>=18.0.0' - '@semantic-release/github@12.0.0': - resolution: {integrity: sha512-louWFjzZ+1dogfJTY8IuJuBcBUOTliYhBUYNcomnTfj0i959wtRQbr1POgdCoTHK7ut4N/0LNlYTH8SvSJM3hg==} + '@semantic-release/github@12.0.2': + resolution: {integrity: sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/npm@13.1.1': - resolution: {integrity: sha512-c4tlp3STYaTYORmMcLjiTaI8SLoxJ0Uf7IXkem8EyihuOM624wnaGuH4OuY2HHcsHDerNAQNzZ8VO6d4PMHSzA==} + '@semantic-release/npm@13.1.2': + resolution: {integrity: sha512-9rtshDTNlzYrC7uSBtB1vHqFzFZaNHigqkkCH5Ls4N/BSlVOenN5vtwHYxjAR4jf1hNvWSVwL4eIFTHONYckkw==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=20.1.0' @@ -3987,95 +4251,95 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@swagger-api/apidom-ast@1.0.0-beta.50': - resolution: {integrity: sha512-uUBUm6J6KlyKppyfS7DIW37De6oyMVIpHYmaNV3YAaDMuRMov5KHHWXKbqWlI+l493OljOcXEqDIPeLzm6B5PQ==} + '@swagger-api/apidom-ast@1.0.0-rc.1': + resolution: {integrity: sha512-hsAySkWlIjgkQEDu1YEbvnxdEC3rD9bjQf7UYm0vzkvL5PNDd6lHLhxb825bQAfXQjw7WOxtV7eNrgqRQohMDg==} - '@swagger-api/apidom-core@1.0.0-beta.50': - resolution: {integrity: sha512-9N7ySdyzx/3kUnprAi63GQNt+Kq8VUvErwDgPcMRAsZX8jUhk9KLJ9N0fup4mWm6+xGs0JH35wxBxnanS6aiqw==} + '@swagger-api/apidom-core@1.0.0-rc.1': + resolution: {integrity: sha512-vlguVts28oYBjCU5ZYfnX6yAFys/dZ1PUZqpYevMIGi8lEvxEfoxKEaUQa1Lr974cfKaVGBs8gNNhvDKXbH/jA==} - '@swagger-api/apidom-error@1.0.0-beta.50': - resolution: {integrity: sha512-vdpi2nRVcxXLGc68JPNwTcKrCKl8PnOEPuykZSxeNbDKnZY80APbsoLDX+1gdRgafK/7k5XdsBkpDQscsTkDng==} + '@swagger-api/apidom-error@1.0.0-rc.1': + resolution: {integrity: sha512-74tTb6QX8VeAvu/9XipXd4Ly3N3q+yJez+lGZD7Qa11E00AhNpzqH7swgZKutLEfq1tHxyGWE1A6xF8IiU4CJg==} - '@swagger-api/apidom-json-pointer@1.0.0-beta.50': - resolution: {integrity: sha512-2TgFKHlZ/SlnTZzY7EwE8xx5Pr2BYePX52xZJFqWnueSAIcCcsrqZeazWIAaDe/gXd47CDqU95nDChMECERspA==} + '@swagger-api/apidom-json-pointer@1.0.0-rc.1': + resolution: {integrity: sha512-fNDQozPRuD9ReYcCnIqr5jU0faFDUl3VrUtfeLl3YevxNB+onZkUidUvzUJgDjZK9Se567BgL0rK9hnEO/Q8qw==} - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.41': - resolution: {integrity: sha512-qxMYm3wHaHNHMFxAaRMqmiRWoDvyFS1TrZvxCHYxaf/wqgr6OflYZRTMUb7+Hmgo84ajoaaPA1/2Hd9pYj0YoA==} + '@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-arazzo-1@1.0.0-beta.41': - resolution: {integrity: sha512-cJLh4R4tV9tDcdsTAziRm3q653S4dltMmLrFph67kHj06y731+P4+F+yxEyAwFPitP/1+m08uw6bYfBdMOcqOA==} + '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.1': + resolution: {integrity: sha512-Bx3PMLp+613EgSsLLg6Ucg3FtbO2i1bVcFZXgImun5pYNfmtQu21ELfWKj8ty/Ts2zR1VKOn5+i9DyMOH/zpsA==} - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.41': - resolution: {integrity: sha512-ebsNhuug73UZ5v6VB2kokUX2jZFXOsMRNwfazn/6Z2UlHtvciW75aesb6NKOOHpHKQmIzJ3fn14x5b1OBTkBJw==} + '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.1': + resolution: {integrity: sha512-Vvo1f/H3mUuTny1d+XPudSattDWdHP1VhowxAOAFrnLVM4qvFbeBdzWjmTPEaeRsOz+Vq6rJOC4DPmHmtkR+oQ==} - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.50': - resolution: {integrity: sha512-QP6DuthV8ZWQnthYbPEVikK5rTN4T5lhnAnmO1v6zOCS9B1heKCFcIYgBhcqCnuZ0Tt8kGOfLyqGMb57lPkCdw==} + '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.1': + resolution: {integrity: sha512-1va09+kSTpNKc9oKs0rk2FWP2wk9AAdOcdmLpPEbzMnThQD1DHeBCk5OMStGZlaROxKWMPVZ5EmKy6rTRXvEIQ==} - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-beta.50': - resolution: {integrity: sha512-ZaqrtZEXUx35x66ND8sc5vf1sIuWPERA15EdRHeca56E09RnjZMUHkiDvdx78165h31QmM67YLi04zEBYhQS0g==} + '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-rc.1': + resolution: {integrity: sha512-ixNci2lwVD0yC4lUrmOOhgE/denI8keGVnHXYokbq0QxlQWuwuVzjVEtVMdmEaX3JaYVmEI5tr8K9MPW1zso1A==} - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-beta.50': - resolution: {integrity: sha512-aqCwW+iuN7RokH10vDp/eEwlrT4LAlHGy1pLzAS9aFVJyUutfm0I4fxLfddOKD2yd04z858zhLwOVSo4BjrLHg==} + '@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-draft-6@1.0.0-beta.50': - resolution: {integrity: sha512-trF1TZZ79WJOjQw3C1Y7wcqNMxxgHMZtJW2/tP5MwII1hqsExGzmGyUuNlVuSC9k9v/9sCj85hQlJ4TW6HFciQ==} + '@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-7@1.0.0-beta.50': - resolution: {integrity: sha512-g9VscnMwjPUYCfR6UxUwsLiIKnyXy2W28J+zN0rbijoSEtUdakcrxwdPhqwgJZHPci8NHNE8574zaocqKBiqSg==} + '@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-openapi-2@1.0.0-beta.41': - resolution: {integrity: sha512-k6fZZZGX7MXGarwM/wkXb/okOOUbEjUSZrEOzrMoHzJctYJxr0clp6p5xmoXA1SY/zkSWTIJxk1OzRl3jGthuA==} + '@swagger-api/apidom-ns-openapi-2@1.0.0-rc.1': + resolution: {integrity: sha512-SJ79fGH+WA7IYEXOJFPjXCB5bg6uoJDmkEYxMtZpN0Q+juFSkMcquh3jVf0j0y+6gFe/MZjIFDHxiBdeJarOig==} - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.50': - resolution: {integrity: sha512-I4GHyNILNxDsYKYeG1+ZA3rnfU1RAYtNp3dA+G8LCX5AB/2N7dT2VPK8HS4cj9m3ZVz7dl1o+X6tpaJIN5kDsA==} + '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.1': + resolution: {integrity: sha512-TC2EBxBFJWD5pbZKUcbySqCt2nQmeP60ooS4f4Nl5r6vB/BeNbuO4FmO7CDI8OXD7b4J2+ro5KrXMs1EOQ3kVA==} - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-beta.50': - resolution: {integrity: sha512-kxwuaFl1kQddk/RBS5Mz3rE/6v5mXggqhzVwDBObGjgkRmDRVF5nUalziBRNg6A3NcpYbsjNMU/OCA1JihFkrg==} + '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.1': + resolution: {integrity: sha512-IY87MhqFBJnzhPWlr/OEVUa3iDjZuiwlyoWX4lw2jbKX+mLDrceGG5nqZawDACAjTjvtsjJcFP81D2VmjHVT5Q==} - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-beta.41': - resolution: {integrity: sha512-nwiNhMBf48ofHWzy36s6PTFn21ChnCkvyWzM7gFc5zPFRTJkjuuhyyHfQM5z9YTRnQrbcS/JUSGMoC9SxgsHrw==} + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.1': + resolution: {integrity: sha512-1/koF8VwJHzFwk6FMWen39vpMUNcoCMXVY6MjMGag0h37LY5YAByl0LcYzLa33cvm5KCa23Aa75cu7Ns0SR1HQ==} - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-beta.41': - resolution: {integrity: sha512-xm26vEQdgIuTDcnIWYH+EDL0htZIS9XnQPRVlhSCvoSHRDifmbW3l3q9Lrrw1XEQnffHl886t6KafACDcri6Qw==} + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.1': + resolution: {integrity: sha512-Gjx1gojtYvGFqKnGttv84ba0RCkY7Xa+12kj9HVik8G+YVzUN78Qt8yu96ak0oXFlY1Ai8MQb5siC8YH4pC8Dg==} - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-beta.41': - resolution: {integrity: sha512-XBpaj6vUNVmcFMWbehOjDbVTXXTi57Y+hfGZ107lrgq0nkzzhh8Sxk+yoXmmsNs7xESc6zfO38MPZjOBSIE7xA==} + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.1': + resolution: {integrity: sha512-RHIly3bprJELMlt91UFqmMbAtIxDyHi8DM27YVXRjrX7zncP6QKyevcg2ajEe8UaNtkCFvPZW9h0gDh/ZW6ZYQ==} - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-beta.41': - resolution: {integrity: sha512-DvGfXkXOuwl6IEXTncBwTGeTOSET/LOf+oU4lkhBBgNq9GgIxiTTsIDiR2yj9IU30F+AjqNeIMdM9c0tHhU5yw==} + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.1': + resolution: {integrity: sha512-a+FweCIFAAnjvEWpMAd93xczbYX7AU4prwAMJ3QpFszltq2K7HKWUN1mMRplYPg5SSRLZojymdyMlu1evuP2Sg==} - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-beta.41': - resolution: {integrity: sha512-03OXekIQHoJ5+cUNWhx+kbzRcrRzOcUVF+oGcY/N69Pns8+6YvkgNbuTafgSHya3Zm5i9QBIngLJSmWxqRk13g==} + '@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-asyncapi-yaml-2@1.0.0-beta.41': - resolution: {integrity: sha512-tAttgr23eSWMe+xXhVrYv7qrzpEOoHxWQze6DCoeuXWQKl1IJQ4+K2h6bTid1Qt16K2/810dIT4+TzQ3EScSiw==} + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.1': + resolution: {integrity: sha512-cVu2Ue1U809HiGeAR/54yF42y4UKiWh45sEKzkXPYJUqRUd2Ewyo5KHtlckjNnCDRILZEhaPaZFpxURSbyUeSg==} - '@swagger-api/apidom-parser-adapter-json@1.0.0-beta.41': - resolution: {integrity: sha512-3mMU8+kDMVNPe7kA0UBRoX/xPRyj52AThumew3sNZnZ5Dc39hsUwlNKgKgd5LCDCvYgmeePGdg8Kp5ky5Kt9AA==} + '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.1': + resolution: {integrity: sha512-pmWOuZFxSNdbV1xNV0IoIrRiweaVl9yGAiEtiYH0BzbD+yGQSxi1ltMkZDVoyBPbe2NtygFDRaINSDLwuYpUYA==} - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.41': - resolution: {integrity: sha512-1aa2e5xbQUsg/z5uXSK2zAeE2WvqQ0J4JikRh1w/Ymm6pUnPYVuGYANxGOtH9dGTAEgNkJkSszVnpcSpDUlweA==} + '@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-openapi-json-3-0@1.0.0-beta.41': - resolution: {integrity: sha512-5raVa+iVnvrm8q9mLmH3RM9M4odkO03DPyuHb0XgTUWJqPzy+xSNKCLhzPMM6QU03ydwONVtqTor5W6h+w0HQw==} + '@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-openapi-json-3-1@1.0.0-beta.41': - resolution: {integrity: sha512-XKs9hyShyBBCfjuQYpKGPO2adatFEWvCOdmXVfXIb27w14+Sb1Ns5jOZaF2wJOoj0tJesuNELu0J3iv1UxNd5A==} + '@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-openapi-yaml-2@1.0.0-beta.41': - resolution: {integrity: sha512-JSdy8Px8p4xOgAdxJNS8YU5KVdUfehco8a6/OWX8KrcUKfXrGLd2NiLT0UtynntOrrIMrjBY0MlhuYOYs++NIw==} + '@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-openapi-yaml-3-0@1.0.0-beta.41': - resolution: {integrity: sha512-t9W3txsFrRySfa8pcoTO6/9ZwUDVcDAaRnONiV0INjx9r80dWMU1MNZ2gXfxsfgxHTuI6sO78HmZ0RtI0pCP+w==} + '@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-yaml-3-1@1.0.0-beta.41': - resolution: {integrity: sha512-xwlCzsL4u8xVTsBVNdD0eenKDAlMi/dgMJHiWPtBABAIgpUuzZILF1PCzLBMYfcRGOw+fSgnIHwkWbxVOhYNQQ==} + '@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-yaml-1-2@1.0.0-beta.41': - resolution: {integrity: sha512-oLcTxBj5ZXkkaT4MyJ+ZIoFvlO8a8zNIjPbjyPWK3lqnYdImnDxgK++8jhwgBw+5ZFp5Kc9SOQ2nor/1SPjP0g==} + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.1': + resolution: {integrity: sha512-XmRG/5lmoRusCupHEf10OeK1SQnSym4N1OrK+c3OTfN1GGX60Gxu2XCZ70pafJDuu+cvo/F8Db8UX3UOHapjwA==} - '@swagger-api/apidom-reference@1.0.0-beta.50': - resolution: {integrity: sha512-aD7gTWPgkJb9oYaC4jZPvxb7YbQKG9pWDYZigAkVGqOAbeYxUXeI00XyCLj/cH8l7KwyhTZNX70F7VnfxOkq7w==} + '@swagger-api/apidom-reference@1.0.0-rc.1': + resolution: {integrity: sha512-Xj4aYrawCseCf6N6UuGSIaboN60ERmQVcKqXs/rybQz1gnD2AVqb8gklC2sUdOIUyN+ehDy+HDSM8I+yP32J0w==} '@swaggerexpert/cookie@2.0.2': resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==} @@ -4085,9 +4349,88 @@ packages: resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==} engines: {node: '>=12.20.0'} + '@swc/core-darwin-arm64@1.15.3': + resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.15.3': + resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.15.3': + resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.15.3': + resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.15.3': + resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.15.3': + resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.15.3': + resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.15.3': + resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.15.3': + resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.15.3': + resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.15.3': + resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@t3-oss/env-core@0.13.8': resolution: {integrity: sha512-L1inmpzLQyYu4+Q1DyrXsGJYCXbtXjC4cICw1uAKv0ppYPQv656lhZPU91Qd1VS6SO/bou1/q5ufVzBGbNsUpw==} peerDependencies: @@ -4134,27 +4477,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.90.5': - resolution: {integrity: sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==} + '@tanstack/query-core@5.90.12': + resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} - '@tanstack/query-devtools@5.90.1': - resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==} + '@tanstack/query-devtools@5.91.1': + resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==} - '@tanstack/react-query-devtools@5.90.2': - resolution: {integrity: sha512-vAXJzZuBXtCQtrY3F/yUNJCV4obT/A/n81kb3+YqLbro5Z2+phdAbceO+deU3ywPw8B42oyJlp4FhO0SoivDFQ==} + '@tanstack/react-query-devtools@5.91.1': + resolution: {integrity: sha512-tRnJYwEbH0kAOuToy8Ew7bJw1lX3AjkkgSlf/vzb+NpnqmHPdWM+lA2DSdGQSLi1SU0PDRrrCI1vnZnci96CsQ==} peerDependencies: - '@tanstack/react-query': ^5.90.2 + '@tanstack/react-query': ^5.90.10 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.90.2': - resolution: {integrity: sha512-f7vJ9SHRO5GjiTBIpaSdLTczPlDybu6OzLG2thcNev55Qi69JkYsSOyUVWKpa3tGgufyJx1kDAO5lJjv4jF/bw==} + '@tanstack/react-query-next-experimental@5.91.0': + resolution: {integrity: sha512-/EbUnRBYInqoyXbPq/25fPko9JsY5r/DQVry8oR2CCU4z4hbb9ABGAOZ9jVt11OaOKxN5SGC8LE0XDSMNZCrKg==} peerDependencies: - '@tanstack/react-query': ^5.90.2 - next: ^13 || ^14 || ^15 + '@tanstack/react-query': ^5.90.8 + next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query@5.90.5': - resolution: {integrity: sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q==} + '@tanstack/react-query@5.90.12': + resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} peerDependencies: react: ^18 || ^19 @@ -4178,215 +4521,224 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@11.7.2': - resolution: {integrity: sha512-zKXpEC8dsBeqx+r8UcZR0bkS1OEz3CpT2cTaaJ1bVf9bWgBtDjcgJorXxUgSgpcy4Jd4bRfZNU3fhpnj2lZn5Q==} + '@testcontainers/mysql@11.9.0': + resolution: {integrity: sha512-XayyQs0QAKIlYVngUOyaqwjGobERXOsvjgw6vyvdYavUDx8AXpNEe2dc4sCcXSH0CgiTTcF3SzFuodjXvDecww==} - '@testcontainers/postgresql@11.7.2': - resolution: {integrity: sha512-sG0J/q/i2XWToDzoGhwNT+z1ae/65wvINg4t171rGRYdtW777w5rvin4hkT7poe5thsTrs6zBkrlF+r55Zt5/g==} + '@testcontainers/postgresql@11.9.0': + resolution: {integrity: sha512-beLyLdLygFllktviM132Xd6tQ4i5FnuyZP+4BQEjUb5sJYHYnIrV/ZBzRRflIlF8gugt1GXgudkmr/HxM9vtKw==} - '@testcontainers/redis@11.7.2': - resolution: {integrity: sha512-6AuHSV0DRsKL8CcuRevZnsLjBXhj5HjNL1HuD8dayzorMmcSzPiQ3EZriq2kYthDViFq4r6zxA8QLlTjsAT+dA==} + '@testcontainers/redis@11.9.0': + resolution: {integrity: sha512-nDDsi8d17mYK44JAkX4tI91kgoQAT4E02UJK+d2BbcYYLZJtS3tP+w+MUkDuHWrUMlqb3HiyAdhcPz2ezxn2TA==} - '@tiptap/core@2.26.4': - resolution: {integrity: sha512-F8t0Nc1OeV51CCHR1WYVMg/gOzHD2fJALUpMxF67/LDjFnxM/rarsqTQnLZuBoP9U3TfbNLSAQLZ4TCnBZnXRA==} + '@tiptap/core@3.13.0': + resolution: {integrity: sha512-iUelgiTMgPVMpY5ZqASUpk8mC8HuR9FWKaDzK27w9oWip9tuB54Z8mePTxNcQaSPb6ErzEaC8x8egrRt7OsdGQ==} peerDependencies: - '@tiptap/pm': ^2.7.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-blockquote@2.26.4': - resolution: {integrity: sha512-VGE1QDmdhAtP6/01KAeURxy7uJZo+h9U5eE0tkMY+UP6NJemqoskCSZQi0L789inQwoVsgJ7Rua8N38lRicvQA==} + '@tiptap/extension-blockquote@3.13.0': + resolution: {integrity: sha512-K1z/PAIIwEmiWbzrP//4cC7iG1TZknDlF1yb42G7qkx2S2X4P0NiqX7sKOej3yqrPjKjGwPujLMSuDnCF87QkQ==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-bold@2.26.4': - resolution: {integrity: sha512-fsvaIUg9QiYMhJqAAljyZUnJ15S+sMZJyvZLkyTr4tYfKevhnLnTkN8ju1IsiGFWkdmgKGF6DO57zX+geLFs9A==} + '@tiptap/extension-bold@3.13.0': + resolution: {integrity: sha512-VYiDN9EEwR6ShaDLclG8mphkb/wlIzqfk7hxaKboq1G+NSDj8PcaSI9hldKKtTCLeaSNu6UR5nkdu/YHdzYWTw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-bubble-menu@2.26.4': - resolution: {integrity: sha512-w7W+Llf+/ucpl+Fr5Rc0hx4XimS0RF/f2MY4evr5ayCBwYewNx8bcYRS78jL5r5fti6dJYyFeSHFz6pLbdZtsw==} + '@tiptap/extension-bubble-menu@3.13.0': + resolution: {integrity: sha512-qZ3j2DBsqP9DjG2UlExQ+tHMRhAnWlCKNreKddKocb/nAFrPdBCtvkqIEu+68zPlbLD4ukpoyjUklRJg+NipFg==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-bullet-list@2.26.4': - resolution: {integrity: sha512-oEdXrkLJO0D9qHMzazQOsKurhGaOk4onbM/91AZZCXWRfcsZOjduuNT96nk7FrsLOdatQshFxW1wPYkglBZEIA==} + '@tiptap/extension-bullet-list@3.13.0': + resolution: {integrity: sha512-fFQmmEUoPzRGiQJ/KKutG35ZX21GE+1UCDo8Q6PoWH7Al9lex47nvyeU1BiDYOhcTKgIaJRtEH5lInsOsRJcSA==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-code-block@2.26.4': - resolution: {integrity: sha512-e2zc/E1o3jgI3FhGAdxBZR1bp2PAVhAK5Q4zEX33rei7Tygioa7sbIBvW+a4Fx5+H+zp4q5rklb6gDMNnSw9qw==} + '@tiptap/extension-code-block@3.13.0': + resolution: {integrity: sha512-kIwfQ4iqootsWg9e74iYJK54/YMIj6ahUxEltjZRML5z/h4gTDcQt2eTpnEC8yjDjHeUVOR94zH9auCySyk9CQ==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-code@2.26.4': - resolution: {integrity: sha512-YNKoiUwBVuBav9ZvKm/rJDZ+SkdSr4mw54OalMF7T1XhJpFRWnGi3FxI28M4ZNFy1aLPqLVjWCH5/i6rjv+YQw==} + '@tiptap/extension-code@3.13.0': + resolution: {integrity: sha512-sF5raBni6iSVpXWvwJCAcOXw5/kZ+djDHx1YSGWhopm4+fsj0xW7GvVO+VTwiFjZGKSw+K5NeAxzcQTJZd3Vhw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-color@2.26.4': - resolution: {integrity: sha512-/r88vvIKp77qYhlZ1tDPNEb8yxwNQ7m/+1dRkg/lTbbdfMTM1m0RTRrUJGFsJL1EZhCbxuUo2OUCE+2XKTAu6A==} + '@tiptap/extension-color@3.13.0': + resolution: {integrity: sha512-I+PTZ31p6GhCjUVpCh1qertTK6T07MVGuLm/LP+c14ByMoZ0L0nVgw0YbWhDqLYWbkI9davv0fuI3dQ0gKSPlA==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style': ^2.7.0 + '@tiptap/extension-text-style': ^3.13.0 - '@tiptap/extension-document@2.26.4': - resolution: {integrity: sha512-CYg74gNpztFIeU6DGJG/8rjzmk/ZB9t+q0+U97kTfV9tb0NB+//vfFQU2VR2wcayGihxXQXqQKzx3PsiiSH5/w==} + '@tiptap/extension-document@3.13.0': + resolution: {integrity: sha512-RjU7hTJwjKXIdY57o/Pc+Yr8swLkrwT7PBQ/m+LCX5oO/V2wYoWCjoBYnK5KSHrWlNy/aLzC33BvLeqZZ9nzlQ==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-dropcursor@2.26.4': - resolution: {integrity: sha512-JySrOi9oNRuJ7hl8YXdpcYiV3WXk1oZ1Wj1HLx29usk+GCMR9vQoqN3QRhNVOcP9xG01p/4lHlePzgfKYUlkew==} + '@tiptap/extension-dropcursor@3.13.0': + resolution: {integrity: sha512-m7GPT3c/83ni+bbU8c+3dpNa8ug+aQ4phNB1Q52VQG3oTonDJnZS7WCtn3lB/Hi1LqoqMtEHwhepU2eD+JeXqQ==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/extensions': ^3.13.0 - '@tiptap/extension-floating-menu@2.26.4': - resolution: {integrity: sha512-ah9qfzZJbWTGz698lBLk7a0kRbDmPsS3yovzilS2FBMSBfKyoslThGHstIT9FHcvTNwlK9+pnPt2P8nJn8Ncmw==} + '@tiptap/extension-floating-menu@3.13.0': + resolution: {integrity: sha512-OsezV2cMofZM4c13gvgi93IEYBUzZgnu8BXTYZQiQYekz4bX4uulBmLa1KOA9EN71FzS+SoLkXHU0YzlbLjlxA==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-gapcursor@2.26.4': - resolution: {integrity: sha512-OrvnZxs9A/wpvjq6scOxEiLahJr7q0XweBe42u8O/DQoM9ZITBcEDBcG05F4YMPDBiAPv29q1L8ej5KDZ4yGfw==} + '@tiptap/extension-gapcursor@3.13.0': + resolution: {integrity: sha512-KVxjQKkd964nin+1IdM2Dvej/Jy4JTMcMgq5seusUhJ9T9P8F9s2D5Iefwgkps3OCzub/aF+eAsZe+1P5KSIgA==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/extensions': ^3.13.0 - '@tiptap/extension-hard-break@2.26.4': - resolution: {integrity: sha512-W9pITO64t37rtFFBDQeDYAGh0jq/RyUiaDQ1rzOCOCg1KlCmcKwWkXOs5pSF70VaefRhNE7y7jM2fMGOLPLJkQ==} + '@tiptap/extension-hard-break@3.13.0': + resolution: {integrity: sha512-nH1OBaO+/pakhu+P1jF208mPgB70IKlrR/9d46RMYoYbqJTNf4KVLx5lHAOHytIhjcNg+MjyTfJWfkK+dyCCyg==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-heading@2.26.4': - resolution: {integrity: sha512-73CpXKCTyWPe1j6PBo2avNjNdtqEf5HU6GxfV32Zl0t76vRkwp1yLFOiZgJfir9c8CQB3coW6/itaCTozM//PA==} + '@tiptap/extension-heading@3.13.0': + resolution: {integrity: sha512-8VKWX8waYPtUWN97J89em9fOtxNteh6pvUEd0htcOAtoxjt2uZjbW5N4lKyWhNKifZBrVhH2Cc2NUPuftCVgxw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-highlight@2.26.4': - resolution: {integrity: sha512-UKwH7kCf6BLOBZFmwz+AJSxd8uNyRqq4LX6+hDZfGjWWCfeSOFhakKS6Z1Rebs5eGDvoX65V20nLL5yyVHnnEQ==} + '@tiptap/extension-highlight@3.13.0': + resolution: {integrity: sha512-VlXyO8gWhWd0W5ln4Qyr/P1RoAVZkk9ge0jjNsb1bOc078wuvufQ9f6DquMxx0WpcaCXy+DBQLE0GUUqoLvjsQ==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-history@2.26.4': - resolution: {integrity: sha512-Z9QBePNCES8wuEeorSrINLEhrlddfVQI2gx3BZJyjFdDiTSI4bX5Iai5k/azbbBUgzJIzsPOjibqcIJTqmBcfw==} + '@tiptap/extension-horizontal-rule@3.13.0': + resolution: {integrity: sha512-ZUFyORtjj22ib8ykbxRhWFQOTZjNKqOsMQjaAGof30cuD2DN5J5pMz7Haj2fFRtLpugWYH+f0Mi+WumQXC3hCw==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-horizontal-rule@2.26.4': - resolution: {integrity: sha512-Z51x9mAnXOCKvpzh7FiHrCHYk1rtFCZcQrIoosva2pyH1raD4dp8WhJf5owOkBW1+F6Svuy0ulhW1ce3BWTCfg==} + '@tiptap/extension-image@3.13.0': + resolution: {integrity: sha512-223uzLUkIa1rkK7aQK3AcIXe6LbCtmnpVb7sY5OEp+LpSaSPyXwyrZ4A0EO1o98qXG68/0B2OqMntFtA9c5Fbw==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-image@2.26.4': - resolution: {integrity: sha512-cS5M+CbjhXBjaYPhNK9QQ/T9gMyxdwAWTzkKuKlXgpQhVPj43RJhhx9HP5vrPCYLvgiVRys5n99+61JHD8LbqA==} + '@tiptap/extension-italic@3.13.0': + resolution: {integrity: sha512-XbVTgmzk1kgUMTirA6AGdLTcKHUvEJoh3R4qMdPtwwygEOe7sBuvKuLtF6AwUtpnOM+Y3tfWUTNEDWv9AcEdww==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-italic@2.26.4': - resolution: {integrity: sha512-s1KqOejvPR8LhNIeCfXonXEJPKMS/R9sCx9eWHsVTsYvD3+RKxyw/UDTZ29jGOWLn0qlepL/tA032hH3x3qBlQ==} + '@tiptap/extension-link@3.13.0': + resolution: {integrity: sha512-LuFPJ5GoL12GHW4A+USsj60O90pLcwUPdvEUSWewl9USyG6gnLnY/j5ZOXPYH7LiwYW8+lhq7ABwrDF2PKyBbA==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-link@2.26.4': - resolution: {integrity: sha512-FaoWLFvx79WTZU/EK5WcaSzre1xEkq0GyeMru/hEgwJW1sF5QSOji5jPA72UBophNv4P02okKvlTJLNmmHmUDA==} + '@tiptap/extension-list-item@3.13.0': + resolution: {integrity: sha512-63NbcS/XeQP2jcdDEnEAE3rjJICDj8y1SN1h/MsJmSt1LusnEo8WQ2ub86QELO6XnD3M04V03cY6Knf6I5mTkw==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-list-item@2.26.4': - resolution: {integrity: sha512-mSIkBqAwSG1ABRfaUvMjsUMrVotjDDw6LZZ2MdF48d/PDiCXDrBe/BHXPyD8lUZpVRTBbw4U95ai4RP/urSimg==} + '@tiptap/extension-list-keymap@3.13.0': + resolution: {integrity: sha512-P+HtIa1iwosb1feFc8B/9MN5EAwzS+/dZ0UH0CTF2E4wnp5Z9OMxKl1IYjfiCwHzZrU5Let+S/maOvJR/EmV0g==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-ordered-list@2.26.4': - resolution: {integrity: sha512-TAi9zMdyE3WlXC8u9eZBdo6UnlcjoBAaF1rwZt4bneAMsS6ksdpyTYoLkazxpMS7IHEwY8zB4hfQrUkk/TBf2g==} + '@tiptap/extension-list@3.13.0': + resolution: {integrity: sha512-MMFH0jQ4LeCPkJJFyZ77kt6eM/vcKujvTbMzW1xSHCIEA6s4lEcx9QdZMPpfmnOvTzeoVKR4nsu2t2qT9ZXzAw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-paragraph@2.26.4': - resolution: {integrity: sha512-3ZLqtxtN0ymHzgTFoHcs/wkptLMDFNjqsK/CuShBwWmlh5OOe1CmJ0WadBuydjgngMle4urS4+7i6c9kfgOWSg==} + '@tiptap/extension-ordered-list@3.13.0': + resolution: {integrity: sha512-QuDyLzuK/3vCvx9GeKhgvHWrGECBzmJyAx6gli2HY+Iil7XicbfltV4nvhIxgxzpx3LDHLKzJN9pBi+2MzX60g==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-placeholder@2.26.4': - resolution: {integrity: sha512-hhBV4t4nojCA4Gyk6k/nPDGg8OuxPjdmtQJUo6Rj0YcSZ2qYdfUTpyfULeFSld85uyuLnQ7H2wSNKoSEpGuQmw==} + '@tiptap/extension-paragraph@3.13.0': + resolution: {integrity: sha512-9csQde1i0yeZI5oQQ9e1GYNtGL2JcC2d8Fwtw9FsGC8yz2W0h+Fmk+3bc2kobbtO5LGqupSc1fKM8fAg5rSRDg==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-strike@2.26.4': - resolution: {integrity: sha512-r65un0UFa0caHBGQlfO+4zaFY+TKeoQ2svCNs8OWHgqVBbqzeuGKKyV++2rUPvTIu5/4K34IOpeEoonkLZYTog==} + '@tiptap/extension-placeholder@3.13.0': + resolution: {integrity: sha512-Au4ktRBraQktX9gjSzGWyJV6kPof7+kOhzE8ej+rOMjIrHbx3DCHy1CJWftSO9BbqIyonjsFmm4nE+vjzZ3Z5Q==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extensions': ^3.13.0 - '@tiptap/extension-table-cell@2.26.4': - resolution: {integrity: sha512-HLdgbeBmvoHdb5iuykCLBGiHZdPGwJIpnACUS0fn0uG9MRiLkKX7EcYxNvpTNGtyWDDm46zv9edO0zx/44/ETg==} + '@tiptap/extension-strike@3.13.0': + resolution: {integrity: sha512-VHhWNqTAMOfrC48m2FcPIZB0nhl6XHQviAV16SBc+EFznKNv9tQUsqQrnuQ2y6ZVfqq5UxvZ3hKF/JlN/Ff7xw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-table-header@2.26.4': - resolution: {integrity: sha512-xrsE6su4LxpVCcVBBQm3okY6NE9IJ9VQhldioigV0ACd5yVeOuS2ff0B0DpKvOwCFM2wLfwL6ZN5tl9ELQ/71g==} + '@tiptap/extension-table-cell@3.13.0': + resolution: {integrity: sha512-dBOPeLe2NqymZI8reS2yZRIcgfIYHudCq4lDWZBJ5NiMvoy0b/fVe1qYSP4EcfBQMpfgAP0E05bMB3C7p1kmkw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-table': ^3.13.0 - '@tiptap/extension-table-row@2.26.4': - resolution: {integrity: sha512-FOhs9UcRvev3va20hcoyK7Wnzq/Yb+h5+KW9qsstKcK+UQ1QWfVCtuLzJF/dTup0CDQ2lBTUrArgd5fFcZKTAw==} + '@tiptap/extension-table-header@3.13.0': + resolution: {integrity: sha512-ZA5lhcek0VlKupqj3WFgE6bj5vNRmxcpDqjYc6RWaxuva4dYfEQSqdlG+3a53Sr53le0grfBpolM8zJFCVYrcw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-table': ^3.13.0 - '@tiptap/extension-table@2.26.4': - resolution: {integrity: sha512-KdIpm2VUM+Q/msDthRANQxyUZfcwW1p6EFmBNY2aL/BicdbwbZIGJVeO0MRFBFW65GqqN30hfhpSTsHsHd8m3Q==} + '@tiptap/extension-table-row@3.13.0': + resolution: {integrity: sha512-FdsMTIBNleZtWJEhXE/PBxkB8L9YJtnKs7YZNesLKqLn6/sWZl+X5e5SAAN/N3DLOEAwNCa/m0C3A1DWGNz/tw==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/extension-table': ^3.13.0 - '@tiptap/extension-task-item@2.26.4': - resolution: {integrity: sha512-uRqN/pxwHPhOZy6GeqlxUtVeWfBduna0Mkq/J6nkHumQ2ObcCfHZCQv1fDrQY2l6umR2N4wVmWBhnlGdEDhimg==} + '@tiptap/extension-table@3.13.0': + resolution: {integrity: sha512-LcH9KE4QBUJ6IPwt1Uo5iU7zatFjUUvXbctIu2fKQ9nqJ7nNSFxRhkNyporVFkTWYH7/rb0qMoF1VxSUGefG5w==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 - '@tiptap/extension-task-list@2.26.4': - resolution: {integrity: sha512-UKYb8rj8ZOzRXUZJA9YaFwrcuHxKlp4O4ah+o+46adw/26TnuKoHQBeEeqQSUSNzITxUa6/+Wq3lkl0YmnHuKQ==} + '@tiptap/extension-task-item@3.13.0': + resolution: {integrity: sha512-4+IkwoKchHQSxzEtVgpjSTJ/ey++Vf9WFiaY0o1ijmvQ7XvvXv4ZvO7uJrawShCIf0tmA56fjuMcZc5qJITQKQ==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-text-align@2.26.4': - resolution: {integrity: sha512-cWWWzXEPMGMBnUtCqwEcjAo/j6QOVXJJB3zpyDXjqbzRipA4F1ZlDeH3bykwtPYEFgajodWDPQKulgP0ft82vw==} + '@tiptap/extension-task-list@3.13.0': + resolution: {integrity: sha512-oqJrLR3yKlSwDDr6CCF27g2bDybFcvkTyn/HReFpteziGeQs2DWJ5sY+tSWX1eKhnTnZbEjG5G/oie/vJqIIow==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/extension-list': ^3.13.0 - '@tiptap/extension-text-style@2.26.4': - resolution: {integrity: sha512-+7bxvgu4C2+NkUSOQ8x25Mwulk7qTbm4Ck+uoYWxTFsj27FvtvaMx65GcQDAC9tNPLtcYumWTRP/T7zsfG1Y/Q==} + '@tiptap/extension-text-align@3.13.0': + resolution: {integrity: sha512-hebIus9tdXWb+AmhO+LTeUxZLdb0tqwdeaL/0wYxJQR5DeCTlJe6huXacMD/BkmnlEpRhxzQH0FrmXAd0d4Wgg==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-text@2.26.4': - resolution: {integrity: sha512-mTFRN4mM84RPjTyoNMeUovvRMbDNwK4XGNTXUX4wdKEt6p+L+YkUqcIQCQ7idPwbFFVIBa2M1N8BFRgQ33s06w==} + '@tiptap/extension-text-style@3.13.0': + resolution: {integrity: sha512-M7ob3pfYNYgFPihncEp33r9477hXQgC8j3iU8BsewvPlSx2bMSy5jp2XHDXyEX8dV6flr7acH4GkXXw+DHpaPA==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/extension-underline@2.26.4': - resolution: {integrity: sha512-Xhdk+BxXcweWEN/H/I78KpvHruq1qh4PXgsb/1Xhk3aL6SJCoY7BebRXgEce504gkef/Rl2/VZXdxT+vahyiXQ==} + '@tiptap/extension-text@3.13.0': + resolution: {integrity: sha512-VcZIna93rixw7hRkHGCxDbL3kvJWi80vIT25a2pXg0WP1e7Pi3nBYvZIL4SQtkbBCji9EHrbZx3p8nNPzfazYw==} peerDependencies: - '@tiptap/core': ^2.7.0 + '@tiptap/core': ^3.13.0 - '@tiptap/pm@2.26.4': - resolution: {integrity: sha512-1YFQ1FiObqHt5iDeOcxwz83+6wVQG2InqB9CI3uQRx2G7+ijdWPI5/Y78aTDUTqQiabi2k3fCtiqRSgLKXwNqA==} - - '@tiptap/react@2.26.4': - resolution: {integrity: sha512-U7dDiUtJArOF9Ahzt3m0zm8CQRqamjvLYGtsedadfBYrd3GB72ByJ2q2PJ8u2KE2dFN1R4aGMYZq8GqX2p2XgA==} + '@tiptap/extension-underline@3.13.0': + resolution: {integrity: sha512-VDQi+UYw0tFnfghpthJTFmtJ3yx90kXeDwFvhmT8G+O+si5VmP05xYDBYBmYCix5jqKigJxEASiBL0gYOgMDEg==} peerDependencies: - '@tiptap/core': ^2.7.0 - '@tiptap/pm': ^2.7.0 + '@tiptap/core': ^3.13.0 + + '@tiptap/extensions@3.13.0': + resolution: {integrity: sha512-i7O0ptSibEtTy+2PIPsNKEvhTvMaFJg1W4Oxfnbuxvaigs7cJV9Q0lwDUcc7CPsNw2T1+44wcxg431CzTvdYoA==} + peerDependencies: + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 + + '@tiptap/pm@3.13.0': + resolution: {integrity: sha512-WKR4ucALq+lwx0WJZW17CspeTpXorbIOpvKv5mulZica6QxqfMhn8n1IXCkDws/mCoLRx4Drk5d377tIjFNsvQ==} + + '@tiptap/react@3.13.0': + resolution: {integrity: sha512-VqpqNZ9qtPr3pWK4NsZYxXgLSEiAnzl6oS7tEGmkkvJbcGSC+F7R13Xc9twv/zT5QCLxaHdEbmxHbuAIkrMgJQ==} + peerDependencies: + '@tiptap/core': ^3.13.0 + '@tiptap/pm': ^3.13.0 + '@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@2.26.4': - resolution: {integrity: sha512-bcoBXGXKOhjBZK7M5cQ1LqYZsFsT7TwbOyM4FA71noptI9BWG10EeNo2i1EkvSEHVM0YKs8Z3HckdEqgL4XOEQ==} + '@tiptap/starter-kit@3.13.0': + resolution: {integrity: sha512-Ojn6sRub04CRuyQ+9wqN62JUOMv+rG1vXhc2s6DCBCpu28lkCMMW+vTe7kXJcEdbot82+5swPbERw9vohswFzg==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -4399,19 +4751,19 @@ packages: tree-sitter: optional: true - '@trpc/client@11.6.0': - resolution: {integrity: sha512-DyWbYk2hd50BaVrXWVkaUnaSwgAF5g/lfBkXtkF1Aqlk6BtSzGUo3owPkgqQO2I5LwWy1+ra9TsSfBBvIZpTwg==} + '@trpc/client@11.7.2': + resolution: {integrity: sha512-OQxqUMfpDvjcszo9dbnqWQXnW2L5IbrKSz2H7l8s+mVM3EvYw7ztQ/gjFIN3iy0NcamiQfd4eE6qjcb9Lm+63A==} peerDependencies: - '@trpc/server': 11.6.0 + '@trpc/server': 11.7.2 typescript: '>=5.7.2' - '@trpc/next@11.6.0': - resolution: {integrity: sha512-LVzXQ4f3pyOJDMA0qXaWkTnnJtnRgzDvW5c1SPuragI69r9mG+Qs0+SgeekV/buSqUy35wMYVvwuEB/DfKvODw==} + '@trpc/next@11.7.2': + resolution: {integrity: sha512-eZQeZag+/aJMxV6ucfyVdcgE7I6o88tldyBi+AFVCD8fPUjssRT7qOqR/THSaTLHjDl20Ok9gN0Sn1bmMEa+1w==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.6.0 - '@trpc/react-query': 11.6.0 - '@trpc/server': 11.6.0 + '@trpc/client': 11.7.2 + '@trpc/react-query': 11.7.2 + '@trpc/server': 11.7.2 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4422,27 +4774,27 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.6.0': - resolution: {integrity: sha512-xljUCzROa23cC89SEd5fwbKiWrGus2NDwtg8zszPlsFvaByWW50Jx6y5sLPXhp/g1FBsEtCInNNhEEL0UCHwGw==} + '@trpc/react-query@11.7.2': + resolution: {integrity: sha512-IcLDMqx2mvlGRxkr0/m37TtPvRQ8nonITH3EwYv436x0Igx8eduR9z4tdgGBsjJY9e5W1G7cZ4zKCwrizSimFQ==} peerDependencies: '@tanstack/react-query': ^5.80.3 - '@trpc/client': 11.6.0 - '@trpc/server': 11.6.0 + '@trpc/client': 11.7.2 + '@trpc/server': 11.7.2 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.6.0': - resolution: {integrity: sha512-skTso0AWbOZck40jwNeYv++AMZXNWLUWdyk+pB5iVaYmEKTuEeMoPrEudR12VafbEU6tZa8HK3QhBfTYYHDCdg==} + '@trpc/server@11.7.2': + resolution: {integrity: sha512-AgB26PXY69sckherIhCacKLY49rxE2XP5h38vr/KMZTbLCL1p8IuIoKPjALTcugC2kbyQ7Lbqo2JDVfRSmPmfQ==} peerDependencies: typescript: '>=5.7.2' - '@trpc/tanstack-react-query@11.6.0': - resolution: {integrity: sha512-254OpGV2RT9Djl6HRJmokDMT4pZz3beLs+8/T35ySfBxiC5OdEsOeESIJpC302YaZcCGwkOZ+d+FKFXgpy0YtQ==} + '@trpc/tanstack-react-query@11.7.2': + resolution: {integrity: sha512-3XrY0b8lV0Fhj4Z2hVn1d1ZJzq2/stbc2F1e9Y6RrUWOfLmOKHlEVHYO1QfDGM6rqj66DkUj7eA593hAI0VTkQ==} peerDependencies: '@tanstack/react-query': ^5.80.3 - '@trpc/client': 11.6.0 - '@trpc/server': 11.6.0 + '@trpc/client': 11.7.2 + '@trpc/server': 11.7.2 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' @@ -4462,12 +4814,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.5.8': - resolution: {integrity: sha512-PknlZnl4NzARv9p2KnRIA2q9cGWzrvv2G5moWLoZRTLspoE7jL2XtejzwbclS2iXGbXQWk27BfIugv98tS2s7w==} + '@turbo/gen@2.6.3': + resolution: {integrity: sha512-q1QrS6ukleoCoNV0eTflMeDxJSdDJkQt0idfN/8TrMqrcOl1oRI3iYpizZR0paiPWe7lTpRr6fG7pGSKGZ+15A==} hasBin: true - '@turbo/workspaces@2.5.8': - resolution: {integrity: sha512-EE/27azLteK24It0B0IrjA7yWFC6jYZoTTUzL7R7HgiN0BWBPrTp6Ugpn0iE6+Bn9fFcjSp/IBBG8D8c7vXD1g==} + '@turbo/workspaces@2.6.3': + resolution: {integrity: sha512-RLOjHQIZeCGwVBCRr8pfyshUJn2wx8s5n1H0O9fhpsL6qaWKi9gKoUJMr8BMVJApJGrspJ/QkQzsL8gLicpZbQ==} hasBin: true '@types/adm-zip@0.5.7': @@ -4503,8 +4855,8 @@ packages: '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - '@types/chroma-js@3.1.1': - resolution: {integrity: sha512-SFCr4edNkZ1bGaLzGz7rgR1bRzVX4MmMxwsIa3/Bh6ose8v+hRpneoizHv0KChdjxaXyjRtaMq7sCuZSzPomQA==} + '@types/chroma-js@3.1.2': + resolution: {integrity: sha512-YBTQqArPN8A0niHXCwrO1z5x++a+6l0mLBykncUpr23oIPW7L4h39s6gokdK/bDrPmSh8+TjMmrhBPnyiaWPmQ==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -4560,8 +4912,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.45': - resolution: {integrity: sha512-iYpZF+xr5QLpIICejLdUF2r5gh8IXY1Gw3WLmt41dUbS3Vn/3hVgL+6lJBVbmrhYBWfbWPPstdr6+A0s95DTWA==} + '@types/dockerode@3.3.47': + resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -4578,9 +4930,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -4635,14 +4984,14 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@24.9.2': - resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} + '@types/node@24.10.3': + resolution: {integrity: sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/pg@8.15.5': - resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} + '@types/pg@8.15.6': + resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -4656,13 +5005,13 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.2.2': - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.2': - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + '@types/react@19.2.7': + resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -4718,63 +5067,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.46.2': - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + '@typescript-eslint/eslint-plugin@8.49.0': + resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.2 + '@typescript-eslint/parser': ^8.49.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.2': - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + '@typescript-eslint/parser@8.49.0': + resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.2': - resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + '@typescript-eslint/project-service@8.49.0': + resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.2': - resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + '@typescript-eslint/scope-manager@8.49.0': + resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.2': - resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + '@typescript-eslint/tsconfig-utils@8.49.0': + resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.2': - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + '@typescript-eslint/type-utils@8.49.0': + resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + '@typescript-eslint/types@8.49.0': + resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.2': - resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + '@typescript-eslint/typescript-estree@8.49.0': + resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.2': - resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + '@typescript-eslint/utils@8.49.0': + resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.2': - resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + '@typescript-eslint/visitor-keys@8.49.0': + resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -4800,54 +5149,54 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-react@5.1.0': - resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==} + '@vitejs/plugin-react@5.1.2': + resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: '>=7.1.12' + vite: '>=7.2.7' - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.0.15': + resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.0.15 + vitest: 4.0.15 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.0.15': + resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.0.15': + resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 - vite: '>=7.1.12' + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.0.15': + resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.0.15': + resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.0.15': + resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.0.15': + resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} - '@vitest/ui@3.2.4': - resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} + '@vitest/ui@4.0.15': + resolution: {integrity: sha512-sxSyJMaKp45zI0u+lHrPuZM1ZJQ8FaVD35k+UxVrha1yyvQ+TZuUYllUixwvQXlB7ixoDc7skf3lQPopZIvaQw==} peerDependencies: - vitest: 3.2.4 + vitest: 4.0.15 - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.0.15': + resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -5025,6 +5374,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -5033,8 +5386,8 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} any-promise@1.3.0: @@ -5132,10 +5485,6 @@ packages: asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -5151,8 +5500,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.3: - resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==} + ast-v8-to-istanbul@0.3.8: + resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} @@ -5202,6 +5551,9 @@ packages: b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + babel-plugin-syntax-hermes-parser@0.21.1: resolution: {integrity: sha512-tUCEa+EykZx3oJXc+PolKz2iwDscCJ2hCONMvEqjAb4jIQH5ZapDd5Brs2Nk4TQpSJ/1Ykz53ksQbevXbF0wxg==} @@ -5256,6 +5608,10 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} + baseline-browser-mapping@2.8.29: + 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'} @@ -5270,9 +5626,9 @@ packages: before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} - better-sqlite3@12.4.1: - resolution: {integrity: sha512-3yVdyZhklTiNrtg+4WqHpJpFDd+WHTg2oM7UcR80GqL05AOV0xEJzc6qNvFYoEtE+hRp1n9MpN6/+4yhlGkDXQ==} - engines: {node: 20.x || 22.x || 23.x || 24.x} + better-sqlite3@12.5.0: + resolution: {integrity: sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==} + engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} @@ -5314,6 +5670,11 @@ 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==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -5339,10 +5700,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -5382,15 +5739,15 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001703: - resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} + caniuse-lite@1.0.30001755: + resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@6.2.1: + resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + engines: {node: '>=18'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5418,31 +5775,18 @@ packages: character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - chokidar@4.0.0: resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} engines: {node: '>= 14.16.0'} @@ -5450,8 +5794,8 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chroma-js@3.1.2: - resolution: {integrity: sha512-IJnETTalXbsLx1eKEgx19d5L6SRM7cH4vINw/99p/M11HCuXGRWL+6YmCm7FWFGIo6dtWuQoQi1dc5yQ7ESIHg==} + chroma-js@3.2.0: + resolution: {integrity: sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==} chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} @@ -5555,17 +5899,10 @@ packages: resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==} engines: {node: '>=12.20'} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-string@2.1.2: resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} engines: {node: '>=18'} - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - color@5.0.2: resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==} engines: {node: '>=18'} @@ -5574,9 +5911,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -5733,12 +6067,12 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.1: - resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} + cssstyle@5.3.4: + resolution: {integrity: sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==} engines: {node: '>=20'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} @@ -5819,8 +6153,8 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dayjs@1.11.18: - resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -5879,10 +6213,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -5939,6 +6269,9 @@ packages: destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-indent@7.0.1: resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} engines: {node: '>=12.20'} @@ -5948,8 +6281,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-newline@4.0.1: @@ -5974,8 +6307,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dns-caching@0.2.7: - resolution: {integrity: sha512-48fgJWH9aUHPN+TOmbozx1hxX9YoCsEkZzR/wHKRFPFx0NZtmSgtZY3M0Vsl7x/fDcq3mCI3SMgyTKVgZZrogg==} + 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==} @@ -6002,6 +6335,9 @@ 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==} @@ -6009,12 +6345,12 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv-cli@10.0.0: - resolution: {integrity: sha512-lnOnttzfrzkRx2echxJHQRB6vOAMSCzzZg79IxpC00tU42wZPuZkQxNNrrwVAxaQZIIh001l4PxVlCrBxngBzA==} + dotenv-cli@11.0.0: + resolution: {integrity: sha512-r5pA8idbk7GFWuHEU7trSTflWcdBpQEK+Aw17UrSHjS6CReuhrrPcyC3zcQBPQvhArRHnBo/h6eLH1fkCvNlww==} hasBin: true - dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} engines: {node: '>=12'} dotenv@16.0.3: @@ -6033,12 +6369,12 @@ packages: resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} engines: {node: '>=4'} - drizzle-kit@0.31.5: - resolution: {integrity: sha512-+CHgPFzuoTQTt7cOYCV6MOw2w8vqEn/ap1yv4bpZOWL03u7rlVRQhUY0WYT3rHsgVTXwYQDZaSUJSQrMBUKuWg==} + drizzle-kit@0.31.8: + resolution: {integrity: sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==} hasBin: true - drizzle-orm@0.44.7: - resolution: {integrity: sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==} + drizzle-orm@0.45.0: + resolution: {integrity: sha512-lyd9VRk3SXKRjV/gQckQzmJgkoYMvVG3A2JAV0vh3L+Lwk+v9+rK5Gj0H22y+ZBmxsrRBgJ5/RbQCN7DWd1dtQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -6145,12 +6481,15 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.13.10: - resolution: {integrity: sha512-f2n51BJJ25G9rb/C1ClkgsVFXH6YTkCHmd6ebpu6cAkwQxfhnfbkVWKgkn3nyW9YnC9z4K8bGohRYaZ+HyWtLg==} + effect@3.19.4: + resolution: {integrity: sha512-gApFffMwpDVgmw/FzCaYWt6zw4m0xAnQf5+cPS0+Sl85AxfeovJeEIsiEQVlk+ZvtBYcoPXxi65GIyruzanQ5g==} 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.55: resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} @@ -6187,8 +6526,8 @@ packages: resolution: {integrity: sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -6199,10 +6538,6 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - env-ci@11.1.0: - resolution: {integrity: sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==} - engines: {node: ^18.17 || >=20.6.1} - env-ci@11.2.0: resolution: {integrity: sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==} engines: {node: ^18.17 || >=20.6.1} @@ -6290,10 +6625,15 @@ packages: esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: - esbuild: '>=0.25.11' + esbuild: '>=0.27.1' - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.1: + resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} engines: {node: '>=18'} hasBin: true @@ -6328,8 +6668,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.5.8: - resolution: {integrity: sha512-wzxmN7dJNFGDwOvR/4j8U2iaIH/ruYez8qg/sCKrezJ3+ljbFMvJLmgKKt/1mDuyU9wj5aZqO6VijP3QH169FA==} + eslint-config-turbo@2.6.3: + resolution: {integrity: sha512-HS6aanr+Cg4X1Ss8AObgdsa9LvSi1rHAU7sHWqD4MWKe+/4uPt0Zqt6VqX1QMIJI6bles+QxSpMPnahMN9hPLg==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6386,8 +6726,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.5.8: - resolution: {integrity: sha512-bVjx4vTH0oTKIyQ7EGFAXnuhZMrKIfu17qlex/dps7eScPnGQLJ3r1/nFq80l8xA+8oYjsSirSQ2tXOKbz3kEw==} + eslint-plugin-turbo@2.6.3: + resolution: {integrity: sha512-91WZ+suhT/pk+qNS0/rqT43xLUlUblsa3a8jKmAStGhkJCmR2uX0oWo/e0Edb+It8MdnteXuYpCkvsK4Vw8FtA==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6408,8 +6748,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.38.0: - resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} + eslint@9.39.1: + resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6489,8 +6829,8 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} extend@3.0.2: @@ -6517,6 +6857,10 @@ packages: resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==} engines: {node: '>=6.0.0'} + fast-equals@5.3.3: + resolution: {integrity: sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==} + engines: {node: '>=6.0.0'} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -6543,15 +6887,11 @@ packages: fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - fast-xml-parser@5.3.0: - resolution: {integrity: sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==} + fast-xml-parser@5.3.2: + resolution: {integrity: sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==} hasBin: true faster-babel-types@0.1.0: @@ -6560,8 +6900,8 @@ packages: peerDependencies: '@babel/types': ^7 - fastify@5.6.1: - resolution: {integrity: sha512-WjjlOciBF0K8pDUPZoGPhqhKrQJ02I8DKaDIfO51EL0kbSMwQFl85cRwhOvmSDWoukNOdTo27gLN549pLCcH7Q==} + fastify@5.6.2: + resolution: {integrity: sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -6633,6 +6973,10 @@ packages: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} engines: {node: '>=18'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -6678,8 +7022,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} format@0.2.2: @@ -6799,6 +7143,9 @@ 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.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -6826,14 +7173,13 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} - hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -6882,9 +7228,6 @@ packages: resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} engines: {node: '>=10'} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - h3@1.15.1: resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} @@ -6935,8 +7278,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} @@ -6944,8 +7287,8 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + 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==} @@ -6962,8 +7305,8 @@ packages: highlightjs-vue@1.0.0: resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - hono@4.10.3: - resolution: {integrity: sha512-2LOYWUbnhdxdL8MNbNg9XZig6k+cZXm5IjHn2Aviv7honhBMOHb+jxrKIeJRZJRmn+htUCKhaicxwXuUDlchRA==} + hono@4.10.8: + resolution: {integrity: sha512-DDT0A0r6wzhe8zCGoYOmMeuGu3dyTAE40HHjwUsWFTEy5WxK1x2WDSsBPlEXgPbRIFY6miDualuUDbasPogIww==} engines: {node: '>=16.9.0'} hook-std@4.0.0: @@ -7093,6 +7436,10 @@ packages: 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'} + inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -7159,15 +7506,9 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} @@ -7182,9 +7523,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -7239,9 +7577,6 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -7268,9 +7603,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -7444,6 +7776,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + isomorphic-dompurify@2.34.0: + resolution: {integrity: sha512-7VeB/tDBQ8jt1+syT563hmmejY01nuwizpUIFPfM1aw3iTgLLiVP4/Nh+PKhNoa1V/H+E6ZlNcowsXLbChPCpw==} + engines: {node: '>=20.19.5'} + isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} @@ -7468,8 +7804,8 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} iterator.prototype@1.1.4: @@ -7479,10 +7815,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - java-properties@1.0.2: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} @@ -7494,8 +7826,8 @@ packages: jose@6.0.8: resolution: {integrity: sha512-EyUPtOKyTYq+iMOszO42eobQllaIjJnwkZ2U93aJzNyPibCy7CEvT9UQnaCVB51IAd49gbNdCew1c0LcLTCB2g==} - jotai@2.15.0: - resolution: {integrity: sha512-nbp/6jN2Ftxgw0VwoVnOg0m5qYM1rVcfvij+MZx99Z5IK13eGve9FJoCwGv+17JvVthTjhSmNtT5e1coJnr6aw==} + jotai@2.15.2: + resolution: {integrity: sha512-El86CCfXNMEOytp20NPfppqGGmcp6H6kIA+tJHdmASEUURJCYW4fh8nTHEnB8rUXEFAY1pm8PdHPwnrcPGwdEg==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -7512,8 +7844,8 @@ packages: react: optional: true - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} js-file-download@0.4.12: resolution: {integrity: sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==} @@ -7528,12 +7860,16 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@27.0.1: - resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==} - engines: {node: '>=20'} + jsdom@27.3.0: + resolution: {integrity: sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -7625,8 +7961,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - ldapts@8.0.9: - resolution: {integrity: sha512-6UwfVFUX0Yp5XFY8ST0p9sytpmHGNm32GehI/dq4HuA3pL5kh0AceHBSfowv+cutIJFQnfBZmBo/6cnj87JDqA==} + ldapts@8.0.18: + resolution: {integrity: sha512-qsQjT97SXhQw+WbH5gdO7OYhZ18fMQX/+akD0tfUqEQKF/GN9FQzwaV6XAFgN+8NR1gtLwTHBboxqFe5wDJFhQ==} engines: {node: '>=20'} levn@0.4.1: @@ -7649,8 +7985,8 @@ packages: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@2.0.4: @@ -7730,12 +8066,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} - lower-case-first@1.0.2: resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} @@ -7748,18 +8078,14 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} - engines: {node: 20 || >=22} - 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@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7774,11 +8100,11 @@ packages: m3u8-parser@7.2.0: resolution: {integrity: sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -7978,8 +8304,8 @@ packages: resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==} engines: {node: '>=6'} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -8110,8 +8436,11 @@ packages: nodemailer: optional: true - next-intl@4.4.0: - resolution: {integrity: sha512-QHqnP9V9Pe7Tn0PdVQ7u1Z8k9yCkW5SJKeRy2g5gxzhSt/C01y3B9qNxuj3Fsmup/yreIHe6osxU6sFa+9WIkQ==} + next-intl-swc-plugin-extractor@4.5.8: + resolution: {integrity: sha512-hscCKUv+5GQ0CCNbvqZ8gaxnAGToCgDTbL++jgCq8SCk/ljtZDEeQZcMk46Nm6Ynn49Q/JKF4Npo/Sq1mpbusA==} + + next-intl@4.5.8: + resolution: {integrity: sha512-BdN6494nvt09WtmW5gbWdwRhDDHC/Sg7tBMhN7xfYds3vcRCngSDXat81gmJkblw9jYOv8zXzzFJyu5VYXnJzg==} 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 @@ -8120,9 +8449,9 @@ packages: typescript: optional: true - next@15.5.6: - resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + next@16.0.10: + resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -8225,10 +8554,17 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -8371,13 +8707,19 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - octokit@5.0.4: - resolution: {integrity: sha512-4n/mMoLQs2npBE+aTG5o4H+hZhFKu8aDqZFP/nmUNRUYrTpXpaqvX1ppK5eiCtQ+uP/8jI6vbdfCB2udlBgccA==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + octokit@5.0.5: + resolution: {integrity: sha512-4+/OFSqOjoyULo7eN7EA97DE0Xydj/PW5aIckxqQIoFjFwqXKuFCvXUJObyJfBF9Khu4RL/jlDRI9FPaMGfPnw==} engines: {node: '>= 20'} ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + ohash@1.1.4: resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} @@ -8488,8 +8830,8 @@ packages: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + 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==} @@ -8501,9 +8843,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -8519,6 +8858,10 @@ packages: 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'} + parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} @@ -8572,8 +8915,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-type@4.0.0: @@ -8586,10 +8929,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - pg-cloudflare@1.2.7: resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} @@ -8638,10 +8977,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -8656,8 +8991,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.7.0: - resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==} + pino@10.1.0: + resolution: {integrity: sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==} hasBin: true piscina@4.6.1: @@ -8681,6 +9016,9 @@ packages: engines: {node: '>=18'} hasBin: true + po-parser@1.0.2: + resolution: {integrity: sha512-yTIQL8PZy7V8c0psPoJUx7fayez+Mo/53MZgX9MPuPHx+Dt+sRPNuRbI+6Oqxnddhkd68x4Nlgon/zizL1Xg+w==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -8759,16 +9097,16 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@2.5.19: - resolution: {integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==} + prettier-plugin-packagejson@2.5.20: + resolution: {integrity: sha512-G8cowPh+QmJJECTZlrPDKWkVVcwrFjF2rGcw546w3N8blLoc4szSs8UUPfFVxHUNLUjiru71Ah83g1lZkeK9Bw==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: prettier: optional: true - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -8807,9 +9145,6 @@ packages: resolution: {integrity: sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==} engines: {node: '>=14'} - property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} @@ -8849,8 +9184,8 @@ packages: prosemirror-schema-basic@1.2.3: resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==} - prosemirror-schema-list@1.4.1: - resolution: {integrity: sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==} + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} prosemirror-state@1.4.3: resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} @@ -8868,8 +9203,8 @@ packages: prosemirror-transform@1.10.2: resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} - prosemirror-view@1.37.2: - resolution: {integrity: sha512-ApcyrfV/cRcaL65on7TQcfWElwLyOgIjnIynfAuV+fIdlpbSvSWRwfuPaH7T5mo4AbO/FID29qOtjiDIKGWyog==} + prosemirror-view@1.41.4: + resolution: {integrity: sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -8938,8 +9273,8 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - rate-limiter-flexible@7.3.0: - resolution: {integrity: sha512-0R5gYs0m+jLGqcE6wxuvht+zuch0h4Un+JqVCEWaQajJGCWU2HzY0IFDp8WS8NNqIpviJOLmkZ5VKmzW/8q5dA==} + rate-limiter-flexible@8.1.0: + resolution: {integrity: sha512-J+4xBdVboibP1h0Imn4nFoCLT+UM9Os9vJaWaRWkLsQxS7jrhLJeLlmzP5hyCEsLwtgFIIY5KcWiJGyyVTMaKg==} raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} @@ -8959,10 +9294,10 @@ packages: peerDependencies: react: ^15.3.0 || 16 || 17 || 18 - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + react-dom@19.2.1: + resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} peerDependencies: - react: ^19.2.0 + react: ^19.2.1 react-dropzone@14.3.8: resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==} @@ -8992,8 +9327,8 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 || ^18.0.0 - react-is@19.2.0: - resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} + react-is@19.2.1: + resolution: {integrity: sha512-L7BnWgRbMwzMAubQcS7sXdPdNLmKlucPlopgAzx7FtYbksWZgEWiuYM5x9T6UqS2Ne0rsgQTq5kY2SGqpzUkYA==} react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} @@ -9069,8 +9404,9 @@ packages: '@types/react': optional: true - react-syntax-highlighter@15.6.1: - resolution: {integrity: sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==} + react-syntax-highlighter@16.1.0: + resolution: {integrity: sha512-E40/hBiP5rCNwkeBN1vRP+xow1X0pndinO+z3h7HLsHyjztbyjfzNWNKuAsJj+7DLam9iT4AaaOZnueCU+Nplg==} + engines: {node: '>= 16.20.2'} peerDependencies: react: '>= 0.14.0' @@ -9086,14 +9422,22 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + react@19.2.1: + resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} + read-package-up@12.0.0: + resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==} + engines: {node: '>=20'} + + read-pkg@10.0.0: + resolution: {integrity: sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==} + engines: {node: '>=20'} + read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -9154,8 +9498,8 @@ packages: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} - refractor@3.6.0: - resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} + refractor@5.0.0: + resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==} regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} @@ -9284,9 +9628,6 @@ packages: rrule@2.8.1: resolution: {integrity: sha512-hM3dHSBMeaJ0Ktp7W38BJZ7O1zOgaFEsn41PDk+yHoEtfLV+PoJt9E9xAlZiWgf/iqEqionN0ebHFZIDAp+iGw==} - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - rrweb-player@1.0.0-alpha.4: resolution: {integrity: sha512-Wlmn9GZ5Fdqa37vd3TzsYdLl/JWEvXNUrLCrYpnOwEgmY409HwVIvvA5aIo7k582LoKgdRCsB87N+f0oWAR0Kg==} @@ -9349,8 +9690,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.93.2: - resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + sass@1.95.1: + resolution: {integrity: sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==} engines: {node: '>=14.0.0'} hasBin: true @@ -9368,15 +9709,15 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} secure-json-parse@4.0.0: resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} - semantic-release@25.0.1: - resolution: {integrity: sha512-0OCYLm0AfVilNGukM+w0C4aptITfuW1Mhvmz8LQliLeYbPOTFRCIJzoltWWx/F5zVFe6np9eNatBUHdAvMFeZg==} + semantic-release@25.0.2: + resolution: {integrity: sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==} engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true @@ -9420,6 +9761,11 @@ packages: 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==} @@ -9456,8 +9802,8 @@ packages: engines: {node: '>= 0.10'} hasBin: true - sharp@0.34.3: - resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -9512,11 +9858,8 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sirv@3.0.1: - resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} sisteransi@1.0.5: @@ -9563,11 +9906,11 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + sort-object-keys@2.0.1: + resolution: {integrity: sha512-R89fO+z3x7hiKPXX5P0qim+ge6Y60AjtlW+QQpRozrrNcR1lw9Pkpm5MLB56HoNvdcLHL4wbpq16OcvGpEDJIg==} - sort-package-json@3.4.0: - resolution: {integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==} + sort-package-json@3.5.0: + resolution: {integrity: sha512-moY4UtptUuP5sPuu9H9dp8xHNel7eP5/Kz/7+90jTvC0IOiPH2LigtRM/aSFSxreaWoToHUVUpEV4a2tAs2oKQ==} engines: {node: '>=20'} hasBin: true @@ -9582,9 +9925,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -9643,8 +9983,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} @@ -9715,8 +10055,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -9743,9 +10083,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - strnum@2.1.0: resolution: {integrity: sha512-w0S//9BqZZGw0L0Y8uLSelFGnDJgTyyNQLmSlPnVz43zPAiqu3w4t8J8sDqqANOGeZIZ/9jWuPguYcEnsoHv4A==} @@ -9781,8 +10118,8 @@ packages: resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} engines: {node: '>=18'} - superjson@2.2.3: - resolution: {integrity: sha512-ay3d+LW/S6yppKoTz3Bq4mG0xrS5bFwfWEBmQfbC7lt5wmtk+Obq0TxVuA9eYRirBTQb1K3eEpBRHMQEo0WyVw==} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} supports-color@5.5.0: @@ -9808,11 +10145,11 @@ packages: svgson@5.3.1: resolution: {integrity: sha512-qdPgvUNWb40gWktBJnbJRelWcPzkLed/ShhnRsjbayXz8OtdPOzbil9jtiZdrYvSDumAz/VNQr6JaNfPx/gvPA==} - swagger-client@3.35.7: - resolution: {integrity: sha512-AAVk7lBFIw41wI0tsqyh/l4dwJ0/eslHL2Ex4hmsGtuKcD6/wXunetO8AsmE5MptK4YgRvpmUDvKnF1TaGzdiQ==} + swagger-client@3.36.0: + resolution: {integrity: sha512-9fkjxGHXuKy20jj8zwE6RwgFSOGKAyOD5U7aKgW/+/futtHZHOdZeqiEkb97sptk2rdBv7FEiUQDNlWZR186RA==} - swagger-ui-react@5.29.5: - resolution: {integrity: sha512-D0YbsDhi4F38HsY5p1DjzuNduU/fVQxtqm3v0o2dRTF5BbLJYRSgjMZ79jejG4q3nNw4kuouCKKiq5xqCLjWrQ==} + swagger-ui-react@5.30.3: + resolution: {integrity: sha512-QIy32nPql6yiV2NVwbww1P7f6HEOAuYrnk8VEJkzPC/p6Xc5Xnz9hhmSHzXTuM70fDbVw/qPzCJ0mZMMultpiw==} peerDependencies: react: '>=16.8.0 <20' react-dom: '>=16.8.0 <20' @@ -9834,8 +10171,8 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@2.1.4: @@ -9875,17 +10212,13 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - testcontainers@11.7.2: - resolution: {integrity: sha512-jeFzeyzLhIouRAbLnQNapJ2esBs/mvXkkYvO1/vSZehT3/7+Q557qaNxwKwMqAbfxfSh7gcx1OLlMsQUZ9JLdA==} + testcontainers@11.9.0: + resolution: {integrity: sha512-SQ6OqQUig7HcGVF72i+ZVIMvxPSpEz8cgC/B63ekqMzgf98DnveoBbOmqux/Wa5wQAQCt4mEPNMa/Jz7vMg9fQ==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -9922,8 +10255,9 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} @@ -9936,21 +10270,10 @@ packages: tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} - engines: {node: '>=14.0.0'} - - tippy.js@6.3.7: - resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} - title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} @@ -10006,10 +10329,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.0: - resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} - engines: {node: '>=18'} - tr46@6.0.0: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} @@ -10092,8 +10411,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsdav@2.1.5: - resolution: {integrity: sha512-ZUNFysY8Dr11I7aVpFmjk6apvHCMSmOPKGz8Wc1F/8BPn/kVS50LR2T8eCsdF5u+h8hrZrQhC0HWD5d2CCov+g==} + tsdav@2.1.6: + resolution: {integrity: sha512-ngZCuhQvNClm5YHbuKN7EmRhOpu1XmsJ2+d56rpeiW9ZvXIxtDWyOf8TEojEgrgZVca9XJglVFNHYtyjQSmYOA==} engines: {node: '>=10'} tslib@1.14.1: @@ -10123,38 +10442,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.5.8: - resolution: {integrity: sha512-Dh5bCACiHO8rUXZLpKw+m3FiHtAp2CkanSyJre+SInEvEr5kIxjGvCK/8MFX8SFRjQuhjtvpIvYYZJB4AGCxNQ==} + turbo-darwin-64@2.6.3: + resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.8: - resolution: {integrity: sha512-f1H/tQC9px7+hmXn6Kx/w8Jd/FneIUnvLlcI/7RGHunxfOkKJKvsoiNzySkoHQ8uq1pJnhJ0xNGTlYM48ZaJOQ==} + turbo-darwin-arm64@2.6.3: + resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.8: - resolution: {integrity: sha512-hMyvc7w7yadBlZBGl/bnR6O+dJTx3XkTeyTTH4zEjERO6ChEs0SrN8jTFj1lueNXKIHh1SnALmy6VctKMGnWfw==} + turbo-linux-64@2.6.3: + resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.8: - resolution: {integrity: sha512-LQELGa7bAqV2f+3rTMRPnj5G/OHAe2U+0N9BwsZvfMvHSUbsQ3bBMWdSQaYNicok7wOZcHjz2TkESn1hYK6xIQ==} + turbo-linux-arm64@2.6.3: + resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.8: - resolution: {integrity: sha512-3YdcaW34TrN1AWwqgYL9gUqmZsMT4T7g8Y5Azz+uwwEJW+4sgcJkIi9pYFyU4ZBSjBvkfuPZkGgfStir5BBDJQ==} + turbo-windows-64@2.6.3: + resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.8: - resolution: {integrity: sha512-eFC5XzLmgXJfnAK3UMTmVECCwuBcORrWdewoiXBnUm934DY6QN8YowC/srhNnROMpaKaqNeRpoB5FxCww3eteQ==} + turbo-windows-arm64@2.6.3: + resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==} cpu: [arm64] os: [win32] - turbo@2.5.8: - resolution: {integrity: sha512-5c9Fdsr9qfpT3hA0EyYSFRZj1dVVsb6KIWubA9JBYZ/9ZEAijgUEae0BBR/Xl/wekt4w65/lYLTFaP3JmwSO8w==} + turbo@2.6.3: + resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==} hasBin: true tweetnacl@0.14.5: @@ -10184,14 +10503,14 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.0.1: - resolution: {integrity: sha512-9MpwAI52m8H6ssA542UxSLnSiSD2dsC3/L85g6hVubLSXd82wdI80eZwTWhdOfN67NlA+D+oipAs1MlcTcu3KA==} - engines: {node: '>=20'} - 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==} + engines: {node: '>=20'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -10234,8 +10553,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.46.2: - resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} + typescript-eslint@8.49.0: + resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10361,6 +10680,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} @@ -10408,8 +10733,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@4.4.0: - resolution: {integrity: sha512-smFekJWtokDRBLC5/ZumlBREzdXOkw06+56Ifj2uRe9266Mk+yWQm2PcJO+EwlOE5sHIXHixOTzN6V8E0RGUbw==} + use-intl@4.5.8: + resolution: {integrity: sha512-rWPV2Sirw55BQbA/7ndUBtsikh8WXwBrUkZJ1mD35+emj/ogPPqgCZdv1DdrEFK42AjF1g5w8d3x8govhqPH6Q==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -10453,10 +10778,6 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} - hasBin: true - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -10499,15 +10820,10 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - vite-tsconfig-paths@5.1.4: resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} peerDependencies: - vite: '>=7.1.12' + vite: '>=7.2.7' peerDependenciesMeta: vite: optional: true @@ -10552,26 +10868,32 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.0.15: + resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.15 + '@vitest/browser-preview': 4.0.15 + '@vitest/browser-webdriverio': 4.0.15 + '@vitest/ui': 4.0.15 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -10587,8 +10909,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} wcwidth@1.0.1: @@ -10604,16 +10926,12 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - webidl-conversions@8.0.0: resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} engines: {node: '>=20'} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} webpack-virtual-modules@0.6.2: @@ -10640,10 +10958,6 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} - whatwg-url@15.1.0: resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} engines: {node: '>=20'} @@ -10701,8 +11015,8 @@ packages: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} - winston@3.18.3: - resolution: {integrity: sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==} + winston@3.19.0: + resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} engines: {node: '>= 12.0.0'} word-wrap@1.2.5: @@ -10879,14 +11193,22 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zod-validation-error@5.0.0: + resolution: {integrity: sha512-hmk+pkyKq7Q71PiWVSDUc3VfpzpvcRHZ3QPw9yEMVvmtCekaMeOHnbr3WbxfrgEnQTv6haGP4cmv0Ojmihzsxw==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@acemir/cssom@0.9.28': {} + '@actions/core@1.11.1': dependencies: '@actions/exec': 1.1.1 @@ -10918,21 +11240,21 @@ snapshots: '@ark/util@0.46.0': optional: true - '@asamuzakjp/css-color@4.0.4': + '@asamuzakjp/css-color@4.1.0': 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.2 + lru-cache: 11.2.4 - '@asamuzakjp/dom-selector@6.7.2': + '@asamuzakjp/dom-selector@6.7.6': 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.2 + lru-cache: 11.2.4 '@asamuzakjp/nwsapi@2.3.9': {} @@ -10944,9 +11266,17 @@ snapshots: preact: 10.24.3 preact-render-to-string: 6.5.11(preact@10.24.3) - '@auth/drizzle-adapter@1.11.0': + '@auth/core@0.41.1': dependencies: - '@auth/core': 0.41.0 + '@panva/hkdf': 1.2.1 + jose: 6.0.8 + oauth4webapi: 3.3.0 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) + + '@auth/drizzle-adapter@1.11.1': + dependencies: + '@auth/core': 0.41.1 transitivePeerDependencies: - '@simplewebauthn/browser' - '@simplewebauthn/server' @@ -10959,7 +11289,7 @@ snapshots: '@babel/code-frame@7.26.2': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -10984,7 +11314,7 @@ snapshots: '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.28.4 convert-source-map: 2.0.0 debug: 4.4.3 gensync: 1.0.0-beta.2 @@ -11013,10 +11343,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.28.5': + 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 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -11024,11 +11374,19 @@ snapshots: '@babel/generator@7.28.3': dependencies: '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@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.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.0.2 + '@babel/helper-compilation-targets@7.25.9': dependencies: '@babel/compat-data': 7.26.2 @@ -11049,15 +11407,15 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -11065,7 +11423,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color @@ -11079,6 +11437,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-string-parser@7.25.9': {} @@ -11089,6 +11456,8 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helper-validator-option@7.27.1': {} @@ -11096,28 +11465,32 @@ snapshots: '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/parser@7.28.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + '@babel/parser@7.28.5': dependencies: - '@babel/core': 7.28.4 + '@babel/types': 7.28.5 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime-corejs3@7.27.1': @@ -11129,22 +11502,22 @@ snapshots: '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@babel/traverse@7.25.9': dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.28.3 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.25.9 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 debug: 4.4.3 globals: 11.12.0 transitivePeerDependencies: @@ -11157,7 +11530,7 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.3 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11167,9 +11540,21 @@ snapshots: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 + 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.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11189,6 +11574,11 @@ snapshots: '@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 + '@balena/dockerignore@1.0.2': {} '@bcoe/v8-coverage@1.0.2': {} @@ -11243,14 +11633,14 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@ctrl/deluge@7.4.0': + '@ctrl/deluge@7.5.0': dependencies: '@ctrl/magnet-link': 4.2.0 - '@ctrl/shared-torrent': 6.5.0(ofetch@1.4.1) + '@ctrl/shared-torrent': 6.5.0(ofetch@1.5.1) node-fetch-native: 1.6.7 - ofetch: 1.4.1 + ofetch: 1.5.1 tough-cookie: 6.0.0 - type-fest: 5.0.1 + type-fest: 5.1.0 ufo: 1.6.1 uint8array-extras: 1.5.0 @@ -11264,15 +11654,15 @@ snapshots: rfc4648: 1.5.4 uint8array-extras: 1.5.0 - '@ctrl/qbittorrent@9.10.0': + '@ctrl/qbittorrent@9.11.0': dependencies: '@ctrl/magnet-link': 4.2.0 - '@ctrl/shared-torrent': 6.5.0(ofetch@1.4.1) + '@ctrl/shared-torrent': 6.5.0(ofetch@1.5.1) '@ctrl/torrent-file': 4.4.0 cookie: 1.0.2 node-fetch-native: 1.6.7 - ofetch: 1.4.1 - type-fest: 5.1.0 + ofetch: 1.5.1 + type-fest: 5.2.0 ufo: 1.6.1 uint8array-extras: 1.5.0 @@ -11280,9 +11670,9 @@ snapshots: dependencies: ofetch: 1.4.1 - '@ctrl/shared-torrent@6.5.0(ofetch@1.4.1)': + '@ctrl/shared-torrent@6.5.0(ofetch@1.5.1)': dependencies: - ofetch: 1.4.1 + ofetch: 1.5.1 '@ctrl/torrent-file@4.4.0': dependencies: @@ -11303,43 +11693,43 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@dnd-kit/accessibility@3.1.1(react@19.2.0)': + '@dnd-kit/accessibility@3.1.1(react@19.2.1)': dependencies: - react: 19.2.0 + react: 19.2.1 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.0) - '@dnd-kit/utilities': 3.2.2(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@dnd-kit/accessibility': 3.1.1(react@19.2.1) + '@dnd-kit/utilities': 3.2.2(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@dnd-kit/utilities': 3.2.2(react@19.2.0) - react: 19.2.0 + '@dnd-kit/core': 6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@dnd-kit/utilities': 3.2.2(react@19.2.1) + react: 19.2.1 tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@dnd-kit/utilities': 3.2.2(react@19.2.0) - react: 19.2.0 + '@dnd-kit/core': 6.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@dnd-kit/utilities': 3.2.2(react@19.2.1) + react: 19.2.1 tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@19.2.0)': + '@dnd-kit/utilities@3.2.2(react@19.2.1)': dependencies: - react: 19.2.0 + react: 19.2.1 tslib: 2.8.1 '@drizzle-team/brocli@0.10.2': {} '@drizzle-team/brocli@0.11.0': {} - '@emnapi/runtime@1.4.4': + '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 optional: true @@ -11348,95 +11738,173 @@ snapshots: '@esbuild-kit/core-utils@3.3.2': dependencies: - esbuild: 0.25.11 + esbuild: 0.27.1 source-map-support: 0.5.21 '@esbuild-kit/esm-loader@2.6.5': dependencies: '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.8.1 + get-tsconfig: 4.13.0 - '@esbuild/aix-ppc64@0.25.11': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.11': + '@esbuild/aix-ppc64@0.27.1': optional: true - '@esbuild/android-arm@0.25.11': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-x64@0.25.11': + '@esbuild/android-arm64@0.27.1': optional: true - '@esbuild/darwin-arm64@0.25.11': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.11': + '@esbuild/android-arm@0.27.1': optional: true - '@esbuild/freebsd-arm64@0.25.11': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.11': + '@esbuild/android-x64@0.27.1': optional: true - '@esbuild/linux-arm64@0.25.11': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.11': + '@esbuild/darwin-arm64@0.27.1': optional: true - '@esbuild/linux-ia32@0.25.11': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.11': + '@esbuild/darwin-x64@0.27.1': optional: true - '@esbuild/linux-mips64el@0.25.11': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.11': + '@esbuild/freebsd-arm64@0.27.1': optional: true - '@esbuild/linux-riscv64@0.25.11': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.11': + '@esbuild/freebsd-x64@0.27.1': optional: true - '@esbuild/linux-x64@0.25.11': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.11': + '@esbuild/linux-arm64@0.27.1': optional: true - '@esbuild/netbsd-x64@0.25.11': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.11': + '@esbuild/linux-arm@0.27.1': optional: true - '@esbuild/openbsd-x64@0.25.11': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.11': + '@esbuild/linux-ia32@0.27.1': optional: true - '@esbuild/sunos-x64@0.25.11': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.11': + '@esbuild/linux-loong64@0.27.1': optional: true - '@esbuild/win32-ia32@0.25.11': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/win32-x64@0.25.11': + '@esbuild/linux-mips64el@0.27.1': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.1': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.1': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.1': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.1': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.1': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.1': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.1': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.1': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.1': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.1': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.1': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.1': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.1': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': dependencies: - eslint: 9.38.0 + eslint: 9.39.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -11449,11 +11917,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.1': + '@eslint/config-helpers@0.4.2': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 - '@eslint/core@0.16.0': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 @@ -11471,20 +11939,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} + '@eslint/js@9.39.1': {} '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.4.0': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 levn: 0.4.1 '@extractus/feed-extractor@7.1.7': dependencies: '@ndaidong/bellajs': 12.0.1 cross-fetch: 4.1.0 - fast-xml-parser: 5.3.0 + fast-xml-parser: 5.3.2 html-entities: 2.6.0 transitivePeerDependencies: - encoding @@ -11523,18 +11991,18 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@floating-ui/dom': 1.7.4 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@floating-ui/react@0.27.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@floating-ui/react@0.27.16(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@floating-ui/utils': 0.2.10 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) tabbable: 6.2.0 '@floating-ui/utils@0.2.10': {} @@ -11564,23 +12032,23 @@ snapshots: dependencies: tslib: 2.8.1 - '@gitbeaker/core@43.5.0': + '@gitbeaker/core@43.8.0': dependencies: - '@gitbeaker/requester-utils': 43.5.0 + '@gitbeaker/requester-utils': 43.8.0 qs: 6.14.0 xcase: 2.0.1 - '@gitbeaker/requester-utils@43.5.0': + '@gitbeaker/requester-utils@43.8.0': dependencies: picomatch-browser: 2.2.6 qs: 6.14.0 - rate-limiter-flexible: 7.3.0 + rate-limiter-flexible: 8.1.0 xcase: 2.0.1 - '@gitbeaker/rest@43.5.0': + '@gitbeaker/rest@43.8.0': dependencies: - '@gitbeaker/core': 43.5.0 - '@gitbeaker/requester-utils': 43.5.0 + '@gitbeaker/core': 43.8.0 + '@gitbeaker/requester-utils': 43.8.0 '@grpc/grpc-js@1.12.5': dependencies: @@ -11611,9 +12079,9 @@ snapshots: - undici - utf-8-validate - '@hono/node-server@1.13.0(hono@4.10.3)': + '@hono/node-server@1.13.0(hono@4.10.8)': dependencies: - hono: 4.10.3 + hono: 4.10.8 '@humanfs/core@0.19.1': {} @@ -11628,101 +12096,104 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2)': + '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.7.4)': dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.3 '@babel/traverse': 7.28.3 '@babel/types': 7.28.2 - prettier: 3.6.2 + prettier: 3.7.4 semver: 7.7.2 transitivePeerDependencies: - supports-color - '@img/sharp-darwin-arm64@0.34.3': + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.0 + '@img/sharp-libvips-darwin-arm64': 1.2.3 optional: true - '@img/sharp-darwin-x64@0.34.3': + '@img/sharp-darwin-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.0 + '@img/sharp-libvips-darwin-x64': 1.2.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.0': + '@img/sharp-libvips-darwin-arm64@1.2.3': optional: true - '@img/sharp-libvips-darwin-x64@1.2.0': + '@img/sharp-libvips-darwin-x64@1.2.3': optional: true - '@img/sharp-libvips-linux-arm64@1.2.0': + '@img/sharp-libvips-linux-arm64@1.2.3': optional: true - '@img/sharp-libvips-linux-arm@1.2.0': + '@img/sharp-libvips-linux-arm@1.2.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.0': + '@img/sharp-libvips-linux-ppc64@1.2.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.0': + '@img/sharp-libvips-linux-s390x@1.2.3': optional: true - '@img/sharp-libvips-linux-x64@1.2.0': + '@img/sharp-libvips-linux-x64@1.2.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.0': + '@img/sharp-libvips-linuxmusl-x64@1.2.3': optional: true - '@img/sharp-linux-arm64@0.34.3': + '@img/sharp-linux-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.0 + '@img/sharp-libvips-linux-arm64': 1.2.3 optional: true - '@img/sharp-linux-arm@0.34.3': + '@img/sharp-linux-arm@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.0 + '@img/sharp-libvips-linux-arm': 1.2.3 optional: true - '@img/sharp-linux-ppc64@0.34.3': + '@img/sharp-linux-ppc64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.0 + '@img/sharp-libvips-linux-ppc64': 1.2.3 optional: true - '@img/sharp-linux-s390x@0.34.3': + '@img/sharp-linux-s390x@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.0 + '@img/sharp-libvips-linux-s390x': 1.2.3 optional: true - '@img/sharp-linux-x64@0.34.3': + '@img/sharp-linux-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.0 + '@img/sharp-libvips-linux-x64': 1.2.3 optional: true - '@img/sharp-linuxmusl-arm64@0.34.3': + '@img/sharp-linuxmusl-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 optional: true - '@img/sharp-linuxmusl-x64@0.34.3': + '@img/sharp-linuxmusl-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 optional: true - '@img/sharp-wasm32@0.34.3': + '@img/sharp-wasm32@0.34.4': dependencies: - '@emnapi/runtime': 1.4.4 + '@emnapi/runtime': 1.6.0 optional: true - '@img/sharp-win32-arm64@0.34.3': + '@img/sharp-win32-arm64@0.34.4': optional: true - '@img/sharp-win32-ia32@0.34.3': + '@img/sharp-win32-ia32@0.34.4': optional: true - '@img/sharp-win32-x64@0.34.3': + '@img/sharp-win32-x64@0.34.4': optional: true '@ioredis/commands@1.4.0': {} @@ -11737,14 +12208,12 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/schema@0.1.3': {} - - '@jellyfin/sdk@0.12.0(axios@1.12.2)': + '@jellyfin/sdk@0.13.0(axios@1.12.2)': dependencies: axios: 1.12.2 @@ -11753,17 +12222,22 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.29 + '@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.0 - '@jridgewell/trace-mapping': 0.3.29 + '@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.0 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: @@ -11774,27 +12248,34 @@ snapshots: '@jridgewell/set-array@1.2.1': {} - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@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.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@js-sdsl/ordered-map@4.4.2': {} @@ -11809,10 +12290,10 @@ snapshots: '@kubernetes/client-node@1.4.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/node-fetch': 2.6.13 '@types/stream-buffers': 3.0.7 - form-data: 4.0.4 + form-data: 4.0.5 hpagent: 1.2.0 isomorphic-ws: 5.0.0(ws@8.18.3) js-yaml: 4.1.0 @@ -11834,133 +12315,133 @@ snapshots: '@libsql/client-wasm@0.14.0': dependencies: '@libsql/core': 0.14.0 - js-base64: 3.7.7 + js-base64: 3.7.8 optional: true '@libsql/core@0.14.0': dependencies: - js-base64: 3.7.7 + js-base64: 3.7.8 optional: true - '@mantine/charts@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))': + '@mantine/charts@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(recharts@2.15.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1))': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - recharts: 2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + recharts: 2.15.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@mantine/colors-generator@8.3.5(chroma-js@3.1.2)': + '@mantine/colors-generator@8.3.10(chroma-js@3.2.0)': dependencies: - chroma-js: 3.1.2 + chroma-js: 3.2.0 - '@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@floating-ui/react': 0.27.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) + '@floating-ui/react': 0.27.16(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-number-format: 5.4.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) - react-textarea-autosize: 8.5.9(@types/react@19.2.2)(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-number-format: 5.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react-remove-scroll: 2.7.1(@types/react@19.2.7)(react@19.2.1) + react-textarea-autosize: 8.5.9(@types/react@19.2.7)(react@19.2.1) type-fest: 4.41.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) clsx: 2.1.1 - dayjs: 1.11.18 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + dayjs: 1.11.19 + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@mantine/dropzone@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/dropzone@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-dropzone: 14.3.8(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-dropzone: 14.3.8(react@19.2.1) - '@mantine/form@8.3.5(react@19.2.0)': + '@mantine/form@8.3.10(react@19.2.1)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 - react: 19.2.0 + react: 19.2.1 - '@mantine/hooks@8.3.5(react@19.2.0)': + '@mantine/hooks@8.3.10(react@19.2.1)': dependencies: - react: 19.2.0 + react: 19.2.1 - '@mantine/modals@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/modals@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@mantine/notifications@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/notifications@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - '@mantine/store': 8.3.5(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + '@mantine/store': 8.3.10(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-transition-group: 4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@mantine/spotlight@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/spotlight@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - '@mantine/store': 8.3.5(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + '@mantine/store': 8.3.10(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@mantine/store@8.3.5(react@19.2.0)': + '@mantine/store@8.3.10(react@19.2.1)': dependencies: - react: 19.2.0 + react: 19.2.1 - '@mantine/tiptap@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tiptap/extension-link@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4))(@tiptap/react@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/tiptap@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tiptap/extension-link@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(@tiptap/react@3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - '@tiptap/extension-link': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/react': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + '@tiptap/extension-link': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/react': 3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) '@million/install@1.0.14': dependencies: '@antfu/ni': 0.21.12 '@axiomhq/js': 1.0.0-rc.3 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@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.13.10 + effect: 3.19.4 nanoid: 5.1.6 recast: 0.23.11 xycolors: 0.1.2 - '@million/lint@1.0.14(webpack-sources@3.2.3)': + '@million/lint@1.0.14(webpack-sources@3.3.3)': dependencies: '@axiomhq/js': 1.0.0-rc.3 '@babel/core': 7.26.0 '@babel/types': 7.26.0 - '@hono/node-server': 1.13.0(hono@4.10.3) + '@hono/node-server': 1.13.0(hono@4.10.8) '@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.25.11 + esbuild: 0.27.1 faster-babel-types: 0.1.0(@babel/types@7.26.0) - hono: 4.10.3 + hono: 4.10.8 isomorphic-fetch: 3.0.0 nanoid: 5.1.6 ohash: 1.1.4 @@ -11975,7 +12456,7 @@ snapshots: socket.io: 4.8.1 socket.io-client: 4.7.5 tmp: 0.2.5 - unplugin: 1.14.1(webpack-sources@3.2.3) + unplugin: 1.14.1(webpack-sources@3.3.3) update-notifier-cjs: 5.1.6 transitivePeerDependencies: - bufferutil @@ -11987,34 +12468,34 @@ snapshots: '@ndaidong/bellajs@12.0.1': {} - '@next/env@15.5.6': {} + '@next/env@16.0.10': {} - '@next/eslint-plugin-next@15.5.6': + '@next/eslint-plugin-next@16.0.10': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.6': + '@next/swc-darwin-arm64@16.0.10': optional: true - '@next/swc-darwin-x64@15.5.6': + '@next/swc-darwin-x64@16.0.10': optional: true - '@next/swc-linux-arm64-gnu@15.5.6': + '@next/swc-linux-arm64-gnu@16.0.10': optional: true - '@next/swc-linux-arm64-musl@15.5.6': + '@next/swc-linux-arm64-musl@16.0.10': optional: true - '@next/swc-linux-x64-gnu@15.5.6': + '@next/swc-linux-x64-gnu@16.0.10': optional: true - '@next/swc-linux-x64-musl@15.5.6': + '@next/swc-linux-x64-musl@16.0.10': optional: true - '@next/swc-win32-arm64-msvc@15.5.6': + '@next/swc-win32-arm64-msvc@16.0.10': optional: true - '@next/swc-win32-x64-msvc@15.5.6': + '@next/swc-win32-x64-msvc@16.0.10': optional: true '@noble/hashes@2.0.1': {} @@ -12031,155 +12512,162 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@octokit/app@16.1.1': + '@octokit/app@16.1.2': dependencies: - '@octokit/auth-app': 8.1.1 - '@octokit/auth-unauthenticated': 7.0.2 - '@octokit/core': 7.0.5 + '@octokit/auth-app': 8.1.2 + '@octokit/auth-unauthenticated': 7.0.3 + '@octokit/core': 7.0.6 '@octokit/oauth-app': 8.0.3 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/types': 15.0.0 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/types': 16.0.0 '@octokit/webhooks': 14.0.0 - '@octokit/auth-app@8.1.1': + '@octokit/auth-app@8.1.2': dependencies: - '@octokit/auth-oauth-app': 9.0.2 - '@octokit/auth-oauth-user': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/auth-oauth-app': 9.0.3 + '@octokit/auth-oauth-user': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-app@9.0.2': + '@octokit/auth-oauth-app@9.0.3': dependencies: - '@octokit/auth-oauth-device': 8.0.2 - '@octokit/auth-oauth-user': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/auth-oauth-device': 8.0.3 + '@octokit/auth-oauth-user': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-device@8.0.2': + '@octokit/auth-oauth-device@8.0.3': dependencies: - '@octokit/oauth-methods': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/oauth-methods': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-user@6.0.1': + '@octokit/auth-oauth-user@6.0.2': dependencies: - '@octokit/auth-oauth-device': 8.0.2 - '@octokit/oauth-methods': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/auth-oauth-device': 8.0.3 + '@octokit/oauth-methods': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.2 '@octokit/auth-token@6.0.0': {} '@octokit/auth-unauthenticated@7.0.2': dependencies: - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/request-error': 7.0.2 + '@octokit/types': 15.0.1 - '@octokit/core@7.0.5': + '@octokit/auth-unauthenticated@7.0.3': + dependencies: + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 + + '@octokit/core@7.0.6': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.2 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/graphql': 9.0.3 + '@octokit/request': 10.0.6 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.2 - '@octokit/endpoint@11.0.1': + '@octokit/endpoint@11.0.2': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.2 - '@octokit/graphql@9.0.2': + '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.2 '@octokit/oauth-app@8.0.3': dependencies: - '@octokit/auth-oauth-app': 9.0.2 - '@octokit/auth-oauth-user': 6.0.1 + '@octokit/auth-oauth-app': 9.0.3 + '@octokit/auth-oauth-user': 6.0.2 '@octokit/auth-unauthenticated': 7.0.2 - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 '@octokit/oauth-authorization-url': 8.0.0 - '@octokit/oauth-methods': 6.0.1 + '@octokit/oauth-methods': 6.0.2 '@types/aws-lambda': 8.10.146 universal-user-agent: 7.0.2 '@octokit/oauth-authorization-url@8.0.0': {} - '@octokit/oauth-methods@6.0.1': + '@octokit/oauth-methods@6.0.2': dependencies: '@octokit/oauth-authorization-url': 8.0.0 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/request': 10.0.6 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 '@octokit/openapi-types@26.0.0': {} + '@octokit/openapi-types@27.0.0': {} + '@octokit/openapi-webhooks-types@11.0.0': {} - '@octokit/plugin-paginate-graphql@6.0.0(@octokit/core@7.0.5)': + '@octokit/plugin-paginate-graphql@6.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 - '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.1 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/plugin-rest-endpoint-methods@16.1.1(@octokit/core@7.0.5)': + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.1 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/plugin-retry@8.0.2(@octokit/core@7.0.5)': + '@octokit/plugin-retry@8.0.3(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/core': 7.0.6 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@11.0.2(@octokit/core@7.0.5)': + '@octokit/plugin-throttling@11.0.3(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.0 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 bottleneck: 2.19.5 - '@octokit/request-error@7.0.1': + '@octokit/request-error@7.0.2': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 16.0.0 - '@octokit/request@10.0.5': + '@octokit/request@10.0.6': dependencies: - '@octokit/endpoint': 11.0.1 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/endpoint': 11.0.2 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.2 - '@octokit/types@15.0.0': - dependencies: - '@octokit/openapi-types': 26.0.0 - '@octokit/types@15.0.1': dependencies: '@octokit/openapi-types': 26.0.0 + '@octokit/types@16.0.0': + dependencies: + '@octokit/openapi-types': 27.0.0 + '@octokit/webhooks-methods@6.0.0': {} '@octokit/webhooks@14.0.0': dependencies: '@octokit/openapi-webhooks-types': 11.0.0 - '@octokit/request-error': 7.0.1 + '@octokit/request-error': 7.0.2 '@octokit/webhooks-methods': 6.0.0 '@panva/hkdf@1.2.1': {} @@ -12247,9 +12735,11 @@ snapshots: '@parcel/watcher-win32-x64': 2.4.1 optional: true - '@petamoriken/float16@3.9.1': + '@petamoriken/float16@3.9.3': optional: true + '@pinojs/redact@0.4.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -12269,8 +12759,6 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@popperjs/core@2.11.8': {} - '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -12296,7 +12784,7 @@ snapshots: '@remirror/core-constants@3.0.0': {} - '@rolldown/pluginutils@1.0.0-beta.43': {} + '@rolldown/pluginutils@1.0.0-beta.53': {} '@rollup/pluginutils@5.1.0': dependencies: @@ -12381,15 +12869,15 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/changelog@6.0.3(semantic-release@25.0.2(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.1(typescript@5.9.3) + semantic-release: 25.0.2(typescript@5.9.3) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -12399,7 +12887,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 25.0.1(typescript@5.9.3) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -12407,7 +12895,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/git@10.0.1(semantic-release@25.0.2(typescript@5.9.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -12417,16 +12905,16 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 25.0.1(typescript@5.9.3) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@12.0.0(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))': dependencies: - '@octokit/core': 7.0.5 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/plugin-retry': 8.0.2(@octokit/core@7.0.5) - '@octokit/plugin-throttling': 11.0.2(@octokit/core@7.0.5) + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6) + '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 debug: 4.4.3 @@ -12437,13 +12925,14 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 25.0.1(typescript@5.9.3) + semantic-release: 25.0.2(typescript@5.9.3) tinyglobby: 0.2.15 + undici: 7.16.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@13.1.1(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/npm@13.1.2(semantic-release@25.0.2(typescript@5.9.3))': dependencies: '@actions/core': 1.11.1 '@semantic-release/error': 4.0.0 @@ -12456,13 +12945,13 @@ snapshots: normalize-url: 8.0.1 npm: 11.6.2 rc: 1.2.8 - read-pkg: 9.0.1 + read-pkg: 10.0.0 registry-auth-token: 5.0.2 - semantic-release: 25.0.1(typescript@5.9.3) - semver: 7.7.2 + semantic-release: 25.0.2(typescript@5.9.3) + semver: 7.7.3 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.1(typescript@5.9.3))': + '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -12474,7 +12963,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 25.0.1(typescript@5.9.3) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -12491,20 +12980,20 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@swagger-api/apidom-ast@1.0.0-beta.50': + '@swagger-api/apidom-ast@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@swagger-api/apidom-error': 1.0.0-rc.1 '@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-beta.50': + '@swagger-api/apidom-core@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@swagger-api/apidom-ast': 1.0.0-rc.1 + '@swagger-api/apidom-error': 1.0.0-rc.1 '@types/ramda': 0.30.2 minim: 0.23.8 ramda: 0.30.1 @@ -12512,213 +13001,213 @@ snapshots: short-unique-id: 5.3.2 ts-mixer: 6.0.4 - '@swagger-api/apidom-error@1.0.0-beta.50': + '@swagger-api/apidom-error@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-json-pointer@1.0.0-beta.50': + '@swagger-api/apidom-json-pointer@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@swagger-api/apidom-core': 1.0.0-rc.1 + '@swagger-api/apidom-error': 1.0.0-rc.1 '@swaggerexpert/json-pointer': 2.10.2 - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.41': + '@swagger-api/apidom-ns-api-design-systems@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.50 + '@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 '@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-beta.41': + '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.50 + '@swagger-api/apidom-core': 1.0.0-rc.1 + '@swagger-api/apidom-ns-json-schema-2020-12': 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 optional: true - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.41': + '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.50 + '@swagger-api/apidom-core': 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 optional: true - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.50': + '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.50 + '@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-beta.50': + '@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-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-beta.50 + '@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-beta.50': + '@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-beta.50 - '@swagger-api/apidom-core': 1.0.0-beta.50 + '@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-beta.50': + '@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-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.50 + '@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-beta.50': + '@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-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-beta.50 + '@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-beta.41': + '@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-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.50 + '@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 optional: true - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.50': + '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.50 + '@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-openapi-3-1@1.0.0-beta.50': + '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-beta.50 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.50 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.50 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-beta.50 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@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 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) @@ -12727,78 +13216,78 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.50 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.50 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.50 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.50 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 '@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-beta.41': + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-beta.50 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@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 '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4) '@types/ramda': 0.30.2 ramda: 0.30.1 @@ -12807,11 +13296,11 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-reference@1.0.0-beta.50': + '@swagger-api/apidom-reference@1.0.0-rc.1': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 + '@swagger-api/apidom-core': 1.0.0-rc.1 + '@swagger-api/apidom-error': 1.0.0-rc.1 '@types/ramda': 0.30.2 axios: 1.12.2 minimatch: 7.4.6 @@ -12819,26 +13308,26 @@ snapshots: ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optionalDependencies: - '@swagger-api/apidom-json-pointer': 1.0.0-beta.50 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.41 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.41 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.50 - '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.0.0-beta.41 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.41 + '@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 transitivePeerDependencies: - debug @@ -12850,28 +13339,80 @@ snapshots: dependencies: apg-lite: 1.0.4 + '@swc/core-darwin-arm64@1.15.3': + optional: true + + '@swc/core-darwin-x64@1.15.3': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.15.3': + optional: true + + '@swc/core-linux-arm64-gnu@1.15.3': + optional: true + + '@swc/core-linux-arm64-musl@1.15.3': + optional: true + + '@swc/core-linux-x64-gnu@1.15.3': + optional: true + + '@swc/core-linux-x64-musl@1.15.3': + optional: true + + '@swc/core-win32-arm64-msvc@1.15.3': + optional: true + + '@swc/core-win32-ia32-msvc@1.15.3': + optional: true + + '@swc/core-win32-x64-msvc@1.15.3': + optional: true + + '@swc/core@1.15.3': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.3 + '@swc/core-darwin-x64': 1.15.3 + '@swc/core-linux-arm-gnueabihf': 1.15.3 + '@swc/core-linux-arm64-gnu': 1.15.3 + '@swc/core-linux-arm64-musl': 1.15.3 + '@swc/core-linux-x64-gnu': 1.15.3 + '@swc/core-linux-x64-musl': 1.15.3 + '@swc/core-win32-arm64-msvc': 1.15.3 + '@swc/core-win32-ia32-msvc': 1.15.3 + '@swc/core-win32-x64-msvc': 1.15.3 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.12)': - optionalDependencies: - arktype: 2.1.20 - typescript: 5.9.3 - zod: 4.1.12 - - '@t3-oss/env-nextjs@0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.12)': + '@swc/types@0.1.25': dependencies: - '@t3-oss/env-core': 0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.12) + '@swc/counter': 0.1.3 + + '@t3-oss/env-core@0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.13)': optionalDependencies: arktype: 2.1.20 typescript: 5.9.3 - zod: 4.1.12 + zod: 4.1.13 - '@tabler/icons-react@3.35.0(react@19.2.0)': + '@t3-oss/env-nextjs@0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.13)': + dependencies: + '@t3-oss/env-core': 0.13.8(arktype@2.1.20)(typescript@5.9.3)(zod@4.1.13) + optionalDependencies: + arktype: 2.1.20 + typescript: 5.9.3 + zod: 4.1.13 + + '@tabler/icons-react@3.35.0(react@19.2.1)': dependencies: '@tabler/icons': 3.35.0 - react: 19.2.0 + react: 19.2.1 '@tabler/icons@3.35.0': {} @@ -12879,220 +13420,226 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.90.5': {} + '@tanstack/query-core@5.90.12': {} - '@tanstack/query-devtools@5.90.1': {} + '@tanstack/query-devtools@5.91.1': {} - '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.5(react@19.2.0))(react@19.2.0)': + '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.12(react@19.2.1))(react@19.2.1)': dependencies: - '@tanstack/query-devtools': 5.90.1 - '@tanstack/react-query': 5.90.5(react@19.2.0) - react: 19.2.0 + '@tanstack/query-devtools': 5.91.1 + '@tanstack/react-query': 5.90.12(react@19.2.1) + react: 19.2.1 - '@tanstack/react-query-next-experimental@5.90.2(@tanstack/react-query@5.90.5(react@19.2.0))(next@15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.12(react@19.2.1))(next@16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1)': dependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - next: 15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) - react: 19.2.0 + '@tanstack/react-query': 5.90.12(react@19.2.1) + next: 16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) + react: 19.2.1 - '@tanstack/react-query@5.90.5(react@19.2.0)': + '@tanstack/react-query@5.90.12(react@19.2.1)': dependencies: - '@tanstack/query-core': 5.90.5 - react: 19.2.0 + '@tanstack/query-core': 5.90.12 + react: 19.2.1 - '@tanstack/react-table@8.20.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-table@8.20.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@tanstack/table-core': 8.20.5 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@tanstack/react-virtual@3.11.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-virtual@3.11.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@tanstack/virtual-core': 3.11.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) '@tanstack/table-core@8.20.5': {} '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@11.7.2': + '@testcontainers/mysql@11.9.0': dependencies: - testcontainers: 11.7.2 + testcontainers: 11.9.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/postgresql@11.7.2': + '@testcontainers/postgresql@11.9.0': dependencies: - testcontainers: 11.7.2 + testcontainers: 11.9.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/redis@11.7.2': + '@testcontainers/redis@11.9.0': dependencies: - testcontainers: 11.7.2 + testcontainers: 11.9.0 transitivePeerDependencies: - bare-buffer - supports-color - '@tiptap/core@2.26.4(@tiptap/pm@2.26.4)': + '@tiptap/core@3.13.0(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/pm': 2.26.4 + '@tiptap/pm': 3.13.0 - '@tiptap/extension-blockquote@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-blockquote@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-bold@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-bold@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-bubble-menu@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-bubble-menu@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 - tippy.js: 6.3.7 + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 + optional: true - '@tiptap/extension-bullet-list@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-bullet-list@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-code-block@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-code-block@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 - '@tiptap/extension-code@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-code@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-color@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/extension-text-style@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)))': + '@tiptap/extension-color@3.13.0(@tiptap/extension-text-style@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/extension-text-style': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) + '@tiptap/extension-text-style': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) - '@tiptap/extension-document@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-document@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-dropcursor@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-dropcursor@3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/extensions': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-floating-menu@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-floating-menu@3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 - tippy.js: 6.3.7 + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 + optional: true - '@tiptap/extension-gapcursor@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-gapcursor@3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/extensions': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-hard-break@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-hard-break@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-heading@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-heading@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-highlight@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-highlight@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-history@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-horizontal-rule@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 - '@tiptap/extension-horizontal-rule@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-image@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-image@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-italic@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-italic@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-link@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - - '@tiptap/extension-link@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': - dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 linkifyjs: 4.3.2 - '@tiptap/extension-list-item@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-list-item@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-ordered-list@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-list-keymap@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-paragraph@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 - '@tiptap/extension-placeholder@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-ordered-list@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-strike@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-paragraph@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-table-cell@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-placeholder@3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extensions': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-table-header@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-strike@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-table-row@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-table-cell@3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-table': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-table@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-table-header@3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/extension-table': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-task-item@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)': + '@tiptap/extension-table-row@3.13.0(@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/extension-table': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-task-list@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-table@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 - '@tiptap/extension-text-align@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-task-item@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-text-style@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-task-list@3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) - '@tiptap/extension-text@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-text-align@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/extension-underline@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))': + '@tiptap/extension-text-style@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) - '@tiptap/pm@2.26.4': + '@tiptap/extension-text@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': + dependencies: + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + + '@tiptap/extension-underline@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))': + dependencies: + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + + '@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)': + dependencies: + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 + + '@tiptap/pm@3.13.0': dependencies: prosemirror-changeset: 2.3.0 prosemirror-collab: 1.3.1 @@ -13106,48 +13653,56 @@ snapshots: prosemirror-menu: 1.2.4 prosemirror-model: 1.24.1 prosemirror-schema-basic: 1.2.3 - prosemirror-schema-list: 1.4.1 + prosemirror-schema-list: 1.5.1 prosemirror-state: 1.4.3 prosemirror-tables: 1.6.4 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2) + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.41.4) prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 - '@tiptap/react@2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tiptap/react@3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/extension-bubble-menu': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-floating-menu': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) '@types/use-sync-external-store': 0.0.6 - fast-deep-equal: 3.1.3 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - use-sync-external-store: 1.4.0(react@19.2.0) + fast-equals: 5.3.3 + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + use-sync-external-store: 1.4.0(react@19.2.1) + optionalDependencies: + '@tiptap/extension-bubble-menu': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/extension-floating-menu': 3.13.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + transitivePeerDependencies: + - '@floating-ui/dom' - '@tiptap/starter-kit@2.26.4': + '@tiptap/starter-kit@3.13.0': dependencies: - '@tiptap/core': 2.26.4(@tiptap/pm@2.26.4) - '@tiptap/extension-blockquote': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-bold': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-bullet-list': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-code': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-code-block': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-document': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-dropcursor': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-gapcursor': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-hard-break': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-heading': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-history': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-horizontal-rule': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))(@tiptap/pm@2.26.4) - '@tiptap/extension-italic': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-list-item': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-ordered-list': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-paragraph': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-strike': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-text': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/extension-text-style': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4)) - '@tiptap/pm': 2.26.4 + '@tiptap/core': 3.13.0(@tiptap/pm@3.13.0) + '@tiptap/extension-blockquote': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-bold': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-bullet-list': 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-code': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-code-block': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/extension-document': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-dropcursor': 3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-gapcursor': 3.13.0(@tiptap/extensions@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-hard-break': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-heading': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-horizontal-rule': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/extension-italic': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-link': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/extension-list': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/extension-list-item': 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-list-keymap': 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-ordered-list': 3.13.0(@tiptap/extension-list@3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)) + '@tiptap/extension-paragraph': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-strike': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-text': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extension-underline': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0)) + '@tiptap/extensions': 3.13.0(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0) + '@tiptap/pm': 3.13.0 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -13159,43 +13714,43 @@ snapshots: tree-sitter: 0.22.4 optional: true - '@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3)': + '@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@trpc/server': 11.6.0(typescript@5.9.3) + '@trpc/server': 11.7.2(typescript@5.9.3) typescript: 5.9.3 - '@trpc/next@11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(next@15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)': + '@trpc/next@11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(next@16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)': dependencies: - '@trpc/client': 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.6.0(typescript@5.9.3) - next: 15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@trpc/client': 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.7.2(typescript@5.9.3) + next: 16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) typescript: 5.9.3 optionalDependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - '@trpc/react-query': 11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + '@tanstack/react-query': 5.90.12(react@19.2.1) + '@trpc/react-query': 11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) - '@trpc/react-query@11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)': + '@trpc/react-query@11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - '@trpc/client': 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.6.0(typescript@5.9.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@tanstack/react-query': 5.90.12(react@19.2.1) + '@trpc/client': 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.7.2(typescript@5.9.3) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) typescript: 5.9.3 - '@trpc/server@11.6.0(typescript@5.9.3)': + '@trpc/server@11.7.2(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@trpc/tanstack-react-query@11.6.0(@tanstack/react-query@5.90.5(react@19.2.0))(@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)': + '@trpc/tanstack-react-query@11.7.2(@tanstack/react-query@5.90.12(react@19.2.1))(@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.2(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - '@trpc/client': 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.6.0(typescript@5.9.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@tanstack/react-query': 5.90.12(react@19.2.1) + '@trpc/client': 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.7.2(typescript@5.9.3) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) typescript: 5.9.3 '@tsconfig/node10@1.0.11': {} @@ -13208,9 +13763,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.8(@types/node@24.9.2)(typescript@5.9.3)': + '@turbo/gen@2.6.3(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)': dependencies: - '@turbo/workspaces': 2.5.8 + '@turbo/workspaces': 2.6.3 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -13218,7 +13773,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@24.9.2)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13228,7 +13783,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.5.8': + '@turbo/workspaces@2.6.3': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -13236,7 +13791,7 @@ snapshots: fs-extra: 10.1.0 gradient-string: 2.0.2 inquirer: 8.2.6 - js-yaml: 4.1.0 + js-yaml: 4.1.1 ora: 4.1.1 picocolors: 1.0.1 semver: 7.6.2 @@ -13244,57 +13799,57 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/asn1@0.2.4': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/aws-lambda@8.10.146': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@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.4 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/bcrypt@6.0.0': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 - '@types/chroma-js@3.1.1': {} + '@types/chroma-js@3.1.2': {} '@types/connect@3.4.38': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/cookie@0.4.1': {} @@ -13303,11 +13858,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/cors@2.8.17': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/css-font-loading-module@0.0.7': {} @@ -13345,13 +13900,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/ssh2': 1.15.1 - '@types/dockerode@3.3.45': + '@types/dockerode@3.3.47': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13362,7 +13917,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13377,11 +13932,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 24.9.2 - - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.11 + '@types/node': 24.10.3 '@types/hast@3.0.4': dependencies: @@ -13425,8 +13976,8 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.9.2 - form-data: 4.0.4 + '@types/node': 24.10.3 + form-data: 4.0.5 '@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)': dependencies: @@ -13436,15 +13987,15 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@24.9.2': + '@types/node@24.10.3': dependencies: undici-types: 7.16.0 '@types/normalize-package-data@2.4.4': {} - '@types/pg@8.15.5': + '@types/pg@8.15.6': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -13458,34 +14009,34 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.2.2(@types/react@19.2.2)': + '@types/react-dom@19.2.3(@types/react@19.2.7)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - '@types/react@19.2.2': + '@types/react@19.2.7': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13494,15 +14045,15 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/swagger-ui-react@5.18.0': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/through@0.0.33': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/tinycolor2@1.4.6': {} @@ -13521,22 +14072,21 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 '@types/xml2js@0.4.14': dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0 - graphemer: 1.4.0 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 + eslint: 9.39.1 ignore: 7.0.4 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -13544,80 +14094,79 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3 - eslint: 9.38.0 + eslint: 9.39.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.2': + '@typescript-eslint/scope-manager@8.49.0': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.38.0 + eslint: 9.39.1 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} + '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 + tinyglobby: 0.2.15 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.49.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.38.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + eslint: 9.39.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.2': + '@typescript-eslint/visitor-keys@8.49.0': dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 '@umami/node@0.4.0': {} @@ -13652,89 +14201,84 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': + '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) - '@rolldown/pluginutils': 1.0.0-beta.43 + '@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 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15)': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.3 - debug: 4.4.1 + '@vitest/utils': 4.0.15 + ast-v8-to-istanbul: 0.3.8 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.9.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.2)(@vitest/ui@3.2.4)(jsdom@27.0.1(postcss@8.5.6))(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + istanbul-reports: 3.2.0 + magicast: 0.5.1 + obug: 2.1.1 + std-env: 3.10.0 + tinyrainbow: 3.0.3 + vitest: 4.0.15(@types/node@24.10.3)(@vitest/ui@4.0.15)(jsdom@27.3.0(postcss@8.5.6))(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - '@vitest/expect@3.2.4': + '@vitest/expect@4.0.15': dependencies: + '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 + chai: 6.2.1 + tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@4.0.15(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.0.15 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.0.15': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.0.3 - '@vitest/runner@3.2.4': + '@vitest/runner@4.0.15': dependencies: - '@vitest/utils': 3.2.4 - pathe: 2.0.3 - strip-literal: 3.0.0 - - '@vitest/snapshot@3.2.4': - dependencies: - '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + '@vitest/utils': 4.0.15 pathe: 2.0.3 - '@vitest/spy@3.2.4': + '@vitest/snapshot@4.0.15': dependencies: - tinyspy: 4.0.3 + '@vitest/pretty-format': 4.0.15 + magic-string: 0.30.21 + pathe: 2.0.3 - '@vitest/ui@3.2.4(vitest@3.2.4)': + '@vitest/spy@4.0.15': {} + + '@vitest/ui@4.0.15(vitest@4.0.15)': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.15 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 - sirv: 3.0.1 - tinyglobby: 0.2.14 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.2)(@vitest/ui@3.2.4)(jsdom@27.0.1(postcss@8.5.6))(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + sirv: 3.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vitest: 4.0.15(@types/node@24.10.3)(@vitest/ui@4.0.15)(jsdom@27.3.0(postcss@8.5.6))(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) - '@vitest/utils@3.2.4': + '@vitest/utils@4.0.15': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.0.15 + tinyrainbow: 3.0.3 '@webassemblyjs/ast@1.14.1': dependencies: @@ -13925,6 +14469,8 @@ snapshots: ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -13933,7 +14479,7 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -13941,7 +14487,7 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.4.5 + glob: 10.5.0 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 @@ -14091,8 +14637,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - assertion-error@2.0.1: {} - ast-types-flow@0.0.8: {} ast-types@0.13.4: @@ -14107,9 +14651,9 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.3: + ast-v8-to-istanbul@0.3.8: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 js-tokens: 9.0.1 @@ -14143,7 +14687,7 @@ snapshots: axios@1.12.2: dependencies: follow-redirects: 1.15.9 - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -14151,7 +14695,7 @@ snapshots: axios@1.9.0: dependencies: follow-redirects: 1.15.9 - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -14160,6 +14704,10 @@ snapshots: b4a@1.6.6: {} + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.28.4 + babel-plugin-syntax-hermes-parser@0.21.1: dependencies: hermes-parser: 0.21.1 @@ -14201,6 +14749,8 @@ snapshots: base64id@2.0.0: {} + baseline-browser-mapping@2.8.29: {} + basic-ftp@5.0.5: {} bcrypt-pbkdf@1.0.2: @@ -14214,7 +14764,7 @@ snapshots: before-after-hook@4.0.0: {} - better-sqlite3@12.4.1: + better-sqlite3@12.5.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -14262,18 +14812,26 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001755 electron-to-chromium: 1.5.55 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001755 electron-to-chromium: 1.5.114 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) + browserslist@4.28.0: + dependencies: + baseline-browser-mapping: 2.8.29 + caniuse-lite: 1.0.30001755 + electron-to-chromium: 1.5.256 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) + buffer-crc32@1.0.0: {} buffer-from@1.1.2: {} @@ -14295,8 +14853,6 @@ snapshots: bytes@3.1.2: {} - cac@6.7.14: {} - call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -14343,17 +14899,11 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001703: {} + caniuse-lite@1.0.30001755: {} ccount@2.0.1: {} - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 + chai@6.2.1: {} chalk@2.4.2: dependencies: @@ -14398,29 +14948,21 @@ snapshots: character-entities-html4@2.1.0: {} - character-entities-legacy@1.1.4: {} - character-entities-legacy@3.0.0: {} - character-entities@1.2.4: {} - character-entities@2.0.2: {} - character-reference-invalid@1.1.4: {} - character-reference-invalid@2.0.1: {} chardet@0.7.0: {} - check-error@2.1.1: {} - chokidar@4.0.0: dependencies: readdirp: 4.0.1 chownr@1.1.4: {} - chroma-js@3.1.2: {} + chroma-js@3.2.0: {} chrome-trace-event@1.0.4: {} @@ -14485,7 +15027,7 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrap-ansi: 9.0.2 clone@1.0.4: {} @@ -14520,22 +15062,10 @@ snapshots: color-name@2.0.2: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - color-string@2.1.2: dependencies: color-name: 2.0.2 - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - color@5.0.2: dependencies: color-convert: 3.1.2 @@ -14545,8 +15075,6 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@1.0.8: {} - comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -14710,15 +15238,15 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.1(postcss@8.5.6): + cssstyle@5.3.4(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 4.0.4 + '@asamuzakjp/css-color': 4.1.0 '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) css-tree: 3.1.0 transitivePeerDependencies: - postcss - csstype@3.1.3: {} + csstype@3.2.3: {} d3-array@3.2.4: dependencies: @@ -14803,7 +15331,7 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - dayjs@1.11.18: {} + dayjs@1.11.19: {} debug@3.2.7: dependencies: @@ -14837,8 +15365,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - deep-eql@5.0.2: {} - deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -14895,12 +15421,14 @@ snapshots: destr@2.0.3: {} + destr@2.0.5: {} + detect-indent@7.0.1: {} detect-libc@1.0.3: optional: true - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} detect-newline@4.0.1: {} @@ -14918,9 +15446,9 @@ snapshots: dependencies: path-type: 4.0.0 - dns-caching@0.2.7: + dns-caching@0.2.9: dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.4 docker-compose@1.3.0: dependencies: @@ -14954,7 +15482,7 @@ snapshots: dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.28.4 - csstype: 3.1.3 + csstype: 3.2.3 dom-walk@0.1.2: {} @@ -14962,6 +15490,10 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 + dompurify@3.3.1: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-case@2.1.1: dependencies: no-case: 2.3.2 @@ -14970,14 +15502,14 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv-cli@10.0.0: + dotenv-cli@11.0.0: dependencies: cross-spawn: 7.0.6 dotenv: 17.2.3 - dotenv-expand: 11.0.7 + dotenv-expand: 12.0.3 minimist: 1.2.8 - dotenv-expand@11.0.7: + dotenv-expand@12.0.3: dependencies: dotenv: 16.6.1 @@ -14989,29 +15521,29 @@ snapshots: drange@1.1.1: {} - drizzle-kit@0.31.5: + drizzle-kit@0.31.8: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.25.11 - esbuild-register: 3.6.0(esbuild@0.25.11) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) transitivePeerDependencies: - supports-color - drizzle-orm@0.44.7(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.4.1)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3): + drizzle-orm@0.45.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 - '@types/pg': 8.15.5 - better-sqlite3: 12.4.1 + '@types/pg': 8.15.6 + better-sqlite3: 12.5.0 gel: 2.0.0 mysql2: 3.15.3 pg: 8.16.3 - drizzle-zod@0.8.3(drizzle-orm@0.44.7(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.4.1)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3))(zod@4.1.12): + drizzle-zod@0.8.3(drizzle-orm@0.45.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3))(zod@4.1.13): dependencies: - drizzle-orm: 0.44.7(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.4.1)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) - zod: 4.1.12 + drizzle-orm: 0.45.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) + zod: 4.1.13 dunder-proto@1.0.1: dependencies: @@ -15025,13 +15557,15 @@ snapshots: eastasianwidth@0.2.0: {} - effect@3.13.10: + effect@3.19.4: dependencies: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 electron-to-chromium@1.5.114: {} + electron-to-chromium@1.5.256: {} + electron-to-chromium@1.5.55: {} emoji-regex@10.6.0: {} @@ -15068,7 +15602,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 24.9.2 + '@types/node': 24.10.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -15081,20 +15615,15 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.18.1: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.0 entities@4.5.0: {} entities@6.0.1: {} - env-ci@11.1.0: - dependencies: - execa: 8.0.1 - java-properties: 1.0.2 - env-ci@11.2.0: dependencies: execa: 8.0.1 @@ -15339,41 +15868,70 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild-register@3.6.0(esbuild@0.25.11): + esbuild-register@3.6.0(esbuild@0.25.12): dependencies: debug: 4.4.3 - esbuild: 0.25.11 + esbuild: 0.25.12 transitivePeerDependencies: - supports-color - esbuild@0.25.11: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.1 + '@esbuild/android-arm': 0.27.1 + '@esbuild/android-arm64': 0.27.1 + '@esbuild/android-x64': 0.27.1 + '@esbuild/darwin-arm64': 0.27.1 + '@esbuild/darwin-x64': 0.27.1 + '@esbuild/freebsd-arm64': 0.27.1 + '@esbuild/freebsd-x64': 0.27.1 + '@esbuild/linux-arm': 0.27.1 + '@esbuild/linux-arm64': 0.27.1 + '@esbuild/linux-ia32': 0.27.1 + '@esbuild/linux-loong64': 0.27.1 + '@esbuild/linux-mips64el': 0.27.1 + '@esbuild/linux-ppc64': 0.27.1 + '@esbuild/linux-riscv64': 0.27.1 + '@esbuild/linux-s390x': 0.27.1 + '@esbuild/linux-x64': 0.27.1 + '@esbuild/netbsd-arm64': 0.27.1 + '@esbuild/netbsd-x64': 0.27.1 + '@esbuild/openbsd-arm64': 0.27.1 + '@esbuild/openbsd-x64': 0.27.1 + '@esbuild/openharmony-arm64': 0.27.1 + '@esbuild/sunos-x64': 0.27.1 + '@esbuild/win32-arm64': 0.27.1 + '@esbuild/win32-ia32': 0.27.1 + '@esbuild/win32-x64': 0.27.1 escalade@3.2.0: {} @@ -15393,15 +15951,15 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.38.0): + eslint-config-prettier@10.1.8(eslint@9.39.1): dependencies: - eslint: 9.38.0 + eslint: 9.39.1 - eslint-config-turbo@2.5.8(eslint@9.38.0)(turbo@2.5.8): + eslint-config-turbo@2.6.3(eslint@9.39.1)(turbo@2.6.3): dependencies: - eslint: 9.38.0 - eslint-plugin-turbo: 2.5.8(eslint@9.38.0)(turbo@2.5.8) - turbo: 2.5.8 + eslint: 9.39.1 + eslint-plugin-turbo: 2.6.3(eslint@9.39.1)(turbo@2.6.3) + turbo: 2.6.3 eslint-import-resolver-node@0.3.9: dependencies: @@ -15411,17 +15969,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - eslint: 9.38.0 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15430,9 +15988,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.38.0 + eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -15444,13 +16002,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -15460,7 +16018,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.38.0 + eslint: 9.39.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -15469,17 +16027,17 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@6.1.1(eslint@9.38.0): + eslint-plugin-react-hooks@6.1.1(eslint@9.39.1): dependencies: '@babel/core': 7.28.4 '@babel/parser': 7.28.4 - eslint: 9.38.0 - zod: 4.1.12 - zod-validation-error: 4.0.2(zod@4.1.12) + eslint: 9.39.1 + zod: 4.1.13 + zod-validation-error: 4.0.2(zod@4.1.13) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.38.0): + eslint-plugin-react@7.37.5(eslint@9.39.1): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -15487,7 +16045,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.38.0 + eslint: 9.39.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -15501,11 +16059,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.8(eslint@9.38.0)(turbo@2.5.8): + eslint-plugin-turbo@2.6.3(eslint@9.39.1)(turbo@2.6.3): dependencies: dotenv: 16.0.3 - eslint: 9.38.0 - turbo: 2.5.8 + eslint: 9.39.1 + turbo: 2.6.3 eslint-scope@5.1.1: dependencies: @@ -15521,16 +16079,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0: + eslint@9.39.1: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.1 - '@eslint/core': 0.16.0 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.38.0 - '@eslint/plugin-kit': 0.4.0 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 @@ -15641,7 +16199,7 @@ snapshots: expand-template@2.0.3: {} - expect-type@1.2.1: {} + expect-type@1.2.2: {} extend@3.0.2: {} @@ -15663,6 +16221,8 @@ snapshots: fast-equals@5.2.2: {} + fast-equals@5.3.3: {} + fast-fifo@1.3.2: {} fast-glob@3.3.1: @@ -15700,11 +16260,9 @@ snapshots: dependencies: fast-decode-uri-component: 1.0.1 - fast-redact@3.5.0: {} - fast-uri@3.0.6: {} - fast-xml-parser@5.3.0: + fast-xml-parser@5.3.2: dependencies: strnum: 2.1.0 @@ -15712,7 +16270,7 @@ snapshots: dependencies: '@babel/types': 7.26.0 - fastify@5.6.1: + fastify@5.6.2: dependencies: '@fastify/ajv-compiler': 4.0.2 '@fastify/error': 4.2.0 @@ -15723,7 +16281,7 @@ snapshots: fast-json-stringify: 6.0.1 find-my-way: 9.3.0 light-my-request: 6.6.0 - pino: 9.7.0 + pino: 10.1.0 process-warning: 5.0.0 rfdc: 1.4.1 secure-json-parse: 4.0.0 @@ -15738,9 +16296,9 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.4.4(picomatch@4.0.2): + fdir@6.4.4(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fdir@6.5.0(picomatch@4.0.3): optionalDependencies: @@ -15788,6 +16346,8 @@ snapshots: find-up-simple@1.0.0: {} + find-up-simple@1.0.1: {} + find-up@2.1.0: dependencies: locate-path: 2.0.0 @@ -15828,7 +16388,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -15889,10 +16449,10 @@ snapshots: gel@2.0.0: dependencies: - '@petamoriken/float16': 3.9.1 + '@petamoriken/float16': 3.9.3 debug: 4.4.3 env-paths: 3.0.0 - semver: 7.7.2 + semver: 7.7.3 shell-quote: 1.8.3 which: 4.0.0 transitivePeerDependencies: @@ -15975,6 +16535,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -16011,23 +16575,20 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + glob@13.0.0: dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.1.1 minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -16084,8 +16645,6 @@ snapshots: chalk: 4.1.2 tinygradient: 1.1.5 - graphemer@1.4.0: {} - h3@1.15.1: dependencies: cookie-es: 1.2.2 @@ -16137,7 +16696,9 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-parse-selector@2.2.5: {} + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 hast-util-to-jsx-runtime@2.3.6: dependencies: @@ -16163,13 +16724,13 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hastscript@6.0.0: + hastscript@9.0.1: dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 header-case@1.0.1: dependencies: @@ -16186,7 +16747,7 @@ snapshots: highlightjs-vue@1.0.0: {} - hono@4.10.3: {} + hono@4.10.8: {} hook-std@4.0.0: {} @@ -16196,7 +16757,7 @@ snapshots: hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 hpagent@1.2.0: {} @@ -16293,6 +16854,8 @@ snapshots: index-to-position@0.1.2: {} + index-to-position@1.2.0: {} + inflation@2.1.0: {} inflight@1.0.6: @@ -16395,15 +16958,8 @@ snapshots: iron-webcrypto@1.2.1: {} - is-alphabetical@1.0.4: {} - is-alphabetical@2.0.1: {} - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 @@ -16422,9 +16978,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: - optional: true - is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 @@ -16482,8 +17035,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-decimal@1.0.4: {} - is-decimal@2.0.1: {} is-extglob@2.1.1: {} @@ -16504,8 +17055,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - is-hexadecimal@2.0.1: {} is-installed-globally@0.4.0: @@ -16647,6 +17196,17 @@ snapshots: isexe@3.1.1: optional: true + isomorphic-dompurify@2.34.0(postcss@8.5.6): + dependencies: + dompurify: 3.3.1 + jsdom: 27.3.0(postcss@8.5.6) + transitivePeerDependencies: + - bufferutil + - canvas + - postcss + - supports-color + - utf-8-validate + isomorphic-fetch@3.0.0: dependencies: node-fetch: 2.7.0 @@ -16676,13 +17236,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -16702,35 +17262,31 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - java-properties@1.0.2: {} jest-worker@27.5.1: dependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 merge-stream: 2.0.0 supports-color: 8.1.1 jose@6.0.8: {} - jotai@2.15.0(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.2)(react@19.2.0): + jotai@2.15.2(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.1): optionalDependencies: '@babel/core': 7.26.0 '@babel/template': 7.27.2 - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.7 + react: 19.2.1 - jotai@2.15.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.2.2)(react@19.2.0): + jotai@2.15.2(@babel/core@7.28.5)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.1): optionalDependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/template': 7.27.2 - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.7 + react: 19.2.1 - js-base64@3.7.7: + js-base64@3.7.8: optional: true js-file-download@0.4.12: {} @@ -16743,12 +17299,17 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + jsbn@1.1.0: {} - jsdom@27.0.1(postcss@8.5.6): + jsdom@27.3.0(postcss@8.5.6): dependencies: - '@asamuzakjp/dom-selector': 6.7.2 - cssstyle: 5.3.1(postcss@8.5.6) + '@acemir/cssom': 0.9.28 + '@asamuzakjp/dom-selector': 6.7.6 + cssstyle: 5.3.4(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -16756,7 +17317,6 @@ snapshots: https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 parse5: 8.0.0 - rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 @@ -16846,14 +17406,13 @@ snapshots: dependencies: readable-stream: 2.3.8 - ldapts@8.0.9: + ldapts@8.0.18: dependencies: '@types/asn1': 0.2.4 asn1: 0.2.6 - debug: 4.4.1 + debug: 4.4.3 strict-event-emitter-types: 2.0.0 - uuid: 11.1.0 - whatwg-url: 14.2.0 + whatwg-url: 15.1.0 transitivePeerDependencies: - supports-color @@ -16883,7 +17442,7 @@ snapshots: pify: 3.0.0 strip-bom: 3.0.0 - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@2.0.4: dependencies: @@ -16954,10 +17513,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} - - loupe@3.1.4: {} - lower-case-first@1.0.2: dependencies: lower-case: 1.1.4 @@ -16971,12 +17526,10 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.2: {} - - lru-cache@11.1.0: {} - lru-cache@11.2.2: {} + lru-cache@11.2.4: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -16991,14 +17544,14 @@ snapshots: '@videojs/vhs-utils': 4.1.1 global: 4.4.0 - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.1: dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 make-dir@3.1.0: @@ -17007,28 +17560,28 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} - mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.5(react@19.2.0))(zod@4.1.12): + mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.10(react@19.2.1))(zod@4.1.13): dependencies: - '@mantine/form': 8.3.5(react@19.2.0) - zod: 4.1.12 + '@mantine/form': 8.3.10(react@19.2.1) + zod: 4.1.13 - mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/dates@8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(@tabler/icons-react@3.35.0(react@19.2.0))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(@tabler/icons-react@3.35.0(react@19.2.1))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: - '@mantine/core': 8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/dates': 8.3.5(@mantine/core@8.3.5(@mantine/hooks@8.3.5(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.5(react@19.2.0))(dayjs@1.11.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mantine/hooks': 8.3.5(react@19.2.0) - '@tabler/icons-react': 3.35.0(react@19.2.0) + '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/dates': 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@mantine/hooks@8.3.10(react@19.2.1))(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@mantine/hooks': 8.3.10(react@19.2.1) + '@tabler/icons-react': 3.35.0(react@19.2.1) '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@tanstack/react-virtual': 3.11.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@tanstack/react-table': 8.20.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@tanstack/react-virtual': 3.11.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - dayjs: 1.11.18 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + dayjs: 1.11.19 + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) maria2@0.4.1: {} @@ -17317,7 +17870,7 @@ snapshots: dependencies: lodash: 4.17.21 - minimatch@10.0.3: + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -17416,66 +17969,75 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.30(next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0): + next-auth@5.0.0-beta.30(next@16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1): dependencies: '@auth/core': 0.41.0 - next: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) - react: 19.2.0 + next: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) + react: 19.2.1 - next-intl@4.4.0(next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0)(typescript@5.9.3): + next-intl-swc-plugin-extractor@4.5.8: {} + + next-intl@4.5.8(next@16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1))(react@19.2.1)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 + '@swc/core': 1.15.3 negotiator: 1.0.0 - next: 15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2) - react: 19.2.0 - use-intl: 4.4.0(react@19.2.0) + next: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1) + next-intl-swc-plugin-extractor: 4.5.8 + po-parser: 1.0.2 + react: 19.2.1 + use-intl: 4.5.8(react@19.2.1) optionalDependencies: typescript: 5.9.3 + transitivePeerDependencies: + - '@swc/helpers' - next@15.5.6(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2): + next@16.0.10(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1): dependencies: - '@next/env': 15.5.6 + '@next/env': 16.0.10 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001755 postcss: 8.4.31 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.6 - '@next/swc-darwin-x64': 15.5.6 - '@next/swc-linux-arm64-gnu': 15.5.6 - '@next/swc-linux-arm64-musl': 15.5.6 - '@next/swc-linux-x64-gnu': 15.5.6 - '@next/swc-linux-x64-musl': 15.5.6 - '@next/swc-win32-arm64-msvc': 15.5.6 - '@next/swc-win32-x64-msvc': 15.5.6 - sass: 1.93.2 - sharp: 0.34.3 + '@next/swc-darwin-arm64': 16.0.10 + '@next/swc-darwin-x64': 16.0.10 + '@next/swc-linux-arm64-gnu': 16.0.10 + '@next/swc-linux-arm64-musl': 16.0.10 + '@next/swc-linux-x64-gnu': 16.0.10 + '@next/swc-linux-x64-musl': 16.0.10 + '@next/swc-win32-arm64-msvc': 16.0.10 + '@next/swc-win32-x64-msvc': 16.0.10 + babel-plugin-react-compiler: 1.0.0 + sass: 1.95.1 + sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2): + next@16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.95.1): dependencies: - '@next/env': 15.5.6 + '@next/env': 16.0.10 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001755 postcss: 8.4.31 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.6 - '@next/swc-darwin-x64': 15.5.6 - '@next/swc-linux-arm64-gnu': 15.5.6 - '@next/swc-linux-arm64-musl': 15.5.6 - '@next/swc-linux-x64-gnu': 15.5.6 - '@next/swc-linux-x64-musl': 15.5.6 - '@next/swc-win32-arm64-msvc': 15.5.6 - '@next/swc-win32-x64-msvc': 15.5.6 - sass: 1.93.2 - sharp: 0.34.3 + '@next/swc-darwin-arm64': 16.0.10 + '@next/swc-darwin-x64': 16.0.10 + '@next/swc-linux-arm64-gnu': 16.0.10 + '@next/swc-linux-arm64-musl': 16.0.10 + '@next/swc-linux-x64-gnu': 16.0.10 + '@next/swc-linux-x64-musl': 16.0.10 + '@next/swc-win32-arm64-msvc': 16.0.10 + '@next/swc-win32-x64-msvc': 16.0.10 + babel-plugin-react-compiler: 1.0.0 + sass: 1.95.1 + sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -17492,7 +18054,7 @@ snapshots: node-abi@3.67.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-abort-controller@3.1.1: {} @@ -17535,10 +18097,10 @@ snapshots: dependencies: rrule: 2.8.1 - node-loader@2.1.0(webpack@5.94.0): + node-loader@2.1.0(webpack@5.94.0(@swc/core@1.15.3)): dependencies: loader-utils: 2.0.4 - webpack: 5.94.0 + webpack: 5.94.0(@swc/core@1.15.3) node-mock-http@1.0.2: {} @@ -17560,10 +18122,18 @@ snapshots: node-releases@2.0.19: {} + node-releases@2.0.27: {} + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.3 + validate-npm-package-license: 3.0.4 + + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -17646,18 +18216,20 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - octokit@5.0.4: + obug@2.1.1: {} + + octokit@5.0.5: dependencies: - '@octokit/app': 16.1.1 - '@octokit/core': 7.0.5 + '@octokit/app': 16.1.2 + '@octokit/core': 7.0.6 '@octokit/oauth-app': 8.0.3 - '@octokit/plugin-paginate-graphql': 6.0.0(@octokit/core@7.0.5) - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) - '@octokit/plugin-retry': 8.0.2(@octokit/core@7.0.5) - '@octokit/plugin-throttling': 11.0.2(@octokit/core@7.0.5) - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/plugin-paginate-graphql': 6.0.0(@octokit/core@7.0.6) + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) + '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6) + '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 '@octokit/webhooks': 14.0.0 ofetch@1.4.1: @@ -17666,6 +18238,12 @@ snapshots: node-fetch-native: 1.6.7 ufo: 1.6.1 + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 + ohash@1.1.4: {} on-exit-leak-free@2.1.2: {} @@ -17797,7 +18375,7 @@ snapshots: degenerator: 5.0.1 netmask: 2.0.2 - package-json-from-dist@1.0.0: {} + package-json-from-dist@1.0.1: {} pako@2.1.0: {} @@ -17809,15 +18387,6 @@ snapshots: dependencies: callsites: 3.1.0 - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -17846,6 +18415,12 @@ snapshots: index-to-position: 0.1.2 type-fest: 4.41.0 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.27.1 + index-to-position: 1.2.0 + type-fest: 4.41.0 + parse-ms@3.0.0: {} parse-ms@4.0.0: {} @@ -17888,9 +18463,9 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: - lru-cache: 11.0.2 + lru-cache: 11.2.2 minipass: 7.1.2 path-type@4.0.0: {} @@ -17899,8 +18474,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} - pg-cloudflare@1.2.7: optional: true @@ -17944,8 +18517,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pify@3.0.0: {} @@ -17956,10 +18527,10 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.7.0: + pino@10.1.0: dependencies: + '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 - fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 @@ -17991,6 +18562,8 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + po-parser@1.0.2: {} + possible-typed-array-names@1.0.0: {} postcss-js@4.0.1(postcss@8.5.6): @@ -18056,7 +18629,7 @@ snapshots: prebuild-install@7.1.2: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 @@ -18073,14 +18646,14 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.19(prettier@3.6.2): + prettier-plugin-packagejson@2.5.20(prettier@3.7.4): dependencies: - sort-package-json: 3.4.0 + sort-package-json: 3.5.0 synckit: 0.11.11 optionalDependencies: - prettier: 3.6.2 + prettier: 3.7.4 - prettier@3.6.2: {} + prettier@3.7.4: {} pretty-ms@8.0.0: dependencies: @@ -18104,7 +18677,7 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 19.2.0 + react-is: 19.2.1 proper-lockfile@4.1.2: dependencies: @@ -18116,10 +18689,6 @@ snapshots: dependencies: mkdirp: 1.0.4 - property-information@5.6.0: - dependencies: - xtend: 4.0.2 - property-information@7.0.0: {} prosemirror-changeset@2.3.0: @@ -18140,20 +18709,20 @@ snapshots: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 prosemirror-history@1.4.1: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: @@ -18187,7 +18756,7 @@ snapshots: dependencies: prosemirror-model: 1.24.1 - prosemirror-schema-list@1.4.1: + prosemirror-schema-list@1.5.1: dependencies: prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 @@ -18197,7 +18766,7 @@ snapshots: dependencies: prosemirror-model: 1.24.1 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 prosemirror-tables@1.6.4: dependencies: @@ -18205,21 +18774,21 @@ snapshots: prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.41.4): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.37.2 + prosemirror-view: 1.41.4 prosemirror-transform@1.10.2: dependencies: prosemirror-model: 1.24.1 - prosemirror-view@1.37.2: + prosemirror-view@1.41.4: dependencies: prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 @@ -18239,7 +18808,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.9.2 + '@types/node': 24.10.3 long: 5.2.3 proxmox-api@1.1.1: @@ -18303,7 +18872,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - rate-limiter-flexible@7.3.0: {} + rate-limiter-flexible@8.1.0: {} raw-body@2.5.2: dependencies: @@ -18319,62 +18888,62 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-copy-to-clipboard@5.1.0(react@19.2.0): + react-copy-to-clipboard@5.1.0(react@19.2.1): dependencies: copy-to-clipboard: 3.3.3 prop-types: 15.8.1 - react: 19.2.0 + react: 19.2.1 - react-debounce-input@3.3.0(react@19.2.0): + react-debounce-input@3.3.0(react@19.2.1): dependencies: lodash.debounce: 4.0.8 prop-types: 15.8.1 - react: 19.2.0 + react: 19.2.1 - react-dom@19.2.0(react@19.2.0): + react-dom@19.2.1(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 scheduler: 0.27.0 - react-dropzone@14.3.8(react@19.2.0): + react-dropzone@14.3.8(react@19.2.1): dependencies: attr-accept: 2.2.5 file-selector: 2.1.2 prop-types: 15.8.1 - react: 19.2.0 + react: 19.2.1 - react-error-boundary@6.0.0(react@19.2.0): + react-error-boundary@6.0.0(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 + react: 19.2.1 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.0(react@19.2.0))(react@19.2.0): + react-immutable-pure-component@2.2.2(immutable@3.8.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: immutable: 3.8.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react-inspector@6.0.2(react@19.2.0): + react-inspector@6.0.2(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 - react-is@19.2.0: {} + react-is@19.2.1: {} - react-markdown@10.1.0(@types/react@19.2.2)(react@19.2.0): + react-markdown@10.1.0(@types/react@19.2.7)(react@19.2.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.2.2 + '@types/react': 19.2.7 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.0 + react: 19.2.1 remark-parse: 11.0.0 remark-rehype: 11.1.1 unified: 11.0.5 @@ -18383,40 +18952,40 @@ snapshots: transitivePeerDependencies: - supports-color - react-number-format@5.4.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-number-format@5.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react-redux@9.2.0(@types/react@19.2.2)(react@19.2.0)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.2.0 - use-sync-external-store: 1.4.0(react@19.2.0) + react: 19.2.1 + use-sync-external-store: 1.4.0(react@19.2.1) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 redux: 5.0.1 react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.7)(react@19.2.1): dependencies: - react: 19.2.0 - react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.1 + react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.0): + react-remove-scroll@2.7.1(@types/react@19.2.7)(react@19.2.1): dependencies: - react: 19.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.0) - react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.1 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.1) + react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) - use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) + use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.1) + use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.1) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 react-scan@0.0.31: dependencies: @@ -18426,56 +18995,56 @@ snapshots: mri: 1.2.0 playwright: 1.49.0 - react-simple-code-editor@0.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-simple-code-editor@0.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react-smooth@4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-smooth@4.0.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: fast-equals: 5.2.2 prop-types: 15.8.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-transition-group: 4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0): + react-style-singleton@2.2.3(@types/react@19.2.7)(react@19.2.1): dependencies: get-nonce: 1.0.1 - react: 19.2.0 + react: 19.2.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - react-syntax-highlighter@15.6.1(react@19.2.0): + react-syntax-highlighter@16.1.0(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 prismjs: 1.30.0 - react: 19.2.0 - refractor: 3.6.0 + react: 19.2.1 + refractor: 5.0.0 - react-textarea-autosize@8.5.9(@types/react@19.2.2)(react@19.2.0): + react-textarea-autosize@8.5.9(@types/react@19.2.7)(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 - use-composed-ref: 1.3.0(react@19.2.0) - use-latest: 1.2.1(@types/react@19.2.2)(react@19.2.0) + react: 19.2.1 + use-composed-ref: 1.3.0(react@19.2.1) + use-latest: 1.2.1(@types/react@19.2.7)(react@19.2.1) transitivePeerDependencies: - '@types/react' - react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-transition-group@4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react@19.2.0: {} + react@19.2.1: {} read-package-up@11.0.0: dependencies: @@ -18483,6 +19052,20 @@ snapshots: read-pkg: 9.0.1 type-fest: 4.41.0 + read-package-up@12.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 10.0.0 + type-fest: 5.2.0 + + 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 + unicorn-magic: 0.3.0 + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 @@ -18535,15 +19118,15 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + recharts@2.15.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-is: 19.2.0 - react-smooth: 4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-is: 19.2.1 + react-smooth: 4.0.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -18571,11 +19154,12 @@ snapshots: gopd: 1.2.0 which-builtin-type: 1.2.1 - refractor@3.6.0: + refractor@5.0.0: dependencies: - hastscript: 6.0.0 - parse-entities: 2.0.0 - prismjs: 1.30.0 + '@types/hast': 3.0.4 + '@types/prismjs': 1.26.5 + hastscript: 9.0.1 + parse-entities: 4.0.2 regexp.prototype.flags@1.5.2: dependencies: @@ -18728,8 +19312,6 @@ snapshots: dependencies: tslib: 2.8.1 - rrweb-cssom@0.8.0: {} - rrweb-player@1.0.0-alpha.4: dependencies: '@tsconfig/svelte': 1.0.13 @@ -18810,7 +19392,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.93.2: + sass@1.95.1: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -18832,7 +19414,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.0: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -18841,17 +19423,17 @@ snapshots: secure-json-parse@4.0.0: {} - semantic-release@25.0.1(typescript@5.9.3): + semantic-release@25.0.2(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.1(typescript@5.9.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.0(semantic-release@25.0.1(typescript@5.9.3)) - '@semantic-release/npm': 13.1.1(semantic-release@25.0.1(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.1(typescript@5.9.3)) + '@semantic-release/github': 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/npm': 13.1.2(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)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.9.3) debug: 4.4.3 - env-ci: 11.1.0 + env-ci: 11.2.0 execa: 9.5.2 figures: 6.1.0 find-versions: 6.0.0 @@ -18866,7 +19448,7 @@ snapshots: micromatch: 4.0.8 p-each-series: 3.0.0 p-reduce: 3.0.0 - read-package-up: 11.0.0 + read-package-up: 12.0.0 resolve-from: 5.0.0 semver: 7.7.2 semver-diff: 5.0.0 @@ -18882,7 +19464,7 @@ snapshots: semver-diff@5.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 semver-parser@4.1.8: {} @@ -18898,6 +19480,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + sentence-case@2.1.1: dependencies: no-case: 2.3.2 @@ -18945,34 +19529,34 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.1 - sharp@0.34.3: + sharp@0.34.4: dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.3 - '@img/sharp-darwin-x64': 0.34.3 - '@img/sharp-libvips-darwin-arm64': 1.2.0 - '@img/sharp-libvips-darwin-x64': 1.2.0 - '@img/sharp-libvips-linux-arm': 1.2.0 - '@img/sharp-libvips-linux-arm64': 1.2.0 - '@img/sharp-libvips-linux-ppc64': 1.2.0 - '@img/sharp-libvips-linux-s390x': 1.2.0 - '@img/sharp-libvips-linux-x64': 1.2.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 - '@img/sharp-linux-arm': 0.34.3 - '@img/sharp-linux-arm64': 0.34.3 - '@img/sharp-linux-ppc64': 0.34.3 - '@img/sharp-linux-s390x': 0.34.3 - '@img/sharp-linux-x64': 0.34.3 - '@img/sharp-linuxmusl-arm64': 0.34.3 - '@img/sharp-linuxmusl-x64': 0.34.3 - '@img/sharp-wasm32': 0.34.3 - '@img/sharp-win32-arm64': 0.34.3 - '@img/sharp-win32-ia32': 0.34.3 - '@img/sharp-win32-x64': 0.34.3 + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 optional: true shebang-command@2.0.0: @@ -19033,12 +19617,7 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - - sirv@3.0.1: + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 @@ -19116,17 +19695,17 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sort-object-keys@1.1.3: {} + sort-object-keys@2.0.1: {} - sort-package-json@3.4.0: + sort-package-json@3.5.0: dependencies: detect-indent: 7.0.1 detect-newline: 4.0.1 git-hooks-list: 4.1.1 is-plain-obj: 4.1.0 - semver: 7.7.2 - sort-object-keys: 1.1.3 - tinyglobby: 0.2.14 + semver: 7.7.3 + sort-object-keys: 2.0.1 + tinyglobby: 0.2.15 source-map-js@1.2.1: {} @@ -19137,8 +19716,6 @@ snapshots: source-map@0.6.1: {} - space-separated-tokens@1.1.5: {} - space-separated-tokens@2.0.2: {} spawn-error-forwarder@1.0.0: {} @@ -19192,7 +19769,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.9.0: {} + std-env@3.10.0: {} stop-iteration-iterator@1.1.0: dependencies: @@ -19225,13 +19802,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: emoji-regex: 10.6.0 get-east-asian-width: 1.4.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string.prototype.includes@2.0.1: dependencies: @@ -19307,9 +19884,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -19323,10 +19900,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.0.0: - dependencies: - js-tokens: 9.0.1 - strnum@2.1.0: {} style-to-js@1.1.16: @@ -19337,19 +19910,19 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.2.0): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.2.1): dependencies: client-only: 0.0.1 - react: 19.2.0 + react: 19.2.1 optionalDependencies: '@babel/core': 7.26.0 - styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0): + styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.1): dependencies: client-only: 0.0.1 - react: 19.2.0 + react: 19.2.1 optionalDependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 sugar-high@0.7.5: {} @@ -19362,7 +19935,7 @@ snapshots: function-timeout: 1.0.2 time-span: 5.1.0 - superjson@2.2.3: + superjson@2.2.6: dependencies: copy-anything: 4.0.5 @@ -19390,19 +19963,19 @@ snapshots: deep-rename-keys: 0.2.1 xml-reader: 2.4.3 - swagger-client@3.35.7: + swagger-client@3.36.0: dependencies: '@babel/runtime-corejs3': 7.27.1 '@scarf/scarf': 1.4.0 - '@swagger-api/apidom-core': 1.0.0-beta.50 - '@swagger-api/apidom-error': 1.0.0-beta.50 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.50 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.50 - '@swagger-api/apidom-reference': 1.0.0-beta.50 + '@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 '@swaggerexpert/cookie': 2.0.2 deepmerge: 4.3.1 fast-json-patch: 3.1.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 neotraverse: 0.6.18 node-abort-controller: 3.1.1 node-fetch-commonjs: 3.3.2 @@ -19413,7 +19986,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.29.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + swagger-ui-react@5.30.3(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime-corejs3': 7.27.1 '@scarf/scarf': 1.4.0 @@ -19426,27 +19999,27 @@ snapshots: ieee754: 1.2.1 immutable: 3.8.2 js-file-download: 0.4.12 - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash: 4.17.21 prop-types: 15.8.1 randexp: 0.5.3 randombytes: 2.1.0 - react: 19.2.0 - react-copy-to-clipboard: 5.1.0(react@19.2.0) - react-debounce-input: 3.3.0(react@19.2.0) - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-copy-to-clipboard: 5.1.0(react@19.2.1) + react-debounce-input: 3.3.0(react@19.2.1) + react-dom: 19.2.1(react@19.2.1) 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.0(react@19.2.0))(react@19.2.0) - react-inspector: 6.0.2(react@19.2.0) - react-redux: 9.2.0(@types/react@19.2.2)(react@19.2.0)(redux@5.0.1) - react-syntax-highlighter: 15.6.1(react@19.2.0) + react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react-inspector: 6.0.2(react@19.2.1) + react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1) + react-syntax-highlighter: 16.1.0(react@19.2.1) 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.35.7 + swagger-client: 3.36.0 url-parse: 1.5.10 xml: 1.0.1 xml-but-prettier: 1.0.1 @@ -19470,7 +20043,7 @@ snapshots: tagged-tag@1.0.0: {} - tapable@2.2.1: {} + tapable@2.3.0: {} tar-fs@2.1.4: dependencies: @@ -19512,32 +20085,28 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.14(webpack@5.94.0): + terser-webpack-plugin@5.3.14(@swc/core@1.15.3)(webpack@5.94.0(@swc/core@1.15.3)): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.94.0 + terser: 5.44.1 + webpack: 5.94.0(@swc/core@1.15.3) + optionalDependencies: + '@swc/core': 1.15.3 - terser@5.39.0: + terser@5.44.1: dependencies: - '@jridgewell/source-map': 0.3.6 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - - testcontainers@11.7.2: + testcontainers@11.9.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.45 + '@types/dockerode': 3.3.47 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 @@ -19590,12 +20159,12 @@ snapshots: tinycolor2@1.6.0: {} - tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.14: dependencies: - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.4(picomatch@4.0.3) + picomatch: 4.0.3 tinyglobby@0.2.15: dependencies: @@ -19607,15 +20176,7 @@ snapshots: '@types/tinycolor2': 1.4.6 tinycolor2: 1.6.0 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.3: {} - - tippy.js@6.3.7: - dependencies: - '@popperjs/core': 2.11.8 + tinyrainbow@3.0.3: {} title-case@2.1.1: dependencies: @@ -19664,10 +20225,6 @@ snapshots: tr46@0.0.3: {} - tr46@5.1.0: - dependencies: - punycode: 2.3.1 - tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -19702,14 +20259,14 @@ snapshots: trough@2.2.0: {} - trpc-to-openapi@3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.6.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.1.12))(zod@4.1.12): + trpc-to-openapi@3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.7.2(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.1.13))(zod@4.1.13): dependencies: - '@trpc/server': 11.6.0(typescript@5.9.3) + '@trpc/server': 11.7.2(typescript@5.9.3) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 - zod: 4.1.12 - zod-openapi: 5.3.0(zod@4.1.12) + zod: 4.1.13 + zod-openapi: 5.3.0(zod@4.1.13) optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 @@ -19719,14 +20276,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(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.9.2 + '@types/node': 24.10.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19736,6 +20293,8 @@ snapshots: 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: {} @@ -19750,11 +20309,11 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdav@2.1.5: + tsdav@2.1.6: dependencies: base-64: 1.0.0 cross-fetch: 4.1.0 - debug: 4.4.1 + debug: 4.4.3 xml-js: 1.6.11 transitivePeerDependencies: - encoding @@ -19768,15 +20327,15 @@ snapshots: tsx@4.20.4: dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 get-tsconfig: 4.8.1 optionalDependencies: fsevents: 2.3.3 tsx@4.20.5: dependencies: - esbuild: 0.25.11 - get-tsconfig: 4.8.1 + esbuild: 0.25.12 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 optional: true @@ -19787,32 +20346,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.5.8: + turbo-darwin-64@2.6.3: optional: true - turbo-darwin-arm64@2.5.8: + turbo-darwin-arm64@2.6.3: optional: true - turbo-linux-64@2.5.8: + turbo-linux-64@2.6.3: optional: true - turbo-linux-arm64@2.5.8: + turbo-linux-arm64@2.6.3: optional: true - turbo-windows-64@2.5.8: + turbo-windows-64@2.6.3: optional: true - turbo-windows-arm64@2.5.8: + turbo-windows-arm64@2.6.3: optional: true - turbo@2.5.8: + turbo@2.6.3: optionalDependencies: - turbo-darwin-64: 2.5.8 - turbo-darwin-arm64: 2.5.8 - turbo-linux-64: 2.5.8 - turbo-linux-arm64: 2.5.8 - turbo-windows-64: 2.5.8 - turbo-windows-arm64: 2.5.8 + turbo-darwin-64: 2.6.3 + turbo-darwin-arm64: 2.6.3 + turbo-linux-64: 2.6.3 + turbo-linux-arm64: 2.6.3 + turbo-windows-64: 2.6.3 + turbo-windows-arm64: 2.6.3 tweetnacl@0.14.5: {} @@ -19830,11 +20389,11 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.0.1: + type-fest@5.1.0: dependencies: tagged-tag: 1.0.0 - type-fest@5.1.0: + type-fest@5.2.0: dependencies: tagged-tag: 1.0.0 @@ -19916,13 +20475,13 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.46.2(eslint@9.38.0)(typescript@5.9.3): + typescript-eslint@8.49.0(eslint@9.39.1)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - eslint: 9.38.0 + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3) + eslint: 9.39.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -20019,12 +20578,12 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.14.1(webpack-sources@3.2.3): + unplugin@1.14.1(webpack-sources@3.3.3): dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 optionalDependencies: - webpack-sources: 3.2.3 + webpack-sources: 3.3.3 unraw@3.0.0: {} @@ -20040,6 +20599,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.4(browserslist@4.28.0): + dependencies: + browserslist: 4.28.0 + escalade: 3.2.0 + picocolors: 1.1.1 + update-check@1.5.4: dependencies: registry-auth-token: 3.3.2 @@ -20085,61 +20650,59 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0): + use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - use-composed-ref@1.3.0(react@19.2.0): + use-composed-ref@1.3.0(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 - use-deep-compare-effect@1.8.1(react@19.2.0): + use-deep-compare-effect@1.8.1(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 dequal: 2.0.3 - react: 19.2.0 + react: 19.2.1 - use-intl@4.4.0(react@19.2.0): + use-intl@4.5.8(react@19.2.1): dependencies: '@formatjs/fast-memoize': 2.2.1 '@schummar/icu-type-parser': 1.21.5 intl-messageformat: 10.7.1 - react: 19.2.0 + react: 19.2.1 - use-isomorphic-layout-effect@1.1.2(@types/react@19.2.2)(react@19.2.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.2.7)(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - use-latest@1.2.1(@types/react@19.2.2)(react@19.2.0): + use-latest@1.2.1(@types/react@19.2.7)(react@19.2.1): dependencies: - react: 19.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.2)(react@19.2.0) + react: 19.2.1 + use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.7)(react@19.2.1) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0): + use-sidecar@1.1.3(@types/react@19.2.7)(react@19.2.1): dependencies: detect-node-es: 1.1.0 - react: 19.2.0 + react: 19.2.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 - use-sync-external-store@1.4.0(react@19.2.0): + use-sync-external-store@1.4.0(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 util-deprecate@1.0.2: {} uuid@10.0.0: {} - uuid@11.1.0: {} - uuid@8.3.2: {} v8-compile-cache-lib@3.0.1: {} @@ -20206,85 +20769,60 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.2.4(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.3) optionalDependencies: - vite: 7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - typescript - vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): + vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.48.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.3 fsevents: 2.3.3 - sass: 1.93.2 + sass: 1.95.1 sugarss: 5.0.0(postcss@8.5.6) - terser: 5.39.0 + terser: 5.44.1 tsx: 4.20.5 yaml: 2.5.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.9.2)(@vitest/ui@3.2.4)(jsdom@27.0.1(postcss@8.5.6))(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.15(@types/node@24.10.3)(@vitest/ui@4.0.15)(jsdom@27.3.0(postcss@8.5.6))(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - debug: 4.4.1 - expect-type: 1.2.1 - magic-string: 0.30.17 + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.1.12(@types/node@24.10.3)(sass@1.95.1)(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.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.2 - std-env: 3.9.0 + picomatch: 4.0.3 + std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.1.12(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) - vite-node: 3.2.4(@types/node@24.9.2)(sass@1.93.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.1.12(@types/node@24.10.3)(sass@1.95.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 24.9.2 - '@vitest/ui': 3.2.4(vitest@3.2.4) - jsdom: 27.0.1(postcss@8.5.6) + '@types/node': 24.10.3 + '@vitest/ui': 4.0.15(vitest@4.0.15) + jsdom: 27.3.0(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -20294,7 +20832,6 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml @@ -20305,7 +20842,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watchpack@2.4.2: + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -20321,15 +20858,13 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} - webidl-conversions@8.0.0: {} - webpack-sources@3.2.3: {} + webpack-sources@3.3.3: {} webpack-virtual-modules@0.6.2: {} - webpack@5.94.0: + webpack@5.94.0(@swc/core@1.15.3): dependencies: '@types/estree': 1.0.8 '@webassemblyjs/ast': 1.14.1 @@ -20337,23 +20872,23 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) - browserslist: 4.24.4 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.94.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + 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 transitivePeerDependencies: - '@swc/core' - esbuild @@ -20367,11 +20902,6 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.2.0: - dependencies: - tr46: 5.1.0 - webidl-conversions: 7.0.0 - whatwg-url@15.1.0: dependencies: tr46: 6.0.0 @@ -20472,7 +21002,7 @@ snapshots: readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.18.3: + winston@3.19.0: dependencies: '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.8 @@ -20504,15 +21034,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -20622,19 +21152,23 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.5.2 - zod-form-data@3.0.1(zod@4.1.12): + zod-form-data@3.0.1(zod@4.1.13): dependencies: '@rvf/set-get': 7.0.1 - zod: 4.1.12 + zod: 4.1.13 - zod-openapi@5.3.0(zod@4.1.12): + zod-openapi@5.3.0(zod@4.1.13): dependencies: - zod: 4.1.12 + zod: 4.1.13 - zod-validation-error@4.0.2(zod@4.1.12): + zod-validation-error@4.0.2(zod@4.1.13): dependencies: - zod: 4.1.12 + zod: 4.1.13 - zod@4.1.12: {} + zod-validation-error@5.0.0(zod@4.1.13): + dependencies: + zod: 4.1.13 + + zod@4.1.13: {} zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0528dd4bc..8a392051e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,7 @@ packages: - apps/* - packages/* - tooling/* +minimumReleaseAge: 4320 # Only download deps if they are at least 3 days old (in minutes) +minimumReleaseAgeExclude: + - next + - "@next/*" diff --git a/scripts/run.sh b/scripts/run.sh index 9fc481fdd..f1220d9eb 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,10 +1,12 @@ +#!/usr/bin/env bash + # Create sub directories in volume mkdir -p /appdata/db mkdir -p /appdata/redis mkdir -p /appdata/trusted-certificates # Run migrations -if [ $DB_MIGRATIONS_DISABLED = "true" ]; then +if [ "$DB_MIGRATIONS_DISABLED" = "true" ]; then echo "DB migrations are disabled, skipping" else echo "Running DB migrations" @@ -20,13 +22,15 @@ export CRON_JOB_API_KEY=$(openssl rand -base64 32) # 1. Replace the HOSTNAME in the nginx template file # 2. Create the nginx configuration file from the template # 3. Start the nginx server +export HOSTNAME envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf # Start services in the background and store their PIDs nginx -g 'daemon off;' & NGINX_PID=$! -if [ $REDIS_IS_EXTERNAL = "true" ]; then +if [ "$REDIS_IS_EXTERNAL" = "true" ]; then echo "Using external Redis server at redis://$REDIS_HOST:$REDIS_PORT" + REDIS_PID="" else echo "Starting internal Redis server" redis-server /app/redis.conf & @@ -49,9 +53,11 @@ terminate() { echo "Received SIGTERM. Shutting down..." kill -TERM $NGINX_PID $TASKS_PID $WSS_PID $NEXTJS_PID 2>/dev/null wait - # kill redis-server last because of logging of other services - kill -TERM $REDIS_PID 2>/dev/null - wait + # kill redis-server last because of logging of other services and only if $REDIS_PID is set + if [ -n "$REDIS_PID" ]; then + kill -TERM $REDIS_PID 2>/dev/null + wait + fi echo "Shutdown complete." exit 0 } @@ -61,4 +67,4 @@ trap terminate TERM INT # Wait for all processes wait $NEXTJS_PID -terminate \ No newline at end of file +terminate diff --git a/static-data/contributors.json b/static-data/contributors.json index c60570e7f..fa266ad25 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":"VinnyVynce","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":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?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":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?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":"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":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?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":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?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"}] \ 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":"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":"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":"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":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?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":"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 677d3d472..c450e5cb5 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":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"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":"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":"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":"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":"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"}] \ 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":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"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":"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":"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":"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":"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"}] \ No newline at end of file diff --git a/test/renovate.spec.ts b/test/renovate.spec.ts new file mode 100644 index 000000000..0f40a8061 --- /dev/null +++ b/test/renovate.spec.ts @@ -0,0 +1,23 @@ +import fs from "fs/promises"; +import { join } from "path"; +import json5 from "json5"; +import { describe, test } from "vitest"; + +describe("Renovate configuration tests", () => { + test("automerge should be disabled for onlyBuiltDependencies", async () => { + const packageJson = await import("../package.json"); + const renovateConfig = await fs.readFile(join(__dirname, "../.github/renovate.json5"), "utf-8").then(json5.parse); + const onlyBuiltDependencies = packageJson.pnpm.onlyBuiltDependencies; + const automergeDisabledDeps = renovateConfig.packageRules + .filter((rule: any) => rule.automerge === false) + .flatMap((rule: any) => rule.matchPackageNames || []); + + const missingDeps = onlyBuiltDependencies.filter((dep: string) => !automergeDisabledDeps.includes(dep)); + + if (missingDeps.length > 0) { + throw new Error( + `The following onlyBuiltDependencies are missing automerge disable rules in renovate.json5: ${missingDeps.join(", ")}`, + ); + } + }); +}); diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 6a5bbb2e4..d2f3adc22 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,19 +17,19 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "15.5.6", + "@next/eslint-plugin-next": "16.0.10", "eslint-config-prettier": "^10.1.8", - "eslint-config-turbo": "^2.5.8", + "eslint-config-turbo": "^2.6.3", "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.46.2" + "typescript-eslint": "^8.49.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.38.0", + "eslint": "^9.39.1", "typescript": "^5.9.3" } } diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 1e9d260ca..0aa10f762 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -5,9 +5,9 @@ runs: using: composite steps: - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: 24.10.0 + node-version: 24.11.1 cache: "pnpm" - shell: bash diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index b9f64dd06..d91d3eb62 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -11,11 +11,11 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.7.0", - "prettier": "^3.6.2" + "prettier": "^3.7.4" }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", - "prettier-plugin-packagejson": "^2.5.19", + "prettier-plugin-packagejson": "^2.5.20", "typescript": "^5.9.3" } } diff --git a/tooling/typescript/base.json b/tooling/typescript/base.json index 4ff98d150..ea9ea793b 100644 --- a/tooling/typescript/base.json +++ b/tooling/typescript/base.json @@ -1,8 +1,8 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "target": "ES2022", - "lib": ["dom", "dom.iterable", "ES2022"], + "target": "ES2024", + "lib": ["dom", "dom.iterable", "ES2024"], "allowJs": true, "skipLibCheck": true, "strict": true,