const log = require('./log-shim') async function otplease (npm, opts, fn) { try { return await fn(opts) } catch (err) { if (!process.stdin.isTTY || !process.stdout.isTTY) { throw err } if (isWebOTP(err)) { log.disableProgress() const webAuth = require('./web-auth') const openUrlPrompt = require('./open-url-prompt') const openerPromise = (url, emitter) => openUrlPrompt( npm, url, 'Authenticate your account at', 'Press ENTER to open in the browser...', emitter ) const otp = await webAuth(openerPromise, err.body.authUrl, err.body.doneUrl, opts) return await fn({ ...opts, otp }) } if (isClassicOTP(err)) { const readUserInfo = require('./read-user-info.js') const otp = await readUserInfo.otp('This operation requires a one-time password.\nEnter OTP:') return await fn({ ...opts, otp }) } throw err } } function isWebOTP (err) { if (!err.code === 'EOTP' || !err.body) { return false } return err.body.authUrl && err.body.doneUrl } function isClassicOTP (err) { return err.code === 'EOTP' || (err.code === 'E401' && /one-time pass/.test(err.body)) } module.exports = otplease
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
completion | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
ansi-trim.js | File | 173 B | 0644 |
|
audit-error.js | File | 978 B | 0644 |
|
cmd-list.js | File | 2.46 KB | 0644 |
|
completion.sh | File | 1.85 KB | 0755 |
|
did-you-mean.js | File | 1.46 KB | 0644 |
|
display.js | File | 2.84 KB | 0644 |
|
error-message.js | File | 12.64 KB | 0644 |
|
exit-handler.js | File | 6.77 KB | 0644 |
|
explain-dep.js | File | 3.73 KB | 0644 |
|
explain-eresolve.js | File | 2.56 KB | 0644 |
|
format-bytes.js | File | 629 B | 0644 |
|
format-search-stream.js | File | 3.93 KB | 0644 |
|
get-identity.js | File | 740 B | 0644 |
|
is-windows.js | File | 233 B | 0644 |
|
log-file.js | File | 7.64 KB | 0644 |
|
log-shim.js | File | 1.68 KB | 0644 |
|
npm-usage.js | File | 1.95 KB | 0644 |
|
open-url-prompt.js | File | 1.54 KB | 0644 |
|
open-url.js | File | 1.17 KB | 0644 |
|
otplease.js | File | 1.23 KB | 0644 |
|
ping.js | File | 252 B | 0644 |
|
pulse-till-done.js | File | 412 B | 0644 |
|
queryable.js | File | 9.58 KB | 0644 |
|
read-user-info.js | File | 1.99 KB | 0644 |
|
reify-finish.js | File | 876 B | 0644 |
|
reify-output.js | File | 4.96 KB | 0644 |
|
replace-info.js | File | 807 B | 0644 |
|
tar.js | File | 3.73 KB | 0644 |
|
timers.js | File | 3.18 KB | 0644 |
|
update-notifier.js | File | 4.45 KB | 0644 |
|
validate-lockfile.js | File | 1023 B | 0644 |
|
web-auth.js | File | 558 B | 0644 |
|