UNPKG

@ctrl/eslint-config

Version:
113 lines (105 loc) 4.19 kB
module.exports = { extends: [ 'xo', 'xo-typescript/space', 'prettier', 'plugin:prettier/recommended', ], plugins: ['simple-import-sort'], rules: { curly: 'error', 'object-curly-spacing': ['error', 'always'], '@typescript-eslint/comma-dangle': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/no-floating-promises': 'off', '@typescript-eslint/no-implicit-any-catch': 'off', '@typescript-eslint/no-confusing-void-expression': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/naming-convention': 'off', '@typescript-eslint/consistent-type-definitions': 'off', '@typescript-eslint/consistent-type-imports': 'off', /** Requires strictNullChecks kinda annoying */ '@typescript-eslint/prefer-nullish-coalescing': 'off', 'capitalized-comments': 'off', 'no-warning-comments': 'off', complexity: 'off', /** * Better import sorting */ 'simple-import-sort/imports': [ 'error', { groups: [ // Side effect imports. ['^\\u0000'], ['^node:.*$'], // Node.js builtins. You could also generate this regex if you use a `.js` config. // For example: `^(${require("module").builtinModules.join("|")})(/|$)` [ '^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)', ], // Packages. `react` related packages come first. ['^react', '^@?\\w'], // Internal packages. ['^(@ctrl)(/.*|$)'], // Parent imports. Put `..` last. ['^\\.\\.(?!/?$)', '^\\.\\./?$'], // Other relative imports. Put same-folder imports and `.` last. ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'], ], }, ], '@typescript-eslint/ban-types': [ 'error', { extendDefaults: false, types: { String: { message: 'Use `string` instead.', fixWith: 'string', }, Number: { message: 'Use `number` instead.', fixWith: 'number', }, Boolean: { message: 'Use `boolean` instead.', fixWith: 'boolean', }, Symbol: { message: 'Use `symbol` instead.', fixWith: 'symbol', }, Object: { message: 'The `Object` type is mostly the same as `unknown`. You probably want `Record<string, unknown>` instead. See https://github.com/typescript-eslint/typescript-eslint/pull/848', fixWith: 'Record<string, unknown>', }, '{}': { message: 'The `{}` type is mostly the same as `unknown`. You probably want `Record<string, unknown>` instead.', fixWith: 'Record<string, unknown>', }, object: { message: 'The `object` type is hard to use. Use `Record<string, unknown>` instead. See: https://github.com/typescript-eslint/typescript-eslint/pull/848', fixWith: 'Record<string, unknown>', }, Function: 'Use a specific function type instead, like `() => void`.', '[]': "Don't use the empty array type `[]`. It only allows empty arrays. Use `SomeType[]` instead.", '[[]]': "Don't use `[[]]`. It only allows an array with a single element which is an empty array. Use `SomeType[][]` instead.", '[[[]]]': "Don't use `[[[]]]`. Use `SomeType[][][]` instead.", '[[[[]]]]': 'ur drunk 🤡', '[[[[[]]]]]': '🦄💥', }, }, ], }, };