Skip to content

Commit 677db95

Browse files
committed
fix: cleanup
1 parent 8f51279 commit 677db95

File tree

1 file changed

+35
-45
lines changed

1 file changed

+35
-45
lines changed

workspaces/arborist/lib/query-selector-all.js

+35-45
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ const semver = require('semver')
1212
// arborist nodes as its value, that is essential to how we handle multiple
1313
// query selectors, e.g: `#a, #b, #c` <- 3 diff ast selector nodes
1414
class Results {
15-
#results = null
15+
#results = new Map()
1616
#currentAstSelector = null
1717

1818
constructor (rootAstNode) {
19-
this.#results = new Map()
2019
this.#currentAstSelector = rootAstNode.nodes[0]
2120
}
2221

@@ -37,13 +36,7 @@ class Results {
3736
// selector nodes and collect all of their resulting arborist nodes into a
3837
// single/flat Set of items, this ensures we also deduplicate items
3938
collect (rootAstNode) {
40-
const acc = new Set()
41-
for (const n of rootAstNode.nodes) {
42-
for (const node of this.#results.get(n)) {
43-
acc.add(node)
44-
}
45-
}
46-
return acc
39+
return new Set(rootAstNode.nodes.flatMap(n => this.#results.get(n)))
4740
}
4841
}
4942

@@ -78,7 +71,7 @@ const retrieveNodesFromParsedAst = async ({
7871
return (String(pkg[attribute] || '').match(/\w+/g) || []).includes(value)
7972
},
8073
'*=' ({ attribute, value, pkg }) {
81-
return String(pkg[attribute] || '').indexOf(value) > -1
74+
return String(pkg[attribute] || '').includes(value)
8275
},
8376
'|=' ({ attribute, value, pkg }) {
8477
return String(pkg[attribute] || '').split('-')[0] === value
@@ -91,42 +84,49 @@ const retrieveNodesFromParsedAst = async ({
9184
},
9285
}))
9386
const depTypesMap = new Map(Object.entries({
94-
'.prod' (prevResults) {
95-
return Promise.resolve(prevResults.filter(node =>
96-
[...node.edgesIn].some(edge => edge.prod)))
87+
async '.prod' (prevResults) {
88+
return prevResults.filter(node =>
89+
[...node.edgesIn].some(edge => edge.prod)
90+
)
9791
},
98-
'.dev' (prevResults) {
99-
return Promise.resolve(prevResults.filter(node =>
100-
[...node.edgesIn].some(edge => edge.dev)))
92+
async '.dev' (prevResults) {
93+
return prevResults.filter(node =>
94+
[...node.edgesIn].some(edge => edge.dev)
95+
)
10196
},
102-
'.optional' (prevResults) {
103-
return Promise.resolve(prevResults.filter(node =>
104-
[...node.edgesIn].some(edge => edge.optional)))
97+
async '.optional' (prevResults) {
98+
return prevResults.filter(node =>
99+
[...node.edgesIn].some(edge => edge.optional)
100+
)
105101
},
106-
'.peer' (prevResults) {
107-
return Promise.resolve(prevResults.filter(node =>
108-
[...node.edgesIn].some(edge => edge.peer)))
102+
async '.peer' (prevResults) {
103+
return prevResults.filter(node =>
104+
[...node.edgesIn].some(edge => edge.peer)
105+
)
109106
},
110-
'.workspace' (prevResults) {
111-
return Promise.resolve(
112-
prevResults.filter(node => node.isWorkspace))
107+
async '.workspace' (prevResults) {
108+
return prevResults.filter(node =>
109+
node.isWorkspace
110+
)
113111
},
114-
'.bundled' (prevResults) {
115-
return Promise.resolve(
116-
prevResults.filter(node => node.inBundle))
112+
async '.bundled' (prevResults) {
113+
return prevResults.filter(node =>
114+
node.inBundle
115+
)
117116
},
118117
}))
119118

120-
const hasParent = (node, compareNodes) => {
119+
const hasParent = async (node, compareNodes) => {
121120
if (parentCache.has(node) && parentCache.get(node).has(compareNodes)) {
122-
return Promise.resolve(true)
121+
return true
123122
}
124123
const parentFound = compareNodes.some(compareNode => {
125124
// follows logical parent for link anscestors
126-
return (node.isTop && node.resolveParent) === compareNode ||
125+
if (node.isTop && (node.resolveParent === compareNode)) {
126+
return true
127+
}
127128
// follows edges-in to check if they match a possible parent
128-
[...node.edgesIn].some(edge =>
129-
edge && edge.from === compareNode)
129+
return [...node.edgesIn].some(edge => edge && edge.from === compareNode)
130130
})
131131

132132
if (parentFound) {
@@ -136,7 +136,7 @@ const retrieveNodesFromParsedAst = async ({
136136
parentCache.get(node).add(compareNodes)
137137
}
138138

139-
return Promise.resolve(parentFound)
139+
return parentFound
140140
}
141141

142142
// checks if a given node is a descendant of any
@@ -226,17 +226,7 @@ const retrieveNodesFromParsedAst = async ({
226226
// all its indexes testing for possible objects that may eventually
227227
// hold more keys specified in a selector
228228
if (prop === arrayDelimiter) {
229-
const newObjs = []
230-
for (const obj of objs) {
231-
if (Array.isArray(obj)) {
232-
obj.forEach((i, index) => {
233-
newObjs.push(obj[index])
234-
})
235-
} else {
236-
newObjs.push(obj)
237-
}
238-
}
239-
objs = newObjs
229+
objs = objs.flat()
240230
continue
241231
} else {
242232
// otherwise just maps all currently found objs

0 commit comments

Comments
 (0)