/home/techb158/.nvm/versions/node/v16.20.2/lib/node_modules/npm/lib/utils
NameSizeModeActions
completion/-0755rm
config/-0755rm
ansi-trim.js1730644editdlrm
audit-error.js9780644editdlrm
cmd-list.js25190644editdlrm
completion.sh18980755editdlrm
did-you-mean.js14980644editdlrm
display.js29080644editdlrm
error-message.js129450644editdlrm
exit-handler.js69290644editdlrm
explain-dep.js38230644editdlrm
explain-eresolve.js26180644editdlrm
format-bytes.js6290644editdlrm
format-search-stream.js40230644editdlrm
get-identity.js7400644editdlrm
is-windows.js2330644editdlrm
log-file.js78270644editdlrm
log-shim.js17180644editdlrm
npm-usage.js19990644editdlrm
open-url-prompt.js15760644editdlrm
open-url.js12020644editdlrm
otplease.js12610644editdlrm
ping.js2520644editdlrm
pulse-till-done.js4120644editdlrm
queryable.js98070644editdlrm
read-user-info.js20370644editdlrm
reify-finish.js8760644editdlrm
reify-output.js50810644editdlrm
replace-info.js8070644editdlrm
tar.js38190644editdlrm
timers.js32570644editdlrm
update-notifier.js45590644editdlrm
validate-lockfile.js10230644editdlrm
web-auth.js5580644editdlrm
Edit: /home/techb158/.nvm/versions/node/v16.20.2/lib/node_modules/npm/lib/utils/explain-eresolve.js (2618B)
// this is called when an ERESOLVE error is caught in the exit-handler, // or when there's a log.warn('eresolve', msg, explanation), to turn it // into a human-intelligible explanation of what's wrong and how to fix. const { writeFileSync } = require('fs') const { explainEdge, explainNode, printNode } = require('./explain-dep.js') // expl is an explanation object that comes from Arborist. It looks like: // Depth is how far we want to want to descend into the object making a report. // The full report (ie, depth=Infinity) is always written to the cache folder // at ${cache}/eresolve-report.txt along with full json. const explain = (expl, color, depth) => { const { edge, dep, current, peerConflict, currentEdge } = expl const out = [] const whileInstalling = dep && dep.whileInstalling || current && current.whileInstalling || edge && edge.from && edge.from.whileInstalling if (whileInstalling) { out.push('While resolving: ' + printNode(whileInstalling, color)) } // it "should" be impossible for an ERESOLVE explanation to lack both // current and currentEdge, but better to have a less helpful error // than a crashing failure. if (current) { out.push('Found: ' + explainNode(current, depth, color)) } else if (peerConflict && peerConflict.current) { out.push('Found: ' + explainNode(peerConflict.current, depth, color)) } else if (currentEdge) { out.push('Found: ' + explainEdge(currentEdge, depth, color)) } else /* istanbul ignore else - should always have one */ if (edge) { out.push('Found: ' + explainEdge(edge, depth, color)) } out.push('\nCould not resolve dependency:\n' + explainEdge(edge, depth, color)) if (peerConflict) { const heading = '\nConflicting peer dependency:' const pc = explainNode(peerConflict.peer, depth, color) out.push(heading + ' ' + pc) } return out.join('\n') } // generate a full verbose report and tell the user how to fix it const report = (expl, color, fullReport) => { const orNoStrict = expl.strictPeerDeps ? '--no-strict-peer-deps, ' : '' const fix = `Fix the upstream dependency conflict, or retry this command with ${orNoStrict}--force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.` writeFileSync(fullReport, `# npm resolution error report ${new Date().toISOString()} ${explain(expl, false, Infinity)} ${fix} Raw JSON explanation object: ${JSON.stringify(expl, null, 2)} `, 'utf8') return explain(expl, color, 4) + `\n\n${fix}\n\nSee ${fullReport} for a full report.` } module.exports = { explain, report, }