import path from 'node:path' import type { ParseWantedDependencyResult } from '@pnpm/resolving.parse-wanted-dependency' export interface GetEditDirOptions { modulesDir: string } export function getEditDirPath (param: string, patchedDep: ParseWantedDependencyResult, opts: GetEditDirOptions): string { const editDirName = getEditDirNameFromParsedDep(patchedDep) ?? param return path.join(opts.modulesDir, '.pnpm_patches', editDirName) } function getEditDirNameFromParsedDep (patchedDep: ParseWantedDependencyResult): string | undefined { if (patchedDep.alias && patchedDep.bareSpecifier) { const bareSpecifier = patchedDep.bareSpecifier.replace(/[\\/:*?"<>|]+/g, '+') return `${patchedDep.alias}@${bareSpecifier}` } if (patchedDep.alias) { return patchedDep.alias } return undefined }