Skip to content

Commit

Permalink
Configured eslint-plugin-n 🤪 (#20)
Browse files Browse the repository at this point in the history
* Configured `eslint-plugin-n` 🤪

* Updated .depcheckrc 😜

* Added the correct prefix to the rules 😶

* Fixed some lint issues 😍

* Fixed unit tests 😮
  • Loading branch information
01taylop authored Aug 2, 2024
1 parent 97126f1 commit d36a0f6
Show file tree
Hide file tree
Showing 18 changed files with 155 additions and 51 deletions.
7 changes: 0 additions & 7 deletions .depcheckrc
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
ignores: [
"eslint-plugin-eslint-comments",
"eslint-plugin-inclusive-language",
"eslint-plugin-jest",
"eslint-plugin-jest-formatting",
"eslint-plugin-promise",
"eslint-plugin-sort-destructure-keys",
"eslint-plugin-sort-exports",
"@types/jest",
"rimraf"
]
Expand Down
14 changes: 9 additions & 5 deletions TODO
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# TODO

## ESLint Plugins
## ESLint Rules

- [ ] [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat)
- [ ] [eslint](https://github.com/eslint/eslint/tree/main)
- [x] [eslint-plugin-eslint-comments](https://github.com/mysticatea/eslint-plugin-eslint-comments)
- [ ] [eslint-plugin-graphql](https://github.com/apollographql/eslint-plugin-graphql)
- [ ] [eslint-plugin-i18next](https://github.com/edvardchen/eslint-plugin-i18next)
- [ ] [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import)
- [x] [eslint-plugin-inclusive-language](https://github.com/muenzpraeger/eslint-plugin-inclusive-language)
- [x] [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest)
- [x] [eslint-plugin-jest-formatting](https://github.com/dangreenisrael/eslint-plugin-jest-formatting)
- [ ] [eslint-plugin-json](https://github.com/azeemba/eslint-plugin-json)
- [ ] [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y)
- [ ] [eslint-plugin-node](https://github.com/mysticatea/eslint-plugin-node)
- [x] [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n)
- [x] [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise)
- [ ] [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react)
- [ ] [eslint-plugin-security](https://github.com/eslint-community/eslint-plugin-security)
Expand All @@ -23,7 +22,12 @@
- [ ] [eslint-stylistic](https://github.com/eslint-stylistic/eslint-stylistic)
- [ ] [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint)

## Stylelint Plugins
### Other interesting plugins

- [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat)
- [eslint-plugin-json](https://github.com/azeemba/eslint-plugin-json)

## Stylelint Rules

- [ ] stylelint-config-property-sort-order-smacss
- [ ] stylelint-config-standard-scss
Expand Down
2 changes: 2 additions & 0 deletions config/eslint/build-flat-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ const buildFlatConfig = () => ([{
plugins: {
'eslint-comments': Plugins.EslintComments,
'inclusive-language': Plugins.InclusiveLanguage,
'n': Plugins.N,
'promise': Plugins.Promise,
'sort-destructure-keys': Plugins.SortDestructureKeys,
'sort-exports': Plugins.SortExports,
},
rules: {
...Rules.ESLintComments,
...Rules.InclusiveLanguage,
...Rules.N,
...Rules.Promise,
...Rules.SortDestructureKeys,
...Rules.SortExports,
Expand Down
2 changes: 2 additions & 0 deletions config/eslint/build-legacy-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ const buildLegacyConfig = () => ({
plugins: [
'eslint-comments',
'inclusive-language',
'n',
'promise',
'sort-destructure-keys',
'sort-exports',
],
rules: {
...Rules.ESLintComments,
...Rules.InclusiveLanguage,
...Rules.N,
...Rules.Promise,
...Rules.SortDestructureKeys,
...Rules.SortExports,
Expand Down
12 changes: 6 additions & 6 deletions config/eslint/constants.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
const FILE_PATHS = {
TESTS: [
'*.spec.*',
'*.test.*',
'**/*.spec.*',
'**/*.test.*',
],
TESTS_TYPESCRIPT: [
'*.spec.ts',
'*.spec.tsx',
'*.test.ts',
'*.test.tsx',
'**/*.spec.ts',
'**/*.spec.tsx',
'**/*.test.ts',
'**/*.test.tsx',
]
}

Expand Down
2 changes: 2 additions & 0 deletions config/eslint/plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import InclusiveLanguage from 'eslint-plugin-inclusive-language'
import Jest from 'eslint-plugin-jest'
import JestFormatting from 'eslint-plugin-jest-formatting'
import Promise from 'eslint-plugin-promise'
import N from 'eslint-plugin-n'
import SortDestructureKeys from 'eslint-plugin-sort-destructure-keys'
import SortExports from 'eslint-plugin-sort-exports'

Expand All @@ -13,6 +14,7 @@ const Plugins = {
InclusiveLanguage,
Jest,
JestFormatting,
N,
Promise,
SortDestructureKeys,
SortExports,
Expand Down
2 changes: 2 additions & 0 deletions config/eslint/rules/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import ESLintComments from './eslint-comments'
import InclusiveLanguage from './inclusive-language'
import { Jest, JestTypescript } from './jest'
import JestFormatting from './jest-formatting'
import N from './n'
import Promise from './promise'
import SortDestructureKeys from './sort-destructure-keys'
import SortExports from './sort-exports'
Expand All @@ -12,6 +13,7 @@ const Rules = {
Jest,
JestFormatting,
JestTypescript,
N,
Promise,
SortDestructureKeys,
SortExports,
Expand Down
42 changes: 42 additions & 0 deletions config/eslint/rules/n.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// https://github.com/eslint-community/eslint-plugin-n

export default {
'n/callback-return': 1,
'n/exports-style': 0,
'n/file-extension-in-import': 0,
'n/global-require': 0,
'n/handle-callback-err': 0,
'n/hashbang': 2,
'n/no-callback-literal': 0,
'n/no-deprecated-api': 2,
'n/no-exports-assign': 2,
'n/no-extraneous-import': 0,
'n/no-extraneous-require': 0,
'n/no-missing-import': 0,
'n/no-missing-require': 0,
'n/no-mixed-requires': [2, { allowCall: true, grouping: true }],
'n/no-new-require': 2,
'n/no-path-concat': 2,
'n/no-process-env': 0,
'n/no-process-exit': 0, // TODO: Revisit this rule
'n/no-restricted-import': 0,
'n/no-restricted-require': 0,
'n/no-sync': 0,
'n/no-unpublished-bin': 2,
'n/no-unpublished-import': 0,
'n/no-unpublished-require': 0,
'n/no-unsupported-features/es-builtins': 2,
'n/no-unsupported-features/es-syntax': 2,
'n/no-unsupported-features/node-builtins': 2,
'n/prefer-global/buffer': 2,
'n/prefer-global/console': 2,
'n/prefer-global/process': 2,
'n/prefer-global/text-decoder': 2,
'n/prefer-global/text-encoder': 2,
'n/prefer-global/url': 2,
'n/prefer-global/url-search-params': 2,
'n/prefer-node-protocol': 2,
'n/prefer-promises/dns': 2,
'n/prefer-promises/fs': 2,
'n/process-exit-as-throw': 0,
}
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"eslint-plugin-inclusive-language": "2.2.1",
"eslint-plugin-jest": "28.6.0",
"eslint-plugin-jest-formatting": "3.1.0",
"eslint-plugin-n": "17.10.1",
"eslint-plugin-promise": "6.4.0",
"eslint-plugin-sort-destructure-keys": "2.0.0",
"eslint-plugin-sort-exports": "0.9.1",
Expand Down Expand Up @@ -69,6 +70,7 @@
"eslint-plugin-inclusive-language",
"eslint-plugin-jest",
"eslint-plugin-jest-formatting",
"eslint-plugin-n",
"eslint-plugin-promise",
"eslint-plugin-sort-destructure-keys",
"eslint-plugin-sort-exports",
Expand Down
4 changes: 2 additions & 2 deletions rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { readFileSync } from 'fs'
import { resolve } from 'path'
import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'

import { nodeResolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
Expand Down
6 changes: 3 additions & 3 deletions scripts/build-config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from 'fs'
import path from 'path'
import util from 'util'
import fs from 'node:fs'
import path from 'node:path'
import util from 'node:util'

const configFolder = './config'
const outputFolder = './lib'
Expand Down
20 changes: 10 additions & 10 deletions src/__tests__/filePatterns.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe('filePatterns', () => {
'**/*.{cjs,js,jsx,mjs,ts,tsx}',
]

expect(filePatterns.includePatterns[Linter.ESLint]).toEqual(expectedPatterns)
expect(filePatterns.includePatterns[Linter.ESLint]).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('ESLint Patterns', expectedPatterns)
})

Expand All @@ -29,7 +29,7 @@ describe('filePatterns', () => {
'foo',
]

expect(filePatterns.includePatterns[Linter.ESLint]).toEqual(expectedPatterns)
expect(filePatterns.includePatterns[Linter.ESLint]).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('ESLint Patterns', expectedPatterns)
})

Expand All @@ -44,7 +44,7 @@ describe('filePatterns', () => {
'bar',
]

expect(filePatterns.includePatterns[Linter.ESLint]).toEqual(expectedPatterns)
expect(filePatterns.includePatterns[Linter.ESLint]).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('ESLint Patterns', expectedPatterns)
})

Expand All @@ -55,7 +55,7 @@ describe('filePatterns', () => {
'**/*.{md,mdx}',
]

expect(filePatterns.includePatterns[Linter.Markdownlint]).toEqual(expectedPatterns)
expect(filePatterns.includePatterns[Linter.Markdownlint]).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Markdownlint Patterns', expectedPatterns)
})

Expand All @@ -66,7 +66,7 @@ describe('filePatterns', () => {
'**/*.{css,scss,less,sass,styl,stylus}',
]

expect(filePatterns.includePatterns[Linter.Stylelint]).toEqual(expectedPatterns)
expect(filePatterns.includePatterns[Linter.Stylelint]).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Stylelint Patterns', expectedPatterns)
})

Expand All @@ -78,7 +78,7 @@ describe('filePatterns', () => {
'**/*.+(map|min).*',
]

expect(filePatterns.ignorePatterns).toEqual(expectedPatterns)
expect(filePatterns.ignorePatterns).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Ignore', expectedPatterns)
})

Expand All @@ -92,7 +92,7 @@ describe('filePatterns', () => {
'**/*.+(map|min).*',
]

expect(filePatterns.ignorePatterns).toEqual(expectedPatterns)
expect(filePatterns.ignorePatterns).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Ignore', expectedPatterns)
})

Expand All @@ -106,7 +106,7 @@ describe('filePatterns', () => {
'**/*.+(map|min).*',
]

expect(filePatterns.ignorePatterns).toEqual(expectedPatterns)
expect(filePatterns.ignorePatterns).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Ignore', expectedPatterns)
})

Expand All @@ -121,7 +121,7 @@ describe('filePatterns', () => {
'foo',
]

expect(filePatterns.ignorePatterns).toEqual(expectedPatterns)
expect(filePatterns.ignorePatterns).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Ignore', expectedPatterns)
})

Expand All @@ -137,7 +137,7 @@ describe('filePatterns', () => {
'foo',
]

expect(filePatterns.ignorePatterns).toEqual(expectedPatterns)
expect(filePatterns.ignorePatterns).toStrictEqual(expectedPatterns)
expect(colourLog.config).toHaveBeenCalledWith('Ignore', expectedPatterns)
})

Expand Down
6 changes: 3 additions & 3 deletions src/__tests__/sourceFiles.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ describe('sourceFiles', () => {
const files = await sourceFiles(commonArgs)

expect(glob).toHaveBeenCalledWith(['*.ts'], { ignore: [ 'node_modules' ] })
expect(files).toEqual([])
expect(files).toStrictEqual([])
expect(colourLog.configDebug).toHaveBeenCalledWith('Sourced 0 files matching "*.ts" for ESLint:', [])
})

Expand All @@ -36,7 +36,7 @@ describe('sourceFiles', () => {
const files = await sourceFiles(commonArgs)

expect(glob).toHaveBeenCalledWith(['*.ts'], { ignore: [ 'node_modules' ] })
expect(files).toEqual(mockedFiles)
expect(files).toStrictEqual(mockedFiles)
expect(colourLog.configDebug).toHaveBeenCalledWith('Sourced 1 file matching "*.ts" for ESLint:', mockedFiles)
})

Expand All @@ -48,7 +48,7 @@ describe('sourceFiles', () => {
const files = await sourceFiles(commonArgs)

expect(glob).toHaveBeenCalledWith(['*.ts'], { ignore: [ 'node_modules' ] })
expect(files).toEqual(mockedFiles)
expect(files).toStrictEqual(mockedFiles)
expect(colourLog.configDebug).toHaveBeenCalledWith('Sourced 2 files matching "*.ts" for ESLint:', mockedFiles)
})

Expand Down
4 changes: 2 additions & 2 deletions src/linters/markdownlint/__tests__/loadConfig.spec.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import fs from 'fs'
import fs from 'node:fs'

import markdownlint from 'markdownlint'

import colourLog from '@Utils/colourLog'

import loadConfig from '../loadConfig'

jest.mock('fs')
jest.mock('node:fs')

describe('loadConfig', () => {

Expand Down
6 changes: 3 additions & 3 deletions src/linters/markdownlint/loadConfig.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'

import markdownlint, { type Configuration } from 'markdownlint'

Expand Down
8 changes: 4 additions & 4 deletions src/utils/__tests__/cache.spec.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import fs from 'fs'
import path from 'path'
import fs from 'node:fs'
import path from 'node:path'

import colourLog from '@Utils/colourLog'

import { clearCacheDirectory, getCacheDirectory } from '../cache'

jest.mock('fs')
jest.mock('node:fs')
jest.mock('@Utils/colourLog', () => ({
info: jest.fn(),
}))
Expand Down Expand Up @@ -47,7 +47,7 @@ describe('getCacheDirectory', () => {
const result = getCacheDirectory('.eslintcache')

expect(path.resolve).toHaveBeenCalledWith(process.cwd(), '.lintpilotcache', '.eslintcache')
expect(result).toEqual(`${process.cwd()}/.lintpilotcache/.eslintcache`)
expect(result).toBe(`${process.cwd()}/.lintpilotcache/.eslintcache`)
})

})
4 changes: 2 additions & 2 deletions src/utils/cache.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import fs from 'fs'
import path from 'path'
import fs from 'node:fs'
import path from 'node:path'

import colourLog from './colourLog'

Expand Down
Loading

0 comments on commit d36a0f6

Please sign in to comment.