Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 48 additions & 104 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": [
"typescript"
"typescript",
"oxc",
"promise",
"import"
// these rule sets may be added later
// "vitest"
// "react"
],
"categories": {
"correctness": "error"
Expand All @@ -23,90 +29,35 @@
"**/production/**/*",
"**/public/**/*",
"**/.next/**/*",
"**/*env.d.ts",
"**/.pnp.cjs"
],
// see: https://oxc.rs/docs/guide/usage/linter/rules.html
"rules": {
"eqeqeq": "error",
// currently in oxlint's nursery (=under development)
"constructor-super": "error",
// currently unsupported by oxlint
"dot-notation": "error",
"for-direction": "error",
// currently in oxlint's nursery (=under development)
"getter-return": "error",
"guard-for-in": "error",
// currently unsupported by oxlint
"new-parens": "error",
"no-async-promise-executor": "error",
"no-array-constructor": "error",
"no-bitwise": "error",
"no-caller": "error",
"no-case-declarations": "error",
"no-class-assign": "error",
"no-compare-neg-zero": "error",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-binary-expression": "error",
"no-constant-condition": "error",
"no-control-regex": "error",
"no-debugger": "error",
"no-delete-var": "error",
// currently unsupported by oxlint
"no-dupe-args": "error",
"no-dupe-class-members": "error",
"no-dupe-else-if": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-empty": "error",
"no-empty-character-class": "error",
"no-empty-pattern": "error",
"no-empty-static-block": "error",
"no-eval": "error",
"no-ex-assign": "error",
"no-explicit-any": "error",
"no-extra-boolean-cast": "error",
"no-fallthrough": "error",
"no-func-assign": "error",
"no-global-assign": "error",
"no-import-assign": "error",
"no-inner-declarations": "off",
"no-invalid-regexp": "error",
"no-irregular-whitespace": "error",
"no-labels": "error",
"no-loss-of-precision": "error",
// currently in oxlint's nursery (=under development)
"no-misleading-character-class": "error",
// currently unsupported by oxlint
"no-multiple-empty-lines": ["error", {
"max": 1
}],
"no-new-native-nonconstructor": "error",
"no-new-wrappers": "error",
"no-nonoctal-decimal-escape": "error",
"no-obj-calls": "error",
// currently unsupported by oxlint
"no-octal": "error",
"no-prototype-builtins": "error",
"no-redeclare": "error",
"no-regex-spaces": "error",
"no-self-assign": "error",
"no-setter-return": "error",
"no-shadow-restricted-names": "error",
"no-sparse-arrays": "error",
"no-this-before-super": "error",
"no-throw-literal": "error",
// currently unsupported by oxlint
"no-trailing-spaces": "error",
// currently in oxlint's nursery (=under development)
"no-undef": "off",
"no-unexpected-multiline": "error",
// currently in oxlint's nursery (=under development)
"no-unreachable": "error",
"no-unsafe-finally": "error",
"no-unsafe-negation": "error",
"no-unsafe-optional-chaining": "error",
"no-unused-labels": "error",
"no-unused-private-class-members": "error",
"no-unused-vars": [
"error",
{
Expand All @@ -115,60 +66,53 @@
"varsIgnorePattern": "^_"
}
],
"no-useless-backreference": "error",
"no-useless-catch": "error",
"no-useless-escape": "error",
"no-var": "error",
"no-var-requires": "error",
"no-with": "error",
// currently unsupported by oxlint
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
// currently unsupported by oxlint
"quotes": [2, "single", {
"avoidEscape": true
}],
"require-yield": "error",
// currently unsupported by oxlint
"semi": [2, "always"],
// currently unsupported by oxlint
"space-before-function-paren": ["error", {
"anonymous": "never",
"asyncArrow": "always",
"named": "never"
}],
"use-isnan": "error",
"valid-typeof": "error",
"@typescript-eslint/ban-ts-comment": "error",
"no-array-constructor": "error",
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": [

// all typescript related rules
"typescript/adjacent-overload-signatures": "error",
"typescript/array-type": [
"error",
{
"default": "array-simple"
}
],
"@typescript-eslint/no-duplicate-enum-values": "error",
"@typescript-eslint/no-empty-object-type": "error",
"@typescript-eslint/no-extra-non-null-assertion": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-non-null-asserted-optional-chain": "error",
"@typescript-eslint/prefer-for-of": "error",
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/no-this-alias": "error",
"@typescript-eslint/no-unnecessary-type-constraint": "error",
"@typescript-eslint/no-unsafe-declaration-merging": "error",
"@typescript-eslint/no-unsafe-function-type": "error",
"@typescript-eslint/no-unused-expressions": "error",
"@typescript-eslint/no-unnecessary-condition": "error",
"@typescript-eslint/no-wrapper-object-types": "error",
"@typescript-eslint/parameter-properties": "error",
"@typescript-eslint/prefer-as-const": "error",
"@typescript-eslint/prefer-namespace-keyword": "error",
"@typescript-eslint/strict-boolean-expressions": "error",
"@typescript-eslint/triple-slash-reference": "error",
"typescript/ban-ts-comment": "error",
// currently in oxlint's nursery (=under development)
"typescript/dot-notation": "error",
"typescript/no-empty-object-type": "error",
"typescript/no-namespace": "off",
// currently in oxlint's nursery (=under development)
"typescript/no-unnecessary-condition": "error",
"typescript/no-unnecessary-type-constraint": "error",
"typescript/no-unsafe-function-type": "error",
"typescript/no-unused-expressions": "error",
"typescript/no-non-null-assertion": "off",
"typescript/no-require-imports": "error",
"typescript/no-var-requires": "error",
"typescript/parameter-properties": "error",
"typescript/prefer-for-of": "error",
"typescript/prefer-namespace-keyword": "error",
"typescript/prefer-nullish-coalescing": "error",
// currently in oxlint's nursery (=under development)
"typescript/prefer-optional-chain": "error",
"typescript/strict-boolean-expressions": [
"error",
{
"allowString": false,
"allowNumber": false,
"allowNullableObject": false
}
],
"typescript/triple-slash-reference": "error",
// all import related rules
"import/no-duplicates": "error",
"import/first": "error",
"import/export": "error",
"import/default": "error",
"import/named": "error",
"import/no-unresolved": "error"
}
}
2 changes: 1 addition & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"oxc.oxc-vscode",
"editorconfig.editorconfig",
"davidanson.vscode-markdownlint",
"vitest.explorer"
Expand Down
10 changes: 2 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,14 @@
"editor.guides.bracketPairs": true,
"editor.formatOnSave": false,
"workbench.editor.revealIfOpen": true,
"oxc.enable.oxlint": true,
"oxc.typeAware": true,
"[javascript]": {
"editor.formatOnSave": true,
},
"[typescript]": {
"editor.formatOnSave": true,
},
"eslint.codeAction.showDocumentation": {
"enable": true
},
"eslint.format.enable": false,
"eslint.validate": [
"javascript",
"typescript"
],
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
Expand Down
2 changes: 2 additions & 0 deletions LICENSE.header
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Copyright (c) 2026 TypeFox and others.
Licensed under the MIT License. See LICENSE in the package root for license information.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ These are the current versions of packages from this repository and their alignm
- **monaco-languageclient**: `10.7.0` (release date: 2026-02-04)
- **@typefox/monaco-editor-react**: `7.7.0` (release date: unrel2026-02-04eased)
- Aligned with:
- **@codingame/monaco-vscode-[editor]-api**: `26.0.1`
- **@codingame/monaco-vscode-[editor]-api**: `26.2.1`
- **vscode**: `1.108.2`
- **monaco-editor**: `0.55.1`
- **vscode-ws-jsonrpc**: `3.5.0` (release date: 2025-08-11)
Expand Down
10 changes: 5 additions & 5 deletions docs/guides/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Whenever you use `monaco-editor`/`@codingame/monaco-vscode-editor-api` `vscode`/
If you use pnpm or yarn, you have to add `vscode` / `@codingame/monaco-vscode-api` as direct dependency, otherwise the installation will fail:

