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
27 changes: 7 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,16 @@ This config intentionally omits all formatting/style rules (spacing, semicolons,

## Rules not covered by oxlint

The following rules from `eslint-config-universe` do not have oxlint equivalents. If you need them, you'll need to keep ESLint running alongside oxlint for these specific rules, or accept the gap.
The following rules from `eslint-config-universe` do not have `oxlint-config-universe` coverage. If you need them, you'll need to keep ESLint running alongside oxlint for these specific rules, or accept the gap.

### Core ESLint rules

| Rule | Notes |
| ----------------- | ---------------------------------------------------------------- |
| `no-dupe-args` | Not implemented in oxlint |
| `no-implied-eval` | Only available as `typescript/no-implied-eval`, not for plain JS |
| `no-new-symbol` | oxlint has `no-new-native-nonconstructor` as a successor |
| `no-octal` | Not implemented |
| `no-octal-escape` | Not implemented |
| Rule | Notes |
| ----------------- | --------------------------------------------------------------------------------------- |
| `no-dupe-args` | Not implemented in oxlint |
| `no-implied-eval` | Only available with type-aware, present in `oxlint-config-universe/typescript-analysis` |
| `no-octal` | Not implemented |
| `no-octal-escape` | Not implemented |
Comment on lines 60 to +71
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is titled “Rules not covered by oxlint / oxlint-config-universe coverage”, but no-implied-eval is now listed as available via oxlint-config-universe/typescript-analysis. That reads as contradictory for users skimming this list. Consider moving no-implied-eval out of the “not covered” table (or adjusting the heading/notes to clarify it’s covered, but only when opting into the type-aware preset).

Copilot uses AI. Check for mistakes.

### Import rules

Expand All @@ -91,18 +90,6 @@ Recommended oxfmt config to match eslint-config-universe import/order configurat
}
```

### TypeScript rules

These ESLint rules have TypeScript-specific overrides that don't exist in oxlint. The base ESLint versions are included in core and may work adequately for TypeScript files, but lack TypeScript-aware handling (e.g., understanding type-only imports):

| Rule | Notes |
| ------------------------------------------- | ----------------------------------------- |
| `@typescript-eslint/no-dupe-class-members` | Core `no-dupe-class-members` is included |
| `@typescript-eslint/no-redeclare` | Core `no-redeclare` is included |
| `@typescript-eslint/no-unused-expressions` | Core `no-unused-expressions` is included |
| `@typescript-eslint/no-unused-vars` | Core `no-unused-vars` is included |
| `@typescript-eslint/no-useless-constructor` | Core `no-useless-constructor` is included |

### React rules

| Rule | Notes |
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "oxlint-config-universe",
"version": "0.0.1",
"version": "0.0.2",
"description": "Shared oxlint configs for internal Expo projects.",
"keywords": [
"expo",
Expand Down
1 change: 1 addition & 0 deletions shared/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export default defineConfig({
'no-multi-assign': 'warn',
'no-new': 'warn',
'no-new-func': 'warn',
'no-new-native-nonconstructor': 'warn',
'no-object-constructor': 'warn',
'no-obj-calls': 'warn',
'no-proto': 'warn',
Expand Down
1 change: 1 addition & 0 deletions shared/typescript-analysis.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export default defineConfig({
'typescript/no-confusing-void-expression': 'warn',
'typescript/no-extra-non-null-assertion': 'warn',
'typescript/no-floating-promises': 'warn',
'typescript/no-implied-eval': 'warn',
'typescript/no-for-in-array': 'error',
'typescript/no-misused-promises': ['error', { checksVoidReturn: false }],
'typescript/no-unnecessary-type-assertion': 'warn',
Expand Down
14 changes: 14 additions & 0 deletions shared/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ import { defineConfig } from 'oxlint';
export default defineConfig({
plugins: ['typescript'],
rules: {
'typescript/no-dupe-class-members': 'warn',
'typescript/no-redeclare': 'warn',
'typescript/no-unused-expressions': ['warn', { allowShortCircuit: true, enforceForJSX: true }],
'typescript/no-unused-vars': [
'warn',
Comment on lines +9 to +13
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typescript/no-unused-vars is enabled without any options, which appears to drop the existing underscore convention from the core no-unused-vars config (e.g., caught errors prefixed with _ are no longer ignored, and the snapshots now show a warning for catch (_ignored)). Consider configuring typescript/no-unused-vars with the same options as the core rule (at least caughtErrors: 'all' + caughtErrorsIgnorePattern: '^_', and any other repo-wide settings) to keep behavior consistent across JS/TS.

Copilot uses AI. Check for mistakes.
{
vars: 'all',
args: 'none',
ignoreRestSiblings: true,
caughtErrors: 'all',
caughtErrorsIgnorePattern: '^_',
},
],
'typescript/no-useless-constructor': 'warn',
'typescript/array-type': ['warn', { default: 'array' }],
'typescript/no-empty-object-type': ['warn', { allowInterfaces: 'with-single-extends' }],
'typescript/no-wrapper-object-types': 'warn',
Expand Down
Loading