UNPKG

@bfra.me/eslint-config

Version:
93 lines (88 loc) 3.88 kB
import type {Config} from '../config' import type {Flatten, OptionsFiles, OptionsOverrides} from '../options' import {GLOB_SRC} from '../globs' import {interopDefault} from '../utils' export type UnicornOptions = Flatten<OptionsFiles & OptionsOverrides> export async function unicorn(options: UnicornOptions = {}): Promise<Config[]> { const {files = [GLOB_SRC], overrides = {}} = options const pluginUnicorn = await interopDefault(import('eslint-plugin-unicorn')) return [ { name: '@bfra.me/unicorn', files, plugins: { unicorn: pluginUnicorn, }, rules: { 'unicorn/catch-error-name': 'error', 'unicorn/filename-case': [ 'error', { cases: {kebabCase: true, pascalCase: true}, checkDirectories: false, ignore: [String.raw`^[A-Z]+\..*$`, String.raw`import_map\.json`], }, ], 'unicorn/consistent-empty-array-spread': 'error', 'unicorn/consistent-existence-index-check': 'error', 'unicorn/consistent-function-scoping': ['error', {checkArrowFunctions: false}], 'unicorn/error-message': 'error', 'unicorn/escape-case': 'error', 'unicorn/new-for-builtins': 'error', 'unicorn/no-array-method-this-argument': 'error', 'unicorn/no-array-push-push': 'error', 'unicorn/no-await-in-promise-methods': 'error', 'unicorn/no-console-spaces': 'error', 'unicorn/no-for-loop': 'error', 'unicorn/no-hex-escape': 'error', 'unicorn/no-instanceof-array': 'error', 'unicorn/no-invalid-remove-event-listener': 'error', 'unicorn/no-lonely-if': 'error', 'unicorn/no-negated-condition': 'error', 'unicorn/no-negation-in-equality-check': 'error', 'unicorn/no-new-array': 'error', 'unicorn/no-new-buffer': 'error', 'unicorn/no-single-promise-in-promise-methods': 'error', 'unicorn/no-static-only-class': 'error', 'unicorn/no-typeof-undefined': 'error', 'unicorn/no-unnecessary-await': 'error', 'unicorn/no-zero-fractions': 'error', 'unicorn/number-literal-case': 'error', 'unicorn/prefer-add-event-listener': 'error', 'unicorn/prefer-array-find': 'error', 'unicorn/prefer-array-flat-map': 'error', 'unicorn/prefer-array-index-of': 'error', 'unicorn/prefer-array-some': 'error', 'unicorn/prefer-at': 'error', 'unicorn/prefer-blob-reading-methods': 'error', 'unicorn/prefer-date-now': 'error', 'unicorn/prefer-dom-node-append': 'error', 'unicorn/prefer-dom-node-dataset': 'error', 'unicorn/prefer-dom-node-remove': 'error', 'unicorn/prefer-dom-node-text-content': 'error', 'unicorn/prefer-includes': 'error', 'unicorn/prefer-keyboard-event-key': 'error', 'unicorn/prefer-math-min-max': 'error', 'unicorn/prefer-math-trunc': 'error', 'unicorn/prefer-modern-dom-apis': 'error', 'unicorn/prefer-modern-math-apis': 'error', 'unicorn/prefer-negative-index': 'error', 'unicorn/prefer-node-protocol': 'error', 'unicorn/prefer-number-properties': 'error', 'unicorn/prefer-optional-catch-binding': 'error', 'unicorn/prefer-prototype-methods': 'error', 'unicorn/prefer-query-selector': 'error', 'unicorn/prefer-reflect-apply': 'error', 'unicorn/prefer-regexp-test': 'error', 'unicorn/prefer-string-raw': 'error', 'unicorn/prefer-string-replace-all': 'error', 'unicorn/prefer-string-slice': 'error', 'unicorn/prefer-string-starts-ends-with': 'error', 'unicorn/prefer-string-trim-start-end': 'error', 'unicorn/prefer-type-error': 'error', 'unicorn/throw-new-error': 'error', ...overrides, }, }, ] }