1{
2 "$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json",
3 "plugins": ["typescript", "import", "oxc", "eslint", "unicorn", "node"],
4 "categories": {
5 "correctness": "error",
6 "suspicious": "error",
7 "perf": "error"
8 },
9 "rules": {
10 // Effect custom rules
11 "effect/no-bigint-literals": "error",
12 "effect/no-import-from-barrel-package": ["error", {
13 "checkPatterns": [
14 "^effect$",
15 "^effect/(.+/)?[a-z][a-z0-9]*$",
16 "^@effect/[^/]+$",
17 "^@effect/[^/]+/(.+/)?[a-z][a-z0-9]*$"
18 ],
19 "checkRelativeIndexImports": true
20 }],
21 "effect/no-js-extension-imports": "error",
22 "effect/no-opaque-instance-fields": "error",
23 "effect/no-unused-internal": "error",
24 // Tune native rules
25 // Import rules
26 "typescript/consistent-type-imports": ["error", {
27 "fixStyle": "inline-type-imports"
28 }],
29 "typescript/no-import-type-side-effects": "error",
30 "import/no-duplicates": "error",
31 "import/no-self-import": "error",
32 "import/no-empty-named-blocks": "error",
33 // TypeScript cleanup
34 "typescript/no-unnecessary-type-assertion": "error",
35 "typescript/no-unnecessary-type-constraint": "error",
36 "typescript/no-useless-empty-export": "error",
37 // Code quality
38 "eslint/no-console": "error",
39 "eslint/no-var": "error",
40 "eslint/no-useless-constructor": "error",
41 "unicorn/no-abusive-eslint-disable": "error",
42 "eslint/no-unneeded-ternary": "error",
43 "eslint/no-useless-concat": "error",
44 "oxc/misrefactored-assign-op": "error",
45 // Unicorn
46 "unicorn/prefer-array-flat-map": "error",
47 "unicorn/no-accessor-recursion": "error",
48 "oxc/no-map-spread": "off",
49 "eslint/object-shorthand": "off",
50 "eslint/no-shadow": "off",
51 "eslint/no-unused-vars": "off",
52 "eslint/require-yield": "off",
53 "eslint/no-fallthrough": "off",
54 "eslint/no-await-in-loop": "off",
55 "unicorn/no-new-array": "off",
56 "unicorn/consistent-function-scoping": "off",
57 "unicorn/no-array-sort": "off",
58 "unicorn/no-array-reverse": "off",
59 "unicorn/require-post-message-target-origin": "off",
60 "unicorn/prefer-add-event-listener": "off",
61 "unicorn/prefer-set-has": "off",
62 "no-underscore-dangle": "off",
63 "typescript/no-explicit-any": "off",
64 "typescript/no-empty-interface": "off",
65 "typescript/ban-ts-comment": "off",
66 "typescript/no-namespace": "off",
67 "typescript/no-non-null-assertion": "off",
68 "typescript/no-dynamic-delete": "off",
69 "typescript/no-invalid-void-type": "off",
70 "typescript/no-unsafe-function-type": "off",
71 "typescript/unified-signatures": "off",
72 "typescript/no-empty-object-type": "off",
73 "typescript/no-confusing-non-null-assertion": "off",
74 "typescript/array-type": ["error", {
75 "default": "generic",
76 "readonly": "generic"
77 }],
78 "typescript/no-unused-vars": ["error", {
79 "argsIgnorePattern": "^_",
80 "varsIgnorePattern": "^_"
81 }]
82 }
83}