Skip to content

Commit 09e5796

Browse files
clydinalan-agius4
authored andcommitted
perf(@angular/build): add persistent caching of JavaScript transformations
When caching is enabled for the Angular CLI, the JavaScript transformer within the application build system will now perform persistent caching of its output. This allows for improved warm build times by removing the need to run the Angular linker and build optimizer steps against unchanged third-party code within each build. This does not affect hot rebuilds that would take place during watch mode since the outputs are already cached within memory. The on-disk storage of the cached data is handled by the `lmdb` package which provides fast key/value storage and built-in off-thread compression. This package is currently used by such projects as Gatsby and parcel for their respective caching subsystems. Warm production build of a new 18.0.0-rc.2 project with disabled caching: ``` Application bundle generation complete. [3.698 seconds] ``` With enabled caching: ``` Application bundle generation complete. [2.277 seconds] ```
1 parent 9ce8fef commit 09e5796

File tree

7 files changed

+208
-5
lines changed

7 files changed

+208
-5
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@
159159
"less-loader": "12.2.0",
160160
"license-checker": "^25.0.0",
161161
"license-webpack-plugin": "4.0.2",
162+
"lmdb": "3.0.8",
162163
"loader-utils": "3.2.1",
163164
"lodash": "^4.17.21",
164165
"magic-string": "0.30.10",

packages/angular/build/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ ts_library(
8383
"@npm//fast-glob",
8484
"@npm//https-proxy-agent",
8585
"@npm//inquirer",
86+
"@npm//lmdb",
8687
"@npm//magic-string",
8788
"@npm//mrmime",
8889
"@npm//ora",

packages/angular/build/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"fast-glob": "3.3.2",
3232
"https-proxy-agent": "7.0.4",
3333
"inquirer": "9.2.20",
34+
"lmdb": "3.0.8",
3435
"magic-string": "0.30.10",
3536
"mrmime": "2.0.0",
3637
"ora": "5.4.1",

packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import assert from 'node:assert';
1919
import * as path from 'node:path';
2020
import { maxWorkers, useTypeChecking } from '../../../utils/environment-options';
2121
import { JavaScriptTransformer } from '../javascript-transformer';
22+
import { LmbdCacheStore } from '../lmdb-cache-store';
2223
import { LoadResultCache, createCachedLoad } from '../load-result-cache';
2324
import { logCumulativeDurations, profileAsync, resetCumulativeDurations } from '../profiling';
2425
import { BundleStylesheetOptions } from '../stylesheets/bundle-options';
@@ -62,7 +63,17 @@ export function createCompilerPlugin(
6263
const preserveSymlinks = build.initialOptions.preserveSymlinks;
6364

6465
// Initialize a worker pool for JavaScript transformations
65-
const javascriptTransformer = new JavaScriptTransformer(pluginOptions, maxWorkers);
66+
let cacheStore;
67+
if (pluginOptions.sourceFileCache?.persistentCachePath) {
68+
cacheStore = new LmbdCacheStore(
69+
pluginOptions.sourceFileCache.persistentCachePath + '/angular-compiler.db',
70+
);
71+
}
72+
const javascriptTransformer = new JavaScriptTransformer(
73+
pluginOptions,
74+
maxWorkers,
75+
cacheStore?.createCache('jstransformer'),
76+
);
6677

6778
// Setup defines based on the values used by the Angular compiler-cli
6879
build.initialOptions.define ??= {};
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import { RootDatabase, open } from 'lmdb';
10+
import { Cache, CacheStore } from './cache';
11+
12+
export class LmbdCacheStore implements CacheStore<unknown> {
13+
readonly #cacheFileUrl;
14+
#db: RootDatabase | undefined;
15+
16+
constructor(readonly cachePath: string) {
17+
this.#cacheFileUrl = cachePath;
18+
}
19+
20+
#ensureCacheFile(): RootDatabase {
21+
this.#db ??= open({
22+
path: this.#cacheFileUrl,
23+
compression: true,
24+
});
25+
26+
return this.#db;
27+
}
28+
29+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
30+
async get(key: string): Promise<any> {
31+
const db = this.#ensureCacheFile();
32+
const value = db.get(key);
33+
34+
return value;
35+
}
36+
37+
has(key: string): boolean {
38+
return this.#ensureCacheFile().doesExist(key);
39+
}
40+
41+
async set(key: string, value: unknown): Promise<this> {
42+
const db = this.#ensureCacheFile();
43+
await db.put(key, value);
44+
45+
return this;
46+
}
47+
48+
createCache<V = unknown>(namespace: string): Cache<V> {
49+
return new Cache(this, namespace);
50+
}
51+
52+
async close() {
53+
try {
54+
await this.#db?.close();
55+
} catch {
56+
// Failure to close should not be fatal
57+
}
58+
}
59+
}

tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { readFile } from '../../utils/fs';
33

44
const CURRENT_SCRIPT_PACKAGES: ReadonlySet<string> = new Set([
55
'esbuild (postinstall)',
6+
'lmdb (install)',
7+
'msgpackr-extract (install)',
68
'nice-napi (install)',
79
]);
810

