Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
for (const pattern of NEVER_IGNORE)
globalList.accept.push(pattern);
globalList.reject.push(configuration.get(`rcFilename`));
const maybeRejectPath = (path: PortablePath | null) => {
if (path === null || !path.startsWith(`${workspace.cwd}/`))
return;
const workspaceRelativePath = ppath.relative(workspace.cwd, path);
const workspaceAbsolutePath = ppath.resolve(PortablePath.root, workspaceRelativePath);
globalList.reject.push(workspaceAbsolutePath);
};
maybeRejectPath(ppath.resolve(project.cwd, configuration.get(`lockfileFilename`)));
maybeRejectPath(configuration.get(`bstatePath`));
maybeRejectPath(configuration.get(`cacheFolder`));
maybeRejectPath(configuration.get(`globalFolder`));
maybeRejectPath(configuration.get(`virtualFolder`));
maybeRejectPath(configuration.get(`yarnPath`));
await configuration.triggerHook((hooks: StageHooks) => {
return hooks.populateYarnPaths;
}, project, (path: PortablePath | null) => {
maybeRejectPath(path);
});
// All child workspaces are ignored
for (const otherWorkspace of project.workspaces) {
const rel = ppath.relative(workspace.cwd, otherWorkspace.cwd);
const parentFetch = ppath.isAbsolute(path)
? {packageFs: new NodeFS(), prefixPath: PortablePath.root, localPath: PortablePath.root}
: await opts.fetcher.fetch(parentLocator, opts);
// If the package fs publicized its "original location" (for example like
// in the case of "file:" packages), we use it to derive the real location.
const effectiveParentFetch = parentFetch.localPath
? {packageFs: new NodeFS(), prefixPath: parentFetch.localPath}
: parentFetch;
// Discard the parent fs unless we really need it to access the files
if (parentFetch !== effectiveParentFetch && parentFetch.releaseFs)
parentFetch.releaseFs();
const generatorFs = effectiveParentFetch.packageFs;
const generatorPath = ppath.resolve(ppath.resolve(generatorFs.getRealPath(), effectiveParentFetch.prefixPath), path);
// Execute the specified script in the temporary directory
const cwd = await this.generatePackage(locator, generatorPath, opts);
// Make sure the script generated the package
if (!xfs.existsSync(ppath.join(cwd, toFilename(`build`))))
throw new Error(`The script should have generated a build directory`);
return await tgzUtils.makeArchiveFromDirectory(ppath.join(cwd, toFilename(`build`)), {
prefixPath: structUtils.getIdentVendorPath(locator),
});
}
? {name: dependencyReference[0], reference: dependencyReference[1]}
: {name: dependencyName, reference: dependencyReference};
const dependencyInformation = getPackageInformationSafe(dependencyLocator);
if (!dependencyInformation.packageLocation) {
throw makeError(
ErrorCode.MISSING_DEPENDENCY,
`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${dependencyLocator.name}@${dependencyLocator.reference} (via "${request}")\nRequired by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuer})\n`,
{request, issuer, dependencyLocator: Object.assign({}, dependencyLocator)},
);
}
// Now that we know which package we should resolve to, we only have to find out the file location
const dependencyLocation = ppath.resolve(runtimeState.basePath, dependencyInformation.packageLocation);
if (subPath) {
unqualifiedPath = ppath.resolve(dependencyLocation, subPath);
} else {
unqualifiedPath = dependencyLocation;
}
}
return ppath.normalize(unqualifiedPath);
};
const parentFetch = ppath.isAbsolute(path)
? {packageFs: new NodeFS(), prefixPath: PortablePath.root, localPath: PortablePath.root}
: await opts.fetcher.fetch(parentLocator, opts);
// If the package fs publicized its "original location" (for example like
// in the case of "file:" packages), we use it to derive the real location.
const effectiveParentFetch = parentFetch.localPath
? {packageFs: new NodeFS(), prefixPath: parentFetch.localPath}
: parentFetch;
// Discard the parent fs unless we really need it to access the files
if (parentFetch !== effectiveParentFetch && parentFetch.releaseFs)
parentFetch.releaseFs();
const sourceFs = effectiveParentFetch.packageFs;
const sourcePath = ppath.resolve(effectiveParentFetch.prefixPath, path);
const sourceBuffer = await sourceFs.readFilePromise(sourcePath);
return await miscUtils.releaseAfterUseAsync(async () => {
return await tgzUtils.convertToZip(sourceBuffer, {
stripComponents: 1,
prefixPath: structUtils.getIdentVendorPath(locator),
});
}, effectiveParentFetch.releaseFs);
}
}
const parentFetch = ppath.isAbsolute(path)
? {packageFs: new NodeFS(), prefixPath: PortablePath.root, localPath: PortablePath.root}
: await opts.fetcher.fetch(parentLocator, opts);
// If the package fs publicized its "original location" (for example like
// in the case of "file:" packages), we use it to derive the real location.
const effectiveParentFetch = parentFetch.localPath
? {packageFs: new NodeFS(), prefixPath: parentFetch.localPath}
: parentFetch;
// Discard the parent fs unless we really need it to access the files
if (parentFetch !== effectiveParentFetch && parentFetch.releaseFs)
parentFetch.releaseFs();
const sourceFs = effectiveParentFetch.packageFs;
const sourcePath = ppath.resolve(effectiveParentFetch.prefixPath, path);
return await miscUtils.releaseAfterUseAsync(async () => {
return await tgzUtils.makeArchiveFromDirectory(sourcePath, {
baseFs: sourceFs,
prefixPath: structUtils.getIdentVendorPath(locator),
});
}, effectiveParentFetch.releaseFs);
}
}
const trackedFiles = localStdout.split(/\r\n|\r|\n/).filter(file => file.length > 0).map(file => ppath.resolve(root, npath.toPortablePath(file)));
async cacheCleanup({cache, report}: InstallOptions) {
const PRESERVED_FILES = new Set([
`.gitignore`,
]);
if (!xfs.existsSync(cache.cwd))
return;
if (!isFolderInside(cache.cwd, this.cwd))
return;
for (const entry of await xfs.readdirPromise(cache.cwd)) {
if (PRESERVED_FILES.has(entry))
continue;
const entryPath = ppath.resolve(cache.cwd, entry);
if (cache.markedFiles.has(entryPath))
continue;
if (cache.immutable) {
report.reportError(MessageName.IMMUTABLE_CACHE, `${this.configuration.format(ppath.basename(entryPath), `magenta`)} appears to be unused and would marked for deletion, but the cache is immutable`);
} else {
report.reportInfo(MessageName.UNUSED_CACHE_ENTRY, `${this.configuration.format(ppath.basename(entryPath), `magenta`)} appears to be unused - removing`);
await xfs.unlinkPromise(entryPath);
}
}
cache.markedFiles.clear();
}
}
private getUnpluggedPath(locator: Locator) {
return ppath.resolve(this.opts.project.configuration.get(`pnpUnpluggedFolder`), structUtils.slugifyLocator(locator));
}
return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => {
return [packageReference, {
packageLocation: ppath.resolve(portablePath, packageInformationData.packageLocation),
packageDependencies: new Map(packageInformationData.packageDependencies),
linkType: packageInformationData.linkType,
}] as [string | null, PackageInformation];
}))] as [string | null, PackageStore];
}));