# @santi020k/eslint-config-basic

> A comprehensive ESLint configuration package for JavaScript, TypeScript, React, Next.js, Astro, and Expo projects.

## AI Assistant Context
**Role**: You are a senior software engineer maintaining this high-quality ESLint config package.
**Goal**: Ensure code quality, type safety, and seamless developer experience (DX).
**Style**: Strict but practical. Prefer correctness over brevity.

## Quick Start

```js
import { ConfigOption, eslintConfig, OptionalOption } from '@santi020k/eslint-config-basic'

export default [
  ...eslintConfig({
    config: [ConfigOption.React, ConfigOption.Ts],
    optionals: [OptionalOption.Tailwind, OptionalOption.Vitest]
  })
]
```

## Architecture

This is a monorepo-style ESLint config package using ESLint 9 Flat Config format.

### Directory Structure

packages/
├── basic/            # Main entry point (@santi020k/eslint-config-basic)
│   ├── src/index.ts  # Exports eslintConfig()
│   └── dist/         # Build artifacts
├── core/             # Core logic and shared types
├── typescript/       # TypeScript config
├── react/            # React config
├── next/             # Next.js config
├── astro/            # Astro config
├── expo/             # Expo config
├── optionals/        # Optional feature configs
├── playground/       # Internal testing playground
└── tests/            # Integration tests

### Key Enums

- **ConfigOption**: `Ts`, `React`, `Next`, `Expo`, `Astro`
- **OptionalOption**: `Cspell`, `Tailwind`, `Vitest`, `I18next`, `Mdx`, `Markdown`, `Stencil`
- **SettingOption**: `Gitignore`

## Commands

```bash
npm run build       # Build with tsup
npm run lint        # Run ESLint
npm run lint:fix    # Fix linting issues
npm run dev         # Watch mode development
npm run inspector   # Open ESLint config inspector
```

## Adding New Configurations

1. Create a new package under `packages/` (e.g. `packages/vue`).
2. Implement the config in `src/index.ts` of that package.
3. Export it from the package's entry point.
4. Add to `ConfigOption` enum in `packages/core/src/types.ts`.
5. Wire up in `packages/basic/src/index.ts`.

## Tech Stack

- **Build**: tsup, TypeScript
- **ESLint**: v9+ Flat Config format
- **Package Manager**: npm/pnpm
- **Node**: ^18.18.0 || ^20.9.0 || >=21.1.0
