@tractorbeam/eslint-config 0.2.1 → 0.4.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/README.md +14 -25
- package/dist/{base.d.ts → base/index.d.ts} +1 -1
- package/dist/base/index.d.ts.map +1 -0
- package/dist/{base.js → base/index.js} +1 -1
- package/dist/base/index.js.map +1 -0
- package/dist/cloudflare-workers/index.d.ts +3 -0
- package/dist/cloudflare-workers/index.d.ts.map +1 -0
- package/dist/cloudflare-workers/index.js +16 -0
- package/dist/cloudflare-workers/index.js.map +1 -0
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/{node.d.ts → node/index.d.ts} +1 -1
- package/dist/node/index.d.ts.map +1 -0
- package/dist/{node.js → node/index.js} +1 -1
- package/dist/node/index.js.map +1 -0
- package/dist/{playwright.d.ts → playwright/index.d.ts} +1 -1
- package/dist/playwright/index.d.ts.map +1 -0
- package/dist/{playwright.js → playwright/index.js} +1 -1
- package/dist/playwright/index.js.map +1 -0
- package/dist/{prettier.d.ts → prettier/index.d.ts} +1 -1
- package/dist/prettier/index.d.ts.map +1 -0
- package/dist/{prettier.js → prettier/index.js} +1 -1
- package/dist/prettier/index.js.map +1 -0
- package/dist/{react.d.ts → react/index.d.ts} +1 -1
- package/dist/react/index.d.ts.map +1 -0
- package/dist/{react.js → react/index.js} +1 -1
- package/dist/react/index.js.map +1 -0
- package/dist/{tanstack-router.d.ts → tanstack-router/index.d.ts} +1 -1
- package/dist/tanstack-router/index.d.ts.map +1 -0
- package/dist/{tanstack-router.js → tanstack-router/index.js} +1 -1
- package/dist/tanstack-router/index.js.map +1 -0
- package/dist/{typescript.d.ts → typescript/index.d.ts} +1 -1
- package/dist/typescript/index.d.ts.map +1 -0
- package/dist/{typescript.js → typescript/index.js} +4 -3
- package/dist/typescript/index.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +32 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/rules/no-button-height-class.d.ts +3 -0
- package/dist/ui/rules/no-button-height-class.d.ts.map +1 -0
- package/dist/ui/rules/no-button-height-class.js +103 -0
- package/dist/ui/rules/no-button-height-class.js.map +1 -0
- package/dist/ui/rules/no-icon-class-in-button.d.ts +3 -0
- package/dist/ui/rules/no-icon-class-in-button.d.ts.map +1 -0
- package/dist/ui/rules/no-icon-class-in-button.js +159 -0
- package/dist/ui/rules/no-icon-class-in-button.js.map +1 -0
- package/dist/zod/index.d.ts +3 -0
- package/dist/zod/index.d.ts.map +1 -0
- package/dist/zod/index.js +4 -0
- package/dist/zod/index.js.map +1 -0
- package/package.json +53 -41
- package/dist/base.d.ts.map +0 -1
- package/dist/base.js.map +0 -1
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js.map +0 -1
- package/dist/playwright.d.ts.map +0 -1
- package/dist/playwright.js.map +0 -1
- package/dist/prettier.d.ts.map +0 -1
- package/dist/prettier.js.map +0 -1
- package/dist/react.d.ts.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/tanstack-router.d.ts.map +0 -1
- package/dist/tanstack-router.js.map +0 -1
- package/dist/typescript.d.ts.map +0 -1
- package/dist/typescript.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# @tractorbeam/eslint-config
|
|
2
2
|
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **Deprecated.** This package receives no further updates. Lint with [Oxlint](https://oxc.rs/docs/guide/usage/linter) using [`@tractorbeam/oxlint-config`](https://www.npmjs.com/package/@tractorbeam/oxlint-config) instead, and format with [Oxfmt](https://oxc.rs/docs/guide/usage/formatter) using [`@tractorbeam/oxfmt-config`](https://www.npmjs.com/package/@tractorbeam/oxfmt-config).
|
|
5
|
+
|
|
3
6
|
Shared ESLint configuration for Tractorbeam projects using modern flat config format.
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
@@ -24,30 +27,20 @@ import { defineConfig } from "eslint/config";
|
|
|
24
27
|
|
|
25
28
|
import { base, react, typescript } from "@tractorbeam/eslint-config";
|
|
26
29
|
|
|
27
|
-
export default defineConfig([
|
|
28
|
-
base,
|
|
29
|
-
{
|
|
30
|
-
extends: [typescript],
|
|
31
|
-
languageOptions: {
|
|
32
|
-
parserOptions: {
|
|
33
|
-
tsconfigRootDir: import.meta.dirname,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
react,
|
|
38
|
-
]);
|
|
30
|
+
export default defineConfig([base, typescript, react]);
|
|
39
31
|
```
|
|
40
32
|
|
|
41
33
|
## Available Configs
|
|
42
34
|
|
|
43
|
-
| Config
|
|
44
|
-
|
|
|
45
|
-
| `base`
|
|
46
|
-
| `typescript`
|
|
47
|
-
| `react`
|
|
48
|
-
| `tanstackRouter`
|
|
49
|
-
| `node`
|
|
50
|
-
| `
|
|
35
|
+
| Config | Description | File Patterns |
|
|
36
|
+
| ------------------- | ---------------------------------------- | ------------------------------- |
|
|
37
|
+
| `base` | ESLint recommended rules | All files |
|
|
38
|
+
| `typescript` | TypeScript, unicorn, regexp, import-lite | `**/*.ts`, `**/*.tsx` |
|
|
39
|
+
| `react` | React, hooks, a11y, react-compiler | `**/*.tsx`, `**/*.jsx` |
|
|
40
|
+
| `tanstackRouter` | TanStack Router plugin | `**/*.tsx`, `**/*.jsx` |
|
|
41
|
+
| `node` | Node.js globals | All files |
|
|
42
|
+
| `cloudflareWorkers` | Cloudflare Workers globals | All files |
|
|
43
|
+
| `playwright` | Playwright testing rules | No default (use with `extends`) |
|
|
51
44
|
|
|
52
45
|
## Customization
|
|
53
46
|
|
|
@@ -77,11 +70,7 @@ import { defineConfig } from "eslint/config";
|
|
|
77
70
|
|
|
78
71
|
import { base, playwright, typescript } from "@tractorbeam/eslint-config";
|
|
79
72
|
|
|
80
|
-
export default defineConfig([
|
|
81
|
-
base,
|
|
82
|
-
eslint,
|
|
83
|
-
{ files: ["**/e2e/**/*.ts"], extends: [playwright] },
|
|
84
|
-
]);
|
|
73
|
+
export default defineConfig([base, eslint, { files: ["**/e2e/**/*.ts"], extends: [playwright] }]);
|
|
85
74
|
```
|
|
86
75
|
|
|
87
76
|
### Overriding Rules
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAQ9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,IAAI,GAAoB,YAAY,CAAC;IAChD,MAAM,CAAC,OAAO,CAAC,WAAW;IAC1B,mBAAmB,CAAC,kBAAkB,CAAC;IACvC;QACE,KAAK,EAAE;YACL,mBAAmB,EAAE,OAAO;SAC7B;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare-workers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAY3C,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
export const cloudflareWorkers = defineConfig([
|
|
4
|
+
{
|
|
5
|
+
languageOptions: {
|
|
6
|
+
globals: {
|
|
7
|
+
...globals.serviceworker,
|
|
8
|
+
...globals.worker,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
rules: {
|
|
12
|
+
"no-console": "off",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
]);
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloudflare-workers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,iBAAiB,GAAoB,YAAY,CAAC;IAC7D;QACE,eAAe,EAAE;YACf,OAAO,EAAE;gBACP,GAAG,OAAO,CAAC,aAAa;gBACxB,GAAG,OAAO,CAAC,MAAM;aAClB;SACF;QACD,KAAK,EAAE;YACL,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export { base } from "./base.js";
|
|
2
|
-
export { typescript } from "./typescript.js";
|
|
3
|
-
export { react } from "./react.js";
|
|
4
|
-
export { tanstackRouter } from "./tanstack-router.js";
|
|
5
|
-
export { node } from "./node.js";
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
1
|
+
export { base } from "./base/index.js";
|
|
2
|
+
export { typescript } from "./typescript/index.js";
|
|
3
|
+
export { react } from "./react/index.js";
|
|
4
|
+
export { tanstackRouter } from "./tanstack-router/index.js";
|
|
5
|
+
export { node } from "./node/index.js";
|
|
6
|
+
export { cloudflareWorkers } from "./cloudflare-workers/index.js";
|
|
7
|
+
export { playwright } from "./playwright/index.js";
|
|
8
|
+
export { prettier } from "./prettier/index.js";
|
|
9
|
+
export { ui } from "./ui/index.js";
|
|
10
|
+
export { zod } from "./zod/index.js";
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export { base } from "./base.js";
|
|
2
|
-
export { typescript } from "./typescript.js";
|
|
3
|
-
export { react } from "./react.js";
|
|
4
|
-
export { tanstackRouter } from "./tanstack-router.js";
|
|
5
|
-
export { node } from "./node.js";
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
1
|
+
export { base } from "./base/index.js";
|
|
2
|
+
export { typescript } from "./typescript/index.js";
|
|
3
|
+
export { react } from "./react/index.js";
|
|
4
|
+
export { tanstackRouter } from "./tanstack-router/index.js";
|
|
5
|
+
export { node } from "./node/index.js";
|
|
6
|
+
export { cloudflareWorkers } from "./cloudflare-workers/index.js";
|
|
7
|
+
export { playwright } from "./playwright/index.js";
|
|
8
|
+
export { prettier } from "./prettier/index.js";
|
|
9
|
+
export { ui } from "./ui/index.js";
|
|
10
|
+
export { zod } from "./zod/index.js";
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAS9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,IAAI,GAAoB,YAAY,CAAC;IAChD;QACE,eAAe,EAAE;YACf,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;SAC7B;QACD,KAAK,EAAE;YACL,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playwright/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAEpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playwright/index.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAoB,YAAY,CAAC;IACtD,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;CAC7C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prettier/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prettier/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAoB,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAS7C,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EA4B/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,kBAAkB,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,KAAK,GAAoB,YAAY,CAAC;IACjD;QACE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,OAAO,EAAE;YACP,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;YACpC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACvC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;YACzC,aAAa,CAAC,WAAW,CAAC,WAAW;YACrC,mBAAmB,CAAC,OAAO,CAAC,WAAW;SACxC;QACD,eAAe,EAAE;YACf,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;SAChC;QACD,OAAO,EAAE;YACP,aAAa,EAAE,gBAAiC;YAChD,eAAe,EAAE,kBAAkB;SACpC;QACD,KAAK,EAAE;YACL,6BAA6B,EAAE,KAAK;YACpC,sCAAsC,EAAE,MAAM;YAC9C,wBAAwB,EAAE,KAAK;YAC/B,0BAA0B,EAAE,KAAK;YACjC,6BAA6B,EAAE,KAAK;SACrC;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC7B;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tanstack-router/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAExC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tanstack-router/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAoB,YAAY,CAAC;IAC1D,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC;CACjD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOrC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EA2DpC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import pluginImportLite from "eslint-plugin-import-lite";
|
|
2
|
-
import
|
|
2
|
+
import { configs as regexpConfigs } from "eslint-plugin-regexp";
|
|
3
3
|
import pluginUnicorn from "eslint-plugin-unicorn";
|
|
4
4
|
import { defineConfig } from "eslint/config";
|
|
5
5
|
import tseslint from "typescript-eslint";
|
|
@@ -10,7 +10,7 @@ export const typescript = defineConfig([
|
|
|
10
10
|
tseslint.configs.strictTypeChecked,
|
|
11
11
|
tseslint.configs.stylisticTypeChecked,
|
|
12
12
|
pluginUnicorn.configs.recommended,
|
|
13
|
-
|
|
13
|
+
regexpConfigs["flat/recommended"],
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
15
15
|
pluginImportLite.configs.recommended,
|
|
16
16
|
],
|
|
@@ -56,7 +56,8 @@ export const typescript = defineConfig([
|
|
|
56
56
|
"unicorn/prevent-abbreviations": "off",
|
|
57
57
|
"unicorn/no-abusive-eslint-disable": "off",
|
|
58
58
|
"unicorn/no-array-sort": "off",
|
|
59
|
+
"unicorn/no-asterisk-prefix-in-documentation-comments": "off",
|
|
59
60
|
},
|
|
60
61
|
},
|
|
61
62
|
]);
|
|
62
|
-
//# sourceMappingURL=
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typescript/index.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAoB,YAAY,CAAC;IACtD;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,OAAO,EAAE;YACP,QAAQ,CAAC,OAAO,CAAC,iBAAiB;YAClC,QAAQ,CAAC,OAAO,CAAC,oBAAoB;YACrC,aAAa,CAAC,OAAO,CAAC,WAAW;YACjC,aAAa,CAAC,kBAAkB,CAAC;YACjC,sEAAsE;YACtE,gBAAgB,CAAC,OAAO,CAAC,WAAW;SACrC;QACD,eAAe,EAAE;YACf,aAAa,EAAE;gBACb,cAAc,EAAE,IAAI;aACrB;SACF;QACD,KAAK,EAAE;YACL,yCAAyC,EAAE,KAAK;YAChD,kDAAkD,EAAE,KAAK;YAEzD,mCAAmC,EAAE,MAAM;YAC3C,yCAAyC,EAAE,MAAM;YACjD,oCAAoC,EAAE,MAAM;YAE5C,4CAA4C,EAAE,OAAO;YACrD,qCAAqC,EAAE;gBACrC,OAAO;gBACP;oBACE,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,UAAU;yBACjB;wBACD;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,eAAe;yBACtB;qBACF;iBACF;aACF;YACD,mCAAmC,EAAE;gBACnC,OAAO;gBACP;oBACE,iBAAiB,EAAE,IAAI;oBACvB,iBAAiB,EAAE,IAAI;oBACvB,8BAA8B,EAAE,IAAI;iBACrC;aACF;YAED,2BAA2B,EAAE,KAAK;YAClC,iBAAiB,EAAE,KAAK;YACxB,+BAA+B,EAAE,KAAK;YACtC,mCAAmC,EAAE,KAAK;YAC1C,uBAAuB,EAAE,KAAK;YAC9B,sDAAsD,EAAE,KAAK;SAC9D;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAC;AA0B3C,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAW5B,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
import { noButtonHeightClass } from "./rules/no-button-height-class.js";
|
|
3
|
+
import { noIconClassInButton } from "./rules/no-icon-class-in-button.js";
|
|
4
|
+
const uiRules = {
|
|
5
|
+
"no-button-height-class": adaptRuleModule(noButtonHeightClass),
|
|
6
|
+
"no-icon-class-in-button": adaptRuleModule(noIconClassInButton),
|
|
7
|
+
};
|
|
8
|
+
const uiPlugin = { rules: uiRules };
|
|
9
|
+
function adaptRuleModule(rule) {
|
|
10
|
+
return {
|
|
11
|
+
meta: {
|
|
12
|
+
...rule.meta,
|
|
13
|
+
defaultOptions: rule.meta.defaultOptions === undefined ? undefined : [...rule.meta.defaultOptions],
|
|
14
|
+
},
|
|
15
|
+
create(context) {
|
|
16
|
+
return Reflect.apply(rule.create, rule, [context]);
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export const ui = defineConfig([
|
|
21
|
+
{
|
|
22
|
+
files: ["**/*.tsx", "**/*.jsx"],
|
|
23
|
+
plugins: {
|
|
24
|
+
ui: uiPlugin,
|
|
25
|
+
},
|
|
26
|
+
rules: {
|
|
27
|
+
"ui/no-button-height-class": "warn",
|
|
28
|
+
"ui/no-icon-class-in-button": "warn",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
]);
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,OAAO,GAAG;IACd,wBAAwB,EAAE,eAAe,CAAC,mBAAmB,CAAC;IAC9D,yBAAyB,EAAE,eAAe,CAAC,mBAAmB,CAAC;CAChE,CAAC;AAEF,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAEpC,SAAS,eAAe,CAAC,IAA4B;IACnD,OAAO;QACL,IAAI,EAAE;YACJ,GAAG,IAAI,CAAC,IAAI;YACZ,cAAc,EACZ,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;SACrF;QACD,MAAM,CAAC,OAAO;YACZ,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAsB,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAoB,YAAY,CAAC;IAC9C;QACE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,OAAO,EAAE;YACP,EAAE,EAAE,QAAQ;SACb;QACD,KAAK,EAAE;YACL,2BAA2B,EAAE,MAAM;YACnC,4BAA4B,EAAE,MAAM;SACrC;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-button-height-class.d.ts","sourceRoot":"","sources":["../../../src/ui/rules/no-button-height-class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,WAAW,EAAY,MAAM,0BAA0B,CAAC;AAgDjF,eAAO,MAAM,mBAAmB,iFAwE9B,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
const createRule = ESLintUtils.RuleCreator.withoutDocs;
|
|
3
|
+
/**
|
|
4
|
+
* Patterns for Tailwind sizing classes that shouldn't be used on Button components.
|
|
5
|
+
* These match numeric values, arbitrary values, and fractions.
|
|
6
|
+
*
|
|
7
|
+
* Allowed exceptions:
|
|
8
|
+
* - w-full, h-full, size-full, min-w-full, max-w-full, min-h-full, max-h-full
|
|
9
|
+
* - min-w-0, min-h-0 (reset utilities)
|
|
10
|
+
* - max-w-none, max-h-none (remove constraints)
|
|
11
|
+
*/
|
|
12
|
+
// Base pattern for values: numeric (40), arbitrary ([100px]), fractions (1/2)
|
|
13
|
+
const VALUE_PATTERN = "(\\d+|\\[.+?\\]|\\d+\\/\\d+)";
|
|
14
|
+
// h-* classes (except h-full)
|
|
15
|
+
const HEIGHT_PATTERN = new RegExp(`\\bh-(?!full\\b)${VALUE_PATTERN}`, "u");
|
|
16
|
+
// w-* classes (except w-full)
|
|
17
|
+
const WIDTH_PATTERN = new RegExp(`\\bw-(?!full\\b)${VALUE_PATTERN}`, "u");
|
|
18
|
+
// size-* classes (except size-full)
|
|
19
|
+
const SIZE_PATTERN = new RegExp(`\\bsize-(?!full\\b)${VALUE_PATTERN}`, "u");
|
|
20
|
+
// min-h-* classes (except min-h-full, min-h-0)
|
|
21
|
+
const MIN_HEIGHT_PATTERN = new RegExp(`\\bmin-h-(?!full\\b|0\\b)${VALUE_PATTERN}`, "u");
|
|
22
|
+
// max-h-* classes (except max-h-full, max-h-none)
|
|
23
|
+
const MAX_HEIGHT_PATTERN = new RegExp(`\\bmax-h-(?!full\\b|none\\b)${VALUE_PATTERN}`, "u");
|
|
24
|
+
// min-w-* classes (except min-w-full, min-w-0)
|
|
25
|
+
const MIN_WIDTH_PATTERN = new RegExp(`\\bmin-w-(?!full\\b|0\\b)${VALUE_PATTERN}`, "u");
|
|
26
|
+
// max-w-* classes (except max-w-full, max-w-none)
|
|
27
|
+
const MAX_WIDTH_PATTERN = new RegExp(`\\bmax-w-(?!full\\b|none\\b)${VALUE_PATTERN}`, "u");
|
|
28
|
+
const PATTERNS = [
|
|
29
|
+
HEIGHT_PATTERN,
|
|
30
|
+
WIDTH_PATTERN,
|
|
31
|
+
SIZE_PATTERN,
|
|
32
|
+
MIN_HEIGHT_PATTERN,
|
|
33
|
+
MAX_HEIGHT_PATTERN,
|
|
34
|
+
MIN_WIDTH_PATTERN,
|
|
35
|
+
MAX_WIDTH_PATTERN,
|
|
36
|
+
];
|
|
37
|
+
export const noButtonHeightClass = createRule({
|
|
38
|
+
meta: {
|
|
39
|
+
type: "suggestion",
|
|
40
|
+
docs: {
|
|
41
|
+
description: "Prefer size prop over sizing classes on Button components",
|
|
42
|
+
},
|
|
43
|
+
messages: {
|
|
44
|
+
preferSizeProp: "Avoid using sizing classes (h-*, w-*, size-*, min-*, max-*) on <Button>. Use the size prop instead.",
|
|
45
|
+
},
|
|
46
|
+
schema: [],
|
|
47
|
+
},
|
|
48
|
+
defaultOptions: [],
|
|
49
|
+
create(context) {
|
|
50
|
+
const hasDisallowedSizeClass = (classString) => {
|
|
51
|
+
return PATTERNS.some((pattern) => pattern.test(classString));
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
JSXOpeningElement(node) {
|
|
55
|
+
// Check if element is <Button>
|
|
56
|
+
if (node.name.type !== AST_NODE_TYPES.JSXIdentifier || node.name.name !== "Button") {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Find className attribute
|
|
60
|
+
const classNameAttr = node.attributes.find((attr) => attr.type === AST_NODE_TYPES.JSXAttribute &&
|
|
61
|
+
attr.name.type === AST_NODE_TYPES.JSXIdentifier &&
|
|
62
|
+
attr.name.name === "className");
|
|
63
|
+
if (!classNameAttr) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const reportViolation = () => {
|
|
67
|
+
context.report({
|
|
68
|
+
node,
|
|
69
|
+
messageId: "preferSizeProp",
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
// Check for sizing patterns in string literal or template literal
|
|
73
|
+
const value = classNameAttr.value;
|
|
74
|
+
if (value?.type === AST_NODE_TYPES.Literal && isQuotedLiteral(value.raw)) {
|
|
75
|
+
if (hasDisallowedSizeClass(String(value.value))) {
|
|
76
|
+
reportViolation();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Handle JSX expressions like className={...} or className={`...`}
|
|
80
|
+
if (value?.type === AST_NODE_TYPES.JSXExpressionContainer) {
|
|
81
|
+
const expr = value.expression;
|
|
82
|
+
if (expr.type === AST_NODE_TYPES.Literal && isQuotedLiteral(expr.raw)) {
|
|
83
|
+
if (hasDisallowedSizeClass(String(expr.value))) {
|
|
84
|
+
reportViolation();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (expr.type === AST_NODE_TYPES.TemplateLiteral) {
|
|
88
|
+
for (const quasi of expr.quasis) {
|
|
89
|
+
if (hasDisallowedSizeClass(quasi.value.raw)) {
|
|
90
|
+
reportViolation();
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
function isQuotedLiteral(raw) {
|
|
101
|
+
return raw.startsWith('"') || raw.startsWith("'");
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=no-button-height-class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-button-height-class.js","sourceRoot":"","sources":["../../../src/ui/rules/no-button-height-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-icon-class-in-button.d.ts","sourceRoot":"","sources":["../../../src/ui/rules/no-icon-class-in-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,WAAW,EAAY,MAAM,0BAA0B,CAAC;AAyIjF,eAAO,MAAM,mBAAmB,8EAuD9B,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
const createRule = ESLintUtils.RuleCreator.withoutDocs;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a type is or extends LucideIcon from lucide-react.
|
|
6
|
+
* Returns true if the type's name contains "LucideIcon" or "LucideProps",
|
|
7
|
+
* or if any base type does.
|
|
8
|
+
*/
|
|
9
|
+
function isLucideIconType(type, checker) {
|
|
10
|
+
// Check the type's symbol name
|
|
11
|
+
const typeName = checker.typeToString(type);
|
|
12
|
+
if (typeName.includes("LucideIcon") ||
|
|
13
|
+
typeName.includes("LucideProps") ||
|
|
14
|
+
typeName.includes("ForwardRefExoticComponent")) {
|
|
15
|
+
// Check if it's from lucide-react by examining the full type string
|
|
16
|
+
const fullType = checker.typeToString(type, undefined, ts.TypeFormatFlags.NoTruncation);
|
|
17
|
+
if (fullType.includes("lucide-react") || fullType.includes("Lucide")) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Check call signatures for function components
|
|
22
|
+
const callSignatures = type.getCallSignatures();
|
|
23
|
+
for (const sig of callSignatures) {
|
|
24
|
+
const returnType = checker.getReturnTypeOfSignature(sig);
|
|
25
|
+
const returnTypeName = checker.typeToString(returnType);
|
|
26
|
+
// React elements from icon components
|
|
27
|
+
if (returnTypeName.includes("Element") || returnTypeName.includes("ReactNode")) {
|
|
28
|
+
// Check parameters for SVGProps or LucideProps
|
|
29
|
+
for (const param of sig.parameters) {
|
|
30
|
+
const paramType = checker.getTypeOfSymbol(param);
|
|
31
|
+
const paramTypeName = checker.typeToString(paramType);
|
|
32
|
+
if (paramTypeName.includes("LucideProps") || paramTypeName.includes("SVGProps")) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Checks if a JSX element name matches Icon patterns by name:
|
|
42
|
+
* - Exactly "Icon"
|
|
43
|
+
* - Ends with "Icon" (e.g., SearchIcon, ChevronDownIcon)
|
|
44
|
+
*/
|
|
45
|
+
function isIconComponentByName(node) {
|
|
46
|
+
if (node.name.type === AST_NODE_TYPES.JSXIdentifier) {
|
|
47
|
+
const name = node.name.name;
|
|
48
|
+
return name === "Icon" || name.endsWith("Icon");
|
|
49
|
+
}
|
|
50
|
+
// Handle namespaced components like Icons.Search
|
|
51
|
+
if (node.name.type === AST_NODE_TYPES.JSXMemberExpression) {
|
|
52
|
+
const { object, property } = node.name;
|
|
53
|
+
// object can be JSXIdentifier or JSXMemberExpression (nested)
|
|
54
|
+
// property is always JSXIdentifier
|
|
55
|
+
if (object.type === AST_NODE_TYPES.JSXIdentifier) {
|
|
56
|
+
// Match Icons.* or *.Icon patterns
|
|
57
|
+
return (object.name === "Icons" ||
|
|
58
|
+
object.name === "Icon" ||
|
|
59
|
+
property.name === "Icon" ||
|
|
60
|
+
property.name.endsWith("Icon"));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Checks if a JSX element is a LucideIcon by type.
|
|
67
|
+
* Returns undefined if type checking is not available.
|
|
68
|
+
*/
|
|
69
|
+
function isIconComponentByType(node, context) {
|
|
70
|
+
// Try to get parser services with type info
|
|
71
|
+
const services = ESLintUtils.getParserServices(context, true);
|
|
72
|
+
// Check if type info is available
|
|
73
|
+
if (!services.program) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const checker = services.program.getTypeChecker();
|
|
77
|
+
// Get the JSX element name node to check its type
|
|
78
|
+
const nameNode = node.name;
|
|
79
|
+
if (nameNode.type === AST_NODE_TYPES.JSXIdentifier) {
|
|
80
|
+
try {
|
|
81
|
+
const type = services.getTypeAtLocation(nameNode);
|
|
82
|
+
return isLucideIconType(type, checker);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Type info not available for this node
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (nameNode.type === AST_NODE_TYPES.JSXMemberExpression) {
|
|
90
|
+
try {
|
|
91
|
+
const type = services.getTypeAtLocation(nameNode);
|
|
92
|
+
return isLucideIconType(type, checker);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Checks if a node is inside a Button component by walking up the AST.
|
|
102
|
+
*/
|
|
103
|
+
function isInsideButton(node, context) {
|
|
104
|
+
const ancestors = context.sourceCode.getAncestors(node);
|
|
105
|
+
for (const ancestor of ancestors) {
|
|
106
|
+
if (ancestor.type === AST_NODE_TYPES.JSXElement &&
|
|
107
|
+
ancestor.openingElement.name.type === AST_NODE_TYPES.JSXIdentifier &&
|
|
108
|
+
ancestor.openingElement.name.name === "Button") {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
export const noIconClassInButton = createRule({
|
|
115
|
+
meta: {
|
|
116
|
+
type: "suggestion",
|
|
117
|
+
docs: {
|
|
118
|
+
description: "Disallow className on Icon components nested inside Button (uses type info when available)",
|
|
119
|
+
},
|
|
120
|
+
messages: {
|
|
121
|
+
noClassName: "Avoid using className on icons inside <Button>. The Button component handles icon sizing automatically.",
|
|
122
|
+
},
|
|
123
|
+
schema: [],
|
|
124
|
+
},
|
|
125
|
+
defaultOptions: [],
|
|
126
|
+
create(context) {
|
|
127
|
+
return {
|
|
128
|
+
JSXOpeningElement(node) {
|
|
129
|
+
// First, try type-based detection (more accurate)
|
|
130
|
+
const isIconByType = isIconComponentByType(node, context);
|
|
131
|
+
// If type checking says it's not an icon, trust it
|
|
132
|
+
if (isIconByType === false) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// If type checking says it's an icon, or type checking isn't available,
|
|
136
|
+
// fall back to name-based detection
|
|
137
|
+
const isIcon = isIconByType === true || isIconComponentByName(node);
|
|
138
|
+
if (!isIcon) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Check if it's inside a Button
|
|
142
|
+
if (!isInsideButton(node, context)) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Check if it has a className attribute
|
|
146
|
+
const classNameAttr = node.attributes.find((attr) => attr.type === AST_NODE_TYPES.JSXAttribute &&
|
|
147
|
+
attr.name.type === AST_NODE_TYPES.JSXIdentifier &&
|
|
148
|
+
attr.name.name === "className");
|
|
149
|
+
if (classNameAttr) {
|
|
150
|
+
context.report({
|
|
151
|
+
node: classNameAttr,
|
|
152
|
+
messageId: "noClassName",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=no-icon-class-in-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-icon-class-in-button.js","sourceRoot":"","sources":["../../../src/ui/rules/no-icon-class-in-button.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zod/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zod/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,GAAG,GAAoB,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tractorbeam/eslint-config",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Shared ESLint configuration for Tractorbeam projects",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Deprecated: use @tractorbeam/oxlint-config (Oxlint) instead. Shared ESLint configuration for Tractorbeam projects",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"tractorbeam",
|
|
7
|
-
"tractorbeamai",
|
|
8
6
|
"eslint",
|
|
9
|
-
"eslintconfig",
|
|
10
7
|
"eslint-config",
|
|
11
|
-
"
|
|
8
|
+
"eslintconfig",
|
|
9
|
+
"playwright",
|
|
10
|
+
"prettier",
|
|
12
11
|
"react",
|
|
13
12
|
"tanstack",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
13
|
+
"tractorbeam",
|
|
14
|
+
"tractorbeamai",
|
|
15
|
+
"typescript"
|
|
16
16
|
],
|
|
17
17
|
"homepage": "https://github.com/tractorbeamai/reusables/tree/main/packages/eslint-config#readme",
|
|
18
18
|
"bugs": {
|
|
19
19
|
"url": "https://github.com/tractorbeamai/reusables/issues"
|
|
20
20
|
},
|
|
21
|
+
"license": "MIT",
|
|
21
22
|
"repository": {
|
|
22
23
|
"type": "git",
|
|
23
24
|
"url": "git+https://github.com/tractorbeamai/reusables.git",
|
|
24
25
|
"directory": "packages/eslint-config"
|
|
25
26
|
},
|
|
26
|
-
"
|
|
27
|
+
"files": [
|
|
28
|
+
"dist/**",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
27
31
|
"type": "module",
|
|
28
32
|
"exports": {
|
|
29
33
|
".": {
|
|
@@ -50,6 +54,10 @@
|
|
|
50
54
|
"types": "./dist/node.d.ts",
|
|
51
55
|
"default": "./dist/node.js"
|
|
52
56
|
},
|
|
57
|
+
"./cloudflare-workers": {
|
|
58
|
+
"types": "./dist/cloudflare-workers.d.ts",
|
|
59
|
+
"default": "./dist/cloudflare-workers.js"
|
|
60
|
+
},
|
|
53
61
|
"./playwright": {
|
|
54
62
|
"types": "./dist/playwright.d.ts",
|
|
55
63
|
"default": "./dist/playwright.js"
|
|
@@ -57,48 +65,52 @@
|
|
|
57
65
|
"./prettier": {
|
|
58
66
|
"types": "./dist/prettier.d.ts",
|
|
59
67
|
"default": "./dist/prettier.js"
|
|
68
|
+
},
|
|
69
|
+
"./ui": {
|
|
70
|
+
"types": "./dist/ui.d.ts",
|
|
71
|
+
"default": "./dist/ui.js"
|
|
72
|
+
},
|
|
73
|
+
"./zod": {
|
|
74
|
+
"types": "./dist/zod.d.ts",
|
|
75
|
+
"default": "./dist/zod.js"
|
|
60
76
|
}
|
|
61
77
|
},
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public",
|
|
80
|
+
"provenance": true
|
|
81
|
+
},
|
|
66
82
|
"dependencies": {
|
|
67
|
-
"@eslint/js": "
|
|
68
|
-
"@tanstack/eslint-plugin-router": "
|
|
69
|
-
"eslint
|
|
70
|
-
"eslint-
|
|
71
|
-
"eslint-plugin-
|
|
72
|
-
"eslint-plugin-
|
|
73
|
-
"eslint-plugin-
|
|
74
|
-
"eslint-plugin-
|
|
75
|
-
"eslint-plugin-react
|
|
76
|
-
"eslint-plugin-react-
|
|
77
|
-
"eslint-plugin-react-
|
|
78
|
-
"eslint-plugin-
|
|
79
|
-
"eslint-plugin-
|
|
80
|
-
"
|
|
81
|
-
"
|
|
83
|
+
"@eslint/js": "10.0.1",
|
|
84
|
+
"@tanstack/eslint-plugin-router": "1.162.0",
|
|
85
|
+
"@typescript-eslint/utils": "8.71.1",
|
|
86
|
+
"eslint-config-prettier": "10.1.8",
|
|
87
|
+
"eslint-plugin-depend": "1.5.0",
|
|
88
|
+
"eslint-plugin-import-lite": "0.6.0",
|
|
89
|
+
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
90
|
+
"eslint-plugin-playwright": "2.12.1",
|
|
91
|
+
"eslint-plugin-react": "7.37.5",
|
|
92
|
+
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
93
|
+
"eslint-plugin-react-hooks": "7.1.1",
|
|
94
|
+
"eslint-plugin-react-refresh": "0.5.7",
|
|
95
|
+
"eslint-plugin-regexp": "3.3.1",
|
|
96
|
+
"eslint-plugin-unicorn": "77.0.0",
|
|
97
|
+
"eslint-plugin-zod": "5.0.0",
|
|
98
|
+
"globals": "17.13.0",
|
|
99
|
+
"typescript-eslint": "8.71.1"
|
|
82
100
|
},
|
|
83
101
|
"devDependencies": {
|
|
84
|
-
"@
|
|
85
|
-
"@types/eslint
|
|
86
|
-
"@types/
|
|
87
|
-
"
|
|
88
|
-
"
|
|
102
|
+
"@tractorbeam/typescript-config": "0.4.0",
|
|
103
|
+
"@types/eslint": "9.6.1",
|
|
104
|
+
"@types/eslint-plugin-jsx-a11y": "6.10.1",
|
|
105
|
+
"@types/node": "24.19.2",
|
|
106
|
+
"typescript": "6.0.3"
|
|
89
107
|
},
|
|
90
108
|
"peerDependencies": {
|
|
91
|
-
"eslint": "
|
|
109
|
+
"eslint": "^10.4.0",
|
|
92
110
|
"typescript-eslint": ">= 8"
|
|
93
111
|
},
|
|
94
|
-
"publishConfig": {
|
|
95
|
-
"access": "public",
|
|
96
|
-
"provenance": true
|
|
97
|
-
},
|
|
98
112
|
"scripts": {
|
|
99
113
|
"build": "tsc -p tsconfig.build.json",
|
|
100
|
-
"clean": "rm -rf dist *.tsbuildinfo"
|
|
101
|
-
"lint:eslint": "eslint src --max-warnings=0",
|
|
102
|
-
"lint:types": "tsc --noEmit"
|
|
114
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
103
115
|
}
|
|
104
116
|
}
|
package/dist/base.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAQ9B,CAAC"}
|
package/dist/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,IAAI,GAAoB,YAAY,CAAC;IAChD,MAAM,CAAC,OAAO,CAAC,WAAW;IAC1B,mBAAmB,CAAC,kBAAkB,CAAC;IACvC;QACE,KAAK,EAAE;YACL,mBAAmB,EAAE,OAAO;SAC7B;KACF;CACF,CAAC,CAAC"}
|
package/dist/node.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAS9B,CAAC"}
|
package/dist/node.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,IAAI,GAAoB,YAAY,CAAC;IAChD;QACE,eAAe,EAAE;YACf,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;SAC7B;QACD,KAAK,EAAE;YACL,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC,CAAC"}
|
package/dist/playwright.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAEpC,CAAC"}
|
package/dist/playwright.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAoB,YAAY,CAAC;IACtD,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;CAC7C,CAAC,CAAC"}
|
package/dist/prettier.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prettier.d.ts","sourceRoot":"","sources":["../src/prettier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAqB,CAAC"}
|
package/dist/prettier.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["../src/prettier.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAoB,CAAC,cAAc,CAAC,CAAC"}
|
package/dist/react.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAS7C,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EA4B/B,CAAC"}
|
package/dist/react.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,kBAAkB,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,KAAK,GAAoB,YAAY,CAAC;IACjD;QACE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,OAAO,EAAE;YACP,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;YACpC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACvC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;YACzC,aAAa,CAAC,WAAW,CAAC,WAAW;YACrC,mBAAmB,CAAC,OAAO,CAAC,WAAW;SACxC;QACD,eAAe,EAAE;YACf,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;SAChC;QACD,OAAO,EAAE;YACP,aAAa,EAAE,gBAA4C;YAC3D,eAAe,EAAE,kBAAkB;SACpC;QACD,KAAK,EAAE;YACL,6BAA6B,EAAE,KAAK;YACpC,sCAAsC,EAAE,MAAM;YAC9C,wBAAwB,EAAE,KAAK;YAC/B,0BAA0B,EAAE,KAAK;YACjC,6BAA6B,EAAE,KAAK;SACrC;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC7B;KACF;CACF,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-router.d.ts","sourceRoot":"","sources":["../src/tanstack-router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAExC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-router.js","sourceRoot":"","sources":["../src/tanstack-router.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAoB,YAAY,CAAC;IAC1D,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC;CACjD,CAAC,CAAC"}
|
package/dist/typescript.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOrC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EA0DpC,CAAC"}
|
package/dist/typescript.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAoB,YAAY,CAAC;IACtD;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,OAAO,EAAE;YACP,QAAQ,CAAC,OAAO,CAAC,iBAAiB;YAClC,QAAQ,CAAC,OAAO,CAAC,oBAAoB;YACrC,aAAa,CAAC,OAAO,CAAC,WAAW;YACjC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACxC,sEAAsE;YACtE,gBAAgB,CAAC,OAAO,CAAC,WAAW;SACrC;QACD,eAAe,EAAE;YACf,aAAa,EAAE;gBACb,cAAc,EAAE,IAAI;aACrB;SACF;QACD,KAAK,EAAE;YACL,yCAAyC,EAAE,KAAK;YAChD,kDAAkD,EAAE,KAAK;YAEzD,mCAAmC,EAAE,MAAM;YAC3C,yCAAyC,EAAE,MAAM;YACjD,oCAAoC,EAAE,MAAM;YAE5C,4CAA4C,EAAE,OAAO;YACrD,qCAAqC,EAAE;gBACrC,OAAO;gBACP;oBACE,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,UAAU;yBACjB;wBACD;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,eAAe;yBACtB;qBACF;iBACF;aACF;YACD,mCAAmC,EAAE;gBACnC,OAAO;gBACP;oBACE,iBAAiB,EAAE,IAAI;oBACvB,iBAAiB,EAAE,IAAI;oBACvB,8BAA8B,EAAE,IAAI;iBACrC;aACF;YAED,2BAA2B,EAAE,KAAK;YAClC,iBAAiB,EAAE,KAAK;YACxB,+BAA+B,EAAE,KAAK;YACtC,mCAAmC,EAAE,KAAK;YAC1C,uBAAuB,EAAE,KAAK;SAC/B;KACF;CACF,CAAC,CAAC"}
|