diff --git a/.github/workflows/cache-seeder.yml b/.github/workflows/cache-seeder.yml
index 8ec7adee07..4e2988adb4 100644
--- a/.github/workflows/cache-seeder.yml
+++ b/.github/workflows/cache-seeder.yml
@@ -29,7 +29,7 @@ jobs:
gobuild:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- run: make deps-backend deps-tools
- run: TAGS="bindata" make backend
@@ -59,7 +59,7 @@ jobs:
include:
- { tags: "bindata", target: "lint-backend" }
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
with:
lint-cache: "true"
diff --git a/.github/workflows/cron-licenses.yml b/.github/workflows/cron-licenses.yml
index edb6f2e157..2d4e926288 100644
--- a/.github/workflows/cron-licenses.yml
+++ b/.github/workflows/cron-licenses.yml
@@ -12,7 +12,7 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
diff --git a/.github/workflows/cron-renovate.yml b/.github/workflows/cron-renovate.yml
index a50af530f2..4db83a336d 100644
--- a/.github/workflows/cron-renovate.yml
+++ b/.github/workflows/cron-renovate.yml
@@ -20,7 +20,7 @@ jobs:
if: github.repository == 'go-gitea/gitea' # prevent running on forks
timeout-minutes: 30
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: renovatebot/github-action@693b9ef15eec82123529a37c782242f091365961 # v46.1.14
with:
renovate-version: ${{ env.RENOVATE_VERSION }}
diff --git a/.github/workflows/cron-translations.yml b/.github/workflows/cron-translations.yml
index 17f29d4e0c..7c215b2c17 100644
--- a/.github/workflows/cron-translations.yml
+++ b/.github/workflows/cron-translations.yml
@@ -12,7 +12,7 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: crowdin/github-action@8868a33591d21088edfc398968173a3b98d51706 # v2.16.2
with:
upload_sources: true
diff --git a/.github/workflows/files-changed.yml b/.github/workflows/files-changed.yml
index c17afbca97..3c0603974e 100644
--- a/.github/workflows/files-changed.yml
+++ b/.github/workflows/files-changed.yml
@@ -49,7 +49,7 @@ jobs:
e2e: ${{ steps.changes.outputs.e2e }}
shell: ${{ steps.changes.outputs.shell }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: changes
with:
diff --git a/.github/workflows/pull-compliance.yml b/.github/workflows/pull-compliance.yml
index 801966e144..6c41b6b4c1 100644
--- a/.github/workflows/pull-compliance.yml
+++ b/.github/workflows/pull-compliance.yml
@@ -19,7 +19,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
with:
lint-cache: "true"
@@ -31,7 +31,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
with:
cache: "false"
@@ -62,7 +62,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- run: make deps-backend deps-tools
- run: make --always-make checks-backend # ensure the "go-licenses" make target runs
@@ -72,7 +72,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/node-setup
- run: make deps-frontend
- run: make lint-frontend
@@ -85,7 +85,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- run: make deps-backend generate-go
# no frontend build here as backend should be able to build, even without any frontend files
diff --git a/.github/workflows/pull-db-tests.yml b/.github/workflows/pull-db-tests.yml
index cbf86247ce..4cc8d25bbb 100644
--- a/.github/workflows/pull-db-tests.yml
+++ b/.github/workflows/pull-db-tests.yml
@@ -42,7 +42,7 @@ jobs:
ports:
- "9000:9000"
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- uses: ./.github/actions/pgsql-shard
with:
@@ -78,7 +78,7 @@ jobs:
ports:
- "9000:9000"
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- uses: ./.github/actions/pgsql-shard
with:
@@ -90,7 +90,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- run: make deps-backend
- run: make backend
@@ -151,7 +151,7 @@ jobs:
ports:
- 10000:10000
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- name: Add hosts to /etc/hosts
run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 minio devstoreaccount1.azurite.local mysql elasticsearch meilisearch smtpimap" | sudo tee -a /etc/hosts'
@@ -208,7 +208,7 @@ jobs:
- "587:587"
- "993:993"
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- name: Add hosts to /etc/hosts
run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql elasticsearch smtpimap" | sudo tee -a /etc/hosts'
@@ -241,7 +241,7 @@ jobs:
ports:
- 10000:10000
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- name: Add hosts to /etc/hosts
run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mssql devstoreaccount1.azurite.local" | sudo tee -a /etc/hosts'
diff --git a/.github/workflows/pull-docker-dryrun.yml b/.github/workflows/pull-docker-dryrun.yml
index 43a4f48669..f7483132b5 100644
--- a/.github/workflows/pull-docker-dryrun.yml
+++ b/.github/workflows/pull-docker-dryrun.yml
@@ -21,7 +21,7 @@ jobs:
needs: [files-changed]
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/docker-dryrun
with:
platform: linux/amd64
@@ -31,7 +31,7 @@ jobs:
needs: [files-changed]
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/docker-dryrun
with:
platform: linux/arm64
@@ -41,7 +41,7 @@ jobs:
needs: [files-changed]
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/docker-dryrun
with:
platform: linux/riscv64
diff --git a/.github/workflows/pull-e2e-tests.yml b/.github/workflows/pull-e2e-tests.yml
index f0283f4022..bcd5eba381 100644
--- a/.github/workflows/pull-e2e-tests.yml
+++ b/.github/workflows/pull-e2e-tests.yml
@@ -19,7 +19,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: ./.github/actions/go-setup
- uses: ./.github/actions/node-setup
- run: make deps-frontend
diff --git a/.github/workflows/pull-labeler.yml b/.github/workflows/pull-labeler.yml
index 34395c8d9e..dd19055162 100644
--- a/.github/workflows/pull-labeler.yml
+++ b/.github/workflows/pull-labeler.yml
@@ -30,7 +30,7 @@ jobs:
pull-requests: write
steps:
# Base-branch checkout only: pull_request_target runs with elevated token; never run PR-head code here.
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ github.event.pull_request.base.sha }}
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
diff --git a/.github/workflows/release-nightly-snapcraft.yml b/.github/workflows/release-nightly-snapcraft.yml
index 0f9ac1d423..46ea663f83 100644
--- a/.github/workflows/release-nightly-snapcraft.yml
+++ b/.github/workflows/release-nightly-snapcraft.yml
@@ -17,7 +17,7 @@ jobs:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install snapcraft
run: sudo snap install snapcraft --classic
diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml
index d156132943..70251bb091 100644
--- a/.github/workflows/release-nightly.yml
+++ b/.github/workflows/release-nightly.yml
@@ -14,7 +14,7 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
@@ -57,7 +57,7 @@ jobs:
echo "Cleaned name is ${REF_NAME}"
echo "branch=${REF_NAME}-nightly" >> "$GITHUB_OUTPUT"
- name: configure aws
- uses: aws-actions/configure-aws-credentials@acca2b1b2070338fb9fd1ca27ecee81d687e58e5 # v6.1.2
+ uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
with:
aws-region: ${{ secrets.AWS_REGION }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -75,7 +75,7 @@ jobs:
contents: read
packages: write # to publish to ghcr.io
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
diff --git a/.github/workflows/release-tag-rc.yml b/.github/workflows/release-tag-rc.yml
index 3e7655027c..34ed45b281 100644
--- a/.github/workflows/release-tag-rc.yml
+++ b/.github/workflows/release-tag-rc.yml
@@ -15,7 +15,7 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
@@ -58,7 +58,7 @@ jobs:
echo "Cleaned name is ${REF_NAME}"
echo "branch=${REF_NAME}" >> "$GITHUB_OUTPUT"
- name: configure aws
- uses: aws-actions/configure-aws-credentials@acca2b1b2070338fb9fd1ca27ecee81d687e58e5 # v6.1.2
+ uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
with:
aws-region: ${{ secrets.AWS_REGION }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -86,7 +86,7 @@ jobs:
contents: read
packages: write # to publish to ghcr.io
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
diff --git a/.github/workflows/release-tag-version.yml b/.github/workflows/release-tag-version.yml
index 66a2984def..394c524b75 100644
--- a/.github/workflows/release-tag-version.yml
+++ b/.github/workflows/release-tag-version.yml
@@ -18,7 +18,7 @@ jobs:
contents: read
packages: write # to publish to ghcr.io
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
@@ -61,7 +61,7 @@ jobs:
echo "Cleaned name is ${REF_NAME}"
echo "branch=${REF_NAME}" >> "$GITHUB_OUTPUT"
- name: configure aws
- uses: aws-actions/configure-aws-credentials@acca2b1b2070338fb9fd1ca27ecee81d687e58e5 # v6.1.2
+ uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
with:
aws-region: ${{ secrets.AWS_REGION }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -89,7 +89,7 @@ jobs:
contents: read
packages: write # to publish to ghcr.io
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# fetch all commits instead of only the last as some branches are long lived and could have many between versions
# fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567
- run: git fetch --unshallow --quiet --tags --force
diff --git a/models/actions/run_job.go b/models/actions/run_job.go
index caf66ca451..df01546fd8 100644
--- a/models/actions/run_job.go
+++ b/models/actions/run_job.go
@@ -4,6 +4,7 @@
package actions
import (
+ "cmp"
"context"
"fmt"
"slices"
@@ -671,18 +672,18 @@ func cancelOneJob(ctx context.Context, job *ActionRunJob) (*ActionRunJob, error)
func cancelReusableCaller(ctx context.Context, caller *ActionRunJob) ([]*ActionRunJob, error) {
cancelledJobs := make([]*ActionRunJob, 0)
- if c, err := cancelOneJob(ctx, caller); err != nil {
- return cancelledJobs, err
- } else if c != nil {
- cancelledJobs = append(cancelledJobs, c)
- }
-
attemptJobs, err := GetRunJobsByRunAndAttemptID(ctx, caller.RunID, caller.RunAttemptID)
if err != nil {
return cancelledJobs, err
}
- for _, c := range CollectAllDescendantJobs(caller, attemptJobs) {
+ // Cancel descendants deepest-first, then the caller: a caller's status is aggregated from its children,
+ // so each child must reach its final state before its parent caller is re-aggregated.
+ // A child's ID always exceeds its parent's, so descending ID is a valid deepest-first order.
+ descendants := CollectAllDescendantJobs(caller, attemptJobs)
+ slices.SortFunc(descendants, func(a, b *ActionRunJob) int { return cmp.Compare(b.ID, a.ID) })
+
+ for _, c := range descendants {
cancelled, err := cancelOneJob(ctx, c)
if err != nil {
return cancelledJobs, err
@@ -691,5 +692,11 @@ func cancelReusableCaller(ctx context.Context, caller *ActionRunJob) ([]*ActionR
cancelledJobs = append(cancelledJobs, cancelled)
}
}
+
+ if c, err := cancelOneJob(ctx, caller); err != nil {
+ return cancelledJobs, err
+ } else if c != nil {
+ cancelledJobs = append(cancelledJobs, c)
+ }
return cancelledJobs, nil
}
diff --git a/models/actions/run_job_test.go b/models/actions/run_job_test.go
index a9e07ce0cf..4437b5906d 100644
--- a/models/actions/run_job_test.go
+++ b/models/actions/run_job_test.go
@@ -131,3 +131,69 @@ func TestGetPriorAttemptChildrenByParent(t *testing.T) {
assertAttempt1Children(t, out)
})
}
+
+// A reusable caller subtree with a Blocked descendant (e.g. a nested caller stuck on an invalid `uses:`) must aggregate to Cancelled, when the run is cancelled.
+func TestCancelJobs_NestedBlockedReusableCaller(t *testing.T) {
+ require.NoError(t, unittest.PrepareTestDatabase())
+ ctx := t.Context()
+
+ run := &ActionRun{
+ Title: "cancel-nested-caller",
+ RepoID: 4,
+ Index: 9701,
+ OwnerID: 1,
+ WorkflowID: "caller.yaml",
+ TriggerUserID: 1,
+ Ref: "refs/heads/master",
+ CommitSHA: "c2d72f548424103f01ee1dc02889c1e2bff816b0",
+ Event: "push",
+ TriggerEvent: "push",
+ EventPayload: "{}",
+ Status: StatusBlocked,
+ }
+ require.NoError(t, db.Insert(ctx, run))
+
+ attempt := &ActionRunAttempt{RepoID: run.RepoID, RunID: run.ID, Attempt: 1, TriggerUserID: 1, Status: StatusBlocked}
+ require.NoError(t, db.Insert(ctx, attempt))
+ run.LatestAttemptID = attempt.ID
+ require.NoError(t, UpdateRun(ctx, run, "latest_attempt_id"))
+
+ newJob := func(name string, attemptJobID, parentID int64, callUses string) *ActionRunJob {
+ job := &ActionRunJob{
+ RunID: run.ID,
+ RunAttemptID: attempt.ID,
+ RepoID: run.RepoID,
+ OwnerID: run.OwnerID,
+ CommitSHA: run.CommitSHA,
+ Name: name,
+ JobID: name,
+ Attempt: 1,
+ Status: StatusBlocked,
+ AttemptJobID: attemptJobID,
+ IsReusableCaller: true,
+ CallUses: callUses,
+ ParentJobID: parentID,
+ }
+ require.NoError(t, db.Insert(ctx, job))
+ return job
+ }
+
+ // outer: a valid top-level caller that expanded; inner: a nested caller stuck Blocked (invalid uses, never expands).
+ outer := newJob("outer", 1, 0, "./.gitea/workflows/lib.yml")
+ inner := newJob("inner", 2, outer.ID, "https://other.example.com/o/r/.gitea/workflows/ci.yml@v1")
+
+ // Cancel all jobs of the attempt, ordered by id (parent before child).
+ jobs, err := GetRunJobsByRunAndAttemptID(ctx, run.ID, attempt.ID)
+ require.NoError(t, err)
+ _, err = CancelJobs(ctx, jobs)
+ require.NoError(t, err)
+
+ for _, j := range []*ActionRunJob{outer, inner} {
+ got := unittest.AssertExistsAndLoadBean(t, &ActionRunJob{ID: j.ID})
+ assert.Equal(t, StatusCancelled, got.Status, "job %q should be cancelled", j.JobID)
+ }
+ gotAttempt := unittest.AssertExistsAndLoadBean(t, &ActionRunAttempt{ID: attempt.ID})
+ assert.Equal(t, StatusCancelled, gotAttempt.Status, "attempt must aggregate to Cancelled")
+ gotRun := unittest.AssertExistsAndLoadBean(t, &ActionRun{ID: run.ID})
+ assert.Equal(t, StatusCancelled, gotRun.Status, "run must aggregate to Cancelled, not stay Blocked")
+}
diff --git a/options/locale/locale_en-US.json b/options/locale/locale_en-US.json
index 51a9797742..9595baebed 100644
--- a/options/locale/locale_en-US.json
+++ b/options/locale/locale_en-US.json
@@ -3774,6 +3774,7 @@
"actions.runs.no_matching_online_runner_helper": "No matching online runner with label: %s",
"actions.runs.no_job_without_needs": "The workflow must contain at least one job without dependencies.",
"actions.runs.no_job": "The workflow must contain at least one job",
+ "actions.runs.invalid_reusable_workflow_uses": "Invalid reusable workflow \"uses\": %s",
"actions.runs.actor": "Actor",
"actions.runs.status": "Status",
"actions.runs.actors_no_select": "All actors",
diff --git a/package.json b/package.json
index 8a915ea795..cc6c270a84 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"type": "module",
- "packageManager": "pnpm@11.4.0",
+ "packageManager": "pnpm@11.5.1",
"engines": {
"node": ">= 22.18.0",
"pnpm": ">= 11.0.0"
@@ -28,7 +28,7 @@
"@lezer/highlight": "1.2.3",
"@mcaptcha/vanilla-glue": "0.1.0-rc2",
"@mermaid-js/layout-elk": "0.2.1",
- "@primer/octicons": "19.27.0",
+ "@primer/octicons": "19.28.0",
"@replit/codemirror-indentation-markers": "6.5.3",
"@replit/codemirror-lang-nix": "6.0.1",
"@replit/codemirror-lang-svelte": "6.0.0",
@@ -50,14 +50,14 @@
"esbuild": "0.28.0",
"idiomorph": "0.7.4",
"jquery": "4.0.0",
- "js-yaml": "4.1.1",
+ "js-yaml": "4.2.0",
"katex": "0.17.0",
"mermaid": "11.15.0",
"online-3d-viewer": "0.18.0",
"pdfobject": "2.3.1",
"perfect-debounce": "2.1.0",
"postcss": "8.5.15",
- "rolldown-license-plugin": "3.0.8",
+ "rolldown-license-plugin": "3.0.9",
"sortablejs": "1.15.7",
"swagger-ui-dist": "5.32.6",
"tailwindcss": "3.4.19",
@@ -67,7 +67,7 @@
"tributejs": "5.1.3",
"uint8-to-base64": "0.2.1",
"vanilla-colorful": "0.7.2",
- "vite": "8.0.14",
+ "vite": "8.0.16",
"vite-string-plugin": "2.0.4",
"vue": "3.5.35",
"vue-bar-graph": "2.2.0",
@@ -89,11 +89,11 @@
"@types/swagger-ui-dist": "3.30.6",
"@types/throttle-debounce": "5.0.2",
"@types/toastify-js": "1.12.4",
- "@typescript-eslint/parser": "8.60.0",
+ "@typescript-eslint/parser": "8.60.1",
"@vitejs/plugin-vue": "6.0.7",
- "@vitest/eslint-plugin": "1.6.18",
- "eslint": "10.4.0",
- "eslint-import-resolver-typescript": "4.4.4",
+ "@vitest/eslint-plugin": "1.6.19",
+ "eslint": "10.4.1",
+ "eslint-import-resolver-typescript": "4.4.5",
"eslint-plugin-array-func": "5.1.1",
"eslint-plugin-de-morgan": "2.1.2",
"eslint-plugin-github": "6.0.0",
@@ -103,7 +103,7 @@
"eslint-plugin-sonarjs": "4.0.3",
"eslint-plugin-unicorn": "64.0.0",
"eslint-plugin-vue": "10.9.1",
- "eslint-plugin-vue-scoped-css": "3.1.0",
+ "eslint-plugin-vue-scoped-css": "3.1.1",
"eslint-plugin-wc": "3.1.0",
"globals": "17.6.0",
"happy-dom": "20.9.0",
@@ -119,9 +119,9 @@
"stylelint-value-no-unknown-custom-properties": "6.1.1",
"svgo": "4.0.1",
"typescript": "6.0.3",
- "typescript-eslint": "8.60.0",
- "updates": "17.17.2",
- "vitest": "4.1.7",
- "vue-tsc": "3.3.2"
+ "typescript-eslint": "8.60.1",
+ "updates": "17.17.3",
+ "vitest": "4.1.8",
+ "vue-tsc": "3.3.3"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 11c6ebf5ad..ce5d84c982 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -75,8 +75,8 @@ importers:
specifier: 0.2.1
version: 0.2.1(mermaid@11.15.0)
'@primer/octicons':
- specifier: 19.27.0
- version: 19.27.0
+ specifier: 19.28.0
+ version: 19.28.0
'@replit/codemirror-indentation-markers':
specifier: 6.5.3
version: 6.5.3(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.43.0)
@@ -94,7 +94,7 @@ importers:
version: 2.6.2
'@vitejs/plugin-vue':
specifier: 6.0.7
- version: 6.0.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))(vue@3.5.35(typescript@6.0.3))
+ version: 6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))(vue@3.5.35(typescript@6.0.3))
ansi_up:
specifier: 6.0.6
version: 6.0.6
@@ -141,8 +141,8 @@ importers:
specifier: 4.0.0
version: 4.0.0
js-yaml:
- specifier: 4.1.1
- version: 4.1.1
+ specifier: 4.2.0
+ version: 4.2.0
katex:
specifier: 0.17.0
version: 0.17.0
@@ -162,8 +162,8 @@ importers:
specifier: 8.5.15
version: 8.5.15
rolldown-license-plugin:
- specifier: 3.0.8
- version: 3.0.8(rolldown@1.0.2)
+ specifier: 3.0.9
+ version: 3.0.9(rolldown@1.0.3)
sortablejs:
specifier: 1.15.7
version: 1.15.7
@@ -192,11 +192,11 @@ importers:
specifier: 0.7.2
version: 0.7.2
vite:
- specifier: 8.0.14
- version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
+ specifier: 8.0.16
+ version: 8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
vite-string-plugin:
specifier: 2.0.4
- version: 2.0.4(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
+ version: 2.0.4(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
vue:
specifier: 3.5.35
version: 3.5.35(typescript@6.0.3)
@@ -209,7 +209,7 @@ importers:
devDependencies:
'@eslint-community/eslint-plugin-eslint-comments':
specifier: 4.7.2
- version: 4.7.2(eslint@10.4.0(jiti@2.7.0))
+ version: 4.7.2(eslint@10.4.1(jiti@2.7.0))
'@eslint/json':
specifier: 1.2.0
version: 1.2.0
@@ -218,7 +218,7 @@ importers:
version: 1.60.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
- version: 5.10.0(eslint@10.4.0(jiti@2.7.0))
+ version: 5.10.0(eslint@10.4.1(jiti@2.7.0))
'@stylistic/stylelint-plugin':
specifier: 5.2.0
version: 5.2.0(stylelint@17.12.0(typescript@6.0.3))
@@ -253,50 +253,50 @@ importers:
specifier: 1.12.4
version: 1.12.4
'@typescript-eslint/parser':
- specifier: 8.60.0
- version: 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ specifier: 8.60.1
+ version: 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
'@vitest/eslint-plugin':
- specifier: 1.6.18
- version: 1.6.18(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.7(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)))
+ specifier: 1.6.19
+ version: 1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)))
eslint:
- specifier: 10.4.0
- version: 10.4.0(jiti@2.7.0)
+ specifier: 10.4.1
+ version: 10.4.1(jiti@2.7.0)
eslint-import-resolver-typescript:
- specifier: 4.4.4
- version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.0(jiti@2.7.0))
+ specifier: 4.4.5
+ version: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-array-func:
specifier: 5.1.1
- version: 5.1.1(eslint@10.4.0(jiti@2.7.0))
+ version: 5.1.1(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-de-morgan:
specifier: 2.1.2
- version: 2.1.2(eslint@10.4.0(jiti@2.7.0))
+ version: 2.1.2(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-github:
specifier: 6.0.0
- version: 6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0))
+ version: 6.0.0(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-import-x:
specifier: 4.16.2
- version: 4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0))
+ version: 4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-playwright:
specifier: 2.10.4
- version: 2.10.4(eslint@10.4.0(jiti@2.7.0))
+ version: 2.10.4(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-regexp:
specifier: 3.1.0
- version: 3.1.0(eslint@10.4.0(jiti@2.7.0))
+ version: 3.1.0(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-sonarjs:
specifier: 4.0.3
- version: 4.0.3(eslint@10.4.0(jiti@2.7.0))
+ version: 4.0.3(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-unicorn:
specifier: 64.0.0
- version: 64.0.0(eslint@10.4.0(jiti@2.7.0))
+ version: 64.0.0(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-vue:
specifier: 10.9.1
- version: 10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0)))(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)))
+ version: 10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0)))(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0)))
eslint-plugin-vue-scoped-css:
- specifier: 3.1.0
- version: 3.1.0(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)))
+ specifier: 3.1.1
+ version: 3.1.1(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0)))
eslint-plugin-wc:
specifier: 3.1.0
- version: 3.1.0(eslint@10.4.0(jiti@2.7.0))
+ version: 3.1.0(eslint@10.4.1(jiti@2.7.0))
globals:
specifier: 17.6.0
version: 17.6.0
@@ -340,17 +340,17 @@ importers:
specifier: 6.0.3
version: 6.0.3
typescript-eslint:
- specifier: 8.60.0
- version: 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ specifier: 8.60.1
+ version: 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
updates:
- specifier: 17.17.2
- version: 17.17.2
+ specifier: 17.17.3
+ version: 17.17.3
vitest:
- specifier: 4.1.7
- version: 4.1.7(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
+ specifier: 4.1.8
+ version: 4.1.8(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
vue-tsc:
- specifier: 3.3.2
- version: 3.3.2(typescript@6.0.3)
+ specifier: 3.3.3
+ version: 3.3.3(typescript@6.0.3)
packages:
@@ -985,8 +985,8 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@oxc-project/types@0.132.0':
- resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==}
+ '@oxc-project/types@0.133.0':
+ resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
'@package-json/types@0.0.12':
resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==}
@@ -1003,8 +1003,8 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
- '@primer/octicons@19.27.0':
- resolution: {integrity: sha512-7xC6D89f9IcoDezeKTGETbgRAoXJnbZlakavqYzD4Wo+uTC6212k0fTE/dLV8WCDOwfp//WyONftdaFRdI1VdQ==}
+ '@primer/octicons@19.28.0':
+ resolution: {integrity: sha512-FCpW9ZXI9U9h7wjYSXFQK4Zyp1Roc/kF8nymak4bYccWaWoUixbnIr4u8UYiRoPRSglm+23TZEyUZHrgNql9Jw==}
'@replit/codemirror-indentation-markers@6.5.3':
resolution: {integrity: sha512-hL5Sfvw3C1vgg7GolLe/uxX5T3tmgOA3ZzqlMv47zjU1ON51pzNWiVbS22oh6crYhtVhv8b3gdXwoYp++2ilHw==}
@@ -1054,97 +1054,97 @@ packages:
resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==}
engines: {node: '>= 10'}
- '@rolldown/binding-android-arm64@1.0.2':
- resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==}
+ '@rolldown/binding-android-arm64@1.0.3':
+ resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.0.2':
- resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==}
+ '@rolldown/binding-darwin-arm64@1.0.3':
+ resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.2':
- resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==}
+ '@rolldown/binding-darwin-x64@1.0.3':
+ resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.0.2':
- resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==}
+ '@rolldown/binding-freebsd-x64@1.0.3':
+ resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.2':
- resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
+ resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.2':
- resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==}
+ '@rolldown/binding-linux-arm64-gnu@1.0.3':
+ resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.0.2':
- resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==}
+ '@rolldown/binding-linux-arm64-musl@1.0.3':
+ resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-ppc64-gnu@1.0.2':
- resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==}
+ '@rolldown/binding-linux-ppc64-gnu@1.0.3':
+ resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.0.2':
- resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==}
+ '@rolldown/binding-linux-s390x-gnu@1.0.3':
+ resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.2':
- resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==}
+ '@rolldown/binding-linux-x64-gnu@1.0.3':
+ resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.0.2':
- resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==}
+ '@rolldown/binding-linux-x64-musl@1.0.3':
+ resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.0.2':
- resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==}
+ '@rolldown/binding-openharmony-arm64@1.0.3':
+ resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-wasm32-wasi@1.0.2':
- resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==}
+ '@rolldown/binding-wasm32-wasi@1.0.3':
+ resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-win32-arm64-msvc@1.0.2':
- resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==}
+ '@rolldown/binding-win32-arm64-msvc@1.0.3':
+ resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.2':
- resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==}
+ '@rolldown/binding-win32-x64-msvc@1.0.3':
+ resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -1408,14 +1408,6 @@ packages:
'@types/yargs@17.0.35':
resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
- '@typescript-eslint/eslint-plugin@8.60.0':
- resolution: {integrity: sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.60.0
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/eslint-plugin@8.60.1':
resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1424,52 +1416,29 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/parser@8.60.0':
- resolution: {integrity: sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==}
+ '@typescript-eslint/parser@8.60.1':
+ resolution: {integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/project-service@8.60.0':
- resolution: {integrity: sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/project-service@8.60.1':
resolution: {integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/scope-manager@8.60.0':
- resolution: {integrity: sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/scope-manager@8.60.1':
resolution: {integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.60.0':
- resolution: {integrity: sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/tsconfig-utils@8.60.1':
resolution: {integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/type-utils@8.60.0':
- resolution: {integrity: sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/type-utils@8.60.1':
resolution: {integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1477,33 +1446,16 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/types@8.60.0':
- resolution: {integrity: sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/types@8.60.1':
resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.60.0':
- resolution: {integrity: sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/typescript-estree@8.60.1':
resolution: {integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/utils@8.60.0':
- resolution: {integrity: sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
'@typescript-eslint/utils@8.60.1':
resolution: {integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1511,10 +1463,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/visitor-keys@8.60.0':
- resolution: {integrity: sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/visitor-keys@8.60.1':
resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1649,8 +1597,8 @@ packages:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vue: ^3.2.25
- '@vitest/eslint-plugin@1.6.18':
- resolution: {integrity: sha512-J6U4X0jH3NwTuYouvrJn6I8ypTOU+GhKEjyVwpoPnDuc23usa/xi/R0caWLBbNp3xLy3/rL1YkuJuneTMVV4Mg==}
+ '@vitest/eslint-plugin@1.6.19':
+ resolution: {integrity: sha512-zodmXRsVKFsuHxHJILuTFaaKsrsxm0YsiOX65clk+LpCW9JrVXaf6ERXr0caDs+NEk0S62Jyk0K7XYQ7gWXheA==}
engines: {node: '>=18'}
peerDependencies:
'@typescript-eslint/eslint-plugin': '*'
@@ -1665,11 +1613,11 @@ packages:
vitest:
optional: true
- '@vitest/expect@4.1.7':
- resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==}
+ '@vitest/expect@4.1.8':
+ resolution: {integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==}
- '@vitest/mocker@4.1.7':
- resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==}
+ '@vitest/mocker@4.1.8':
+ resolution: {integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1679,20 +1627,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.7':
- resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==}
+ '@vitest/pretty-format@4.1.8':
+ resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==}
- '@vitest/runner@4.1.7':
- resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==}
+ '@vitest/runner@4.1.8':
+ resolution: {integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==}
- '@vitest/snapshot@4.1.7':
- resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==}
+ '@vitest/snapshot@4.1.8':
+ resolution: {integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==}
- '@vitest/spy@4.1.7':
- resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==}
+ '@vitest/spy@4.1.8':
+ resolution: {integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==}
- '@vitest/utils@4.1.7':
- resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==}
+ '@vitest/utils@4.1.8':
+ resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==}
'@volar/language-core@2.4.28':
resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
@@ -1715,8 +1663,8 @@ packages:
'@vue/compiler-ssr@3.5.35':
resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==}
- '@vue/language-core@3.3.2':
- resolution: {integrity: sha512-CLwjSfHlPLhjd2qhuS3tTFtnOIWHXAM5u4X1DxmzlQ8j5bmOYlKCsSusOP7jCRJnlVg0mCTQtHU3vwFvopZGoQ==}
+ '@vue/language-core@3.3.3':
+ resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==}
'@vue/reactivity@3.5.35':
resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==}
@@ -2594,8 +2542,8 @@ packages:
eslint-import-resolver-node@0.3.10:
resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==}
- eslint-import-resolver-typescript@4.4.4:
- resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==}
+ eslint-import-resolver-typescript@4.4.5:
+ resolution: {integrity: sha512-nbE5XLph6TLtGYcu/U6e6ZVXyKBhbDWK5cLGk76eJ7NdZpwf1P9EFkpt1Z01mNZNrrilsAYWKH6zUkL4reoXbw==}
engines: {node: ^16.17.0 || >=18.6.0}
peerDependencies:
eslint: '*'
@@ -2737,8 +2685,8 @@ packages:
peerDependencies:
eslint: '>=9.38.0'
- eslint-plugin-vue-scoped-css@3.1.0:
- resolution: {integrity: sha512-R9XLrIZaP6QGz9b4kO2K4+lP4NcO2TKcw71zBtIYCoqqTk5ja1ySruYAllBT2LPIJVQ4NZaB2IFSvLjLEpYqQA==}
+ eslint-plugin-vue-scoped-css@3.1.1:
+ resolution: {integrity: sha512-GIskMvLPnDtiu88rWXQHy2b2QZ4j959N5UgghML64jH0sg3Km+HRa9m7nkpcEBGLD4iA4vtMDbBIoLdFcbT8lQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
eslint: '>=9.38.0'
@@ -2790,8 +2738,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- eslint@10.4.0:
- resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==}
+ eslint@10.4.1:
+ resolution: {integrity: sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -3411,6 +3359,10 @@ packages:
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
+ js-yaml@4.2.0:
+ resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==}
+ hasBin: true
+
jsbn@0.1.1:
resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
@@ -4238,13 +4190,13 @@ packages:
robust-predicates@3.0.3:
resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==}
- rolldown-license-plugin@3.0.8:
- resolution: {integrity: sha512-q4nvGtimBIxValBXzkri+0jP2Sdf6PLztYykn7vCu0nVkJEzGsVRfcH/1X6qm0S8//4/gFt/XxwJqpaM6uSdJA==}
+ rolldown-license-plugin@3.0.9:
+ resolution: {integrity: sha512-40u0paM+f049toEj+/q8PlIQXbgkwPSqORtRJihoXr/v1V4amhVSi2uWOZSWyVp1+V/vkTyAV+Ib/fA+DeO3Ag==}
peerDependencies:
rolldown: '*'
- rolldown@1.0.2:
- resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==}
+ rolldown@1.0.3:
+ resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -4688,8 +4640,8 @@ packages:
resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==}
engines: {node: '>= 0.4'}
- typescript-eslint@8.60.0:
- resolution: {integrity: sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==}
+ typescript-eslint@8.60.1:
+ resolution: {integrity: sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
@@ -4742,8 +4694,8 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
- updates@17.17.2:
- resolution: {integrity: sha512-gOwGrBYBvHVS+OiaUFRuilrmf/P8eYVmKUrkq7W3fvYUgpBsNKgfZo/CPhLKBa7xEFiEuMwMxTkiKsd9mn8pEw==}
+ updates@17.17.3:
+ resolution: {integrity: sha512-ZIhWarBUBmKG65d0AeOOMlZFonGWn6Ntol4/epga/xbQymEOh/2s07U+1UGM94y9JEPbk4CjowYgEo3F76ZxYA==}
engines: {node: '>=22'}
hasBin: true
@@ -4781,8 +4733,8 @@ packages:
peerDependencies:
vite: '*'
- vite@8.0.14:
- resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==}
+ vite@8.0.16:
+ resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -4824,20 +4776,20 @@ packages:
yaml:
optional: true
- vitest@4.1.7:
- resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==}
+ vitest@4.1.8:
+ resolution: {integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.7
- '@vitest/browser-preview': 4.1.7
- '@vitest/browser-webdriverio': 4.1.7
- '@vitest/coverage-istanbul': 4.1.7
- '@vitest/coverage-v8': 4.1.7
- '@vitest/ui': 4.1.7
+ '@vitest/browser-playwright': 4.1.8
+ '@vitest/browser-preview': 4.1.8
+ '@vitest/browser-webdriverio': 4.1.8
+ '@vitest/coverage-istanbul': 4.1.8
+ '@vitest/coverage-v8': 4.1.8
+ '@vitest/ui': 4.1.8
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -4883,8 +4835,8 @@ packages:
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- vue-tsc@3.3.2:
- resolution: {integrity: sha512-n7nQoA3YWW/eiDR8jMiv/uJvlg0uLGs+YgUrsTrf9EZaYSt3tuvMZb5V8+7Mvh/EH5pnY/hoVdgfjH+XcK+wwA==}
+ vue-tsc@3.3.3:
+ resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@@ -5094,7 +5046,7 @@ snapshots:
'@citation-js/plugin-yaml@0.6.2':
dependencies:
- js-yaml: 4.1.1
+ js-yaml: 4.2.0
'@citation-js/plugin-zenodo@0.6.2':
dependencies:
@@ -5478,24 +5430,24 @@ snapshots:
'@esbuild/win32-x64@0.28.0':
optional: true
- '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.4.0(jiti@2.7.0))':
+ '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.4.1(jiti@2.7.0))':
dependencies:
escape-string-regexp: 4.0.0
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
ignore: 7.0.5
- '@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.7.0))':
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.4.1(jiti@2.7.0))':
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
- '@eslint/compat@1.4.1(eslint@10.4.0(jiti@2.7.0))':
+ '@eslint/compat@1.4.1(eslint@10.4.1(jiti@2.7.0))':
dependencies:
'@eslint/core': 0.17.0
optionalDependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
'@eslint/config-array@0.23.5':
dependencies:
@@ -5525,7 +5477,7 @@ snapshots:
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
- js-yaml: 4.1.1
+ js-yaml: 4.2.0
minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
@@ -5780,7 +5732,7 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@oxc-project/types@0.132.0': {}
+ '@oxc-project/types@0.133.0': {}
'@package-json/types@0.0.12': {}
@@ -5792,7 +5744,7 @@ snapshots:
'@popperjs/core@2.11.8': {}
- '@primer/octicons@19.27.0':
+ '@primer/octicons@19.28.0':
dependencies:
object-assign: 4.1.1
@@ -5838,53 +5790,53 @@ snapshots:
'@resvg/resvg-wasm@2.6.2': {}
- '@rolldown/binding-android-arm64@1.0.2':
+ '@rolldown/binding-android-arm64@1.0.3':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.2':
+ '@rolldown/binding-darwin-arm64@1.0.3':
optional: true
- '@rolldown/binding-darwin-x64@1.0.2':
+ '@rolldown/binding-darwin-x64@1.0.3':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.2':
+ '@rolldown/binding-freebsd-x64@1.0.3':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.2':
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.2':
+ '@rolldown/binding-linux-arm64-gnu@1.0.3':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.2':
+ '@rolldown/binding-linux-arm64-musl@1.0.3':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.0.2':
+ '@rolldown/binding-linux-ppc64-gnu@1.0.3':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.0.2':
+ '@rolldown/binding-linux-s390x-gnu@1.0.3':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.2':
+ '@rolldown/binding-linux-x64-gnu@1.0.3':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.2':
+ '@rolldown/binding-linux-x64-musl@1.0.3':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.2':
+ '@rolldown/binding-openharmony-arm64@1.0.3':
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.2':
+ '@rolldown/binding-wasm32-wasi@1.0.3':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.2':
+ '@rolldown/binding-win32-arm64-msvc@1.0.3':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.2':
+ '@rolldown/binding-win32-x64-msvc@1.0.3':
optional: true
'@rolldown/pluginutils@1.0.1': {}
@@ -5925,11 +5877,11 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0))':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0))':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
'@typescript-eslint/types': 8.60.1
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -6166,15 +6118,15 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/type-utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.60.0
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.60.1
+ '@typescript-eslint/type-utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.60.1
+ eslint: 10.4.1(jiti@2.7.0)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@5.9.3)
@@ -6182,15 +6134,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/type-utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.60.0
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/scope-manager': 8.60.1
+ '@typescript-eslint/type-utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.60.1
+ eslint: 10.4.1(jiti@2.7.0)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@6.0.3)
@@ -6198,77 +6150,26 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
'@typescript-eslint/scope-manager': 8.60.1
- '@typescript-eslint/type-utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.60.1
+ '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.60.1
- eslint: 10.4.0(jiti@2.7.0)
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.5.0(typescript@5.9.3)
+ debug: 4.4.3
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
'@typescript-eslint/scope-manager': 8.60.1
- '@typescript-eslint/type-utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/types': 8.60.1
+ '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.60.1
- eslint: 10.4.0(jiti@2.7.0)
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
- optional: true
-
- '@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.60.0
- debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.60.0
- debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.60.0(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.60.0
- debug: 4.4.3
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.60.0(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/types': 8.60.0
debug: 4.4.3
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -6291,24 +6192,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.60.0':
- dependencies:
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/visitor-keys': 8.60.0
-
'@typescript-eslint/scope-manager@8.60.1':
dependencies:
'@typescript-eslint/types': 8.60.1
'@typescript-eslint/visitor-keys': 8.60.1
- '@typescript-eslint/tsconfig-utils@8.60.0(typescript@5.9.3)':
- dependencies:
- typescript: 5.9.3
-
- '@typescript-eslint/tsconfig-utils@8.60.0(typescript@6.0.3)':
- dependencies:
- typescript: 6.0.3
-
'@typescript-eslint/tsconfig-utils@8.60.1(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
@@ -6317,89 +6205,32 @@ snapshots:
dependencies:
typescript: 6.0.3
- '@typescript-eslint/type-utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
- ts-api-utils: 2.5.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.60.1
'@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3)
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@typescript-eslint/type-utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
'@typescript-eslint/types': 8.60.1
'@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3)
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- optional: true
-
- '@typescript-eslint/types@8.60.0': {}
'@typescript-eslint/types@8.60.1': {}
- '@typescript-eslint/typescript-estree@8.60.0(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/visitor-keys': 8.60.0
- debug: 4.4.3
- minimatch: 10.2.5
- semver: 7.8.1
- tinyglobby: 0.2.17
- ts-api-utils: 2.5.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@8.60.0(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/visitor-keys': 8.60.0
- debug: 4.4.3
- minimatch: 10.2.5
- semver: 7.8.1
- tinyglobby: 0.2.17
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/typescript-estree@8.60.1(typescript@5.9.3)':
dependencies:
'@typescript-eslint/project-service': 8.60.1(typescript@5.9.3)
@@ -6430,55 +6261,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
- eslint: 10.4.0(jiti@2.7.0)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
- '@typescript-eslint/scope-manager': 8.60.0
- '@typescript-eslint/types': 8.60.0
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3)
- eslint: 10.4.0(jiti@2.7.0)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
'@typescript-eslint/scope-manager': 8.60.1
'@typescript-eslint/types': 8.60.1
'@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3)
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
'@typescript-eslint/scope-manager': 8.60.1
'@typescript-eslint/types': 8.60.1
'@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3)
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.60.0':
- dependencies:
- '@typescript-eslint/types': 8.60.0
- eslint-visitor-keys: 5.0.1
-
'@typescript-eslint/visitor-keys@8.60.1':
dependencies:
'@typescript-eslint/types': 8.60.1
@@ -6559,62 +6363,62 @@ snapshots:
d3-selection: 3.0.0
d3-transition: 3.0.1(d3-selection@3.0.0)
- '@vitejs/plugin-vue@6.0.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))(vue@3.5.35(typescript@6.0.3))':
+ '@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
+ vite: 8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
vue: 3.5.35(typescript@6.0.3)
- '@vitest/eslint-plugin@1.6.18(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.7(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)))':
+ '@vitest/eslint-plugin@1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)))':
dependencies:
'@typescript-eslint/scope-manager': 8.60.1
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ eslint: 10.4.1(jiti@2.7.0)
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
typescript: 6.0.3
- vitest: 4.1.7(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
+ vitest: 4.1.8(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
transitivePeerDependencies:
- supports-color
- '@vitest/expect@4.1.7':
+ '@vitest/expect@4.1.8':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.7
- '@vitest/utils': 4.1.7
+ '@vitest/spy': 4.1.8
+ '@vitest/utils': 4.1.8
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))':
+ '@vitest/mocker@4.1.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))':
dependencies:
- '@vitest/spy': 4.1.7
+ '@vitest/spy': 4.1.8
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
+ vite: 8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
- '@vitest/pretty-format@4.1.7':
+ '@vitest/pretty-format@4.1.8':
dependencies:
tinyrainbow: 3.1.0
- '@vitest/runner@4.1.7':
+ '@vitest/runner@4.1.8':
dependencies:
- '@vitest/utils': 4.1.7
+ '@vitest/utils': 4.1.8
pathe: 2.0.3
- '@vitest/snapshot@4.1.7':
+ '@vitest/snapshot@4.1.8':
dependencies:
- '@vitest/pretty-format': 4.1.7
- '@vitest/utils': 4.1.7
+ '@vitest/pretty-format': 4.1.8
+ '@vitest/utils': 4.1.8
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.7': {}
+ '@vitest/spy@4.1.8': {}
- '@vitest/utils@4.1.7':
+ '@vitest/utils@4.1.8':
dependencies:
- '@vitest/pretty-format': 4.1.7
+ '@vitest/pretty-format': 4.1.8
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
@@ -6660,7 +6464,7 @@ snapshots:
'@vue/compiler-dom': 3.5.35
'@vue/shared': 3.5.35
- '@vue/language-core@3.3.2':
+ '@vue/language-core@3.3.3':
dependencies:
'@volar/language-core': 2.4.28
'@vue/compiler-dom': 3.5.35
@@ -7080,7 +6884,7 @@ snapshots:
dependencies:
env-paths: 2.2.1
import-fresh: 3.3.1
- js-yaml: 4.1.1
+ js-yaml: 4.2.0
parse-json: 5.2.0
optionalDependencies:
typescript: 6.0.3
@@ -7613,9 +7417,9 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.7.0)):
+ eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-import-context@0.1.9(unrs-resolver@1.12.2):
dependencies:
@@ -7632,10 +7436,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.0(jiti@2.7.0)):
+ eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-import-context: 0.1.9(unrs-resolver@1.12.2)
get-tsconfig: 4.14.0
is-bun-module: 2.0.0
@@ -7643,92 +7447,104 @@ snapshots:
tinyglobby: 0.2.17
unrs-resolver: 1.12.2
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0)):
+ eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-import-resolver-node: 0.3.10
- eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.0(jiti@2.7.0))
+ eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0))
transitivePeerDependencies:
- supports-color
- eslint-plugin-array-func@5.1.1(eslint@10.4.0(jiti@2.7.0)):
+ eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ eslint: 10.4.1(jiti@2.7.0)
+ eslint-import-resolver-node: 0.3.10
+ eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0))
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
- eslint-plugin-de-morgan@2.1.2(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-array-func@5.1.1(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
- eslint-plugin-escompat@3.11.4(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-de-morgan@2.1.2(eslint@10.4.1(jiti@2.7.0)):
+ dependencies:
+ eslint: 10.4.1(jiti@2.7.0)
+
+ eslint-plugin-escompat@3.11.4(eslint@10.4.1(jiti@2.7.0)):
dependencies:
browserslist: 4.28.2
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
- eslint-plugin-eslint-comments@3.2.0(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-eslint-comments@3.2.0(eslint@10.4.1(jiti@2.7.0)):
dependencies:
escape-string-regexp: 1.0.5
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
ignore: 5.3.2
- eslint-plugin-filenames@1.3.2(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-filenames@1.3.2(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
lodash.camelcase: 4.3.0
lodash.kebabcase: 4.1.1
lodash.snakecase: 4.1.1
lodash.upperfirst: 4.3.1
- eslint-plugin-github@6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-github@6.0.0(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- '@eslint/compat': 1.4.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint/compat': 1.4.1(eslint@10.4.1(jiti@2.7.0))
'@eslint/eslintrc': 3.3.5
'@eslint/js': 9.39.4
'@github/browserslist-config': 1.0.0
- '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
aria-query: 5.3.2
- eslint: 10.4.0(jiti@2.7.0)
- eslint-config-prettier: 10.1.8(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-escompat: 3.11.4(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-eslint-comments: 3.2.0(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-filenames: 1.3.2(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-i18n-text: 1.0.1(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0))
- eslint-plugin-jsx-a11y: 6.10.2(eslint@10.4.0(jiti@2.7.0))
+ eslint: 10.4.1(jiti@2.7.0)
+ eslint-config-prettier: 10.1.8(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-escompat: 3.11.4(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-eslint-comments: 3.2.0(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-filenames: 1.3.2(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-i18n-text: 1.0.1(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0))
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@10.4.1(jiti@2.7.0))
eslint-plugin-no-only-tests: 3.4.0
- eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.7.0)))(eslint@10.4.0(jiti@2.7.0))(prettier@3.8.3)
+ eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)))(eslint@10.4.1(jiti@2.7.0))(prettier@3.8.3)
eslint-rule-documentation: 1.0.23
globals: 16.5.0
jsx-ast-utils: 3.3.5
prettier: 3.8.3
svg-element-attributes: 1.3.1
typescript: 5.9.3
- typescript-eslint: 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
+ typescript-eslint: 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
transitivePeerDependencies:
- '@types/eslint'
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-i18n-text@1.0.1(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-i18n-text@1.0.1(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
- eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
'@package-json/types': 0.0.12
'@typescript-eslint/types': 8.60.1
comment-parser: 1.4.7
debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-import-context: 0.1.9(unrs-resolver@1.12.2)
is-glob: 4.0.3
minimatch: 10.2.5
@@ -7736,12 +7552,12 @@ snapshots:
stable-hash-x: 0.2.0
unrs-resolver: 1.12.2
optionalDependencies:
- '@typescript-eslint/utils': 8.60.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
eslint-import-resolver-node: 0.3.10
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7750,9 +7566,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-import-resolver-node: 0.3.10
- eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.4)(eslint@10.4.0(jiti@2.7.0))
+ eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0))
hasown: 2.0.4
is-core-module: 2.16.2
is-glob: 4.0.3
@@ -7764,13 +7580,43 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jsx-a11y@6.10.2(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)):
+ dependencies:
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 10.4.1(jiti@2.7.0)
+ eslint-import-resolver-node: 0.3.10
+ eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0))
+ hasown: 2.0.4
+ is-core-module: 2.16.2
+ is-glob: 4.0.3
+ minimatch: 3.1.5
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.2(eslint@10.4.1(jiti@2.7.0)):
dependencies:
aria-query: 5.3.2
array-includes: 3.1.9
@@ -7780,7 +7626,7 @@ snapshots:
axobject-query: 4.1.0
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
hasown: 2.0.4
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -7791,37 +7637,37 @@ snapshots:
eslint-plugin-no-only-tests@3.4.0: {}
- eslint-plugin-playwright@2.10.4(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-playwright@2.10.4(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
globals: 17.6.0
- eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.7.0)))(eslint@10.4.0(jiti@2.7.0))(prettier@3.8.3):
+ eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)))(eslint@10.4.1(jiti@2.7.0))(prettier@3.8.3):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
prettier: 3.8.3
prettier-linter-helpers: 1.0.1
synckit: 0.11.13
optionalDependencies:
- eslint-config-prettier: 10.1.8(eslint@10.4.0(jiti@2.7.0))
+ eslint-config-prettier: 10.1.8(eslint@10.4.1(jiti@2.7.0))
- eslint-plugin-regexp@3.1.0(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-regexp@3.1.0(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.7
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
jsdoc-type-pratt-parser: 7.2.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-sonarjs@4.0.3(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-sonarjs@4.0.3(eslint@10.4.1(jiti@2.7.0)):
dependencies:
'@eslint-community/regexpp': 4.12.2
builtin-modules: 3.3.0
bytes: 3.1.2
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
functional-red-black-tree: 1.0.1
globals: 17.6.0
jsx-ast-utils-x: 0.1.0
@@ -7832,15 +7678,15 @@ snapshots:
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
- eslint-plugin-unicorn@64.0.0(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-unicorn@64.0.0(eslint@10.4.1(jiti@2.7.0)):
dependencies:
'@babel/helper-validator-identifier': 7.29.7
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
change-case: 5.4.4
ci-info: 4.4.0
clean-regexp: 1.0.0
core-js-compat: 3.49.0
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
find-up-simple: 1.0.1
globals: 17.6.0
indent-string: 5.0.0
@@ -7852,33 +7698,33 @@ snapshots:
semver: 7.8.1
strip-indent: 4.1.1
- eslint-plugin-vue-scoped-css@3.1.0(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0))):
+ eslint-plugin-vue-scoped-css@3.1.1(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
es-toolkit: 1.47.0
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
postcss: 8.5.15
postcss-safe-parser: 7.0.1(postcss@8.5.15)
postcss-selector-parser: 7.1.1
- vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0))
+ vue-eslint-parser: 10.4.0(eslint@10.4.1(jiti@2.7.0))
- eslint-plugin-vue@10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0)))(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0))):
+ eslint-plugin-vue@10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0)))(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
- eslint: 10.4.0(jiti@2.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
+ eslint: 10.4.1(jiti@2.7.0)
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 7.1.1
semver: 7.8.1
- vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0))
+ vue-eslint-parser: 10.4.0(eslint@10.4.1(jiti@2.7.0))
xml-name-validator: 4.0.0
optionalDependencies:
- '@stylistic/eslint-plugin': 5.10.0(eslint@10.4.0(jiti@2.7.0))
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
+ '@stylistic/eslint-plugin': 5.10.0(eslint@10.4.1(jiti@2.7.0))
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
- eslint-plugin-wc@3.1.0(eslint@10.4.0(jiti@2.7.0)):
+ eslint-plugin-wc@3.1.0(eslint@10.4.1(jiti@2.7.0)):
dependencies:
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
is-valid-element-name: 1.0.0
js-levenshtein-esm: 2.0.0
@@ -7897,9 +7743,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.4.0(jiti@2.7.0):
+ eslint@10.4.1(jiti@2.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0))
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.6.0
@@ -8571,6 +8417,10 @@ snapshots:
dependencies:
argparse: 2.0.1
+ js-yaml@4.2.0:
+ dependencies:
+ argparse: 2.0.1
+
jsbn@0.1.1: {}
jsdoc-type-pratt-parser@7.2.0: {}
@@ -9490,30 +9340,30 @@ snapshots:
robust-predicates@3.0.3: {}
- rolldown-license-plugin@3.0.8(rolldown@1.0.2):
+ rolldown-license-plugin@3.0.9(rolldown@1.0.3):
dependencies:
- rolldown: 1.0.2
+ rolldown: 1.0.3
- rolldown@1.0.2:
+ rolldown@1.0.3:
dependencies:
- '@oxc-project/types': 0.132.0
+ '@oxc-project/types': 0.133.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.2
- '@rolldown/binding-darwin-arm64': 1.0.2
- '@rolldown/binding-darwin-x64': 1.0.2
- '@rolldown/binding-freebsd-x64': 1.0.2
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.2
- '@rolldown/binding-linux-arm64-gnu': 1.0.2
- '@rolldown/binding-linux-arm64-musl': 1.0.2
- '@rolldown/binding-linux-ppc64-gnu': 1.0.2
- '@rolldown/binding-linux-s390x-gnu': 1.0.2
- '@rolldown/binding-linux-x64-gnu': 1.0.2
- '@rolldown/binding-linux-x64-musl': 1.0.2
- '@rolldown/binding-openharmony-arm64': 1.0.2
- '@rolldown/binding-wasm32-wasi': 1.0.2
- '@rolldown/binding-win32-arm64-msvc': 1.0.2
- '@rolldown/binding-win32-x64-msvc': 1.0.2
+ '@rolldown/binding-android-arm64': 1.0.3
+ '@rolldown/binding-darwin-arm64': 1.0.3
+ '@rolldown/binding-darwin-x64': 1.0.3
+ '@rolldown/binding-freebsd-x64': 1.0.3
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.3
+ '@rolldown/binding-linux-arm64-gnu': 1.0.3
+ '@rolldown/binding-linux-arm64-musl': 1.0.3
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.3
+ '@rolldown/binding-linux-s390x-gnu': 1.0.3
+ '@rolldown/binding-linux-x64-gnu': 1.0.3
+ '@rolldown/binding-linux-x64-musl': 1.0.3
+ '@rolldown/binding-openharmony-arm64': 1.0.3
+ '@rolldown/binding-wasm32-wasi': 1.0.3
+ '@rolldown/binding-win32-arm64-msvc': 1.0.3
+ '@rolldown/binding-win32-x64-msvc': 1.0.3
roughjs@4.6.6:
dependencies:
@@ -10060,24 +9910,24 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- typescript-eslint@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3):
+ typescript-eslint@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- typescript-eslint@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3):
+ typescript-eslint@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3)
- '@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
- eslint: 10.4.0(jiti@2.7.0)
+ '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.60.1(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
+ eslint: 10.4.1(jiti@2.7.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -10140,7 +9990,7 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
- updates@17.17.2: {}
+ updates@17.17.3: {}
uri-js@4.4.1:
dependencies:
@@ -10169,16 +10019,16 @@ snapshots:
core-util-is: 1.0.2
extsprintf: 1.3.0
- vite-string-plugin@2.0.4(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)):
+ vite-string-plugin@2.0.4(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)):
dependencies:
- vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
+ vite: 8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
- vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0):
+ vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
postcss: 8.5.15
- rolldown: 1.0.2
+ rolldown: 1.0.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 25.9.1
@@ -10186,15 +10036,15 @@ snapshots:
fsevents: 2.3.3
jiti: 2.7.0
- vitest@4.1.7(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)):
+ vitest@4.1.8(@types/node@25.9.1)(happy-dom@20.9.0)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)):
dependencies:
- '@vitest/expect': 4.1.7
- '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
- '@vitest/pretty-format': 4.1.7
- '@vitest/runner': 4.1.7
- '@vitest/snapshot': 4.1.7
- '@vitest/spy': 4.1.7
- '@vitest/utils': 4.1.7
+ '@vitest/expect': 4.1.8
+ '@vitest/mocker': 4.1.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0))
+ '@vitest/pretty-format': 4.1.8
+ '@vitest/runner': 4.1.8
+ '@vitest/snapshot': 4.1.8
+ '@vitest/spy': 4.1.8
+ '@vitest/utils': 4.1.8
es-module-lexer: 2.1.0
expect-type: 1.3.0
magic-string: 0.30.21
@@ -10206,7 +10056,7 @@ snapshots:
tinyexec: 1.2.4
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
+ vite: 8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.9.1
@@ -10228,10 +10078,10 @@ snapshots:
chart.js: 4.5.1
vue: 3.5.35(typescript@6.0.3)
- vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)):
+ vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0)):
dependencies:
debug: 4.4.3
- eslint: 10.4.0(jiti@2.7.0)
+ eslint: 10.4.1(jiti@2.7.0)
eslint-scope: 9.1.2
eslint-visitor-keys: 5.0.1
espree: 11.2.0
@@ -10240,10 +10090,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-tsc@3.3.2(typescript@6.0.3):
+ vue-tsc@3.3.3(typescript@6.0.3):
dependencies:
'@volar/typescript': 2.4.28
- '@vue/language-core': 3.3.2
+ '@vue/language-core': 3.3.3
typescript: 6.0.3
vue@3.5.35(typescript@6.0.3):
diff --git a/public/assets/img/svg/octicon-vscode.svg b/public/assets/img/svg/octicon-vscode.svg
index 04ac8cacd5..81e0f7cbb0 100644
--- a/public/assets/img/svg/octicon-vscode.svg
+++ b/public/assets/img/svg/octicon-vscode.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index 4248faea5d..618181eb1c 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -151,7 +151,7 @@ func repoAssignment() func(ctx *context.APIContext) {
if redirectUserID, err := user_model.LookupUserRedirect(ctx, userName); err == nil {
context.RedirectToUser(ctx.Base, ctx.Doer, userName, redirectUserID)
} else if user_model.IsErrUserRedirectNotExist(err) {
- ctx.APIErrorNotFound("GetUserByName", err)
+ ctx.APIErrorNotFound()
} else {
ctx.APIErrorInternal(err)
}
@@ -626,7 +626,7 @@ func orgAssignment(args ...bool) func(ctx *context.APIContext) {
if err == nil {
context.RedirectToUser(ctx.Base, ctx.Doer, ctx.PathParam("org"), redirectUserID)
} else if user_model.IsErrUserRedirectNotExist(err) {
- ctx.APIErrorNotFound("GetOrgByName", err)
+ ctx.APIErrorNotFound()
} else {
ctx.APIErrorInternal(err)
}
@@ -862,12 +862,12 @@ func individualPermsChecker(ctx *context.APIContext) {
switch ctx.ContextUser.Visibility {
case api.VisibleTypePrivate:
if ctx.Doer == nil || (ctx.ContextUser.ID != ctx.Doer.ID && !ctx.Doer.IsAdmin) {
- ctx.APIErrorNotFound("Visit Project", nil)
+ ctx.APIErrorNotFound()
return
}
case api.VisibleTypeLimited:
if ctx.Doer == nil {
- ctx.APIErrorNotFound("Visit Project", nil)
+ ctx.APIErrorNotFound()
return
}
}
diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go
index 16d3e230a0..8f4d19719f 100644
--- a/routers/api/v1/org/org.go
+++ b/routers/api/v1/org/org.go
@@ -146,7 +146,7 @@ func GetUserOrgsPermissions(ctx *context.APIContext) {
op := api.OrganizationPermissions{}
if !organization.HasOrgOrUserVisible(ctx, o, ctx.Doer) {
- ctx.APIErrorNotFound("HasOrgOrUserVisible", nil)
+ ctx.APIErrorNotFound()
return
}
@@ -312,7 +312,7 @@ func Get(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
if !organization.HasOrgOrUserVisible(ctx, ctx.Org.Organization.AsUser(), ctx.Doer) {
- ctx.APIErrorNotFound("HasOrgOrUserVisible", nil)
+ ctx.APIErrorNotFound()
return
}
diff --git a/routers/api/v1/repo/action.go b/routers/api/v1/repo/action.go
index 5fc2e97d7a..6007747412 100644
--- a/routers/api/v1/repo/action.go
+++ b/routers/api/v1/repo/action.go
@@ -1164,11 +1164,8 @@ func ActionsEnableWorkflow(ctx *context.APIContext) {
func getCurrentRepoActionRunByID(ctx *context.APIContext) *actions_model.ActionRun {
runID := ctx.PathParamInt64("run")
run, err := actions_model.GetRunByRepoAndID(ctx, ctx.Repo.Repository.ID, runID)
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- return nil
- } else if err != nil {
- ctx.APIErrorInternal(err)
+ if err != nil {
+ ctx.APIErrorAuto(err)
return nil
}
run.Repo = ctx.Repo.Repository
@@ -1198,11 +1195,8 @@ func getCurrentRepoActionRunAttemptByNumber(ctx *context.APIContext) (*actions_m
attemptNum := ctx.PathParamInt64("attempt")
attempt, err := actions_model.GetRunAttemptByRunIDAndAttemptNum(ctx, run.ID, attemptNum)
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- return nil, nil
- } else if err != nil {
- ctx.APIErrorInternal(err)
+ if err != nil {
+ ctx.APIErrorAuto(err)
return nil, nil
}
return run, attempt
@@ -1454,7 +1448,7 @@ func RerunWorkflowJob(ctx *context.APIContext) {
jobID := ctx.PathParamInt64("job_id")
jobIdx := slices.IndexFunc(jobs, func(job *actions_model.ActionRunJob) bool { return job.ID == jobID })
if jobIdx == -1 {
- ctx.APIErrorNotFound(util.NewNotExistErrorf("workflow job with id %d", jobID))
+ ctx.APIErrorNotFound("workflow job not found")
return
}
@@ -1566,11 +1560,7 @@ func ListWorkflowRunJobs(ctx *context.APIContext) {
run, err := actions_model.GetRunByRepoAndID(ctx, repoID, runID)
if err != nil {
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
// runID is used as an additional filter next to repoID to ensure that we only list jobs for the specified repoID and runID.
@@ -1674,7 +1664,7 @@ func GetWorkflowJob(ctx *context.APIContext) {
}
if !has || job.RepoID != ctx.Repo.Repository.ID {
- ctx.APIErrorNotFound(util.ErrNotExist)
+ ctx.APIErrorNotFound()
return
}
diff --git a/routers/api/v1/repo/actions_run.go b/routers/api/v1/repo/actions_run.go
index d1d98ff21a..1765ed564d 100644
--- a/routers/api/v1/repo/actions_run.go
+++ b/routers/api/v1/repo/actions_run.go
@@ -4,10 +4,7 @@
package repo
import (
- "errors"
-
actions_model "gitea.dev/models/actions"
- "gitea.dev/modules/util"
"gitea.dev/routers/common"
"gitea.dev/services/context"
)
@@ -45,11 +42,7 @@ func DownloadActionsRunJobLogs(ctx *context.APIContext) {
jobID := ctx.PathParamInt64("job_id")
curJob, err := actions_model.GetRunJobByRepoAndID(ctx, ctx.Repo.Repository.ID, jobID)
if err != nil {
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
if err = curJob.LoadRepo(ctx); err != nil {
@@ -59,10 +52,6 @@ func DownloadActionsRunJobLogs(ctx *context.APIContext) {
err = common.DownloadActionsRunJobLogs(ctx.Base, ctx.Repo.Repository, curJob)
if err != nil {
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
}
}
diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go
index 3b6575d676..0806858b4d 100644
--- a/routers/api/v1/repo/branch.go
+++ b/routers/api/v1/repo/branch.go
@@ -64,7 +64,7 @@ func GetBranch(ctx *context.APIContext) {
ctx.APIErrorInternal(err)
return
} else if !exist {
- ctx.APIErrorNotFound(err)
+ ctx.APIErrorNotFound()
return
}
@@ -153,7 +153,7 @@ func DeleteBranch(ctx *context.APIContext) {
if err := repo_service.DeleteBranch(ctx, ctx.Doer, ctx.Repo.Repository, ctx.Repo.GitRepo, branchName); err != nil {
switch {
case git.IsErrBranchNotExist(err):
- ctx.APIErrorNotFound(err)
+ ctx.APIErrorNotFound()
case errors.Is(err, repo_service.ErrBranchIsDefault):
ctx.APIError(http.StatusForbidden, "can not delete default or pull request target branch")
case errors.Is(err, git_model.ErrBranchIsProtected):
@@ -446,7 +446,7 @@ func UpdateBranch(ctx *context.APIContext) {
if err := repo_service.UpdateBranch(ctx, repo, ctx.Repo.GitRepo, ctx.Doer, branchName, opt.NewCommitID, opt.OldCommitID, opt.Force); err != nil {
switch {
case git_model.IsErrBranchNotExist(err):
- ctx.APIErrorNotFound(err)
+ ctx.APIErrorNotFound()
case errors.Is(err, util.ErrInvalidArgument):
ctx.APIError(http.StatusUnprocessableEntity, err.Error())
case git.IsErrPushRejected(err):
diff --git a/routers/api/v1/repo/commits.go b/routers/api/v1/repo/commits.go
index d83686083e..6f8aaefb6d 100644
--- a/routers/api/v1/repo/commits.go
+++ b/routers/api/v1/repo/commits.go
@@ -258,7 +258,7 @@ func GetAllCommits(ctx *context.APIContext) {
ctx.APIErrorInternal(err)
return
} else if commitsCountTotal == 0 {
- ctx.APIErrorNotFound("FileCommitsCount", nil)
+ ctx.APIErrorNotFound()
return
}
diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go
index 244d9393ce..5f10c4fbd7 100644
--- a/routers/api/v1/repo/file.go
+++ b/routers/api/v1/repo/file.go
@@ -213,7 +213,7 @@ func getBlobForEntry(ctx *context.APIContext) (blob *git.Blob, entry *git.TreeEn
}
if entry.IsDir() || entry.IsSubModule() {
- ctx.APIErrorNotFound("getBlobForEntry", nil)
+ ctx.APIErrorNotFound()
return nil, nil, nil
}
@@ -301,18 +301,14 @@ func GetEditorconfig(ctx *context.APIContext) {
ec, _, err := ctx.Repo.GetEditorconfig(ctx.Repo.Commit)
if err != nil {
- if git.IsErrNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
fileName := ctx.PathParam("filename")
def, err := ec.GetDefinitionForFilename(fileName)
- if def == nil {
- ctx.APIErrorNotFound(err)
+ if err != nil {
+ ctx.APIErrorNotFound(err.Error())
return
}
ctx.JSON(http.StatusOK, def)
@@ -699,10 +695,8 @@ func DeleteFile(ctx *context.APIContext) {
func resolveRefCommit(ctx *context.APIContext, ref string, minCommitIDLen ...int) *utils.RefCommit {
ref = util.IfZero(ref, ctx.Repo.Repository.DefaultBranch)
refCommit, err := utils.ResolveRefCommit(ctx, ctx.Repo.Repository, ref, minCommitIDLen...)
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound(err)
- } else if err != nil {
- ctx.APIErrorInternal(err)
+ if err != nil {
+ ctx.APIErrorAuto(err)
}
return refCommit
}
@@ -828,11 +822,8 @@ func getRepoContents(ctx *context.APIContext, opts files_service.GetContentsOrLi
}
ret, err := files_service.GetContentsOrList(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, refCommit, opts)
if err != nil {
- if git.IsErrNotExist(err) {
- ctx.APIErrorNotFound("GetContentsOrList", err)
- return nil
- }
- ctx.APIErrorInternal(err)
+ ctx.APIErrorAuto(err)
+ return nil
}
return &ret
}
diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go
index a075c68f74..9946afc8b7 100644
--- a/routers/api/v1/repo/issue.go
+++ b/routers/api/v1/repo/issue.go
@@ -540,16 +540,10 @@ func getUserIDForFilter(ctx *context.APIContext, queryName string) int64 {
}
user, err := user_model.GetUserByName(ctx, userName)
- if user_model.IsErrUserNotExist(err) {
- ctx.APIErrorNotFound(err)
- return 0
- }
-
if err != nil {
- ctx.APIErrorInternal(err)
+ ctx.APIErrorAuto(err)
return 0
}
-
return user.ID
}
@@ -969,11 +963,7 @@ func DeleteIssue(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go
index 02a0f702ce..6cece7e5ce 100644
--- a/routers/api/v1/repo/issue_comment.go
+++ b/routers/api/v1/repo/issue_comment.go
@@ -447,11 +447,7 @@ func GetIssueComment(ctx *context.APIContext) {
comment, err := issues_model.GetCommentWithRepoID(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -572,11 +568,7 @@ func EditIssueCommentDeprecated(ctx *context.APIContext) {
func editIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) {
comment, err := issues_model.GetCommentWithRepoID(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -681,11 +673,7 @@ func DeleteIssueCommentDeprecated(ctx *context.APIContext) {
func deleteIssueComment(ctx *context.APIContext) {
comment, err := issues_model.GetCommentWithRepoID(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/issue_dependency.go b/routers/api/v1/repo/issue_dependency.go
index 4912737c91..ff4e7cd5b4 100644
--- a/routers/api/v1/repo/issue_dependency.go
+++ b/routers/api/v1/repo/issue_dependency.go
@@ -63,11 +63,7 @@ func GetIssueDependencies(ctx *context.APIContext) {
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound("IsErrIssueNotExist", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -487,11 +483,7 @@ func RemoveIssueBlocking(ctx *context.APIContext) {
func getParamsIssue(ctx *context.APIContext) *issues_model.Issue {
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound("IsErrIssueNotExist", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil
}
issue.Repo = ctx.Repo.Repository
@@ -508,11 +500,7 @@ func getFormIssue(ctx *context.APIContext, form *api.IssueMeta) *issues_model.Is
var err error
repo, err = repo_model.GetRepositoryByOwnerAndName(ctx, form.Owner, form.Name)
if err != nil {
- if repo_model.IsErrRepoNotExist(err) {
- ctx.APIErrorNotFound("IsErrRepoNotExist", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil
}
} else {
@@ -521,11 +509,7 @@ func getFormIssue(ctx *context.APIContext, form *api.IssueMeta) *issues_model.Is
issue, err := issues_model.GetIssueByIndex(ctx, repo.ID, form.Index)
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound("IsErrIssueNotExist", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil
}
issue.Repo = repo
diff --git a/routers/api/v1/repo/issue_lock.go b/routers/api/v1/repo/issue_lock.go
index 75247593fd..2a4f75a937 100644
--- a/routers/api/v1/repo/issue_lock.go
+++ b/routers/api/v1/repo/issue_lock.go
@@ -53,11 +53,7 @@ func LockIssue(ctx *context.APIContext) {
reason := web.GetForm(ctx).(*api.LockIssueOption).Reason
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -120,11 +116,7 @@ func UnlockIssue(ctx *context.APIContext) {
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/issue_reaction.go b/routers/api/v1/repo/issue_reaction.go
index c9fa39e93d..6ad44ead61 100644
--- a/routers/api/v1/repo/issue_reaction.go
+++ b/routers/api/v1/repo/issue_reaction.go
@@ -53,11 +53,7 @@ func GetIssueCommentReactions(ctx *context.APIContext) {
comment, err := issues_model.GetCommentByID(ctx, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -190,11 +186,7 @@ func DeleteIssueCommentReaction(ctx *context.APIContext) {
func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOption, isCreateType bool) {
comment, err := issues_model.GetCommentByID(ctx, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/issue_tracked_time.go b/routers/api/v1/repo/issue_tracked_time.go
index 1af649bfd7..33af841fbd 100644
--- a/routers/api/v1/repo/issue_tracked_time.go
+++ b/routers/api/v1/repo/issue_tracked_time.go
@@ -71,16 +71,12 @@ func ListTrackedTimes(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
if !ctx.Repo.Repository.IsTimetrackerEnabled(ctx) {
- ctx.APIErrorNotFound("Timetracker is disabled")
+ ctx.APIErrorNotFound("timetracker is disabled")
return
}
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -182,11 +178,7 @@ func AddTime(ctx *context.APIContext) {
form := web.GetForm(ctx).(*api.AddTimeOption)
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -265,11 +257,7 @@ func ResetIssueTime(ctx *context.APIContext) {
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -338,11 +326,7 @@ func DeleteTime(ctx *context.APIContext) {
issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrIssueNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -357,11 +341,7 @@ func DeleteTime(ctx *context.APIContext) {
time, err := issues_model.GetTrackedTimeByID(ctx, issue.ID, ctx.PathParamInt64("id"))
if err != nil {
- if db.IsErrNotExist(err) {
- ctx.APIErrorNotFound(err)
- return
- }
- ctx.APIErrorInternal(err)
+ ctx.APIErrorAuto(err)
return
}
if time.Deleted {
@@ -423,11 +403,7 @@ func ListTrackedTimesByUser(ctx *context.APIContext) {
}
user, err := user_model.GetUserByName(ctx, ctx.PathParam("timetrackingusername"))
if err != nil {
- if user_model.IsErrUserNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
if user == nil {
diff --git a/routers/api/v1/repo/notes.go b/routers/api/v1/repo/notes.go
index d8fea56c4c..d2bd708aa4 100644
--- a/routers/api/v1/repo/notes.go
+++ b/routers/api/v1/repo/notes.go
@@ -68,11 +68,7 @@ func getNote(ctx *context.APIContext, identifier string) {
commitID, err := ctx.Repo.GitRepo.ConvertToGitID(identifier)
if err != nil {
- if git.IsErrNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go
index 54e7b78a1b..dcfaa3d3ac 100644
--- a/routers/api/v1/repo/pull.go
+++ b/routers/api/v1/repo/pull.go
@@ -927,11 +927,7 @@ func MergePullRequest(ctx *context.APIContext) {
pr, err := issues_model.GetPullRequestByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrPullRequestNotExist(err) {
- ctx.APIErrorNotFound("GetPullRequestByIndex", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/pull_review.go b/routers/api/v1/repo/pull_review.go
index 54919cef90..9778dc416a 100644
--- a/routers/api/v1/repo/pull_review.go
+++ b/routers/api/v1/repo/pull_review.go
@@ -63,11 +63,7 @@ func ListPullReviews(ctx *context.APIContext) {
pr, err := issues_model.GetPullRequestByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrPullRequestNotExist(err) {
- ctx.APIErrorNotFound("GetPullRequestByIndex", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -389,11 +385,7 @@ func updatePullReviewCommentResolve(ctx *context.APIContext, isResolve bool) {
func getPullReviewCommentToResolve(ctx *context.APIContext) *issues_model.Comment {
comment, err := issues_model.GetCommentWithRepoID(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrCommentNotExist(err) {
- ctx.APIErrorNotFound("GetCommentByID", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil
}
@@ -510,11 +502,7 @@ func CreatePullReview(ctx *context.APIContext) {
opts := web.GetForm(ctx).(*api.CreatePullReviewOptions)
pr, err := issues_model.GetPullRequestByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrPullRequestNotExist(err) {
- ctx.APIErrorNotFound("GetPullRequestByIndex", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
@@ -737,33 +725,25 @@ func preparePullReviewType(ctx *context.APIContext, pr *issues_model.PullRequest
func prepareSingleReview(ctx *context.APIContext) (*issues_model.Review, *issues_model.PullRequest, bool) {
pr, err := issues_model.GetPullRequestByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrPullRequestNotExist(err) {
- ctx.APIErrorNotFound("GetPullRequestByIndex", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil, nil, true
}
review, err := issues_model.GetReviewByID(ctx, ctx.PathParamInt64("id"))
if err != nil {
- if issues_model.IsErrReviewNotExist(err) {
- ctx.APIErrorNotFound("GetReviewByID", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil, nil, true
}
// validate the review is for the given PR
if review.IssueID != pr.IssueID {
- ctx.APIErrorNotFound("ReviewNotInPR")
+ ctx.APIErrorNotFound()
return nil, nil, true
}
// make sure that the user has access to this review if it is pending
if review.Type == issues_model.ReviewTypePending && review.ReviewerID != ctx.Doer.ID && !ctx.Doer.IsAdmin {
- ctx.APIErrorNotFound("GetReviewByID")
+ ctx.APIErrorNotFound()
return nil, nil, true
}
@@ -870,7 +850,7 @@ func parseReviewersByNames(ctx *context.APIContext, reviewerNames, teamReviewerN
if err != nil {
if user_model.IsErrUserNotExist(err) {
- ctx.APIErrorNotFound("UserNotExist", fmt.Sprintf("User '%s' not exist", r))
+ ctx.APIErrorNotFound("user doesn't exist: " + r)
return nil, nil
}
ctx.APIErrorInternal(err)
@@ -886,7 +866,7 @@ func parseReviewersByNames(ctx *context.APIContext, reviewerNames, teamReviewerN
teamReviewer, err = organization.GetTeam(ctx, ctx.Repo.Owner.ID, t)
if err != nil {
if organization.IsErrTeamNotExist(err) {
- ctx.APIErrorNotFound("TeamNotExist", fmt.Sprintf("Team '%s' not exist", t))
+ ctx.APIErrorNotFound("team doesn't exist: " + t)
return nil, nil
}
ctx.APIErrorInternal(err)
@@ -902,11 +882,7 @@ func parseReviewersByNames(ctx *context.APIContext, reviewerNames, teamReviewerN
func apiReviewRequest(ctx *context.APIContext, opts api.PullReviewRequestOptions, isAdd bool) {
pr, err := issues_model.GetPullRequestByIndex(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("index"))
if err != nil {
- if issues_model.IsErrPullRequestNotExist(err) {
- ctx.APIErrorNotFound("GetPullRequestByIndex", err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/repo/release_attachment.go b/routers/api/v1/repo/release_attachment.go
index 715552d72c..915ac725b0 100644
--- a/routers/api/v1/repo/release_attachment.go
+++ b/routers/api/v1/repo/release_attachment.go
@@ -205,7 +205,7 @@ func CreateReleaseAttachment(ctx *context.APIContext) {
// Check if attachments are enabled
if !setting.Attachment.Enabled {
- ctx.APIErrorNotFound("Attachment is not enabled")
+ ctx.APIErrorNotFound("attachment is not enabled")
return
}
diff --git a/routers/api/v1/repo/wiki.go b/routers/api/v1/repo/wiki.go
index dad0bfbbce..67209fa127 100644
--- a/routers/api/v1/repo/wiki.go
+++ b/routers/api/v1/repo/wiki.go
@@ -245,11 +245,7 @@ func DeleteWikiPage(ctx *context.APIContext) {
wikiName := wiki_service.WebPathFromRequest(ctx.PathParamRaw("pageName"))
if err := wiki_service.DeleteWikiPage(ctx, ctx.Doer, ctx.Repo.Repository, wikiName); err != nil {
- if err.Error() == "file does not exist" {
- ctx.APIErrorNotFound(err)
- return
- }
- ctx.APIErrorInternal(err)
+ ctx.APIErrorAuto(err)
return
}
@@ -474,21 +470,13 @@ func findEntryForFile(commit *git.Commit, target string) (*git.TreeEntry, error)
func findWikiRepoCommit(ctx *context.APIContext) (*git.Repository, *git.Commit) {
wikiRepo, err := gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo())
if err != nil {
- if git.IsErrNotExist(err) || err.Error() == "no such file or directory" {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil, nil
}
commit, err := wikiRepo.GetBranchCommit(ctx.Repo.Repository.DefaultWikiBranch)
if err != nil {
- if git.IsErrNotExist(err) {
- ctx.APIErrorNotFound(err)
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return wikiRepo, nil
}
return wikiRepo, commit
diff --git a/routers/api/v1/shared/block.go b/routers/api/v1/shared/block.go
index 8b2a207ccb..c2a5fe8a4e 100644
--- a/routers/api/v1/shared/block.go
+++ b/routers/api/v1/shared/block.go
@@ -45,7 +45,7 @@ func ListBlocks(ctx *context.APIContext, blocker *user_model.User) {
func CheckUserBlock(ctx *context.APIContext, blocker *user_model.User) {
blockee, err := user_model.GetUserByName(ctx, ctx.PathParam("username"))
if err != nil {
- ctx.APIErrorNotFound("GetUserByName", err)
+ ctx.APIErrorAuto(err)
return
}
@@ -62,7 +62,7 @@ func CheckUserBlock(ctx *context.APIContext, blocker *user_model.User) {
func BlockUser(ctx *context.APIContext, blocker *user_model.User) {
blockee, err := user_model.GetUserByName(ctx, ctx.PathParam("username"))
if err != nil {
- ctx.APIErrorNotFound("GetUserByName", err)
+ ctx.APIErrorAuto(err)
return
}
@@ -81,7 +81,7 @@ func BlockUser(ctx *context.APIContext, blocker *user_model.User) {
func UnblockUser(ctx *context.APIContext, doer, blocker *user_model.User) {
blockee, err := user_model.GetUserByName(ctx, ctx.PathParam("username"))
if err != nil {
- ctx.APIErrorNotFound("GetUserByName", err)
+ ctx.APIErrorAuto(err)
return
}
diff --git a/routers/api/v1/shared/runners.go b/routers/api/v1/shared/runners.go
index 329f17736e..fbb0262768 100644
--- a/routers/api/v1/shared/runners.go
+++ b/routers/api/v1/shared/runners.go
@@ -77,11 +77,7 @@ func getRunnerByID(ctx *context.APIContext, ownerID, repoID, runnerID int64) (*a
runner, err := actions_model.GetRunnerByID(ctx, runnerID)
if err != nil {
- if errors.Is(err, util.ErrNotExist) {
- ctx.APIErrorNotFound("Runner not found")
- } else {
- ctx.APIErrorInternal(err)
- }
+ ctx.APIErrorAuto(err)
return nil, false
}
diff --git a/routers/api/v1/user/gpg_key.go b/routers/api/v1/user/gpg_key.go
index 562e70b5c0..0148c7f5da 100644
--- a/routers/api/v1/user/gpg_key.go
+++ b/routers/api/v1/user/gpg_key.go
@@ -4,7 +4,6 @@
package user
import (
- "errors"
"net/http"
"strings"
@@ -135,7 +134,7 @@ func GetGPGKey(ctx *context.APIContext) {
// CreateUserGPGKey creates new GPG key to given user by ID.
func CreateUserGPGKey(ctx *context.APIContext, form api.CreateGPGKeyOption, uid int64) {
if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureManageGPGKeys) {
- ctx.APIErrorNotFound("Not Found", errors.New("gpg keys setting is not allowed to be visited"))
+ ctx.APIErrorNotFound("gpg keys setting is not allowed to be changed")
return
}
@@ -276,7 +275,7 @@ func DeleteGPGKey(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureManageGPGKeys) {
- ctx.APIErrorNotFound("Not Found", errors.New("gpg keys setting is not allowed to be visited"))
+ ctx.APIErrorNotFound("gpg keys setting is not allowed to be changed")
return
}
diff --git a/routers/api/v1/user/helper.go b/routers/api/v1/user/helper.go
index ce051e2d16..ee7b8b1727 100644
--- a/routers/api/v1/user/helper.go
+++ b/routers/api/v1/user/helper.go
@@ -18,7 +18,7 @@ func GetUserByPathParam(ctx *context.APIContext, name string) *user_model.User {
if redirectUserID, err2 := user_model.LookupUserRedirect(ctx, username); err2 == nil {
context.RedirectToUser(ctx.Base, ctx.Doer, username, redirectUserID)
} else {
- ctx.APIErrorNotFound("GetUserByName", err)
+ ctx.APIErrorNotFound()
}
} else {
ctx.APIErrorInternal(err)
diff --git a/routers/api/v1/user/key.go b/routers/api/v1/user/key.go
index 1a932c94af..c12e98ca4c 100644
--- a/routers/api/v1/user/key.go
+++ b/routers/api/v1/user/key.go
@@ -6,7 +6,6 @@ package user
import (
std_ctx "context"
- "errors"
"net/http"
asymkey_model "gitea.dev/models/asymkey"
@@ -201,7 +200,7 @@ func GetPublicKey(ctx *context.APIContext) {
// CreateUserPublicKey creates new public key to given user by ID.
func CreateUserPublicKey(ctx *context.APIContext, form api.CreateKeyOption, uid int64) {
if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureManageSSHKeys) {
- ctx.APIErrorNotFound("Not Found", errors.New("ssh keys setting is not allowed to be visited"))
+ ctx.APIErrorNotFound("ssh keys setting is not allowed to be changed")
return
}
@@ -271,7 +270,7 @@ func DeletePublicKey(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureManageSSHKeys) {
- ctx.APIErrorNotFound("Not Found", errors.New("ssh keys setting is not allowed to be visited"))
+ ctx.APIErrorNotFound("ssh keys setting is not allowed to be changed")
return
}
diff --git a/routers/api/v1/user/user.go b/routers/api/v1/user/user.go
index d45ca11348..8343e38077 100644
--- a/routers/api/v1/user/user.go
+++ b/routers/api/v1/user/user.go
@@ -117,7 +117,7 @@ func GetInfo(ctx *context.APIContext) {
if !user_model.IsUserVisibleToViewer(ctx, ctx.ContextUser, ctx.Doer) {
// fake ErrUserNotExist error message to not leak information about existence
- ctx.APIErrorNotFound("GetUserByName", user_model.ErrUserNotExist{Name: ctx.PathParam("username")})
+ ctx.APIErrorNotFound()
return
}
ctx.JSON(http.StatusOK, convert.ToUser(ctx, ctx.ContextUser, ctx.Doer))
diff --git a/routers/web/repo/actions/actions.go b/routers/web/repo/actions/actions.go
index 5ae0d14a6f..9c5e1664de 100644
--- a/routers/web/repo/actions/actions.go
+++ b/routers/web/repo/actions/actions.go
@@ -27,6 +27,7 @@ import (
"gitea.dev/modules/templates"
"gitea.dev/modules/util"
shared_user "gitea.dev/routers/web/shared/user"
+ actions_service "gitea.dev/services/actions"
"gitea.dev/services/context"
"gitea.dev/services/convert"
@@ -208,12 +209,20 @@ func prepareWorkflowTemplate(ctx *context.Context, commit *git.Commit) (workflow
if !hasJobWithoutNeeds && len(j.Needs()) == 0 {
hasJobWithoutNeeds = true
}
+ if j.Uses != "" {
+ if _, err := actions_service.ResolveUses(ctx, j.Uses); err != nil {
+ workflow.ErrMsg = ctx.Locale.TrString("actions.runs.invalid_reusable_workflow_uses", err.Error())
+ break
+ }
+ }
}
- if !hasJobWithoutNeeds {
- workflow.ErrMsg = ctx.Locale.TrString("actions.runs.no_job_without_needs")
- }
- if emptyJobsNumber == len(wf.Jobs) {
- workflow.ErrMsg = ctx.Locale.TrString("actions.runs.no_job")
+ if workflow.ErrMsg == "" {
+ if !hasJobWithoutNeeds {
+ workflow.ErrMsg = ctx.Locale.TrString("actions.runs.no_job_without_needs")
+ }
+ if emptyJobsNumber == len(wf.Jobs) {
+ workflow.ErrMsg = ctx.Locale.TrString("actions.runs.no_job")
+ }
}
workflows = append(workflows, workflow)
}
@@ -352,7 +361,7 @@ func prepareWorkflowList(ctx *context.Context, workflows []WorkflowInfo, otherWo
return
}
for _, run := range runs {
- if !run.Status.In(actions_model.StatusWaiting, actions_model.StatusRunning) {
+ if !run.Status.In(actions_model.StatusWaiting, actions_model.StatusRunning, actions_model.StatusBlocked) {
continue
}
jobs, err := actions_model.GetLatestAttemptJobsByRepoAndRunID(ctx, run.RepoID, run.ID)
@@ -361,23 +370,31 @@ func prepareWorkflowList(ctx *context.Context, workflows []WorkflowInfo, otherWo
return
}
for _, job := range jobs {
- if !job.Status.IsWaiting() {
+ if !job.Status.In(actions_model.StatusWaiting, actions_model.StatusBlocked) {
continue
}
if err := actions.ValidateWorkflowContent(job.WorkflowPayload); err != nil {
runErrors[run.ID] = ctx.Locale.TrString("actions.runs.invalid_workflow_helper", err.Error())
break
}
- hasOnlineRunner := false
- for _, runner := range runners {
- if !runner.IsDisabled && runner.CanMatchLabels(job.RunsOn) {
- hasOnlineRunner = true
+ if job.CallUses != "" {
+ if _, err := actions_service.ResolveUses(ctx, job.CallUses); err != nil {
+ runErrors[run.ID] = ctx.Locale.TrString("actions.runs.invalid_reusable_workflow_uses", err.Error())
break
}
}
- if !hasOnlineRunner {
- runErrors[run.ID] = ctx.Locale.TrString("actions.runs.no_matching_online_runner_helper", strings.Join(job.RunsOn, ","))
- break
+ if job.Status.IsWaiting() {
+ hasOnlineRunner := false
+ for _, runner := range runners {
+ if !runner.IsDisabled && runner.CanMatchLabels(job.RunsOn) {
+ hasOnlineRunner = true
+ break
+ }
+ }
+ if !hasOnlineRunner {
+ runErrors[run.ID] = ctx.Locale.TrString("actions.runs.no_matching_online_runner_helper", strings.Join(job.RunsOn, ","))
+ break
+ }
}
}
}
diff --git a/services/actions/reusable_workflow.go b/services/actions/reusable_workflow.go
index 9b5ecdef6f..65a6acfbd0 100644
--- a/services/actions/reusable_workflow.go
+++ b/services/actions/reusable_workflow.go
@@ -6,6 +6,7 @@ package actions
import (
"context"
"fmt"
+ "strings"
actions_model "gitea.dev/models/actions"
"gitea.dev/models/db"
@@ -15,7 +16,9 @@ import (
"gitea.dev/modules/actions/jobparser"
"gitea.dev/modules/container"
"gitea.dev/modules/gitrepo"
+ "gitea.dev/modules/httplib"
"gitea.dev/modules/json"
+ "gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/modules/util"
"gitea.dev/services/convert"
@@ -149,10 +152,10 @@ func expandReusableWorkflowCaller(ctx context.Context, run *actions_model.Action
return fmt.Errorf("parse caller job %d: %w", caller.ID, err)
}
- // 3. Load called-workflow source.
- ref, err := jobparser.ParseUses(parsedJob.Uses)
+ // 3. Resolve `uses` and load called-workflow source.
+ ref, err := ResolveUses(ctx, parsedJob.Uses)
if err != nil {
- return fmt.Errorf("parse uses %q: %w", parsedJob.Uses, err)
+ return fmt.Errorf("resolve uses %q: %w", parsedJob.Uses, err)
}
content, contentSourceRepoID, contentSourceCommitSHA, err := loadReusableWorkflowSource(ctx, run, caller, ref)
if err != nil {
@@ -340,3 +343,20 @@ func insertCallerChildren(ctx context.Context, run *actions_model.ActionRun, att
}
return nil
}
+
+// ResolveUses normalizes and parses a reusable workflow `uses:` value.
+// It first rewrites an absolute URL pointing to this instance into the cross-repo form (rejecting external URLs),
+// then validates the syntax via jobparser.ParseUses.
+func ResolveUses(ctx context.Context, uses string) (*jobparser.UsesRef, error) {
+ // Rewrite a local-instance URL to the equivalent cross-repo form "owner/repo/.gitea/workflows/file.yml@ref".
+ if strings.HasPrefix(uses, "http://") || strings.HasPrefix(uses, "https://") {
+ // ParseGiteaSiteURL returns nil for URLs that do not belong to this instance.
+ gsu := httplib.ParseGiteaSiteURL(ctx, uses)
+ if gsu == nil {
+ return nil, fmt.Errorf("unsupported reusable workflow URL %q: an absolute URL must point to this Gitea instance (%s)", uses, setting.AppURL)
+ }
+ // RoutePath is the instance-relative path (AppSubURL already stripped), e.g. "/owner/repo/.gitea/workflows/file.yml@ref".
+ uses = strings.TrimPrefix(gsu.RoutePath, "/")
+ }
+ return jobparser.ParseUses(uses)
+}
diff --git a/services/actions/reusable_workflow_test.go b/services/actions/reusable_workflow_test.go
index cadb26a851..a7bb41ba8a 100644
--- a/services/actions/reusable_workflow_test.go
+++ b/services/actions/reusable_workflow_test.go
@@ -10,6 +10,9 @@ import (
actions_model "gitea.dev/models/actions"
"gitea.dev/models/db"
"gitea.dev/models/unittest"
+ "gitea.dev/modules/actions/jobparser"
+ "gitea.dev/modules/setting"
+ "gitea.dev/modules/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -132,3 +135,44 @@ func buildCallerChain(t *testing.T, callerUses ...string) []*actions_model.Actio
}
return jobs
}
+
+func TestResolveUses(t *testing.T) {
+ defer test.MockVariableValue(&setting.AppURL, "https://gitea.example.com/sub/")()
+ defer test.MockVariableValue(&setting.AppSubURL, "/sub")()
+ ctx := t.Context()
+
+ t.Run("LocalForms", func(t *testing.T) {
+ // Same-repo and cross-repo forms are not URLs and are parsed as-is.
+ ref, err := ResolveUses(ctx, "./.gitea/workflows/build.yml")
+ require.NoError(t, err)
+ assert.Equal(t, jobparser.UsesRef{Kind: jobparser.UsesKindLocalSameRepo, Path: ".gitea/workflows/build.yml"}, *ref)
+
+ ref, err = ResolveUses(ctx, "owner/repo/.gitea/workflows/build.yml@v1")
+ require.NoError(t, err)
+ assert.Equal(t, jobparser.UsesRef{Kind: jobparser.UsesKindLocalCrossRepo, Owner: "owner", Repo: "repo", Path: ".gitea/workflows/build.yml", Ref: "v1"}, *ref)
+ })
+
+ t.Run("LocalInstanceURL", func(t *testing.T) {
+ // An absolute URL on this instance (incl. AppSubURL) resolves to the equivalent cross-repo ref.
+ ref, err := ResolveUses(ctx, "https://gitea.example.com/sub/owner/repo/.gitea/workflows/ci.yml@refs/heads/main")
+ require.NoError(t, err)
+ assert.Equal(t, jobparser.UsesRef{Kind: jobparser.UsesKindLocalCrossRepo, Owner: "owner", Repo: "repo", Path: ".gitea/workflows/ci.yml", Ref: "refs/heads/main"}, *ref)
+ })
+
+ t.Run("InvalidSyntax", func(t *testing.T) {
+ for _, in := range []string{
+ "owner/.gitea/workflows/foo.yml", // missing repo segment
+ "owner/repo/.gitea/workflows/foo.yml", // missing @ref
+ "https://gitea.example.com/sub/repo/.gitea/workflows/ci.yml@refs/heads/main", // local absolute URL but missing owner
+ "not a valid uses at all",
+ } {
+ _, err := ResolveUses(ctx, in)
+ require.Error(t, err, "in = %s", in)
+ }
+ })
+
+ t.Run("ForeignURL", func(t *testing.T) {
+ _, err := ResolveUses(ctx, "https://other.gitea-example.com/owner/repo/.gitea/workflows/ci.yaml@v1")
+ assert.ErrorContains(t, err, "must point to this Gitea instance")
+ })
+}
diff --git a/services/context/api.go b/services/context/api.go
index 7731b5692f..02ec2b7138 100644
--- a/services/context/api.go
+++ b/services/context/api.go
@@ -138,26 +138,10 @@ func (ctx *APIContext) apiErrorInternal(skip int, err error) {
}
// APIErrorNotFound handles 404s for APIContext
-// String will replace message, errors will be added to a slice
-func (ctx *APIContext) APIErrorNotFound(objs ...any) {
- var message string
- var errs []string
- for _, obj := range objs {
- // Ignore nil
- if obj == nil {
- continue
- }
-
- if err, ok := obj.(error); ok {
- errs = append(errs, err.Error())
- } else {
- message = obj.(string)
- }
- }
- ctx.JSON(http.StatusNotFound, map[string]any{
- "message": util.IfZero(message, "not found"), // do not use locale in API
- "url": setting.API.SwaggerURL,
- "errors": errs,
+func (ctx *APIContext) APIErrorNotFound(msg ...string) {
+ ctx.JSON(http.StatusNotFound, APIError{
+ Message: util.OptionalArg(msg, "not found"),
+ URL: setting.API.SwaggerURL,
})
}
diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go
index abe846ae06..d1006abf7e 100644
--- a/services/wiki/wiki.go
+++ b/services/wiki/wiki.go
@@ -7,7 +7,6 @@ package wiki
import (
"context"
"fmt"
- "os"
"gitea.dev/models/db"
repo_model "gitea.dev/models/repo"
@@ -21,6 +20,7 @@ import (
"gitea.dev/modules/graceful"
"gitea.dev/modules/log"
repo_module "gitea.dev/modules/repository"
+ "gitea.dev/modules/util"
asymkey_service "gitea.dev/services/asymkey"
repo_service "gitea.dev/services/repository"
)
@@ -304,7 +304,7 @@ func DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model
return err
}
} else {
- return os.ErrNotExist
+ return util.ErrNotExist
}
// FIXME: The wiki doesn't have lfs support at present - if this changes need to check attributes here
diff --git a/tests/integration/api_user_org_perm_test.go b/tests/integration/api_user_org_perm_test.go
index d31abdfeb3..63d69fab71 100644
--- a/tests/integration/api_user_org_perm_test.go
+++ b/tests/integration/api_user_org_perm_test.go
@@ -151,9 +151,7 @@ func testUnknownOrganization(t *testing.T) {
req := NewRequest(t, "GET", "/api/v1/users/user1/orgs/unknown/permissions").
AddTokenAuth(token)
- resp := MakeRequest(t, req, http.StatusNotFound)
- apiError := DecodeJSON(t, resp, &api.APIError{})
- assert.Equal(t, "GetUserByName", apiError.Message)
+ MakeRequest(t, req, http.StatusNotFound)
}
func testHiddenMemberPermissionsForbidden(t *testing.T) {