Skip to content

Commit 3f72e2c

Browse files
committed
refactor: don't spread arrays
1 parent 9ff0f5f commit 3f72e2c

File tree

7 files changed

+16
-27
lines changed

7 files changed

+16
-27
lines changed

__mocks__/genInteractives.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ import type { JSXElementMockType } from './JSXElementMock';
1212

1313
const { fromEntries } = Object;
1414

15-
const domElements = dom.keys();
16-
const roleNames = roles.keys();
17-
1815
const interactiveElementsMap = {
1916
a: [{ prop: 'href', value: '#' }],
2017
area: [{ prop: 'href', value: '#' }],
@@ -122,19 +119,19 @@ const nonInteractiveElementsMap: {[string]: Array<{[string]: string}>} = {
122119
ul: [],
123120
};
124121

125-
const indeterminantInteractiveElementsMap: { [key: string]: Array<any> } = fromEntries(domElements.map((name) => [name, []]));
122+
const indeterminantInteractiveElementsMap: { [key: string]: Array<any> } = fromEntries(dom.keys().map((name) => [name, []]));
126123

127124
Object.keys(interactiveElementsMap)
128125
.concat(Object.keys(nonInteractiveElementsMap))
129126
.forEach((name) => delete indeterminantInteractiveElementsMap[name]);
130127

131-
const abstractRoles = roleNames.filter((role) => roles.get(role).abstract);
128+
const abstractRoles = roles.keys().filter((role) => roles.get(role).abstract);
132129

133-
const nonAbstractRoles = roleNames.filter((role) => !roles.get(role).abstract);
130+
const nonAbstractRoles = roles.keys().filter((role) => !roles.get(role).abstract);
134131

135132
const interactiveRoles = []
136133
.concat(
137-
roleNames,
134+
roles.keys(),
138135
// 'toolbar' does not descend from widget, but it does support
139136
// aria-activedescendant, thus in practice we treat it as a widget.
140137
'toolbar',
@@ -144,7 +141,7 @@ const interactiveRoles = []
144141
&& roles.get(role).superClass.some((klasses) => klasses.includes('widget'))
145142
));
146143

147-
const nonInteractiveRoles = roleNames
144+
const nonInteractiveRoles = roles.keys()
148145
.filter((role) => (
149146
!roles.get(role).abstract
150147
&& !roles.get(role).superClass.some((klasses) => klasses.includes('widget'))

__tests__/src/rules/aria-props-test.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ import getSuggestion from '../../../src/util/getSuggestion';
1919
// -----------------------------------------------------------------------------
2020

2121
const ruleTester = new RuleTester();
22-
const ariaAttributes = aria.keys();
2322

2423
const errorMessage = (name) => {
25-
const suggestions = getSuggestion(name, ariaAttributes);
24+
const suggestions = getSuggestion(name, aria.keys());
2625

2726
if (suggestions.length > 0) {
2827
return {
@@ -43,7 +42,7 @@ const errorMessage = (name) => {
4342
};
4443

4544
// Create basic test cases using all valid role types.
46-
const basicValidityTests = ariaAttributes.map((prop) => ({
45+
const basicValidityTests = aria.keys().map((prop) => ({
4746
code: `<div ${prop.toLowerCase()}="foobar" />`,
4847
}));
4948

__tests__/src/rules/aria-role-test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@ const errorMessage = {
2424
type: 'JSXAttribute',
2525
};
2626

27-
const roleKeys = roles.keys();
28-
29-
const validRoles = roleKeys.filter((role) => roles.get(role).abstract === false);
30-
const invalidRoles = roleKeys.filter((role) => roles.get(role).abstract === true);
27+
const validRoles = roles.keys().filter((role) => roles.get(role).abstract === false);
28+
const invalidRoles = roles.keys().filter((role) => roles.get(role).abstract === true);
3129

3230
const createTests = (roleNames) => roleNames.map((role) => ({
3331
code: `<div role="${role.toLowerCase()}" />`,

__tests__/src/rules/aria-unsupported-elements-test.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ const errorMessage = (invalidProp) => ({
2626
type: 'JSXOpeningElement',
2727
});
2828

29-
const domElements = dom.keys();
3029
// Generate valid test cases
31-
const roleValidityTests = domElements.map((element) => {
30+
const roleValidityTests = dom.keys().map((element) => {
3231
const isReserved = dom.get(element).reserved || false;
3332
const role = isReserved ? '' : 'role';
3433

@@ -37,7 +36,7 @@ const roleValidityTests = domElements.map((element) => {
3736
};
3837
});
3938

40-
const ariaValidityTests = domElements.map((element) => {
39+
const ariaValidityTests = dom.keys().map((element) => {
4140
const isReserved = dom.get(element).reserved || false;
4241
const aria = isReserved ? '' : 'aria-hidden';
4342

@@ -50,7 +49,7 @@ const ariaValidityTests = domElements.map((element) => {
5049
});
5150

5251
// Generate invalid test cases.
53-
const invalidRoleValidityTests = domElements
52+
const invalidRoleValidityTests = dom.keys()
5453
.filter((element) => dom.get(element).reserved)
5554
.map((reservedElem) => ({
5655
code: `<${reservedElem} role {...props} />`,
@@ -61,7 +60,7 @@ const invalidRoleValidityTests = domElements
6160
settings: { 'jsx-a11y': { components: { Meta: 'meta' } } },
6261
});
6362

64-
const invalidAriaValidityTests = domElements
63+
const invalidAriaValidityTests = dom.keys()
6564
.filter((element) => dom.get(element).reserved)
6665
.map((reservedElem) => ({
6766
code: `<${reservedElem} aria-hidden aria-role="none" {...props} />`,

src/rules/aria-props.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import { propName } from 'jsx-ast-utils';
1212
import { generateObjSchema } from '../util/schemas';
1313
import getSuggestion from '../util/getSuggestion';
1414

15-
const ariaAttributes = aria.keys();
16-
1715
const schema = generateObjSchema();
1816

1917
export default {
@@ -41,7 +39,7 @@ export default {
4139
const isValid = aria.has(name);
4240

4341
if (isValid === false) {
44-
const suggestions = getSuggestion(name, ariaAttributes);
42+
const suggestions = getSuggestion(name, aria.keys());
4543

4644
context.report({
4745
data: {

src/rules/aria-unsupported-elements.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export default {
4545
return;
4646
}
4747

48-
const invalidAttributes = new Set([...aria.keys(), 'role']);
48+
const invalidAttributes = new Set(aria.keys().concat('role'));
4949

5050
node.attributes.forEach((prop) => {
5151
if (prop.type === 'JSXSpreadAttribute') {

src/rules/role-has-required-aria-props.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import isSemanticRoleElement from '../util/isSemanticRoleElement';
2020

2121
const schema = generateObjSchema();
2222

23-
const roleKeys = roles.keys();
24-
2523
export default {
2624
meta: {
2725
docs: {
@@ -61,7 +59,7 @@ export default {
6159

6260
const normalizedValues = String(roleAttrValue).toLowerCase().split(' ');
6361
const validRoles = normalizedValues
64-
.filter((val) => roleKeys.indexOf(val) > -1);
62+
.filter((val) => roles.keys().indexOf(val) > -1);
6563

6664
// Check semantic DOM elements
6765
// For example, <input type="checkbox" role="switch" />

0 commit comments

Comments
 (0)