Skip to content

Commit 42dd3a8

Browse files
committed
perf: dedupe paths in getComponentSets
Use Set-backed unique lists for deletes and non-deletes before resolution.
1 parent 222333f commit 42dd3a8

2 files changed

Lines changed: 12 additions & 104 deletions

File tree

src/shared/localComponentSetArray.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,12 @@ export const getComponentSets = ({
119119

120120
// we need virtual components for the deletes.
121121
// TODO: could we use the same for the non-deletes?
122-
const resolverForDeletes = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(grouping.deletes));
122+
const uniqueDeletes = [...new Set(grouping.deletes)];
123+
const uniqueNonDeletes = [...new Set(grouping.nonDeletes)];
123124

124-
grouping.deletes
125+
const resolverForDeletes = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(uniqueDeletes));
126+
127+
uniqueDeletes
125128
.flatMap((filename) => resolverForDeletes.getComponentsFromPath(filename))
126129
.filter(isDefined)
127130
.map((component) => {
@@ -144,7 +147,7 @@ export const getComponentSets = ({
144147
}
145148
});
146149

147-
grouping.nonDeletes
150+
uniqueNonDeletes
148151
.flatMap((filename) => {
149152
try {
150153
return resolverForNonDeletes.getComponentsFromPath(resolve(projectPath, filename));

yarn.lock

Lines changed: 6 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -570,22 +570,6 @@
570570
"@jridgewell/resolve-uri" "^3.1.0"
571571
"@jridgewell/sourcemap-codec" "^1.4.14"
572572

573-
"@jsforce/jsforce-node@^3.10.10":
574-
version "3.10.10"
575-
resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.10.tgz#2d7bb77d1d739712733a30de7e9c941d2127bc4a"
576-
integrity sha512-/zUOX9kapwk8lyjmTYgXlBF+GbqcEpb0zrkDfX9i94xu5cvzERZxRHqSSaS/IImoDmvoSbatFSVfB7Y4lmANOw==
577-
dependencies:
578-
"@sindresorhus/is" "^4"
579-
base64url "^3.0.1"
580-
csv-parse "^5.5.2"
581-
csv-stringify "^6.6.0"
582-
faye "^1.4.0"
583-
form-data "^4.0.4"
584-
https-proxy-agent "^5.0.0"
585-
multistream "^3.1.0"
586-
node-fetch "^2.6.1"
587-
xml2js "^0.6.2"
588-
589573
"@jsforce/jsforce-node@^3.10.13":
590574
version "3.10.14"
591575
resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8"
@@ -692,32 +676,7 @@
692676
strip-ansi "6.0.1"
693677
ts-retry-promise "^0.8.1"
694678

695-
"@salesforce/core@^8.23.1", "@salesforce/core@^8.8.0":
696-
version "8.24.0"
697-
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.24.0.tgz#13426f9f3b5ed0ec126b8009e5eda68e03db0401"
698-
integrity sha512-8Ra5RT95bRkmHmaaFgABwkXbnHNSNS7l9gbJzJgO6VQpaEeytGPPyymnAE7TcTM2xp/QwlXn+PgX4biX7Lb7JA==
699-
dependencies:
700-
"@jsforce/jsforce-node" "^3.10.10"
701-
"@salesforce/kit" "^3.2.4"
702-
"@salesforce/ts-types" "^2.0.12"
703-
ajv "^8.17.1"
704-
change-case "^4.1.2"
705-
fast-levenshtein "^3.0.0"
706-
faye "^1.4.1"
707-
form-data "^4.0.4"
708-
js2xmlparser "^4.0.1"
709-
jsonwebtoken "9.0.3"
710-
jszip "3.10.1"
711-
memfs "^4.30.1"
712-
pino "^9.7.0"
713-
pino-abstract-transport "^1.2.0"
714-
pino-pretty "^11.3.0"
715-
proper-lockfile "^4.1.2"
716-
semver "^7.7.3"
717-
ts-retry-promise "^0.8.1"
718-
zod "^4.1.12"
719-
720-
"@salesforce/core@^8.27.1":
679+
"@salesforce/core@^8.23.1", "@salesforce/core@^8.27.1", "@salesforce/core@^8.8.0":
721680
version "8.27.1"
722681
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.27.1.tgz#26b08b0d68dd1fc210d1dd7a7e3770e3b9f27e74"
723682
integrity sha512-1WpVt9tQAEINGzsQsSiVRmcmYUpKeK4P54624f9HvLIv7o7jTjdARwirJpOqivIihbDE8OJnYOdsr0vV5Dz93A==
@@ -1310,17 +1269,7 @@ ajv@^6.12.4:
13101269
json-schema-traverse "^0.4.1"
13111270
uri-js "^4.2.2"
13121271

1313-
ajv@^8.11.0, ajv@^8.17.1:
1314-
version "8.17.1"
1315-
resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
1316-
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
1317-
dependencies:
1318-
fast-deep-equal "^3.1.3"
1319-
fast-uri "^3.0.1"
1320-
json-schema-traverse "^1.0.0"
1321-
require-from-string "^2.0.2"
1322-
1323-
ajv@^8.18.0:
1272+
ajv@^8.11.0, ajv@^8.18.0:
13241273
version "8.18.0"
13251274
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
13261275
integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
@@ -1562,14 +1511,7 @@ brace-expansion@^1.1.7:
15621511
balanced-match "^1.0.0"
15631512
concat-map "0.0.1"
15641513

1565-
brace-expansion@^2.0.1:
1566-
version "2.0.1"
1567-
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
1568-
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
1569-
dependencies:
1570-
balanced-match "^1.0.0"
1571-
1572-
brace-expansion@^2.0.2:
1514+
brace-expansion@^2.0.1, brace-expansion@^2.0.2:
15731515
version "2.0.3"
15741516
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.3.tgz#0493338bdd58e319b1039c67cf7ee439892c01d9"
15751517
integrity sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==
@@ -2806,16 +2748,7 @@ fast-xml-builder@^1.1.4:
28062748
dependencies:
28072749
path-expression-matcher "^1.1.3"
28082750

2809-
fast-xml-parser@^5.5.7:
2810-
version "5.5.7"
2811-
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.5.7.tgz#e1ddc86662d808450a19cf2fb6ccc9c3c9933c5d"
2812-
integrity sha512-LteOsISQ2GEiDHZch6L9hB0+MLoYVLToR7xotrzU0opCICBkxOPgHAy1HxAvtxfJNXDJpgAsQN30mkrfpO2Prg==
2813-
dependencies:
2814-
fast-xml-builder "^1.1.4"
2815-
path-expression-matcher "^1.1.3"
2816-
strnum "^2.2.0"
2817-
2818-
fast-xml-parser@^5.5.9:
2751+
fast-xml-parser@^5.5.7, fast-xml-parser@^5.5.9:
28192752
version "5.5.9"
28202753
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz#e59637abebec3dbfbb4053b532d787af6ea11527"
28212754
integrity sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==
@@ -4329,17 +4262,6 @@ memfs@4.38.1:
43294262
tree-dump "^1.0.3"
43304263
tslib "^2.0.0"
43314264

4332-
memfs@^4.30.1:
4333-
version "4.36.3"
4334-
resolved "https://registry.npmjs.org/memfs/-/memfs-4.36.3.tgz"
4335-
integrity sha512-rZIVsNPGdZDPls/ckWhIsod2zRNsI2f2kEru0gMldkrEve+fPn7CVBTvfKLNyHQ9rZDWwzVBF8tPsZivzDPiZQ==
4336-
dependencies:
4337-
"@jsonjoy.com/json-pack" "^1.11.0"
4338-
"@jsonjoy.com/util" "^1.9.0"
4339-
thingies "^2.5.0"
4340-
tree-dump "^1.0.3"
4341-
tslib "^2.0.0"
4342-
43434265
meow@^13.0.0:
43444266
version "13.2.0"
43454267
resolved "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz"
@@ -4475,14 +4397,7 @@ minimatch@^5.0.1, minimatch@^5.1.6:
44754397
dependencies:
44764398
brace-expansion "^2.0.1"
44774399

4478-
minimatch@^9.0.4, minimatch@^9.0.5:
4479-
version "9.0.5"
4480-
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
4481-
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
4482-
dependencies:
4483-
brace-expansion "^2.0.1"
4484-
4485-
minimatch@^9.0.7:
4400+
minimatch@^9.0.4, minimatch@^9.0.5, minimatch@^9.0.7:
44864401
version "9.0.9"
44874402
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e"
44884403
integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==
@@ -4926,12 +4841,7 @@ path-exists@^4.0.0:
49264841
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
49274842
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
49284843

4929-
path-expression-matcher@^1.1.3:
4930-
version "1.1.3"
4931-
resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz#8bf7c629dc1b114e42b633c071f06d14625b4e0d"
4932-
integrity sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==
4933-
4934-
path-expression-matcher@^1.2.0:
4844+
path-expression-matcher@^1.1.3, path-expression-matcher@^1.2.0:
49354845
version "1.2.0"
49364846
resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz#9bdae3787f43b0857b0269e9caaa586c12c8abee"
49374847
integrity sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==
@@ -5963,11 +5873,6 @@ strip-json-comments@^3.1.1:
59635873
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
59645874
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
59655875

5966-
strnum@^2.2.0:
5967-
version "2.2.1"
5968-
resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.1.tgz#d28f896b4ef9985212494ce8bcf7ca304fad8368"
5969-
integrity sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==
5970-
59715876
strnum@^2.2.2:
59725877
version "2.2.2"
59735878
resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.2.tgz#f11fd94ab62b536ba2ecc615858f3747c2881b3f"

0 commit comments

Comments
 (0)