Skip to content

Commit

Permalink
fix(jest-resolve): cache package.json lookups
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed Feb 11, 2021
1 parent 42f78d4 commit 40b4f1c
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 19 deletions.
2 changes: 1 addition & 1 deletion packages/jest-resolve/package.json
Expand Up @@ -20,7 +20,7 @@
"graceful-fs": "^4.2.4",
"jest-pnp-resolver": "^1.2.2",
"jest-util": "^27.0.0-next.1",
"resolve": "^1.18.1",
"resolve": "^1.20.0",
"slash": "^3.0.0"
},
"devDependencies": {
Expand Down
22 changes: 22 additions & 0 deletions packages/jest-resolve/src/defaultResolver.ts
Expand Up @@ -50,6 +50,8 @@ export default function defaultResolver(
packageFilter: options.packageFilter,
paths: options.paths,
preserveSymlinks: false,
// @ts-expect-error: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/51182
readPackageSync,
realpathSync,
});

Expand All @@ -61,6 +63,7 @@ export default function defaultResolver(
export function clearDefaultResolverCache(): void {
checkedPaths.clear();
checkedRealpathPaths.clear();
packageContents.clear();
}

enum IPathType {
Expand Down Expand Up @@ -118,6 +121,21 @@ function realpathCached(path: Config.Path): Config.Path {
return result;
}

const packageContents = new Map<string, unknown>();
function readPackageCached(path: Config.Path): unknown {
let result = packageContents.get(path);

if (result !== undefined) {
return result;
}

result = JSON.parse(fs.readFileSync(path, 'utf8'));

packageContents.set(path, result);

return result;
}

/*
* helper functions
*/
Expand All @@ -132,3 +150,7 @@ function isDirectory(dir: Config.Path): boolean {
function realpathSync(file: Config.Path): Config.Path {
return realpathCached(file);
}

function readPackageSync(_: unknown, file: Config.Path): unknown {
return readPackageCached(file);
}
36 changes: 18 additions & 18 deletions yarn.lock
Expand Up @@ -9402,11 +9402,11 @@ fsevents@^1.2.7:
linkType: hard

fsevents@^2.2.1:
version: 2.3.1
resolution: "fsevents@npm:2.3.1"
version: 2.3.2
resolution: "fsevents@npm:2.3.2"
dependencies:
node-gyp: latest
checksum: 32619a121e7f9ac8a5ce4954f5fdf06be68b7b1c16e4ac8fa6e5e13cbf97d83c86cdcdf872ab7b188ebb07b34d2271b7818aebfc305b4a7d5b35f4bc2117f8be
checksum: a1883f4ca12b8b403ec528f1a4cb312b0877eacd24719da535cabea78d6fdd78530e3538bdba590a1c0f6c295128f964a89182621885296353a44dcfa4f9db53
languageName: node
linkType: hard

Expand All @@ -9421,11 +9421,11 @@ fsevents@^2.2.1:
linkType: hard

"fsevents@patch:fsevents@^2.2.1#builtin<compat/fsevents>":
version: 2.3.1
resolution: "fsevents@patch:fsevents@npm%3A2.3.1#builtin<compat/fsevents>::version=2.3.1&hash=11e9ea"
version: 2.3.2
resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin<compat/fsevents>::version=2.3.2&hash=11e9ea"
dependencies:
node-gyp: latest
checksum: 66b24358e15cdd0f705b456346e58b4613f2bf54206b47874decda4152614fb0632d2d662c92b0ea54810109f646e5233e4cdd64dbb2a1949070ee5dc14dab87
checksum: 7b25d9251aefe433d508a0eb614217f0495ae05a9e8af15f7dbf9998e08c4e675acd1cf32361e0fcf71d917d9e8c4b76301fdc72a1ec1105a3ea0994f5e15a8d
languageName: node
linkType: hard

Expand Down Expand Up @@ -10931,7 +10931,7 @@ fsevents@~2.1.2:
languageName: node
linkType: hard

"is-core-module@npm:^2.1.0":
"is-core-module@npm:^2.2.0":
version: 2.2.0
resolution: "is-core-module@npm:2.2.0"
dependencies:
Expand Down Expand Up @@ -12041,7 +12041,7 @@ fsevents@~2.1.2:
jest-haste-map: ^27.0.0-next.2
jest-pnp-resolver: ^1.2.2
jest-util: ^27.0.0-next.1
resolve: ^1.18.1
resolve: ^1.20.0
slash: ^3.0.0
languageName: unknown
linkType: soft
Expand Down Expand Up @@ -17345,23 +17345,23 @@ react-native@0.63.2:
languageName: node
linkType: hard

"resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.15.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1":
version: 1.19.0
resolution: "resolve@npm:1.19.0"
"resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.15.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1":
version: 1.20.0
resolution: "resolve@npm:1.20.0"
dependencies:
is-core-module: ^2.1.0
is-core-module: ^2.2.0
path-parse: ^1.0.6
checksum: 8b23c7fde1224898ffb9fec2a2295a44d1564981343bdbf5fd3769465658f6a6f6647bb7ea66dfb3c1291ca86046b0233be2edfcd8ca05b38886521e8869677c
checksum: 0f5206d454b30e74d9b2d575b5f8aedf443c4d8b90b84cdf79474ade29bb459075220da3127b682896872a16022ed65cc4db09e0f23849654144d3d75c65cd1b
languageName: node
linkType: hard

"resolve@patch:resolve@^1.1.6#builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.13.1#builtin<compat/resolve>, resolve@patch:resolve@^1.15.0#builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#builtin<compat/resolve>, resolve@patch:resolve@^1.3.2#builtin<compat/resolve>, resolve@patch:resolve@^1.5.0#builtin<compat/resolve>, resolve@patch:resolve@^1.8.1#builtin<compat/resolve>":
version: 1.19.0
resolution: "resolve@patch:resolve@npm%3A1.19.0#builtin<compat/resolve>::version=1.19.0&hash=3388aa"
"resolve@patch:resolve@^1.1.6#builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.13.1#builtin<compat/resolve>, resolve@patch:resolve@^1.15.0#builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#builtin<compat/resolve>, resolve@patch:resolve@^1.3.2#builtin<compat/resolve>, resolve@patch:resolve@^1.5.0#builtin<compat/resolve>, resolve@patch:resolve@^1.8.1#builtin<compat/resolve>":
version: 1.20.0
resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin<compat/resolve>::version=1.20.0&hash=3388aa"
dependencies:
is-core-module: ^2.1.0
is-core-module: ^2.2.0
path-parse: ^1.0.6
checksum: 188d5167e8578a9af8d194faf382b8f3526aad5145391c24ecdc6246c6fc82c10fc66d6352267f8e93c5977c503d61803169c91b9e2ee36dd2de759915c9b673
checksum: c4a515b76026806b5b26513fc7bdb80458c532bc91c02ef45ac928d1025585f93bec0b904be39c02131118a37ff7e3f9258f1526850b025d2ec0948bb5fd03d0
languageName: node
linkType: hard

Expand Down

0 comments on commit 40b4f1c

Please sign in to comment.