Files
gitea/eslint.config.ts
T
Giteabotandsilverwind 12b20c7c99 chore(deps): update dependencies (#40168)
> [!NOTE]
> This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) | Type |
Update | Pending |
|---|---|---|---|---|---|---|
| [@primer/octicons](https://primer.style/octicons)
([source](https://redirect.github.com/primer/octicons)) | [`19.41.0` →
`19.42.0`](https://renovatebot.com/diffs/npm/@primer%2focticons/19.41.0/19.42.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@primer%2focticons/19.42.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@primer%2focticons/19.41.0/19.42.0?slim=true)
| dependencies | minor | |
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser))
| [`8.72.0` →
`8.72.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.72.0/8.72.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.72.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.72.0/8.72.1?slim=true)
| devDependencies | patch | |
| @​vitest/eslint-plugin | [`1.6.27` →
`1.6.28`](https://renovatebot.com/diffs/npm/@vitest%2feslint-plugin/1.6.27/1.6.28)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2feslint-plugin/1.6.28?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2feslint-plugin/1.6.27/1.6.28?slim=true)
| devDependencies | patch | |
| [astral-sh/setup-uv](https://redirect.github.com/astral-sh/setup-uv) |
`v10.3.0` → `v10.3.2` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/astral-sh%2fsetup-uv/v10.3.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/astral-sh%2fsetup-uv/v10.3.0/v10.3.2?slim=true)
| action | patch | `v10.3.3` |
| [chart.js](https://www.chartjs.org)
([source](https://redirect.github.com/chartjs/Chart.js)) | [`4.5.1` →
`4.6.1`](https://renovatebot.com/diffs/npm/chart.js/4.5.1/4.6.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/chart.js/4.6.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/chart.js/4.5.1/4.6.1?slim=true)
| dependencies | minor | |
| [cli/cli](https://redirect.github.com/cli/cli) | `2.103.2` → `2.103.3`
|
![age](https://developer.mend.io/api/mc/badges/age/github-releases/cli%2fcli/2.103.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/cli%2fcli/2.103.2/2.103.3?slim=true)
| | patch | |
|
[connectrpc.com/connect/v2](https://redirect.github.com/connectrpc/connect-go)
| `v2.0.1` → `v2.0.2` |
![age](https://developer.mend.io/api/mc/badges/age/go/connectrpc.com%2fconnect%2fv2/v2.0.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/connectrpc.com%2fconnect%2fv2/v2.0.1/v2.0.2?slim=true)
| require | patch | |
|
[crowdin/github-action](https://redirect.github.com/crowdin/github-action)
| `v3.4.0` → `v3.5.0` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/crowdin%2fgithub-action/v3.5.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/crowdin%2fgithub-action/v3.4.0/v3.5.0?slim=true)
| action | minor | |
| [djlint](https://redirect.github.com/djlint/djLint) | `==1.46.6` →
`==1.47.1` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/djlint/1.47.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/djlint/1.46.6/1.47.1?slim=true)
| dependency-groups | minor | `1.49.2` (+4) |
| [docker/login-action](https://redirect.github.com/docker/login-action)
| `v4.6.0` → `v4.7.0` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/docker%2flogin-action/v4.7.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/docker%2flogin-action/v4.6.0/v4.7.0?slim=true)
| action | minor | |
| [elasticsearch](https://hub.docker.com/_/elasticsearch)
([source](https://redirect.github.com/elastic/dockerfiles)) | `3f4d63c`
→ `ef5cafd` | | | service | digest | |
|
[eslint-plugin-unicorn](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn)
| [`78.0.0` →
`79.0.0`](https://renovatebot.com/diffs/npm/eslint-plugin-unicorn/78.0.0/79.0.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-unicorn/79.0.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-unicorn/78.0.0/79.0.0?slim=true)
| devDependencies | major | |
| [eslint-plugin-vue](https://eslint.vuejs.org)
([source](https://redirect.github.com/vuejs/eslint-plugin-vue)) |
[`10.11.1` →
`10.12.0`](https://renovatebot.com/diffs/npm/eslint-plugin-vue/10.11.1/10.12.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-vue/10.12.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-vue/10.11.1/10.12.0?slim=true)
| devDependencies | minor | |
|
[getmeili/meilisearch](https://redirect.github.com/meilisearch/meilisearch)
| `c94e58c` → `1f578fa` | | | service | digest | |
| [gitea.dev/sdk](https://gitea.com/gitea/go-sdk) | `v1.3.0` → `v1.5.0`
|
![age](https://developer.mend.io/api/mc/badges/age/go/gitea.dev%2fsdk/v1.5.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/gitea.dev%2fsdk/v1.3.0/v1.5.0?slim=true)
| require | minor | `v1.5.1` |
|
[github.com/buildkite/terminal-to-html/v3](https://redirect.github.com/buildkite/terminal-to-html)
| `v3.17.1` → `v3.17.3` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbuildkite%2fterminal-to-html%2fv3/v3.17.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbuildkite%2fterminal-to-html%2fv3/v3.17.1/v3.17.3?slim=true)
| require | patch | |
|
[github.com/dlclark/regexp2/v2](https://redirect.github.com/dlclark/regexp2)
| `v2.9.1` → `v2.11.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdlclark%2fregexp2%2fv2/v2.11.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdlclark%2fregexp2%2fv2/v2.9.1/v2.11.0?slim=true)
| require | minor | `v2.12.0` |
|
[github.com/getkin/kin-openapi](https://redirect.github.com/getkin/kin-openapi)
| `v0.151.0` → `v0.152.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgetkin%2fkin-openapi/v0.152.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgetkin%2fkin-openapi/v0.151.0/v0.152.0?slim=true)
| require | minor | |
|
[github.com/go-co-op/gocron/v2](https://redirect.github.com/go-co-op/gocron)
| `v2.22.0` → `v2.23.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgo-co-op%2fgocron%2fv2/v2.23.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgo-co-op%2fgocron%2fv2/v2.22.0/v2.23.0?slim=true)
| require | minor | |
|
[github.com/go-redsync/redsync/v4](https://redirect.github.com/go-redsync/redsync)
| `v4.18.0` → `v4.18.1` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgo-redsync%2fredsync%2fv4/v4.18.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgo-redsync%2fredsync%2fv4/v4.18.0/v4.18.1?slim=true)
| require | patch | |
| [github.com/google/pprof](https://redirect.github.com/google/pprof) |
`1facf8f` → `dbd0ed3` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgoogle%2fpprof/v0.0.0-20261026192309-dbd0ed30aa88?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgoogle%2fpprof/v0.0.0-20261016150608-1facf8f91b50/v0.0.0-20261026192309-dbd0ed30aa88?slim=true)
| require | digest | |
|
[gitlab.com/gitlab-org/api/client-go/v3](https://gitlab.com/gitlab-org/api/client-go)
| `v3.29.0` → `v3.39.1` |
![age](https://developer.mend.io/api/mc/badges/age/go/gitlab.com%2fgitlab-org%2fapi%2fclient-go%2fv3/v3.39.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/gitlab.com%2fgitlab-org%2fapi%2fclient-go%2fv3/v3.29.0/v3.39.1?slim=true)
| require | minor | `v3.40.2` (+3) |
| [google.golang.org/grpc](https://redirect.github.com/grpc/grpc-go) |
`v1.84.0` → `v1.85.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.85.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.84.0/v1.85.0?slim=true)
| require | minor | |
| [katex](https://katex.org)
([source](https://redirect.github.com/KaTeX/KaTeX)) | [`0.19.0` →
`0.19.1`](https://renovatebot.com/diffs/npm/katex/0.19.0/0.19.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/katex/0.19.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/katex/0.19.0/0.19.1?slim=true)
| dependencies | patch | |
|
[markdownlint-cli](https://redirect.github.com/igorshubovych/markdownlint-cli)
| [`0.49.1` →
`0.50.0`](https://renovatebot.com/diffs/npm/markdownlint-cli/0.49.1/0.50.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/markdownlint-cli/0.50.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/markdownlint-cli/0.49.1/0.50.0?slim=true)
| devDependencies | minor | |
|
[material-icon-theme](https://redirect.github.com/material-extensions/vscode-material-icon-theme/blob/main/README.md)
([source](https://redirect.github.com/material-extensions/vscode-material-icon-theme))
| [`5.39.0` →
`5.40.0`](https://renovatebot.com/diffs/npm/material-icon-theme/5.39.0/5.40.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/material-icon-theme/5.40.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/material-icon-theme/5.39.0/5.40.0?slim=true)
| devDependencies | minor | |
| [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) | `v1.60.1` →
`v1.61.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/modernc.org%2fsqlite/v1.61.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/modernc.org%2fsqlite/v1.60.1/v1.61.0?slim=true)
| require | minor | `v1.61.1` |
| [pnpm](https://pnpm.io)
([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm))
| [`12.14.0` →
`12.16.1`](https://renovatebot.com/diffs/npm/pnpm/12.14.0/12.16.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/12.16.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/12.14.0/12.16.1?slim=true)
| packageManager | minor | |
| [pnpm](https://pnpm.io)
([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm))
| [`>= 12.14.0` → `>=
12.16.1`](https://renovatebot.com/diffs/npm/pnpm/12.14.0/12.16.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/12.16.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/12.14.0/12.16.1?slim=true)
| engines | minor | |
| [postcss](https://postcss.org/)
([source](https://redirect.github.com/postcss/postcss)) | [`8.5.31` →
`8.5.32`](https://renovatebot.com/diffs/npm/postcss/8.5.31/8.5.32) |
![age](https://developer.mend.io/api/mc/badges/age/npm/postcss/8.5.32?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/postcss/8.5.31/8.5.32?slim=true)
| dependencies | patch | |
| [renovate](https://renovatebot.com)
([source](https://redirect.github.com/renovatebot/renovate)) |
[`44.172.2` →
`44.190.1`](https://octochangelog.com/compare?repo=renovatebot%2Frenovate&from=44.172.2&to=44.190.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/renovate/44.190.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/renovate/44.172.2/44.190.1?slim=true)
| | minor | `44.200.0` (+21) |
|
[renovatebot/github-action](https://redirect.github.com/renovatebot/github-action)
| `v46.3.9` → `v46.3.10` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/renovatebot%2fgithub-action/v46.3.10?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/renovatebot%2fgithub-action/v46.3.9/v46.3.10?slim=true)
| action | patch | `v46.3.12` (+1) |
|
[typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint))
| [`8.72.0` →
`8.72.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.72.0/8.72.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/typescript-eslint/8.72.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript-eslint/8.72.0/8.72.1?slim=true)
| devDependencies | patch | |
| [vite](https://vite.dev)
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite))
| [`8.3.4` →
`8.3.5`](https://renovatebot.com/diffs/npm/vite/8.3.4/8.3.5) |
![age](https://developer.mend.io/api/mc/badges/age/npm/vite/8.3.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/8.3.4/8.3.5?slim=true)
| dependencies | patch | |

---

### Release Notes

<details>
<summary>primer/octicons (@&#8203;primer/octicons)</summary>

###
[`v19.42.0`](https://redirect.github.com/primer/octicons/releases/tag/%40primer/octicons%4019.42.0)

[Compare
Source](https://redirect.github.com/primer/octicons/compare/@primer/octicons@19.41.0...@primer/octicons@19.42.0)

##### Minor Changes

- [#&#8203;1381](https://redirect.github.com/primer/octicons/pull/1381)
[`d25ce68df9d08abd65431a8a48b45446432f1b45`](https://redirect.github.com/primer/octicons/commit/d25ce68df9d08abd65431a8a48b45446432f1b45)
Thanks [@&#8203;edokoa](https://redirect.github.com/edokoa)! - Add the
16px `git-draft-agent`, `git-pull-request-agent`, `check-agent`,
`git-que-merge-agent`, `git-closed-agent`, and `git-merge-agent` icons
for agent-assisted draft, open, ready-to-merge, queued, closed, and
merged pull request states.

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/parser)</summary>

###
[`v8.72.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8721-2026-10-26)

[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.72.0...v8.72.1)

This was a version bump only for parser to align it with other projects,
there were no code changes.

See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.1)
for more information.

You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning) and
[releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>astral-sh/setup-uv</summary>

###
[`v10.3.2`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v10.3.2):
🌈 update known checksums for 0.13.5

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v10.3.1...v10.3.2)

#### Changes

#### 🧰 Maintenance

- chore: update known checksums for 0.13.5
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1103](https://redirect.github.com/astral-sh/setup-uv/issues/1103))

#### 📚 Documentation

- docs: update version references to v10.3.1
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1102](https://redirect.github.com/astral-sh/setup-uv/issues/1102))

###
[`v10.3.1`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v10.3.1):
🌈 preserve cache error class names in save-cache bundle

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v10.3.0...v10.3.1)

#### Changes

This release includes a fix so that multiple concurrent workflows trying
to upload the same cache no longer warn

`##[warning]Failed to save: Unable to reserve cache with key ...,
another job may be creating this cache.`

#### 🐛 Bug fixes

- fix: preserve cache error class names in save-cache bundle
[@&#8203;dannyward630](https://redirect.github.com/dannyward630)
([#&#8203;1093](https://redirect.github.com/astral-sh/setup-uv/issues/1093))

#### 🧰 Maintenance

- chore: update known checksums for 0.13.4
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1099](https://redirect.github.com/astral-sh/setup-uv/issues/1099))
- chore: update known checksums for 0.13.2/0.13.3
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1098](https://redirect.github.com/astral-sh/setup-uv/issues/1098))
- chore: update known checksums for 0.13.1
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1094](https://redirect.github.com/astral-sh/setup-uv/issues/1094))
- Verify npm dependency signatures before builds
[@&#8203;zaniebot](https://redirect.github.com/zaniebot)
([#&#8203;1027](https://redirect.github.com/astral-sh/setup-uv/issues/1027))

#### 📚 Documentation

- docs: cache-dependency-glob matches relative to the working directory
[@&#8203;flange-ipb](https://redirect.github.com/flange-ipb)
([#&#8203;1092](https://redirect.github.com/astral-sh/setup-uv/issues/1092))
- docs: update version references to v10.3.0
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1090](https://redirect.github.com/astral-sh/setup-uv/issues/1090))

#### ⬆️ Dependency updates

- chore(deps): roll up Dependabot updates
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;1101](https://redirect.github.com/astral-sh/setup-uv/issues/1101))

</details>

<details>
<summary>chartjs/Chart.js (chart.js)</summary>

###
[`v4.6.1`](https://redirect.github.com/chartjs/Chart.js/releases/tag/v4.6.1)

[Compare
Source](https://redirect.github.com/chartjs/Chart.js/compare/v4.5.1...v4.6.1)

### Essential Links

- [npm](https://www.npmjs.com/package/chart.js)
- [Migration
guide](https://www.chartjs.org/docs/4.6.1/migration/v4-migration.html)
- [Docs](https://www.chartjs.org/docs/4.6.1/)
- [API](https://www.chartjs.org/docs/4.6.1/api/)
- [Samples](https://www.chartjs.org/docs/4.6.1/samples/information.html)

*
[#&#8203;12355](https://redirect.github.com/chartjs/Chart.js/issues/12355)
fix: trusted publishing fix + version 4.6.1 bump

Thanks to [@&#8203;etimberg](https://redirect.github.com/etimberg)

</details>

<details>
<summary>cli/cli</summary>

###
[`v2.103.3`](https://redirect.github.com/cli/cli/releases/tag/v2.103.3):
GitHub CLI 2.103.3

[Compare
Source](https://redirect.github.com/cli/cli/compare/v2.103.2...v2.103.3)

##### What's Changed

##### 🐛 Fixes

- fix(gh auth status): explain expired expiring tokens with
`--no-refresh` by [@&#8203;babakks](https://redirect.github.com/babakks)
in [#&#8203;14815](https://redirect.github.com/cli/cli/pull/14815)

**Full Changelog**:
<https://github.com/cli/cli/compare/v2.103.2...v2.103.3>

</details>

<details>
<summary>connectrpc/connect-go (connectrpc.com/connect/v2)</summary>

###
[`v2.0.2`](https://redirect.github.com/connectrpc/connect-go/releases/tag/v2.0.2)

[Compare
Source](https://redirect.github.com/connectrpc/connect-go/compare/v2.0.1...v2.0.2)

#### What's Changed

##### Bugfixes

- Fix data race reading ClientInfo after a cancelled call by
[@&#8203;emcfarlane](https://redirect.github.com/emcfarlane) in
[#&#8203;1036](https://redirect.github.com/connectrpc/connect-go/pull/1036)
- List JSON charset variants in Accept-Post by
[@&#8203;emcfarlane](https://redirect.github.com/emcfarlane) in
[#&#8203;1037](https://redirect.github.com/connectrpc/connect-go/pull/1037)
- Flush response headers in ServerStream.SendHeaders over HTTP by
[@&#8203;raveesh-me](https://redirect.github.com/raveesh-me) in
[#&#8203;1035](https://redirect.github.com/connectrpc/connect-go/pull/1035)
- Stop reading oversized messages after rejecting them by
[@&#8203;stefanvanburen](https://redirect.github.com/stefanvanburen) in
[#&#8203;1039](https://redirect.github.com/connectrpc/connect-go/pull/1039)

#### New Contributors

- [@&#8203;raveesh-me](https://redirect.github.com/raveesh-me) made
their first contribution in
[#&#8203;1035](https://redirect.github.com/connectrpc/connect-go/pull/1035)

**Full Changelog**:
<https://github.com/connectrpc/connect-go/compare/v2.0.1...v2.0.2>

</details>

<details>
<summary>crowdin/github-action</summary>

###
[`v3.5.0`](https://redirect.github.com/crowdin/github-action/releases/tag/v3.5.0)

[Compare
Source](https://redirect.github.com/crowdin/github-action/compare/v3.4.0...v3.5.0)

#### What's Changed

- CLI
[5.5.0](https://redirect.github.com/crowdin/crowdin-cli/releases/tag/5.5.0)
by [@&#8203;andrii-bodnar](https://redirect.github.com/andrii-bodnar)

**Full Changelog**:
<https://github.com/crowdin/github-action/compare/v3.4.0...v3.5.0>

</details>

<details>
<summary>djlint/djLint (djlint)</summary>

###
[`v1.47.1`](https://redirect.github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1471---2026-10-26)

[Compare
Source](https://redirect.github.com/djlint/djLint/compare/v1.47.0...v1.47.1)

##### Fix

- `preserve-inline` in the `js` setting `brace_style` takes effect, so
`{ bubbles: true }` stays on one line in a `<script>` or in an attribute
formatted with `--format-attribute-js-json`. It used to be dropped
before the code was formatted.
- The json schema allows any option under `css` and `js`, so a strict
validator such as Tombi no longer reports `indent_size` there.

###
[`v1.47.0`](https://redirect.github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1470---2026-10-22)

[Compare
Source](https://redirect.github.com/djlint/djLint/compare/v1.46.6...v1.47.0)

##### Feature

- New option `--sort-load-tags` / `sort_load_tags` sorts the libraries
in a `{% load %}` tag and drops the ones written twice, so `{% load
static i18n %}` becomes `{% load i18n static %}`. In `{% load a b from
library %}` the names before `from` are sorted. It is off by default:
where two libraries define a tag or filter of the same name, the one
loaded last wins, so sorting can change which one a template uses.
- The formatter drops the spaces `H012` reports around an attribute's
`=`, so `<div class = "a">` becomes `<div class="a">`.

##### Changed

- `H010` reports the names the formatter lowercases, in any mix of case,
so `Width="3"` is now reported. A framework binding such as `:itemID` or
`@ID` and a longer name such as `data-ID` no longer are, since the
formatter leaves their case alone.
- `H018` is not reported under `--close-void-tags`, since the formatter
then writes the `/>` ending the rule reports. `--ignore-case` already
worked this way for `H009` and `H010`.

##### Fix

- `H020` reports an empty pair whose end tag has whitespace before its
`>`, such as `<div></div\n>`.
- `H026` reports a `class` or `id` holding only whitespace, such as
`class=" "`, and one written with spaces around the `=`.
- `H033` reports an action padded at both ends once. It used to report
it twice, unless an attribute before `action` happened to make the two
reports look the same.
- Markup written inside an attribute value, as in `<p title="<img
src='a'>">`, is text, and `H005`, `H008`, `H010`, `H012`, `D018`,
`J018`, `H024`, `H026`, `H029` and `H033` no longer report it. `H046`
and `H051` read `tabindex` and `role` from the tag's own attributes, so
`tabindex=1` written in a value or in the page text is not reported
either.
- `T001` and `T027` read a tag holding a dict, such as `{{ f({"a": {"b":
1}}) }}`, up to the `}}` that closes it rather than the first `}}`
inside it.
- `T032` steps over an escaped quote in a string, so the spaces in `{{
x|default:"a \"b c\"" }}` are not reported.
- `H015` reports a heading followed by a tag on the same line anywhere
in the file. It used to look only at the last line.
- The rules that read a tag's attributes step over a template tag
written in it, including a handlebars `{{{attrs}}}` and a dict as in `{{
{'class': 'x'}|xmlattr }}`, so `<img {{ attrs }} src='a'>` is reported
by `H008`, which used to stop reading at the `{{`.
- `T038` steps over a string in a block tag, so the `{%` in `{% with
a="{%" %}` does not cut the tag short.

##### Performance

- The rules that read a tag's attributes stop at a stray `<`, and
`H015`, `H030`, `H036`, `T001`, `T027`, `T038` and `T039` no longer read
the rest of the document again for each tag. A file holding thousands of
unclosed tags or headings on one line is linted in a fraction of a
second, where it used to take minutes.

</details>

<details>
<summary>docker/login-action</summary>

###
[`v4.7.0`](https://redirect.github.com/docker/login-action/releases/tag/v4.7.0)

[Compare
Source](https://redirect.github.com/docker/login-action/compare/v4.6.0...v4.7.0)

- Preserve explicit ECR settings in `registry-auth` by
[@&#8203;crazy-max](https://redirect.github.com/crazy-max) in
[#&#8203;1089](https://redirect.github.com/docker/login-action/pull/1089)
- Use registry hosts for scoped credentials by
[@&#8203;crazy-max](https://redirect.github.com/crazy-max) in
[#&#8203;1088](https://redirect.github.com/docker/login-action/pull/1088)
- Raise Docker Hub OIDC max expiry to 6 hours by
[@&#8203;crazy-max](https://redirect.github.com/crazy-max) in
[#&#8203;1068](https://redirect.github.com/docker/login-action/pull/1068)
- Log Docker Hub OIDC token exchange progress by
[@&#8203;crazy-max](https://redirect.github.com/crazy-max) in
[#&#8203;1061](https://redirect.github.com/docker/login-action/pull/1061)
- Bump
[@&#8203;aws-sdk/client-ecr](https://redirect.github.com/aws-sdk/client-ecr)
and
[@&#8203;aws-sdk/client-ecr-public](https://redirect.github.com/aws-sdk/client-ecr-public)
to 3.1154.0 in
[#&#8203;1093](https://redirect.github.com/docker/login-action/pull/1093)
- Bump
[@&#8203;docker/actions-toolkit](https://redirect.github.com/docker/actions-toolkit)
from 0.94.0 to 0.107.0 in
[#&#8203;1100](https://redirect.github.com/docker/login-action/pull/1100)
- Bump [@&#8203;humanfs/node](https://redirect.github.com/humanfs/node)
from 0.16.7 to 0.16.8 in
[#&#8203;1077](https://redirect.github.com/docker/login-action/pull/1077)
- Bump csv-parse from 7.0.1 to 7.0.3 in
[#&#8203;1078](https://redirect.github.com/docker/login-action/pull/1078)
- Bump handlebars from 4.7.9 to 4.7.10 in
[#&#8203;1091](https://redirect.github.com/docker/login-action/pull/1091)
- Bump js-yaml from 5.2.2 to 5.5.0 in
[#&#8203;1066](https://redirect.github.com/docker/login-action/pull/1066)
- Bump postcss from 8.5.22 to 8.5.26 in
[#&#8203;1071](https://redirect.github.com/docker/login-action/pull/1071)
- Bump postcss-selector-parser from 7.1.1 to 7.1.6 in
[#&#8203;1092](https://redirect.github.com/docker/login-action/pull/1092)
- Bump source-map-js from 1.2.1 to 1.2.2 in
[#&#8203;1090](https://redirect.github.com/docker/login-action/pull/1090)
- Bump undici from 6.27.0 to 6.29.1 in
[#&#8203;1085](https://redirect.github.com/docker/login-action/pull/1085)
- Bump uuid from 14.0.1 to 14.0.3 in
[#&#8203;1096](https://redirect.github.com/docker/login-action/pull/1096)

**Full Changelog**:
<https://github.com/docker/login-action/compare/v4.6.0...v4.7.0>

</details>

<details>
<summary>sindresorhus/eslint-plugin-unicorn
(eslint-plugin-unicorn)</summary>

###
[`v79.0.0`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v79.0.0)

[Compare
Source](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/compare/v78.0.0...v79.0.0)

#### Breaking

- `no-top-level-side-effects`: Focus on mutations of globals, and remove
it from the `unopinionated` preset
([#&#8203;3915](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3915))
[`24abac4`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/24abac48)
- Unknown calls are no longer reported by default. Enable the new
[`checkUnknownCalls`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-top-level-side-effects.md#checkunknowncalls)
option for stricter checking.
- Mutations of globals, like `document.title = 'x'` and
`Object.assign(globalThis, …)`, are now reported, also in declarations
and default exports. You may see new reports.

#### Improvements

- Infer types from JSDoc `@type`, `@param`, and `@returns` annotations
in rules that use type information
([#&#8203;3941](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3941))
[`2b4bfab`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/2b4bfab0)
- Handle template literals without expressions like strings in more
rules
([#&#8203;3943](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3943))
[`8bd8c06`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/8bd8c063)
- Autofix more code that contains comments, while keeping the comments
([#&#8203;3939](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3939))
[`87baf82`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/87baf82f)
- Fix autofixes in many rules that could produce broken code or wrong
parentheses
([#&#8203;3917](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3917))
[`fed7eac`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/fed7eac2)
- Make autofixes safer in many rules
- Fixes that can change behavior in rare cases are now suggestions, for
example in `prefer-spread`, `prefer-math-min-max`,
`prefer-modern-dom-apis`, and `prefer-switch`.
- Improve performance
[`175efaf`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/175efaf1)
[`3dd8fd2`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/3dd8fd28)
- `comment-content`: Add
[`ignore`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/comment-content.md#ignore)
option
([#&#8203;3950](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3950))
[`3fe046e`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/3fe046e6)
- `consistent-function-scoping`: Ignore functions in Vitest hoisted
factories
([#&#8203;3905](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3905))
[`98912a9`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/98912a91)
- `custom-error-definition`: Ignore abstract TypeScript classes
([#&#8203;3934](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3934))
[`ee3501f`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/ee3501fb)
- `no-non-function-verb-prefix`: Ignore shorthand destructuring
([#&#8203;3926](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3926))
[`76e5760`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/76e5760b)
- `no-top-level-side-effects`: Recognize more config helpers
([#&#8203;3916](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3916))
[`d459c51`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/d459c511)
- `no-useless-coercion`: Preserve boolean return types in TypeScript
([#&#8203;3904](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3904))
[`bef1571`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/bef15714)
- `prefer-array-some`: Check `.find()` results used as booleans
([#&#8203;3913](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3913))
[`c957bf3`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/c957bf3d)
- `prefer-default-parameters`: Skip unsafe logical OR fallbacks
([#&#8203;3951](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3951))
[`bcec97a`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/bcec97a4)
- `prefer-includes`: Skip incompatible TypeScript search values
([#&#8203;3927](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3927))
[`d66441a`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/d66441aa)
- `prefer-includes-over-repeated-comparisons`: Report negated and typed
loose comparisons
([#&#8203;3935](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3935))
[`6e21cb1`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/6e21cb1b)
- `prefer-includes-over-repeated-comparisons`: Preserve TypeScript union
narrowing
([#&#8203;3910](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3910))
[`b5c479d`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/b5c479d8)
- `prefer-literal-ascii`: Preserve escaped trailing spaces in templates
([#&#8203;3911](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3911))
[`360094b`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/360094bb)
- `prefer-minimal-ternary`: Skip minimizations that break types
([#&#8203;3892](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3892))
[`f022d6d`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/f022d6d1)
- `prefer-modern-math-apis`: Use suggestions for changes that can affect
numeric results
([#&#8203;3914](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3914))
[`8af7c17`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/8af7c172)
- `prefer-simple-condition-first`: Improve `typeof` comparisons and
guards
([#&#8203;3948](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3948))
[`ee3edf0`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/ee3edf06)
- `prefer-simplified-conditions`: Handle equivalent logical expressions
([#&#8203;3938](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3938))
[`a0b2788`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/a0b2788b)
- `prefer-simplified-conditions`: Factor common terms in longer chains
and static templates
([#&#8203;3942](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3942))
[`0d8c8bc`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/0d8c8bcb)
- `prefer-smaller-scope`: Check TypeScript type aliases
([#&#8203;3928](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3928))
[`290d922`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/290d922c)
- `prefer-string-raw`: Preserve TypeScript literal types in autofixes
([#&#8203;3912](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3912))
[`0611546`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/06115464)
- `prefer-ternary`: Preserve consecutive early-return guards
([#&#8203;3945](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3945))
[`3fa840f`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/3fa840fe)
- `require-post-message-target-origin`: Skip incompatible typed methods
([#&#8203;3925](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3925))
[`387194b`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/387194bd)
- `throw-new-error`: Ignore calls that return functions
([#&#8203;3894](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/issues/3894))
[`5e35def`](https://redirect.github.com/sindresorhus/eslint-plugin-unicorn/commit/5e35def7)

***

</details>

<details>
<summary>vuejs/eslint-plugin-vue (eslint-plugin-vue)</summary>

###
[`v10.12.0`](https://redirect.github.com/vuejs/eslint-plugin-vue/blob/HEAD/CHANGELOG.md#10120)

[Compare
Source](https://redirect.github.com/vuejs/eslint-plugin-vue/compare/v10.11.1...v10.12.0)

##### New rules

- Added new
[`vue/no-content-outside-block`](https://eslint.vuejs.org/rules/no-content-outside-block.html)
rule
([#&#8203;3119](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3119))
- Added new
[`vue/no-define-model-default`](https://eslint.vuejs.org/rules/no-define-model-default.html)
rule
([#&#8203;3146](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3146))
- Added new
[`vue/no-props-shadow`](https://eslint.vuejs.org/rules/no-props-shadow.html)
rule
([#&#8203;3118](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3118))

##### New rule options

- Added `required` option to
[`vue/block-lang`](https://eslint.vuejs.org/rules/block-lang.html) to
report components that omit a required block entirely
([#&#8203;3125](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3125))
- Added `ignoreMixins` option to
[`vue/require-explicit-emits`](https://eslint.vuejs.org/rules/require-explicit-emits.html)
rule
([#&#8203;3141](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3141))

##### Fixed false negatives (may result in more lint issues)

- Added support for refs detected by type information, such as refs
returned from composables, to
[`vue/no-ref-as-operand`](https://eslint.vuejs.org/rules/no-ref-as-operand.html)
rule
([#&#8203;3144](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3144))
- Fixed
[`vue/no-dupe-keys`](https://eslint.vuejs.org/rules/no-dupe-keys.html)
not reporting `defineModel()` names that collide with a prop, another
model, or a `<script setup>` variable
([#&#8203;3163](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3163))
- Fixed
[`vue/no-dupe-keys`](https://eslint.vuejs.org/rules/no-dupe-keys.html)
not reporting `<script setup>` variables that shadow a prop while
aliasing a different one, such as `const foo = toRef(props, 'bar')`
([#&#8203;3124](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3124))
- Fixed
[`vue/no-multi-spaces`](https://eslint.vuejs.org/rules/no-multi-spaces.html)
not reporting multiple spaces in the tags of some top-level blocks, e.g.
`<script setup>`
([#&#8203;3162](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3162))
- Fixed
[`vue/no-ref-as-operand`](https://eslint.vuejs.org/rules/no-ref-as-operand.html)
and
[`vue/no-ref-object-reactivity-loss`](https://eslint.vuejs.org/rules/no-ref-object-reactivity-loss.html)
to also check refs created with `useTemplateRef()`
([#&#8203;3154](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3154))
- Fixed
[`vue/no-unused-properties`](https://eslint.vuejs.org/rules/no-unused-properties.html)
not reporting unused non-props properties in components that use
`$props` as a whole (e.g. `v-bind="$props"`)
([#&#8203;3161](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3161))
- Fixed
[`vue/padding-lines-in-component-definition`](https://eslint.vuejs.org/rules/padding-lines-in-component-definition.html)
to check every pair of adjacent properties, not only the first, when
`withinOption` or `withinEach` is not set
([#&#8203;3155](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3155))
- Fixed
[`vue/require-default-prop`](https://eslint.vuejs.org/rules/require-default-prop.html),
[`vue/no-boolean-default`](https://eslint.vuejs.org/rules/no-boolean-default.html),
[`vue/no-required-prop-with-default`](https://eslint.vuejs.org/rules/no-required-prop-with-default.html)
and
[`vue/require-valid-default-prop`](https://eslint.vuejs.org/rules/require-valid-default-prop.html)
not handling defaults that are passed to `withDefaults()` by reference
or spread instead of an inline object literal
([#&#8203;3114](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3114))

##### Fixed false positives (may result in fewer lint issues)

- Changed
[`vue/singleline-html-element-content-newline`](https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html)
and
[`vue/multiline-html-element-content-newline`](https://eslint.vuejs.org/rules/multiline-html-element-content-newline.html)
rules to ignore `router-link` and `nuxt-link` elements by default
([#&#8203;3165](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3165))
- Fixed
[`vue/no-undef-properties`](https://eslint.vuejs.org/rules/no-undef-properties.html)
false positives for properties returned via `...toRefs(reactive({ ...
}))` from `setup()`
([#&#8203;3134](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3134))
- Fixed
[`vue/require-typed-ref`](https://eslint.vuejs.org/rules/require-typed-ref.html)
false positives when an explicit type annotation already applies to the
`ref()` call
([#&#8203;3123](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3123))
- Fixed
[`vue/v-if-else-key`](https://eslint.vuejs.org/rules/v-if-else-key.html)
false positive for components with a bound `:key`
([#&#8203;3150](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3150))

##### Other changes

- Removed Reactivity Transform support from
[`vue/no-ref-object-reactivity-loss`](https://eslint.vuejs.org/rules/no-ref-object-reactivity-loss.html),
since the Reactivity Transform proposal was dropped from Vue
([#&#8203;3126](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3126))
- Changed
[`vue/html-self-closing`](https://eslint.vuejs.org/rules/html-self-closing.html)
to treat Vue's special `<slot>` and `<template>` elements as components
(`html.component` option) instead of normal HTML elements
([#&#8203;3164](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3164))
- Changed
[`vue/attributes-order`](https://eslint.vuejs.org/rules/attributes-order.html)
rule to provide a suggestion instead of an autofix when the fix would
move a binding across `v-bind="object"`
([#&#8203;3145](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3145))
- Improved performance of
[`vue/no-reserved-component-names`](https://eslint.vuejs.org/rules/no-reserved-component-names.html)
by no longer rebuilding its reserved name sets for every file
([#&#8203;3147](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3147))

</details>

<details>
<summary>gitea/go-sdk (gitea.dev/sdk)</summary>

### [`v1.5.0`](https://gitea.com/gitea/go-sdk/releases/tag/v1.5.0)

[Compare Source](https://gitea.com/gitea/go-sdk/compare/v1.4.0...v1.5.0)

#### What's Changed

- feat: allow PAT-authenticated clients to manage access tokens in
[#&#8203;840](https://gitea.com/gitea/go-sdk/pulls/840)
- fix(pull): surface the server's error when a merge is refused in
[#&#8203;870](https://gitea.com/gitea/go-sdk/pulls/870)
- feat(hook): add name option to webhooks in
[#&#8203;867](https://gitea.com/gitea/go-sdk/pulls/867)
- feat: cover the API options gitea-cli still calls raw in
[#&#8203;862](https://gitea.com/gitea/go-sdk/pulls/862)
- ci: implement gitea's cache-seeder in
[#&#8203;866](https://gitea.com/gitea/go-sdk/pulls/866)
- Add bitbucketserver and forgejo migration service types in
[#&#8203;868](https://gitea.com/gitea/go-sdk/pulls/868)
- chore(deps): update dependencies in
[#&#8203;869](https://gitea.com/gitea/go-sdk/pulls/869)
- chore: remove the Client wrapper generator in
[#&#8203;865](https://gitea.com/gitea/go-sdk/pulls/865)
- feat: add force push and stale approval fields to branch protections
in [#&#8203;864](https://gitea.com/gitea/go-sdk/pulls/864)

#### Contributors

- [@&#8203;sedlund](https://redirect.github.com/sedlund)
- [@&#8203;Svtter](https://redirect.github.com/Svtter)
- [@&#8203;SudhanshuSingh](https://redirect.github.com/SudhanshuSingh)
- [@&#8203;bircni](https://redirect.github.com/bircni)
- [@&#8203;silverwind](https://redirect.github.com/silverwind)
- [@&#8203;lunny](https://redirect.github.com/lunny)
- [@&#8203;renovate-bot](https://redirect.github.com/renovate-bot)

#### New Contributors

- [@&#8203;Svtter](https://redirect.github.com/Svtter) made their first
contribution in [#&#8203;870](https://gitea.com/gitea/go-sdk/pulls/870)
- [@&#8203;bircni](https://redirect.github.com/bircni) made their first
contribution in [#&#8203;862](https://gitea.com/gitea/go-sdk/pulls/862)
- [@&#8203;SudhanshuSingh](https://redirect.github.com/SudhanshuSingh)
made their first contribution in
[#&#8203;864](https://gitea.com/gitea/go-sdk/pulls/864)

**Full Changelog**:
[v1.4.0...v1.5.0](https://gitea.com/gitea/go-sdk/compare/v1.4.0...v1.5.0)

### [`v1.4.0`](https://gitea.com/gitea/go-sdk/releases/tag/v1.4.0)

[Compare Source](https://gitea.com/gitea/go-sdk/compare/v1.3.0...v1.4.0)

#### What's Changed

- fix: retry server version lookup after failure in
[#&#8203;829](https://gitea.com/gitea/go-sdk/pulls/829)
- chore(deps): update dependencies, adapt to Gitea 28 in
[#&#8203;863](https://gitea.com/gitea/go-sdk/pulls/863)
- chore: update golangci-lint for Go 1.27.2, exclude dagger from
Renovate in [#&#8203;861](https://gitea.com/gitea/go-sdk/pulls/861)

**Note**: Gitea skipped 1.28, so the project and workflow run
approve/cancel/logs APIs are now gated on Gitea 28.0.0. Clients pinning
`SetGiteaVersion("1.28.0")` must switch to `"28.0.0"`.

#### Contributors

- [@&#8203;noeljackson](https://redirect.github.com/noeljackson)
- [@&#8203;silverwind](https://redirect.github.com/silverwind)
- [@&#8203;renovate-bot](https://redirect.github.com/renovate-bot)

**Full Changelog**:
[v1.3.0...v1.4.0](https://gitea.com/gitea/go-sdk/compare/v1.3.0...v1.4.0)

Written by Claude.

</details>

<details>
<summary>buildkite/terminal-to-html
(github.com/buildkite/terminal-to-html/v3)</summary>

###
[`v3.17.3`](https://redirect.github.com/buildkite/terminal-to-html/releases/tag/v3.17.3)

[Compare
Source](https://redirect.github.com/buildkite/terminal-to-html/compare/v3.17.2...v3.17.3)

####
[v3.17.3](https://redirect.github.com/buildkite/terminal-to-html/tree/v3.17.3)

[Full
Changelog](https://redirect.github.com/buildkite/terminal-to-html/compare/v3.17.2...v3.17.3)

This release provides the Linux, macOS, and Windows binaries missing
from v3.17.2. Apart from the version number, application code is
unchanged from v3.17.2.

##### Changed

- Prepare versioned binaries for v3.17.3.
[#&#8203;293](https://redirect.github.com/buildkite/terminal-to-html/pull/293)
([@&#8203;wolfeidau](https://redirect.github.com/wolfeidau))
- Document the draft-first binary release process, including artifact
verification and immutable release restrictions.
[#&#8203;292](https://redirect.github.com/buildkite/terminal-to-html/pull/292)
([@&#8203;wolfeidau](https://redirect.github.com/wolfeidau))

##### Included from v3.17.2

- Remove `html/template` from the rendering path to avoid a runtime trap
when rendering with TinyGo, while preserving the generated HTML.
[#&#8203;282](https://redirect.github.com/buildkite/terminal-to-html/pull/282)
([@&#8203;dannymidnight](https://redirect.github.com/dannymidnight))
- Raise the minimum supported Go version to **1.26.10** and update the
development/CI Go Docker image.
[#&#8203;290](https://redirect.github.com/buildkite/terminal-to-html/pull/290)
([@&#8203;wolfeidau](https://redirect.github.com/wolfeidau))
- Bump `golang.org/x/sys` to 0.47.0.
[#&#8203;280](https://redirect.github.com/buildkite/terminal-to-html/pull/280)
([@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot])

###
[`v3.17.2`](https://redirect.github.com/buildkite/terminal-to-html/releases/tag/v3.17.2)

[Compare
Source](https://redirect.github.com/buildkite/terminal-to-html/compare/v3.17.1...v3.17.2)

####
[v3.17.2](https://redirect.github.com/buildkite/terminal-to-html/tree/v3.17.2)

[Full
Changelog](https://redirect.github.com/buildkite/terminal-to-html/compare/v3.17.1...v3.17.2)

##### Fixed

- Remove `html/template` from the rendering path to avoid a runtime trap
when rendering with TinyGo, while preserving the generated HTML.
[#&#8203;282](https://redirect.github.com/buildkite/terminal-to-html/pull/282)
([@&#8203;dannymidnight](https://redirect.github.com/dannymidnight))

##### Changed

- Raise the minimum supported Go version from 1.25.0 to 1.26.10.
[#&#8203;290](https://redirect.github.com/buildkite/terminal-to-html/pull/290)
([@&#8203;wolfeidau](https://redirect.github.com/wolfeidau))

##### Dependency updates

- Update the development/CI Go Docker image from 1.26.4 to 1.26.10.
[#&#8203;281](https://redirect.github.com/buildkite/terminal-to-html/pull/281),
[#&#8203;290](https://redirect.github.com/buildkite/terminal-to-html/pull/290)
- Bump `golang.org/x/sys` from 0.46.0 to 0.47.0.
[#&#8203;280](https://redirect.github.com/buildkite/terminal-to-html/pull/280)
([@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot])

</details>

<details>
<summary>dlclark/regexp2 (github.com/dlclark/regexp2/v2)</summary>

###
[`v2.11.0`](https://redirect.github.com/dlclark/regexp2/compare/v2.10.1...v2.11.0)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.10.1...v2.11.0)

###
[`v2.10.1`](https://redirect.github.com/dlclark/regexp2/compare/v2.10.0...v2.10.1)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.10.0...v2.10.1)

###
[`v2.10.0`](https://redirect.github.com/dlclark/regexp2/compare/v2.9.1...v2.10.0)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.9.1...v2.10.0)

</details>

<details>
<summary>getkin/kin-openapi (github.com/getkin/kin-openapi)</summary>

###
[`v0.152.0`](https://redirect.github.com/getkin/kin-openapi/releases/tag/v0.152.0)

[Compare
Source](https://redirect.github.com/getkin/kin-openapi/compare/v0.151.0...v0.152.0)

#### What's Changed

- openapi2conv: push path-level body/formData parameters into operations
by [@&#8203;Yi-111-a](https://redirect.github.com/Yi-111-a) in
[#&#8203;1340](https://redirect.github.com/getkin/kin-openapi/pull/1340)
- fix(openapi3): resolve transitive component refs in JSON Schema
2020-12 validation by
[@&#8203;Yi-111-a](https://redirect.github.com/Yi-111-a) in
[#&#8203;1342](https://redirect.github.com/getkin/kin-openapi/pull/1342)
- openapi3: honor readOnly/writeOnly from allOf schemas in required
checks by [@&#8203;ybai08](https://redirect.github.com/ybai08) in
[#&#8203;1343](https://redirect.github.com/getkin/kin-openapi/pull/1343)
- openapi3: resolve $refs of Components.Links by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1344](https://redirect.github.com/getkin/kin-openapi/pull/1344)
- openapi3: marshal a schema's empty type list as absent rather than
null by [@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1345](https://redirect.github.com/getkin/kin-openapi/pull/1345)
- openapi3: drop the Header dump from its content/schema error by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1346](https://redirect.github.com/getkin/kin-openapi/pull/1346)
- openapi3gen: always propagate field tag by
[@&#8203;phooijenga](https://redirect.github.com/phooijenga) in
[#&#8203;1347](https://redirect.github.com/getkin/kin-openapi/pull/1347)
- routers/gorillamux: return an error instead of panicking when
registering routes by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1348](https://redirect.github.com/getkin/kin-openapi/pull/1348)
- openapi3: report $refs to null nodes as unresolved instead of
panicking by [@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1349](https://redirect.github.com/getkin/kin-openapi/pull/1349)
- openapi3: validate null servers, server variables, tags and components
without panicking by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1351](https://redirect.github.com/getkin/kin-openapi/pull/1351)
- openapi2conv: fix FromV3Parameter panics on binary schema refs and
value-less schemas by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1352](https://redirect.github.com/getkin/kin-openapi/pull/1352)
- openapi3filter: parse integer values as base 10 by
[@&#8203;LuisFigueroaG](https://redirect.github.com/LuisFigueroaG) in
[#&#8203;1353](https://redirect.github.com/getkin/kin-openapi/pull/1353)
- openapi3filter: decode spaceDelimited and pipeDelimited query objects
by [@&#8203;ybai08](https://redirect.github.com/ybai08) in
[#&#8203;1350](https://redirect.github.com/getkin/kin-openapi/pull/1350)
- Case-sensitive usmarshalling with json/v2 by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1355](https://redirect.github.com/getkin/kin-openapi/pull/1355)
- openapi3filter: decode deepObject and non-exploded form object
properties of urlencoded bodies by
[@&#8203;ybai08](https://redirect.github.com/ybai08) in
[#&#8203;1354](https://redirect.github.com/getkin/kin-openapi/pull/1354)
- openapi3: keep $ref siblings on a schema reached through a cycle by
[@&#8203;Yi-111-a](https://redirect.github.com/Yi-111-a) in
[#&#8203;1357](https://redirect.github.com/getkin/kin-openapi/pull/1357)
- tests: go around encoding/json/v2's randomness in error message by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1361](https://redirect.github.com/getkin/kin-openapi/pull/1361)
- tests: remove actual network calls from tests by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1362](https://redirect.github.com/getkin/kin-openapi/pull/1362)
- tests: run more in parallel by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1363](https://redirect.github.com/getkin/kin-openapi/pull/1363)
- openapi3: ignore reference siblings in OpenAPI 3.0 by
[@&#8203;lucky798213](https://redirect.github.com/lucky798213) in
[#&#8203;1268](https://redirect.github.com/getkin/kin-openapi/pull/1268)
- openapi3: WalkSchemas and WalkParameters stop on a callback cycle by
[@&#8203;reuvenharrison](https://redirect.github.com/reuvenharrison) in
[#&#8203;1364](https://redirect.github.com/getkin/kin-openapi/pull/1364)
- openapi3filter: validate response headers described with content by
[@&#8203;LuisFigueroaG](https://redirect.github.com/LuisFigueroaG) in
[#&#8203;1358](https://redirect.github.com/getkin/kin-openapi/pull/1358)
- openapi3filter: honor ExcludeRequestQueryParams for path item
parameters by
[@&#8203;LuisFigueroaG](https://redirect.github.com/LuisFigueroaG) in
[#&#8203;1365](https://redirect.github.com/getkin/kin-openapi/pull/1365)
- openapi3: handle fields next to $ref as OpenAPI 3.0, 3.1 and 3.2
specify by [@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1371](https://redirect.github.com/getkin/kin-openapi/pull/1371)
- changelog: fixup rebased messes by
[@&#8203;fenollp](https://redirect.github.com/fenollp) in
[#&#8203;1372](https://redirect.github.com/getkin/kin-openapi/pull/1372)

#### New Contributors

- [@&#8203;ybai08](https://redirect.github.com/ybai08) made their first
contribution in
[#&#8203;1343](https://redirect.github.com/getkin/kin-openapi/pull/1343)
- [@&#8203;phooijenga](https://redirect.github.com/phooijenga) made
their first contribution in
[#&#8203;1347](https://redirect.github.com/getkin/kin-openapi/pull/1347)

**Full Changelog**:
<https://github.com/getkin/kin-openapi/compare/v0.151.0...v0.152.0>

</details>

<details>
<summary>go-co-op/gocron (github.com/go-co-op/gocron/v2)</summary>

###
[`v2.23.0`](https://redirect.github.com/go-co-op/gocron/releases/tag/v2.23.0)

[Compare
Source](https://redirect.github.com/go-co-op/gocron/compare/v2.22.0...v2.23.0)

#### What's Changed

- feat(scheduler): WithStartAtGrace opt-in tolerance for late first-run
dispatch by
[@&#8203;JohnRoesler](https://redirect.github.com/JohnRoesler) in
[#&#8203;945](https://redirect.github.com/go-co-op/gocron/pull/945)
- fix(executor,scheduler): use injected clock for job timing and guard
reschedule loop by
[@&#8203;JohnRoesler](https://redirect.github.com/JohnRoesler) in
[#&#8203;946](https://redirect.github.com/go-co-op/gocron/pull/946)
- fix(executor): attribute scheduling delay to the tick that actually
fired by [@&#8203;JohnRoesler](https://redirect.github.com/JohnRoesler)
in [#&#8203;948](https://redirect.github.com/go-co-op/gocron/pull/948)
- refactor(scheduler): extract shared first-run logic from
selectNewJob/selectStart by
[@&#8203;JohnRoesler](https://redirect.github.com/JohnRoesler) in
[#&#8203;947](https://redirect.github.com/go-co-op/gocron/pull/947)
- build(deps): bump actions/setup-go from 6 to 7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;949](https://redirect.github.com/go-co-op/gocron/pull/949)
- build(deps): bump actions/setup-python from 6 to 7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;950](https://redirect.github.com/go-co-op/gocron/pull/950)
- ci: updating golangci-lint to 2.13.1 to support go 1.27 by
[@&#8203;manuelarte](https://redirect.github.com/manuelarte) in
[#&#8203;954](https://redirect.github.com/go-co-op/gocron/pull/954)
- Exclude stable Go version in CI workflow by
[@&#8203;JohnRoesler](https://redirect.github.com/JohnRoesler) in
[#&#8203;968](https://redirect.github.com/go-co-op/gocron/pull/968)
- docs: removing retired go report badge by
[@&#8203;manuelarte](https://redirect.github.com/manuelarte) in
[#&#8203;952](https://redirect.github.com/go-co-op/gocron/pull/952)
- build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203

> [!IMPORTANT]
> ✂ PR body was truncated to here.


</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend Renovate
CLI](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzIuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

---------

Co-authored-by: silverwind <me@silverwind.io>
2026-11-02 19:30:55 +00:00

1264 lines
56 KiB
TypeScript

import comments from '@eslint-community/eslint-plugin-eslint-comments';
import globals from 'globals';
import importPlugin from 'eslint-plugin-import-x';
import playwright from 'eslint-plugin-playwright';
import regexp from 'eslint-plugin-regexp';
import stylistic from '@stylistic/eslint-plugin';
import typescriptParser from '@typescript-eslint/parser';
import typescriptPlugin from 'typescript-eslint';
import unicorn from 'eslint-plugin-unicorn';
import vitest from '@vitest/eslint-plugin';
import vue from 'eslint-plugin-vue';
import vueScopedCss from 'eslint-plugin-vue-scoped-css';
import wc from 'eslint-plugin-wc';
import {defineConfig, globalIgnores} from 'eslint/config';
import unescapedHtmlLiteral from './tools/eslint-rules/unescaped-html-literal.ts';
const jsExts = ['js', 'mjs', 'cjs'] as const;
const tsExts = ['ts', 'mts', 'cts'] as const;
const vueExts = ['vue'] as const;
const restrictedGlobals = [
{name: 'localStorage', message: 'Use `modules/user-settings.ts` instead.'},
{name: 'fetch', message: 'Use `modules/fetch.ts` instead.'},
];
const restrictedProperties = [
{object: 'window', property: 'localStorage', message: 'Use `modules/user-settings.ts` instead.'},
{object: 'globalThis', property: 'localStorage', message: 'Use `modules/user-settings.ts` instead.'},
{object: 'window', property: 'fetch', message: 'Use `modules/fetch.ts` instead.'},
{object: 'globalThis', property: 'fetch', message: 'Use `modules/fetch.ts` instead.'},
];
export default defineConfig([
globalIgnores([
'web_src/fomantic',
'public/assets/js',
]),
{
files: [`**/*.{${[...jsExts, ...tsExts, ...vueExts].join(',')}}`],
ignores: ['dist/*'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: typescriptParser,
parserOptions: {
sourceType: 'module',
ecmaVersion: 'latest',
ecmaFeatures: {
impliedStrict: true,
},
parser: typescriptParser,
project: true,
extraFileExtensions: vueExts.map((ext) => `.${ext}`),
},
},
linterOptions: {
reportUnusedDisableDirectives: 2,
reportUnusedInlineConfigs: 2,
},
plugins: {
'@eslint-community/eslint-comments': comments,
'@stylistic': stylistic,
'@typescript-eslint': typescriptPlugin.plugin,
'gitea': {rules: {'unescaped-html-literal': unescapedHtmlLiteral}},
'import-x': importPlugin,
regexp,
unicorn,
wc,
},
settings: {
'import-x/extensions': [...jsExts, ...tsExts, ...vueExts].map((ext) => `.${ext}`),
'import-x/parsers': {
'@typescript-eslint/parser': [...jsExts, ...tsExts].map((ext) => `.${ext}`),
'vue-eslint-parser': vueExts.map((ext) => `.${ext}`),
},
'import-x/resolver': {'typescript': true},
},
rules: {
'@eslint-community/eslint-comments/disable-enable-pair': [2, {allowWholeFile: true}],
'@eslint-community/eslint-comments/no-aggregating-enable': [2],
'@eslint-community/eslint-comments/no-duplicate-disable': [2],
'@eslint-community/eslint-comments/no-restricted-disable': [0],
'@eslint-community/eslint-comments/no-unlimited-disable': [2],
'@eslint-community/eslint-comments/no-unused-enable': [2],
'@eslint-community/eslint-comments/no-use': [0],
'@eslint-community/eslint-comments/require-description': [2, {ignore: ['eslint', 'eslint-enable', 'eslint-env', 'exported', 'global', 'globals']}],
'@stylistic/array-bracket-newline': [0],
'@stylistic/array-bracket-spacing': [2, 'never'],
'@stylistic/array-element-newline': [0],
'@stylistic/arrow-parens': [2, 'always'],
'@stylistic/arrow-spacing': [2, {before: true, after: true}],
'@stylistic/block-spacing': [0],
'@stylistic/brace-style': [2, '1tbs', {allowSingleLine: true}],
'@stylistic/comma-dangle': [2, 'always-multiline'],
'@stylistic/comma-spacing': [2, {before: false, after: true}],
'@stylistic/comma-style': [2, 'last'],
'@stylistic/computed-property-spacing': [2, 'never'],
'@stylistic/curly-newline': [0],
'@stylistic/dot-location': [2, 'property'],
'@stylistic/eol-last': [2],
'@stylistic/exp-list-style': [0],
'@stylistic/function-call-argument-newline': [0],
'@stylistic/function-call-spacing': [2, 'never'],
'@stylistic/function-paren-newline': [0],
'@stylistic/generator-star-spacing': [0],
'@stylistic/implicit-arrow-linebreak': [0],
'@stylistic/indent': [2, 2, {ignoreComments: true, SwitchCase: 1}],
'@stylistic/indent-binary-ops': [0],
'@stylistic/key-spacing': [2],
'@stylistic/keyword-spacing': [2],
'@stylistic/line-comment-position': [0],
'@stylistic/linebreak-style': [2, 'unix'],
'@stylistic/lines-around-comment': [0],
'@stylistic/lines-between-class-members': [0],
'@stylistic/max-len': [0],
'@stylistic/max-statements-per-line': [0],
'@stylistic/member-delimiter-style': [0],
'@stylistic/multiline-comment-style': [0],
'@stylistic/multiline-ternary': [0],
'@stylistic/new-parens': [2],
'@stylistic/newline-per-chained-call': [0],
'@stylistic/no-confusing-arrow': [0],
'@stylistic/no-extra-parens': [0],
'@stylistic/no-extra-semi': [2],
'@stylistic/no-floating-decimal': [0],
'@stylistic/no-mixed-operators': [0],
'@stylistic/no-mixed-spaces-and-tabs': [2],
'@stylistic/no-multi-spaces': [2, {ignoreEOLComments: true, exceptions: {Property: true}}],
'@stylistic/no-multiple-empty-lines': [2, {max: 1, maxEOF: 0, maxBOF: 0}],
'@stylistic/no-tabs': [2],
'@stylistic/no-trailing-spaces': [2],
'@stylistic/no-whitespace-before-property': [2],
'@stylistic/nonblock-statement-body-position': [2],
'@stylistic/object-curly-newline': [0],
'@stylistic/object-curly-spacing': [2, 'never'],
'@stylistic/object-property-newline': [0],
'@stylistic/one-var-declaration-per-line': [0],
'@stylistic/operator-linebreak': [2, 'after'],
'@stylistic/padded-blocks': [2, 'never'],
'@stylistic/padding-line-between-statements': [0],
'@stylistic/quote-props': [0],
'@stylistic/quotes': [2, 'single', {avoidEscape: true, allowTemplateLiterals: 'always'}],
'@stylistic/rest-spread-spacing': [2, 'never'],
'@stylistic/semi': [2, 'always', {omitLastInOneLineBlock: true}],
'@stylistic/semi-spacing': [2, {before: false, after: true}],
'@stylistic/semi-style': [2, 'last'],
'@stylistic/space-before-blocks': [2, 'always'],
'@stylistic/space-before-function-paren': [2, {anonymous: 'ignore', named: 'never', asyncArrow: 'always'}],
'@stylistic/space-in-parens': [2, 'never'],
'@stylistic/space-infix-ops': [2],
'@stylistic/space-unary-ops': [2],
'@stylistic/spaced-comment': [2, 'always'],
'@stylistic/switch-colon-spacing': [2],
'@stylistic/template-curly-spacing': [2, 'never'],
'@stylistic/template-tag-spacing': [2, 'never'],
'@stylistic/type-annotation-spacing': [0],
'@stylistic/type-generic-spacing': [0],
'@stylistic/type-named-tuple-spacing': [0],
'@stylistic/wrap-iife': [2, 'inside'],
'@stylistic/wrap-regex': [0],
'@stylistic/yield-star-spacing': [2, 'after'],
'@typescript-eslint/adjacent-overload-signatures': [0],
'@typescript-eslint/array-type': [0],
'@typescript-eslint/await-thenable': [2],
'@typescript-eslint/ban-ts-comment': [2, {'ts-expect-error': true, 'ts-ignore': true, 'ts-nocheck': false, 'ts-check': false}],
'@typescript-eslint/ban-tslint-comment': [0],
'@typescript-eslint/class-literal-property-style': [0],
'@typescript-eslint/class-methods-use-this': [0],
'@typescript-eslint/consistent-generic-constructors': [2, 'constructor'],
'@typescript-eslint/consistent-indexed-object-style': [0],
'@typescript-eslint/consistent-return': [0],
'@typescript-eslint/consistent-type-assertions': [2, {assertionStyle: 'as', objectLiteralTypeAssertions: 'allow'}],
'@typescript-eslint/consistent-type-definitions': [2, 'type'],
'@typescript-eslint/consistent-type-exports': [2, {fixMixedExportsWithInlineTypeSpecifier: false}],
'@typescript-eslint/consistent-type-imports': [2, {prefer: 'type-imports', fixStyle: 'separate-type-imports', disallowTypeAnnotations: true}],
'@typescript-eslint/default-param-last': [0],
'@typescript-eslint/dot-notation': [0],
'@typescript-eslint/explicit-function-return-type': [0],
'@typescript-eslint/explicit-member-accessibility': [0],
'@typescript-eslint/explicit-module-boundary-types': [0],
'@typescript-eslint/init-declarations': [0],
'@typescript-eslint/max-params': [0],
'@typescript-eslint/member-ordering': [0],
'@typescript-eslint/method-signature-style': [0],
'@typescript-eslint/naming-convention': [0],
'@typescript-eslint/no-array-constructor': [2],
'@typescript-eslint/no-array-delete': [2],
'@typescript-eslint/no-base-to-string': [2],
'@typescript-eslint/no-confusing-non-null-assertion': [2],
'@typescript-eslint/no-confusing-void-expression': [0],
'@typescript-eslint/no-deprecated': [2],
'@typescript-eslint/no-dupe-class-members': [0],
'@typescript-eslint/no-duplicate-enum-values': [2],
'@typescript-eslint/no-duplicate-type-constituents': [2, {ignoreUnions: true}],
'@typescript-eslint/no-dynamic-delete': [0],
'@typescript-eslint/no-empty-function': [0],
'@typescript-eslint/no-empty-object-type': [2],
'@typescript-eslint/no-explicit-any': [0],
'@typescript-eslint/no-extra-non-null-assertion': [2],
'@typescript-eslint/no-extraneous-class': [0],
'@typescript-eslint/no-floating-promises': [0],
'@typescript-eslint/no-for-in-array': [2],
'@typescript-eslint/no-generated-empty-object-type': [2],
'@typescript-eslint/no-implied-eval': [2],
'@typescript-eslint/no-import-type-side-effects': [0], // dupe with consistent-type-imports
'@typescript-eslint/no-inferrable-types': [0],
'@typescript-eslint/no-invalid-this': [0],
'@typescript-eslint/no-invalid-void-type': [0],
'@typescript-eslint/no-loop-func': [0],
'@typescript-eslint/no-magic-numbers': [0],
'@typescript-eslint/no-meaningless-void-operator': [0],
'@typescript-eslint/no-misused-new': [2],
'@typescript-eslint/no-misused-promises': [2, {checksVoidReturn: {attributes: false, arguments: false}}],
'@typescript-eslint/no-misused-spread': [2],
'@typescript-eslint/no-mixed-enums': [0],
'@typescript-eslint/no-namespace': [2],
'@typescript-eslint/no-non-null-asserted-nullish-coalescing': [2],
'@typescript-eslint/no-non-null-asserted-optional-chain': [2],
'@typescript-eslint/no-non-null-assertion': [0],
'@typescript-eslint/no-redeclare': [2],
'@typescript-eslint/no-redundant-type-constituents': [2],
'@typescript-eslint/no-require-imports': [2],
'@typescript-eslint/no-restricted-imports': [0],
'@typescript-eslint/no-restricted-types': [0],
'@typescript-eslint/no-shadow': [0],
'@typescript-eslint/no-this-alias': [0], // handled by unicorn/no-this-assignment
'@typescript-eslint/no-unnecessary-boolean-literal-compare': [0],
'@typescript-eslint/no-unnecessary-condition': [0],
'@typescript-eslint/no-unnecessary-parameter-property-assignment': [2],
'@typescript-eslint/no-unnecessary-qualifier': [0],
'@typescript-eslint/no-unnecessary-template-expression': [0],
'@typescript-eslint/no-unnecessary-type-arguments': [2],
'@typescript-eslint/no-unnecessary-type-assertion': [2],
'@typescript-eslint/no-unnecessary-type-constraint': [2],
'@typescript-eslint/no-unnecessary-type-conversion': [2],
'@typescript-eslint/no-unnecessary-type-parameters': [0],
'@typescript-eslint/no-unsafe-argument': [0],
'@typescript-eslint/no-unsafe-assignment': [0],
'@typescript-eslint/no-unsafe-call': [0],
'@typescript-eslint/no-unsafe-declaration-merging': [2],
'@typescript-eslint/no-unsafe-enum-assignment': [0],
'@typescript-eslint/no-unsafe-enum-comparison': [0],
'@typescript-eslint/no-unsafe-function-type': [2],
'@typescript-eslint/no-unsafe-member-access': [0],
'@typescript-eslint/no-unsafe-return': [0],
'@typescript-eslint/no-unsafe-type-assertion': [0],
'@typescript-eslint/no-unsafe-unary-minus': [2],
'@typescript-eslint/no-unused-expressions': [2],
'@typescript-eslint/no-unused-private-class-members': [2],
'@typescript-eslint/no-unused-vars': [2, {vars: 'all', args: 'all', caughtErrors: 'all', ignoreRestSiblings: false, argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_'}],
'@typescript-eslint/no-use-before-define': [2, {functions: false, classes: true, variables: true, allowNamedExports: true, typedefs: false, enums: false, ignoreTypeReferences: true}],
'@typescript-eslint/no-useless-constructor': [0],
'@typescript-eslint/no-useless-default-assignment': [2],
'@typescript-eslint/no-useless-empty-export': [0],
'@typescript-eslint/no-wrapper-object-types': [2],
'@typescript-eslint/non-nullable-type-assertion-style': [0],
'@typescript-eslint/only-throw-error': [2],
'@typescript-eslint/parameter-properties': [0],
'@typescript-eslint/prefer-as-const': [2],
'@typescript-eslint/prefer-destructuring': [0],
'@typescript-eslint/prefer-enum-initializers': [0],
'@typescript-eslint/prefer-find': [2],
'@typescript-eslint/prefer-for-of': [2],
'@typescript-eslint/prefer-function-type': [2],
'@typescript-eslint/prefer-includes': [2],
'@typescript-eslint/prefer-literal-enum-member': [0],
'@typescript-eslint/prefer-namespace-keyword': [0], // handled by @typescript-eslint/no-namespace
'@typescript-eslint/prefer-nullish-coalescing': [0],
'@typescript-eslint/prefer-optional-chain': [2, {requireNullish: true}],
'@typescript-eslint/prefer-promise-reject-errors': [2],
'@typescript-eslint/prefer-readonly': [0],
'@typescript-eslint/prefer-readonly-parameter-types': [0],
'@typescript-eslint/prefer-reduce-type-parameter': [0],
'@typescript-eslint/prefer-regexp-exec': [0],
'@typescript-eslint/prefer-return-this-type': [0],
'@typescript-eslint/prefer-string-starts-ends-with': [2, {allowSingleElementEquality: 'always'}],
'@typescript-eslint/promise-function-async': [0],
'@typescript-eslint/related-getter-setter-pairs': [2],
'@typescript-eslint/require-array-sort-compare': [2],
'@typescript-eslint/require-await': [2],
'@typescript-eslint/restrict-plus-operands': [2],
'@typescript-eslint/restrict-template-expressions': [2],
'@typescript-eslint/return-await': [2, 'error-handling-correctness-only'],
'@typescript-eslint/strict-boolean-expressions': [0],
'@typescript-eslint/strict-void-return': [0],
'@typescript-eslint/switch-exhaustiveness-check': [2],
'@typescript-eslint/triple-slash-reference': [2],
'@typescript-eslint/unbound-method': [0], // too many false-positives
'@typescript-eslint/unified-signatures': [2],
'@typescript-eslint/use-unknown-in-catch-callback-variable': [0],
'accessor-pairs': [2],
'array-callback-return': [2, {checkForEach: true}],
'arrow-body-style': [0],
'block-scoped-var': [2],
'camelcase': [0],
'capitalized-comments': [0],
'class-methods-use-this': [0],
'complexity': [0],
'consistent-return': [0],
'consistent-this': [0],
'constructor-super': [2],
'curly': [0],
'default-case-last': [2],
'default-case': [0],
'default-param-last': [0],
'dot-notation': [0],
'eqeqeq': [2],
'for-direction': [2],
'func-name-matching': [2],
'func-names': [0],
'func-style': [0],
'getter-return': [2],
'gitea/unescaped-html-literal': [2],
'grouped-accessor-pairs': [2],
'guard-for-in': [0],
'id-denylist': [0],
'id-length': [0],
'id-match': [0],
'import-x/consistent-type-specifier-style': [0],
'import-x/default': [0],
'import-x/dynamic-import-chunkname': [0],
'import-x/export': [2],
'import-x/exports-last': [0],
'import-x/extensions': [2, 'always', {ignorePackages: true}],
'import-x/first': [2],
'import-x/group-exports': [0],
'import-x/max-dependencies': [0],
'import-x/named': [0],
'import-x/namespace': [0],
'import-x/newline-after-import': [0],
'import-x/no-absolute-path': [2],
'import-x/no-amd': [2],
'import-x/no-anonymous-default-export': [0],
'import-x/no-commonjs': [2],
'import-x/no-cycle': [2, {ignoreExternal: true, maxDepth: 1}],
'import-x/no-default-export': [0],
'import-x/no-deprecated': [0],
'import-x/no-duplicates': [2],
'import-x/no-dynamic-require': [0],
'import-x/no-empty-named-blocks': [2],
'import-x/no-extraneous-dependencies': [2],
'import-x/no-import-module-exports': [0],
'import-x/no-internal-modules': [0],
'import-x/no-mutable-exports': [0],
'import-x/no-named-as-default-member': [0],
'import-x/no-named-as-default': [0],
'import-x/no-named-default': [0],
'import-x/no-named-export': [0],
'import-x/no-namespace': [0],
'import-x/no-nodejs-modules': [0],
'import-x/no-relative-packages': [0],
'import-x/no-relative-parent-imports': [0],
'import-x/no-rename-default': [0],
'import-x/no-restricted-paths': [0],
'import-x/no-self-import': [2],
'import-x/no-unassigned-import': [0],
'import-x/no-unresolved': [2, {commonjs: true, ignore: ['\\?.+$']}],
'import-x/no-unused-modules': [0], // incompatible with eslint 9
'import-x/no-useless-path-segments': [2, {commonjs: true}],
'import-x/no-webpack-loader-syntax': [2],
'import-x/order': [0],
'import-x/prefer-default-export': [0],
'import-x/prefer-namespace-import': [0],
'import-x/unambiguous': [0],
'init-declarations': [0],
'logical-assignment-operators': [0],
'max-classes-per-file': [0],
'max-depth': [0],
'max-lines-per-function': [0],
'max-lines': [0],
'max-nested-callbacks': [0],
'max-params': [0],
'max-statements': [0],
'new-cap': [0],
'no-alert': [0],
'no-array-constructor': [0], // handled by @typescript-eslint/no-array-constructor
'no-async-promise-executor': [0],
'no-await-in-loop': [0],
'no-bitwise': [0],
'no-caller': [2],
'no-case-declarations': [2],
'no-class-assign': [2],
'no-compare-neg-zero': [2],
'no-cond-assign': [2, 'except-parens'],
'no-console': [1, {allow: ['debug', 'info', 'warn', 'error']}],
'no-const-assign': [2],
'no-constant-binary-expression': [2],
'no-constant-condition': [2],
'no-constructor-return': [2],
'no-continue': [0],
'no-control-regex': [0],
'no-debugger': [1],
'no-delete-var': [2],
'no-div-regex': [0],
'no-dupe-args': [2],
'no-dupe-class-members': [2],
'no-dupe-else-if': [2],
'no-dupe-keys': [2],
'no-duplicate-case': [2],
'no-duplicate-imports': [0],
'no-else-return': [2],
'no-empty-character-class': [2],
'no-empty-function': [0],
'no-empty-pattern': [2],
'no-empty-static-block': [2],
'no-empty': [2, {allowEmptyCatch: true}],
'no-eq-null': [2],
'no-eval': [2],
'no-ex-assign': [2],
'no-extend-native': [2],
'no-extra-bind': [2],
'no-extra-boolean-cast': [2],
'no-extra-label': [0],
'no-fallthrough': [2],
'no-func-assign': [2],
'no-global-assign': [2],
'no-implicit-coercion': [2],
'no-implicit-globals': [0],
'no-implied-eval': [0], // handled by @typescript-eslint/no-implied-eval
'no-import-assign': [2],
'no-inline-comments': [0],
'no-inner-declarations': [2],
'no-invalid-regexp': [0], // handled by regexp/no-invalid-regexp
'no-invalid-this': [0],
'no-irregular-whitespace': [2],
'no-iterator': [2],
// 'no-jquery/no-ajax-events': [2],
// 'no-jquery/no-ajax': [2],
// 'no-jquery/no-and-self': [2],
// 'no-jquery/no-animate-toggle': [2],
// 'no-jquery/no-animate': [2],
// 'no-jquery/no-append-html': [2],
// 'no-jquery/no-attr': [2],
// 'no-jquery/no-bind': [2],
// 'no-jquery/no-box-model': [2],
// 'no-jquery/no-browser': [2],
// 'no-jquery/no-camel-case': [2],
// 'no-jquery/no-class-state': [2],
// 'no-jquery/no-class': [0],
// 'no-jquery/no-clone': [2],
// 'no-jquery/no-closest': [0],
// 'no-jquery/no-constructor-attributes': [2],
// 'no-jquery/no-contains': [2],
// 'no-jquery/no-context-prop': [2],
// 'no-jquery/no-css': [2],
// 'no-jquery/no-data': [0],
// 'no-jquery/no-deferred': [2],
// 'no-jquery/no-delegate': [2],
// 'no-jquery/no-done-fail': [2],
// 'no-jquery/no-each-collection': [0],
// 'no-jquery/no-each-util': [0],
// 'no-jquery/no-each': [0],
// 'no-jquery/no-error-shorthand': [2],
// 'no-jquery/no-error': [2],
// 'no-jquery/no-escape-selector': [2],
// 'no-jquery/no-event-shorthand': [2],
// 'no-jquery/no-extend': [2],
// 'no-jquery/no-fade': [2],
// 'no-jquery/no-filter': [0],
// 'no-jquery/no-find-collection': [0],
// 'no-jquery/no-find-util': [2],
// 'no-jquery/no-find': [0],
// 'no-jquery/no-fx-interval': [2],
// 'no-jquery/no-fx': [2],
// 'no-jquery/no-global-eval': [2],
// 'no-jquery/no-global-selector': [0],
// 'no-jquery/no-grep': [2],
// 'no-jquery/no-has': [2],
// 'no-jquery/no-hold-ready': [2],
// 'no-jquery/no-html': [0],
// 'no-jquery/no-in-array': [2],
// 'no-jquery/no-is-array': [2],
// 'no-jquery/no-is-empty-object': [2],
// 'no-jquery/no-is-function': [2],
// 'no-jquery/no-is-numeric': [2],
// 'no-jquery/no-is-plain-object': [2],
// 'no-jquery/no-is-window': [2],
// 'no-jquery/no-is': [2],
// 'no-jquery/no-jquery-constructor': [0],
// 'no-jquery/no-live': [2],
// 'no-jquery/no-load-shorthand': [2],
// 'no-jquery/no-load': [2],
// 'no-jquery/no-map-collection': [0],
// 'no-jquery/no-map-util': [2],
// 'no-jquery/no-map': [2],
// 'no-jquery/no-merge': [2],
// 'no-jquery/no-node-name': [2],
// 'no-jquery/no-noop': [2],
// 'no-jquery/no-now': [2],
// 'no-jquery/no-on-ready': [2],
// 'no-jquery/no-other-methods': [0],
// 'no-jquery/no-other-utils': [2],
// 'no-jquery/no-param': [2],
// 'no-jquery/no-parent': [0],
// 'no-jquery/no-parents': [2],
// 'no-jquery/no-parse-html-literal': [2],
// 'no-jquery/no-parse-html': [2],
// 'no-jquery/no-parse-json': [2],
// 'no-jquery/no-parse-xml': [2],
// 'no-jquery/no-prop': [2],
// 'no-jquery/no-proxy': [2],
// 'no-jquery/no-ready-shorthand': [2],
// 'no-jquery/no-ready': [2],
// 'no-jquery/no-selector-prop': [2],
// 'no-jquery/no-serialize': [2],
// 'no-jquery/no-size': [2],
// 'no-jquery/no-sizzle': [2],
// 'no-jquery/no-slide': [2],
// 'no-jquery/no-sub': [2],
// 'no-jquery/no-support': [2],
// 'no-jquery/no-text': [2],
// 'no-jquery/no-trigger': [0],
// 'no-jquery/no-trim': [2],
// 'no-jquery/no-type': [2],
// 'no-jquery/no-unique': [2],
// 'no-jquery/no-unload-shorthand': [2],
// 'no-jquery/no-val': [0],
// 'no-jquery/no-visibility': [2],
// 'no-jquery/no-when': [2],
// 'no-jquery/no-wrap': [2],
// 'no-jquery/variable-pattern': [2],
'no-label-var': [2],
'no-labels': [0], // handled by no-restricted-syntax
'no-lone-blocks': [2],
'no-lonely-if': [0],
'no-loop-func': [0],
'no-loss-of-precision': [2],
'no-magic-numbers': [0],
'no-misleading-character-class': [2],
'no-multi-assign': [0],
'no-multi-str': [2],
'no-negated-condition': [0],
'no-nested-ternary': [0],
'no-new-func': [0], // handled by @typescript-eslint/no-implied-eval
'no-new-native-nonconstructor': [2],
'no-new-wrappers': [2],
'no-new': [0],
'no-nonoctal-decimal-escape': [2],
'no-obj-calls': [2],
'no-object-constructor': [2],
'no-octal-escape': [0], // parse error under strict mode
'no-octal': [0], // parse error under strict mode
'no-param-reassign': [0],
'no-plusplus': [0],
'no-promise-executor-return': [0],
'no-proto': [2],
'no-prototype-builtins': [2],
'no-redeclare': [0], // must be disabled for typescript overloads
'no-regex-spaces': [2],
'no-restricted-exports': [0],
'no-restricted-globals': [2, 'self'],
'no-restricted-imports': [2, {paths: [
{name: 'jquery', message: 'Use the global $ instead', allowTypeImports: true},
]}],
'no-restricted-syntax': [2, 'WithStatement', 'ForInStatement', 'LabeledStatement', 'SequenceExpression'],
'no-return-assign': [0],
'no-script-url': [2],
'no-self-assign': [2, {props: true}],
'no-self-compare': [2],
'no-sequences': [2],
'no-setter-return': [2],
'no-shadow-restricted-names': [2],
'no-shadow': [0],
'no-sparse-arrays': [2],
'no-template-curly-in-string': [2],
'no-ternary': [0],
'no-this-before-super': [2],
'no-throw-literal': [0], // handled by @typescript-eslint/only-throw-error
'no-undef-init': [2],
'no-undef': [2], // it is still needed by eslint & IDE to prompt undefined names in real time
'no-undefined': [0],
'no-unassigned-vars': [2],
'no-underscore-dangle': [0],
'no-unexpected-multiline': [2],
'no-unmodified-loop-condition': [2],
'no-unneeded-ternary': [2],
'no-unreachable-loop': [2],
'no-unreachable': [2],
'no-unsafe-finally': [2],
'no-unsafe-negation': [2],
'no-unsafe-optional-chaining': [2],
'no-unused-expressions': [0], // handled by @typescript-eslint/no-unused-expressions
'no-unused-labels': [2],
'no-unused-private-class-members': [0], // handled by @typescript-eslint/no-unused-private-class-members
'no-unused-vars': [0], // handled by @typescript-eslint/no-unused-vars
'no-use-before-define': [0], // handled by @typescript-eslint/no-use-before-define
'no-useless-assignment': [2],
'no-useless-backreference': [0], // handled by regexp/no-useless-backreference
'no-useless-call': [2],
'no-useless-catch': [2],
'no-useless-computed-key': [2],
'no-useless-concat': [0], // handled by unicorn/no-useless-concat
'no-useless-constructor': [2],
'no-useless-escape': [2],
'no-useless-rename': [2],
'no-useless-return': [2],
'no-var': [2],
'no-void': [2],
'no-warning-comments': [0],
'no-with': [0], // handled by no-restricted-syntax
'object-shorthand': [2, 'always'],
'one-var': [0],
'operator-assignment': [0], // handled by unicorn/operator-assignment
'prefer-arrow-callback': [2, {allowNamedFunctions: true, allowUnboundThis: true}],
'prefer-const': [2, {destructuring: 'all', ignoreReadBeforeAssign: true}],
'prefer-destructuring': [0],
'prefer-exponentiation-operator': [2],
'prefer-named-capture-group': [0],
'prefer-numeric-literals': [2],
'prefer-object-has-own': [2],
'prefer-object-spread': [2],
'prefer-promise-reject-errors': [0], // handled by @typescript-eslint/prefer-promise-reject-errors
'prefer-regex-literals': [2],
'prefer-rest-params': [2],
'prefer-spread': [2],
'prefer-template': [2],
'preserve-caught-error': [0],
'radix': [0],
'regexp/confusing-quantifier': [2],
'regexp/control-character-escape': [2],
'regexp/grapheme-string-literal': [0],
'regexp/hexadecimal-escape': [0],
'regexp/letter-case': [0],
'regexp/match-any': [2],
'regexp/negation': [2],
'regexp/no-contradiction-with-assertion': [2],
'regexp/no-control-character': [0],
'regexp/no-dupe-characters-character-class': [2],
'regexp/no-dupe-disjunctions': [2],
'regexp/no-empty-alternative': [2],
'regexp/no-empty-capturing-group': [2],
'regexp/no-empty-character-class': [0],
'regexp/no-empty-group': [2],
'regexp/no-empty-lookarounds-assertion': [2],
'regexp/no-empty-string-literal': [2],
'regexp/no-escape-backspace': [2],
'regexp/no-extra-lookaround-assertions': [0],
'regexp/no-invalid-regexp': [2],
'regexp/no-invisible-character': [2],
'regexp/no-lazy-ends': [2],
'regexp/no-legacy-features': [2],
'regexp/no-misleading-capturing-group': [2],
'regexp/no-misleading-unicode-character': [2],
'regexp/no-missing-g-flag': [2],
'regexp/no-non-standard-flag': [2],
'regexp/no-obscure-range': [2],
'regexp/no-octal': [2],
'regexp/no-optional-assertion': [2],
'regexp/no-potentially-useless-backreference': [2],
'regexp/no-standalone-backslash': [2],
'regexp/no-super-linear-backtracking': [0],
'regexp/no-super-linear-move': [0],
'regexp/no-trivially-nested-assertion': [2],
'regexp/no-trivially-nested-quantifier': [2],
'regexp/no-unused-capturing-group': [0],
'regexp/no-useless-assertions': [2],
'regexp/no-useless-backreference': [2],
'regexp/no-useless-character-class': [2],
'regexp/no-useless-dollar-replacements': [2],
'regexp/no-useless-escape': [2],
'regexp/no-useless-flag': [2],
'regexp/no-useless-lazy': [2],
'regexp/no-useless-non-capturing-group': [2],
'regexp/no-useless-quantifier': [2],
'regexp/no-useless-range': [2],
'regexp/no-useless-set-operand': [2],
'regexp/no-useless-string-literal': [2],
'regexp/no-useless-two-nums-quantifier': [2],
'regexp/no-zero-quantifier': [2],
'regexp/optimal-lookaround-quantifier': [2],
'regexp/optimal-quantifier-concatenation': [0],
'regexp/prefer-character-class': [0],
'regexp/prefer-d': [0],
'regexp/prefer-escape-replacement-dollar-char': [0],
'regexp/prefer-lookaround': [0],
'regexp/prefer-named-backreference': [0],
'regexp/prefer-named-capture-group': [0],
'regexp/prefer-named-replacement': [0],
'regexp/prefer-plus-quantifier': [2],
'regexp/prefer-predefined-assertion': [2],
'regexp/prefer-quantifier': [0],
'regexp/prefer-question-quantifier': [2],
'regexp/prefer-range': [2],
'regexp/prefer-regexp-exec': [2],
'regexp/prefer-regexp-test': [0], // handled by unicorn/prefer-regexp-test
'regexp/prefer-result-array-groups': [0],
'regexp/prefer-set-operation': [2],
'regexp/prefer-star-quantifier': [2],
'regexp/prefer-unicode-codepoint-escapes': [2],
'regexp/prefer-w': [0],
'regexp/require-unicode-regexp': [0],
'regexp/require-unicode-sets-regexp': [0],
'regexp/simplify-set-operations': [2],
'regexp/sort-alternatives': [0],
'regexp/sort-character-class-elements': [0],
'regexp/sort-flags': [0],
'regexp/strict': [2],
'regexp/unicode-escape': [0],
'regexp/unicode-property': [0],
'regexp/use-ignore-case': [0],
'require-atomic-updates': [0],
'require-await': [0], // handled by @typescript-eslint/require-await
'require-unicode-regexp': [0],
'require-yield': [2],
'sort-imports': [0],
'sort-keys': [0],
'sort-vars': [0],
'strict': [0],
'symbol-description': [2],
'unicode-bom': [2, 'never'],
'unicorn/better-dom-traversing': [2],
'unicorn/catch-error-name': [0],
'unicorn/class-reference-in-static-methods': [2],
'unicorn/comma-spacing': [0], // only applies to json language
'unicorn/comment-content': [0],
'unicorn/consistent-arrow-return-style': [0],
'unicorn/consistent-assert': [0],
'unicorn/consistent-boolean-name': [0],
'unicorn/consistent-class-member-order': [0],
'unicorn/consistent-compound-words': [0], // too opinionated
'unicorn/consistent-conditional-object-spread': [2],
'unicorn/consistent-date-clone': [2],
'unicorn/consistent-destructuring': [2],
'unicorn/consistent-empty-array-spread': [2],
'unicorn/consistent-existence-index-check': [0],
'unicorn/consistent-export-decorator-position': [2],
'unicorn/consistent-function-scoping': [0],
'unicorn/consistent-function-style': [2],
'unicorn/consistent-json-file-read': [2],
'unicorn/consistent-optional-chaining': [2],
'unicorn/consistent-template-literal-escape': [2],
'unicorn/consistent-tuple-labels': [2],
'unicorn/custom-error-definition': [0],
'unicorn/default-export-style': [2],
'unicorn/dom-node-dataset': [2, {preferAttributes: true}],
'unicorn/empty-brace-spaces': [2],
'unicorn/error-message': [0],
'unicorn/escape-case': [0],
'unicorn/expiring-todo-comments': [0],
'unicorn/explicit-length-check': [0],
'unicorn/explicit-timer-delay': [2],
'unicorn/filename-case': [0],
'unicorn/id-match': [2],
'unicorn/import-style': [0],
'unicorn/indent': [0], // only applies to json and css languages
'unicorn/isolated-functions': [2, {functions: []}],
'unicorn/iteration-fallback-style': [2, 'fallback'],
'unicorn/key-name-casing': [0], // only applies to json, yaml and toml languages
'unicorn/logical-assignment-operators': [0],
'unicorn/max-nested-calls': [0],
'unicorn/name-replacements': [0],
'unicorn/new-for-builtins': [2],
'unicorn/no-abusive-eslint-disable': [0],
'unicorn/no-accessor-recursion': [2],
'unicorn/no-accidental-bitwise-operator': [2],
'unicorn/no-anonymous-default-export': [0],
'unicorn/no-array-callback-reference': [0],
'unicorn/no-array-concat-in-loop': [2],
'unicorn/no-array-fill-with-reference-type': [2],
'unicorn/no-array-from-fill': [2],
'unicorn/no-array-front-mutation': [0],
'unicorn/no-array-method-this-argument': [2],
'unicorn/no-array-reduce': [2],
'unicorn/no-array-reverse': [0],
'unicorn/no-array-sort': [0],
'unicorn/no-array-sort-for-min-max': [2],
'unicorn/no-array-splice': [0],
'unicorn/no-asterisk-prefix-in-documentation-comments': [0],
'unicorn/no-async-iterator-callback': [2],
'unicorn/no-async-promise-finally': [2],
'unicorn/no-await-expression-member': [0],
'unicorn/no-await-in-promise-methods': [2],
'unicorn/no-barrel-files': [0],
'unicorn/no-blob-to-file': [2],
'unicorn/no-boolean-sort-comparator': [2],
'unicorn/no-break-in-nested-loop': [0],
'unicorn/no-canvas-to-image': [2],
'unicorn/no-chained-comparison': [2],
'unicorn/no-collection-bracket-access': [2],
'unicorn/no-computed-property-existence-check': [0],
'unicorn/no-conflicting-constraints': [2],
'unicorn/no-confusing-array-splice': [2],
'unicorn/no-confusing-array-with': [2],
'unicorn/no-console-spaces': [0],
'unicorn/no-constant-zero-expression': [2],
'unicorn/no-declarations-before-early-exit': [0],
'unicorn/no-document-cookie': [2],
'unicorn/no-double-comparison': [2],
'unicorn/no-duplicate-if-branches': [2],
'unicorn/no-duplicate-logical-operands': [2],
'unicorn/no-duplicate-loops': [0],
'unicorn/no-duplicate-set-values': [2],
'unicorn/no-empty-file': [2],
'unicorn/no-empty-link-text': [0], // only applies to markdown language
'unicorn/no-error-property-assignment': [2],
'unicorn/no-exports-in-scripts': [2],
'unicorn/no-for-each': [2],
'unicorn/no-for-loop': [0],
'unicorn/no-global-object-property-assignment': [0],
'unicorn/no-immediate-mutation': [0],
'unicorn/no-impossible-length-comparison': [2],
'unicorn/no-incomplete-accessor-override': [2],
'unicorn/no-incorrect-query-selector': [2],
'unicorn/no-incorrect-template-string-interpolation': [0],
'unicorn/no-ineffective-csp-directives': [2],
'unicorn/no-instanceof-builtins': [2],
'unicorn/no-invalid-argument-count': [2],
'unicorn/no-invalid-boolean-attribute-value': [2],
'unicorn/no-invalid-character-comparison': [2],
'unicorn/no-invalid-dom-token': [2],
'unicorn/no-invalid-fetch-options': [2],
'unicorn/no-invalid-file-input-accept': [2],
'unicorn/no-invalid-integrity': [2],
'unicorn/no-invalid-intl-options': [2],
'unicorn/no-invalid-property-descriptor': [2],
'unicorn/no-invalid-remove-event-listener': [2],
'unicorn/no-invalid-response-options': [2],
'unicorn/no-invalid-style-set-property': [2],
'unicorn/no-invalid-temporal-arithmetic': [2],
'unicorn/no-invalid-url-protocol-comparison': [2],
'unicorn/no-invalid-well-known-symbol-methods': [2],
'unicorn/no-javascript-url': [0], // only applies to markdown language
'unicorn/no-keyword-prefix': [0],
'unicorn/no-late-current-target-access': [2],
'unicorn/no-late-event-control': [2],
'unicorn/no-leading-empty-lines': [0], // handled by @stylistic/no-multiple-empty-lines
'unicorn/no-lonely-if': [2],
'unicorn/no-loop-iterable-mutation': [2],
'unicorn/no-loss-of-precision': [0], // only applies to json, toml and css languages
'unicorn/no-magic-array-flat-depth': [0],
'unicorn/no-manually-wrapped-comments': [0], // too opinionated
'unicorn/no-mismatched-map-key': [2],
'unicorn/no-misrefactored-assignment': [2],
'unicorn/no-missing-local-resource': [0], // only applies to html/css/markdown languages
'unicorn/no-multiple-promise-resolver-calls': [2],
'unicorn/no-named-default': [2],
'unicorn/no-negated-array-predicate': [2],
'unicorn/no-negated-comparison': [2],
'unicorn/no-negated-condition': [0],
'unicorn/no-negation-in-equality-check': [2],
'unicorn/no-nested-ternary': [0],
'unicorn/no-new-array': [0],
'unicorn/no-new-buffer': [2],
'unicorn/no-non-function-verb-prefix': [0],
'unicorn/no-nonstandard-builtin-properties': [2],
'unicorn/no-null': [0],
'unicorn/no-object-as-default-parameter': [0],
'unicorn/no-object-methods-with-collections': [2],
'unicorn/no-optional-chaining-on-undeclared-variable': [2],
'unicorn/no-prevent-default-in-passive-listener': [2],
'unicorn/no-process-exit': [0],
'unicorn/no-redundant-comparison': [2],
'unicorn/no-repeated-call-wrappers': [0],
'unicorn/no-return-array-push': [2],
'unicorn/no-selector-as-dom-name': [2],
'unicorn/no-shorthand-property-overrides': [0], // only applies to css language
'unicorn/no-single-promise-in-promise-methods': [2],
'unicorn/no-static-only-class': [2],
'unicorn/no-subtraction-comparison': [2],
'unicorn/no-thenable': [2],
'unicorn/no-this-assignment': [2],
'unicorn/no-this-outside-of-class': [0], // gitea uses `this` in non-class functions
'unicorn/no-top-level-assignment-in-function': [0],
'unicorn/no-top-level-side-effects': [0],
'unicorn/no-transition-all': [2],
'unicorn/no-typeof-undefined': [2],
'unicorn/no-uncalled-method': [2],
'unicorn/no-undeclared-class-members': [2],
'unicorn/no-unnecessary-array-flat-depth': [2],
'unicorn/no-unnecessary-array-flat-map': [2],
'unicorn/no-unnecessary-array-splice-count': [2],
'unicorn/no-unnecessary-await': [2],
'unicorn/no-unnecessary-boolean-comparison': [2],
'unicorn/no-unnecessary-default-arguments': [0],
'unicorn/no-unnecessary-fetch-options': [0],
'unicorn/no-unnecessary-global-this': [0],
'unicorn/no-unnecessary-nested-ternary': [2],
'unicorn/no-unnecessary-parameters': [0],
'unicorn/no-unnecessary-polyfills': [2],
'unicorn/no-unnecessary-slice-end': [2],
'unicorn/no-unnecessary-splice': [2],
'unicorn/no-unnecessary-string-trim': [2],
'unicorn/no-unreadable-array-destructuring': [2],
'unicorn/no-unreadable-for-of-expression': [0],
'unicorn/no-unreadable-iife': [0],
'unicorn/no-unreadable-new-expression': [0],
'unicorn/no-unreadable-object-destructuring': [0],
'unicorn/no-unsafe-buffer-conversion': [2],
'unicorn/no-unsafe-dom-html': [0],
'unicorn/no-unsafe-json-serialization': [2],
'unicorn/no-unsafe-promise-all-settled-values': [2],
'unicorn/no-unsafe-property-key': [0],
'unicorn/no-unsafe-sqlite-interpolation': [2],
'unicorn/no-unsafe-string-replacement': [2],
'unicorn/no-unused-builtin-method-return': [2],
'unicorn/no-unused-iterator-helper': [2],
'unicorn/no-unused-properties': [2],
'unicorn/no-url-in-search-params': [2],
'unicorn/no-useless-boolean-cast': [2],
'unicorn/no-useless-coercion': [2],
'unicorn/no-useless-collection-argument': [2],
'unicorn/no-useless-compound-assignment': [2],
'unicorn/no-useless-concat': [2],
'unicorn/no-useless-continue': [2],
'unicorn/no-useless-delete-check': [2],
'unicorn/no-useless-else': [0],
'unicorn/no-useless-error-capture-stack-trace': [2],
'unicorn/no-useless-fallback-in-spread': [2],
'unicorn/no-useless-iterator-to-array': [2],
'unicorn/no-useless-length-check': [2],
'unicorn/no-useless-logical-operand': [2],
'unicorn/no-useless-override': [2],
'unicorn/no-useless-promise-resolve-reject': [2],
'unicorn/no-useless-re-export': [2],
'unicorn/no-useless-recursion': [0],
'unicorn/no-useless-set-construction': [2],
'unicorn/no-useless-spread': [2],
'unicorn/no-useless-switch-case': [2],
'unicorn/no-useless-template-literals': [2],
'unicorn/no-useless-undefined': [0],
'unicorn/no-using-resource-escape': [2],
'unicorn/no-xor-as-exponentiation': [2],
'unicorn/no-zero-fractions': [2],
'unicorn/number-literal-case': [0],
'unicorn/numeric-separators-style': [0],
'unicorn/operator-assignment': [2],
'unicorn/prefer-abort-signal-any': [2],
'unicorn/prefer-abort-signal-timeout': [2],
'unicorn/prefer-add-event-listener': [2],
'unicorn/prefer-add-event-listener-options': [2],
'unicorn/prefer-aggregate-error': [2],
'unicorn/prefer-array-find': [0], // handled by @typescript-eslint/prefer-find
'unicorn/prefer-array-flat': [2],
'unicorn/prefer-array-flat-map': [2],
'unicorn/prefer-array-from-async': [0], // Array.fromAsync requires ES2026
'unicorn/prefer-array-from-map': [2],
'unicorn/prefer-array-from-range': [2],
'unicorn/prefer-array-index-of': [2],
'unicorn/prefer-array-iterable-methods': [2],
'unicorn/prefer-array-last-methods': [0], // Array#findLast/findLastIndex requires ES2023
'unicorn/prefer-array-slice': [2],
'unicorn/prefer-array-some': [2],
'unicorn/prefer-at': [0],
'unicorn/prefer-await': [2],
'unicorn/prefer-bigint-literals': [2],
'unicorn/prefer-blob-reading-methods': [2],
'unicorn/prefer-block-statement-over-iife': [2],
'unicorn/prefer-boolean-return': [2],
'unicorn/prefer-class-fields': [2],
'unicorn/prefer-classlist-toggle': [2],
'unicorn/prefer-code-point': [0],
'unicorn/prefer-combined-guards': [0],
'unicorn/prefer-continue': [0],
'unicorn/prefer-date-now': [2],
'unicorn/prefer-default-parameters': [0],
'unicorn/prefer-direct-iteration': [2],
'unicorn/prefer-dispose': [0], // `using` requires ES2027
'unicorn/prefer-dom-node-append': [2],
'unicorn/prefer-dom-node-html-methods': [0],
'unicorn/prefer-dom-node-remove': [2],
'unicorn/prefer-dom-node-replace-children': [2],
'unicorn/prefer-dom-node-text-content': [2],
'unicorn/prefer-early-return': [0],
'unicorn/prefer-else-if': [2],
'unicorn/prefer-error-is-error': [0],
'unicorn/prefer-escaped-irregular-whitespace': [2],
'unicorn/prefer-event-target': [2],
'unicorn/prefer-export-from': [0],
'unicorn/prefer-flat-math-min-max': [2],
'unicorn/prefer-get-or-insert-computed': [0], // Map#getOrInsertComputed requires ES2026
'unicorn/prefer-global-number-constants': [2],
'unicorn/prefer-global-this': [0],
'unicorn/prefer-group-by': [0], // Object.groupBy/Map.groupBy requires ES2024
'unicorn/prefer-has-check': [2],
'unicorn/prefer-hoisting-branch-code': [2],
'unicorn/prefer-https': [0], // false-positives on namespace and schema URIs
'unicorn/prefer-identifier-import-export-specifiers': [2],
'unicorn/prefer-import-meta-properties': [2],
'unicorn/prefer-includes': [0], // handled by @typescript-eslint/prefer-includes
'unicorn/prefer-includes-over-repeated-comparisons': [0], // too opinionated
'unicorn/prefer-iterable-in-constructor': [2],
'unicorn/prefer-iterator-concat': [0], // too opinionated
'unicorn/prefer-iterator-helpers': [0],
'unicorn/prefer-iterator-to-array': [0], // Iterator#toArray requires ES2025
'unicorn/prefer-iterator-to-array-at-end': [2],
'unicorn/prefer-iterator-zip': [0],
'unicorn/prefer-json-import': [0],
'unicorn/prefer-keyboard-event-key': [2],
'unicorn/prefer-literal-ascii': [2],
'unicorn/prefer-location-assign': [2],
'unicorn/prefer-logical-operator-over-ternary': [0],
'unicorn/prefer-map-from-entries': [0],
'unicorn/prefer-math-abs': [2],
'unicorn/prefer-math-constants': [2],
'unicorn/prefer-math-min-max': [2],
'unicorn/prefer-math-trunc': [2],
'unicorn/prefer-minimal-ternary': [0],
'unicorn/prefer-modern-dom-apis': [0],
'unicorn/prefer-modern-math-apis': [2],
'unicorn/prefer-module': [2],
'unicorn/prefer-native-coercion-functions': [2],
'unicorn/prefer-negative-index': [2],
'unicorn/prefer-node-protocol': [2],
'unicorn/prefer-number-coercion': [0],
'unicorn/prefer-number-is-safe-integer': [0],
'unicorn/prefer-number-properties': [0],
'unicorn/prefer-object-define-properties': [2],
'unicorn/prefer-object-destructuring-defaults': [2],
'unicorn/prefer-object-from-entries': [2],
'unicorn/prefer-object-iterable-methods': [2],
'unicorn/prefer-observer-apis': [2],
'unicorn/prefer-optional-catch-binding': [2],
'unicorn/prefer-path2d': [2],
'unicorn/prefer-private-class-fields': [0],
'unicorn/prefer-promise-static-methods': [2],
'unicorn/prefer-promise-try': [0], // Promise.try requires ES2025
'unicorn/prefer-promise-with-resolvers': [0], // Promise.withResolvers requires ES2024
'unicorn/prefer-prototype-methods': [2],
'unicorn/prefer-query-selector': [2],
'unicorn/prefer-queue-microtask': [2],
'unicorn/prefer-reflect-apply': [0],
'unicorn/prefer-regexp-escape': [0],
'unicorn/prefer-regexp-test': [2],
'unicorn/prefer-response-static-json': [2],
'unicorn/prefer-scoped-selector': [0],
'unicorn/prefer-set-has': [0],
'unicorn/prefer-set-methods': [0],
'unicorn/prefer-set-size': [2],
'unicorn/prefer-short-arrow-method': [2],
'unicorn/prefer-short-escape-sequences': [2],
'unicorn/prefer-simple-condition-first': [0],
'unicorn/prefer-simple-sort-comparator': [2],
'unicorn/prefer-simplified-conditions': [2],
'unicorn/prefer-single-array-predicate': [2],
'unicorn/prefer-single-call': [2],
'unicorn/prefer-single-object-destructuring': [2],
'unicorn/prefer-single-replace': [2],
'unicorn/prefer-smaller-scope': [0],
'unicorn/prefer-split-limit': [0], // too opinionated
'unicorn/prefer-spread': [0],
'unicorn/prefer-string-match-all': [2],
'unicorn/prefer-string-pad-start-end': [2],
'unicorn/prefer-string-raw': [0],
'unicorn/prefer-string-repeat': [2],
'unicorn/prefer-string-replace-all': [0],
'unicorn/prefer-string-slice': [0],
'unicorn/prefer-string-starts-ends-with': [0], // handled by @typescript-eslint/prefer-string-starts-ends-with
'unicorn/prefer-string-trim-start-end': [2],
'unicorn/prefer-structured-clone': [2],
'unicorn/prefer-switch': [0],
'unicorn/prefer-temporal': [0],
'unicorn/prefer-temporal-conversion': [0], // Temporal requires ES2027
'unicorn/prefer-ternary': [0],
'unicorn/prefer-then-catch': [2],
'unicorn/prefer-toggle-attribute': [2],
'unicorn/prefer-top-level-await': [0],
'unicorn/prefer-type-error': [0],
'unicorn/prefer-type-literal-last': [0],
'unicorn/prefer-uint8array-base64': [0],
'unicorn/prefer-uint8array-hex': [0],
'unicorn/prefer-unary-minus': [2],
'unicorn/prefer-unicode-code-point-escapes': [0],
'unicorn/prefer-url-can-parse': [2],
'unicorn/prefer-url-href': [2],
'unicorn/prefer-url-search-parameters': [2],
'unicorn/prefer-while-loop-condition': [2],
'unicorn/relative-url-style': [2],
'unicorn/require-array-join-separator': [2],
'unicorn/require-array-sort-compare': [0],
'unicorn/require-css-escape': [2],
'unicorn/require-frontmatter-fields': [0], // only applies to markdown language
'unicorn/require-module-attributes': [2],
'unicorn/require-module-specifiers': [0],
'unicorn/require-number-to-fixed-digits-argument': [2],
'unicorn/require-passive-events': [2],
'unicorn/require-post-message-target-origin': [0],
'unicorn/require-proxy-trap-boolean-return': [2],
'unicorn/require-text-decoder-streaming': [2],
'unicorn/single-line-block-comment-style': [0],
'unicorn/string-content': [0],
'unicorn/switch-case-braces': [0],
'unicorn/switch-case-break-position': [2],
'unicorn/template-indent': [2],
'unicorn/text-encoding-identifier-case': [0],
'unicorn/throw-new-error': [2],
'unicorn/try-complexity': [0],
'use-isnan': [2],
'valid-typeof': [2, {requireStringLiterals: true}],
'vars-on-top': [0],
'wc/attach-shadow-constructor': [2],
'wc/define-tag-after-class-definition': [0],
'wc/expose-class-on-global': [0],
'wc/file-name-matches-element': [2],
'wc/guard-define-call': [0],
'wc/guard-super-call': [2],
'wc/max-elements-per-file': [0],
'wc/no-child-traversal-in-attributechangedcallback': [2],
'wc/no-child-traversal-in-connectedcallback': [2],
'wc/no-closed-shadow-root': [2],
'wc/no-constructor-attributes': [2],
'wc/no-constructor-params': [2],
'wc/no-constructor': [2],
'wc/no-customized-built-in-elements': [2],
'wc/no-exports-with-element': [0],
'wc/no-invalid-element-name': [2],
'wc/no-invalid-extends': [2],
'wc/no-method-prefixed-with-on': [2],
'wc/no-self-class': [2],
'wc/no-typos': [2],
'wc/require-listener-teardown': [2],
'wc/tag-name-matches-class': [2],
'yoda': [2, 'never'],
},
},
{
...playwright.configs['flat/recommended'],
files: ['tests/e2e/**/*.test.ts'],
languageOptions: {globals: {...globals.nodeBuiltin, ...globals.browser}},
rules: {
...playwright.configs['flat/recommended'].rules,
'playwright/expect-expect': [0],
},
},
{
files: vueExts.map((ext) => `**/*.${ext}`),
extends: [
vue.configs['flat/recommended'],
vueScopedCss.configs.recommended,
],
rules: {
'@typescript-eslint/no-redundant-type-constituents': [0], // types imported from .vue files resolve to any via typescript-eslint's *.vue shim
'vue/attributes-order': [0],
'vue/html-closing-bracket-spacing': [2, {startTag: 'never', endTag: 'never', selfClosingTag: 'never'}],
'vue/max-attributes-per-line': [0],
'vue/no-potential-component-option-typo': [2],
'vue/no-ref-object-reactivity-loss': [2],
'vue/no-undef-directives': [2],
'vue/no-undef-properties': [2],
'vue/singleline-html-element-content-newline': [0],
'vue/require-typed-ref': [2],
},
},
{
files: ['**/*.test.ts', 'web_src/js/vitest.setup.ts'],
ignores: ['tests/e2e/**'],
plugins: {vitest},
languageOptions: {globals: globals.vitest},
rules: {
'gitea/unescaped-html-literal': [0],
'unicorn/no-error-property-assignment': [0],
'vitest/consistent-each-for': [0],
'vitest/consistent-test-filename': [0],
'vitest/consistent-test-it': [0],
'vitest/consistent-vitest-vi': [0],
'vitest/expect-expect': [0],
'vitest/hoisted-apis-on-top': [2],
'vitest/max-expects': [0],
'vitest/max-nested-describe': [0],
'vitest/no-alias-methods': [0],
'vitest/no-commented-out-tests': [0],
'vitest/no-conditional-expect': [0],
'vitest/no-conditional-in-test': [0],
'vitest/no-conditional-tests': [0],
'vitest/no-disabled-tests': [0],
'vitest/no-duplicate-hooks': [0],
'vitest/no-focused-tests': [2],
'vitest/no-hooks': [0],
'vitest/no-identical-title': [2],
'vitest/no-import-node-test': [2],
'vitest/no-importing-vitest-globals': [2],
'vitest/no-interpolation-in-snapshots': [0],
'vitest/no-large-snapshots': [0],
'vitest/no-mocks-import': [0],
'vitest/no-restricted-matchers': [0],
'vitest/no-restricted-vi-methods': [0],
'vitest/no-standalone-expect': [2],
'vitest/no-test-prefixes': [0],
'vitest/no-test-return-statement': [0],
'vitest/no-unneeded-async-expect-function': [2],
'vitest/padding-around-after-all-blocks': [0],
'vitest/padding-around-after-each-blocks': [0],
'vitest/padding-around-all': [0],
'vitest/padding-around-before-all-blocks': [0],
'vitest/padding-around-before-each-blocks': [0],
'vitest/padding-around-describe-blocks': [0],
'vitest/padding-around-expect-groups': [0],
'vitest/padding-around-test-blocks': [0],
'vitest/prefer-called-exactly-once-with': [0],
'vitest/prefer-called-once': [0],
'vitest/prefer-called-times': [0],
'vitest/prefer-called-with': [0],
'vitest/prefer-comparison-matcher': [0],
'vitest/prefer-describe-function-title': [0],
'vitest/prefer-each': [0],
'vitest/prefer-equality-matcher': [0],
'vitest/prefer-expect-assertions': [0],
'vitest/prefer-expect-resolves': [0],
'vitest/prefer-expect-type-of': [0],
'vitest/prefer-hooks-in-order': [0],
'vitest/prefer-hooks-on-top': [2],
'vitest/prefer-import-in-mock': [0],
'vitest/prefer-importing-vitest-globals': [0],
'vitest/prefer-lowercase-title': [0],
'vitest/prefer-mock-promise-shorthand': [0],
'vitest/prefer-mock-return-shorthand': [0],
'vitest/prefer-snapshot-hint': [0],
'vitest/prefer-spy-on': [0],
'vitest/prefer-strict-boolean-matchers': [0],
'vitest/prefer-strict-equal': [0],
'vitest/prefer-to-be': [0],
'vitest/prefer-to-be-falsy': [0],
'vitest/prefer-to-be-object': [0],
'vitest/prefer-to-be-truthy': [0],
'vitest/prefer-to-contain': [0],
'vitest/prefer-to-have-been-called-times': [0],
'vitest/prefer-to-have-length': [0],
'vitest/prefer-todo': [0],
'vitest/prefer-vi-mocked': [0],
'vitest/require-awaited-expect-poll': [2],
'vitest/require-hook': [0],
'vitest/require-local-test-context-for-concurrent-snapshots': [2],
'vitest/require-mock-type-parameters': [0],
'vitest/require-test-timeout': [0],
'vitest/require-to-throw-message': [0],
'vitest/require-top-level-describe': [0],
'vitest/unbound-method': [0],
'vitest/valid-describe-callback': [2],
'vitest/valid-expect': [2, {maxArgs: 2}],
'vitest/valid-expect-in-promise': [2],
'vitest/valid-title': [2],
'vitest/warn-todo': [0],
},
},
{
files: ['**/*.d.ts'],
rules: {
'@typescript-eslint/consistent-type-definitions': [0],
'@typescript-eslint/consistent-type-imports': [0],
},
},
{
files: ['*', 'tools/**/*', 'tests/**/*'],
languageOptions: {globals: globals.nodeBuiltin},
rules: {
'gitea/unescaped-html-literal': [0],
},
},
{
files: ['web_src/**/*'],
languageOptions: {globals: {...globals.browser, ...globals.jquery}},
rules: {
'no-restricted-globals': [2, 'self', ...restrictedGlobals],
'no-restricted-properties': [2, ...restrictedProperties],
},
},
{
files: ['**/*.worker.*', '**/*.sharedworker.*'],
rules: {
'no-restricted-globals': [2, 'window', ...restrictedGlobals],
},
},
]);