```json
"vscode": "npm:@codingame/monaco-vscode-extension-api@^26.0.1"
"vscode": "npm:@codingame/monaco-vscode-extension-api@^26.2.1"
```

### Missing Overrides or Resolutions
Expand All @@ -23,7 +23,7 @@ To ensure all Monaco-related packages use a single, compatible version, you must
```json
{
"overrides": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"
}
}
```
Expand All @@ -33,7 +33,7 @@ To ensure all Monaco-related packages use a single, compatible version, you must
```json
{
"resolutions": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"
}
}
```
Expand All @@ -50,7 +50,7 @@ Additionally, if you see a message in the browser console starting with `Another

### @codingame/monaco-vscode-editor-api / monaco-editor usage

When you use the libraries from this project you are no longer required to proxy `monaco-editor` like `"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"` in you `package.json`. You can directly use it like so:
When you use the libraries from this project you are no longer required to proxy `monaco-editor` like `"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"` in you `package.json`. You can directly use it like so:

```js
import * as monaco from '@codingame/monaco-vscode-editor-api';
Expand All @@ -60,7 +60,7 @@ If your dependency stack already contains a reference `monaco-editor` you must e

```json
"overrides": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"
}
```

Expand Down
26 changes: 13 additions & 13 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ If using npm or pnpm, and your dependencies already contain a reference to `mona
```json
{
"overrides": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"
}
}
```
Expand All @@ -71,7 +71,7 @@ In yarn you have to specify `resolutions` instead of `overrides`:
```json
{
"resolutions": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.0.1"
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@^26.2.1"
}
}
```
Expand All @@ -83,17 +83,17 @@ If using pnpm, you have to add more transitive dependencies that npm or yarn aut
```json
{
"dependencies": {
"@codingame/monaco-vscode-api": "^26.0.1",
"@codingame/monaco-vscode-configuration-service-override": "^26.0.1",
"@codingame/monaco-vscode-editor-api": "^26.0.1",
"@codingame/monaco-vscode-editor-service-override": "^26.0.1",
"@codingame/monaco-vscode-extension-api": "^26.0.1",
"@codingame/monaco-vscode-extensions-service-override": "^26.0.1",
"@codingame/monaco-vscode-languages-service-override": "^26.0.1",
"@codingame/monaco-vscode-localization-service-override": "^26.0.1",
"@codingame/monaco-vscode-log-service-override": "^26.0.1",
"@codingame/monaco-vscode-model-service-override": "^26.0.1",
"vscode": "npm:@codingame/monaco-vscode-extension-api@^26.0.1"
"@codingame/monaco-vscode-api": "^26.2.1",
"@codingame/monaco-vscode-configuration-service-override": "^26.2.1",
"@codingame/monaco-vscode-editor-api": "^26.2.1",
"@codingame/monaco-vscode-editor-service-override": "^26.2.1",
"@codingame/monaco-vscode-extension-api": "^26.2.1",
"@codingame/monaco-vscode-extensions-service-override": "^26.2.1",
"@codingame/monaco-vscode-languages-service-override": "^26.2.1",
"@codingame/monaco-vscode-localization-service-override": "^26.2.1",
"@codingame/monaco-vscode-log-service-override": "^26.2.1",
"@codingame/monaco-vscode-model-service-override": "^26.2.1",
"vscode": "npm:@codingame/monaco-vscode-extension-api@^26.2.1"
}
}
```
Expand Down
49 changes: 24 additions & 25 deletions docs/oxlint.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,31 @@ Useful links:

## Eslint to Oxlint migration results

Performed on 2025-11-26.

```shell
unsupported rule, but in development: constructor-super
unsupported rule, but in development: getter-return
unsupported rule: no-dupe-args
unsupported rule, but in development: no-misleading-character-class
unsupported rule: no-octal
unsupported rule, but in development: no-undef
unsupported rule, but in development: no-unreachable
unsupported rule: prefer-const
unsupported rule: dot-notation
unsupported rule: new-parens
unsupported rule: no-multiple-empty-lines
unsupported rule: no-trailing-spaces
unsupported rule: space-before-function-paren
unsupported rule: semi
unsupported rule: quotes
unsupported rule: @typescript-eslint/parameter-properties
unsupported rule: @typescript-eslint/no-unnecessary-condition
```
Performed on 2025-11-26 and updated 2026-02-20.

- unsupported rule: no-dupe-args
- Not needed in modern code, strict is enforced by tsc
- unsupported rule: no-octal
- Not needed in modern code, strict is enforced by tsc
- unsupported rule, but in development: no-undef
- Not needed, handled by tsc
- unsupported rule: dot-notation
- Replaced by `typescript/dot-notation`
- unsupported rule: new-parens
- Is handled automatically by oxfmt
- unsupported rule: no-multiple-empty-lines
- Is handled automatically by oxfmt
- unsupported rule: no-trailing-spaces
- Is handled automatically by oxfmt
- unsupported rule: space-before-function-paren
- Is handled automatically by oxfmt
- unsupported rule: semi
- Is handled automatically by oxfmt
- unsupported rule: quotes
- Is handled by oxfmt via config `"singleQuote": true`

## Changes

- Replaced `@typescript-eslint/no-var-requires` with `no-var-requires`
- Turned of recommended rule `no-undef` after migration
- All rules in nursery (=under development) and unsupported rules are accompanied by a comment in [.oxlintrc.json](../.oxlintrc.json)
- All rules unsupported by oxlint are still contained in [eslint.config.mjs](../eslint.config.mjs) and applied by eslint.
- JsPlugins are instable in oxlint, therefore they are still contained in [eslint.config.mjs](../eslint.config.mjs) and applied by eslint.
- 2026-02-20: Deleted eslint and all plugins
- 2026-03-04: Fixed all type aware issues, added import rules and removed all default rules
Loading