@xylabs/eslint-config-react-flat 8.1.21 → 8.2.1
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 -0
- package/dist/neutral/index.d.ts +2 -7
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +70 -22
- package/dist/neutral/index.mjs.map +3 -3
- package/dist/neutral/react/index.d.ts +4 -0
- package/dist/neutral/react/index.d.ts.map +1 -1
- package/dist/neutral/tiers/index.d.ts +17 -0
- package/dist/neutral/tiers/index.d.ts.map +1 -0
- package/dist/node/index.d.ts +2 -7
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +70 -22
- package/dist/node/index.mjs.map +3 -3
- package/dist/node/react/index.d.ts +4 -0
- package/dist/node/react/index.d.ts.map +1 -1
- package/dist/node/tiers/index.d.ts +17 -0
- package/dist/node/tiers/index.d.ts.map +1 -0
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -49,6 +49,20 @@ const eslintConfig: Linter.Config[] = [
|
|
|
49
49
|
export default eslintConfig
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
### Tiered presets
|
|
53
|
+
|
|
54
|
+
React layers are added at **tier 2 (best practices)** and above. Lower tiers match `@xylabs/eslint-config-flat` without React rules.
|
|
55
|
+
|
|
56
|
+
| Export | Description |
|
|
57
|
+
|--------|-------------|
|
|
58
|
+
| `correctnessConfig` / `correctnessTypeCheckedConfig` | Base tier 0 only |
|
|
59
|
+
| `consistencyConfig` / `consistencyTypeCheckedConfig` | Base tier 1 only |
|
|
60
|
+
| `bestPracticesConfig` / `bestPracticesTypeCheckedConfig` | Base + React (**default** without storybook) |
|
|
61
|
+
| `opinionatedConfig` / `opinionatedTypeCheckedConfig` | Stricter optional rules |
|
|
62
|
+
| `strictConfig` / `strictTypeCheckedConfig` | Opinionated + SonarJS at error severity |
|
|
63
|
+
|
|
64
|
+
`config` includes storybook support via `recommendedTypeCheckedWithStorybookConfig`.
|
|
65
|
+
|
|
52
66
|
### Extending with custom rules
|
|
53
67
|
|
|
54
68
|
```ts
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const reactStorybookConfig: Linter.Config[];
|
|
3
|
-
export declare const recommendedConfig: Linter.Config[];
|
|
4
|
-
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
5
|
-
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
6
|
-
export declare const config: Linter.Config[];
|
|
7
|
-
export { reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig, } from './react/index.ts';
|
|
1
|
+
export { reactBestPracticesConfig, reactBestPracticesTypeCheckedConfig, reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig, } from './react/index.ts';
|
|
8
2
|
export { storybookConfig } from './storybook/index.ts';
|
|
3
|
+
export { bestPracticesConfig, bestPracticesTypeCheckedConfig, config, consistencyConfig, consistencyTypeCheckedConfig, correctnessConfig, correctnessTypeCheckedConfig, opinionatedConfig, opinionatedTypeCheckedConfig, reactStorybookConfig, recommendedConfig, recommendedTypeCheckedConfig, recommendedTypeCheckedWithStorybookConfig, strictConfig, strictTypeCheckedConfig, } from './tiers/index.ts';
|
|
9
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,mCAAmC,EACnC,WAAW,EAEX,sBAAsB,EAEtB,iCAAiC,GAClC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,MAAM,EACN,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,yCAAyC,EACzC,YAAY,EACZ,uBAAuB,GACxB,MAAM,kBAAkB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
import {
|
|
3
|
-
recommendedConfig as xyRecommendedConfig,
|
|
4
|
-
recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig
|
|
5
|
-
} from "@xylabs/eslint-config-flat";
|
|
6
|
-
|
|
7
1
|
// src/react/index.ts
|
|
8
2
|
import tsParser from "@typescript-eslint/parser";
|
|
9
3
|
import reactDomPlugin from "eslint-plugin-react-dom";
|
|
@@ -28,7 +22,7 @@ function scopeReactConfigs(configs, typeChecked = false) {
|
|
|
28
22
|
parserOptions: {
|
|
29
23
|
ecmaFeatures: { jsx: true },
|
|
30
24
|
...config2.languageOptions?.parserOptions,
|
|
31
|
-
...typeChecked
|
|
25
|
+
...typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }
|
|
32
26
|
}
|
|
33
27
|
}
|
|
34
28
|
}));
|
|
@@ -40,7 +34,7 @@ function createReactOverride(typeChecked = false) {
|
|
|
40
34
|
parser: tsParser,
|
|
41
35
|
parserOptions: {
|
|
42
36
|
ecmaFeatures: { jsx: true },
|
|
43
|
-
...typeChecked
|
|
37
|
+
...typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }
|
|
44
38
|
},
|
|
45
39
|
globals: { ...globals.browser }
|
|
46
40
|
},
|
|
@@ -63,34 +57,86 @@ function createReactOverride(typeChecked = false) {
|
|
|
63
57
|
}
|
|
64
58
|
};
|
|
65
59
|
}
|
|
66
|
-
var
|
|
60
|
+
var reactBestPracticesConfig = [
|
|
67
61
|
...scopeReactConfigs(reactPlugin.configs["strict-typescript"]),
|
|
68
62
|
createReactOverride()
|
|
69
63
|
];
|
|
70
|
-
var
|
|
64
|
+
var reactBestPracticesTypeCheckedConfig = [
|
|
71
65
|
...scopeReactConfigs(reactPlugin.configs["strict-type-checked"], true),
|
|
72
66
|
createReactOverride(true)
|
|
73
67
|
];
|
|
74
|
-
var
|
|
68
|
+
var reactRecommendedConfig = reactBestPracticesConfig;
|
|
69
|
+
var reactRecommendedTypeCheckedConfig = reactBestPracticesTypeCheckedConfig;
|
|
70
|
+
var reactConfig = reactBestPracticesTypeCheckedConfig;
|
|
75
71
|
|
|
76
72
|
// src/storybook/index.ts
|
|
77
73
|
import storybook from "eslint-plugin-storybook";
|
|
78
74
|
var storybookConfig = storybook.configs["flat/recommended"];
|
|
79
75
|
|
|
80
|
-
// src/index.ts
|
|
76
|
+
// src/tiers/index.ts
|
|
77
|
+
import {
|
|
78
|
+
bestPracticesConfig as xyBestPracticesConfig,
|
|
79
|
+
bestPracticesTypeCheckedConfig as xyBestPracticesTypeCheckedConfig,
|
|
80
|
+
consistencyConfig as xyConsistencyConfig,
|
|
81
|
+
consistencyTypeCheckedConfig as xyConsistencyTypeCheckedConfig,
|
|
82
|
+
correctnessConfig as xyCorrectnessConfig,
|
|
83
|
+
correctnessTypeCheckedConfig as xyCorrectnessTypeCheckedConfig,
|
|
84
|
+
opinionatedConfig as xyOpinionatedConfig,
|
|
85
|
+
opinionatedTypeCheckedConfig as xyOpinionatedTypeCheckedConfig,
|
|
86
|
+
strictConfig as xyStrictConfig,
|
|
87
|
+
strictTypeCheckedConfig as xyStrictTypeCheckedConfig
|
|
88
|
+
} from "@xylabs/eslint-config-flat";
|
|
89
|
+
function mergeTierConfigs(...parts) {
|
|
90
|
+
return parts.flat();
|
|
91
|
+
}
|
|
81
92
|
var reactStorybookConfig = [...storybookConfig];
|
|
82
|
-
var
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
93
|
+
var correctnessConfig = [...xyCorrectnessConfig];
|
|
94
|
+
var correctnessTypeCheckedConfig = [...xyCorrectnessTypeCheckedConfig];
|
|
95
|
+
var consistencyConfig = [...xyConsistencyConfig];
|
|
96
|
+
var consistencyTypeCheckedConfig = [...xyConsistencyTypeCheckedConfig];
|
|
97
|
+
var bestPracticesConfig = mergeTierConfigs(
|
|
98
|
+
xyBestPracticesConfig,
|
|
99
|
+
reactBestPracticesConfig
|
|
100
|
+
);
|
|
101
|
+
var bestPracticesTypeCheckedConfig = mergeTierConfigs(
|
|
102
|
+
xyBestPracticesTypeCheckedConfig,
|
|
103
|
+
reactBestPracticesTypeCheckedConfig
|
|
104
|
+
);
|
|
105
|
+
var opinionatedConfig = mergeTierConfigs(
|
|
106
|
+
xyOpinionatedConfig,
|
|
107
|
+
reactBestPracticesTypeCheckedConfig
|
|
108
|
+
);
|
|
109
|
+
var opinionatedTypeCheckedConfig = mergeTierConfigs(
|
|
110
|
+
xyOpinionatedTypeCheckedConfig,
|
|
111
|
+
reactBestPracticesTypeCheckedConfig
|
|
112
|
+
);
|
|
113
|
+
var strictConfig = mergeTierConfigs(
|
|
114
|
+
xyStrictConfig,
|
|
115
|
+
reactBestPracticesTypeCheckedConfig
|
|
116
|
+
);
|
|
117
|
+
var strictTypeCheckedConfig = mergeTierConfigs(
|
|
118
|
+
xyStrictTypeCheckedConfig,
|
|
119
|
+
reactBestPracticesTypeCheckedConfig
|
|
120
|
+
);
|
|
121
|
+
var recommendedConfig = bestPracticesConfig;
|
|
122
|
+
var recommendedTypeCheckedConfig = bestPracticesTypeCheckedConfig;
|
|
123
|
+
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs(
|
|
124
|
+
bestPracticesTypeCheckedConfig,
|
|
125
|
+
reactStorybookConfig
|
|
126
|
+
);
|
|
91
127
|
var config = recommendedTypeCheckedWithStorybookConfig;
|
|
92
128
|
export {
|
|
129
|
+
bestPracticesConfig,
|
|
130
|
+
bestPracticesTypeCheckedConfig,
|
|
93
131
|
config,
|
|
132
|
+
consistencyConfig,
|
|
133
|
+
consistencyTypeCheckedConfig,
|
|
134
|
+
correctnessConfig,
|
|
135
|
+
correctnessTypeCheckedConfig,
|
|
136
|
+
opinionatedConfig,
|
|
137
|
+
opinionatedTypeCheckedConfig,
|
|
138
|
+
reactBestPracticesConfig,
|
|
139
|
+
reactBestPracticesTypeCheckedConfig,
|
|
94
140
|
reactConfig,
|
|
95
141
|
reactRecommendedConfig,
|
|
96
142
|
reactRecommendedTypeCheckedConfig,
|
|
@@ -98,6 +144,8 @@ export {
|
|
|
98
144
|
recommendedConfig,
|
|
99
145
|
recommendedTypeCheckedConfig,
|
|
100
146
|
recommendedTypeCheckedWithStorybookConfig,
|
|
101
|
-
storybookConfig
|
|
147
|
+
storybookConfig,
|
|
148
|
+
strictConfig,
|
|
149
|
+
strictTypeCheckedConfig
|
|
102
150
|
};
|
|
103
151
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.ts", "../../src/
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";AAAA
|
|
3
|
+
"sources": ["../../src/react/index.ts", "../../src/storybook/index.ts", "../../src/tiers/index.ts"],
|
|
4
|
+
"sourcesContent": ["import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-dom': reactDomPlugin,\n 'react-web-api': reactWebApiPlugin,\n 'react-refresh': eslintReactRefreshPlugin,\n 'react-hooks': reactHooksPlugin as unknown as ESLint.Plugin,\n 'react-naming-convention': reactNamingConventionPlugin,\n },\n rules: {\n ...reactDomPlugin.configs.strict.rules,\n ...reactWebApiPlugin.configs.recommended.rules,\n ...reactHooksPlugin.configs.flat.recommended.rules,\n ...reactNamingConventionPlugin.configs.recommended.rules,\n ...eslintReactRefreshPlugin.configs.recommended.rules,\n 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],\n 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\n/** @deprecated Use `reactBestPracticesConfig` instead. */\nexport const reactRecommendedConfig: Linter.Config[] = reactBestPracticesConfig\n\n/** @deprecated Use `reactBestPracticesTypeCheckedConfig` instead. */\nexport const reactRecommendedTypeCheckedConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n", "import type { Linter } from 'eslint'\nimport storybook from 'eslint-plugin-storybook'\n\nexport const storybookConfig: Linter.Config[] = storybook.configs['flat/recommended'] as Linter.Config[]\n", "import {\n bestPracticesConfig as xyBestPracticesConfig,\n bestPracticesTypeCheckedConfig as xyBestPracticesTypeCheckedConfig,\n consistencyConfig as xyConsistencyConfig,\n consistencyTypeCheckedConfig as xyConsistencyTypeCheckedConfig,\n correctnessConfig as xyCorrectnessConfig,\n correctnessTypeCheckedConfig as xyCorrectnessTypeCheckedConfig,\n opinionatedConfig as xyOpinionatedConfig,\n opinionatedTypeCheckedConfig as xyOpinionatedTypeCheckedConfig,\n strictConfig as xyStrictConfig,\n strictTypeCheckedConfig as xyStrictTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const correctnessConfig: Linter.Config[] = [...xyCorrectnessConfig]\n\nexport const correctnessTypeCheckedConfig: Linter.Config[] = [...xyCorrectnessTypeCheckedConfig]\n\nexport const consistencyConfig: Linter.Config[] = [...xyConsistencyConfig]\n\nexport const consistencyTypeCheckedConfig: Linter.Config[] = [...xyConsistencyTypeCheckedConfig]\n\nexport const bestPracticesConfig: Linter.Config[] = mergeTierConfigs(\n xyBestPracticesConfig,\n reactBestPracticesConfig,\n)\n\nexport const bestPracticesTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyBestPracticesTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const opinionatedConfig: Linter.Config[] = mergeTierConfigs(\n xyOpinionatedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const opinionatedTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyOpinionatedTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const strictConfig: Linter.Config[] = mergeTierConfigs(\n xyStrictConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const strictTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyStrictTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const recommendedConfig: Linter.Config[] = bestPracticesConfig\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = bestPracticesTypeCheckedConfig\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesTypeCheckedConfig,\n reactStorybookConfig,\n)\n\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["config"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
+
export declare const reactBestPracticesConfig: Linter.Config[];
|
|
3
|
+
export declare const reactBestPracticesTypeCheckedConfig: Linter.Config[];
|
|
4
|
+
/** @deprecated Use `reactBestPracticesConfig` instead. */
|
|
2
5
|
export declare const reactRecommendedConfig: Linter.Config[];
|
|
6
|
+
/** @deprecated Use `reactBestPracticesTypeCheckedConfig` instead. */
|
|
3
7
|
export declare const reactRecommendedTypeCheckedConfig: Linter.Config[];
|
|
4
8
|
export declare const reactConfig: Linter.Config[];
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiE5C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiE5C,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAGnD,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAG9D,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE/E,qEAAqE;AACrE,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAErG,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
export declare const reactStorybookConfig: Linter.Config[];
|
|
3
|
+
export declare const correctnessConfig: Linter.Config[];
|
|
4
|
+
export declare const correctnessTypeCheckedConfig: Linter.Config[];
|
|
5
|
+
export declare const consistencyConfig: Linter.Config[];
|
|
6
|
+
export declare const consistencyTypeCheckedConfig: Linter.Config[];
|
|
7
|
+
export declare const bestPracticesConfig: Linter.Config[];
|
|
8
|
+
export declare const bestPracticesTypeCheckedConfig: Linter.Config[];
|
|
9
|
+
export declare const opinionatedConfig: Linter.Config[];
|
|
10
|
+
export declare const opinionatedTypeCheckedConfig: Linter.Config[];
|
|
11
|
+
export declare const strictConfig: Linter.Config[];
|
|
12
|
+
export declare const strictTypeCheckedConfig: Linter.Config[];
|
|
13
|
+
export declare const recommendedConfig: Linter.Config[];
|
|
14
|
+
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
15
|
+
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
16
|
+
export declare const config: Linter.Config[];
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAG9C,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAGzD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAG5C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAGvC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAGlD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAwB,CAAA;AAErE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAmC,CAAA;AAE3F,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const reactStorybookConfig: Linter.Config[];
|
|
3
|
-
export declare const recommendedConfig: Linter.Config[];
|
|
4
|
-
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
5
|
-
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
6
|
-
export declare const config: Linter.Config[];
|
|
7
|
-
export { reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig, } from './react/index.ts';
|
|
1
|
+
export { reactBestPracticesConfig, reactBestPracticesTypeCheckedConfig, reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig, } from './react/index.ts';
|
|
8
2
|
export { storybookConfig } from './storybook/index.ts';
|
|
3
|
+
export { bestPracticesConfig, bestPracticesTypeCheckedConfig, config, consistencyConfig, consistencyTypeCheckedConfig, correctnessConfig, correctnessTypeCheckedConfig, opinionatedConfig, opinionatedTypeCheckedConfig, reactStorybookConfig, recommendedConfig, recommendedTypeCheckedConfig, recommendedTypeCheckedWithStorybookConfig, strictConfig, strictTypeCheckedConfig, } from './tiers/index.ts';
|
|
9
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,mCAAmC,EACnC,WAAW,EAEX,sBAAsB,EAEtB,iCAAiC,GAClC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,MAAM,EACN,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,yCAAyC,EACzC,YAAY,EACZ,uBAAuB,GACxB,MAAM,kBAAkB,CAAA"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
import {
|
|
3
|
-
recommendedConfig as xyRecommendedConfig,
|
|
4
|
-
recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig
|
|
5
|
-
} from "@xylabs/eslint-config-flat";
|
|
6
|
-
|
|
7
1
|
// src/react/index.ts
|
|
8
2
|
import tsParser from "@typescript-eslint/parser";
|
|
9
3
|
import reactDomPlugin from "eslint-plugin-react-dom";
|
|
@@ -28,7 +22,7 @@ function scopeReactConfigs(configs, typeChecked = false) {
|
|
|
28
22
|
parserOptions: {
|
|
29
23
|
ecmaFeatures: { jsx: true },
|
|
30
24
|
...config2.languageOptions?.parserOptions,
|
|
31
|
-
...typeChecked
|
|
25
|
+
...typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }
|
|
32
26
|
}
|
|
33
27
|
}
|
|
34
28
|
}));
|
|
@@ -40,7 +34,7 @@ function createReactOverride(typeChecked = false) {
|
|
|
40
34
|
parser: tsParser,
|
|
41
35
|
parserOptions: {
|
|
42
36
|
ecmaFeatures: { jsx: true },
|
|
43
|
-
...typeChecked
|
|
37
|
+
...typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }
|
|
44
38
|
},
|
|
45
39
|
globals: { ...globals.browser }
|
|
46
40
|
},
|
|
@@ -63,34 +57,86 @@ function createReactOverride(typeChecked = false) {
|
|
|
63
57
|
}
|
|
64
58
|
};
|
|
65
59
|
}
|
|
66
|
-
var
|
|
60
|
+
var reactBestPracticesConfig = [
|
|
67
61
|
...scopeReactConfigs(reactPlugin.configs["strict-typescript"]),
|
|
68
62
|
createReactOverride()
|
|
69
63
|
];
|
|
70
|
-
var
|
|
64
|
+
var reactBestPracticesTypeCheckedConfig = [
|
|
71
65
|
...scopeReactConfigs(reactPlugin.configs["strict-type-checked"], true),
|
|
72
66
|
createReactOverride(true)
|
|
73
67
|
];
|
|
74
|
-
var
|
|
68
|
+
var reactRecommendedConfig = reactBestPracticesConfig;
|
|
69
|
+
var reactRecommendedTypeCheckedConfig = reactBestPracticesTypeCheckedConfig;
|
|
70
|
+
var reactConfig = reactBestPracticesTypeCheckedConfig;
|
|
75
71
|
|
|
76
72
|
// src/storybook/index.ts
|
|
77
73
|
import storybook from "eslint-plugin-storybook";
|
|
78
74
|
var storybookConfig = storybook.configs["flat/recommended"];
|
|
79
75
|
|
|
80
|
-
// src/index.ts
|
|
76
|
+
// src/tiers/index.ts
|
|
77
|
+
import {
|
|
78
|
+
bestPracticesConfig as xyBestPracticesConfig,
|
|
79
|
+
bestPracticesTypeCheckedConfig as xyBestPracticesTypeCheckedConfig,
|
|
80
|
+
consistencyConfig as xyConsistencyConfig,
|
|
81
|
+
consistencyTypeCheckedConfig as xyConsistencyTypeCheckedConfig,
|
|
82
|
+
correctnessConfig as xyCorrectnessConfig,
|
|
83
|
+
correctnessTypeCheckedConfig as xyCorrectnessTypeCheckedConfig,
|
|
84
|
+
opinionatedConfig as xyOpinionatedConfig,
|
|
85
|
+
opinionatedTypeCheckedConfig as xyOpinionatedTypeCheckedConfig,
|
|
86
|
+
strictConfig as xyStrictConfig,
|
|
87
|
+
strictTypeCheckedConfig as xyStrictTypeCheckedConfig
|
|
88
|
+
} from "@xylabs/eslint-config-flat";
|
|
89
|
+
function mergeTierConfigs(...parts) {
|
|
90
|
+
return parts.flat();
|
|
91
|
+
}
|
|
81
92
|
var reactStorybookConfig = [...storybookConfig];
|
|
82
|
-
var
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
93
|
+
var correctnessConfig = [...xyCorrectnessConfig];
|
|
94
|
+
var correctnessTypeCheckedConfig = [...xyCorrectnessTypeCheckedConfig];
|
|
95
|
+
var consistencyConfig = [...xyConsistencyConfig];
|
|
96
|
+
var consistencyTypeCheckedConfig = [...xyConsistencyTypeCheckedConfig];
|
|
97
|
+
var bestPracticesConfig = mergeTierConfigs(
|
|
98
|
+
xyBestPracticesConfig,
|
|
99
|
+
reactBestPracticesConfig
|
|
100
|
+
);
|
|
101
|
+
var bestPracticesTypeCheckedConfig = mergeTierConfigs(
|
|
102
|
+
xyBestPracticesTypeCheckedConfig,
|
|
103
|
+
reactBestPracticesTypeCheckedConfig
|
|
104
|
+
);
|
|
105
|
+
var opinionatedConfig = mergeTierConfigs(
|
|
106
|
+
xyOpinionatedConfig,
|
|
107
|
+
reactBestPracticesTypeCheckedConfig
|
|
108
|
+
);
|
|
109
|
+
var opinionatedTypeCheckedConfig = mergeTierConfigs(
|
|
110
|
+
xyOpinionatedTypeCheckedConfig,
|
|
111
|
+
reactBestPracticesTypeCheckedConfig
|
|
112
|
+
);
|
|
113
|
+
var strictConfig = mergeTierConfigs(
|
|
114
|
+
xyStrictConfig,
|
|
115
|
+
reactBestPracticesTypeCheckedConfig
|
|
116
|
+
);
|
|
117
|
+
var strictTypeCheckedConfig = mergeTierConfigs(
|
|
118
|
+
xyStrictTypeCheckedConfig,
|
|
119
|
+
reactBestPracticesTypeCheckedConfig
|
|
120
|
+
);
|
|
121
|
+
var recommendedConfig = bestPracticesConfig;
|
|
122
|
+
var recommendedTypeCheckedConfig = bestPracticesTypeCheckedConfig;
|
|
123
|
+
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs(
|
|
124
|
+
bestPracticesTypeCheckedConfig,
|
|
125
|
+
reactStorybookConfig
|
|
126
|
+
);
|
|
91
127
|
var config = recommendedTypeCheckedWithStorybookConfig;
|
|
92
128
|
export {
|
|
129
|
+
bestPracticesConfig,
|
|
130
|
+
bestPracticesTypeCheckedConfig,
|
|
93
131
|
config,
|
|
132
|
+
consistencyConfig,
|
|
133
|
+
consistencyTypeCheckedConfig,
|
|
134
|
+
correctnessConfig,
|
|
135
|
+
correctnessTypeCheckedConfig,
|
|
136
|
+
opinionatedConfig,
|
|
137
|
+
opinionatedTypeCheckedConfig,
|
|
138
|
+
reactBestPracticesConfig,
|
|
139
|
+
reactBestPracticesTypeCheckedConfig,
|
|
94
140
|
reactConfig,
|
|
95
141
|
reactRecommendedConfig,
|
|
96
142
|
reactRecommendedTypeCheckedConfig,
|
|
@@ -98,6 +144,8 @@ export {
|
|
|
98
144
|
recommendedConfig,
|
|
99
145
|
recommendedTypeCheckedConfig,
|
|
100
146
|
recommendedTypeCheckedWithStorybookConfig,
|
|
101
|
-
storybookConfig
|
|
147
|
+
storybookConfig,
|
|
148
|
+
strictConfig,
|
|
149
|
+
strictTypeCheckedConfig
|
|
102
150
|
};
|
|
103
151
|
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.ts", "../../src/
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";AAAA
|
|
3
|
+
"sources": ["../../src/react/index.ts", "../../src/storybook/index.ts", "../../src/tiers/index.ts"],
|
|
4
|
+
"sourcesContent": ["import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked && { projectService: true, tsconfigRootDir: process.cwd() }),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-dom': reactDomPlugin,\n 'react-web-api': reactWebApiPlugin,\n 'react-refresh': eslintReactRefreshPlugin,\n 'react-hooks': reactHooksPlugin as unknown as ESLint.Plugin,\n 'react-naming-convention': reactNamingConventionPlugin,\n },\n rules: {\n ...reactDomPlugin.configs.strict.rules,\n ...reactWebApiPlugin.configs.recommended.rules,\n ...reactHooksPlugin.configs.flat.recommended.rules,\n ...reactNamingConventionPlugin.configs.recommended.rules,\n ...eslintReactRefreshPlugin.configs.recommended.rules,\n 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],\n 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\n/** @deprecated Use `reactBestPracticesConfig` instead. */\nexport const reactRecommendedConfig: Linter.Config[] = reactBestPracticesConfig\n\n/** @deprecated Use `reactBestPracticesTypeCheckedConfig` instead. */\nexport const reactRecommendedTypeCheckedConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n", "import type { Linter } from 'eslint'\nimport storybook from 'eslint-plugin-storybook'\n\nexport const storybookConfig: Linter.Config[] = storybook.configs['flat/recommended'] as Linter.Config[]\n", "import {\n bestPracticesConfig as xyBestPracticesConfig,\n bestPracticesTypeCheckedConfig as xyBestPracticesTypeCheckedConfig,\n consistencyConfig as xyConsistencyConfig,\n consistencyTypeCheckedConfig as xyConsistencyTypeCheckedConfig,\n correctnessConfig as xyCorrectnessConfig,\n correctnessTypeCheckedConfig as xyCorrectnessTypeCheckedConfig,\n opinionatedConfig as xyOpinionatedConfig,\n opinionatedTypeCheckedConfig as xyOpinionatedTypeCheckedConfig,\n strictConfig as xyStrictConfig,\n strictTypeCheckedConfig as xyStrictTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const correctnessConfig: Linter.Config[] = [...xyCorrectnessConfig]\n\nexport const correctnessTypeCheckedConfig: Linter.Config[] = [...xyCorrectnessTypeCheckedConfig]\n\nexport const consistencyConfig: Linter.Config[] = [...xyConsistencyConfig]\n\nexport const consistencyTypeCheckedConfig: Linter.Config[] = [...xyConsistencyTypeCheckedConfig]\n\nexport const bestPracticesConfig: Linter.Config[] = mergeTierConfigs(\n xyBestPracticesConfig,\n reactBestPracticesConfig,\n)\n\nexport const bestPracticesTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyBestPracticesTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const opinionatedConfig: Linter.Config[] = mergeTierConfigs(\n xyOpinionatedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const opinionatedTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyOpinionatedTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const strictConfig: Linter.Config[] = mergeTierConfigs(\n xyStrictConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const strictTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n xyStrictTypeCheckedConfig,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const recommendedConfig: Linter.Config[] = bestPracticesConfig\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = bestPracticesTypeCheckedConfig\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesTypeCheckedConfig,\n reactStorybookConfig,\n)\n\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["config"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
+
export declare const reactBestPracticesConfig: Linter.Config[];
|
|
3
|
+
export declare const reactBestPracticesTypeCheckedConfig: Linter.Config[];
|
|
4
|
+
/** @deprecated Use `reactBestPracticesConfig` instead. */
|
|
2
5
|
export declare const reactRecommendedConfig: Linter.Config[];
|
|
6
|
+
/** @deprecated Use `reactBestPracticesTypeCheckedConfig` instead. */
|
|
3
7
|
export declare const reactRecommendedTypeCheckedConfig: Linter.Config[];
|
|
4
8
|
export declare const reactConfig: Linter.Config[];
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiE5C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiE5C,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAGnD,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAG9D,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE/E,qEAAqE;AACrE,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAErG,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Linter } from 'eslint';
|
|
2
|
+
export declare const reactStorybookConfig: Linter.Config[];
|
|
3
|
+
export declare const correctnessConfig: Linter.Config[];
|
|
4
|
+
export declare const correctnessTypeCheckedConfig: Linter.Config[];
|
|
5
|
+
export declare const consistencyConfig: Linter.Config[];
|
|
6
|
+
export declare const consistencyTypeCheckedConfig: Linter.Config[];
|
|
7
|
+
export declare const bestPracticesConfig: Linter.Config[];
|
|
8
|
+
export declare const bestPracticesTypeCheckedConfig: Linter.Config[];
|
|
9
|
+
export declare const opinionatedConfig: Linter.Config[];
|
|
10
|
+
export declare const opinionatedTypeCheckedConfig: Linter.Config[];
|
|
11
|
+
export declare const strictConfig: Linter.Config[];
|
|
12
|
+
export declare const strictTypeCheckedConfig: Linter.Config[];
|
|
13
|
+
export declare const recommendedConfig: Linter.Config[];
|
|
14
|
+
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
15
|
+
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
16
|
+
export declare const config: Linter.Config[];
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAG9C,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAGzD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAG5C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAGvC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAGlD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAwB,CAAA;AAErE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAmC,CAAA;AAE3F,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/eslint-config-react-flat",
|
|
3
|
-
"version": "8.1
|
|
3
|
+
"version": "8.2.1",
|
|
4
4
|
"description": "ESLint Config used throughout XY Labs TypeScript/JavaScript libraries and react projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xylabs",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"eslint-plugin-react-x": "^5.9.0",
|
|
45
45
|
"eslint-plugin-storybook": "^10.4.4",
|
|
46
46
|
"globals": "~17.6.0",
|
|
47
|
-
"@xylabs/eslint-config-flat": "~8.1
|
|
47
|
+
"@xylabs/eslint-config-flat": "~8.2.1"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@babel/core": "^7.29.7",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"@types/node": "^25.9.3",
|
|
53
53
|
"@vitest/coverage-v8": "~4.1.8",
|
|
54
54
|
"acorn": "^8.17.0",
|
|
55
|
+
"browserslist": "4.28.2",
|
|
55
56
|
"cosmiconfig": "~9.0.2",
|
|
56
57
|
"eslint": "^10.5.0",
|
|
57
58
|
"eslint-import-resolver-typescript": "^4.4.5",
|
|
@@ -62,10 +63,11 @@
|
|
|
62
63
|
"vite": "^8.0.16",
|
|
63
64
|
"vitest": "~4.1.8",
|
|
64
65
|
"zod": "^4.4.3",
|
|
65
|
-
"@xylabs/
|
|
66
|
-
"@xylabs/
|
|
66
|
+
"@xylabs/toolchain": "~8.2.1",
|
|
67
|
+
"@xylabs/tsconfig": "~8.2.1"
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
70
|
+
"browserslist": ">= 4.21.0",
|
|
69
71
|
"eslint": "^10.3",
|
|
70
72
|
"eslint-import-resolver-typescript": "^4.4",
|
|
71
73
|
"storybook": "^10.3",
|