Skip to content

Commit 20abe29

Browse files
authored
CHANGE @W-20773338@ Making react config user accessible (#406)
1 parent 02f4768 commit 20abe29

File tree

8 files changed

+15
-29
lines changed

8 files changed

+15
-29
lines changed

packages/code-analyzer-eslint-engine/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@salesforce/code-analyzer-eslint-engine",
33
"description": "Plugin package that adds 'eslint' as an engine into Salesforce Code Analyzer",
4-
"version": "0.39.0",
4+
"version": "0.40.0-SNAPSHOT",
55
"author": "The Salesforce Code Analyzer Team",
66
"license": "BSD-3-Clause",
77
"homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview",

packages/code-analyzer-eslint-engine/src/config.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export type ESLintEngineConfig = {
3737
disable_typescript_base_config: boolean
3838

3939
// If true then the base configuration that supplies the React/JSX rules will not be applied.
40-
// Default: true (React support is currently gated; will change to false when released)
40+
// Default: false
4141
disable_react_base_config: boolean
4242

4343
// Extensions of the files in your workspace that will be used to discover rules.
@@ -70,7 +70,7 @@ export const DEFAULT_CONFIG: ESLintEngineConfig = {
7070
disable_lwc_base_config: false,
7171
disable_slds_base_config: false,
7272
disable_typescript_base_config: false,
73-
disable_react_base_config: true, // Gated for now - will change to false when released
73+
disable_react_base_config: false,
7474
file_extensions: {
7575
javascript: ['.js', '.cjs', '.mjs', '.jsx'],
7676
typescript: ['.ts', '.tsx'],
@@ -119,8 +119,11 @@ export const ESLINT_ENGINE_CONFIG_DESCRIPTION: ConfigDescription = {
119119
valueType: "boolean",
120120
defaultValue: DEFAULT_CONFIG.disable_typescript_base_config
121121
},
122-
// Note: disable_react_base_config is gated and not user-configurable yet
123-
// TODO: Add to fieldDescriptions when React support is released
122+
disable_react_base_config: {
123+
descriptionText: getMessage('ConfigFieldDescription_disable_react_base_config'),
124+
valueType: "boolean",
125+
defaultValue: DEFAULT_CONFIG.disable_react_base_config
126+
},
124127
file_extensions: {
125128
descriptionText: getMessage('ConfigFieldDescription_file_extensions'),
126129
valueType: "object",
@@ -143,12 +146,9 @@ export const LEGACY_ESLINT_IGNORE_FILE: string = '.eslintignore';
143146

144147

145148
export function validateAndNormalizeConfig(configValueExtractor: ConfigValueExtractor): ESLintEngineConfig {
146-
// disable_react_base_config bypasses validation - React support is gated but we need it for internal testing
147-
// TODO: Move 'disable_react_base_config' to validateContainsOnlySpecifiedKeys when React support is released
148-
configValueExtractor.addKeysThatBypassValidation(['disable_react_base_config']);
149149
configValueExtractor.validateContainsOnlySpecifiedKeys(['eslint_config_file', 'eslint_ignore_file',
150150
'auto_discover_eslint_config', 'disable_javascript_base_config', 'disable_lwc_base_config',
151-
'disable_slds_base_config', 'disable_typescript_base_config', 'file_extensions']);
151+
'disable_slds_base_config', 'disable_typescript_base_config', 'disable_react_base_config', 'file_extensions']);
152152

153153
const eslintConfigValueExtractor: ESLintEngineConfigValueExtractor = new ESLintEngineConfigValueExtractor(configValueExtractor);
154154
return {
@@ -160,9 +160,7 @@ export function validateAndNormalizeConfig(configValueExtractor: ConfigValueExtr
160160
disable_lwc_base_config: eslintConfigValueExtractor.extractBooleanValue('disable_lwc_base_config'),
161161
disable_slds_base_config: eslintConfigValueExtractor.extractBooleanValue('disable_slds_base_config'),
162162
disable_typescript_base_config: eslintConfigValueExtractor.extractBooleanValue('disable_typescript_base_config'),
163-
// React support is gated - always force to true regardless of customer config
164-
// TODO: Change to eslintConfigValueExtractor.extractBooleanValue('disable_react_base_config') when released
165-
disable_react_base_config: true,
163+
disable_react_base_config: eslintConfigValueExtractor.extractBooleanValue('disable_react_base_config'),
166164
file_extensions: eslintConfigValueExtractor.extractFileExtensionsValue(),
167165
};
168166
}

packages/code-analyzer-eslint-engine/test/engine.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ jest.setTimeout(60_000);
2626

2727
const DEFAULT_CONFIG_FOR_TESTING: ESLintEngineConfig = {
2828
...DEFAULT_CONFIG,
29-
config_root: __dirname,
30-
// React is gated in production (default: true). For testing, enable it (eventual default: false)
31-
disable_react_base_config: false
29+
config_root: __dirname
3230
}
3331

3432
const testDataFolder: string = path.join(__dirname, 'test-data');

packages/code-analyzer-eslint-engine/test/generate-react-a11y-goldfile.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ const RUN_GENERATOR = process.env.GENERATE_REACT_A11Y === 'true';
1515
it('writes test/test-data/rules_ReactA11yConfig.goldfile.json', async () => {
1616
const config: ESLintEngineConfig = {
1717
...DEFAULT_CONFIG,
18-
config_root: __dirname,
19-
// Ensure React stack is enabled during generation
20-
disable_react_base_config: false
18+
config_root: __dirname
2119
};
2220
const enginePlugin = new ESLintEnginePlugin();
2321
const engine: Engine = await enginePlugin.createEngine('eslint', config);

packages/code-analyzer-eslint-engine/test/misc.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import {ESLintWorkspace} from "../src/workspace";
88

99
const DEFAULT_CONFIG_FOR_TESTING: ESLintEngineConfig = {
1010
...DEFAULT_CONFIG,
11-
config_root: __dirname,
12-
// React is gated in production (default: true). For testing, enable it (eventual default: false)
13-
disable_react_base_config: false
11+
config_root: __dirname
1412
}
1513
const testDataFolder: string = path.join(__dirname, 'test-data');
1614

packages/code-analyzer-eslint-engine/test/plugin.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,9 @@ describe('Tests for the ESLintEnginePlugin', () => {
4747
it('When createEngineConfig is called with an object containing an invalid key, then we error', async () => {
4848
const userProvidedOverrides: ConfigObject = {dummy: 3};
4949
await expect(callCreateEngineConfig(plugin, userProvidedOverrides)).rejects.toThrow(
50-
// Note: disable_react_base_config is intentionally excluded - React support is gated
5150
getMessageFromCatalog(SHARED_MESSAGE_CATALOG, 'ConfigObjectContainsInvalidKey', 'engines.eslint', 'dummy',
5251
'["auto_discover_eslint_config","disable_javascript_base_config","disable_lwc_base_config",' +
53-
'"disable_slds_base_config","disable_typescript_base_config",' +
52+
'"disable_react_base_config","disable_slds_base_config","disable_typescript_base_config",' +
5453
'"eslint_config_file","eslint_ignore_file","file_extensions"]'));
5554
});
5655

packages/code-analyzer-eslint-engine/test/react-a11y.test.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ describe('jsx-a11y plugin integration', () => {
88
it('exposes core jsx-a11y rules with React tagging', async () => {
99
const config: ESLintEngineConfig = {
1010
...DEFAULT_CONFIG,
11-
// Enable React base config for tests
12-
disable_react_base_config: false,
1311
config_root: __dirname
1412
};
1513
const enginePlugin: ESLintEnginePlugin = new ESLintEnginePlugin();
@@ -34,7 +32,6 @@ describe('jsx-a11y plugin integration', () => {
3432
it('includes all A11y-tagged rules from rule-mappings', async () => {
3533
const config: ESLintEngineConfig = {
3634
...DEFAULT_CONFIG,
37-
disable_react_base_config: false,
3835
config_root: __dirname
3936
};
4037
const engine: Engine = await new ESLintEnginePlugin().createEngine('eslint', config);

packages/code-analyzer-eslint-engine/test/rule-mappings.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ import { createDescribeOptions } from "./test-helpers";
77
describe('Tests for the rule-mappings', () => {
88
it('Test that the list of all bundled rules matches our RULE_MAPPINGS list', async () => {
99
const enginePlugin: ESLintEnginePlugin = new ESLintEnginePlugin();
10-
// React is gated in production (default: true). For testing, enable it (eventual default: false)
1110
const engine: Engine = await enginePlugin.createEngine('eslint', {
12-
...DEFAULT_CONFIG,
13-
disable_react_base_config: false
11+
...DEFAULT_CONFIG
1412
});
1513
const ruleDescriptions: RuleDescription[] = await engine.describeRules(createDescribeOptions());
1614
const actualRuleNames: Set<string> = new Set(ruleDescriptions.map(rd => rd.name));

0 commit comments

Comments
 (0)