@santi020k/eslint-config-basic 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.agent/rules/context.md +78 -0
  2. package/.agent/rules/guidelines.md +124 -0
  3. package/.editorconfig +13 -0
  4. package/.env.example +8 -0
  5. package/.github/CODEOWNERS +2 -0
  6. package/.github/DISCUSSION_TEMPLATE/rfcs.yml +21 -0
  7. package/.github/DISCUSSION_TEMPLATE/technical-discussions.yml +21 -0
  8. package/.github/FUNDING.yml +2 -0
  9. package/.github/ISSUE_TEMPLATE/README.md +13 -0
  10. package/.github/ISSUE_TEMPLATE/bug_report.yml +69 -0
  11. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  12. package/.github/ISSUE_TEMPLATE/feature_request.yml +43 -0
  13. package/.github/ISSUE_TEMPLATE/question.yml +22 -0
  14. package/.github/SECURITY.md +12 -0
  15. package/.github/SPONSORSHIPS.md +27 -0
  16. package/.github/dependabot.yml +45 -0
  17. package/.github/labeler.yml +46 -0
  18. package/.github/pull_request_template.md +56 -0
  19. package/.github/workflows/assign-issues.yml +18 -0
  20. package/.github/workflows/audit.yml +22 -0
  21. package/.github/workflows/build.yml +29 -0
  22. package/.github/workflows/codeql.yml +40 -0
  23. package/.github/workflows/docs.yml +49 -0
  24. package/.github/workflows/labeler.yml +18 -0
  25. package/.github/workflows/publish.yml +24 -0
  26. package/.github/workflows/release.yml +35 -0
  27. package/.github/workflows/size-check.yml +23 -0
  28. package/.github/workflows/stale.yml +31 -0
  29. package/.nvmrc +1 -0
  30. package/.vscode/extensions.json +10 -0
  31. package/.vscode/settings.json +55 -0
  32. package/CHANGELOG.md +16 -0
  33. package/CONTRIBUTING.md +194 -0
  34. package/DEVELOPMENT.md +4 -0
  35. package/LICENSE +21 -0
  36. package/README.md +275 -0
  37. package/config/.husky/commit-msg +9 -0
  38. package/config/.husky/pre-commit +1 -0
  39. package/config/.husky/pre-push +1 -0
  40. package/config/.husky/prepare-commit-msg +1 -0
  41. package/cspell.config.yaml +2 -0
  42. package/eslint.config.js +21 -0
  43. package/llms.txt +72 -0
  44. package/package.json +61 -0
  45. package/packages/astro/README.md +13 -0
  46. package/packages/astro/package.json +45 -0
  47. package/packages/astro/src/ambient.d.ts +10 -0
  48. package/packages/astro/src/index.ts +18 -0
  49. package/packages/astro/src/rules.ts +29 -0
  50. package/packages/astro/tsconfig.json +9 -0
  51. package/packages/astro/tsup.config.ts +11 -0
  52. package/packages/basic/README.md +33 -0
  53. package/packages/basic/package.json +55 -0
  54. package/packages/basic/src/index.ts +110 -0
  55. package/packages/basic/tsconfig.json +9 -0
  56. package/packages/basic/tsup.config.ts +18 -0
  57. package/packages/core/README.md +14 -0
  58. package/packages/core/index.ts +14 -0
  59. package/packages/core/package.json +61 -0
  60. package/packages/core/src/ambient.d.ts +61 -0
  61. package/packages/core/src/index.ts +75 -0
  62. package/packages/core/src/rules.ts +157 -0
  63. package/packages/core/src/settings/gitignore.ts +10 -0
  64. package/packages/core/src/settings/index.ts +1 -0
  65. package/packages/core/src/types.ts +57 -0
  66. package/packages/core/src/utils/index.ts +28 -0
  67. package/packages/core/tsconfig.json +9 -0
  68. package/packages/core/tsup.config.ts +10 -0
  69. package/packages/expo/README.md +13 -0
  70. package/packages/expo/package.json +48 -0
  71. package/packages/expo/src/ambient.d.ts +3 -0
  72. package/packages/expo/src/index.ts +39 -0
  73. package/packages/expo/tsconfig.json +9 -0
  74. package/packages/expo/tsup.config.ts +11 -0
  75. package/packages/nest/package.json +45 -0
  76. package/packages/nest/src/ambient.d.ts +14 -0
  77. package/packages/nest/src/index.ts +20 -0
  78. package/packages/nest/src/rules.ts +15 -0
  79. package/packages/nest/tsconfig.json +9 -0
  80. package/packages/nest/tsup.config.ts +11 -0
  81. package/packages/next/README.md +13 -0
  82. package/packages/next/package.json +47 -0
  83. package/packages/next/src/index.ts +31 -0
  84. package/packages/next/src/rules.ts +16 -0
  85. package/packages/next/tsconfig.json +9 -0
  86. package/packages/next/tsup.config.ts +10 -0
  87. package/packages/optionals/README.md +18 -0
  88. package/packages/optionals/package.json +55 -0
  89. package/packages/optionals/src/ambient.d.ts +25 -0
  90. package/packages/optionals/src/cspell.ts +14 -0
  91. package/packages/optionals/src/i18next.ts +19 -0
  92. package/packages/optionals/src/index.ts +8 -0
  93. package/packages/optionals/src/markdown.ts +66 -0
  94. package/packages/optionals/src/mdx.ts +40 -0
  95. package/packages/optionals/src/stencil.ts +48 -0
  96. package/packages/optionals/src/tailwind.ts +11 -0
  97. package/packages/optionals/src/vitest.ts +61 -0
  98. package/packages/optionals/tsconfig.json +9 -0
  99. package/packages/optionals/tsup.config.ts +11 -0
  100. package/packages/playground/README.md +14 -0
  101. package/packages/playground/package.json +17 -0
  102. package/packages/playground/src/astro/eslint.config.js +4 -0
  103. package/packages/playground/src/js/eslint.config.js +4 -0
  104. package/packages/playground/src/js/index.test.js +63 -0
  105. package/packages/playground/src/mdx/eslint.config.js +4 -0
  106. package/packages/playground/src/mdx/index.mdx +115 -0
  107. package/packages/playground/src/react/eslint.config.js +4 -0
  108. package/packages/playground/src/react/index.test.jsx +130 -0
  109. package/packages/playground/src/ts/eslint.config.js +4 -0
  110. package/packages/playground/src/ts/index.test.ts +61 -0
  111. package/packages/playground/src/ts/tsconfig.json +3 -0
  112. package/packages/playground/tsconfig.json +9 -0
  113. package/packages/react/README.md +14 -0
  114. package/packages/react/index.ts +26 -0
  115. package/packages/react/package.json +49 -0
  116. package/packages/react/src/ambient.d.ts +23 -0
  117. package/packages/react/src/index.ts +52 -0
  118. package/packages/react/src/rules.ts +47 -0
  119. package/packages/react/tsconfig.json +9 -0
  120. package/packages/react/tsup.config.ts +10 -0
  121. package/packages/tests/README.md +17 -0
  122. package/packages/tests/package.json +21 -0
  123. package/packages/tests/src/__snapshots__/snapshots.test.ts.snap +654 -0
  124. package/packages/tests/src/composition.test.ts +171 -0
  125. package/packages/tests/src/configs.test.ts +118 -0
  126. package/packages/tests/src/rules.test.ts +60 -0
  127. package/packages/tests/src/snapshots.test.ts +126 -0
  128. package/packages/tests/tsconfig.json +10 -0
  129. package/packages/tests/vitest.config.ts +8 -0
  130. package/packages/typescript/README.md +14 -0
  131. package/packages/typescript/package.json +47 -0
  132. package/packages/typescript/src/index.ts +32 -0
  133. package/packages/typescript/src/rules.ts +36 -0
  134. package/packages/typescript/tsconfig.json +9 -0
  135. package/packages/typescript/tsup.config.ts +10 -0
  136. package/tsconfig.base.json +20 -0
  137. package/tsconfig.docs.json +18 -0
  138. package/turbo.json +19 -0
  139. package/typedoc.config.mjs +25 -0
  140. package/typedoc.markdown.mjs +26 -0
