@xylabs/eslint-config-react-flat 8.2.17 → 8.2.19
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 +7 -5
- package/dist/neutral/index.mjs +52 -44
- package/dist/neutral/index.mjs.map +4 -4
- package/dist/neutral/tiers/index.d.ts +13 -4
- package/dist/neutral/tiers/index.d.ts.map +1 -1
- package/dist/neutral/tiers/recommendedConfig.d.ts +11 -0
- package/dist/neutral/tiers/recommendedConfig.d.ts.map +1 -0
- package/dist/node/index.mjs +52 -44
- package/dist/node/index.mjs.map +4 -4
- package/dist/node/tiers/index.d.ts +13 -4
- package/dist/node/tiers/index.d.ts.map +1 -1
- package/dist/node/tiers/recommendedConfig.d.ts +11 -0
- package/dist/node/tiers/recommendedConfig.d.ts.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -40,17 +40,19 @@ Use this config in your `eslint.config.ts`:
|
|
|
40
40
|
```ts
|
|
41
41
|
import {
|
|
42
42
|
configReactStorybook,
|
|
43
|
-
|
|
43
|
+
recommendedConfig,
|
|
44
44
|
} from '@xylabs/eslint-config-react-flat'
|
|
45
45
|
|
|
46
|
-
const
|
|
47
|
-
|
|
46
|
+
const xylabsConfig = recommendedConfig({ tier: 3, isTypeChecked: true })
|
|
47
|
+
|
|
48
|
+
export default [
|
|
49
|
+
...xylabsConfig,
|
|
48
50
|
...configReactStorybook,
|
|
49
51
|
]
|
|
50
|
-
|
|
51
|
-
export default eslintConfig
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
`recommendedConfig` accepts `tier` (0–4, default `3`) and `isTypeChecked` (default `true`). Named `configReactTier*` exports remain available but are deprecated.
|
|
55
|
+
|
|
54
56
|
### Tiered presets
|
|
55
57
|
|
|
56
58
|
React layers are added at **tier 2 (best practices)** and above. Lower tiers match `@xylabs/eslint-config-flat` without React rules.
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -2,18 +2,12 @@
|
|
|
2
2
|
import storybook from "eslint-plugin-storybook";
|
|
3
3
|
var storybookConfig = storybook.configs["flat/recommended"];
|
|
4
4
|
|
|
5
|
-
// src/tiers/
|
|
5
|
+
// src/tiers/recommendedConfig.ts
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
configTier2BestPractices,
|
|
12
|
-
configTier2BestPracticesTypeChecked,
|
|
13
|
-
configTier3Opinionated,
|
|
14
|
-
configTier3OpinionatedTypeChecked,
|
|
15
|
-
configTier4Experimental,
|
|
16
|
-
configTier4ExperimentalTypeChecked
|
|
7
|
+
applyRecommendedConfigTypeChecked as applyFlatRecommendedConfigTypeChecked,
|
|
8
|
+
parseRecommendedConfigSource as parseFlatRecommendedConfigSource,
|
|
9
|
+
recommendedConfig as flatRecommendedConfig,
|
|
10
|
+
resolveRecommendedConfigOptions
|
|
17
11
|
} from "@xylabs/eslint-config-flat";
|
|
18
12
|
|
|
19
13
|
// src/react/index.ts
|
|
@@ -96,47 +90,58 @@ var reactBestPracticesTypeCheckedConfig = [
|
|
|
96
90
|
createReactOverride(true)
|
|
97
91
|
];
|
|
98
92
|
|
|
99
|
-
// src/tiers/
|
|
93
|
+
// src/tiers/recommendedConfig.ts
|
|
94
|
+
import {
|
|
95
|
+
DEFAULT_RECOMMENDED_CONFIG_OPTIONS,
|
|
96
|
+
formatRecommendedConfigCall,
|
|
97
|
+
resolveRecommendedConfigOptions as resolveRecommendedConfigOptions2
|
|
98
|
+
} from "@xylabs/eslint-config-flat";
|
|
100
99
|
function mergeTierConfigs(...parts) {
|
|
101
100
|
return parts.flat();
|
|
102
101
|
}
|
|
102
|
+
function reactLayersForTier(tier, isTypeChecked) {
|
|
103
|
+
if (tier <= 1) return [];
|
|
104
|
+
if (tier >= 3) return [...reactBestPracticesTypeCheckedConfig];
|
|
105
|
+
return isTypeChecked ? [...reactBestPracticesTypeCheckedConfig] : [...reactBestPracticesConfig];
|
|
106
|
+
}
|
|
107
|
+
function recommendedConfig(options) {
|
|
108
|
+
const resolved = resolveRecommendedConfigOptions(options);
|
|
109
|
+
return mergeTierConfigs(
|
|
110
|
+
flatRecommendedConfig(resolved),
|
|
111
|
+
reactLayersForTier(resolved.tier, resolved.isTypeChecked)
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function parseRecommendedConfigSource(source) {
|
|
115
|
+
return parseFlatRecommendedConfigSource(source);
|
|
116
|
+
}
|
|
117
|
+
function applyRecommendedConfigTypeChecked(source, isEnabled) {
|
|
118
|
+
return applyFlatRecommendedConfigTypeChecked(source, isEnabled);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/tiers/index.ts
|
|
122
|
+
function mergeTierConfigs2(...parts) {
|
|
123
|
+
return parts.flat();
|
|
124
|
+
}
|
|
103
125
|
var configReactStorybook = [...storybookConfig];
|
|
104
|
-
var configReactTier0Correctness =
|
|
105
|
-
var configReactTier0CorrectnessTypeChecked =
|
|
106
|
-
var configReactTier1Consistency =
|
|
107
|
-
var configReactTier1ConsistencyTypeChecked =
|
|
108
|
-
var configReactTier2BestPractices =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
);
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
configTier3Opinionated,
|
|
118
|
-
reactBestPracticesTypeCheckedConfig
|
|
119
|
-
);
|
|
120
|
-
var configReactTier3OpinionatedTypeChecked = mergeTierConfigs(
|
|
121
|
-
configTier3OpinionatedTypeChecked,
|
|
122
|
-
reactBestPracticesTypeCheckedConfig
|
|
123
|
-
);
|
|
124
|
-
var configReactTier4Experimental = mergeTierConfigs(
|
|
125
|
-
configTier4Experimental,
|
|
126
|
-
reactBestPracticesTypeCheckedConfig
|
|
127
|
-
);
|
|
128
|
-
var configReactTier4ExperimentalTypeChecked = mergeTierConfigs(
|
|
129
|
-
configTier4ExperimentalTypeChecked,
|
|
130
|
-
reactBestPracticesTypeCheckedConfig
|
|
131
|
-
);
|
|
132
|
-
var recommendedConfig = configReactTier2BestPractices;
|
|
133
|
-
var recommendedTypeCheckedConfig = configReactTier2BestPracticesTypeChecked;
|
|
134
|
-
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs(
|
|
135
|
-
configReactTier2BestPracticesTypeChecked,
|
|
126
|
+
var configReactTier0Correctness = recommendedConfig({ tier: 0, isTypeChecked: false });
|
|
127
|
+
var configReactTier0CorrectnessTypeChecked = recommendedConfig({ tier: 0, isTypeChecked: true });
|
|
128
|
+
var configReactTier1Consistency = recommendedConfig({ tier: 1, isTypeChecked: false });
|
|
129
|
+
var configReactTier1ConsistencyTypeChecked = recommendedConfig({ tier: 1, isTypeChecked: true });
|
|
130
|
+
var configReactTier2BestPractices = recommendedConfig({ tier: 2, isTypeChecked: false });
|
|
131
|
+
var configReactTier2BestPracticesTypeChecked = recommendedConfig({ tier: 2, isTypeChecked: true });
|
|
132
|
+
var configReactTier3Opinionated = recommendedConfig({ tier: 3, isTypeChecked: false });
|
|
133
|
+
var configReactTier3OpinionatedTypeChecked = recommendedConfig({ tier: 3, isTypeChecked: true });
|
|
134
|
+
var configReactTier4Experimental = recommendedConfig({ tier: 4, isTypeChecked: false });
|
|
135
|
+
var configReactTier4ExperimentalTypeChecked = recommendedConfig({ tier: 4, isTypeChecked: true });
|
|
136
|
+
var recommendedTypeCheckedConfig = recommendedConfig({ tier: 2, isTypeChecked: true });
|
|
137
|
+
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs2(
|
|
138
|
+
recommendedConfig({ tier: 2, isTypeChecked: true }),
|
|
136
139
|
configReactStorybook
|
|
137
140
|
);
|
|
138
141
|
var config = recommendedTypeCheckedWithStorybookConfig;
|
|
139
142
|
export {
|
|
143
|
+
DEFAULT_RECOMMENDED_CONFIG_OPTIONS,
|
|
144
|
+
applyRecommendedConfigTypeChecked,
|
|
140
145
|
config,
|
|
141
146
|
configReactStorybook,
|
|
142
147
|
configReactTier0Correctness,
|
|
@@ -149,9 +154,12 @@ export {
|
|
|
149
154
|
configReactTier3OpinionatedTypeChecked,
|
|
150
155
|
configReactTier4Experimental,
|
|
151
156
|
configReactTier4ExperimentalTypeChecked,
|
|
157
|
+
formatRecommendedConfigCall,
|
|
158
|
+
parseRecommendedConfigSource,
|
|
152
159
|
recommendedConfig,
|
|
153
160
|
recommendedTypeCheckedConfig,
|
|
154
161
|
recommendedTypeCheckedWithStorybookConfig,
|
|
162
|
+
resolveRecommendedConfigOptions2 as resolveRecommendedConfigOptions,
|
|
155
163
|
storybookConfig
|
|
156
164
|
};
|
|
157
165
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/storybook/index.ts", "../../src/tiers/
|
|
4
|
-
"sourcesContent": ["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
|
|
5
|
-
"mappings": ";AACA,OAAO,eAAe;AAEf,IAAM,kBAAmC,UAAU,QAAQ,kBAAkB;;;ACHpF;AAAA,EACE
|
|
6
|
-
"names": ["config"]
|
|
3
|
+
"sources": ["../../src/storybook/index.ts", "../../src/tiers/recommendedConfig.ts", "../../src/react/index.ts", "../../src/tiers/index.ts"],
|
|
4
|
+
"sourcesContent": ["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 applyRecommendedConfigTypeChecked as applyFlatRecommendedConfigTypeChecked,\n type LintTier,\n parseRecommendedConfigSource as parseFlatRecommendedConfigSource,\n recommendedConfig as flatRecommendedConfig,\n type RecommendedConfigOptions,\n resolveRecommendedConfigOptions,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\n\nexport type { LintTier, RecommendedConfigOptions } from '@xylabs/eslint-config-flat'\nexport {\n DEFAULT_RECOMMENDED_CONFIG_OPTIONS,\n formatRecommendedConfigCall,\n resolveRecommendedConfigOptions,\n} from '@xylabs/eslint-config-flat'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nfunction reactLayersForTier(tier: LintTier, isTypeChecked: boolean): Linter.Config[] {\n if (tier <= 1) return []\n if (tier >= 3) return [...reactBestPracticesTypeCheckedConfig]\n return isTypeChecked ? [...reactBestPracticesTypeCheckedConfig] : [...reactBestPracticesConfig]\n}\n\nexport function recommendedConfig(options?: RecommendedConfigOptions): Linter.Config[] {\n const resolved = resolveRecommendedConfigOptions(options)\n return mergeTierConfigs(\n flatRecommendedConfig(resolved),\n reactLayersForTier(resolved.tier, resolved.isTypeChecked),\n )\n}\n\nexport function parseRecommendedConfigSource(\n source: string,\n): { configKind: 'custom' | 'preset'; options: Required<RecommendedConfigOptions> } | undefined {\n return parseFlatRecommendedConfigSource(source)\n}\n\nexport function applyRecommendedConfigTypeChecked(source: string, isEnabled: boolean): string {\n return applyFlatRecommendedConfigTypeChecked(source, isEnabled)\n}\n", "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 currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n", "import type { Linter } from 'eslint'\n\nexport {\n applyRecommendedConfigTypeChecked,\n DEFAULT_RECOMMENDED_CONFIG_OPTIONS,\n formatRecommendedConfigCall,\n type LintTier,\n parseRecommendedConfigSource,\n recommendedConfig,\n type RecommendedConfigOptions,\n resolveRecommendedConfigOptions,\n} from './recommendedConfig.ts'\n\nimport { storybookConfig } from '../storybook/index.ts'\nimport { recommendedConfig } from './recommendedConfig.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\n/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: false })` instead. */\nexport const configReactTier0Correctness: Linter.Config[] = recommendedConfig({ tier: 0, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: true })` instead. */\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = recommendedConfig({ tier: 0, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: false })` instead. */\nexport const configReactTier1Consistency: Linter.Config[] = recommendedConfig({ tier: 1, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: true })` instead. */\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = recommendedConfig({ tier: 1, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead. */\nexport const configReactTier2BestPractices: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: false })` instead. */\nexport const configReactTier3Opinionated: Linter.Config[] = recommendedConfig({ tier: 3, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` instead. */\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = recommendedConfig({ tier: 3, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: false })` instead. */\nexport const configReactTier4Experimental: Linter.Config[] = recommendedConfig({ tier: 4, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: true })` instead. */\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = recommendedConfig({ tier: 4, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: true })\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n recommendedConfig({ tier: 2, isTypeChecked: true }),\n configReactStorybook,\n)\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` plus `configReactStorybook` if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["config", "resolveRecommendedConfigOptions", "mergeTierConfigs"]
|
|
7
7
|
}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
+
export { applyRecommendedConfigTypeChecked, DEFAULT_RECOMMENDED_CONFIG_OPTIONS, formatRecommendedConfigCall, type LintTier, parseRecommendedConfigSource, recommendedConfig, type RecommendedConfigOptions, resolveRecommendedConfigOptions, } from './recommendedConfig.ts';
|
|
2
3
|
export declare const configReactStorybook: Linter.Config[];
|
|
4
|
+
/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: false })` instead. */
|
|
3
5
|
export declare const configReactTier0Correctness: Linter.Config[];
|
|
6
|
+
/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: true })` instead. */
|
|
4
7
|
export declare const configReactTier0CorrectnessTypeChecked: Linter.Config[];
|
|
8
|
+
/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: false })` instead. */
|
|
5
9
|
export declare const configReactTier1Consistency: Linter.Config[];
|
|
10
|
+
/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: true })` instead. */
|
|
6
11
|
export declare const configReactTier1ConsistencyTypeChecked: Linter.Config[];
|
|
12
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead. */
|
|
7
13
|
export declare const configReactTier2BestPractices: Linter.Config[];
|
|
14
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
|
|
8
15
|
export declare const configReactTier2BestPracticesTypeChecked: Linter.Config[];
|
|
16
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: false })` instead. */
|
|
9
17
|
export declare const configReactTier3Opinionated: Linter.Config[];
|
|
18
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` instead. */
|
|
10
19
|
export declare const configReactTier3OpinionatedTypeChecked: Linter.Config[];
|
|
20
|
+
/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: false })` instead. */
|
|
11
21
|
export declare const configReactTier4Experimental: Linter.Config[];
|
|
22
|
+
/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: true })` instead. */
|
|
12
23
|
export declare const configReactTier4ExperimentalTypeChecked: Linter.Config[];
|
|
13
|
-
/** @deprecated Use `
|
|
14
|
-
export declare const recommendedConfig: Linter.Config[];
|
|
15
|
-
/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */
|
|
24
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
|
|
16
25
|
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
17
26
|
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
18
|
-
/** @deprecated Use `
|
|
27
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` plus `configReactStorybook` if needed. */
|
|
19
28
|
export declare const config: Linter.Config[];
|
|
20
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,QAAQ,EACb,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAS/B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAElH,qFAAqF;AACrF,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE5H,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEjH,qFAAqF;AACrF,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE3H,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAEhH,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,mHAAmH;AACnH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RecommendedConfigOptions } from '@xylabs/eslint-config-flat';
|
|
2
|
+
import type { Linter } from 'eslint';
|
|
3
|
+
export type { LintTier, RecommendedConfigOptions } from '@xylabs/eslint-config-flat';
|
|
4
|
+
export { DEFAULT_RECOMMENDED_CONFIG_OPTIONS, formatRecommendedConfigCall, resolveRecommendedConfigOptions, } from '@xylabs/eslint-config-flat';
|
|
5
|
+
export declare function recommendedConfig(options?: RecommendedConfigOptions): Linter.Config[];
|
|
6
|
+
export declare function parseRecommendedConfigSource(source: string): {
|
|
7
|
+
configKind: 'custom' | 'preset';
|
|
8
|
+
options: Required<RecommendedConfigOptions>;
|
|
9
|
+
} | undefined;
|
|
10
|
+
export declare function applyRecommendedConfigTypeChecked(source: string, isEnabled: boolean): string;
|
|
11
|
+
//# sourceMappingURL=recommendedConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendedConfig.d.ts","sourceRoot":"","sources":["../../../src/tiers/recommendedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAOpC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EACL,kCAAkC,EAClC,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,4BAA4B,CAAA;AAYnC,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,CAMrF;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAA;CAAE,GAAG,SAAS,CAE9F;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAE5F"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -2,18 +2,12 @@
|
|
|
2
2
|
import storybook from "eslint-plugin-storybook";
|
|
3
3
|
var storybookConfig = storybook.configs["flat/recommended"];
|
|
4
4
|
|
|
5
|
-
// src/tiers/
|
|
5
|
+
// src/tiers/recommendedConfig.ts
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
configTier2BestPractices,
|
|
12
|
-
configTier2BestPracticesTypeChecked,
|
|
13
|
-
configTier3Opinionated,
|
|
14
|
-
configTier3OpinionatedTypeChecked,
|
|
15
|
-
configTier4Experimental,
|
|
16
|
-
configTier4ExperimentalTypeChecked
|
|
7
|
+
applyRecommendedConfigTypeChecked as applyFlatRecommendedConfigTypeChecked,
|
|
8
|
+
parseRecommendedConfigSource as parseFlatRecommendedConfigSource,
|
|
9
|
+
recommendedConfig as flatRecommendedConfig,
|
|
10
|
+
resolveRecommendedConfigOptions
|
|
17
11
|
} from "@xylabs/eslint-config-flat";
|
|
18
12
|
|
|
19
13
|
// src/react/index.ts
|
|
@@ -96,47 +90,58 @@ var reactBestPracticesTypeCheckedConfig = [
|
|
|
96
90
|
createReactOverride(true)
|
|
97
91
|
];
|
|
98
92
|
|
|
99
|
-
// src/tiers/
|
|
93
|
+
// src/tiers/recommendedConfig.ts
|
|
94
|
+
import {
|
|
95
|
+
DEFAULT_RECOMMENDED_CONFIG_OPTIONS,
|
|
96
|
+
formatRecommendedConfigCall,
|
|
97
|
+
resolveRecommendedConfigOptions as resolveRecommendedConfigOptions2
|
|
98
|
+
} from "@xylabs/eslint-config-flat";
|
|
100
99
|
function mergeTierConfigs(...parts) {
|
|
101
100
|
return parts.flat();
|
|
102
101
|
}
|
|
102
|
+
function reactLayersForTier(tier, isTypeChecked) {
|
|
103
|
+
if (tier <= 1) return [];
|
|
104
|
+
if (tier >= 3) return [...reactBestPracticesTypeCheckedConfig];
|
|
105
|
+
return isTypeChecked ? [...reactBestPracticesTypeCheckedConfig] : [...reactBestPracticesConfig];
|
|
106
|
+
}
|
|
107
|
+
function recommendedConfig(options) {
|
|
108
|
+
const resolved = resolveRecommendedConfigOptions(options);
|
|
109
|
+
return mergeTierConfigs(
|
|
110
|
+
flatRecommendedConfig(resolved),
|
|
111
|
+
reactLayersForTier(resolved.tier, resolved.isTypeChecked)
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function parseRecommendedConfigSource(source) {
|
|
115
|
+
return parseFlatRecommendedConfigSource(source);
|
|
116
|
+
}
|
|
117
|
+
function applyRecommendedConfigTypeChecked(source, isEnabled) {
|
|
118
|
+
return applyFlatRecommendedConfigTypeChecked(source, isEnabled);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/tiers/index.ts
|
|
122
|
+
function mergeTierConfigs2(...parts) {
|
|
123
|
+
return parts.flat();
|
|
124
|
+
}
|
|
103
125
|
var configReactStorybook = [...storybookConfig];
|
|
104
|
-
var configReactTier0Correctness =
|
|
105
|
-
var configReactTier0CorrectnessTypeChecked =
|
|
106
|
-
var configReactTier1Consistency =
|
|
107
|
-
var configReactTier1ConsistencyTypeChecked =
|
|
108
|
-
var configReactTier2BestPractices =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
);
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
configTier3Opinionated,
|
|
118
|
-
reactBestPracticesTypeCheckedConfig
|
|
119
|
-
);
|
|
120
|
-
var configReactTier3OpinionatedTypeChecked = mergeTierConfigs(
|
|
121
|
-
configTier3OpinionatedTypeChecked,
|
|
122
|
-
reactBestPracticesTypeCheckedConfig
|
|
123
|
-
);
|
|
124
|
-
var configReactTier4Experimental = mergeTierConfigs(
|
|
125
|
-
configTier4Experimental,
|
|
126
|
-
reactBestPracticesTypeCheckedConfig
|
|
127
|
-
);
|
|
128
|
-
var configReactTier4ExperimentalTypeChecked = mergeTierConfigs(
|
|
129
|
-
configTier4ExperimentalTypeChecked,
|
|
130
|
-
reactBestPracticesTypeCheckedConfig
|
|
131
|
-
);
|
|
132
|
-
var recommendedConfig = configReactTier2BestPractices;
|
|
133
|
-
var recommendedTypeCheckedConfig = configReactTier2BestPracticesTypeChecked;
|
|
134
|
-
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs(
|
|
135
|
-
configReactTier2BestPracticesTypeChecked,
|
|
126
|
+
var configReactTier0Correctness = recommendedConfig({ tier: 0, isTypeChecked: false });
|
|
127
|
+
var configReactTier0CorrectnessTypeChecked = recommendedConfig({ tier: 0, isTypeChecked: true });
|
|
128
|
+
var configReactTier1Consistency = recommendedConfig({ tier: 1, isTypeChecked: false });
|
|
129
|
+
var configReactTier1ConsistencyTypeChecked = recommendedConfig({ tier: 1, isTypeChecked: true });
|
|
130
|
+
var configReactTier2BestPractices = recommendedConfig({ tier: 2, isTypeChecked: false });
|
|
131
|
+
var configReactTier2BestPracticesTypeChecked = recommendedConfig({ tier: 2, isTypeChecked: true });
|
|
132
|
+
var configReactTier3Opinionated = recommendedConfig({ tier: 3, isTypeChecked: false });
|
|
133
|
+
var configReactTier3OpinionatedTypeChecked = recommendedConfig({ tier: 3, isTypeChecked: true });
|
|
134
|
+
var configReactTier4Experimental = recommendedConfig({ tier: 4, isTypeChecked: false });
|
|
135
|
+
var configReactTier4ExperimentalTypeChecked = recommendedConfig({ tier: 4, isTypeChecked: true });
|
|
136
|
+
var recommendedTypeCheckedConfig = recommendedConfig({ tier: 2, isTypeChecked: true });
|
|
137
|
+
var recommendedTypeCheckedWithStorybookConfig = mergeTierConfigs2(
|
|
138
|
+
recommendedConfig({ tier: 2, isTypeChecked: true }),
|
|
136
139
|
configReactStorybook
|
|
137
140
|
);
|
|
138
141
|
var config = recommendedTypeCheckedWithStorybookConfig;
|
|
139
142
|
export {
|
|
143
|
+
DEFAULT_RECOMMENDED_CONFIG_OPTIONS,
|
|
144
|
+
applyRecommendedConfigTypeChecked,
|
|
140
145
|
config,
|
|
141
146
|
configReactStorybook,
|
|
142
147
|
configReactTier0Correctness,
|
|
@@ -149,9 +154,12 @@ export {
|
|
|
149
154
|
configReactTier3OpinionatedTypeChecked,
|
|
150
155
|
configReactTier4Experimental,
|
|
151
156
|
configReactTier4ExperimentalTypeChecked,
|
|
157
|
+
formatRecommendedConfigCall,
|
|
158
|
+
parseRecommendedConfigSource,
|
|
152
159
|
recommendedConfig,
|
|
153
160
|
recommendedTypeCheckedConfig,
|
|
154
161
|
recommendedTypeCheckedWithStorybookConfig,
|
|
162
|
+
resolveRecommendedConfigOptions2 as resolveRecommendedConfigOptions,
|
|
155
163
|
storybookConfig
|
|
156
164
|
};
|
|
157
165
|
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/storybook/index.ts", "../../src/tiers/
|
|
4
|
-
"sourcesContent": ["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
|
|
5
|
-
"mappings": ";AACA,OAAO,eAAe;AAEf,IAAM,kBAAmC,UAAU,QAAQ,kBAAkB;;;ACHpF;AAAA,EACE
|
|
6
|
-
"names": ["config"]
|
|
3
|
+
"sources": ["../../src/storybook/index.ts", "../../src/tiers/recommendedConfig.ts", "../../src/react/index.ts", "../../src/tiers/index.ts"],
|
|
4
|
+
"sourcesContent": ["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 applyRecommendedConfigTypeChecked as applyFlatRecommendedConfigTypeChecked,\n type LintTier,\n parseRecommendedConfigSource as parseFlatRecommendedConfigSource,\n recommendedConfig as flatRecommendedConfig,\n type RecommendedConfigOptions,\n resolveRecommendedConfigOptions,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\n\nexport type { LintTier, RecommendedConfigOptions } from '@xylabs/eslint-config-flat'\nexport {\n DEFAULT_RECOMMENDED_CONFIG_OPTIONS,\n formatRecommendedConfigCall,\n resolveRecommendedConfigOptions,\n} from '@xylabs/eslint-config-flat'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nfunction reactLayersForTier(tier: LintTier, isTypeChecked: boolean): Linter.Config[] {\n if (tier <= 1) return []\n if (tier >= 3) return [...reactBestPracticesTypeCheckedConfig]\n return isTypeChecked ? [...reactBestPracticesTypeCheckedConfig] : [...reactBestPracticesConfig]\n}\n\nexport function recommendedConfig(options?: RecommendedConfigOptions): Linter.Config[] {\n const resolved = resolveRecommendedConfigOptions(options)\n return mergeTierConfigs(\n flatRecommendedConfig(resolved),\n reactLayersForTier(resolved.tier, resolved.isTypeChecked),\n )\n}\n\nexport function parseRecommendedConfigSource(\n source: string,\n): { configKind: 'custom' | 'preset'; options: Required<RecommendedConfigOptions> } | undefined {\n return parseFlatRecommendedConfigSource(source)\n}\n\nexport function applyRecommendedConfigTypeChecked(source: string, isEnabled: boolean): string {\n return applyFlatRecommendedConfigTypeChecked(source, isEnabled)\n}\n", "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 currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n", "import type { Linter } from 'eslint'\n\nexport {\n applyRecommendedConfigTypeChecked,\n DEFAULT_RECOMMENDED_CONFIG_OPTIONS,\n formatRecommendedConfigCall,\n type LintTier,\n parseRecommendedConfigSource,\n recommendedConfig,\n type RecommendedConfigOptions,\n resolveRecommendedConfigOptions,\n} from './recommendedConfig.ts'\n\nimport { storybookConfig } from '../storybook/index.ts'\nimport { recommendedConfig } from './recommendedConfig.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\n/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: false })` instead. */\nexport const configReactTier0Correctness: Linter.Config[] = recommendedConfig({ tier: 0, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: true })` instead. */\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = recommendedConfig({ tier: 0, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: false })` instead. */\nexport const configReactTier1Consistency: Linter.Config[] = recommendedConfig({ tier: 1, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: true })` instead. */\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = recommendedConfig({ tier: 1, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead. */\nexport const configReactTier2BestPractices: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: false })` instead. */\nexport const configReactTier3Opinionated: Linter.Config[] = recommendedConfig({ tier: 3, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` instead. */\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = recommendedConfig({ tier: 3, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: false })` instead. */\nexport const configReactTier4Experimental: Linter.Config[] = recommendedConfig({ tier: 4, isTypeChecked: false })\n\n/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: true })` instead. */\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = recommendedConfig({ tier: 4, isTypeChecked: true })\n\n/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = recommendedConfig({ tier: 2, isTypeChecked: true })\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n recommendedConfig({ tier: 2, isTypeChecked: true }),\n configReactStorybook,\n)\n\n/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` plus `configReactStorybook` if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["config", "resolveRecommendedConfigOptions", "mergeTierConfigs"]
|
|
7
7
|
}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
+
export { applyRecommendedConfigTypeChecked, DEFAULT_RECOMMENDED_CONFIG_OPTIONS, formatRecommendedConfigCall, type LintTier, parseRecommendedConfigSource, recommendedConfig, type RecommendedConfigOptions, resolveRecommendedConfigOptions, } from './recommendedConfig.ts';
|
|
2
3
|
export declare const configReactStorybook: Linter.Config[];
|
|
4
|
+
/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: false })` instead. */
|
|
3
5
|
export declare const configReactTier0Correctness: Linter.Config[];
|
|
6
|
+
/** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: true })` instead. */
|
|
4
7
|
export declare const configReactTier0CorrectnessTypeChecked: Linter.Config[];
|
|
8
|
+
/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: false })` instead. */
|
|
5
9
|
export declare const configReactTier1Consistency: Linter.Config[];
|
|
10
|
+
/** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: true })` instead. */
|
|
6
11
|
export declare const configReactTier1ConsistencyTypeChecked: Linter.Config[];
|
|
12
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead. */
|
|
7
13
|
export declare const configReactTier2BestPractices: Linter.Config[];
|
|
14
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
|
|
8
15
|
export declare const configReactTier2BestPracticesTypeChecked: Linter.Config[];
|
|
16
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: false })` instead. */
|
|
9
17
|
export declare const configReactTier3Opinionated: Linter.Config[];
|
|
18
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` instead. */
|
|
10
19
|
export declare const configReactTier3OpinionatedTypeChecked: Linter.Config[];
|
|
20
|
+
/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: false })` instead. */
|
|
11
21
|
export declare const configReactTier4Experimental: Linter.Config[];
|
|
22
|
+
/** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: true })` instead. */
|
|
12
23
|
export declare const configReactTier4ExperimentalTypeChecked: Linter.Config[];
|
|
13
|
-
/** @deprecated Use `
|
|
14
|
-
export declare const recommendedConfig: Linter.Config[];
|
|
15
|
-
/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */
|
|
24
|
+
/** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
|
|
16
25
|
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
17
26
|
export declare const recommendedTypeCheckedWithStorybookConfig: Linter.Config[];
|
|
18
|
-
/** @deprecated Use `
|
|
27
|
+
/** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` plus `configReactStorybook` if needed. */
|
|
19
28
|
export declare const config: Linter.Config[];
|
|
20
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,QAAQ,EACb,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAS/B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAElH,qFAAqF;AACrF,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE5H,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE1H,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAEjH,qFAAqF;AACrF,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAE3H,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAEhH,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,mHAAmH;AACnH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RecommendedConfigOptions } from '@xylabs/eslint-config-flat';
|
|
2
|
+
import type { Linter } from 'eslint';
|
|
3
|
+
export type { LintTier, RecommendedConfigOptions } from '@xylabs/eslint-config-flat';
|
|
4
|
+
export { DEFAULT_RECOMMENDED_CONFIG_OPTIONS, formatRecommendedConfigCall, resolveRecommendedConfigOptions, } from '@xylabs/eslint-config-flat';
|
|
5
|
+
export declare function recommendedConfig(options?: RecommendedConfigOptions): Linter.Config[];
|
|
6
|
+
export declare function parseRecommendedConfigSource(source: string): {
|
|
7
|
+
configKind: 'custom' | 'preset';
|
|
8
|
+
options: Required<RecommendedConfigOptions>;
|
|
9
|
+
} | undefined;
|
|
10
|
+
export declare function applyRecommendedConfigTypeChecked(source: string, isEnabled: boolean): string;
|
|
11
|
+
//# sourceMappingURL=recommendedConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendedConfig.d.ts","sourceRoot":"","sources":["../../../src/tiers/recommendedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAOpC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EACL,kCAAkC,EAClC,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,4BAA4B,CAAA;AAYnC,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,CAMrF;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAA;CAAE,GAAG,SAAS,CAE9F;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAE5F"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/eslint-config-react-flat",
|
|
3
|
-
"version": "8.2.
|
|
3
|
+
"version": "8.2.19",
|
|
4
4
|
"description": "ESLint Config used throughout XY Labs TypeScript/JavaScript libraries and react projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xylabs",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"eslint-plugin-react-x": "^5.9.0",
|
|
53
53
|
"eslint-plugin-storybook": "^10.4.6",
|
|
54
54
|
"globals": "~17.6.0",
|
|
55
|
-
"@xylabs/eslint-config-flat": "~8.2.
|
|
55
|
+
"@xylabs/eslint-config-flat": "~8.2.19"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@testing-library/dom": "^10.4.1",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"vite": "^8.0.16",
|
|
71
71
|
"vitest": "~4.1.9",
|
|
72
72
|
"zod": "^4.4.3",
|
|
73
|
-
"@xylabs/
|
|
74
|
-
"@xylabs/
|
|
73
|
+
"@xylabs/toolchain": "~8.2.19",
|
|
74
|
+
"@xylabs/tsconfig": "~8.2.19"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"browserslist": ">= 4.21.0",
|