@gaia-react/lint 1.0.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.
- package/LICENSE +21 -0
- package/README.md +259 -0
- package/dist/configs/base.d.ts +3 -0
- package/dist/configs/base.d.ts.map +1 -0
- package/dist/configs/better-tailwind.d.ts +17 -0
- package/dist/configs/better-tailwind.d.ts.map +1 -0
- package/dist/configs/guardrails.d.ts +3 -0
- package/dist/configs/guardrails.d.ts.map +1 -0
- package/dist/configs/ignores.d.ts +17 -0
- package/dist/configs/ignores.d.ts.map +1 -0
- package/dist/configs/playwright.d.ts +10 -0
- package/dist/configs/playwright.d.ts.map +1 -0
- package/dist/configs/prettier.d.ts +11 -0
- package/dist/configs/prettier.d.ts.map +1 -0
- package/dist/configs/react.d.ts +14 -0
- package/dist/configs/react.d.ts.map +1 -0
- package/dist/configs/storybook.d.ts +9 -0
- package/dist/configs/storybook.d.ts.map +1 -0
- package/dist/configs/style-hygiene.d.ts +3 -0
- package/dist/configs/style-hygiene.d.ts.map +1 -0
- package/dist/configs/testing.d.ts +10 -0
- package/dist/configs/testing.d.ts.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +904 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/no-enum.d.ts +4 -0
- package/dist/plugins/no-enum.d.ts.map +1 -0
- package/dist/plugins/no-switch.d.ts +4 -0
- package/dist/plugins/no-switch.d.ts.map +1 -0
- package/package.json +88 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Steven Sacks
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# @gaia-react/lint
|
|
2
|
+
|
|
3
|
+
GAIA's lint configuration.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
pnpm add -D @gaia-react/lint eslint prettier typescript
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
The block below is the actual `eslint.config.mjs` shipped by GAIA. Copy it
|
|
14
|
+
verbatim and adjust the override block at the bottom for your project.
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
import gaiaLint from '@gaia-react/lint';
|
|
18
|
+
import {defineConfig} from 'eslint/config';
|
|
19
|
+
|
|
20
|
+
export default defineConfig([
|
|
21
|
+
...gaiaLint.ignores({gitignore: '.gitignore'}),
|
|
22
|
+
...gaiaLint.base,
|
|
23
|
+
...gaiaLint.react,
|
|
24
|
+
...gaiaLint.testing,
|
|
25
|
+
...gaiaLint.storybook,
|
|
26
|
+
...gaiaLint.playwright,
|
|
27
|
+
...gaiaLint.styleHygiene,
|
|
28
|
+
...gaiaLint.guardrails,
|
|
29
|
+
...gaiaLint.betterTailwind({
|
|
30
|
+
entryPoint: './app/styles/tailwind.css',
|
|
31
|
+
ignore: ['plain-link', 'plain-table'],
|
|
32
|
+
}),
|
|
33
|
+
...gaiaLint.prettier,
|
|
34
|
+
]);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Exports
|
|
38
|
+
|
|
39
|
+
| Export | Shape | Includes | Required? |
|
|
40
|
+
| ---------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |
|
|
41
|
+
| `base` | `Linter.Config[]` | JS recommended, TypeScript (typescript-eslint), `import-x`, `eslint-comments`, `prefer-arrow-functions`, lodash/underscore guard | required |
|
|
42
|
+
| `react` | `Linter.Config[]` | `eslint-plugin-react`, `react-hooks`, `jsx-a11y`, GAIA-specific React rules | required for React apps |
|
|
43
|
+
| `styleHygiene` | `Linter.Config[]` | `canonical`, `perfectionist`, `unicorn`, `unused-imports`, `check-file` | required |
|
|
44
|
+
| `guardrails` | `Linter.Config[]` | `no-enum` (custom), `no-switch` (custom), `no-relative-import-paths`, `sonarjs`, `eslint-comments`, `import-x`, `prefer-arrow-functions` | required |
|
|
45
|
+
| `testing` | `Linter.Config[]` | Vitest + Testing Library config scoped to `*.test.*` and `test/` | optional |
|
|
46
|
+
| `storybook` | `Linter.Config[]` | `eslint-plugin-storybook` scoped to `*.stories.*` | optional |
|
|
47
|
+
| `playwright` | `Linter.Config[]` | `eslint-plugin-playwright` scoped to `e2e/` | optional |
|
|
48
|
+
| `prettier` | `Linter.Config[]` | `eslint-config-prettier` — must be **last** to disable formatting rules | required if using Prettier |
|
|
49
|
+
| `betterTailwind` | `(opts) => Linter.Config[]` | `eslint-plugin-better-tailwindcss` factory; takes `entryPoint` (path to Tailwind entry CSS) and optional `ignore` (class names to skip) | optional |
|
|
50
|
+
| `ignores` | `(opts?) => Linter.Config[]` | `includeIgnoreFile` helper plus GAIA defaults; takes optional `gitignore` (path) and `extra` (string[]) | recommended |
|
|
51
|
+
|
|
52
|
+
The default export bundles every named export:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
import gaiaLint from '@gaia-react/lint';
|
|
56
|
+
// gaiaLint.base, gaiaLint.react, gaiaLint.betterTailwind({...}), ...
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Override patterns
|
|
60
|
+
|
|
61
|
+
Flat config is last-write-wins. Append override blocks **after** the
|
|
62
|
+
gaia-lint spreads to disable, change, or scope rules.
|
|
63
|
+
|
|
64
|
+
### Disable a rule globally
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
export default defineConfig([
|
|
68
|
+
...gaiaLint.base,
|
|
69
|
+
...gaiaLint.react,
|
|
70
|
+
{rules: {'sonarjs/cognitive-complexity': 'off'}},
|
|
71
|
+
]);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Override on specific globs
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
export default defineConfig([
|
|
78
|
+
...gaiaLint.base,
|
|
79
|
+
...gaiaLint.react,
|
|
80
|
+
{
|
|
81
|
+
files: ['app/legacy/**'],
|
|
82
|
+
rules: {'sonarjs/cognitive-complexity': 'off'},
|
|
83
|
+
},
|
|
84
|
+
]);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Swap parser options
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
export default defineConfig([
|
|
91
|
+
...gaiaLint.base,
|
|
92
|
+
{
|
|
93
|
+
languageOptions: {
|
|
94
|
+
parserOptions: {project: './tsconfig.eslint.json'},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Add an extra plugin
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
import myPlugin from 'eslint-plugin-my-plugin';
|
|
104
|
+
|
|
105
|
+
export default defineConfig([
|
|
106
|
+
...gaiaLint.base,
|
|
107
|
+
...gaiaLint.react,
|
|
108
|
+
{
|
|
109
|
+
plugins: {'my-plugin': myPlugin},
|
|
110
|
+
rules: {'my-plugin/some-rule': 'error'},
|
|
111
|
+
},
|
|
112
|
+
]);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Peer dependencies
|
|
116
|
+
|
|
117
|
+
`eslint`, `prettier`, and `typescript` are declared as **peer
|
|
118
|
+
dependencies** so consumers control their own versions and a single resolved
|
|
119
|
+
copy of each is installed in `node_modules`. Every other plugin
|
|
120
|
+
(`eslint-plugin-react`, `typescript-eslint`, `eslint-plugin-import-x`, etc.)
|
|
121
|
+
ships as a direct `dependency` of `@gaia-react/lint` so consumers don't
|
|
122
|
+
have to install or upgrade them individually.
|
|
123
|
+
|
|
124
|
+
Supported versions:
|
|
125
|
+
|
|
126
|
+
- `eslint ^9.0.0`
|
|
127
|
+
- `prettier ^3.0.0`
|
|
128
|
+
- `typescript ^5.0.0 || ^6.0.0`
|
|
129
|
+
|
|
130
|
+
## Custom rules included
|
|
131
|
+
|
|
132
|
+
Two rules are implemented inside this package and ship as part of
|
|
133
|
+
`guardrails`.
|
|
134
|
+
|
|
135
|
+
### `no-enum`
|
|
136
|
+
|
|
137
|
+
Forbids TypeScript `enum` declarations. Enums emit runtime code, are not
|
|
138
|
+
tree-shakeable, conflate value and type space, and have well-known footguns
|
|
139
|
+
around numeric vs string enums and reverse mappings. Use a `const` object
|
|
140
|
+
plus a derived union type instead.
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// flagged
|
|
144
|
+
enum Status {
|
|
145
|
+
Active,
|
|
146
|
+
Inactive,
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// preferred
|
|
150
|
+
const Status = {
|
|
151
|
+
Active: 'active',
|
|
152
|
+
Inactive: 'inactive',
|
|
153
|
+
} as const;
|
|
154
|
+
type Status = (typeof Status)[keyof typeof Status];
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Opt out for a file or block:
|
|
158
|
+
|
|
159
|
+
```js
|
|
160
|
+
{files: ['src/legacy/**'], rules: {'no-enum/no-enum': 'off'}}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### `no-switch`
|
|
164
|
+
|
|
165
|
+
Forbids `switch` statements. They are an early-return / lookup-map / `if`
|
|
166
|
+
chain in disguise and are easy to misuse (fallthrough, missing `default`,
|
|
167
|
+
shadowed locals across cases). Replace with a lookup object, an early
|
|
168
|
+
`return` chain, or a discriminated-union exhaustiveness check.
|
|
169
|
+
|
|
170
|
+
Opt out for a file or block:
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
{files: ['src/parser/**'], rules: {'no-switch/no-switch': 'off'}}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Tailwind / better-tailwindcss factory
|
|
177
|
+
|
|
178
|
+
`betterTailwind` is a factory because the underlying plugin needs to know
|
|
179
|
+
where your Tailwind entry CSS file lives.
|
|
180
|
+
|
|
181
|
+
```js
|
|
182
|
+
...gaiaLint.betterTailwind({
|
|
183
|
+
entryPoint: './app/styles/tailwind.css',
|
|
184
|
+
ignore: ['plain-link', 'plain-table'],
|
|
185
|
+
}),
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
| Option | Type | Required | Description |
|
|
189
|
+
| ------------ | ---------- | -------- | -------------------------------------------------------------------------------------------- |
|
|
190
|
+
| `entryPoint` | `string` | yes | Path to your Tailwind entry CSS, used by the plugin to resolve the active class set. |
|
|
191
|
+
| `ignore` | `string[]` | no | Class names the plugin should ignore in `no-unregistered-classes` (e.g. design-system tokens, `plain-*` utility shims). |
|
|
192
|
+
|
|
193
|
+
## Ignores factory
|
|
194
|
+
|
|
195
|
+
`ignores` produces a leading flat-config block that merges your
|
|
196
|
+
`.gitignore` plus GAIA defaults.
|
|
197
|
+
|
|
198
|
+
```js
|
|
199
|
+
...gaiaLint.ignores({
|
|
200
|
+
gitignore: '.gitignore',
|
|
201
|
+
extra: ['coverage/**', '**/*.generated.ts'],
|
|
202
|
+
}),
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
| Option | Type | Required | Description |
|
|
206
|
+
| ---------- | ---------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
|
207
|
+
| `gitignore`| `string` | no | Path to a `.gitignore` file (relative to `cwd` or absolute). Patterns are merged via `includeIgnoreFile`. |
|
|
208
|
+
| `extra` | `string[]` | no | Extra ignore globs merged with GAIA defaults. |
|
|
209
|
+
|
|
210
|
+
## GAIA folder conventions baked into `check-file`
|
|
211
|
+
|
|
212
|
+
The `check-file` rules in `styleHygiene` encode GAIA's folder layout:
|
|
213
|
+
|
|
214
|
+
- `app/components/**` — component file naming
|
|
215
|
+
- `app/pages/**` — route/page file naming
|
|
216
|
+
- `app/hooks/**` — hook file naming (`use-*.ts`)
|
|
217
|
+
- `test/**` — test harness naming
|
|
218
|
+
|
|
219
|
+
If your project uses a different layout, override the relevant
|
|
220
|
+
`check-file/*` rules **after** the `styleHygiene` spread:
|
|
221
|
+
|
|
222
|
+
```js
|
|
223
|
+
export default defineConfig([
|
|
224
|
+
...gaiaLint.base,
|
|
225
|
+
...gaiaLint.styleHygiene,
|
|
226
|
+
// Project uses src/ instead of app/
|
|
227
|
+
{
|
|
228
|
+
files: ['src/components/**'],
|
|
229
|
+
rules: {
|
|
230
|
+
'check-file/filename-naming-convention': [
|
|
231
|
+
'error',
|
|
232
|
+
{'src/components/**/*.{ts,tsx}': 'PASCAL_CASE'},
|
|
233
|
+
],
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
]);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Or disable the GAIA `check-file` block entirely and reapply your own:
|
|
240
|
+
|
|
241
|
+
```js
|
|
242
|
+
{rules: {'check-file/folder-naming-convention': 'off'}}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Versioning policy
|
|
246
|
+
|
|
247
|
+
This package follows SemVer.
|
|
248
|
+
|
|
249
|
+
- **Patch.** Plugin version bumps that do not change rule defaults, internal
|
|
250
|
+
refactors, README fixes.
|
|
251
|
+
- **Minor.** New rules added, new options exposed on factories, new named
|
|
252
|
+
exports, opt-in changes that do not break existing consumer configs.
|
|
253
|
+
- **Major.** Engine swaps (ESLint → Biome), `eslint` major version bumps,
|
|
254
|
+
removal/rename of named exports, default-rule changes that introduce new
|
|
255
|
+
errors in previously-clean code.
|
|
256
|
+
|
|
257
|
+
## License
|
|
258
|
+
|
|
259
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAS,MAAM,EAAC,MAAM,QAAQ,CAAC;AAoR3C,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAS/B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
export type GaiaLintBetterTailwindOptions = {
|
|
3
|
+
/** Path to the Tailwind entry CSS file (e.g. './app/styles/tailwind.css'). */
|
|
4
|
+
entryPoint: string;
|
|
5
|
+
/** Class names to ignore in `better-tailwindcss/no-unknown-classes`. */
|
|
6
|
+
ignore?: string[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Better-Tailwind flat-config factory.
|
|
10
|
+
*
|
|
11
|
+
* Ports `betterTailwindConfig` from GAIA's `eslint.config.mjs`. The
|
|
12
|
+
* `entryPoint` (consumer's Tailwind CSS entry) and `ignore` list are
|
|
13
|
+
* project-specific, so this is shipped as a factory rather than a static
|
|
14
|
+
* array.
|
|
15
|
+
*/
|
|
16
|
+
export declare const betterTailwind: (opts: GaiaLintBetterTailwindOptions) => Linter.Config[];
|
|
17
|
+
//# sourceMappingURL=better-tailwind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-tailwind.d.ts","sourceRoot":"","sources":["../../src/configs/better-tailwind.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,6BAA6B,KAClC,MAAM,CAAC,MAAM,EAyBf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/configs/guardrails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAuFnC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
export type GaiaLintIgnoresOptions = {
|
|
3
|
+
/** Path to a `.gitignore` file to merge in. Resolved from `process.cwd()` if relative. */
|
|
4
|
+
gitignore?: string;
|
|
5
|
+
/** Extra ignore globs to merge with GAIA defaults. */
|
|
6
|
+
extra?: string[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Ignores flat-config factory.
|
|
10
|
+
*
|
|
11
|
+
* Ports the `includeIgnoreFile(gitignorePath)` + static `ignored-files`
|
|
12
|
+
* block from GAIA's `eslint.config.mjs`. The `gitignore` path must be
|
|
13
|
+
* resolved at the consumer's cwd (config-load time), not at gaia-lint's
|
|
14
|
+
* install location, so this is shipped as a factory.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ignores: (opts?: GaiaLintIgnoresOptions) => Linter.Config[];
|
|
17
|
+
//# sourceMappingURL=ignores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignores.d.ts","sourceRoot":"","sources":["../../src/configs/ignores.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAoBF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,sBAAsB,KAAG,MAAM,CAAC,MAAM,EAgBpE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* Playwright flat-config block.
|
|
4
|
+
*
|
|
5
|
+
* Ports `playwrightConfig` from GAIA's `eslint.config.mjs` — scopes
|
|
6
|
+
* `eslint-plugin-playwright`'s `flat/recommended` config to `.playwright/`
|
|
7
|
+
* test files (GAIA's e2e directory convention).
|
|
8
|
+
*/
|
|
9
|
+
export declare const playwright: Linter.Config[];
|
|
10
|
+
//# sourceMappingURL=playwright.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../src/configs/playwright.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAMrC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* Prettier flat-config block.
|
|
4
|
+
*
|
|
5
|
+
* Ports `prettierConfig` from GAIA's `eslint.config.mjs`. Layers
|
|
6
|
+
* `eslint-config-prettier`'s rule disablers, then re-enables a few
|
|
7
|
+
* `@stylistic/*` rules GAIA wants to keep (padding lines, single quotes),
|
|
8
|
+
* and finally turns on the `prettier/prettier` rule itself.
|
|
9
|
+
*/
|
|
10
|
+
export declare const prettier: Linter.Config[];
|
|
11
|
+
//# sourceMappingURL=prettier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettier.d.ts","sourceRoot":"","sources":["../../src/configs/prettier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EA6BnC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* React flat-config block.
|
|
4
|
+
*
|
|
5
|
+
* Ports `reactConfig` + `reactCustomConfig` from GAIA's `eslint.config.mjs`.
|
|
6
|
+
* Pulls React, React Hooks, and JSX A11y plugins plus Airbnb's recommended
|
|
7
|
+
* React config, then layers GAIA's project-wide React rule overrides.
|
|
8
|
+
*
|
|
9
|
+
* The `react-router/routes` override targets `**\/routes/**\/*.tsx` — a GAIA
|
|
10
|
+
* convention that's harmless for consumers without that folder structure
|
|
11
|
+
* (the override only fires when files match).
|
|
12
|
+
*/
|
|
13
|
+
export declare const react: Linter.Config[];
|
|
14
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/configs/react.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAqDhC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* Storybook flat-config block.
|
|
4
|
+
*
|
|
5
|
+
* Ports `storybookConfig` from GAIA's `eslint.config.mjs` — applies the
|
|
6
|
+
* official `flat/recommended` config from `eslint-plugin-storybook`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const storybook: Linter.Config[];
|
|
9
|
+
//# sourceMappingURL=storybook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAEpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-hygiene.d.ts","sourceRoot":"","sources":["../../src/configs/style-hygiene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAsQnC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAMvC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* Testing flat-config block.
|
|
4
|
+
*
|
|
5
|
+
* Ports `testHarnessConfig` + `testingLibraryConfig` from GAIA's
|
|
6
|
+
* `eslint.config.mjs`. Wires up Vitest, jest-dom, and Testing Library
|
|
7
|
+
* recommended rules across test/story/test-harness files.
|
|
8
|
+
*/
|
|
9
|
+
export declare const testing: Linter.Config[];
|
|
10
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/configs/testing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAkBlC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export { base } from './configs/base.js';
|
|
2
|
+
export { react } from './configs/react.js';
|
|
3
|
+
export { styleHygiene } from './configs/style-hygiene.js';
|
|
4
|
+
export { guardrails } from './configs/guardrails.js';
|
|
5
|
+
export { testing } from './configs/testing.js';
|
|
6
|
+
export { storybook } from './configs/storybook.js';
|
|
7
|
+
export { playwright } from './configs/playwright.js';
|
|
8
|
+
export { prettier } from './configs/prettier.js';
|
|
9
|
+
export { betterTailwind, type GaiaLintBetterTailwindOptions, } from './configs/better-tailwind.js';
|
|
10
|
+
export { ignores, type GaiaLintIgnoresOptions, } from './configs/ignores.js';
|
|
11
|
+
import { base } from './configs/base.js';
|
|
12
|
+
import { react } from './configs/react.js';
|
|
13
|
+
import { styleHygiene } from './configs/style-hygiene.js';
|
|
14
|
+
import { guardrails } from './configs/guardrails.js';
|
|
15
|
+
import { testing } from './configs/testing.js';
|
|
16
|
+
import { storybook } from './configs/storybook.js';
|
|
17
|
+
import { playwright } from './configs/playwright.js';
|
|
18
|
+
import { prettier } from './configs/prettier.js';
|
|
19
|
+
import { betterTailwind } from './configs/better-tailwind.js';
|
|
20
|
+
import { ignores } from './configs/ignores.js';
|
|
21
|
+
declare const gaiaLint: {
|
|
22
|
+
base: typeof base;
|
|
23
|
+
react: typeof react;
|
|
24
|
+
styleHygiene: typeof styleHygiene;
|
|
25
|
+
guardrails: typeof guardrails;
|
|
26
|
+
testing: typeof testing;
|
|
27
|
+
storybook: typeof storybook;
|
|
28
|
+
playwright: typeof playwright;
|
|
29
|
+
prettier: typeof prettier;
|
|
30
|
+
betterTailwind: typeof betterTailwind;
|
|
31
|
+
ignores: typeof ignores;
|
|
32
|
+
};
|
|
33
|
+
export default gaiaLint;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,KAAK,6BAA6B,GACnC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAE7C,QAAA,MAAM,QAAQ,EAAE;IACd,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,OAAO,EAAE,OAAO,OAAO,CAAC;CAYzB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|