PATH:
usr
/
lib
/
node_modules
/
npm
/
lib
/
utils
const { distance } = require('fastest-levenshtein') const readJson = require('read-package-json-fast') const { commands } = require('./cmd-list.js') const didYouMean = async (npm, path, scmd) => { // const cmd = await npm.cmd(str) const close = commands.filter(cmd => distance(scmd, cmd) < scmd.length * 0.4 && scmd !== cmd) let best = [] for (const str of close) { const cmd = await npm.cmd(str) best.push(` npm ${str} # ${cmd.description}`) } // We would already be suggesting this in `npm x` so omit them here const runScripts = ['stop', 'start', 'test', 'restart'] try { const { bin, scripts } = await readJson(`${path}/package.json`) best = best.concat( Object.keys(scripts || {}) .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4 && !runScripts.includes(cmd)) .map(str => ` npm run ${str} # run the "${str}" package script`), Object.keys(bin || {}) .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4) /* eslint-disable-next-line max-len */ .map(str => ` npm exec ${str} # run the "${str}" command from either this or a remote npm package`) ) } catch (_) { // gracefully ignore not being in a folder w/ a package.json } if (best.length === 0) { return '' } const suggestion = best.length === 1 ? `\n\nDid you mean this?\n${best[0]}` : `\n\nDid you mean one of these?\n${best.slice(0, 3).join('\n')}` return suggestion } module.exports = didYouMean
[-] ping.js
[edit]
[-] explain-eresolve.js
[edit]
[-] completion.sh
[edit]
[-] otplease.js
[edit]
[-] log-file.js
[edit]
[-] audit-error.js
[edit]
[-] format-search-stream.js
[edit]
[-] exit-handler.js
[edit]
[-] pulse-till-done.js
[edit]
[-] tar.js
[edit]
[-] open-url.js
[edit]
[-] web-auth.js
[edit]
[+]
..
[-] reify-finish.js
[edit]
[-] read-user-info.js
[edit]
[-] ansi-trim.js
[edit]
[-] get-identity.js
[edit]
[-] explain-dep.js
[edit]
[-] open-url-prompt.js
[edit]
[-] replace-info.js
[edit]
[-] display.js
[edit]
[-] reify-output.js
[edit]
[-] validate-lockfile.js
[edit]
[-] is-windows.js
[edit]
[-] cmd-list.js
[edit]
[-] format-bytes.js
[edit]
[+]
config
[+]
completion
[-] log-shim.js
[edit]
[-] did-you-mean.js
[edit]
[-] queryable.js
[edit]
[-] timers.js
[edit]
[-] npm-usage.js
[edit]
[-] error-message.js
[edit]
[-] update-notifier.js
[edit]