@@ -0,0 +1,29 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ node-version: [20.x, 22.x]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v6
19
+ - name: Use Node.js ${{ matrix.node-version }}
20
+ uses: actions/setup-node@v6
21
+ with:
22
+ node-version: ${{ matrix.node-version }}
23
+ cache: 'npm'
24
+ - run: npm ci
25
+ - run: npm run build
26
+ - run: npm run lint
27
+ - run: npm run test
28
+ - name: Dry-run publish check
29
+ run: npm publish --dry-run -w packages/basic
@@ -0,0 +1,40 @@
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+ pull_request:
7
+ branches: [ "main" ]
8
+ schedule:
9
+ - cron: '21 7 * * 0'
10
+
11
+ jobs:
12
+ analyze:
13
+ name: Analyze
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ language: [ 'javascript', 'typescript' ]
24
+
25
+ steps:
26
+ - name: Checkout repository
27
+ uses: actions/checkout@v4
28
+
29
+ - name: Initialize CodeQL
30
+ uses: github/codeql-action/init@v3
31
+ with:
32
+ languages: ${{ matrix.language }}
33
+
34
+ - name: Autobuild
35
+ uses: github/codeql-action/autobuild@v3
36
+
37
+ - name: Perform CodeQL Analysis
38
+ uses: github/codeql-action/analyze@v3
39
+ with:
40
+ category: "/language:${{matrix.language}}"
@@ -0,0 +1,49 @@
1
+ name: Deploy Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: pages
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+ - name: Setup Node
24
+ uses: actions/setup-node@v6
25
+ with:
26
+ node-version: '22'
27
+ cache: 'npm'
28
+ - run: npm ci
29
+ - run: npm run build
30
+ - name: Generate docs
31
+ run: npm run docs
32
+ - name: Create .nojekyll
33
+ run: touch docs/.nojekyll
34
+ - name: Upload Pages artifact
35
+ uses: actions/upload-pages-artifact@v4
36
+ with:
37
+ path: docs
38
+
39
+ deploy:
40
+ needs: build
41
+ runs-on: ubuntu-latest
42
+ environment:
43
+ name: github-pages
44
+ url: ${{ steps.deployment.outputs.page_url }}
45
+
46
+ steps:
47
+ - name: Deploy to GitHub Pages
48
+ id: deployment
49
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,18 @@
1
+ name: PR Labeler
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, synchronize, reopened]
6
+
7
+ permissions:
8
+ contents: read
9
+ pull-requests: write
10
+
11
+ jobs:
12
+ label:
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/labeler@v6
17
+ with:
18
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,24 @@
1
+ name: Publish to NPM
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: Checkout
13
+ uses: actions/checkout@v6
14
+ - name: Setup Node
15
+ uses: actions/setup-node@v6
16
+ with:
17
+ node-version: '22'
18
+ registry-url: 'https://registry.npmjs.org'
19
+ - name: Install dependencies and build
20
+ run: npm ci && npm run build
21
+ - name: Publish package on NPM
22
+ run: npm publish -w packages/basic
23
+ env:
24
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -0,0 +1,35 @@
1
+ name: Releases
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ changelog:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+
14
+ steps:
15
+ - name: Check out repository
16
+ uses: actions/checkout@v6
17
+
18
+ - name: Generate Conventional Changelog
19
+ id: changelog
20
+ uses: TriPSs/conventional-changelog-action@v6
21
+ with:
22
+ github-token: ${{ secrets.PA_TOKEN }}
23
+ version-file: './package.json,./package-lock.json'
24
+
25
+ - name: Create GitHub Release
26
+ if: ${{ steps.changelog.outputs.skipped == 'false' }}
27
+ uses: softprops/action-gh-release@v2
28
+ with:
29
+ tag_name: ${{ steps.changelog.outputs.tag }}
30
+ name: ${{ steps.changelog.outputs.tag }}
31
+ body: ${{ steps.changelog.outputs.clean_changelog }}
32
+ draft: false
33
+ prerelease: false
34
+ env:
35
+ GITHUB_TOKEN: ${{ secrets.PA_TOKEN }}
@@ -0,0 +1,23 @@
1
+ name: Package Size
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main]
6
+
7
+ jobs:
8
+ size:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ pull-requests: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+ - uses: pkg-size/action@v1
17
+ with:
18
+ build-command: npm run build
19
+ display-size: uncompressed,gzip
20
+ comment-report: true
21
+ unchanged-files: collapse
22
+ env:
23
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,31 @@
1
+ name: Stale Issues & PRs
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 0 * * *' # Daily at midnight UTC
6
+
7
+ permissions:
8
+ issues: write
9
+ pull-requests: write
10
+
11
+ jobs:
12
+ stale:
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/stale@v10
17
+ with:
18
+ stale-issue-message: >
19
+ This issue has been automatically marked as stale because it has not had
20
+ recent activity. It will be closed in 7 days if no further activity occurs.
21
+ stale-pr-message: >
22
+ This PR has been automatically marked as stale because it has not had
23
+ recent activity. It will be closed in 7 days if no further activity occurs.
24
+ days-before-issue-stale: 30
25
+ days-before-issue-close: 7
26
+ days-before-pr-stale: 14
27
+ days-before-pr-close: 7
28
+ stale-issue-label: stale
29
+ stale-pr-label: stale
30
+ exempt-issue-labels: pinned,security
31
+ exempt-pr-labels: pinned,security
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ v22.9.0
@@ -0,0 +1,10 @@
1
+ {
2
+ "recommendations": [
3
+ "davidanson.vscode-markdownlint",
4
+ "dbaeumer.vscode-eslint",
5
+ "editorconfig.editorconfig",
6
+ "streetsidesoftware.code-spell-checker",
7
+ "mrmlnc.vscode-json5"
8
+ ],
9
+ "unwantedRecommendations": ["hookyqr.beautify", "dbaeumer.jshint"]
10
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ // This matches the value configured on the autoformatter
3
+ "editor.rulers": [80],
4
+
5
+ // An array of language ids which should be validated by ESLint
6
+ "eslint.validate": [
7
+ "javascript",
8
+ "javascriptreact",
9
+ "typescript",
10
+ "typescriptreact",
11
+ "markdown",
12
+ "md",
13
+ "mdx"
14
+ ],
15
+ // required to make the extension pickup the flat config
16
+ "eslint.useFlatConfig": true,
17
+
18
+ // When enabled, will trim trailing whitespace when saving a file.
19
+ "files.trimTrailingWhitespace": true,
20
+
21
+ // typescript auto-format settings
22
+ "typescript.tsdk": "node_modules/typescript/lib",
23
+ "javascript.preferences.importModuleSpecifier": "project-relative",
24
+ "typescript.preferences.importModuleSpecifier": "project-relative",
25
+ "javascript.preferences.quoteStyle": "single",
26
+ "typescript.preferences.quoteStyle": "single",
27
+
28
+ // make the .shot files from jest-specific-snapshot act like normal snapshots
29
+ "files.associations": {
30
+ "*.shot": "jest-snapshot"
31
+ },
32
+
33
+ "editor.formatOnSave": true,
34
+ "editor.formatOnPaste": true,
35
+ "[typescriptreact]": {
36
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint"
37
+ },
38
+ "[scss]": {
39
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint"
40
+ },
41
+ "files.exclude": {
42
+ "**/.git": true,
43
+ "**/.svn": true,
44
+ "**/.hg": true,
45
+ "**/CVS": true,
46
+ "**/.DS_Store": true,
47
+ "**/Thumbs.db": true,
48
+ "**/node_modules": false
49
+ },
50
+ "[typescript]": {
51
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint"
52
+ },
53
+ "eslint.runtime": "/Users/san/.nvm/versions/node/v22.9.0/bin/node",
54
+ "json.trace.server": "verbose",
55
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # 0.1.0 (2026-02-10)
2
+
3
+
4
+ ### Features
5
+
6
+ * Add and scripts to . ([9438293](https://github.com/santi020k/eslint-config-basic/commit/94382934292682ac82a24a4bf433b621687a23cb))
7
+ * Add Vitest ESLint configuration and include test files in linting and TypeScript compilation. ([db249e0](https://github.com/santi020k/eslint-config-basic/commit/db249e06d0c3270a5b61d7a77706cdd5f1773e0f))
8
+ * Add Vitest for comprehensive testing of ESLint configurations and rules. ([452d988](https://github.com/santi020k/eslint-config-basic/commit/452d988eb265fdd3abe0af0f690d86b77b4031d6))
9
+ * Implement GitHub Actions for repository automation, including stale issue management, dependency updates, PR labeling, security audits, package size checks, and an updated build workflow ([d5e77b7](https://github.com/santi020k/eslint-config-basic/commit/d5e77b7f8b12c7854892606172495c03f1db6052))
10
+ * Initial commit ([e527968](https://github.com/santi020k/eslint-config-basic/commit/e527968e975a9a0b5451eaee4462c315fe3c525b))
11
+ * Introduce AI agent guidelines, instructions, and project context, alongside minor code formatting and updated ESLint ignore patterns. ([c2e0d74](https://github.com/santi020k/eslint-config-basic/commit/c2e0d749ae92666e529517c02356ab385755cb0d))
12
+ * **nest:** Add NestJS ESLint Configuration Package ([#7](https://github.com/santi020k/eslint-config-basic/issues/7)) ([73d11df](https://github.com/santi020k/eslint-config-basic/commit/73d11df268e1f9fa524f66459274d3e4310c7db5))
13
+ * restructure ESLint configuration into a monorepo with core, TypeScript, React, and Next.js packages, and implement a new build system using tsup and TurboRepo. ([f5516c6](https://github.com/santi020k/eslint-config-basic/commit/f5516c6ebb9a5a06bd86420b62c98bd125aff03c))
14
+
15
+
16
+
@@ -0,0 +1,194 @@
1
+ # Contributing to @santi020k/eslint-config-basic
2
+
3
+ Thank you for your interest in contributing! This guide will help you get started.
4
+
5
+ ## Prerequisites
6
+
7
+ - Node.js (version specified in `.nvmrc`)
8
+ - npm
9
+
10
+ ## Setup
11
+
12
+ ```bash
13
+ # Clone the repository
14
+ git clone https://github.com/santi020k/eslint-config-basic.git
15
+ cd eslint-config-basic
16
+
17
+ # Install dependencies
18
+ npm install
19
+
20
+ # Build all packages
21
+ npm run build
22
+ ```
23
+
24
+ ## Monorepo Structure
25
+
26
+ This project uses **Turborepo** with **npm Workspaces**. Each ESLint config lives in its own package under `packages/`:
27
+
28
+ | Package | Path | Description |
29
+ |---------|------|-------------|
30
+ | `@santi020k/eslint-config-basic` | `packages/basic` | Main entry point, composes all configs |
31
+ | `@santi020k/eslint-config-core` | `packages/core` | Core JS rules, types, utilities |
32
+ | `@santi020k/eslint-config-typescript` | `packages/typescript` | TypeScript rules |
33
+ | `@santi020k/eslint-config-react` | `packages/react` | React + Hooks rules |
34
+ | `@santi020k/eslint-config-next` | `packages/next` | Next.js rules |
35
+ | `@santi020k/eslint-config-astro` | `packages/astro` | Astro rules |
36
+ | `@santi020k/eslint-config-expo` | `packages/expo` | Expo/React Native rules |
37
+ | `@santi020k/eslint-config-optionals` | `packages/optionals` | Optional configs (Tailwind, Vitest, etc.) |
38
+
39
+ ## Adding a New Framework Config
40
+
41
+ 1. **Create the package directory:**
42
+
43
+ ```bash
44
+ mkdir -p packages/myframework/src
45
+ ```
46
+
47
+ 2. **Create `packages/myframework/package.json`:**
48
+
49
+ ```json
50
+ {
51
+ "name": "@santi020k/eslint-config-myframework",
52
+ "version": "0.0.0",
53
+ "type": "module",
54
+ "main": "./dist/index.js",
55
+ "module": "./dist/index.js",
56
+ "types": "./dist/index.d.ts",
57
+ "exports": {
58
+ ".": {
59
+ "import": "./dist/index.js",
60
+ "types": "./dist/index.d.ts"
61
+ }
62
+ },
63
+ "files": ["dist"],
64
+ "scripts": {
65
+ "build": "tsup",
66
+ "dev": "tsup --watch",
67
+ "clean": "rm -rf dist"
68
+ },
69
+ "dependencies": {
70
+ "@santi020k/eslint-config-core": "*"
71
+ },
72
+ "devDependencies": {
73
+ "tsup": "^8.5.1",
74
+ "typescript": "^5.9.3",
75
+ "@typescript-eslint/utils": "^8.54.0"
76
+ }
77
+ }
78
+ ```
79
+
80
+ 3. **Create `packages/myframework/tsconfig.json`:**
81
+
82
+ ```json
83
+ {
84
+ "extends": "../../tsconfig.base.json",
85
+ "compilerOptions": {
86
+ "outDir": "./dist",
87
+ "rootDir": "./src"
88
+ },
89
+ "include": ["src/**/*.ts"],
90
+ "exclude": ["node_modules", "dist"]
91
+ }
92
+ ```
93
+
94
+ 4. **Create `packages/myframework/tsup.config.ts`** (copy from an existing package).
95
+
96
+ 5. **Create `packages/myframework/src/index.ts`:**
97
+
98
+ ```typescript
99
+ import type { TSESLint } from '@typescript-eslint/utils'
100
+
101
+ export const myframeworkConfig: TSESLint.FlatConfig.ConfigArray = [
102
+ {
103
+ name: 'eslint-config/myframework',
104
+ rules: {
105
+ // Add your rules here
106
+ }
107
+ }
108
+ ]
109
+ ```
110
+
111
+ 6. **Add to `ConfigOption` enum** in `packages/core/src/types.ts`.
112
+
113
+ 7. **Wire into `eslintConfig()`** in `packages/basic/src/index.ts`.
114
+
115
+ 8. **Add tests** in `packages/tests/src/`.
116
+ 9. **Update `ConfigOption` enum** in `packages/core/src/types.ts`.
117
+ 10. **Wire into `eslintConfig()`** in `packages/basic/src/index.ts`.
118
+
119
+ ### Specific Framework Guides
120
+
121
+ #### React, Next.js, Astro, Expo, NestJS
122
+ These are already implemented. See their respective `packages/` for reference.
123
+
124
+ #### Vue (Future)
125
+ 1. Create `packages/vue`.
126
+ 2. Extend `eslint-plugin-vue` configs.
127
+ 3. Ensure TS compatibility.
128
+
129
+ #### Angular (Future)
130
+ 1. Create `packages/angular`.
131
+ 2. Use `angular-eslint` capabilities.
132
+ 3. Note: Angular often requires a specific `builder` context.
133
+
134
+
135
+
136
+ ## Adding a New Optional
137
+
138
+ 1. Create `packages/optionals/src/configs/myoptional.ts` with your config.
139
+ 2. Export from `packages/optionals/src/index.ts`.
140
+ 3. Add to `OptionalOption` enum in `packages/core/src/types.ts`.
141
+ 4. Wire into `eslintConfig()` in `packages/basic/src/index.ts`.
142
+
143
+ ## Available Commands
144
+
145
+ ```bash
146
+ npm run build # Build all packages (Turborepo)
147
+ npm run lint # Lint entire monorepo
148
+ npm run lint:fix # Fix lint issues
149
+ npm run test # Run tests (Vitest)
150
+ npm run dev # Watch mode
151
+ npm run dev # Watch mode
152
+ npm run inspector # Visual ESLint config inspector
153
+ ```
154
+
155
+ ## Documentation
156
+
157
+ Full API documentation is available at [santi020k.github.io/eslint-config-basic](https://santi020k.github.io/eslint-config-basic/).
158
+
159
+ ## Commit Conventions
160
+
161
+ This project uses [Conventional Commits](https://www.conventionalcommits.org/). Use one of the following prefixes:
162
+
163
+ - `feat:` — New feature
164
+ - `fix:` — Bug fix
165
+ - `docs:` — Documentation only
166
+ - `style:` — Formatting, no code change
167
+ - `refactor:` — Code restructuring
168
+ - `perf:` — Performance improvement
169
+ - `test:` — Adding or updating tests
170
+ - `build:` — Build system changes
171
+ - `ci:` — CI/CD changes
172
+ - `chore:` — Maintenance tasks
173
+ - `revert:` — Revert a previous commit
174
+
175
+ You can use the interactive commit helper:
176
+
177
+ ```bash
178
+ npx cz
179
+ ```
180
+
181
+ ## Pull Request Guidelines
182
+
183
+ 1. Fork the repository and create your branch from `main`.
184
+ 2. Make sure all checks pass:
185
+ ```bash
186
+ npm run build && npm run lint && npm run test
187
+ ```
188
+ 3. Write clear, descriptive commit messages following conventional commits.
189
+ 4. Update documentation if you're changing public APIs.
190
+ 5. Add tests for new functionality.
191
+
192
+ ## Questions?
193
+
194
+ Open an [issue](https://github.com/santi020k/eslint-config/issues) or start a [discussion](https://github.com/santi020k/eslint-config/discussions).
package/DEVELOPMENT.md ADDED
@@ -0,0 +1,4 @@
1
+ # Development
2
+
3
+ See **[https://github.com/santi020k/eslint-config-santi020k/README.md](https://github.com/santi020k/eslint-config-santi020k/README.md)** for our development instructions.
4
+ Thanks! 💖
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 santi020k
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.