diff --git a/.oxlintrc.json b/.oxlintrc.json index 6a62307729..e41c28c941 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -99,6 +99,8 @@ } ], "typescript/no-var-requires": "error", + // we want to allow unions such as "{ name: DbAccount['name'] | DbPayee['name'] }" + "typescript/no-duplicate-type-constituents": "off", // Import rules "import/consistent-type-specifier-style": "error", diff --git a/package.json b/package.json index 1d43e67d42..dd8f1cd4de 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "vrt:docker": "./bin/run-vrt", "rebuild-electron": "./node_modules/.bin/electron-rebuild -m ./packages/loot-core", "rebuild-node": "yarn workspace loot-core rebuild", - "lint": "oxfmt --check . && oxlint", - "lint:fix": "oxfmt . && oxlint --fix", + "lint": "oxfmt --check . && oxlint --type-aware", + "lint:fix": "oxfmt . && oxlint --fix --type-aware", "install:server": "yarn workspaces focus @actual-app/sync-server --production", "typecheck": "yarn tsc --incremental && tsc-strict", "jq": "./node_modules/node-jq/bin/jq", @@ -79,6 +79,7 @@ "npm-run-all": "^4.1.5", "oxfmt": "^0.32.0", "oxlint": "^1.47.0", + "oxlint-tsgolint": "^0.13.0", "p-limit": "^7.2.0", "prompts": "^2.4.2", "source-map-support": "^0.5.21", @@ -95,7 +96,7 @@ "oxfmt --no-error-on-unmatched-pattern" ], "*.{js,mjs,jsx,ts,tsx}": [ - "oxlint --fix" + "oxlint --fix --type-aware" ] }, "browserslist": [ diff --git a/upcoming-release-notes/6984.md b/upcoming-release-notes/6984.md new file mode 100644 index 0000000000..5ac956c382 --- /dev/null +++ b/upcoming-release-notes/6984.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +lint: introduce type-aware linting diff --git a/yarn.lock b/yarn.lock index 6df129936a..e2c14ad4a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5279,6 +5279,48 @@ __metadata: languageName: node linkType: hard +"@oxlint-tsgolint/darwin-arm64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/darwin-arm64@npm:0.13.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/darwin-x64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/darwin-x64@npm:0.13.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/linux-arm64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/linux-arm64@npm:0.13.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/linux-x64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/linux-x64@npm:0.13.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/win32-arm64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/win32-arm64@npm:0.13.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/win32-x64@npm:0.13.0": + version: 0.13.0 + resolution: "@oxlint-tsgolint/win32-x64@npm:0.13.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@oxlint/binding-android-arm-eabi@npm:1.47.0": version: 1.47.0 resolution: "@oxlint/binding-android-arm-eabi@npm:1.47.0" @@ -10587,6 +10629,7 @@ __metadata: npm-run-all: "npm:^4.1.5" oxfmt: "npm:^0.32.0" oxlint: "npm:^1.47.0" + oxlint-tsgolint: "npm:^0.13.0" p-limit: "npm:^7.2.0" prompts: "npm:^2.4.2" source-map-support: "npm:^0.5.21" @@ -21701,6 +21744,35 @@ __metadata: languageName: node linkType: hard +"oxlint-tsgolint@npm:^0.13.0": + version: 0.13.0 + resolution: "oxlint-tsgolint@npm:0.13.0" + dependencies: + "@oxlint-tsgolint/darwin-arm64": "npm:0.13.0" + "@oxlint-tsgolint/darwin-x64": "npm:0.13.0" + "@oxlint-tsgolint/linux-arm64": "npm:0.13.0" + "@oxlint-tsgolint/linux-x64": "npm:0.13.0" + "@oxlint-tsgolint/win32-arm64": "npm:0.13.0" + "@oxlint-tsgolint/win32-x64": "npm:0.13.0" + dependenciesMeta: + "@oxlint-tsgolint/darwin-arm64": + optional: true + "@oxlint-tsgolint/darwin-x64": + optional: true + "@oxlint-tsgolint/linux-arm64": + optional: true + "@oxlint-tsgolint/linux-x64": + optional: true + "@oxlint-tsgolint/win32-arm64": + optional: true + "@oxlint-tsgolint/win32-x64": + optional: true + bin: + tsgolint: bin/tsgolint.js + checksum: 10/f5187ab239a201c2578c378e194ee074b37c2c9232d48d50b8a6d17a17016cd140aa9e1e35822e70f9ad31f8bf371fcf32513cfdda74bb996ef745d5fdda7048 + languageName: node + linkType: hard + "oxlint@npm:^1.47.0": version: 1.47.0 resolution: "oxlint@npm:1.47.0"