Skip to content

Commit 4715cdf

Browse files
committed
Speed up some of the queries a bit
1 parent dde8639 commit 4715cdf

9 files changed

Lines changed: 75 additions & 58 deletions

‎node/package-lock.json‎

Lines changed: 42 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎repository/jsrepository-ast.js‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,18 @@ exports.queries = {
176176
/:left/:property/:name == "version"
177177
]/$:right/:init/:value
178178
`,
179+
/*
180+
//:left matches the .left of any node with that attribute (also
181+
BinaryExpression, LogicalExpression, etc, not just AssignmentExpression),
182+
so this scans far more candidates than necessary on every CallExpression
183+
in the file (this query's anchor). Narrowing to an explicit
184+
AssignmentExpression[...] type filter lets the engine use its type index
185+
instead of a same-attribute scan across unrelated node types — same
186+
matches, measurably cheaper on every file scanned, no version-specific
187+
structural assumptions added.
188+
*/
179189
`//CallExpression[
180-
/:callee//:left/:property/:name == "Vue"
190+
/:callee//AssignmentExpression[/:left/:property/:name == "Vue"]
181191
]/:arguments//AssignmentExpression[
182192
/:left/:property/:name == "version"
183193
]/$$:right/:value`,
@@ -192,8 +202,15 @@ exports.queries = {
192202
2.x/3.0.x: var DOMPurify = function DOMPurify(root){...}
193203
3.1.x+: const DOMPurify = root => createDOMPurify(root)
194204
*/
205+
/*
206+
Narrowed from //:left (matches any node with a .left attribute — also
207+
BinaryExpression, LogicalExpression, etc) to an explicit
208+
AssignmentExpression type filter: same matches, but lets the engine use
209+
its type index instead of scanning every attribute-bearing node type on
210+
each of the many CallExpressions in a file (this query's anchor).
211+
*/
195212
`//CallExpression[
196-
/:callee//:left/:property/:name == "DOMPurify"
213+
/:callee//AssignmentExpression[/:left/:property/:name == "DOMPurify"]
197214
]/:arguments//AssignmentExpression[
198215
/:left/:property/:name == "version"
199216
]/:right/:value`,

‎repository/jsrepository-v2.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5945,7 +5945,7 @@
59455945
],
59465946
"hashes": {},
59475947
"ast": [
5948-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
5948+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
59495949
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
59505950
]
59515951
}
@@ -7377,7 +7377,7 @@
73777377
],
73787378
"ast": [
73797379
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7380-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7380+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
73817381
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
73827382
]
73837383
}

‎repository/jsrepository-v3.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6042,7 +6042,7 @@
60426042
],
60436043
"hashes": {},
60446044
"ast": [
6045-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
6045+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
60466046
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
60476047
]
60486048
}
@@ -7514,7 +7514,7 @@
75147514
],
75157515
"ast": [
75167516
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7517-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7517+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
75187518
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
75197519
]
75207520
}

‎repository/jsrepository-v4.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6041,7 +6041,7 @@
60416041
],
60426042
"hashes": {},
60436043
"ast": [
6044-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
6044+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
60456045
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
60466046
]
60476047
}
@@ -7513,7 +7513,7 @@
75137513
],
75147514
"ast": [
75157515
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7516-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7516+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
75177517
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
75187518
]
75197519
}

‎repository/jsrepository-v5-combined.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6048,7 +6048,7 @@
60486048
],
60496049
"hashes": {},
60506050
"ast": [
6051-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
6051+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
60526052
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
60536053
]
60546054
}
@@ -7520,7 +7520,7 @@
75207520
],
75217521
"ast": [
75227522
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7523-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7523+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
75247524
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
75257525
]
75267526
}

‎repository/jsrepository-v5.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6047,7 +6047,7 @@
60476047
],
60486048
"hashes": {},
60496049
"ast": [
6050-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
6050+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
60516051
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
60526052
]
60536053
}
@@ -7519,7 +7519,7 @@
75197519
],
75207520
"ast": [
75217521
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7522-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7522+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
75237523
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
75247524
]
75257525
}

‎repository/jsrepository-v6-combined.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6116,7 +6116,7 @@
61166116
],
61176117
"hashes": {},
61186118
"ast": [
6119-
"//CallExpression[ /:callee//:left/:property/:name == \"DOMPurify\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
6119+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"DOMPurify\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/:right/:value",
61206120
"//IfStatement[ /:test//AssignmentExpression[/:left/:property/:name == \"removed\"]/:left/$:object == /:consequent//AssignmentExpression[/:left/:property/:name == \"isSupported\"]/:left/$:object ]/:test//AssignmentExpression[/:left/:property/:name == \"version\"]/$$:right/:value"
61216121
]
61226122
}
@@ -7591,7 +7591,7 @@
75917591
],
75927592
"ast": [
75937593
"//VariableDeclarator[ /:id/:name == \"Vue\" ]/CallExpression/FunctionExpression/BlockStatement/ReturnStatement/SequenceExpression/AssignmentExpression[ /:left/:property/:name == \"version\" ]/$:right/:init/:value ",
7594-
"//CallExpression[ /:callee//:left/:property/:name == \"Vue\" ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
7594+
"//CallExpression[ /:callee//AssignmentExpression[/:left/:property/:name == \"Vue\"] ]/:arguments//AssignmentExpression[ /:left/:property/:name == \"version\" ]/$$:right/:value",
75957595
"//AssignmentExpression[ /:left/:object/:name == \"Vue\" && /:left/:property/:name == \"version\" ]/:right/:value"
75967596
]
75977597
}

0 commit comments

Comments
 (0)