From c78c2f4c8081ad1938c82cfecbc4ad2f59e78376 Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 20:12:58 +0100 Subject: [PATCH 1/8] feat: unplug packages with native files --- packages/plugin-pnp/sources/PnpLinker.ts | 18 +++++++++-- packages/yarnpkg-fslib/sources/FakeFS.ts | 6 ++++ packages/yarnpkg-fslib/sources/NoFS.ts | 4 +++ packages/yarnpkg-fslib/sources/NodeFS.ts | 4 +++ packages/yarnpkg-fslib/sources/ProxiedFS.ts | 12 +++++--- packages/yarnpkg-fslib/sources/VirtualFS.ts | 6 +++- packages/yarnpkg-fslib/sources/ZipFS.ts | 34 ++++++++++++++------- packages/yarnpkg-fslib/sources/ZipOpenFS.ts | 22 +++++++------ 8 files changed, 79 insertions(+), 27 deletions(-) diff --git a/packages/plugin-pnp/sources/PnpLinker.ts b/packages/plugin-pnp/sources/PnpLinker.ts index 0f2a00319447..db12a3c77a30 100644 --- a/packages/plugin-pnp/sources/PnpLinker.ts +++ b/packages/plugin-pnp/sources/PnpLinker.ts @@ -18,6 +18,17 @@ const FORCED_UNPLUG_PACKAGES = new Set([ structUtils.makeIdent(null, `fsevents`).identHash, ]); +const FORCED_UNPLUG_FILETYPES = new Set([ + // Windows can't execute exe files inside zip archives + '.exe', + // The c/c++ compiler can't read files from zip archives + '.h', '.hh', '.hpp', '.c', '.cc', '.cpp', + // The java runtime can't read files from zip archives + '.java', + // Node opens these through dlopen + '.node', +]); + export class PnpLinker implements Linker { supportsPackage(pkg: Package, opts: MinimalLinkOptions) { return opts.project.configuration.get('nodeLinker') === 'pnp'; @@ -83,7 +94,7 @@ class PnpInstaller extends AbstractPnpInstaller { } async transformPackage(locator: Locator, dependencyMeta: DependencyMeta, packageFs: FakeFS, {hasBuildScripts}: {hasBuildScripts: boolean}) { - if (hasBuildScripts || this.isUnplugged(locator, dependencyMeta)) { + if (hasBuildScripts || this.isUnplugged(locator, dependencyMeta, packageFs)) { return this.unplugPackage(locator, packageFs); } else { return packageFs; @@ -184,13 +195,16 @@ class PnpInstaller extends AbstractPnpInstaller { return new CwdFS(unplugPath); } - private isUnplugged(ident: Ident, dependencyMeta: DependencyMeta) { + private isUnplugged(ident: Ident, dependencyMeta: DependencyMeta, packageFs: FakeFS) { if (dependencyMeta.unplugged) return true; if (FORCED_UNPLUG_PACKAGES.has(ident.identHash)) return true; + if (packageFs.getExtractHint({relevantExtensions:FORCED_UNPLUG_FILETYPES})) + return true; + return false; } } diff --git a/packages/yarnpkg-fslib/sources/FakeFS.ts b/packages/yarnpkg-fslib/sources/FakeFS.ts index 98821b0e9a4a..16ec38139d95 100644 --- a/packages/yarnpkg-fslib/sources/FakeFS.ts +++ b/packages/yarnpkg-fslib/sources/FakeFS.ts @@ -51,6 +51,10 @@ export type Watcher = { close: () => void; }; +export type ExtractHintOptions = { + relevantExtensions: Set; +} + export abstract class FakeFS

{ static DEFAULT_TIME = 315532800; @@ -60,6 +64,8 @@ export abstract class FakeFS

{ this.pathUtils = pathUtils; } + abstract getExtractHint(hints: ExtractHintOptions): boolean; + abstract getRealPath(): P; abstract resolve(p: P): P; diff --git a/packages/yarnpkg-fslib/sources/NoFS.ts b/packages/yarnpkg-fslib/sources/NoFS.ts index 358c4d9caebc..ef51d11563a5 100644 --- a/packages/yarnpkg-fslib/sources/NoFS.ts +++ b/packages/yarnpkg-fslib/sources/NoFS.ts @@ -10,6 +10,10 @@ export class NoFS extends FakeFS { super(ppath); } + getExtractHint(): never{ + throw makeError(); + } + getRealPath(): never { throw makeError(); } diff --git a/packages/yarnpkg-fslib/sources/NodeFS.ts b/packages/yarnpkg-fslib/sources/NodeFS.ts index 19e7e93b5cf0..5821a4e4256e 100644 --- a/packages/yarnpkg-fslib/sources/NodeFS.ts +++ b/packages/yarnpkg-fslib/sources/NodeFS.ts @@ -15,6 +15,10 @@ export class NodeFS extends BasePortableFakeFS { this.realFs = realFs; } + getExtractHint() { + return false; + } + getRealPath() { return PortablePath.root; } diff --git a/packages/yarnpkg-fslib/sources/ProxiedFS.ts b/packages/yarnpkg-fslib/sources/ProxiedFS.ts index 0c814fc88425..d58a188a93c2 100644 --- a/packages/yarnpkg-fslib/sources/ProxiedFS.ts +++ b/packages/yarnpkg-fslib/sources/ProxiedFS.ts @@ -1,7 +1,7 @@ -import {CreateReadStreamOptions, CreateWriteStreamOptions, FakeFS} from './FakeFS'; -import {Dirent} from './FakeFS'; -import {MkdirOptions, WriteFileOptions, WatchCallback, WatchOptions, Watcher} from './FakeFS'; -import {FSPath, Filename, Path} from './path'; +import {CreateReadStreamOptions, CreateWriteStreamOptions, FakeFS, ExtractHintOptions} from './FakeFS'; +import {Dirent} from './FakeFS'; +import {MkdirOptions, WriteFileOptions, WatchCallback, WatchOptions, Watcher} from './FakeFS'; +import {FSPath, Filename, Path} from './path'; export abstract class ProxiedFS

extends FakeFS

{ protected abstract readonly baseFs: FakeFS; @@ -16,6 +16,10 @@ export abstract class ProxiedFS

extends FakeFS< */ protected abstract mapFromBase(path: IP): P; + getExtractHint(hints: ExtractHintOptions){ + return this.baseFs.getExtractHint(hints); + } + resolve(path: P) { return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); } diff --git a/packages/yarnpkg-fslib/sources/VirtualFS.ts b/packages/yarnpkg-fslib/sources/VirtualFS.ts index 4b37ad11b598..f16d5708f67d 100644 --- a/packages/yarnpkg-fslib/sources/VirtualFS.ts +++ b/packages/yarnpkg-fslib/sources/VirtualFS.ts @@ -1,4 +1,4 @@ -import {FakeFS} from './FakeFS'; +import {FakeFS, ExtractHintOptions} from './FakeFS'; import {NodeFS} from './NodeFS'; import {ProxiedFS} from './ProxiedFS'; import {Filename, PortablePath, ppath} from './path'; @@ -66,6 +66,10 @@ export class VirtualFS extends ProxiedFS { this.baseFs = baseFs; } + getExtractHint(hints: ExtractHintOptions) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { return this.baseFs.getRealPath(); } diff --git a/packages/yarnpkg-fslib/sources/ZipFS.ts b/packages/yarnpkg-fslib/sources/ZipFS.ts index 068ca9d68caf..df7ee9c1bd36 100644 --- a/packages/yarnpkg-fslib/sources/ZipFS.ts +++ b/packages/yarnpkg-fslib/sources/ZipFS.ts @@ -1,14 +1,14 @@ -import {Libzip} from '@yarnpkg/libzip'; -import {ReadStream, Stats, WriteStream, constants} from 'fs'; -import {PassThrough} from 'stream'; -import {isDate} from 'util'; - -import {CreateReadStreamOptions, CreateWriteStreamOptions, BasePortableFakeFS} from './FakeFS'; -import {FakeFS, MkdirOptions, WriteFileOptions} from './FakeFS'; -import {WatchOptions, WatchCallback, Watcher} from './FakeFS'; -import {NodeFS} from './NodeFS'; -import * as errors from './errors'; -import {FSPath, PortablePath, npath, ppath, Filename} from './path'; +import {Libzip} from '@yarnpkg/libzip'; +import {ReadStream, Stats, WriteStream, constants} from 'fs'; +import {PassThrough} from 'stream'; +import {isDate} from 'util'; + +import {CreateReadStreamOptions, CreateWriteStreamOptions, BasePortableFakeFS, ExtractHintOptions} from './FakeFS'; +import {FakeFS, MkdirOptions, WriteFileOptions} from './FakeFS'; +import {WatchOptions, WatchCallback, Watcher} from './FakeFS'; +import {NodeFS} from './NodeFS'; +import * as errors from './errors'; +import {FSPath, PortablePath, npath, ppath, Filename} from './path'; const S_IFMT = 0o170000; @@ -251,6 +251,18 @@ export class ZipFS extends BasePortableFakeFS { this.ready = true; } + getExtractHint(hints: ExtractHintOptions){ + for (const fileName of this.entries.keys()) { + const ext = this.pathUtils.extname(fileName); + if (hints.relevantExtensions.has(ext)){ + console.log('Unplugging', fileName); + return true; + } + } + + return false; + } + getAllFiles() { return Array.from(this.entries.keys()); } diff --git a/packages/yarnpkg-fslib/sources/ZipOpenFS.ts b/packages/yarnpkg-fslib/sources/ZipOpenFS.ts index c787405d0c3f..6bfb3a773b32 100644 --- a/packages/yarnpkg-fslib/sources/ZipOpenFS.ts +++ b/packages/yarnpkg-fslib/sources/ZipOpenFS.ts @@ -1,13 +1,13 @@ -import {Libzip} from '@yarnpkg/libzip'; -import {constants} from 'fs'; +import {Libzip} from '@yarnpkg/libzip'; +import {constants} from 'fs'; -import {CreateReadStreamOptions, CreateWriteStreamOptions, BasePortableFakeFS} from './FakeFS'; -import {Dirent} from './FakeFS'; -import {FakeFS, MkdirOptions, WriteFileOptions} from './FakeFS'; -import {WatchOptions, WatchCallback, Watcher} from './FakeFS'; -import {NodeFS} from './NodeFS'; -import {ZipFS} from './ZipFS'; -import {Filename, FSPath, PortablePath} from './path'; +import {CreateReadStreamOptions, CreateWriteStreamOptions, BasePortableFakeFS, ExtractHintOptions} from './FakeFS'; +import {Dirent} from './FakeFS'; +import {FakeFS, MkdirOptions, WriteFileOptions} from './FakeFS'; +import {WatchOptions, WatchCallback, Watcher} from './FakeFS'; +import {NodeFS} from './NodeFS'; +import {ZipFS} from './ZipFS'; +import {Filename, FSPath, PortablePath} from './path'; const ZIP_FD = 0x80000000; @@ -64,6 +64,10 @@ export class ZipOpenFS extends BasePortableFakeFS { this.notZip = new Set(); } + getExtractHint(hints: ExtractHintOptions){ + return this.baseFs.getExtractHint(hints); + } + getRealPath() { return this.baseFs.getRealPath(); } From 9cbe68ba33948bbb1d906a809bc29d54e5b66b03 Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 20:16:53 +0100 Subject: [PATCH 2/8] chore: lint --- packages/yarnpkg-pnp/sources/generateSerializedState.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/yarnpkg-pnp/sources/generateSerializedState.ts b/packages/yarnpkg-pnp/sources/generateSerializedState.ts index 220b1219d89e..f6946e3a0d0d 100644 --- a/packages/yarnpkg-pnp/sources/generateSerializedState.ts +++ b/packages/yarnpkg-pnp/sources/generateSerializedState.ts @@ -1,5 +1,5 @@ -import {LocationBlacklistData, LocationLengthData, PackageRegistryData} from './types'; -import {PackageStoreData, PnpSettings, SerializedState} from './types'; +import {LocationBlacklistData, PackageRegistryData} from './types'; +import {PackageStoreData, PnpSettings, SerializedState} from './types'; // Keep this function is sync with its implementation in: // @yarnpkg/core/sources/miscUtils.ts From d5ee3ed0c793758bd4023c345c3c4214c3ff2c34 Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 20:20:16 +0100 Subject: [PATCH 3/8] chore: version check --- .yarn/versions/325ffac3.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .yarn/versions/325ffac3.yml diff --git a/.yarn/versions/325ffac3.yml b/.yarn/versions/325ffac3.yml new file mode 100644 index 000000000000..3db79a4fd9db --- /dev/null +++ b/.yarn/versions/325ffac3.yml @@ -0,0 +1,32 @@ +releases: + "@yarnpkg/fslib": prerelease + "@yarnpkg/plugin-pnp": prerelease + +declined: + - "@yarnpkg/plugin-constraints" + - "@yarnpkg/plugin-dlx" + - "@yarnpkg/plugin-essentials" + - "@yarnpkg/plugin-exec" + - "@yarnpkg/plugin-file" + - "@yarnpkg/plugin-git" + - "@yarnpkg/plugin-github" + - "@yarnpkg/plugin-http" + - "@yarnpkg/plugin-init" + - "@yarnpkg/plugin-link" + - "@yarnpkg/plugin-node-modules" + - "@yarnpkg/plugin-npm" + - "@yarnpkg/plugin-npm-cli" + - "@yarnpkg/plugin-pack" + - "@yarnpkg/plugin-patch" + - "@yarnpkg/plugin-stage" + - "@yarnpkg/plugin-version" + - "@yarnpkg/plugin-workspace-tools" + - vscode-zipfs + - "@yarnpkg/builder" + - "@yarnpkg/cli" + - "@yarnpkg/core" + - "@yarnpkg/doctor" + - "@yarnpkg/json-proxy" + - "@yarnpkg/pnp" + - "@yarnpkg/pnpify" + - "@yarnpkg/shell" From 652fda58f9cf29907bbaffa5d2916690b5ded2ed Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 21:00:59 +0100 Subject: [PATCH 4/8] chore: remove debugging leftovers --- packages/yarnpkg-fslib/sources/ZipFS.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/yarnpkg-fslib/sources/ZipFS.ts b/packages/yarnpkg-fslib/sources/ZipFS.ts index df7ee9c1bd36..5b8af4b93c65 100644 --- a/packages/yarnpkg-fslib/sources/ZipFS.ts +++ b/packages/yarnpkg-fslib/sources/ZipFS.ts @@ -255,7 +255,6 @@ export class ZipFS extends BasePortableFakeFS { for (const fileName of this.entries.keys()) { const ext = this.pathUtils.extname(fileName); if (hints.relevantExtensions.has(ext)){ - console.log('Unplugging', fileName); return true; } } From 6448572f9d4e50f15484b1fd185b1ad635b1da4b Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 21:10:05 +0100 Subject: [PATCH 5/8] chore: update pnp map --- .pnp.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pnp.js b/.pnp.js index 81f045447d51..b2a844037040 100755 --- a/.pnp.js +++ b/.pnp.js @@ -15839,7 +15839,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ]], ["clipboardy", [ ["npm:1.2.3", { - "packageLocation": "./.yarn/cache/clipboardy-npm-1.2.3-d3a44efb48-1.zip/node_modules/clipboardy/", + "packageLocation": "./.yarn/unplugged/clipboardy-npm-1.2.3-d3a44efb48/node_modules/clipboardy/", "packageDependencies": [ ["clipboardy", "npm:1.2.3"], ["arch", "npm:2.1.1"], @@ -26623,7 +26623,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ]], ["node-notifier", [ ["npm:5.4.3", { - "packageLocation": "./.yarn/cache/node-notifier-npm-5.4.3-068ef79075-1.zip/node_modules/node-notifier/", + "packageLocation": "./.yarn/unplugged/node-notifier-npm-5.4.3-068ef79075/node_modules/node-notifier/", "packageDependencies": [ ["node-notifier", "npm:5.4.3"], ["growly", "npm:1.3.0"], @@ -32644,7 +32644,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ]], ["term-size", [ ["npm:1.2.0", { - "packageLocation": "./.yarn/cache/term-size-npm-1.2.0-7629e52ca8-1.zip/node_modules/term-size/", + "packageLocation": "./.yarn/unplugged/term-size-npm-1.2.0-7629e52ca8/node_modules/term-size/", "packageDependencies": [ ["term-size", "npm:1.2.0"], ["execa", "npm:0.7.0"] From 0588b7661f69705aa1d2bbf8a099e9981c1acfaa Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 22:00:57 +0100 Subject: [PATCH 6/8] fix(pnpify): add getExtractHint --- packages/yarnpkg-fslib/sources/index.ts | 1 + packages/yarnpkg-pnpify/sources/NodeModulesFS.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/yarnpkg-fslib/sources/index.ts b/packages/yarnpkg-fslib/sources/index.ts index 20db02ac21b2..140e82b7edab 100644 --- a/packages/yarnpkg-fslib/sources/index.ts +++ b/packages/yarnpkg-fslib/sources/index.ts @@ -13,6 +13,7 @@ export {WatchCallback} from './FakeFS'; export {Watcher} from './FakeFS'; export {WriteFileOptions} from './FakeFS'; export {normalizeLineEndings} from './FakeFS'; +export {ExtractHintOptions} from './FakeFS'; export {FSPath, Path, PortablePath, NativePath, Filename} from './path'; export {ParsedPath, PathUtils, FormatInputPathObject} from './path'; diff --git a/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts b/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts index 9fdd1c44ddd2..8a394e97b50b 100644 --- a/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts +++ b/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts @@ -1,4 +1,4 @@ -import {Dirent, Filename, MkdirOptions} from '@yarnpkg/fslib'; +import {Dirent, Filename, MkdirOptions,ExtractHintOptions} from '@yarnpkg/fslib'; import {FSPath, NativePath, PortablePath, npath, ppath} from '@yarnpkg/fslib'; import {WatchOptions, WatchCallback, Watcher, toFilename} from '@yarnpkg/fslib'; import {NodeFS, FakeFS, WriteFileOptions, ProxiedFS} from '@yarnpkg/fslib'; @@ -86,6 +86,10 @@ export class PortableNodeModulesFS extends FakeFS { } } + getExtractHint(hints: ExtractHintOptions){ + return this.baseFs.getExtractHint(hints); + } + resolve(path: PortablePath) { return this.baseFs.resolve(this.resolvePath(path).resolvedPath!); } From 331da7cd924ddd3b1e48eef3681c19afdf437eac Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 22:02:51 +0100 Subject: [PATCH 7/8] chore: version check --- .yarn/versions/325ffac3.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.yarn/versions/325ffac3.yml b/.yarn/versions/325ffac3.yml index 3db79a4fd9db..f9f129a5d652 100644 --- a/.yarn/versions/325ffac3.yml +++ b/.yarn/versions/325ffac3.yml @@ -1,6 +1,7 @@ releases: "@yarnpkg/fslib": prerelease "@yarnpkg/plugin-pnp": prerelease + "@yarnpkg/pnpify": prerelease declined: - "@yarnpkg/plugin-constraints" @@ -28,5 +29,4 @@ declined: - "@yarnpkg/doctor" - "@yarnpkg/json-proxy" - "@yarnpkg/pnp" - - "@yarnpkg/pnpify" - "@yarnpkg/shell" From baf29eb2d98c609025aaeb506ccf8ef320a89732 Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 30 Jan 2020 22:29:50 +0100 Subject: [PATCH 8/8] chore: fix linting --- .eslintrc.json | 1 + packages/yarnpkg-fslib/sources/FakeFS.ts | 2 +- packages/yarnpkg-fslib/sources/NoFS.ts | 2 +- packages/yarnpkg-fslib/sources/ProxiedFS.ts | 2 +- packages/yarnpkg-fslib/sources/ZipFS.ts | 4 ++-- packages/yarnpkg-fslib/sources/ZipOpenFS.ts | 2 +- packages/yarnpkg-pnpify/sources/NodeModulesFS.ts | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index c86a4f4ef22d..67c59858c19f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -27,6 +27,7 @@ "comma-dangle": ["error", "always-multiline"], "computed-property-spacing": 2, "generator-star-spacing": ["error", {"before": true, "after": true}], + "space-before-blocks": 2, "keyword-spacing": 2, "no-multiple-empty-lines": 2, "no-tabs": 2, diff --git a/packages/yarnpkg-fslib/sources/FakeFS.ts b/packages/yarnpkg-fslib/sources/FakeFS.ts index 16ec38139d95..da55fd1b5a80 100644 --- a/packages/yarnpkg-fslib/sources/FakeFS.ts +++ b/packages/yarnpkg-fslib/sources/FakeFS.ts @@ -534,6 +534,6 @@ function getEndOfLine(content: string) { return crlf > lf ? `\r\n` : `\n`; } -export function normalizeLineEndings(originalContent: string, newContent: string){ +export function normalizeLineEndings(originalContent: string, newContent: string) { return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); } diff --git a/packages/yarnpkg-fslib/sources/NoFS.ts b/packages/yarnpkg-fslib/sources/NoFS.ts index ef51d11563a5..bc1b3736d4c0 100644 --- a/packages/yarnpkg-fslib/sources/NoFS.ts +++ b/packages/yarnpkg-fslib/sources/NoFS.ts @@ -10,7 +10,7 @@ export class NoFS extends FakeFS { super(ppath); } - getExtractHint(): never{ + getExtractHint(): never { throw makeError(); } diff --git a/packages/yarnpkg-fslib/sources/ProxiedFS.ts b/packages/yarnpkg-fslib/sources/ProxiedFS.ts index d58a188a93c2..cc3416b266dd 100644 --- a/packages/yarnpkg-fslib/sources/ProxiedFS.ts +++ b/packages/yarnpkg-fslib/sources/ProxiedFS.ts @@ -16,7 +16,7 @@ export abstract class ProxiedFS

extends FakeFS< */ protected abstract mapFromBase(path: IP): P; - getExtractHint(hints: ExtractHintOptions){ + getExtractHint(hints: ExtractHintOptions) { return this.baseFs.getExtractHint(hints); } diff --git a/packages/yarnpkg-fslib/sources/ZipFS.ts b/packages/yarnpkg-fslib/sources/ZipFS.ts index 5b8af4b93c65..ac951c27d2b9 100644 --- a/packages/yarnpkg-fslib/sources/ZipFS.ts +++ b/packages/yarnpkg-fslib/sources/ZipFS.ts @@ -251,10 +251,10 @@ export class ZipFS extends BasePortableFakeFS { this.ready = true; } - getExtractHint(hints: ExtractHintOptions){ + getExtractHint(hints: ExtractHintOptions) { for (const fileName of this.entries.keys()) { const ext = this.pathUtils.extname(fileName); - if (hints.relevantExtensions.has(ext)){ + if (hints.relevantExtensions.has(ext)) { return true; } } diff --git a/packages/yarnpkg-fslib/sources/ZipOpenFS.ts b/packages/yarnpkg-fslib/sources/ZipOpenFS.ts index 6bfb3a773b32..8b195094a159 100644 --- a/packages/yarnpkg-fslib/sources/ZipOpenFS.ts +++ b/packages/yarnpkg-fslib/sources/ZipOpenFS.ts @@ -64,7 +64,7 @@ export class ZipOpenFS extends BasePortableFakeFS { this.notZip = new Set(); } - getExtractHint(hints: ExtractHintOptions){ + getExtractHint(hints: ExtractHintOptions) { return this.baseFs.getExtractHint(hints); } diff --git a/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts b/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts index 8a394e97b50b..914686941a93 100644 --- a/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts +++ b/packages/yarnpkg-pnpify/sources/NodeModulesFS.ts @@ -86,7 +86,7 @@ export class PortableNodeModulesFS extends FakeFS { } } - getExtractHint(hints: ExtractHintOptions){ + getExtractHint(hints: ExtractHintOptions) { return this.baseFs.getExtractHint(hints); }