yarn.lock

Lines changed: 132 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@
5151
tslib "^2.3.0"
5252

5353
"@angular/bazel@https://github.com/angular/bazel-builds.git#b7599b1f8390b9ceeccae3ea976fcf6ede335396":
54-
version "18.1.0-next.0+sha-b9c88dc"
55-
uid b7599b1f8390b9ceeccae3ea976fcf6ede335396
54+
version "18.1.0-next.0"
5655
resolved "https://github.com/angular/bazel-builds.git#b7599b1f8390b9ceeccae3ea976fcf6ede335396"
5756
dependencies:
5857
"@microsoft/api-extractor" "^7.24.2"
@@ -69,7 +68,6 @@
6968

7069
"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#df748cd6d28f098e8f12d0700cad1d3c08b3ccd7":
7170
version "0.0.0-7eb6ad7da2d79cfe08019e6b6d4102ab752a94ca"
72-
uid df748cd6d28f098e8f12d0700cad1d3c08b3ccd7
7371
resolved "https://github.com/angular/dev-infra-private-build-tooling-builds.git#df748cd6d28f098e8f12d0700cad1d3c08b3ccd7"
7472
dependencies:
7573
"@angular/benchpress" "0.3.0"
@@ -268,7 +266,6 @@
268266

269267
"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#7e4c6ea5fa0ac493132345c97daef1737374702f":
270268
version "0.0.0-7eb6ad7da2d79cfe08019e6b6d4102ab752a94ca"
271-
uid "7e4c6ea5fa0ac493132345c97daef1737374702f"
272269
resolved "https://github.com/angular/dev-infra-private-ng-dev-builds.git#7e4c6ea5fa0ac493132345c97daef1737374702f"
273270
dependencies:
274271
"@yarnpkg/lockfile" "^1.1.0"
@@ -1920,6 +1917,36 @@
19201917
dependencies:
19211918
call-bind "^1.0.7"
19221919

1920+
"@lmdb/lmdb-darwin-arm64@3.0.8":
1921+
version "3.0.8"
1922+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.8.tgz#1673e9fda6678b0fd4e4b101d971e68166e36def"
1923+
integrity sha512-+lFwFvU+zQ9zVIFETNtmW++syh3Ps5JS8MPQ8zOYtQZoU+dTR8ivWHTaE2QVk1JG2payGDLUAvpndLAjGMdeeA==
1924+
1925+
"@lmdb/lmdb-darwin-x64@3.0.8":
1926+
version "3.0.8"
1927+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.8.tgz#d97c2412e23e39a3063275cc1aa15001aacc81de"
1928+
integrity sha512-T98rfsgfdQMS5/mqdsPb6oHSJ+iBYNa+PQDLtXLh6rzTEBsYP9x2uXxIj6VS4qXVDWXVi8rv85NCOG+UBOsHXQ==
1929+
1930+
"@lmdb/lmdb-linux-arm64@3.0.8":
1931+
version "3.0.8"
1932+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.8.tgz#b3e264a4c01508d73b40cc6c6d4631e55da16869"
1933+
integrity sha512-uEBGCQIChsixpykL0pjCxfF64btv64vzsb1NoM5u0qvabKvKEvErhXGoqovyldDu9u1T/fswD8Kf6ih0vJEvDQ==
1934+
1935+
"@lmdb/lmdb-linux-arm@3.0.8":
1936+
version "3.0.8"
1937+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.8.tgz#861cdcee491c97981932771ddc3ebc6e9eef71b7"
1938+
integrity sha512-gVNCi3bYWatdPMeFpFjuZl6bzVL55FkeZU3sPeU+NsMRXC+Zl3qOx3M6cM4OMlJWbhHjYjf2b8q83K0mczaiWQ==
1939+
1940+
"@lmdb/lmdb-linux-x64@3.0.8":
1941+
version "3.0.8"
1942+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.8.tgz#5422468ed6be523c6590da914a945c1ef86ece97"
1943+
integrity sha512-6v0B4sa9ulNezmDZtVpLjNHmA0qZzUl3001YJ2RF0naxsuv/Jq/xEwNYpOzfcdizHfpCE0oBkWzk/r+Slr+0zw==
1944+
1945+
"@lmdb/lmdb-win32-x64@3.0.8":
1946+
version "3.0.8"
1947+
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.8.tgz#63f7be01dac6b3613b29c05c44246740f5b7edcd"
1948+
integrity sha512-lDLGRIMqdwYD39vinwNqqZUxCdL2m2iIdn+0HyQgIHEiT0g5rIAlzaMKzoGWon5NQumfxXFk9y0DarttkR7C1w==
1949+
19231950
"@material/animation@15.0.0-canary.7f224ddd4.0":
19241951
version "15.0.0-canary.7f224ddd4.0"
19251952
resolved "https://registry.yarnpkg.com/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz#14b4f80718f9d405953dfca4376f9bcef609adc6"
@@ -2665,6 +2692,36 @@
26652692
resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb"
26662693
integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==
26672694

