From adf0a18e9b4441cddcfd26d5fbdf052f738d8365 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Thu, 8 Aug 2024 19:07:24 +1000 Subject: [PATCH 1/2] WIP: disable rules covered by oxlint --- oxlint.json | 14 ++++ package.json | 1 + packages/config/package.json | 2 +- packages/eslint-config/package.json | 3 +- packages/eslint-config/src/index.js | 5 ++ packages/publish-config/package.json | 2 +- packages/typedoc-config/package.json | 2 +- packages/vite-config/package.json | 2 +- pnpm-lock.yaml | 104 +++++++++++++++++++++++++++ pnpm-workspace.yaml | 2 + 10 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 oxlint.json diff --git a/oxlint.json b/oxlint.json new file mode 100644 index 0000000..56038a4 --- /dev/null +++ b/oxlint.json @@ -0,0 +1,14 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["import", "unicorn", "jsdoc"], + "categories": { + "correctness": "deny", + "perf": "deny", + "suspicious": "deny" + }, + "rules": { + "eslint/no-await-in-loop": "allow", + "jsdoc/check-tag-names": "allow", + "oxc/no-accumulating-spread": "allow" + } +} diff --git a/package.json b/package.json index ee777e9..8d7ee91 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "eslint": "catalog:", "jsdom": "catalog:", "nx": "catalog:", + "oxlint": "catalog:", "prettier": "catalog:", "publint": "catalog:", "sherif": "catalog:", diff --git a/packages/config/package.json b/packages/config/package.json index bbaca82..1861986 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -16,7 +16,7 @@ }, "scripts": { "test:types": "tsc", - "test:eslint": "eslint ./src", + "test:eslint": "oxlint -c ../../oxlint.json && eslint ./src", "test:build": "publint --strict", "build": "vite build" }, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 15b1166..a548916 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -16,7 +16,7 @@ }, "scripts": { "test:types": "tsc", - "test:eslint": "eslint ./src", + "test:eslint": "oxlint -c ../../oxlint.json && eslint ./src", "test:build": "publint --strict" }, "type": "module", @@ -41,6 +41,7 @@ "@stylistic/eslint-plugin-js": "catalog:", "eslint-plugin-import-x": "catalog:", "eslint-plugin-n": "catalog:", + "eslint-plugin-oxlint": "catalog:", "globals": "catalog:", "typescript-eslint": "catalog:", "vue-eslint-parser": "catalog:" diff --git a/packages/eslint-config/src/index.js b/packages/eslint-config/src/index.js index 3c5057b..16a61c4 100644 --- a/packages/eslint-config/src/index.js +++ b/packages/eslint-config/src/index.js @@ -1,8 +1,11 @@ +// @ts-check + import tseslint from 'typescript-eslint' import vueparser from 'vue-eslint-parser' import stylisticJs from '@stylistic/eslint-plugin-js' import pluginImport from 'eslint-plugin-import-x' import pluginNode from 'eslint-plugin-n' +import pluginOxlint from 'eslint-plugin-oxlint' import globals from 'globals' import { javascriptRules } from './javascript.js' import { importRules } from './import.js' @@ -29,6 +32,8 @@ const jsRules = { ...importRules, ...nodeRules, ...stylisticRules, + // @ts-ignore Invalid type + ...pluginOxlint.configs['flat/recommended'].rules, } const jsPlugins = { diff --git a/packages/publish-config/package.json b/packages/publish-config/package.json index 28c85b6..350be63 100644 --- a/packages/publish-config/package.json +++ b/packages/publish-config/package.json @@ -16,7 +16,7 @@ }, "scripts": { "test:types": "tsc", - "test:eslint": "eslint ./src", + "test:eslint": "oxlint -c ../../oxlint.json && eslint ./src", "test:build": "publint --strict" }, "type": "module", diff --git a/packages/typedoc-config/package.json b/packages/typedoc-config/package.json index 25d24d2..dc0bfa5 100644 --- a/packages/typedoc-config/package.json +++ b/packages/typedoc-config/package.json @@ -16,7 +16,7 @@ }, "scripts": { "test:types": "tsc", - "test:eslint": "eslint ./src", + "test:eslint": "oxlint -c ../../oxlint.json && eslint ./src", "test:build": "publint --strict" }, "type": "module", diff --git a/packages/vite-config/package.json b/packages/vite-config/package.json index c36af32..186e28c 100644 --- a/packages/vite-config/package.json +++ b/packages/vite-config/package.json @@ -16,7 +16,7 @@ }, "scripts": { "test:types": "tsc", - "test:eslint": "eslint ./src", + "test:eslint": "oxlint -c ../../oxlint.json && eslint ./src", "test:build": "publint --strict" }, "type": "module", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cde1287..d8d1003 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ catalogs: eslint-plugin-n: specifier: ^17.18.0 version: 17.18.0 + eslint-plugin-oxlint: + specifier: ^0.16.11 + version: 0.16.11 globals: specifier: ^16.1.0 version: 16.1.0 @@ -69,6 +72,9 @@ catalogs: nx: specifier: ^20.8.2 version: 20.8.2 + oxlint: + specifier: ^0.16.11 + version: 0.16.11 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -155,6 +161,9 @@ importers: nx: specifier: 'catalog:' version: 20.8.2 + oxlint: + specifier: 'catalog:' + version: 0.16.11 prettier: specifier: 'catalog:' version: 3.5.3 @@ -263,6 +272,9 @@ importers: eslint-plugin-n: specifier: 'catalog:' version: 17.18.0(eslint@9.27.0) + eslint-plugin-oxlint: + specifier: 'catalog:' + version: 0.16.11 globals: specifier: 'catalog:' version: 16.1.0 @@ -867,6 +879,46 @@ packages: cpu: [x64] os: [win32] + '@oxlint/darwin-arm64@0.16.11': + resolution: {integrity: sha512-zjDMBVWbP/0KhzcAdlOkZaYJtoMnJEZDc2BAXqfrXQvr1JFor7vTxZUFvWKF0B1XbSNGpJPvFWmho02bjPiR3g==} + cpu: [arm64] + os: [darwin] + + '@oxlint/darwin-x64@0.16.11': + resolution: {integrity: sha512-KS9Y0rs0vwvJLc9AmxI73rUWuIdJLlyAshPuSycQN+i2p8uW8r/ZBAPBB/vFyKdPaSs8j8ymPXmfN4D1yFXG9Q==} + cpu: [x64] + os: [darwin] + + '@oxlint/linux-arm64-gnu@0.16.11': + resolution: {integrity: sha512-wULkYyufJz91NAjLtZyb3ycEw9w7sg0iFoGG9rHABqRtRHkFieaFT8BjjJTvUwRf2ZolQk+YZL4edE88h85QFQ==} + cpu: [arm64] + os: [linux] + + '@oxlint/linux-arm64-musl@0.16.11': + resolution: {integrity: sha512-c7Evd7fCpocr2LFzHcl9eQF0BxXZauTraIiCxpKK7ddIuCnpbuPllkMpAUE9vob20mqnGy5WLHZby9v7vqSr+Q==} + cpu: [arm64] + os: [linux] + + '@oxlint/linux-x64-gnu@0.16.11': + resolution: {integrity: sha512-LbjKo4seS7m6rOzw/r9H3VLvnjhuo/fFuRJ8OG6pYCbkZNtChdhk88DFN8Qr0n8Qe9PFwweIvQxXBZK7IEUu6A==} + cpu: [x64] + os: [linux] + + '@oxlint/linux-x64-musl@0.16.11': + resolution: {integrity: sha512-kKuIf5hD12rtmJFSe/EGv8jXi0QWwCMDpcL2F0cRVvq6RSAxwSBF/RTEq40PJBBGAf6KJeqgV9j4glxhFn5f7w==} + cpu: [x64] + os: [linux] + + '@oxlint/win32-arm64@0.16.11': + resolution: {integrity: sha512-lx9x2EEbyHW5t2aooWtXI2AWd3WzDs+4T/p3RBp/HPp9ziwL2hEdzmjMC3DgdnbmwUmUGvfquSElF6ZGC9L5pA==} + cpu: [arm64] + os: [win32] + + '@oxlint/win32-x64@0.16.11': + resolution: {integrity: sha512-k/ZfoIR5V6bPoemFvMb9EJu3YkSoF2AAKhC7AfKM4tg9UfJ1Wj/9J/edTv1aRQCRTzPiWoS+W5v1SPogVE80Qg==} + cpu: [x64] + os: [win32] + '@publint/pack@0.1.2': resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} @@ -1709,6 +1761,9 @@ packages: peerDependencies: eslint: '>=8.23.0' + eslint-plugin-oxlint@0.16.11: + resolution: {integrity: sha512-/pemn48rNR9L85TIqZki7XYg7wOcU8/NNnTvoAHBPkTYmCWuvhOjET5f6B2hybEHknn2uaw0B0pPo9ECAFrc7A==} + eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2108,6 +2163,9 @@ packages: jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -2321,6 +2379,11 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + oxlint@0.16.11: + resolution: {integrity: sha512-JjeOwCeDfA9Y5vLswScJZlMyWBXEVz0LKKksgfkO3cgRV/XXvVzLzBEZ0h5bBiCBK1eS+jCFWh0bycECQkoWUQ==} + engines: {node: '>=8.*'} + hasBin: true + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -3651,6 +3714,30 @@ snapshots: '@nx/nx-win32-x64-msvc@20.8.2': optional: true + '@oxlint/darwin-arm64@0.16.11': + optional: true + + '@oxlint/darwin-x64@0.16.11': + optional: true + + '@oxlint/linux-arm64-gnu@0.16.11': + optional: true + + '@oxlint/linux-arm64-musl@0.16.11': + optional: true + + '@oxlint/linux-x64-gnu@0.16.11': + optional: true + + '@oxlint/linux-x64-musl@0.16.11': + optional: true + + '@oxlint/win32-arm64@0.16.11': + optional: true + + '@oxlint/win32-x64@0.16.11': + optional: true + '@publint/pack@0.1.2': {} '@rollup/pluginutils@5.1.4(rollup@4.40.1)': @@ -4525,6 +4612,10 @@ snapshots: minimatch: 9.0.5 semver: 7.7.2 + eslint-plugin-oxlint@0.16.11: + dependencies: + jsonc-parser: 3.3.1 + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -4916,6 +5007,8 @@ snapshots: jsonc-parser@3.2.0: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -5160,6 +5253,17 @@ snapshots: outdent@0.5.0: {} + oxlint@0.16.11: + optionalDependencies: + '@oxlint/darwin-arm64': 0.16.11 + '@oxlint/darwin-x64': 0.16.11 + '@oxlint/linux-arm64-gnu': 0.16.11 + '@oxlint/linux-arm64-musl': 0.16.11 + '@oxlint/linux-x64-gnu': 0.16.11 + '@oxlint/linux-x64-musl': 0.16.11 + '@oxlint/win32-arm64': 0.16.11 + '@oxlint/win32-x64': 0.16.11 + p-filter@2.1.0: dependencies: p-map: 2.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f810ec8..0ad87c7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -26,6 +26,7 @@ catalog: eslint: ^9.27.0 eslint-plugin-import-x: ^4.12.2 eslint-plugin-n: ^17.18.0 + eslint-plugin-oxlint: ^0.16.11 globals: ^16.1.0 interpret: ^3.1.1 jsdom: ^26.1.0 @@ -33,6 +34,7 @@ catalog: liftoff: ^5.0.0 minimist: ^1.2.8 nx: ^20.8.2 + oxlint: ^0.16.11 prettier: ^3.5.3 publint: ^0.3.12 react: ^19.1.0 From c400b41bcff85f2263071e05f31e4290491f9be5 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Sun, 25 May 2025 10:50:56 +1000 Subject: [PATCH 2/2] Enable additional rules --- oxlint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oxlint.json b/oxlint.json index 56038a4..47ff4ee 100644 --- a/oxlint.json +++ b/oxlint.json @@ -1,6 +1,6 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["import", "unicorn", "jsdoc"], + "plugins": ["import", "unicorn", "jsdoc", "react", "typescript", "oxc"], "categories": { "correctness": "deny", "perf": "deny",