eslint-config-niieani
Version:
Reusable ESLint config for Beemo configured projects.
130 lines • 5.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const scaffold_config_constants_1 = require("@niieani/scaffold-config-constants");
const jestConfig = {
files: scaffold_config_constants_1.TESTS_LIST,
plugins: ['jest'],
env: {
jest: true,
'jest/globals': false,
},
rules: {
// Prefer `it` over `test`
'jest/consistent-test-it': 'error',
'jest/require-top-level-describe': 'error',
'jest/valid-describe-callback': 'error',
'jest/valid-expect': 'error',
// Ensure we are expecting/asserting correctly
'jest/expect-expect': 'error',
'jest/no-conditional-in-test': 'error',
'jest/no-if': 'off', // deprecated
'jest/no-standalone-expect': 'error',
'jest/prefer-expect-resolves': 'error',
// Ensure our tests are deterministic
'jest/no-interpolation-in-snapshots': 'error',
'jest/no-large-snapshots': 'off',
// Encourage readable titles and descriptions
'jest/lowercase-name': 'off',
'jest/no-identical-title': 'error',
'jest/prefer-lowercase-title': 'off',
'jest/valid-title': 'error',
// Prefer explicit APIs for better readability
'jest/no-alias-methods': 'error',
'jest/no-deprecated-functions': 'error',
'jest/no-duplicate-hooks': 'error',
'jest/no-jasmine-globals': 'error',
'jest/no-restricted-matchers': 'off',
'jest/no-test-prefixes': 'error',
'jest/prefer-hooks-on-top': 'error',
'jest/prefer-to-be': 'error',
'jest/prefer-to-contain': 'error',
'jest/prefer-to-have-length': 'error',
'jest/prefer-todo': 'error',
'jest/require-to-throw-message': 'error',
// Prefer wrapping instead of mutating test subjects
'jest/prefer-spy-on': 'error',
// Prefer async/await/promises over callbacks (duh)
'jest/no-done-callback': 'error',
'jest/no-test-return-statement': 'error',
'jest/valid-expect-in-promise': 'off',
// Avoid invalid or skipped tests from being on master
'jest/no-commented-out-tests': 'off',
'jest/no-disabled-tests': 'error',
'jest/no-focused-tests': 'error',
// Use fixtures or helper files instead
'jest/no-export': 'error',
'jest/no-mocks-import': 'error',
// Too abrasive and annoying
'jest/prefer-expect-assertions': 'off',
'jest/prefer-snapshot-hint': 'off',
'jest/prefer-strict-equal': 'off',
'jest/require-hook': 'off',
'jest/unbound-method': 'off',
// Hooks are nice / is shared state an issue? Revisit?
'jest/no-hooks': 'off',
// Sometimes we only want to check that its called... Revisit?
'jest/prefer-called-with': 'off',
// This is nice for catching and testing errors... Revisit?
'jest/no-conditional-expect': 'off',
},
};
const testsConfig = {
files: scaffold_config_constants_1.TESTS_LIST,
env: {
node: true,
},
rules: {
// Disable these as it makes writing tests much easier
'max-classes-per-file': 'off',
'no-console': 'off',
'no-magic-numbers': 'off',
'sort-keys': 'off',
'promise/prefer-await-to-callbacks': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-extraneous-class': 'off',
'@typescript-eslint/no-implicit-any-catch': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars-experimental': 'off',
'@typescript-eslint/no-useless-constructor': 'off',
'@typescript-eslint/promise-function-async': 'off',
// Some imports are dev dependencies
'import/no-extraneous-dependencies': 'off',
// Allow `any` in tests for convenience
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
// Allow relative import paths
'import/no-relative-packages': 'off',
'node/no-unpublished-import': 'off',
},
};
const miscConfig = {
files: [
'**/{__mocks__,__fixtures__,__generated__}/**/*',
`**/{tests,__tests__}/**/{helpers,utils,setup}.{${scaffold_config_constants_1.EXTENSIONS_PATTERN}}`,
],
rules: {
'import/no-commonjs': 'off',
// Allow exports from these files
'jest/no-export': 'off',
// Allow composable / factoried unit tests
'jest/require-top-level-describe': 'off',
// Allow `any` in tests for convenience
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
},
};
// We only want to apply the Jest plugin and other testing rules
// when inside of a test specific file. Not the entire codebase.
const config = {
overrides: [jestConfig, testsConfig, miscConfig],
};
module.exports = config;
//# sourceMappingURL=tests.js.map