Skip to content

Commit 2106d5e

Browse files
committed
[Fix] node < 4 lacks .find and Object.assign
Use `.filter(…)[0]` and assignment instead of adding a dep
1 parent 4f50008 commit 2106d5e

11 files changed

+42
-48
lines changed

__tests__/src/ariaPropsMaps-test.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ test('ariaPropsMap API', async (t) => {
6666

6767
st.test('supports the spread operator', async (s2t) => {
6868
[...ariaPropsMap].forEach(([obj, roles]) => {
69-
const found = entriesList.find(([o]) => deepEqual(o, obj));
69+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
7070

7171
s2t.ok(found, `spread has element: ${inspect(obj)}`);
7272
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -80,7 +80,7 @@ test('ariaPropsMap API', async (t) => {
8080
}
8181

8282
output.forEach(([obj, roles]) => {
83-
const found = entriesList.find(([o]) => deepEqual(o, obj));
83+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
8484

8585
s2t.ok(found, `for-of has element: ${inspect(obj)}`);
8686
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -100,7 +100,7 @@ test('ariaPropsMap API', async (t) => {
100100

101101
for (let i = 0; i < output.length; i++) {
102102
const [obj, roles] = output[i];
103-
const found = entriesList.find(([o]) => deepEqual(o, obj));
103+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
104104

105105
st.ok(found, `\`forEach\` has element: ${inspect(obj)}`);
106106
st.deepEqual(roles, found[1], `\`forEach\` has object elements`);
@@ -120,11 +120,11 @@ test('ariaPropsMap API', async (t) => {
120120
t.test('keys(), iteration', async (st) => {
121121
const entriesKeys = entriesList.map(entry => entry[0]);
122122
for (const obj of ariaPropsMap.keys()) {
123-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `for-of has key: ${inspect(obj)}`);
123+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `for-of has key: ${inspect(obj)}`);
124124
}
125125

126126
[...ariaPropsMap.keys()].forEach((obj) => {
127-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `spread has key: ${inspect(obj)}`);
127+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `spread has key: ${inspect(obj)}`);
128128
});
129129
});
130130

@@ -156,7 +156,7 @@ test('ariaPropsMap API', async (t) => {
156156
}
157157

158158
ariaPropsMap.forEach((value, key) => {
159-
st.ok(usedProps.find(p => p === key), `has prop: ${key}`);
159+
st.ok(usedProps.filter(p => p === key)[0], `has prop: ${key}`);
160160
});
161161
});
162162
});

__tests__/src/domMap-test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ test('domMap API', async (t) => {
143143

144144
st.test('supports the spread operator', async (s2t) => {
145145
[...domMap].forEach(([obj, roles]) => {
146-
const found = entriesList.find(([o]) => deepEqual(o, obj));
146+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
147147

148148
s2t.ok(found, `spread has element: ${inspect(obj)}`);
149149
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -157,7 +157,7 @@ test('domMap API', async (t) => {
157157
}
158158

159159
output.forEach(([obj, roles]) => {
160-
const found = entriesList.find(([o]) => deepEqual(o, obj));
160+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
161161

162162
s2t.ok(found, `for-of has element: ${inspect(obj)}`);
163163
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -177,7 +177,7 @@ test('domMap API', async (t) => {
177177

178178
for (let i = 0; i < output.length; i++) {
179179
const [obj, roles] = output[i];
180-
const found = entriesList.find(([o]) => deepEqual(o, obj));
180+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
181181

182182
st.ok(found, `\`forEach\` has element: ${inspect(obj)}`);
183183
st.deepEqual(roles, found[1], `\`forEach\` has object elements`);
@@ -197,11 +197,11 @@ test('domMap API', async (t) => {
197197
t.test('keys(), iteration', async (st) => {
198198
const entriesKeys = entriesList.map(entry => entry[0]);
199199
for (const obj of domMap.keys()) {
200-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `for-of has key: ${inspect(obj)}`);
200+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `for-of has key: ${inspect(obj)}`);
201201
}
202202

203203
[...domMap.keys()].forEach((obj) => {
204-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `spread has key: ${inspect(obj)}`);
204+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `spread has key: ${inspect(obj)}`);
205205
});
206206
});
207207

__tests__/src/elementRoleMap-test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ test('elementRoleMap API', async (t) => {
132132

133133
st.test('supports the spread operator', async (s2t) => {
134134
[...elementRoleMap].forEach(([obj, roles]) => {
135-
const found = entriesList.find(([o]) => deepEqual(o, obj));
135+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
136136

137137
s2t.ok(found, `spread has element: ${inspect(obj)}`);
138138
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -146,7 +146,7 @@ test('elementRoleMap API', async (t) => {
146146
}
147147

148148
output.forEach(([obj, roles]) => {
149-
const found = entriesList.find(([o]) => deepEqual(o, obj));
149+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
150150

151151
s2t.ok(found, `for-of has element: ${inspect(obj)}`);
152152
s2t.deepEqual(roles, found[1], `for-of has object elements`);
@@ -166,7 +166,7 @@ test('elementRoleMap API', async (t) => {
166166

167167
for (let i = 0; i < output.length; i++) {
168168
const [obj, roles] = output[i];
169-
const found = entriesList.find(([o]) => deepEqual(o, obj));
169+
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
170170

171171
st.ok(found, `\`forEach\` has element: ${inspect(obj)}`);
172172
st.deepEqual(roles, found[1], `\`forEach\` has object elements`);
@@ -230,11 +230,11 @@ test('elementRoleMap API', async (t) => {
230230
t.test('keys(), iteration', async (st) => {
231231
const entriesKeys = entriesList.map(entry => entry[0]);
232232
for (const obj of elementRoleMap.keys()) {
233-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `for-of has key: ${inspect(obj)}`);
233+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `for-of has key: ${inspect(obj)}`);
234234
}
235235

236236
[...elementRoleMap.keys()].forEach((obj) => {
237-
st.ok(entriesKeys.find((k) => deepEqual(k, obj)), `spread has key: ${inspect(obj)}`);
237+
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `spread has key: ${inspect(obj)}`);
238238
});
239239
});
240240

__tests__/src/roleElementMap-test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test('roleElementMap API', async (t) => {
7272

7373
st.test('supports the spread operator', async (s2t) => {
7474
[...roleElementMap].forEach(([role, elements]) => {
75-
const found = entriesList.find(([r]) => r === role);
75+
const found = entriesList.filter(([r]) => r === role)[0];
7676

7777
s2t.ok(found, `spread has role: ${role}`);
7878
s2t.ok(elements && typeof elements === 'object', `spread has object elements`)
@@ -86,7 +86,7 @@ test('roleElementMap API', async (t) => {
8686
}
8787

8888
output.forEach(([role, elements]) => {
89-
const found = entriesList.find(([r]) => r === role);
89+
const found = entriesList.filter(([r]) => r === role)[0];
9090

9191
s2t.ok(found, `for-of has role: ${role}`);
9292
s2t.ok(elements && typeof elements === 'object', `for-of has object elements`)
@@ -107,7 +107,7 @@ test('roleElementMap API', async (t) => {
107107
for (let i = 0; i < output.length; i++) {
108108
const [role, elements] = output[i];
109109
st.ok(
110-
entriesList.find(([r]) => r === role),
110+
entriesList.filter(([r]) => r === role)[0],
111111
`\`forEach\` has role: ${role}`
112112
);
113113
st.ok(elements && typeof elements === 'object', `\`forEach\` has object elements`)
@@ -138,11 +138,11 @@ test('roleElementMap API', async (t) => {
138138
t.test('keys(), iteration', async (st) => {
139139
const entriesKeys = entriesList.map(entry => entry[0]);
140140
for (const key of roleElementMap.keys()) {
141-
st.ok(entriesKeys.find((k) => k === key), `for-of has key: ${key}`);
141+
st.ok(entriesKeys.filter((k) => k === key)[0], `for-of has key: ${key}`);
142142
}
143143

144144
[...roleElementMap.keys()].forEach(([key]) => {
145-
st.ok(entriesKeys.find(([k]) => k === key), `spread has key: ${key}`);
145+
st.ok(entriesKeys.filter(([k]) => k === key)[0], `spread has key: ${key}`);
146146
});
147147
});
148148

__tests__/src/rolesMap-test.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ test('rolesMap API', async (t) => {
153153

154154
st.test('supports the spread operator', async (s2t) => {
155155
[...rolesMap].forEach(([role, elements]) => {
156-
const found = entriesList.find(([r]) => r === role);
156+
const found = entriesList.filter(([r]) => r === role)[0];
157157

158158
s2t.ok(found, `spread has role: ${role}`);
159159
s2t.ok(elements && typeof elements === 'object', `spread has object elements`)
@@ -167,7 +167,7 @@ test('rolesMap API', async (t) => {
167167
}
168168

169169
output.forEach(([role, elements]) => {
170-
const found = entriesList.find(([r]) => r === role);
170+
const found = entriesList.filter(([r]) => r === role)[0];
171171

172172
s2t.ok(found, `for-of has role: ${role}`);
173173
s2t.ok(elements && typeof elements === 'object', `for-of has object elements`)
@@ -188,7 +188,7 @@ test('rolesMap API', async (t) => {
188188
for (let i = 0; i < output.length; i++) {
189189
const [role, elements] = output[i];
190190
st.ok(
191-
entriesList.find(([r]) => r === role),
191+
entriesList.filter(([r]) => r === role)[0],
192192
`\`forEach\` has role: ${role}`
193193
);
194194
st.ok(elements && typeof elements === 'object', `\`forEach\` has object elements`)
@@ -208,11 +208,11 @@ test('rolesMap API', async (t) => {
208208
t.test('keys(), iteration', async (st) => {
209209
const entriesKeys = entriesList.map(entry => entry[0]);
210210
for (const key of rolesMap.keys()) {
211-
st.ok(entriesKeys.find((k) => k === key), `for-of has key: ${key}`);
211+
st.ok(entriesKeys.filter((k) => k === key)[0], `for-of has key: ${key}`);
212212
}
213213

214214
[...rolesMap.keys()].forEach(([key]) => {
215-
st.ok(entriesKeys.find(([k]) => k === key), `spread has key: ${key}`);
215+
st.ok(entriesKeys.filter(([k]) => k === key)[0], `spread has key: ${key}`);
216216
});
217217
});
218218

@@ -230,9 +230,7 @@ test('rolesMap API', async (t) => {
230230
const roles = rolesMap.entries();
231231

232232
for (const [role, definition] of roles) {
233-
const unknownProps = Object.keys(definition.props).filter(
234-
prop => !ariaPropsMap.has(prop)
235-
);
233+
const unknownProps = Object.keys(definition.props).filter(prop => !ariaPropsMap.has(prop));
236234
st.deepEqual(unknownProps, [], `${role}: no unknown props`);
237235
}
238236
});

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"nyc": "^10.3.2",
5454
"object-inspect": "^1.13.2",
5555
"object.values": "^1.2.0",
56-
"rimraf": "^3.0.2",
56+
"rimraf": "^2.7.1",
5757
"tape": "^5.8.1"
5858
},
5959
"browserslist": [

src/ariaPropsMap.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ const ariaPropsMap: TAriaQueryMap<
244244
}
245245
},
246246
get: function (key: ARIAProperty): ?ARIAPropertyDefinition {
247-
const item = properties.find(tuple => (tuple[0] === key) ? true : false);
247+
const item = properties.filter(tuple => (tuple[0] === key) ? true : false)[0];
248248
return item && item[1];
249249
},
250250
has: function (key: ARIAProperty): boolean {

src/domMap.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ const domMap: TAriaQueryMap<
418418
}
419419
},
420420
get: function (key: TAriaQueryHTMLElement): ?DOMDefinition {
421-
const item = dom.find(tuple => (tuple[0] === key) ? true : false);
421+
const item = dom.filter(tuple => (tuple[0] === key) ? true : false)[0];
422422
return item && item[1];
423423
},
424424
has: function (key: TAriaQueryHTMLElement): boolean {

src/elementRoleMap.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ for (let i = 0; i < keys.length; i++) {
2323
if (relation.module === 'HTML') {
2424
const concept = relation.concept;
2525
if (concept) {
26-
const elementRoleRelation: ?ElementARIARoleRelationTuple = elementRoles.find(relation => ariaRoleRelationConceptEquals(relation[0], concept));
26+
const elementRoleRelation: ?ElementARIARoleRelationTuple = elementRoles.filter(relation => ariaRoleRelationConceptEquals(relation[0], concept))[0];
2727
let roles: RoleSet;
2828

2929
if (elementRoleRelation) {
@@ -67,9 +67,10 @@ const elementRoleMap: TAriaQueryMap<
6767
}
6868
},
6969
get: function (key: ARIARoleRelationConcept): ?RoleSet {
70-
const item = elementRoles.find(tuple => (
71-
key.name === tuple[0].name && ariaRoleRelationConceptAttributeEquals(key.attributes, tuple[0].attributes)
72-
));
70+
const item = elementRoles.filter(tuple => (
71+
key.name === tuple[0].name
72+
&& ariaRoleRelationConceptAttributeEquals(key.attributes, tuple[0].attributes)
73+
))[0];
7374
return item && item[1];
7475
},
7576
has: function (key: ARIARoleRelationConcept): boolean {

src/roleElementMap.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const roleElementMap: TAriaQueryMap<
5151
}
5252
},
5353
get: function (key: ARIARoleDefinitionKey): ?ARIARoleRelationConcepts {
54-
const item = roleElement.find(tuple => (tuple[0] === key) ? true : false);
54+
const item = roleElement.filter(tuple => (tuple[0] === key) ? true : false)[0];
5555
return item && item[1];
5656
},
5757
has: function (key: ARIARoleDefinitionKey): boolean {

src/rolesMap.js

+6-11
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,22 @@ const roles: RoleDefinitions = [].concat(
1515
ariaGraphicsRoles,
1616
);
1717

18-
roles.forEach(([
19-
,
20-
roleDefinition,
21-
]: RoleDefinitionTuple) => {
18+
roles.forEach(([, roleDefinition]: RoleDefinitionTuple) => {
2219
// Conglomerate the properties
2320
for (let superClassIter of roleDefinition.superClass) {
2421
for (let superClassName of superClassIter) {
25-
const superClassRoleTuple = roles.find(([
22+
const superClassRoleTuple = roles.filter(([
2623
name,
27-
]: RoleDefinitionTuple) => name === superClassName);
24+
]: RoleDefinitionTuple) => name === superClassName)[0];
2825
if (superClassRoleTuple) {
2926
const superClassDefinition = superClassRoleTuple[1];
3027
for (let prop: string of Object.keys(superClassDefinition.props)) {
3128
if (
3229
// $FlowIssue Accessing the hasOwnProperty on the Object prototype is fine.
3330
!Object.prototype.hasOwnProperty.call(roleDefinition.props, prop)
3431
) {
35-
Object.assign(
36-
roleDefinition.props,
37-
{[prop]: superClassDefinition.props[prop]},
38-
);
32+
// $FlowIgnore assigning without an index signature is fine
33+
roleDefinition.props[prop] = superClassDefinition.props[prop];
3934
}
4035
}
4136
}
@@ -60,7 +55,7 @@ const rolesMap: TAriaQueryMap<
6055
}
6156
},
6257
get: function (key: ARIARoleDefinitionKey): ?ARIARoleDefinition {
63-
const item = roles.find(tuple => (tuple[0] === key) ? true : false);
58+
const item = roles.filter(tuple => (tuple[0] === key) ? true : false)[0];
6459
return item && item[1];
6560
},
6661
has: function (key: ARIARoleDefinitionKey): boolean {

0 commit comments

Comments
 (0)