Skip to content

Commit

Permalink
Improve(ESLint): Expose configs
Browse files Browse the repository at this point in the history
  • Loading branch information
1aron committed Nov 26, 2024
1 parent 2143bba commit 9a44e1b
Show file tree
Hide file tree
Showing 9 changed files with 204 additions and 59 deletions.
8 changes: 4 additions & 4 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import tseslint from 'typescript-eslint'
import techor from 'eslint-config-techor'

export default tseslint.config(
techor.configs.recommended
)
export default [
techor.configs.typescript,
techor.configs.core
]
1 change: 0 additions & 1 deletion packages/cross-import/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ export default function crossImport(modulePath: string): any {
} catch { /* empty */ }
try {
if (process.env.DEBUG) console.log('[cross-import] require:', modulePath)
// eslint-disable-next-line @typescript-eslint/no-require-imports
return require(modulePath)
} catch (error) {
if (process.env.DEBUG) {
Expand Down
26 changes: 26 additions & 0 deletions packages/eslint-config/configs/typescript.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* eslint-disable no-undef */
const parser = require('@typescript-eslint/parser')
const eslintPlugin = require('@typescript-eslint/eslint-plugin')

/** @type {import('eslint').Config} */
module.exports = {
languageOptions: {
parser,
parserOptions: {
projectService: true,
tsconfigRootDir: __dirname,
sourceType: 'module'
},
ecmaVersion: 'latest',
globals: {
node: true,
browser: true,
es2021: true,
jest: true
}
},
plugins: {
'@typescript-eslint': eslintPlugin,
},
files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts']
}
32 changes: 32 additions & 0 deletions packages/eslint-config/core.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* eslint-disable no-undef */
const typescript = require('@typescript-eslint/eslint-plugin')

module.exports = {
rules: {
...typescript.configs['recommended'].rules,
...typescript.configs['strict'].rules,
...typescript.configs['stylistic'].rules,

// stylistic
'linebreak-style': 0,
'no-case-declarations': 'off',
'indent': ['off', 4],
'quotes': ['error', 'single', { 'allowTemplateLiterals': true }],
'semi': ['error', 'never'],

// typescript-eslint
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/no-unnecessary-condition': 'off',
'@typescript-eslint/no-dynamic-delete': 'off',
},
ignores: [
'dist/**'
]
}
21 changes: 14 additions & 7 deletions packages/eslint-config/index.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-require-imports */

const recommended = require('./recommended')
const typescript = require('./configs/typescript')
const core = require('./core')

/** @type {import('@typescript-eslint/utils/ts-eslint').ClassicConfig} */
module.exports = {
configs: {
recommended
core,
typescript
},
env: {
node: true,
browser: true,
es2021: true,
jest: true
},
env: recommended.languageOptions.globals,
overrides: [],
parserOptions: {
ecmaVersion: recommended.languageOptions.ecmaVersion,
sourceType: recommended.languageOptions.sourceType
ecmaVersion: 'latest',
sourceType: 'module'
},
rules: recommended.rules,
ignorePatterns: recommended.ignores,
rules: core.rules,
ignorePatterns: core.ignores,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
Expand Down
4 changes: 3 additions & 1 deletion packages/eslint-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@
"main": "./index.js",
"files": [
"./index.js",
"./recommended.js"
"./core.js",
"configs"
],
"dependencies": {
"@eslint/js": "",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"typescript-eslint": ""
},
"peerDependencies": {
Expand Down
45 changes: 0 additions & 45 deletions packages/eslint-config/recommended.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/extend/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ function cloneSpecificValue(val) {
/**
* Recursive cloning array.
*/
function deepCloneArray(arr) {
function deepCloneArray(arr: any[]) {
const clone = []
arr.forEach(function (item, index) {
if (typeof item === 'object' && item !== null) {
Expand Down
Loading

0 comments on commit 9a44e1b

Please sign in to comment.