2695+
"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2":
2696+
version "3.0.2"
2697+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38"
2698+
integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==
2699+
2700+
"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2":
2701+
version "3.0.2"
2702+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3"
2703+
integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==
2704+
2705+
"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2":
2706+
version "3.0.2"
2707+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367"
2708+
integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==
2709+
2710+
"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2":
2711+
version "3.0.2"
2712+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399"
2713+
integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==
2714+
2715+
"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2":
2716+
version "3.0.2"
2717+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f"
2718+
integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==
2719+
2720+
"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2":
2721+
version "3.0.2"
2722+
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407"
2723+
integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==
2724+
26682725
"@nodelib/fs.scandir@2.1.5":
26692726
version "2.1.5"
26702727
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -6342,6 +6399,11 @@ destroy@~1.0.4:
63426399
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
63436400
integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==
63446401

6402+
detect-libc@^2.0.1:
6403+
version "2.0.2"
6404+
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
6405+
integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
6406+
63456407
detect-node@^2.0.4:
63466408
version "2.1.0"
63476409
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -9312,6 +9374,24 @@ lines-and-columns@^1.1.6:
93129374
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
93139375
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
93149376

9377+
lmdb@3.0.8:
9378+
version "3.0.8"
9379+
resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-3.0.8.tgz#8e7629951b0a5dc2be7220798985d0a0f53dc1e4"
9380+
integrity sha512-9rp8JT4jPhCRJUL7vRARa2N06OLSYzLwQsEkhC6Qu5XbcLyM/XBLMzDlgS/K7l7c5CdURLdDk9uE+hPFIogHTQ==
9381+
dependencies:
9382+
msgpackr "^1.9.9"
9383+
node-addon-api "^6.1.0"
9384+
node-gyp-build-optional-packages "5.1.1"
9385+
ordered-binary "^1.4.1"
9386+
weak-lru-cache "^1.2.2"
9387+
optionalDependencies:
9388+
"@lmdb/lmdb-darwin-arm64" "3.0.8"
9389+
"@lmdb/lmdb-darwin-x64" "3.0.8"
9390+
"@lmdb/lmdb-linux-arm" "3.0.8"
9391+
"@lmdb/lmdb-linux-arm64" "3.0.8"
9392+
"@lmdb/lmdb-linux-x64" "3.0.8"
9393+
"@lmdb/lmdb-win32-x64" "3.0.8"
9394+
93159395
loader-runner@^4.2.0:
93169396
version "4.3.0"
93179397
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
@@ -9882,6 +9962,27 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.2:
98829962
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
98839963
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
98849964

9965+
msgpackr-extract@^3.0.2:
9966+
version "3.0.2"
9967+
resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d"
9968+
integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==
9969+
dependencies:
9970+
node-gyp-build-optional-packages "5.0.7"
9971+
optionalDependencies:
9972+
"@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2"
9973+
"@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2"
9974+
"@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2"
9975+
"@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2"
9976+
"@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2"
9977+
"@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2"
9978+
9979+
msgpackr@^1.9.9:
9980+
version "1.10.1"
9981+
resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555"
9982+
integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==
9983+
optionalDependencies:
9984+
msgpackr-extract "^3.0.2"
9985+
98859986
multicast-dns@^7.2.5:
98869987
version "7.2.5"
98879988
resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
@@ -9995,6 +10096,11 @@ node-addon-api@^3.0.0:
999510096
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
999610097
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
999710098

10099+
node-addon-api@^6.1.0:
10100+
version "6.1.0"
10101+
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
10102+
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
10103+
999810104
node-fetch@2.6.7, node-fetch@cjs:
999910105
version "2.6.7"
1000010106
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@@ -10014,6 +10120,18 @@ node-forge@^1:
1001410120
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
1001510121
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
1001610122

10123+
node-gyp-build-optional-packages@5.0.7:
10124+
version "5.0.7"
10125+
resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3"
10126+
integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==
10127+
10128+
node-gyp-build-optional-packages@5.1.1:
10129+
version "5.1.1"
10130+
resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c"
10131+
integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==
10132+
dependencies:
10133+
detect-libc "^2.0.1"
10134+
1001710135
node-gyp-build@^4.2.2:
1001810136
version "4.8.0"
1001910137
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd"
@@ -10558,6 +10676,11 @@ ora@5.4.1, ora@^5.1.0, ora@^5.4.1:
1055810676
strip-ansi "^6.0.0"
1055910677
wcwidth "^1.0.1"
1056010678

10679+
ordered-binary@^1.4.1:
10680+
version "1.5.1"
10681+
resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6"
10682+
integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==
10683+
1056110684
os-homedir@^1.0.0:
1056210685
version "1.0.2"
1056310686
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -13512,6 +13635,11 @@ wcwidth@^1.0.0, wcwidth@^1.0.1:
1351213635
dependencies:
1351313636
defaults "^1.0.3"
1351413637

13638+
weak-lru-cache@^1.2.2:
13639+
version "1.2.2"
13640+
resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19"
13641+
integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==
13642+
1351513643
webdriver-js-extender@2.1.0:
1351613644
version "2.1.0"
1351713645
resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7"

0 commit comments

Comments
 (0)