read gitignore

This commit is contained in:
Alex 2024-10-20 01:55:49 -04:00
parent 553965243f
commit 511652dd48
8 changed files with 79 additions and 2307 deletions

View File

@ -26,18 +26,21 @@ export type Middleware =
* Non bundled:
* 1. [`graphql`](https://the-guild.dev/graphql/eslint/rules)
*
* @param of Configuration options.
* @returns ESLint configuration object.
*/
export function extendConfig({
auto,
middlewares: addMiddlewares,
configs,
}: {
export function extendConfig(
options:
| FlatESLintConfig[]
| {
auto?: boolean;
middlewares?: Middleware[];
configs: FlatESLintConfig[];
}): Promise<FlatESLintConfig[]>;
/**
* Use `.gitignore` file to exclude files from ESLint.
*/
gitignore?: boolean;
},
): Promise<FlatESLintConfig[]>;
export const error = 'error';
export const warn = 'warn';

6
dist/package.json vendored
View File

@ -1,6 +1,6 @@
{
"name": "@aet/eslint-rules",
"version": "2.0.1-beta.8",
"version": "2.0.1-beta.11",
"license": "UNLICENSED",
"type": "module",
"bin": {
@ -18,8 +18,8 @@
"dependencies": {
"@antfu/install-pkg": "^0.4.1",
"@nolyfill/is-core-module": "^1.0.39",
"@aet/eslint-define-config": "^0.1.0-beta.28",
"@eslint/js": "^9.12.0",
"@aet/eslint-define-config": "^0.1.0-beta.29",
"@eslint/js": "^9.13.0",
"@eslint-community/eslint-utils": "^4.4.0",
"@types/eslint": "^9.6.1",
"@typescript-eslint/eslint-plugin": "^8.10.0",

2267
dist/pnpm-lock.yaml generated vendored

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,7 @@
"@types/babel-plugin-macros": "^3.1.3",
"@types/babel__core": "^7.20.5",
"@types/eslint": "^9.6.1",
"@types/eslint-config-prettier": "^6.11.3",
"@types/eslint-plugin-tailwindcss": "^3.17.0",
"@types/eslint__js": "^8.42.3",
"@types/esprima": "^4.0.6",

8
pnpm-lock.yaml generated
View File

@ -72,6 +72,9 @@ importers:
'@types/eslint':
specifier: ^9.6.1
version: 9.6.1
'@types/eslint-config-prettier':
specifier: ^6.11.3
version: 6.11.3
'@types/eslint-plugin-tailwindcss':
specifier: ^3.17.0
version: 3.17.0
@ -1360,6 +1363,9 @@ packages:
'@types/babel__traverse@7.20.6':
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
'@types/eslint-config-prettier@6.11.3':
resolution: {integrity: sha512-3wXCiM8croUnhg9LdtZUJQwNcQYGWxxdOWDjPe1ykCqJFPVpzAKfs/2dgSoCtAvdPeaponcWPI7mPcGGp9dkKQ==}
'@types/eslint-plugin-tailwindcss@3.17.0':
resolution: {integrity: sha512-ucQGf2YIdTcndYcxRU3UdZgmhUHsOlbIF4BaRtl0op+7k2JmqM2i3aXZ6XIcfZgVq1ZKov7VM5c/BR81ukmkyg==}
@ -4368,6 +4374,8 @@ snapshots:
dependencies:
'@babel/types': 7.25.2
'@types/eslint-config-prettier@6.11.3': {}
'@types/eslint-plugin-tailwindcss@3.17.0':
dependencies:
'@types/eslint': 9.6.1

View File

@ -12,16 +12,16 @@
"subject": "fix(deps): update dependency debug to ^4.3.7 (#316)"
},
"eslint-plugin-jsx-a11y": {
"hash": "4925ba8d0bf80a4b1d8e8645d310590bf1b40b64",
"date": "2024-09-20T14:09:27-07:00",
"hash": "cb6788c56d7108f2faa102d041dfa37dbc0e9f59",
"date": "2024-10-18T16:13:23+10:00",
"committer": "Jordan Harband",
"subject": "[Fix] handle interactive/noninteractive changes from aria-query"
"subject": "[Docs] Use consistent spelling of 'screen reader'"
},
"eslint-plugin-n": {
"hash": "23d0e846e9dbfb68ccf7f410a83457514d432263",
"date": "2024-10-09T13:49:20+02:00",
"hash": "bf34ca53864e059e3fbf632f33429ba10a75ee9b",
"date": "2024-10-19T14:26:54+02:00",
"committer": "GitHub",
"subject": "chore(master): release 17.11.1 (#352)"
"subject": "fix: update dependencies (#365)"
},
"eslint-plugin-react": {
"hash": "983b88dd3cb5e07919517d3fde4085f60883ded7",

17
src/config.d.ts vendored
View File

@ -26,18 +26,21 @@ export type Middleware =
* Non bundled:
* 1. [`graphql`](https://the-guild.dev/graphql/eslint/rules)
*
* @param of Configuration options.
* @returns ESLint configuration object.
*/
export function extendConfig({
auto,
middlewares: addMiddlewares,
configs,
}: {
export function extendConfig(
options:
| FlatESLintConfig[]
| {
auto?: boolean;
middlewares?: Middleware[];
configs: FlatESLintConfig[];
}): Promise<FlatESLintConfig[]>;
/**
* Use `.gitignore` file to exclude files from ESLint.
*/
gitignore?: boolean;
},
): Promise<FlatESLintConfig[]>;
export const error = 'error';
export const warn = 'warn';

View File

@ -1,5 +1,8 @@
import fs from 'node:fs';
import type { FlatESLintConfig } from '@aet/eslint-define-config';
import * as tsParser from '@typescript-eslint/parser';
import prettier from 'eslint-config-prettier';
import importPlugin from 'eslint-plugin-import-x';
import { uniq } from 'lodash-es';
import tseslint from 'typescript-eslint';
@ -14,15 +17,23 @@ import unicorn from './presets/unicorn';
export { error, warn, off } from './constants';
export async function extendConfig({
auto = true,
middlewares: addMiddlewares = [],
configs = [],
}: {
export async function extendConfig(
options:
| FlatESLintConfig[]
| {
auto?: boolean;
middlewares?: Middleware[];
configs: FlatESLintConfig[];
}): Promise<FlatESLintConfig[]> {
gitignore?: boolean;
},
): Promise<FlatESLintConfig[]> {
const {
auto = true,
middlewares: addMiddlewares = [],
configs = [],
gitignore = true,
} = Array.isArray(options) ? { configs: options } : options;
const middlewares: Middleware[] = uniq([
() => import('./presets/custom'),
...(auto ? checkEnv() : []),
@ -41,7 +52,7 @@ export async function extendConfig({
...unicorn,
stylistic,
{
name: 'eslint-rules: TypeScript and import-x',
name: 'eslint-rules/typescript-and-import-x',
files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'],
languageOptions: {
parserOptions: {
@ -81,7 +92,7 @@ export async function extendConfig({
},
},
{
name: 'eslint-rules: .d.ts files',
name: 'eslint-rules/.d.ts-files',
files: ['*.d.ts'],
rules: {
'@typescript-eslint/consistent-type-imports': off,
@ -106,5 +117,18 @@ export async function extendConfig({
result.push(...configs);
}
result.push(prettier);
if (gitignore && fs.existsSync('.gitignore')) {
const ignores = fs
.readFileSync('.gitignore', 'utf8')
.trim()
.split('\n')
.map(line => line.trim())
.filter(line => line && !line.startsWith('#'));
result.push({ ignores });
}
return result;
}