UNPKG

372 kBSource Map (JSON)View Raw
1{"version":3,"file":"bin.js","sources":["../node_modules/mri/lib/index.mjs","../node_modules/globrex/index.js","../node_modules/globalyzer/src/index.js","../node_modules/tiny-glob/sync.js","../node_modules/fuzzysearch/index.js","../node_modules/ansi-colors/symbols.js","../node_modules/ansi-colors/index.js","../node_modules/enquirer/lib/utils.js","../node_modules/enquirer/lib/combos.js","../node_modules/enquirer/lib/keypress.js","../node_modules/enquirer/lib/timer.js","../node_modules/enquirer/lib/state.js","../node_modules/enquirer/lib/styles.js","../node_modules/enquirer/lib/symbols.js","../node_modules/enquirer/lib/theme.js","../node_modules/enquirer/lib/ansi.js","../node_modules/enquirer/lib/prompt.js","../node_modules/enquirer/lib/roles.js","../node_modules/enquirer/lib/types/array.js","../node_modules/enquirer/lib/prompts/select.js","../node_modules/enquirer/lib/prompts/autocomplete.js","../node_modules/enquirer/lib/placeholder.js","../node_modules/enquirer/lib/prompts/form.js","../node_modules/enquirer/lib/types/auth.js","../node_modules/enquirer/lib/prompts/basicauth.js","../node_modules/enquirer/lib/types/boolean.js","../node_modules/enquirer/lib/prompts/confirm.js","../node_modules/enquirer/lib/prompts/editable.js","../node_modules/enquirer/lib/types/string.js","../node_modules/enquirer/lib/completer.js","../node_modules/enquirer/lib/prompts/input.js","../node_modules/enquirer/lib/prompts/invisible.js","../node_modules/enquirer/lib/prompts/list.js","../node_modules/enquirer/lib/prompts/multiselect.js","../node_modules/enquirer/lib/types/number.js","../node_modules/enquirer/lib/prompts/numeral.js","../node_modules/enquirer/lib/prompts/password.js","../node_modules/enquirer/lib/prompts/scale.js","../node_modules/enquirer/lib/interpolate.js","../node_modules/enquirer/lib/prompts/snippet.js","../node_modules/enquirer/lib/prompts/sort.js","../node_modules/enquirer/lib/prompts/survey.js","../node_modules/enquirer/lib/prompts/text.js","../node_modules/enquirer/lib/prompts/toggle.js","../node_modules/enquirer/lib/prompts/quiz.js","../node_modules/enquirer/lib/prompts/index.js","../node_modules/enquirer/lib/types/index.js","../node_modules/enquirer/index.js","../src/bin.js"],"sourcesContent":["function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n","const isWin = process.platform === 'win32';\nconst SEP = isWin ? `\\\\\\\\+` : `\\\\/`;\nconst SEP_ESC = isWin ? `\\\\\\\\` : `/`;\nconst GLOBSTAR = `((?:[^/]*(?:/|$))*)`;\nconst WILDCARD = `([^/]*)`;\nconst GLOBSTAR_SEGMENT = `((?:[^${SEP_ESC}]*(?:${SEP_ESC}|$))*)`;\nconst WILDCARD_SEGMENT = `([^${SEP_ESC}]*)`;\n\n/**\n * Convert any glob pattern to a JavaScript Regexp object\n * @param {String} glob Glob pattern to convert\n * @param {Object} opts Configuration object\n * @param {Boolean} [opts.extended=false] Support advanced ext globbing\n * @param {Boolean} [opts.globstar=false] Support globstar\n * @param {Boolean} [opts.strict=true] be laissez faire about mutiple slashes\n * @param {Boolean} [opts.filepath=''] Parse as filepath for extra path related features\n * @param {String} [opts.flags=''] RegExp globs\n * @returns {Object} converted object with string, segments and RegExp object\n */\nfunction globrex(glob, {extended = false, globstar = false, strict = false, filepath = false, flags = ''} = {}) {\n let regex = '';\n let segment = '';\n let path = { regex: '', segments: [] };\n\n // If we are doing extended matching, this boolean is true when we are inside\n // a group (eg {*.html,*.js}), and false otherwise.\n let inGroup = false;\n let inRange = false;\n\n // extglob stack. Keep track of scope\n const ext = [];\n\n // Helper function to build string and segments\n function add(str, {split, last, only}={}) {\n if (only !== 'path') regex += str;\n if (filepath && only !== 'regex') {\n path.regex += (str === '\\\\/' ? SEP : str);\n if (split) {\n if (last) segment += str;\n if (segment !== '') {\n if (!flags.includes('g')) segment = `^${segment}$`; // change it 'includes'\n path.segments.push(new RegExp(segment, flags));\n }\n segment = '';\n } else {\n segment += str;\n }\n }\n }\n\n let c, n;\n for (let i = 0; i < glob.length; i++) {\n c = glob[i];\n n = glob[i + 1];\n\n if (['\\\\', '$', '^', '.', '='].includes(c)) {\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '/') {\n add(`\\\\${c}`, {split: true});\n if (n === '/' && !strict) regex += '?';\n continue;\n }\n\n if (c === '(') {\n if (ext.length) {\n add(c);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === ')') {\n if (ext.length) {\n add(c);\n let type = ext.pop();\n if (type === '@') {\n add('{1}');\n } else if (type === '!') {\n add('([^\\/]*)');\n } else {\n add(type);\n }\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n \n if (c === '|') {\n if (ext.length) {\n add(c);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '+') {\n if (n === '(' && extended) {\n ext.push(c);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '@' && extended) {\n if (n === '(') {\n ext.push(c);\n continue;\n }\n }\n\n if (c === '!') {\n if (extended) {\n if (inRange) {\n add('^');\n continue\n }\n if (n === '(') {\n ext.push(c);\n add('(?!');\n i++;\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '?') {\n if (extended) {\n if (n === '(') {\n ext.push(c);\n } else {\n add('.');\n }\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '[') {\n if (inRange && n === ':') {\n i++; // skip [\n let value = '';\n while(glob[++i] !== ':') value += glob[i];\n if (value === 'alnum') add('(\\\\w|\\\\d)');\n else if (value === 'space') add('\\\\s');\n else if (value === 'digit') add('\\\\d');\n i++; // skip last ]\n continue;\n }\n if (extended) {\n inRange = true;\n add(c);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === ']') {\n if (extended) {\n inRange = false;\n add(c);\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '{') {\n if (extended) {\n inGroup = true;\n add('(');\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '}') {\n if (extended) {\n inGroup = false;\n add(')');\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === ',') {\n if (inGroup) {\n add('|');\n continue;\n }\n add(`\\\\${c}`);\n continue;\n }\n\n if (c === '*') {\n if (n === '(' && extended) {\n ext.push(c);\n continue;\n }\n // Move over all consecutive \"*\"'s.\n // Also store the previous and next characters\n let prevChar = glob[i - 1];\n let starCount = 1;\n while (glob[i + 1] === '*') {\n starCount++;\n i++;\n }\n let nextChar = glob[i + 1];\n if (!globstar) {\n // globstar is disabled, so treat any number of \"*\" as one\n add('.*');\n } else {\n // globstar is enabled, so determine if this is a globstar segment\n let isGlobstar =\n starCount > 1 && // multiple \"*\"'s\n (prevChar === '/' || prevChar === undefined) && // from the start of the segment\n (nextChar === '/' || nextChar === undefined); // to the end of the segment\n if (isGlobstar) {\n // it's a globstar, so match zero or more path segments\n add(GLOBSTAR, {only:'regex'});\n add(GLOBSTAR_SEGMENT, {only:'path', last:true, split:true});\n i++; // move over the \"/\"\n } else {\n // it's not a globstar, so only match one path segment\n add(WILDCARD, {only:'regex'});\n add(WILDCARD_SEGMENT, {only:'path'});\n }\n }\n continue;\n }\n\n add(c);\n }\n\n\n // When regexp 'g' flag is specified don't\n // constrain the regular expression with ^ & $\n if (!flags.includes('g')) {\n regex = `^${regex}$`;\n segment = `^${segment}$`;\n if (filepath) path.regex = `^${path.regex}$`;\n }\n\n const result = {regex: new RegExp(regex, flags)};\n\n // Push the last segment\n if (filepath) {\n path.segments.push(new RegExp(segment, flags));\n path.regex = new RegExp(path.regex, flags);\n path.globstar = new RegExp(!flags.includes('g') ? `^${GLOBSTAR_SEGMENT}$` : GLOBSTAR_SEGMENT, flags);\n result.path = path;\n }\n\n return result;\n}\n\nmodule.exports = globrex;\n","'use strict';\n\nconst os = require('os');\nconst path = require('path');\nconst isWin = os.platform() === 'win32';\n\nconst CHARS = { '{': '}', '(': ')', '[': ']'};\nconst STRICT = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\)|(\\\\).|([@?!+*]\\(.*\\)))/;\nconst RELAXED = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\n/**\n * Detect if a string cointains glob\n * @param {String} str Input string\n * @param {Object} [options] Configuration object\n * @param {Boolean} [options.strict=true] Use relaxed regex if true\n * @returns {Boolean} true if string contains glob\n */\nfunction isglob(str, { strict = true } = {}) {\n if (str === '') return false;\n let match, rgx = strict ? STRICT : RELAXED;\n\n while ((match = rgx.exec(str))) {\n if (match[2]) return true;\n let idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n let open = match[1];\n let close = open ? CHARS[open] : null;\n if (open && close) {\n let n = str.indexOf(close, idx);\n if (n !== -1) idx = n + 1;\n }\n\n str = str.slice(idx);\n }\n return false;\n}\n\n\n/**\n * Find the static part of a glob-path,\n * split path and return path part\n * @param {String} str Path/glob string\n * @returns {String} static path section of glob\n */\nfunction parent(str, { strict = false } = {}) {\n if (isWin && str.includes('/'))\n str = str.split('\\\\').join('/');\n\n\t// special case for strings ending in enclosure containing path separator\n\tif (/[\\{\\[].*[\\/]*.*[\\}\\]]$/.test(str)) str += '/';\n\n\t// preserves full path in case of trailing path separator\n\tstr += 'a';\n\n\tdo {str = path.dirname(str)}\n\twhile (isglob(str, {strict}) || /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/.test(str));\n\n\t// remove escape chars and return result\n\treturn str.replace(/\\\\([\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g, '$1');\n};\n\n\n/**\n * Parse a glob path, and split it by static/glob part\n * @param {String} pattern String path\n * @param {Object} [opts] Options\n * @param {Object} [opts.strict=false] Use strict parsing\n * @returns {Object} object with parsed path\n */\nfunction globalyzer(pattern, opts = {}) {\n let base = parent(pattern, opts);\n let isGlob = isglob(pattern, opts);\n let glob;\n\n if (base != '.') {\n glob = pattern.substr(base.length);\n if (glob.startsWith('/')) glob = glob.substr(1);\n } else {\n glob = pattern;\n }\n\n if (!isGlob) {\n base = path.dirname(pattern);\n glob = base !== '.' ? pattern.substr(base.length) : pattern;\n }\n\n if (glob.startsWith('./')) glob = glob.substr(2);\n if (glob.startsWith('/')) glob = glob.substr(1);\n\n return { base, glob, isGlob };\n}\n\n\nmodule.exports = globalyzer;\n","const fs = require('fs');\nconst globrex = require('globrex');\nconst globalyzer = require('globalyzer');\nconst { join, resolve, relative } = require('path');\nconst isHidden = /(^|[\\\\\\/])\\.[^\\\\\\/\\.]/g;\n\nlet CACHE = {};\n\nfunction walk(output, prefix, lexer, opts, dirname='', level=0) {\n const rgx = lexer.segments[level];\n const dir = resolve(opts.cwd, prefix, dirname);\n const files = fs.readdirSync(dir);\n const { dot, filesOnly } = opts;\n\n let i=0, len=files.length, file;\n let fullpath, relpath, stats, isMatch;\n\n for (; i < len; i++) {\n fullpath = join(dir, file=files[i]);\n relpath = dirname ? join(dirname, file) : file;\n if (!dot && isHidden.test(relpath)) continue;\n isMatch = lexer.regex.test(relpath);\n\n if ((stats=CACHE[relpath]) === void 0) {\n CACHE[relpath] = stats = fs.lstatSync(fullpath);\n }\n\n if (!stats.isDirectory()) {\n isMatch && output.push(relative(opts.cwd, fullpath));\n continue;\n }\n\n if (rgx && !rgx.test(file)) continue;\n !filesOnly && isMatch && output.push(join(prefix, relpath));\n\n walk(output, prefix, lexer, opts, relpath, rgx && rgx.toString() !== lexer.globstar && level + 1);\n }\n}\n\n/**\n * Find files using bash-like globbing.\n * All paths are normalized compared to node-glob.\n * @param {String} str Glob string\n * @param {String} [options.cwd='.'] Current working directory\n * @param {Boolean} [options.dot=false] Include dotfile matches\n * @param {Boolean} [options.absolute=false] Return absolute paths\n * @param {Boolean} [options.filesOnly=false] Do not include folders if true\n * @param {Boolean} [options.flush=false] Reset cache object\n * @returns {Array} array containing matching files\n */\nmodule.exports = function (str, opts={}) {\n if (!str) return [];\n\n let glob = globalyzer(str);\n\n opts.cwd = opts.cwd || '.';\n\n if (!glob.isGlob) {\n try {\n let resolved = resolve(opts.cwd, str);\n let dirent = fs.statSync(resolved);\n if (opts.filesOnly && !dirent.isFile()) return [];\n\n return opts.absolute ? [resolved] : [str];\n } catch (err) {\n if (err.code != 'ENOENT') throw err;\n\n return [];\n }\n }\n\n if (opts.flush) CACHE = {};\n\n let matches = [];\n const { path } = globrex(glob.glob, { filepath:true, globstar:true, extended:true });\n\n path.globstar = path.globstar.toString();\n walk(matches, glob.base, path, opts, '.', 0);\n\n return opts.absolute ? matches.map(x => resolve(opts.cwd, x)) : matches;\n};\n","'use strict';\n\nfunction fuzzysearch (needle, haystack) {\n var tlen = haystack.length;\n var qlen = needle.length;\n if (qlen > tlen) {\n return false;\n }\n if (qlen === tlen) {\n return needle === haystack;\n }\n outer: for (var i = 0, j = 0; i < qlen; i++) {\n var nch = needle.charCodeAt(i);\n while (j < tlen) {\n if (haystack.charCodeAt(j++) === nch) {\n continue outer;\n }\n }\n return false;\n }\n return true;\n}\n\nmodule.exports = fuzzysearch;\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","'use strict';\n\nconst toString = Object.prototype.toString;\nconst colors = require('ansi-colors');\nlet called = false;\nlet fns = [];\n\nconst complements = {\n 'yellow': 'blue',\n 'cyan': 'red',\n 'green': 'magenta',\n 'black': 'white',\n 'blue': 'yellow',\n 'red': 'cyan',\n 'magenta': 'green',\n 'white': 'black'\n};\n\nexports.longest = (arr, prop) => {\n return arr.reduce((a, v) => Math.max(a, prop ? v[prop].length : v.length), 0);\n};\n\nexports.hasColor = str => !!str && colors.hasColor(str);\n\nconst isObject = exports.isObject = val => {\n return val !== null && typeof val === 'object' && !Array.isArray(val);\n};\n\nexports.nativeType = val => {\n return toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nexports.isAsyncFn = val => {\n return exports.nativeType(val) === 'asyncfunction';\n};\n\nexports.isPrimitive = val => {\n return val != null && typeof val !== 'object' && typeof val !== 'function';\n};\n\nexports.resolve = (context, value, ...rest) => {\n if (typeof value === 'function') {\n return value.call(context, ...rest);\n }\n return value;\n};\n\nexports.scrollDown = (choices = []) => [...choices.slice(1), choices[0]];\nexports.scrollUp = (choices = []) => [choices.pop(), ...choices];\n\nexports.reorder = (arr = []) => {\n let res = arr.slice();\n res.sort((a, b) => {\n if (a.index > b.index) return 1;\n if (a.index < b.index) return -1;\n return 0;\n });\n return res;\n};\n\nexports.swap = (arr, index, pos) => {\n let len = arr.length;\n let idx = pos === len ? 0 : pos < 0 ? len - 1 : pos;\n let choice = arr[index];\n arr[index] = arr[idx];\n arr[idx] = choice;\n};\n\nexports.width = (stream, fallback = 80) => {\n let columns = (stream && stream.columns) ? stream.columns : fallback;\n if (stream && typeof stream.getWindowSize === 'function') {\n columns = stream.getWindowSize()[0];\n }\n if (process.platform === 'win32') {\n return columns - 1;\n }\n return columns;\n};\n\nexports.height = (stream, fallback = 20) => {\n let rows = (stream && stream.rows) ? stream.rows : fallback;\n if (stream && typeof stream.getWindowSize === 'function') {\n rows = stream.getWindowSize()[1];\n }\n return rows;\n};\n\nexports.wordWrap = (str, options = {}) => {\n if (!str) return str;\n\n if (typeof options === 'number') {\n options = { width: options };\n }\n\n let { indent = '', newline = ('\\n' + indent), width = 80 } = options;\n let spaces = (newline + indent).match(/[^\\S\\n]/g) || [];\n width -= spaces.length;\n let source = `.{1,${width}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`;\n let output = str.trim();\n let regex = new RegExp(source, 'g');\n let lines = output.match(regex) || [];\n lines = lines.map(line => line.replace(/\\n$/, ''));\n if (options.padEnd) lines = lines.map(line => line.padEnd(width, ' '));\n if (options.padStart) lines = lines.map(line => line.padStart(width, ' '));\n return indent + lines.join(newline);\n};\n\nexports.unmute = color => {\n let name = color.stack.find(n => colors.keys.color.includes(n));\n if (name) {\n return colors[name];\n }\n let bg = color.stack.find(n => n.slice(2) === 'bg');\n if (bg) {\n return colors[name.slice(2)];\n }\n return str => str;\n};\n\nexports.pascal = str => str ? str[0].toUpperCase() + str.slice(1) : '';\n\nexports.inverse = color => {\n if (!color || !color.stack) return color;\n let name = color.stack.find(n => colors.keys.color.includes(n));\n if (name) {\n let col = colors['bg' + exports.pascal(name)];\n return col ? col.black : color;\n }\n let bg = color.stack.find(n => n.slice(0, 2) === 'bg');\n if (bg) {\n return colors[bg.slice(2).toLowerCase()] || color;\n }\n return colors.none;\n};\n\nexports.complement = color => {\n if (!color || !color.stack) return color;\n let name = color.stack.find(n => colors.keys.color.includes(n));\n let bg = color.stack.find(n => n.slice(0, 2) === 'bg');\n if (name && !bg) {\n return colors[complements[name] || name];\n }\n if (bg) {\n let lower = bg.slice(2).toLowerCase();\n let comp = complements[lower];\n if (!comp) return color;\n return colors['bg' + exports.pascal(comp)] || color;\n }\n return colors.none;\n};\n\nexports.meridiem = date => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm = hours >= 12 ? 'pm' : 'am';\n hours = hours % 12;\n let hrs = hours === 0 ? 12 : hours;\n let min = minutes < 10 ? '0' + minutes : minutes;\n return hrs + ':' + min + ' ' + ampm;\n};\n\n/**\n * Set a value on the given object.\n * @param {Object} obj\n * @param {String} prop\n * @param {any} value\n */\n\nexports.set = (obj = {}, prop = '', val) => {\n return prop.split('.').reduce((acc, k, i, arr) => {\n let value = arr.length - 1 > i ? (acc[k] || {}) : val;\n if (!exports.isObject(value) && i < arr.length - 1) value = {};\n return (acc[k] = value);\n }, obj);\n};\n\n/**\n * Get a value from the given object.\n * @param {Object} obj\n * @param {String} prop\n */\n\nexports.get = (obj = {}, prop = '', fallback) => {\n let value = obj[prop] == null\n ? prop.split('.').reduce((acc, k) => acc && acc[k], obj)\n : obj[prop];\n return value == null ? fallback : value;\n};\n\nexports.mixin = (target, b) => {\n if (!isObject(target)) return b;\n if (!isObject(b)) return target;\n for (let key of Object.keys(b)) {\n let desc = Object.getOwnPropertyDescriptor(b, key);\n if (desc.hasOwnProperty('value')) {\n if (target.hasOwnProperty(key) && isObject(desc.value)) {\n let existing = Object.getOwnPropertyDescriptor(target, key);\n if (isObject(existing.value)) {\n target[key] = exports.merge({}, target[key], b[key]);\n } else {\n Reflect.defineProperty(target, key, desc);\n }\n } else {\n Reflect.defineProperty(target, key, desc);\n }\n } else {\n Reflect.defineProperty(target, key, desc);\n }\n }\n return target;\n};\n\nexports.merge = (...args) => {\n let target = {};\n for (let ele of args) exports.mixin(target, ele);\n return target;\n};\n\nexports.mixinEmitter = (obj, emitter) => {\n let proto = emitter.constructor.prototype;\n for (let key of Object.keys(proto)) {\n let val = proto[key];\n if (typeof val === 'function') {\n exports.define(obj, key, val.bind(emitter));\n } else {\n exports.define(obj, key, val);\n }\n }\n};\n\nexports.onExit = callback => {\n const onExit = (quit, code) => {\n if (called) return;\n\n called = true;\n fns.forEach(fn => fn());\n\n if (quit === true) {\n process.exit(128 + code);\n }\n };\n\n if (fns.length === 0) {\n process.once('SIGTERM', onExit.bind(null, true, 15));\n process.once('SIGINT', onExit.bind(null, true, 2));\n process.once('exit', onExit);\n }\n\n fns.push(callback);\n};\n\nexports.define = (obj, key, value) => {\n Reflect.defineProperty(obj, key, { value });\n};\n\nexports.defineExport = (obj, key, fn) => {\n let custom;\n Reflect.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n set(val) {\n custom = val;\n },\n get() {\n return custom ? custom() : fn();\n }\n });\n};\n","'use strict';\n\n/**\n * Actions are mappings from keypress event names to method names\n * in the prompts.\n */\n\nexports.ctrl = {\n a: 'first',\n b: 'backward',\n c: 'cancel',\n d: 'deleteForward',\n e: 'last',\n f: 'forward',\n g: 'reset',\n i: 'tab',\n k: 'cutForward',\n l: 'reset',\n n: 'newItem',\n m: 'cancel',\n j: 'submit',\n p: 'search',\n r: 'remove',\n s: 'save',\n u: 'undo',\n w: 'cutLeft',\n x: 'toggleCursor',\n v: 'paste'\n};\n\nexports.shift = {\n up: 'shiftUp',\n down: 'shiftDown',\n left: 'shiftLeft',\n right: 'shiftRight',\n tab: 'prev'\n};\n\nexports.fn = {\n up: 'pageUp',\n down: 'pageDown',\n left: 'pageLeft',\n right: 'pageRight',\n delete: 'deleteForward'\n};\n\n// <alt> on Windows\nexports.option = {\n b: 'backward',\n f: 'forward',\n d: 'cutRight',\n left: 'cutLeft',\n up: 'altUp',\n down: 'altDown'\n};\n\nexports.keys = {\n pageup: 'pageUp', // <fn>+<up> (mac), <Page Up> (windows)\n pagedown: 'pageDown', // <fn>+<down> (mac), <Page Down> (windows)\n home: 'home', // <fn>+<left> (mac), <home> (windows)\n end: 'end', // <fn>+<right> (mac), <end> (windows)\n cancel: 'cancel',\n delete: 'deleteForward',\n backspace: 'delete',\n down: 'down',\n enter: 'submit',\n escape: 'cancel',\n left: 'left',\n space: 'space',\n number: 'number',\n return: 'submit',\n right: 'right',\n tab: 'next',\n up: 'up'\n};\n","'use strict';\n\nconst readline = require('readline');\nconst combos = require('./combos');\n\n/* eslint-disable no-control-regex */\nconst metaKeyCodeRe = /^(?:\\x1b)([a-zA-Z0-9])$/;\nconst fnKeyRe = /^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/;\nconst keyName = {\n /* xterm/gnome ESC O letter */\n 'OP': 'f1',\n 'OQ': 'f2',\n 'OR': 'f3',\n 'OS': 'f4',\n /* xterm/rxvt ESC [ number ~ */\n '[11~': 'f1',\n '[12~': 'f2',\n '[13~': 'f3',\n '[14~': 'f4',\n /* from Cygwin and used in libuv */\n '[[A': 'f1',\n '[[B': 'f2',\n '[[C': 'f3',\n '[[D': 'f4',\n '[[E': 'f5',\n /* common */\n '[15~': 'f5',\n '[17~': 'f6',\n '[18~': 'f7',\n '[19~': 'f8',\n '[20~': 'f9',\n '[21~': 'f10',\n '[23~': 'f11',\n '[24~': 'f12',\n /* xterm ESC [ letter */\n '[A': 'up',\n '[B': 'down',\n '[C': 'right',\n '[D': 'left',\n '[E': 'clear',\n '[F': 'end',\n '[H': 'home',\n /* xterm/gnome ESC O letter */\n 'OA': 'up',\n 'OB': 'down',\n 'OC': 'right',\n 'OD': 'left',\n 'OE': 'clear',\n 'OF': 'end',\n 'OH': 'home',\n /* xterm/rxvt ESC [ number ~ */\n '[1~': 'home',\n '[2~': 'insert',\n '[3~': 'delete',\n '[4~': 'end',\n '[5~': 'pageup',\n '[6~': 'pagedown',\n /* putty */\n '[[5~': 'pageup',\n '[[6~': 'pagedown',\n /* rxvt */\n '[7~': 'home',\n '[8~': 'end',\n /* rxvt keys with modifiers */\n '[a': 'up',\n '[b': 'down',\n '[c': 'right',\n '[d': 'left',\n '[e': 'clear',\n\n '[2$': 'insert',\n '[3$': 'delete',\n '[5$': 'pageup',\n '[6$': 'pagedown',\n '[7$': 'home',\n '[8$': 'end',\n\n 'Oa': 'up',\n 'Ob': 'down',\n 'Oc': 'right',\n 'Od': 'left',\n 'Oe': 'clear',\n\n '[2^': 'insert',\n '[3^': 'delete',\n '[5^': 'pageup',\n '[6^': 'pagedown',\n '[7^': 'home',\n '[8^': 'end',\n /* misc. */\n '[Z': 'tab',\n}\n\nfunction isShiftKey(code) {\n return ['[a', '[b', '[c', '[d', '[e', '[2$', '[3$', '[5$', '[6$', '[7$', '[8$', '[Z'].includes(code)\n}\n\nfunction isCtrlKey(code) {\n return [ 'Oa', 'Ob', 'Oc', 'Od', 'Oe', '[2^', '[3^', '[5^', '[6^', '[7^', '[8^'].includes(code)\n}\n\nconst keypress = (s = '', event = {}) => {\n let parts;\n let key = {\n name: event.name,\n ctrl: false,\n meta: false,\n shift: false,\n option: false,\n sequence: s,\n raw: s,\n ...event\n };\n\n if (Buffer.isBuffer(s)) {\n if (s[0] > 127 && s[1] === void 0) {\n s[0] -= 128;\n s = '\\x1b' + String(s);\n } else {\n s = String(s);\n }\n } else if (s !== void 0 && typeof s !== 'string') {\n s = String(s);\n } else if (!s) {\n s = key.sequence || '';\n }\n\n key.sequence = key.sequence || s || key.name;\n\n if (s === '\\r') {\n // carriage return\n key.raw = void 0;\n key.name = 'return';\n } else if (s === '\\n') {\n // enter, should have been called linefeed\n key.name = 'enter';\n } else if (s === '\\t') {\n // tab\n key.name = 'tab';\n } else if (s === '\\b' || s === '\\x7f' || s === '\\x1b\\x7f' || s === '\\x1b\\b') {\n // backspace or ctrl+h\n key.name = 'backspace';\n key.meta = s.charAt(0) === '\\x1b';\n } else if (s === '\\x1b' || s === '\\x1b\\x1b') {\n // escape key\n key.name = 'escape';\n key.meta = s.length === 2;\n } else if (s === ' ' || s === '\\x1b ') {\n key.name = 'space';\n key.meta = s.length === 2;\n } else if (s <= '\\x1a') {\n // ctrl+letter\n key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1);\n key.ctrl = true;\n } else if (s.length === 1 && s >= '0' && s <= '9') {\n // number\n key.name = 'number';\n } else if (s.length === 1 && s >= 'a' && s <= 'z') {\n // lowercase letter\n key.name = s;\n } else if (s.length === 1 && s >= 'A' && s <= 'Z') {\n // shift+letter\n key.name = s.toLowerCase();\n key.shift = true;\n } else if ((parts = metaKeyCodeRe.exec(s))) {\n // meta+character key\n key.meta = true;\n key.shift = /^[A-Z]$/.test(parts[1]);\n } else if ((parts = fnKeyRe.exec(s))) {\n let segs = [...s];\n\n if (segs[0] === '\\u001b' && segs[1] === '\\u001b') {\n key.option = true;\n }\n\n // ansi escape sequence\n // reassemble the key code leaving out leading \\x1b's,\n // the modifier key bitflag and any meaningless \"1;\" sequence\n let code = [parts[1], parts[2], parts[4], parts[6]].filter(Boolean).join('');\n let modifier = (parts[3] || parts[5] || 1) - 1;\n\n // Parse the key modifier\n key.ctrl = !!(modifier & 4);\n key.meta = !!(modifier & 10);\n key.shift = !!(modifier & 1);\n key.code = code;\n\n key.name = keyName[code];\n key.shift = isShiftKey(code) || key.shift;\n key.ctrl = isCtrlKey(code) || key.ctrl;\n }\n return key;\n};\n\nkeypress.listen = (options = {}, onKeypress) => {\n let { stdin } = options;\n\n if (!stdin || (stdin !== process.stdin && !stdin.isTTY)) {\n throw new Error('Invalid stream passed');\n }\n\n let rl = readline.createInterface({ terminal: true, input: stdin });\n readline.emitKeypressEvents(stdin, rl);\n\n let on = (buf, key) => onKeypress(buf, keypress(buf, key), rl);\n let isRaw = stdin.isRaw;\n\n if (stdin.isTTY) stdin.setRawMode(true);\n stdin.on('keypress', on);\n rl.resume();\n\n let off = () => {\n if (stdin.isTTY) stdin.setRawMode(isRaw);\n stdin.removeListener('keypress', on);\n rl.pause();\n rl.close();\n };\n\n return off;\n};\n\nkeypress.action = (buf, key, customActions) => {\n let obj = { ...combos, ...customActions };\n if (key.ctrl) {\n key.action = obj.ctrl[key.name];\n return key;\n }\n\n if (key.option && obj.option) {\n key.action = obj.option[key.name];\n return key;\n }\n\n if (key.shift) {\n key.action = obj.shift[key.name];\n return key;\n }\n\n key.action = obj.keys[key.name];\n return key;\n};\n\nmodule.exports = keypress;\n","'use strict';\n\nmodule.exports = prompt => {\n prompt.timers = prompt.timers || {};\n\n let timers = prompt.options.timers;\n if (!timers) return;\n\n for (let key of Object.keys(timers)) {\n let opts = timers[key];\n if (typeof opts === 'number') {\n opts = { interval: opts };\n }\n create(prompt, key, opts);\n }\n};\n\nfunction create(prompt, name, options = {}) {\n let timer = prompt.timers[name] = { name, start: Date.now(), ms: 0, tick: 0 };\n let ms = options.interval || 120;\n timer.frames = options.frames || [];\n timer.loading = true;\n\n let interval = setInterval(() => {\n timer.ms = Date.now() - timer.start;\n timer.tick++;\n prompt.render();\n }, ms);\n\n timer.stop = () => {\n timer.loading = false;\n clearInterval(interval);\n };\n\n Reflect.defineProperty(timer, 'interval', { value: interval });\n prompt.once('close', () => timer.stop());\n return timer.stop;\n}\n","'use strict';\n\nconst { define, width } = require('./utils');\n\nclass State {\n constructor(prompt) {\n let options = prompt.options;\n define(this, '_prompt', prompt);\n this.type = prompt.type;\n this.name = prompt.name;\n this.message = '';\n this.header = '';\n this.footer = '';\n this.error = '';\n this.hint = '';\n this.input = '';\n this.cursor = 0;\n this.index = 0;\n this.lines = 0;\n this.tick = 0;\n this.prompt = '';\n this.buffer = '';\n this.width = width(options.stdout || process.stdout);\n Object.assign(this, options);\n this.name = this.name || this.message;\n this.message = this.message || this.name;\n this.symbols = prompt.symbols;\n this.styles = prompt.styles;\n this.required = new Set();\n this.cancelled = false;\n this.submitted = false;\n }\n\n clone() {\n let state = { ...this };\n state.status = this.status;\n state.buffer = Buffer.from(state.buffer);\n delete state.clone;\n return state;\n }\n\n set color(val) {\n this._color = val;\n }\n get color() {\n let styles = this.prompt.styles;\n if (this.cancelled) return styles.cancelled;\n if (this.submitted) return styles.submitted;\n let color = this._color || styles[this.status];\n return typeof color === 'function' ? color : styles.pending;\n }\n\n set loading(value) {\n this._loading = value;\n }\n get loading() {\n if (typeof this._loading === 'boolean') return this._loading;\n if (this.loadingChoices) return 'choices';\n return false;\n }\n\n get status() {\n if (this.cancelled) return 'cancelled';\n if (this.submitted) return 'submitted';\n return 'pending';\n }\n}\n\nmodule.exports = State;\n","'use strict';\n\nconst utils = require('./utils');\nconst colors = require('ansi-colors');\n\nconst styles = {\n default: colors.noop,\n noop: colors.noop,\n\n /**\n * Modifiers\n */\n\n set inverse(custom) {\n this._inverse = custom;\n },\n get inverse() {\n return this._inverse || utils.inverse(this.primary);\n },\n\n set complement(custom) {\n this._complement = custom;\n },\n get complement() {\n return this._complement || utils.complement(this.primary);\n },\n\n /**\n * Main color\n */\n\n primary: colors.cyan,\n\n /**\n * Main palette\n */\n\n success: colors.green,\n danger: colors.magenta,\n strong: colors.bold,\n warning: colors.yellow,\n muted: colors.dim,\n disabled: colors.gray,\n dark: colors.dim.gray,\n underline: colors.underline,\n\n set info(custom) {\n this._info = custom;\n },\n get info() {\n return this._info || this.primary;\n },\n\n set em(custom) {\n this._em = custom;\n },\n get em() {\n return this._em || this.primary.underline;\n },\n\n set heading(custom) {\n this._heading = custom;\n },\n get heading() {\n return this._heading || this.muted.underline;\n },\n\n /**\n * Statuses\n */\n\n set pending(custom) {\n this._pending = custom;\n },\n get pending() {\n return this._pending || this.primary;\n },\n\n set submitted(custom) {\n this._submitted = custom;\n },\n get submitted() {\n return this._submitted || this.success;\n },\n\n set cancelled(custom) {\n this._cancelled = custom;\n },\n get cancelled() {\n return this._cancelled || this.danger;\n },\n\n /**\n * Special styling\n */\n\n set typing(custom) {\n this._typing = custom;\n },\n get typing() {\n return this._typing || this.dim;\n },\n\n set placeholder(custom) {\n this._placeholder = custom;\n },\n get placeholder() {\n return this._placeholder || this.primary.dim;\n },\n\n set highlight(custom) {\n this._highlight = custom;\n },\n get highlight() {\n return this._highlight || this.inverse;\n }\n};\n\nstyles.merge = (options = {}) => {\n if (options.styles && typeof options.styles.enabled === 'boolean') {\n colors.enabled = options.styles.enabled;\n }\n if (options.styles && typeof options.styles.visible === 'boolean') {\n colors.visible = options.styles.visible;\n }\n\n let result = utils.merge({}, styles, options.styles);\n delete result.merge;\n\n for (let key of Object.keys(colors)) {\n if (!result.hasOwnProperty(key)) {\n Reflect.defineProperty(result, key, { get: () => colors[key] });\n }\n }\n\n for (let key of Object.keys(colors.styles)) {\n if (!result.hasOwnProperty(key)) {\n Reflect.defineProperty(result, key, { get: () => colors[key] });\n }\n }\n return result;\n};\n\nmodule.exports = styles;\n","'use strict';\n\nconst isWindows = process.platform === 'win32';\nconst colors = require('ansi-colors');\nconst utils = require('./utils');\n\nconst symbols = {\n ...colors.symbols,\n upDownDoubleArrow: '⇕',\n upDownDoubleArrow2: '⬍',\n upDownArrow: '↕',\n asterisk: '*',\n asterism: '⁂',\n bulletWhite: '◦',\n electricArrow: '⌁',\n ellipsisLarge: '⋯',\n ellipsisSmall: '…',\n fullBlock: '█',\n identicalTo: '≡',\n indicator: colors.symbols.check,\n leftAngle: '‹',\n mark: '※',\n minus: '−',\n multiplication: '×',\n obelus: '÷',\n percent: '%',\n pilcrow: '¶',\n pilcrow2: '❡',\n pencilUpRight: '✐',\n pencilDownRight: '✎',\n pencilRight: '✏',\n plus: '+',\n plusMinus: '±',\n pointRight: '☞',\n rightAngle: '›',\n section: '§',\n hexagon: { off: '⬡', on: '⬢', disabled: '⬢' },\n ballot: { on: '☑', off: '☐', disabled: '☒' },\n stars: { on: '★', off: '☆', disabled: '☆' },\n folder: { on: '▼', off: '▶', disabled: '▶' },\n prefix: {\n pending: colors.symbols.question,\n submitted: colors.symbols.check,\n cancelled: colors.symbols.cross\n },\n separator: {\n pending: colors.symbols.pointerSmall,\n submitted: colors.symbols.middot,\n cancelled: colors.symbols.middot\n },\n radio: {\n off: isWindows ? '( )' : '◯',\n on: isWindows ? '(*)' : '◉',\n disabled: isWindows ? '(|)' : 'Ⓘ'\n },\n numbers: ['⓪', '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳', '㉑', '㉒', '㉓', '㉔', '㉕', '㉖', '㉗', '㉘', '㉙', '㉚', '㉛', '㉜', '㉝', '㉞', '㉟', '㊱', '㊲', '㊳', '㊴', '㊵', '㊶', '㊷', '㊸', '㊹', '㊺', '㊻', '㊼', '㊽', '㊾', '㊿']\n};\n\nsymbols.merge = options => {\n let result = utils.merge({}, colors.symbols, symbols, options.symbols);\n delete result.merge;\n return result;\n};\n\nmodule.exports = symbols;\n\n","'use strict';\n\nconst styles = require('./styles');\nconst symbols = require('./symbols');\nconst utils = require('./utils');\n\nmodule.exports = prompt => {\n prompt.options = utils.merge({}, prompt.options.theme, prompt.options);\n prompt.symbols = symbols.merge(prompt.options);\n prompt.styles = styles.merge(prompt.options);\n};\n","'use strict';\n\nconst isTerm = process.env.TERM_PROGRAM === 'Apple_Terminal';\nconst colors = require('ansi-colors');\nconst utils = require('./utils');\nconst ansi = module.exports = exports;\nconst ESC = '\\u001b[';\nconst BEL = '\\u0007';\nlet hidden = false;\n\nconst code = ansi.code = {\n bell: BEL,\n beep: BEL,\n beginning: `${ESC}G`,\n down: `${ESC}J`,\n esc: ESC,\n getPosition: `${ESC}6n`,\n hide: `${ESC}?25l`,\n line: `${ESC}2K`,\n lineEnd: `${ESC}K`,\n lineStart: `${ESC}1K`,\n restorePosition: ESC + (isTerm ? '8' : 'u'),\n savePosition: ESC + (isTerm ? '7' : 's'),\n screen: `${ESC}2J`,\n show: `${ESC}?25h`,\n up: `${ESC}1J`\n};\n\nconst cursor = ansi.cursor = {\n get hidden() {\n return hidden;\n },\n\n hide() {\n hidden = true;\n return code.hide;\n },\n show() {\n hidden = false;\n return code.show;\n },\n\n forward: (count = 1) => `${ESC}${count}C`,\n backward: (count = 1) => `${ESC}${count}D`,\n nextLine: (count = 1) => `${ESC}E`.repeat(count),\n prevLine: (count = 1) => `${ESC}F`.repeat(count),\n\n up: (count = 1) => count ? `${ESC}${count}A` : '',\n down: (count = 1) => count ? `${ESC}${count}B` : '',\n right: (count = 1) => count ? `${ESC}${count}C` : '',\n left: (count = 1) => count ? `${ESC}${count}D` : '',\n\n to(x, y) {\n return y ? `${ESC}${y + 1};${x + 1}H` : `${ESC}${x + 1}G`;\n },\n\n move(x = 0, y = 0) {\n let res = '';\n res += (x < 0) ? cursor.left(-x) : (x > 0) ? cursor.right(x) : '';\n res += (y < 0) ? cursor.up(-y) : (y > 0) ? cursor.down(y) : '';\n return res;\n },\n\n restore(state = {}) {\n let { after, cursor, initial, input, prompt, size, value } = state;\n initial = utils.isPrimitive(initial) ? String(initial) : '';\n input = utils.isPrimitive(input) ? String(input) : '';\n value = utils.isPrimitive(value) ? String(value) : '';\n\n if (size) {\n let codes = ansi.cursor.up(size) + ansi.cursor.to(prompt.length);\n let diff = input.length - cursor;\n if (diff > 0) {\n codes += ansi.cursor.left(diff);\n }\n return codes;\n }\n\n if (value || after) {\n let pos = (!input && !!initial) ? -initial.length : -input.length + cursor;\n if (after) pos -= after.length;\n if (input === '' && initial && !prompt.includes(initial)) {\n pos += initial.length;\n }\n return ansi.cursor.move(pos);\n }\n }\n};\n\nconst erase = ansi.erase = {\n screen: code.screen,\n up: code.up,\n down: code.down,\n line: code.line,\n lineEnd: code.lineEnd,\n lineStart: code.lineStart,\n lines(n) {\n let str = '';\n for (let i = 0; i < n; i++) {\n str += ansi.erase.line + (i < n - 1 ? ansi.cursor.up(1) : '');\n }\n if (n) str += ansi.code.beginning;\n return str;\n }\n};\n\nansi.clear = (input = '', columns = process.stdout.columns) => {\n if (!columns) return erase.line + cursor.to(0);\n let width = str => [...colors.unstyle(str)].length;\n let lines = input.split(/\\r?\\n/);\n let rows = 0;\n for (let line of lines) {\n rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / columns);\n }\n return (erase.line + cursor.prevLine()).repeat(rows - 1) + erase.line + cursor.to(0);\n};\n","'use strict';\n\nconst Events = require('events');\nconst colors = require('ansi-colors');\nconst keypress = require('./keypress');\nconst timer = require('./timer');\nconst State = require('./state');\nconst theme = require('./theme');\nconst utils = require('./utils');\nconst ansi = require('./ansi');\n\n/**\n * Base class for creating a new Prompt.\n * @param {Object} `options` Question object.\n */\n\nclass Prompt extends Events {\n constructor(options = {}) {\n super();\n this.name = options.name;\n this.type = options.type;\n this.options = options;\n theme(this);\n timer(this);\n this.state = new State(this);\n this.initial = [options.initial, options.default].find(v => v != null);\n this.stdout = options.stdout || process.stdout;\n this.stdin = options.stdin || process.stdin;\n this.scale = options.scale || 1;\n this.term = this.options.term || process.env.TERM_PROGRAM;\n this.margin = margin(this.options.margin);\n this.setMaxListeners(0);\n setOptions(this);\n }\n\n async keypress(input, event = {}) {\n this.keypressed = true;\n let key = keypress.action(input, keypress(input, event), this.options.actions);\n this.state.keypress = key;\n this.emit('keypress', input, key);\n this.emit('state', this.state.clone());\n let fn = this.options[key.action] || this[key.action] || this.dispatch;\n if (typeof fn === 'function') {\n return await fn.call(this, input, key);\n }\n this.alert();\n }\n\n alert() {\n delete this.state.alert;\n if (this.options.show === false) {\n this.emit('alert');\n } else {\n this.stdout.write(ansi.code.beep);\n }\n }\n\n cursorHide() {\n this.stdout.write(ansi.cursor.hide());\n utils.onExit(() => this.cursorShow());\n }\n\n cursorShow() {\n this.stdout.write(ansi.cursor.show());\n }\n\n write(str) {\n if (!str) return;\n if (this.stdout && this.state.show !== false) {\n this.stdout.write(str);\n }\n this.state.buffer += str;\n }\n\n clear(lines = 0) {\n let buffer = this.state.buffer;\n this.state.buffer = '';\n if ((!buffer && !lines) || this.options.show === false) return;\n this.stdout.write(ansi.cursor.down(lines) + ansi.clear(buffer, this.width));\n }\n\n restore() {\n if (this.state.closed || this.options.show === false) return;\n\n let { prompt, after, rest } = this.sections();\n let { cursor, initial = '', input = '', value = '' } = this;\n\n let size = this.state.size = rest.length;\n let state = { after, cursor, initial, input, prompt, size, value };\n let codes = ansi.cursor.restore(state);\n if (codes) {\n this.stdout.write(codes);\n }\n }\n\n sections() {\n let { buffer, input, prompt } = this.state;\n prompt = colors.unstyle(prompt);\n let buf = colors.unstyle(buffer);\n let idx = buf.indexOf(prompt);\n let header = buf.slice(0, idx);\n let rest = buf.slice(idx);\n let lines = rest.split('\\n');\n let first = lines[0];\n let last = lines[lines.length - 1];\n let promptLine = prompt + (input ? ' ' + input : '');\n let len = promptLine.length;\n let after = len < first.length ? first.slice(len + 1) : '';\n return { header, prompt: first, after, rest: lines.slice(1), last };\n }\n\n async submit() {\n this.state.submitted = true;\n this.state.validating = true;\n\n // this will only be called when the prompt is directly submitted\n // without initializing, i.e. when the prompt is skipped, etc. Otherwize,\n // \"options.onSubmit\" is will be handled by the \"initialize()\" method.\n if (this.options.onSubmit) {\n await this.options.onSubmit.call(this, this.name, this.value, this);\n }\n\n let result = this.state.error || await this.validate(this.value, this.state);\n if (result !== true) {\n let error = '\\n' + this.symbols.pointer + ' ';\n\n if (typeof result === 'string') {\n error += result.trim();\n } else {\n error += 'Invalid input';\n }\n\n this.state.error = '\\n' + this.styles.danger(error);\n this.state.submitted = false;\n await this.render();\n await this.alert();\n this.state.validating = false;\n this.state.error = void 0;\n return;\n }\n\n this.state.validating = false;\n await this.render();\n await this.close();\n\n this.value = await this.result(this.value);\n this.emit('submit', this.value);\n }\n\n async cancel(err) {\n this.state.cancelled = this.state.submitted = true;\n\n await this.render();\n await this.close();\n\n if (typeof this.options.onCancel === 'function') {\n await this.options.onCancel.call(this, this.name, this.value, this);\n }\n\n this.emit('cancel', await this.error(err));\n }\n\n async close() {\n this.state.closed = true;\n\n try {\n let sections = this.sections();\n let lines = Math.ceil(sections.prompt.length / this.width);\n if (sections.rest) {\n this.write(ansi.cursor.down(sections.rest.length));\n }\n this.write('\\n'.repeat(lines));\n } catch (err) { /* do nothing */ }\n\n this.emit('close');\n }\n\n start() {\n if (!this.stop && this.options.show !== false) {\n this.stop = keypress.listen(this, this.keypress.bind(this));\n this.once('close', this.stop);\n }\n }\n\n async skip() {\n this.skipped = this.options.skip === true;\n if (typeof this.options.skip === 'function') {\n this.skipped = await this.options.skip.call(this, this.name, this.value);\n }\n return this.skipped;\n }\n\n async initialize() {\n let { format, options, result } = this;\n\n this.format = () => format.call(this, this.value);\n this.result = () => result.call(this, this.value);\n\n if (typeof options.initial === 'function') {\n this.initial = await options.initial.call(this, this);\n }\n\n if (typeof options.onRun === 'function') {\n await options.onRun.call(this, this);\n }\n\n // if \"options.onSubmit\" is defined, we wrap the \"submit\" method to guarantee\n // that \"onSubmit\" will always called first thing inside the submit\n // method, regardless of how it's handled in inheriting prompts.\n if (typeof options.onSubmit === 'function') {\n let onSubmit = options.onSubmit.bind(this);\n let submit = this.submit.bind(this);\n delete this.options.onSubmit;\n this.submit = async() => {\n await onSubmit(this.name, this.value, this);\n return submit();\n };\n }\n\n await this.start();\n await this.render();\n }\n\n render() {\n throw new Error('expected prompt to have a custom render method');\n }\n\n run() {\n return new Promise(async(resolve, reject) => {\n this.once('submit', resolve);\n this.once('cancel', reject);\n if (await this.skip()) {\n this.render = () => {};\n return this.submit();\n }\n await this.initialize();\n this.emit('run');\n });\n }\n\n async element(name, choice, i) {\n let { options, state, symbols, timers } = this;\n let timer = timers && timers[name];\n state.timer = timer;\n let value = options[name] || state[name] || symbols[name];\n let val = choice && choice[name] != null ? choice[name] : await value;\n if (val === '') return val;\n\n let res = await this.resolve(val, state, choice, i);\n if (!res && choice && choice[name]) {\n return this.resolve(value, state, choice, i);\n }\n return res;\n }\n\n async prefix() {\n let element = await this.element('prefix') || this.symbols;\n let timer = this.timers && this.timers.prefix;\n let state = this.state;\n state.timer = timer;\n if (utils.isObject(element)) element = element[state.status] || element.pending;\n if (!utils.hasColor(element)) {\n let style = this.styles[state.status] || this.styles.pending;\n return style(element);\n }\n return element;\n }\n\n async message() {\n let message = await this.element('message');\n if (!utils.hasColor(message)) {\n return this.styles.strong(message);\n }\n return message;\n }\n\n async separator() {\n let element = await this.element('separator') || this.symbols;\n let timer = this.timers && this.timers.separator;\n let state = this.state;\n state.timer = timer;\n let value = element[state.status] || element.pending || state.separator;\n let ele = await this.resolve(value, state);\n if (utils.isObject(ele)) ele = ele[state.status] || ele.pending;\n if (!utils.hasColor(ele)) {\n return this.styles.muted(ele);\n }\n return ele;\n }\n\n async pointer(choice, i) {\n let val = await this.element('pointer', choice, i);\n\n if (typeof val === 'string' && utils.hasColor(val)) {\n return val;\n }\n\n if (val) {\n let styles = this.styles;\n let focused = this.index === i;\n let style = focused ? styles.primary : val => val;\n let ele = await this.resolve(val[focused ? 'on' : 'off'] || val, this.state);\n let styled = !utils.hasColor(ele) ? style(ele) : ele;\n return focused ? styled : ' '.repeat(ele.length);\n }\n }\n\n async indicator(choice, i) {\n let val = await this.element('indicator', choice, i);\n if (typeof val === 'string' && utils.hasColor(val)) {\n return val;\n }\n if (val) {\n let styles = this.styles;\n let enabled = choice.enabled === true;\n let style = enabled ? styles.success : styles.dark;\n let ele = val[enabled ? 'on' : 'off'] || val;\n return !utils.hasColor(ele) ? style(ele) : ele;\n }\n return '';\n }\n\n body() {\n return null;\n }\n\n footer() {\n if (this.state.status === 'pending') {\n return this.element('footer');\n }\n }\n\n header() {\n if (this.state.status === 'pending') {\n return this.element('header');\n }\n }\n\n async hint() {\n if (this.state.status === 'pending' && !this.isValue(this.state.input)) {\n let hint = await this.element('hint');\n if (!utils.hasColor(hint)) {\n return this.styles.muted(hint);\n }\n return hint;\n }\n }\n\n error(err) {\n return !this.state.submitted ? (err || this.state.error) : '';\n }\n\n format(value) {\n return value;\n }\n\n result(value) {\n return value;\n }\n\n validate(value) {\n if (this.options.required === true) {\n return this.isValue(value);\n }\n return true;\n }\n\n isValue(value) {\n return value != null && value !== '';\n }\n\n resolve(value, ...args) {\n return utils.resolve(this, value, ...args);\n }\n\n get base() {\n return Prompt.prototype;\n }\n\n get style() {\n return this.styles[this.state.status];\n }\n\n get height() {\n return this.options.rows || utils.height(this.stdout, 25);\n }\n get width() {\n return this.options.columns || utils.width(this.stdout, 80);\n }\n get size() {\n return { width: this.width, height: this.height };\n }\n\n set cursor(value) {\n this.state.cursor = value;\n }\n get cursor() {\n return this.state.cursor;\n }\n\n set input(value) {\n this.state.input = value;\n }\n get input() {\n return this.state.input;\n }\n\n set value(value) {\n this.state.value = value;\n }\n get value() {\n let { input, value } = this.state;\n let result = [value, input].find(this.isValue.bind(this));\n return this.isValue(result) ? result : this.initial;\n }\n\n static get prompt() {\n return options => new this(options).run();\n }\n}\n\nfunction setOptions(prompt) {\n let isValidKey = key => {\n return prompt[key] === void 0 || typeof prompt[key] === 'function';\n };\n\n let ignore = [\n 'actions',\n 'choices',\n 'initial',\n 'margin',\n 'roles',\n 'styles',\n 'symbols',\n 'theme',\n 'timers',\n 'value'\n ];\n\n let ignoreFn = [\n 'body',\n 'footer',\n 'error',\n 'header',\n 'hint',\n 'indicator',\n 'message',\n 'prefix',\n 'separator',\n 'skip'\n ];\n\n for (let key of Object.keys(prompt.options)) {\n if (ignore.includes(key)) continue;\n if (/^on[A-Z]/.test(key)) continue;\n let option = prompt.options[key];\n if (typeof option === 'function' && isValidKey(key)) {\n if (!ignoreFn.includes(key)) {\n prompt[key] = option.bind(prompt);\n }\n } else if (typeof prompt[key] !== 'function') {\n prompt[key] = option;\n }\n }\n}\n\nfunction margin(value) {\n if (typeof value === 'number') {\n value = [value, value, value, value];\n }\n let arr = [].concat(value || []);\n let pad = i => i % 2 === 0 ? '\\n' : ' ';\n let res = [];\n for (let i = 0; i < 4; i++) {\n let char = pad(i);\n if (arr[i]) {\n res.push(char.repeat(arr[i]));\n } else {\n res.push('');\n }\n }\n return res;\n}\n\nmodule.exports = Prompt;\n","'use strict';\n\nconst utils = require('./utils');\nconst roles = {\n default(prompt, choice) {\n return choice;\n },\n checkbox(prompt, choice) {\n throw new Error('checkbox role is not implemented yet');\n },\n editable(prompt, choice) {\n throw new Error('editable role is not implemented yet');\n },\n expandable(prompt, choice) {\n throw new Error('expandable role is not implemented yet');\n },\n heading(prompt, choice) {\n choice.disabled = '';\n choice.indicator = [choice.indicator, ' '].find(v => v != null);\n choice.message = choice.message || '';\n return choice;\n },\n input(prompt, choice) {\n throw new Error('input role is not implemented yet');\n },\n option(prompt, choice) {\n return roles.default(prompt, choice);\n },\n radio(prompt, choice) {\n throw new Error('radio role is not implemented yet');\n },\n separator(prompt, choice) {\n choice.disabled = '';\n choice.indicator = [choice.indicator, ' '].find(v => v != null);\n choice.message = choice.message || prompt.symbols.line.repeat(5);\n return choice;\n },\n spacer(prompt, choice) {\n return choice;\n }\n};\n\nmodule.exports = (name, options = {}) => {\n let role = utils.merge({}, roles, options.roles);\n return role[name] || role.default;\n};\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst Prompt = require('../prompt');\nconst roles = require('../roles');\nconst utils = require('../utils');\nconst { reorder, scrollUp, scrollDown, isObject, swap } = utils;\n\nclass ArrayPrompt extends Prompt {\n constructor(options) {\n super(options);\n this.cursorHide();\n this.maxSelected = options.maxSelected || Infinity;\n this.multiple = options.multiple || false;\n this.initial = options.initial || 0;\n this.delay = options.delay || 0;\n this.longest = 0;\n this.num = '';\n }\n\n async initialize() {\n if (typeof this.options.initial === 'function') {\n this.initial = await this.options.initial.call(this);\n }\n await this.reset(true);\n await super.initialize();\n }\n\n async reset() {\n let { choices, initial, autofocus, suggest } = this.options;\n this.state._choices = [];\n this.state.choices = [];\n\n this.choices = await Promise.all(await this.toChoices(choices));\n this.choices.forEach(ch => (ch.enabled = false));\n\n if (typeof suggest !== 'function' && this.selectable.length === 0) {\n throw new Error('At least one choice must be selectable');\n }\n\n if (isObject(initial)) initial = Object.keys(initial);\n if (Array.isArray(initial)) {\n if (autofocus != null) this.index = this.findIndex(autofocus);\n initial.forEach(v => this.enable(this.find(v)));\n await this.render();\n } else {\n if (autofocus != null) initial = autofocus;\n if (typeof initial === 'string') initial = this.findIndex(initial);\n if (typeof initial === 'number' && initial > -1) {\n this.index = Math.max(0, Math.min(initial, this.choices.length));\n this.enable(this.find(this.index));\n }\n }\n\n if (this.isDisabled(this.focused)) {\n await this.down();\n }\n }\n\n async toChoices(value, parent) {\n this.state.loadingChoices = true;\n let choices = [];\n let index = 0;\n\n let toChoices = async(items, parent) => {\n if (typeof items === 'function') items = await items.call(this);\n if (items instanceof Promise) items = await items;\n\n for (let i = 0; i < items.length; i++) {\n let choice = items[i] = await this.toChoice(items[i], index++, parent);\n choices.push(choice);\n\n if (choice.choices) {\n await toChoices(choice.choices, choice);\n }\n }\n return choices;\n };\n\n return toChoices(value, parent)\n .then(choices => {\n this.state.loadingChoices = false;\n return choices;\n });\n }\n\n async toChoice(ele, i, parent) {\n if (typeof ele === 'function') ele = await ele.call(this, this);\n if (ele instanceof Promise) ele = await ele;\n if (typeof ele === 'string') ele = { name: ele };\n\n if (ele.normalized) return ele;\n ele.normalized = true;\n\n let origVal = ele.value;\n let role = roles(ele.role, this.options);\n ele = role(this, ele);\n\n if (typeof ele.disabled === 'string' && !ele.hint) {\n ele.hint = ele.disabled;\n ele.disabled = true;\n }\n\n if (ele.disabled === true && ele.hint == null) {\n ele.hint = '(disabled)';\n }\n\n // if the choice was already normalized, return it\n if (ele.index != null) return ele;\n ele.name = ele.name || ele.key || ele.title || ele.value || ele.message;\n ele.message = ele.message || ele.name || '';\n ele.value = [ele.value, ele.name].find(this.isValue.bind(this));\n\n ele.input = '';\n ele.index = i;\n ele.cursor = 0;\n\n utils.define(ele, 'parent', parent);\n ele.level = parent ? parent.level + 1 : 1;\n if (ele.indent == null) {\n ele.indent = parent ? parent.indent + ' ' : (ele.indent || '');\n }\n\n ele.path = parent ? parent.path + '.' + ele.name : ele.name;\n ele.enabled = !!(this.multiple && !this.isDisabled(ele) && (ele.enabled || this.isSelected(ele)));\n\n if (!this.isDisabled(ele)) {\n this.longest = Math.max(this.longest, colors.unstyle(ele.message).length);\n }\n\n // shallow clone the choice first\n let choice = { ...ele };\n\n // then allow the choice to be reset using the \"original\" values\n ele.reset = (input = choice.input, value = choice.value) => {\n for (let key of Object.keys(choice)) ele[key] = choice[key];\n ele.input = input;\n ele.value = value;\n };\n\n if (origVal == null && typeof ele.initial === 'function') {\n ele.input = await ele.initial.call(this, this.state, ele, i);\n }\n\n return ele;\n }\n\n async onChoice(choice, i) {\n this.emit('choice', choice, i, this);\n\n if (typeof choice.onChoice === 'function') {\n await choice.onChoice.call(this, this.state, choice, i);\n }\n }\n\n async addChoice(ele, i, parent) {\n let choice = await this.toChoice(ele, i, parent);\n this.choices.push(choice);\n this.index = this.choices.length - 1;\n this.limit = this.choices.length;\n return choice;\n }\n\n async newItem(item, i, parent) {\n let ele = { name: 'New choice name?', editable: true, newChoice: true, ...item };\n let choice = await this.addChoice(ele, i, parent);\n\n choice.updateChoice = () => {\n delete choice.newChoice;\n choice.name = choice.message = choice.input;\n choice.input = '';\n choice.cursor = 0;\n };\n\n return this.render();\n }\n\n indent(choice) {\n if (choice.indent == null) {\n return choice.level > 1 ? ' '.repeat(choice.level - 1) : '';\n }\n return choice.indent;\n }\n\n dispatch(s, key) {\n if (this.multiple && this[key.name]) return this[key.name]();\n this.alert();\n }\n\n focus(choice, enabled) {\n if (typeof enabled !== 'boolean') enabled = choice.enabled;\n if (enabled && !choice.enabled && this.selected.length >= this.maxSelected) {\n return this.alert();\n }\n this.index = choice.index;\n choice.enabled = enabled && !this.isDisabled(choice);\n return choice;\n }\n\n space() {\n if (!this.multiple) return this.alert();\n this.toggle(this.focused);\n return this.render();\n }\n\n a() {\n if (this.maxSelected < this.choices.length) return this.alert();\n let enabled = this.selectable.every(ch => ch.enabled);\n this.choices.forEach(ch => (ch.enabled = !enabled));\n return this.render();\n }\n\n i() {\n // don't allow choices to be inverted if it will result in\n // more than the maximum number of allowed selected items.\n if (this.choices.length - this.selected.length > this.maxSelected) {\n return this.alert();\n }\n this.choices.forEach(ch => (ch.enabled = !ch.enabled));\n return this.render();\n }\n\n g(choice = this.focused) {\n if (!this.choices.some(ch => !!ch.parent)) return this.a();\n this.toggle((choice.parent && !choice.choices) ? choice.parent : choice);\n return this.render();\n }\n\n toggle(choice, enabled) {\n if (!choice.enabled && this.selected.length >= this.maxSelected) {\n return this.alert();\n }\n\n if (typeof enabled !== 'boolean') enabled = !choice.enabled;\n choice.enabled = enabled;\n\n if (choice.choices) {\n choice.choices.forEach(ch => this.toggle(ch, enabled));\n }\n\n let parent = choice.parent;\n while (parent) {\n let choices = parent.choices.filter(ch => this.isDisabled(ch));\n parent.enabled = choices.every(ch => ch.enabled === true);\n parent = parent.parent;\n }\n\n reset(this, this.choices);\n this.emit('toggle', choice, this);\n return choice;\n }\n\n enable(choice) {\n if (this.selected.length >= this.maxSelected) return this.alert();\n choice.enabled = !this.isDisabled(choice);\n choice.choices && choice.choices.forEach(this.enable.bind(this));\n return choice;\n }\n\n disable(choice) {\n choice.enabled = false;\n choice.choices && choice.choices.forEach(this.disable.bind(this));\n return choice;\n }\n\n number(n) {\n this.num += n;\n\n let number = num => {\n let i = Number(num);\n if (i > this.choices.length - 1) return this.alert();\n\n let focused = this.focused;\n let choice = this.choices.find(ch => i === ch.index);\n\n if (!choice.enabled && this.selected.length >= this.maxSelected) {\n return this.alert();\n }\n\n if (this.visible.indexOf(choice) === -1) {\n let choices = reorder(this.choices);\n let actualIdx = choices.indexOf(choice);\n\n if (focused.index > actualIdx) {\n let start = choices.slice(actualIdx, actualIdx + this.limit);\n let end = choices.filter(ch => !start.includes(ch));\n this.choices = start.concat(end);\n } else {\n let pos = actualIdx - this.limit + 1;\n this.choices = choices.slice(pos).concat(choices.slice(0, pos));\n }\n }\n\n this.index = this.choices.indexOf(choice);\n this.toggle(this.focused);\n return this.render();\n };\n\n clearTimeout(this.numberTimeout);\n\n return new Promise(resolve => {\n let len = this.choices.length;\n let num = this.num;\n\n let handle = (val = false, res) => {\n clearTimeout(this.numberTimeout);\n if (val) res = number(num);\n this.num = '';\n resolve(res);\n };\n\n if (num === '0' || (num.length === 1 && Number(num + '0') > len)) {\n return handle(true);\n }\n\n if (Number(num) > len) {\n return handle(false, this.alert());\n }\n\n this.numberTimeout = setTimeout(() => handle(true), this.delay);\n });\n }\n\n home() {\n this.choices = reorder(this.choices);\n this.index = 0;\n return this.render();\n }\n\n end() {\n let pos = this.choices.length - this.limit;\n let choices = reorder(this.choices);\n this.choices = choices.slice(pos).concat(choices.slice(0, pos));\n this.index = this.limit - 1;\n return this.render();\n }\n\n first() {\n this.index = 0;\n return this.render();\n }\n\n last() {\n this.index = this.visible.length - 1;\n return this.render();\n }\n\n prev() {\n if (this.visible.length <= 1) return this.alert();\n return this.up();\n }\n\n next() {\n if (this.visible.length <= 1) return this.alert();\n return this.down();\n }\n\n right() {\n if (this.cursor >= this.input.length) return this.alert();\n this.cursor++;\n return this.render();\n }\n\n left() {\n if (this.cursor <= 0) return this.alert();\n this.cursor--;\n return this.render();\n }\n\n up() {\n let len = this.choices.length;\n let vis = this.visible.length;\n let idx = this.index;\n if (this.options.scroll === false && idx === 0) {\n return this.alert();\n }\n if (len > vis && idx === 0) {\n return this.scrollUp();\n }\n this.index = ((idx - 1 % len) + len) % len;\n if (this.isDisabled()) {\n return this.up();\n }\n return this.render();\n }\n\n down() {\n let len = this.choices.length;\n let vis = this.visible.length;\n let idx = this.index;\n if (this.options.scroll === false && idx === vis - 1) {\n return this.alert();\n }\n if (len > vis && idx === vis - 1) {\n return this.scrollDown();\n }\n this.index = (idx + 1) % len;\n if (this.isDisabled()) {\n return this.down();\n }\n return this.render();\n }\n\n scrollUp(i = 0) {\n this.choices = scrollUp(this.choices);\n this.index = i;\n if (this.isDisabled()) {\n return this.up();\n }\n return this.render();\n }\n\n scrollDown(i = this.visible.length - 1) {\n this.choices = scrollDown(this.choices);\n this.index = i;\n if (this.isDisabled()) {\n return this.down();\n }\n return this.render();\n }\n\n async shiftUp() {\n if (this.options.sort === true) {\n this.sorting = true;\n this.swap(this.index - 1);\n await this.up();\n this.sorting = false;\n return;\n }\n return this.scrollUp(this.index);\n }\n\n async shiftDown() {\n if (this.options.sort === true) {\n this.sorting = true;\n this.swap(this.index + 1);\n await this.down();\n this.sorting = false;\n return;\n }\n return this.scrollDown(this.index);\n }\n\n pageUp() {\n if (this.visible.length <= 1) return this.alert();\n this.limit = Math.max(this.limit - 1, 0);\n this.index = Math.min(this.limit - 1, this.index);\n this._limit = this.limit;\n if (this.isDisabled()) {\n return this.up();\n }\n return this.render();\n }\n\n pageDown() {\n if (this.visible.length >= this.choices.length) return this.alert();\n this.index = Math.max(0, this.index);\n this.limit = Math.min(this.limit + 1, this.choices.length);\n this._limit = this.limit;\n if (this.isDisabled()) {\n return this.down();\n }\n return this.render();\n }\n\n swap(pos) {\n swap(this.choices, this.index, pos);\n }\n\n isDisabled(choice = this.focused) {\n let keys = ['disabled', 'collapsed', 'hidden', 'completing', 'readonly'];\n if (choice && keys.some(key => choice[key] === true)) {\n return true;\n }\n return choice && choice.role === 'heading';\n }\n\n isEnabled(choice = this.focused) {\n if (Array.isArray(choice)) return choice.every(ch => this.isEnabled(ch));\n if (choice.choices) {\n let choices = choice.choices.filter(ch => !this.isDisabled(ch));\n return choice.enabled && choices.every(ch => this.isEnabled(ch));\n }\n return choice.enabled && !this.isDisabled(choice);\n }\n\n isChoice(choice, value) {\n return choice.name === value || choice.index === Number(value);\n }\n\n isSelected(choice) {\n if (Array.isArray(this.initial)) {\n return this.initial.some(value => this.isChoice(choice, value));\n }\n return this.isChoice(choice, this.initial);\n }\n\n map(names = [], prop = 'value') {\n return [].concat(names || []).reduce((acc, name) => {\n acc[name] = this.find(name, prop);\n return acc;\n }, {});\n }\n\n filter(value, prop) {\n let isChoice = (ele, i) => [ele.name, i].includes(value);\n let fn = typeof value === 'function' ? value : isChoice;\n let choices = this.options.multiple ? this.state._choices : this.choices;\n let result = choices.filter(fn);\n if (prop) {\n return result.map(ch => ch[prop]);\n }\n return result;\n }\n\n find(value, prop) {\n if (isObject(value)) return prop ? value[prop] : value;\n let isChoice = (ele, i) => [ele.name, i].includes(value);\n let fn = typeof value === 'function' ? value : isChoice;\n let choice = this.choices.find(fn);\n if (choice) {\n return prop ? choice[prop] : choice;\n }\n }\n\n findIndex(value) {\n return this.choices.indexOf(this.find(value));\n }\n\n async submit() {\n let choice = this.focused;\n if (!choice) return this.alert();\n\n if (choice.newChoice) {\n if (!choice.input) return this.alert();\n choice.updateChoice();\n return this.render();\n }\n\n if (this.choices.some(ch => ch.newChoice)) {\n return this.alert();\n }\n\n let { reorder, sort } = this.options;\n let multi = this.multiple === true;\n let value = this.selected;\n if (value === void 0) {\n return this.alert();\n }\n\n // re-sort choices to original order\n if (Array.isArray(value) && reorder !== false && sort !== true) {\n value = utils.reorder(value);\n }\n\n this.value = multi ? value.map(ch => ch.name) : value.name;\n return super.submit();\n }\n\n set choices(choices = []) {\n this.state._choices = this.state._choices || [];\n this.state.choices = choices;\n\n for (let choice of choices) {\n if (!this.state._choices.some(ch => ch.name === choice.name)) {\n this.state._choices.push(choice);\n }\n }\n\n if (!this._initial && this.options.initial) {\n this._initial = true;\n let init = this.initial;\n if (typeof init === 'string' || typeof init === 'number') {\n let choice = this.find(init);\n if (choice) {\n this.initial = choice.index;\n this.focus(choice, true);\n }\n }\n }\n }\n get choices() {\n return reset(this, this.state.choices || []);\n }\n\n set visible(visible) {\n this.state.visible = visible;\n }\n get visible() {\n return (this.state.visible || this.choices).slice(0, this.limit);\n }\n\n set limit(num) {\n this.state.limit = num;\n }\n get limit() {\n let { state, options, choices } = this;\n let limit = state.limit || this._limit || options.limit || choices.length;\n return Math.min(limit, this.height);\n }\n\n set value(value) {\n super.value = value;\n }\n get value() {\n if (typeof super.value !== 'string' && super.value === this.initial) {\n return this.input;\n }\n return super.value;\n }\n\n set index(i) {\n this.state.index = i;\n }\n get index() {\n return Math.max(0, this.state ? this.state.index : 0);\n }\n\n get enabled() {\n return this.filter(this.isEnabled.bind(this));\n }\n\n get focused() {\n let choice = this.choices[this.index];\n if (choice && this.state.submitted && this.multiple !== true) {\n choice.enabled = true;\n }\n return choice;\n }\n\n get selectable() {\n return this.choices.filter(choice => !this.isDisabled(choice));\n }\n\n get selected() {\n return this.multiple ? this.enabled : this.focused;\n }\n}\n\nfunction reset(prompt, choices) {\n if (choices instanceof Promise) return choices;\n if (typeof choices === 'function') {\n if (utils.isAsyncFn(choices)) return choices;\n choices = choices.call(prompt, prompt);\n }\n for (let choice of choices) {\n if (Array.isArray(choice.choices)) {\n let items = choice.choices.filter(ch => !prompt.isDisabled(ch));\n choice.enabled = items.every(ch => ch.enabled === true);\n }\n if (prompt.isDisabled(choice) === true) {\n delete choice.enabled;\n }\n }\n return choices;\n}\n\nmodule.exports = ArrayPrompt;\n","'use strict';\n\nconst ArrayPrompt = require('../types/array');\nconst utils = require('../utils');\n\nclass SelectPrompt extends ArrayPrompt {\n constructor(options) {\n super(options);\n this.emptyError = this.options.emptyError || 'No items were selected';\n }\n\n async dispatch(s, key) {\n if (this.multiple) {\n return this[key.name] ? await this[key.name](s, key) : await super.dispatch(s, key);\n }\n this.alert();\n }\n\n separator() {\n if (this.options.separator) return super.separator();\n let sep = this.styles.muted(this.symbols.ellipsis);\n return this.state.submitted ? super.separator() : sep;\n }\n\n pointer(choice, i) {\n return (!this.multiple || this.options.pointer) ? super.pointer(choice, i) : '';\n }\n\n indicator(choice, i) {\n return this.multiple ? super.indicator(choice, i) : '';\n }\n\n choiceMessage(choice, i) {\n let message = this.resolve(choice.message, this.state, choice, i);\n if (choice.role === 'heading' && !utils.hasColor(message)) {\n message = this.styles.strong(message);\n }\n return this.resolve(message, this.state, choice, i);\n }\n\n choiceSeparator() {\n return ':';\n }\n\n async renderChoice(choice, i) {\n await this.onChoice(choice, i);\n\n let focused = this.index === i;\n let pointer = await this.pointer(choice, i);\n let check = await this.indicator(choice, i) + (choice.pad || '');\n let hint = await this.resolve(choice.hint, this.state, choice, i);\n\n if (hint && !utils.hasColor(hint)) {\n hint = this.styles.muted(hint);\n }\n\n let ind = this.indent(choice);\n let msg = await this.choiceMessage(choice, i);\n let line = () => [this.margin[3], ind + pointer + check, msg, this.margin[1], hint].filter(Boolean).join(' ');\n\n if (choice.role === 'heading') {\n return line();\n }\n\n if (choice.disabled) {\n if (!utils.hasColor(msg)) {\n msg = this.styles.disabled(msg);\n }\n return line();\n }\n\n if (focused) {\n msg = this.styles.em(msg);\n }\n\n return line();\n }\n\n async renderChoices() {\n if (this.state.loading === 'choices') {\n return this.styles.warning('Loading choices');\n }\n\n if (this.state.submitted) return '';\n let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n let visible = await Promise.all(choices);\n if (!visible.length) visible.push(this.styles.danger('No matching choices'));\n let result = this.margin[0] + visible.join('\\n');\n let header;\n\n if (this.options.choicesHeader) {\n header = await this.resolve(this.options.choicesHeader, this.state);\n }\n\n return [header, result].filter(Boolean).join('\\n');\n }\n\n format() {\n if (!this.state.submitted || this.state.cancelled) return '';\n if (Array.isArray(this.selected)) {\n return this.selected.map(choice => this.styles.primary(choice.name)).join(', ');\n }\n return this.styles.primary(this.selected.name);\n }\n\n async render() {\n let { submitted, size } = this.state;\n\n let prompt = '';\n let header = await this.header();\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n if (this.options.promptLine !== false) {\n prompt = [prefix, message, separator, ''].join(' ');\n this.state.prompt = prompt;\n }\n\n let output = await this.format();\n let help = (await this.error()) || (await this.hint());\n let body = await this.renderChoices();\n let footer = await this.footer();\n\n if (output) prompt += output;\n if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n if (submitted && !output && !body.trim() && this.multiple && this.emptyError != null) {\n prompt += this.styles.danger(this.emptyError);\n }\n\n this.clear(size);\n this.write([header, prompt, body, footer].filter(Boolean).join('\\n'));\n this.write(this.margin[2]);\n this.restore();\n }\n}\n\nmodule.exports = SelectPrompt;\n","'use strict';\n\nconst Select = require('./select');\n\nconst highlight = (input, color) => {\n let val = input.toLowerCase();\n return str => {\n let s = str.toLowerCase();\n let i = s.indexOf(val);\n let colored = color(str.slice(i, i + val.length));\n return i >= 0 ? str.slice(0, i) + colored + str.slice(i + val.length) : str;\n };\n};\n\nclass AutoComplete extends Select {\n constructor(options) {\n super(options);\n this.cursorShow();\n }\n\n moveCursor(n) {\n this.state.cursor += n;\n }\n\n dispatch(ch) {\n return this.append(ch);\n }\n\n space(ch) {\n return this.options.multiple ? super.space(ch) : this.append(ch);\n }\n\n append(ch) {\n let { cursor, input } = this.state;\n this.input = input.slice(0, cursor) + ch + input.slice(cursor);\n this.moveCursor(1);\n return this.complete();\n }\n\n delete() {\n let { cursor, input } = this.state;\n if (!input) return this.alert();\n this.input = input.slice(0, cursor - 1) + input.slice(cursor);\n this.moveCursor(-1);\n return this.complete();\n }\n\n deleteForward() {\n let { cursor, input } = this.state;\n if (input[cursor] === void 0) return this.alert();\n this.input = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n return this.complete();\n }\n\n number(ch) {\n return this.append(ch);\n }\n\n async complete() {\n this.completing = true;\n this.choices = await this.suggest(this.input, this.state._choices);\n this.state.limit = void 0; // allow getter/setter to reset limit\n this.index = Math.min(Math.max(this.visible.length - 1, 0), this.index);\n await this.render();\n this.completing = false;\n }\n\n suggest(input = this.input, choices = this.state._choices) {\n if (typeof this.options.suggest === 'function') {\n return this.options.suggest.call(this, input, choices);\n }\n let str = input.toLowerCase();\n return choices.filter(ch => ch.message.toLowerCase().includes(str));\n }\n\n pointer() {\n return '';\n }\n\n format() {\n if (!this.focused) return this.input;\n if (this.options.multiple && this.state.submitted) {\n return this.selected.map(ch => this.styles.primary(ch.message)).join(', ');\n }\n if (this.state.submitted) {\n let value = this.value = this.input = this.focused.value;\n return this.styles.primary(value);\n }\n return this.input;\n }\n\n async render() {\n if (this.state.status !== 'pending') return super.render();\n let style = this.options.highlight\n ? this.options.highlight.bind(this)\n : this.styles.placeholder;\n\n let color = highlight(this.input, style);\n let choices = this.choices;\n this.choices = choices.map(ch => ({ ...ch, message: color(ch.message) }));\n await super.render();\n this.choices = choices;\n }\n\n submit() {\n if (this.options.multiple) {\n this.value = this.selected.map(ch => ch.name);\n }\n return super.submit();\n }\n}\n\nmodule.exports = AutoComplete;\n","'use strict';\n\nconst utils = require('./utils');\n\n/**\n * Render a placeholder value with cursor and styling based on the\n * position of the cursor.\n *\n * @param {Object} `prompt` Prompt instance.\n * @param {String} `input` Input string.\n * @param {String} `initial` The initial user-provided value.\n * @param {Number} `pos` Current cursor position.\n * @param {Boolean} `showCursor` Render a simulated cursor using the inverse primary style.\n * @return {String} Returns the styled placeholder string.\n * @api public\n */\n\nmodule.exports = (prompt, options = {}) => {\n prompt.cursorHide();\n\n let { input = '', initial = '', pos, showCursor = true, color } = options;\n let style = color || prompt.styles.placeholder;\n let inverse = utils.inverse(prompt.styles.primary);\n let blinker = str => inverse(prompt.styles.black(str));\n let output = input;\n let char = ' ';\n let reverse = blinker(char);\n\n if (prompt.blink && prompt.blink.off === true) {\n blinker = str => str;\n reverse = '';\n }\n\n if (showCursor && pos === 0 && initial === '' && input === '') {\n return blinker(char);\n }\n\n if (showCursor && pos === 0 && (input === initial || input === '')) {\n return blinker(initial[0]) + style(initial.slice(1));\n }\n\n initial = utils.isPrimitive(initial) ? `${initial}` : '';\n input = utils.isPrimitive(input) ? `${input}` : '';\n\n let placeholder = initial && initial.startsWith(input) && initial !== input;\n let cursor = placeholder ? blinker(initial[input.length]) : reverse;\n\n if (pos !== input.length && showCursor === true) {\n output = input.slice(0, pos) + blinker(input[pos]) + input.slice(pos + 1);\n cursor = '';\n }\n\n if (showCursor === false) {\n cursor = '';\n }\n\n if (placeholder) {\n let raw = prompt.styles.unstyle(output + cursor);\n return output + cursor + style(initial.slice(raw.length));\n }\n\n return output + cursor;\n};\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst SelectPrompt = require('./select');\nconst placeholder = require('../placeholder');\n\nclass FormPrompt extends SelectPrompt {\n constructor(options) {\n super({ ...options, multiple: true });\n this.type = 'form';\n this.initial = this.options.initial;\n this.align = [this.options.align, 'right'].find(v => v != null);\n this.emptyError = '';\n this.values = {};\n }\n\n async reset(first) {\n await super.reset();\n if (first === true) this._index = this.index;\n this.index = this._index;\n this.values = {};\n this.choices.forEach(choice => choice.reset && choice.reset());\n return this.render();\n }\n\n dispatch(char) {\n return !!char && this.append(char);\n }\n\n append(char) {\n let choice = this.focused;\n if (!choice) return this.alert();\n let { cursor, input } = choice;\n choice.value = choice.input = input.slice(0, cursor) + char + input.slice(cursor);\n choice.cursor++;\n return this.render();\n }\n\n delete() {\n let choice = this.focused;\n if (!choice || choice.cursor <= 0) return this.alert();\n let { cursor, input } = choice;\n choice.value = choice.input = input.slice(0, cursor - 1) + input.slice(cursor);\n choice.cursor--;\n return this.render();\n }\n\n deleteForward() {\n let choice = this.focused;\n if (!choice) return this.alert();\n let { cursor, input } = choice;\n if (input[cursor] === void 0) return this.alert();\n let str = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n choice.value = choice.input = str;\n return this.render();\n }\n\n right() {\n let choice = this.focused;\n if (!choice) return this.alert();\n if (choice.cursor >= choice.input.length) return this.alert();\n choice.cursor++;\n return this.render();\n }\n\n left() {\n let choice = this.focused;\n if (!choice) return this.alert();\n if (choice.cursor <= 0) return this.alert();\n choice.cursor--;\n return this.render();\n }\n\n space(ch, key) {\n return this.dispatch(ch, key);\n }\n\n number(ch, key) {\n return this.dispatch(ch, key);\n }\n\n next() {\n let ch = this.focused;\n if (!ch) return this.alert();\n let { initial, input } = ch;\n if (initial && initial.startsWith(input) && input !== initial) {\n ch.value = ch.input = initial;\n ch.cursor = ch.value.length;\n return this.render();\n }\n return super.next();\n }\n\n prev() {\n let ch = this.focused;\n if (!ch) return this.alert();\n if (ch.cursor === 0) return super.prev();\n ch.value = ch.input = '';\n ch.cursor = 0;\n return this.render();\n }\n\n separator() {\n return '';\n }\n\n format(value) {\n return !this.state.submitted ? super.format(value) : '';\n }\n\n pointer() {\n return '';\n }\n\n indicator(choice) {\n return choice.input ? '⦿' : '⊙';\n }\n\n async choiceSeparator(choice, i) {\n let sep = await this.resolve(choice.separator, this.state, choice, i) || ':';\n return sep ? ' ' + this.styles.disabled(sep) : '';\n }\n\n async renderChoice(choice, i) {\n await this.onChoice(choice, i);\n\n let { state, styles } = this;\n let { cursor, initial = '', name, hint, input = '' } = choice;\n let { muted, submitted, primary, danger } = styles;\n\n let help = hint;\n let focused = this.index === i;\n let validate = choice.validate || (() => true);\n let sep = await this.choiceSeparator(choice, i);\n let msg = choice.message;\n\n if (this.align === 'right') msg = msg.padStart(this.longest + 1, ' ');\n if (this.align === 'left') msg = msg.padEnd(this.longest + 1, ' ');\n\n // re-populate the form values (answers) object\n let value = this.values[name] = (input || initial);\n let color = input ? 'success' : 'dark';\n\n if ((await validate.call(choice, value, this.state)) !== true) {\n color = 'danger';\n }\n\n let style = styles[color];\n let indicator = style(await this.indicator(choice, i)) + (choice.pad || '');\n\n let indent = this.indent(choice);\n let line = () => [indent, indicator, msg + sep, input, help].filter(Boolean).join(' ');\n\n if (state.submitted) {\n msg = colors.unstyle(msg);\n input = submitted(input);\n help = '';\n return line();\n }\n\n if (choice.format) {\n input = await choice.format.call(this, input, choice, i);\n } else {\n let color = this.styles.muted;\n let options = { input, initial, pos: cursor, showCursor: focused, color };\n input = placeholder(this, options);\n }\n\n if (!this.isValue(input)) {\n input = this.styles.muted(this.symbols.ellipsis);\n }\n\n if (choice.result) {\n this.values[name] = await choice.result.call(this, value, choice, i);\n }\n\n if (focused) {\n msg = primary(msg);\n }\n\n if (choice.error) {\n input += (input ? ' ' : '') + danger(choice.error.trim());\n } else if (choice.hint) {\n input += (input ? ' ' : '') + muted(choice.hint.trim());\n }\n\n return line();\n }\n\n async submit() {\n this.value = this.values;\n return super.base.submit.call(this);\n }\n}\n\nmodule.exports = FormPrompt;\n","'use strict';\n\nconst FormPrompt = require('../prompts/form');\n\nconst defaultAuthenticate = () => {\n throw new Error('expected prompt to have a custom authenticate method');\n};\n\nconst factory = (authenticate = defaultAuthenticate) => {\n\n class AuthPrompt extends FormPrompt {\n constructor(options) {\n super(options);\n }\n\n async submit() {\n this.value = await authenticate.call(this, this.values, this.state);\n super.base.submit.call(this);\n }\n\n static create(authenticate) {\n return factory(authenticate);\n }\n }\n\n return AuthPrompt;\n};\n\nmodule.exports = factory();\n","'use strict';\n\nconst AuthPrompt = require('../types/auth');\n\nfunction defaultAuthenticate(value, state) {\n if (value.username === this.options.username && value.password === this.options.password) {\n return true;\n }\n return false;\n}\n\nconst factory = (authenticate = defaultAuthenticate) => {\n const choices = [\n { name: 'username', message: 'username' },\n {\n name: 'password',\n message: 'password',\n format(input) {\n if (this.options.showPassword) {\n return input;\n }\n let color = this.state.submitted ? this.styles.primary : this.styles.muted;\n return color(this.symbols.asterisk.repeat(input.length));\n }\n }\n ];\n\n class BasicAuthPrompt extends AuthPrompt.create(authenticate) {\n constructor(options) {\n super({ ...options, choices });\n }\n\n static create(authenticate) {\n return factory(authenticate);\n }\n }\n\n return BasicAuthPrompt;\n};\n\nmodule.exports = factory();\n","'use strict';\n\nconst Prompt = require('../prompt');\nconst { isPrimitive, hasColor } = require('../utils');\n\nclass BooleanPrompt extends Prompt {\n constructor(options) {\n super(options);\n this.cursorHide();\n }\n\n async initialize() {\n let initial = await this.resolve(this.initial, this.state);\n this.input = await this.cast(initial);\n await super.initialize();\n }\n\n dispatch(ch) {\n if (!this.isValue(ch)) return this.alert();\n this.input = ch;\n return this.submit();\n }\n\n format(value) {\n let { styles, state } = this;\n return !state.submitted ? styles.primary(value) : styles.success(value);\n }\n\n cast(input) {\n return this.isTrue(input);\n }\n\n isTrue(input) {\n return /^[ty1]/i.test(input);\n }\n\n isFalse(input) {\n return /^[fn0]/i.test(input);\n }\n\n isValue(value) {\n return isPrimitive(value) && (this.isTrue(value) || this.isFalse(value));\n }\n\n async hint() {\n if (this.state.status === 'pending') {\n let hint = await this.element('hint');\n if (!hasColor(hint)) {\n return this.styles.muted(hint);\n }\n return hint;\n }\n }\n\n async render() {\n let { input, size } = this.state;\n\n let prefix = await this.prefix();\n let sep = await this.separator();\n let msg = await this.message();\n let hint = this.styles.muted(this.default);\n\n let promptLine = [prefix, msg, hint, sep].filter(Boolean).join(' ');\n this.state.prompt = promptLine;\n\n let header = await this.header();\n let value = this.value = this.cast(input);\n let output = await this.format(value);\n let help = (await this.error()) || (await this.hint());\n let footer = await this.footer();\n\n if (help && !promptLine.includes(help)) output += ' ' + help;\n promptLine += ' ' + output;\n\n this.clear(size);\n this.write([header, promptLine, footer].filter(Boolean).join('\\n'));\n this.restore();\n }\n\n set value(value) {\n super.value = value;\n }\n get value() {\n return this.cast(super.value);\n }\n}\n\nmodule.exports = BooleanPrompt;\n","'use strict';\n\nconst BooleanPrompt = require('../types/boolean');\n\nclass ConfirmPrompt extends BooleanPrompt {\n constructor(options) {\n super(options);\n this.default = this.options.default || (this.initial ? '(Y/n)' : '(y/N)');\n }\n}\n\nmodule.exports = ConfirmPrompt;\n\n","'use strict';\n\nconst Select = require('./select');\nconst Form = require('./form');\nconst form = Form.prototype;\n\nclass Editable extends Select {\n constructor(options) {\n super({ ...options, multiple: true });\n this.align = [this.options.align, 'left'].find(v => v != null);\n this.emptyError = '';\n this.values = {};\n }\n\n dispatch(char, key) {\n let choice = this.focused;\n let parent = choice.parent || {};\n if (!choice.editable && !parent.editable) {\n if (char === 'a' || char === 'i') return super[char]();\n }\n return form.dispatch.call(this, char, key);\n }\n\n append(char, key) {\n return form.append.call(this, char, key);\n }\n\n delete(char, key) {\n return form.delete.call(this, char, key);\n }\n\n space(char) {\n return this.focused.editable ? this.append(char) : super.space();\n }\n\n number(char) {\n return this.focused.editable ? this.append(char) : super.number(char);\n }\n\n next() {\n return this.focused.editable ? form.next.call(this) : super.next();\n }\n\n prev() {\n return this.focused.editable ? form.prev.call(this) : super.prev();\n }\n\n async indicator(choice, i) {\n let symbol = choice.indicator || '';\n let value = choice.editable ? symbol : super.indicator(choice, i);\n return await this.resolve(value, this.state, choice, i) || '';\n }\n\n indent(choice) {\n return choice.role === 'heading' ? '' : (choice.editable ? ' ' : ' ');\n }\n\n async renderChoice(choice, i) {\n choice.indent = '';\n if (choice.editable) return form.renderChoice.call(this, choice, i);\n return super.renderChoice(choice, i);\n }\n\n error() {\n return '';\n }\n\n footer() {\n return this.state.error;\n }\n\n async validate() {\n let result = true;\n\n for (let choice of this.choices) {\n if (typeof choice.validate !== 'function') {\n continue;\n }\n\n if (choice.role === 'heading') {\n continue;\n }\n\n let val = choice.parent ? this.value[choice.parent.name] : this.value;\n\n if (choice.editable) {\n val = choice.value === choice.name ? choice.initial || '' : choice.value;\n } else if (!this.isDisabled(choice)) {\n val = choice.enabled === true;\n }\n\n result = await choice.validate(val, this.state);\n\n if (result !== true) {\n break;\n }\n }\n\n if (result !== true) {\n this.state.error = typeof result === 'string' ? result : 'Invalid Input';\n }\n\n return result;\n }\n\n submit() {\n if (this.focused.newChoice === true) return super.submit();\n if (this.choices.some(ch => ch.newChoice)) {\n return this.alert();\n }\n\n this.value = {};\n\n for (let choice of this.choices) {\n let val = choice.parent ? this.value[choice.parent.name] : this.value;\n\n if (choice.role === 'heading') {\n this.value[choice.name] = {};\n continue;\n }\n\n if (choice.editable) {\n val[choice.name] = choice.value === choice.name\n ? (choice.initial || '')\n : choice.value;\n\n } else if (!this.isDisabled(choice)) {\n val[choice.name] = choice.enabled === true;\n }\n }\n\n return this.base.submit.call(this);\n }\n}\n\nmodule.exports = Editable;\n","'use strict';\n\nconst Prompt = require('../prompt');\nconst placeholder = require('../placeholder');\nconst { isPrimitive } = require('../utils');\n\nclass StringPrompt extends Prompt {\n constructor(options) {\n super(options);\n this.initial = isPrimitive(this.initial) ? String(this.initial) : '';\n if (this.initial) this.cursorHide();\n this.state.prevCursor = 0;\n this.state.clipboard = [];\n }\n\n async keypress(input, key = {}) {\n let prev = this.state.prevKeypress;\n this.state.prevKeypress = key;\n if (this.options.multiline === true && key.name === 'return') {\n if (!prev || prev.name !== 'return') {\n return this.append('\\n', key);\n }\n }\n return super.keypress(input, key);\n }\n\n moveCursor(n) {\n this.cursor += n;\n }\n\n reset() {\n this.input = this.value = '';\n this.cursor = 0;\n return this.render();\n }\n\n dispatch(ch, key) {\n if (!ch || key.ctrl || key.code) return this.alert();\n this.append(ch);\n }\n\n append(ch) {\n let { cursor, input } = this.state;\n this.input = `${input}`.slice(0, cursor) + ch + `${input}`.slice(cursor);\n this.moveCursor(String(ch).length);\n this.render();\n }\n\n insert(str) {\n this.append(str);\n }\n\n delete() {\n let { cursor, input } = this.state;\n if (cursor <= 0) return this.alert();\n this.input = `${input}`.slice(0, cursor - 1) + `${input}`.slice(cursor);\n this.moveCursor(-1);\n this.render();\n }\n\n deleteForward() {\n let { cursor, input } = this.state;\n if (input[cursor] === void 0) return this.alert();\n this.input = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n this.render();\n }\n\n cutForward() {\n let pos = this.cursor;\n if (this.input.length <= pos) return this.alert();\n this.state.clipboard.push(this.input.slice(pos));\n this.input = this.input.slice(0, pos);\n this.render();\n }\n\n cutLeft() {\n let pos = this.cursor;\n if (pos === 0) return this.alert();\n let before = this.input.slice(0, pos);\n let after = this.input.slice(pos);\n let words = before.split(' ');\n this.state.clipboard.push(words.pop());\n this.input = words.join(' ');\n this.cursor = this.input.length;\n this.input += after;\n this.render();\n }\n\n paste() {\n if (!this.state.clipboard.length) return this.alert();\n this.insert(this.state.clipboard.pop());\n this.render();\n }\n\n toggleCursor() {\n if (this.state.prevCursor) {\n this.cursor = this.state.prevCursor;\n this.state.prevCursor = 0;\n } else {\n this.state.prevCursor = this.cursor;\n this.cursor = 0;\n }\n this.render();\n }\n\n first() {\n this.cursor = 0;\n this.render();\n }\n\n last() {\n this.cursor = this.input.length - 1;\n this.render();\n }\n\n next() {\n let init = this.initial != null ? String(this.initial) : '';\n if (!init || !init.startsWith(this.input)) return this.alert();\n this.input = this.initial;\n this.cursor = this.initial.length;\n this.render();\n }\n\n prev() {\n if (!this.input) return this.alert();\n this.reset();\n }\n\n backward() {\n return this.left();\n }\n\n forward() {\n return this.right();\n }\n\n right() {\n if (this.cursor >= this.input.length) return this.alert();\n this.moveCursor(1);\n return this.render();\n }\n\n left() {\n if (this.cursor <= 0) return this.alert();\n this.moveCursor(-1);\n return this.render();\n }\n\n isValue(value) {\n return !!value;\n }\n\n async format(input = this.value) {\n let initial = await this.resolve(this.initial, this.state);\n if (!this.state.submitted) {\n return placeholder(this, { input, initial, pos: this.cursor });\n }\n return this.styles.submitted(input || initial);\n }\n\n async render() {\n let size = this.state.size;\n\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n this.state.prompt = prompt;\n\n let header = await this.header();\n let output = await this.format();\n let help = (await this.error()) || (await this.hint());\n let footer = await this.footer();\n\n if (help && !output.includes(help)) output += ' ' + help;\n prompt += ' ' + output;\n\n this.clear(size);\n this.write([header, prompt, footer].filter(Boolean).join('\\n'));\n this.restore();\n }\n}\n\nmodule.exports = StringPrompt;\n","'use strict';\n\nconst unique = arr => arr.filter((v, i) => arr.lastIndexOf(v) === i);\nconst compact = arr => unique(arr).filter(Boolean);\n\nmodule.exports = (action, data = {}, value = '') => {\n let { past = [], present = '' } = data;\n let rest, prev;\n\n switch (action) {\n case 'prev':\n case 'undo':\n rest = past.slice(0, past.length - 1);\n prev = past[past.length - 1] || '';\n return {\n past: compact([value, ...rest]),\n present: prev\n };\n\n case 'next':\n case 'redo':\n rest = past.slice(1);\n prev = past[0] || '';\n return {\n past: compact([...rest, value]),\n present: prev\n };\n\n case 'save':\n return {\n past: compact([...past, value]),\n present: ''\n };\n\n case 'remove':\n prev = compact(past.filter(v => v !== value));\n present = '';\n\n if (prev.length) {\n present = prev.pop();\n }\n\n return {\n past: prev,\n present\n };\n\n default: {\n throw new Error(`Invalid action: \"${action}\"`);\n }\n }\n};\n","'use strict';\n\nconst Prompt = require('../types/string');\nconst completer = require('../completer');\n\nclass Input extends Prompt {\n constructor(options) {\n super(options);\n let history = this.options.history;\n if (history && history.store) {\n let initial = history.values || this.initial;\n this.autosave = !!history.autosave;\n this.store = history.store;\n this.data = this.store.get('values') || { past: [], present: initial };\n this.initial = this.data.present || this.data.past[this.data.past.length - 1];\n }\n }\n\n completion(action) {\n if (!this.store) return this.alert();\n this.data = completer(action, this.data, this.input);\n if (!this.data.present) return this.alert();\n this.input = this.data.present;\n this.cursor = this.input.length;\n return this.render();\n }\n\n altUp() {\n return this.completion('prev');\n }\n\n altDown() {\n return this.completion('next');\n }\n\n prev() {\n this.save();\n return super.prev();\n }\n\n save() {\n if (!this.store) return;\n this.data = completer('save', this.data, this.input);\n this.store.set('values', this.data);\n }\n\n submit() {\n if (this.store && this.autosave === true) {\n this.save();\n }\n return super.submit();\n }\n}\n\nmodule.exports = Input;\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass InvisiblePrompt extends StringPrompt {\n format() {\n return '';\n }\n}\n\nmodule.exports = InvisiblePrompt;\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass ListPrompt extends StringPrompt {\n constructor(options = {}) {\n super(options);\n this.sep = this.options.separator || /, */;\n this.initial = options.initial || '';\n }\n\n split(input = this.value) {\n return input ? String(input).split(this.sep) : [];\n }\n\n format() {\n let style = this.state.submitted ? this.styles.primary : val => val;\n return this.list.map(style).join(', ');\n }\n\n async submit(value) {\n let result = this.state.error || await this.validate(this.list, this.state);\n if (result !== true) {\n this.state.error = result;\n return super.submit();\n }\n this.value = this.list;\n return super.submit();\n }\n\n get list() {\n return this.split();\n }\n}\n\nmodule.exports = ListPrompt;\n","'use strict';\n\nconst Select = require('./select');\n\nclass MultiSelect extends Select {\n constructor(options) {\n super({ ...options, multiple: true });\n }\n}\n\nmodule.exports = MultiSelect;\n","'use strict';\n\nconst StringPrompt = require('./string');\n\nclass NumberPrompt extends StringPrompt {\n constructor(options = {}) {\n super({ style: 'number', ...options });\n this.min = this.isValue(options.min) ? this.toNumber(options.min) : -Infinity;\n this.max = this.isValue(options.max) ? this.toNumber(options.max) : Infinity;\n this.delay = options.delay != null ? options.delay : 1000;\n this.float = options.float !== false;\n this.round = options.round === true || options.float === false;\n this.major = options.major || 10;\n this.minor = options.minor || 1;\n this.initial = options.initial != null ? options.initial : '';\n this.input = String(this.initial);\n this.cursor = this.input.length;\n this.cursorShow();\n }\n\n append(ch) {\n if (!/[-+.]/.test(ch) || (ch === '.' && this.input.includes('.'))) {\n return this.alert('invalid number');\n }\n return super.append(ch);\n }\n\n number(ch) {\n return super.append(ch);\n }\n\n next() {\n if (this.input && this.input !== this.initial) return this.alert();\n if (!this.isValue(this.initial)) return this.alert();\n this.input = this.initial;\n this.cursor = String(this.initial).length;\n return this.render();\n }\n\n up(number) {\n let step = number || this.minor;\n let num = this.toNumber(this.input);\n if (num > this.max + step) return this.alert();\n this.input = `${num + step}`;\n return this.render();\n }\n\n down(number) {\n let step = number || this.minor;\n let num = this.toNumber(this.input);\n if (num < this.min - step) return this.alert();\n this.input = `${num - step}`;\n return this.render();\n }\n\n shiftDown() {\n return this.down(this.major);\n }\n\n shiftUp() {\n return this.up(this.major);\n }\n\n format(input = this.input) {\n if (typeof this.options.format === 'function') {\n return this.options.format.call(this, input);\n }\n return this.styles.info(input);\n }\n\n toNumber(value = '') {\n return this.float ? +value : Math.round(+value);\n }\n\n isValue(value) {\n return /^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(value);\n }\n\n submit() {\n let value = [this.input, this.initial].find(v => this.isValue(v));\n this.value = this.toNumber(value || 0);\n return super.submit();\n }\n}\n\nmodule.exports = NumberPrompt;\n","module.exports = require('../types/number');\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass PasswordPrompt extends StringPrompt {\n constructor(options) {\n super(options);\n this.cursorShow();\n }\n\n format(input = this.input) {\n if (!this.keypressed) return '';\n let color = this.state.submitted ? this.styles.primary : this.styles.muted;\n return color(this.symbols.asterisk.repeat(input.length));\n }\n}\n\nmodule.exports = PasswordPrompt;\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst ArrayPrompt = require('../types/array');\nconst utils = require('../utils');\n\nclass LikertScale extends ArrayPrompt {\n constructor(options = {}) {\n super(options);\n this.widths = [].concat(options.messageWidth || 50);\n this.align = [].concat(options.align || 'left');\n this.linebreak = options.linebreak || false;\n this.edgeLength = options.edgeLength || 3;\n this.newline = options.newline || '\\n ';\n let start = options.startNumber || 1;\n if (typeof this.scale === 'number') {\n this.scaleKey = false;\n this.scale = Array(this.scale).fill(0).map((v, i) => ({ name: i + start }));\n }\n }\n\n async reset() {\n this.tableized = false;\n await super.reset();\n return this.render();\n }\n\n tableize() {\n if (this.tableized === true) return;\n this.tableized = true;\n let longest = 0;\n\n for (let ch of this.choices) {\n longest = Math.max(longest, ch.message.length);\n ch.scaleIndex = ch.initial || 2;\n ch.scale = [];\n\n for (let i = 0; i < this.scale.length; i++) {\n ch.scale.push({ index: i });\n }\n }\n this.widths[0] = Math.min(this.widths[0], longest + 3);\n }\n\n async dispatch(s, key) {\n if (this.multiple) {\n return this[key.name] ? await this[key.name](s, key) : await super.dispatch(s, key);\n }\n this.alert();\n }\n\n heading(msg, item, i) {\n return this.styles.strong(msg);\n }\n\n separator() {\n return this.styles.muted(this.symbols.ellipsis);\n }\n\n right() {\n let choice = this.focused;\n if (choice.scaleIndex >= this.scale.length - 1) return this.alert();\n choice.scaleIndex++;\n return this.render();\n }\n\n left() {\n let choice = this.focused;\n if (choice.scaleIndex <= 0) return this.alert();\n choice.scaleIndex--;\n return this.render();\n }\n\n indent() {\n return '';\n }\n\n format() {\n if (this.state.submitted) {\n let values = this.choices.map(ch => this.styles.info(ch.index));\n return values.join(', ');\n }\n return '';\n }\n\n pointer() {\n return '';\n }\n\n /**\n * Render the scale \"Key\". Something like:\n * @return {String}\n */\n\n renderScaleKey() {\n if (this.scaleKey === false) return '';\n if (this.state.submitted) return '';\n let scale = this.scale.map(item => ` ${item.name} - ${item.message}`);\n let key = ['', ...scale].map(item => this.styles.muted(item));\n return key.join('\\n');\n }\n\n /**\n * Render the heading row for the scale.\n * @return {String}\n */\n\n renderScaleHeading(max) {\n let keys = this.scale.map(ele => ele.name);\n if (typeof this.options.renderScaleHeading === 'function') {\n keys = this.options.renderScaleHeading.call(this, max);\n }\n let diff = this.scaleLength - keys.join('').length;\n let spacing = Math.round(diff / (keys.length - 1));\n let names = keys.map(key => this.styles.strong(key));\n let headings = names.join(' '.repeat(spacing));\n let padding = ' '.repeat(this.widths[0]);\n return this.margin[3] + padding + this.margin[1] + headings;\n }\n\n /**\n * Render a scale indicator => ◯ or ◉ by default\n */\n\n scaleIndicator(choice, item, i) {\n if (typeof this.options.scaleIndicator === 'function') {\n return this.options.scaleIndicator.call(this, choice, item, i);\n }\n let enabled = choice.scaleIndex === item.index;\n if (item.disabled) return this.styles.hint(this.symbols.radio.disabled);\n if (enabled) return this.styles.success(this.symbols.radio.on);\n return this.symbols.radio.off;\n }\n\n /**\n * Render the actual scale => ◯────◯────◉────◯────◯\n */\n\n renderScale(choice, i) {\n let scale = choice.scale.map(item => this.scaleIndicator(choice, item, i));\n let padding = this.term === 'Hyper' ? '' : ' ';\n return scale.join(padding + this.symbols.line.repeat(this.edgeLength));\n }\n\n /**\n * Render a choice, including scale =>\n * \"The website is easy to navigate. ◯───◯───◉───◯───◯\"\n */\n\n async renderChoice(choice, i) {\n await this.onChoice(choice, i);\n\n let focused = this.index === i;\n let pointer = await this.pointer(choice, i);\n let hint = await choice.hint;\n\n if (hint && !utils.hasColor(hint)) {\n hint = this.styles.muted(hint);\n }\n\n let pad = str => this.margin[3] + str.replace(/\\s+$/, '').padEnd(this.widths[0], ' ');\n let newline = this.newline;\n let ind = this.indent(choice);\n let message = await this.resolve(choice.message, this.state, choice, i);\n let scale = await this.renderScale(choice, i);\n let margin = this.margin[1] + this.margin[3];\n this.scaleLength = colors.unstyle(scale).length;\n this.widths[0] = Math.min(this.widths[0], this.width - this.scaleLength - margin.length);\n let msg = utils.wordWrap(message, { width: this.widths[0], newline });\n let lines = msg.split('\\n').map(line => pad(line) + this.margin[1]);\n\n if (focused) {\n scale = this.styles.info(scale);\n lines = lines.map(line => this.styles.info(line));\n }\n\n lines[0] += scale;\n\n if (this.linebreak) lines.push('');\n return [ind + pointer, lines.join('\\n')].filter(Boolean);\n }\n\n async renderChoices() {\n if (this.state.submitted) return '';\n this.tableize();\n let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n let visible = await Promise.all(choices);\n let heading = await this.renderScaleHeading();\n return this.margin[0] + [heading, ...visible.map(v => v.join(' '))].join('\\n');\n }\n\n async render() {\n let { submitted, size } = this.state;\n\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n let prompt = '';\n if (this.options.promptLine !== false) {\n prompt = [prefix, message, separator, ''].join(' ');\n this.state.prompt = prompt;\n }\n\n let header = await this.header();\n let output = await this.format();\n let key = await this.renderScaleKey();\n let help = await this.error() || await this.hint();\n let body = await this.renderChoices();\n let footer = await this.footer();\n let err = this.emptyError;\n\n if (output) prompt += output;\n if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n if (submitted && !output && !body.trim() && this.multiple && err != null) {\n prompt += this.styles.danger(err);\n }\n\n this.clear(size);\n this.write([header, prompt, key, body, footer].filter(Boolean).join('\\n'));\n if (!this.state.submitted) {\n this.write(this.margin[2]);\n }\n this.restore();\n }\n\n submit() {\n this.value = {};\n for (let choice of this.choices) {\n this.value[choice.name] = choice.scaleIndex;\n }\n return this.base.submit.call(this);\n }\n}\n\nmodule.exports = LikertScale;\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst clean = (str = '') => {\n return typeof str === 'string' ? str.replace(/^['\"]|['\"]$/g, '') : '';\n};\n\n/**\n * This file contains the interpolation and rendering logic for\n * the Snippet prompt.\n */\n\nclass Item {\n constructor(token) {\n this.name = token.key;\n this.field = token.field || {};\n this.value = clean(token.initial || this.field.initial || '');\n this.message = token.message || this.name;\n this.cursor = 0;\n this.input = '';\n this.lines = [];\n }\n}\n\nconst tokenize = async(options = {}, defaults = {}, fn = token => token) => {\n let unique = new Set();\n let fields = options.fields || [];\n let input = options.template;\n let tabstops = [];\n let items = [];\n let keys = [];\n let line = 1;\n\n if (typeof input === 'function') {\n input = await input();\n }\n\n let i = -1;\n let next = () => input[++i];\n let peek = () => input[i + 1];\n let push = token => {\n token.line = line;\n tabstops.push(token);\n };\n\n push({ type: 'bos', value: '' });\n\n while (i < input.length - 1) {\n let value = next();\n\n if (/^[^\\S\\n ]$/.test(value)) {\n push({ type: 'text', value });\n continue;\n }\n\n if (value === '\\n') {\n push({ type: 'newline', value });\n line++;\n continue;\n }\n\n if (value === '\\\\') {\n value += next();\n push({ type: 'text', value });\n continue;\n }\n\n if ((value === '$' || value === '#' || value === '{') && peek() === '{') {\n let n = next();\n value += n;\n\n let token = { type: 'template', open: value, inner: '', close: '', value };\n let ch;\n\n while ((ch = next())) {\n if (ch === '}') {\n if (peek() === '}') ch += next();\n token.value += ch;\n token.close = ch;\n break;\n }\n\n if (ch === ':') {\n token.initial = '';\n token.key = token.inner;\n } else if (token.initial !== void 0) {\n token.initial += ch;\n }\n\n token.value += ch;\n token.inner += ch;\n }\n\n token.template = token.open + (token.initial || token.inner) + token.close;\n token.key = token.key || token.inner;\n\n if (defaults.hasOwnProperty(token.key)) {\n token.initial = defaults[token.key];\n }\n\n token = fn(token);\n push(token);\n\n keys.push(token.key);\n unique.add(token.key);\n\n let item = items.find(item => item.name === token.key);\n token.field = fields.find(ch => ch.name === token.key);\n\n if (!item) {\n item = new Item(token);\n items.push(item);\n }\n\n item.lines.push(token.line - 1);\n continue;\n }\n\n let last = tabstops[tabstops.length - 1];\n if (last.type === 'text' && last.line === line) {\n last.value += value;\n } else {\n push({ type: 'text', value });\n }\n }\n\n push({ type: 'eos', value: '' });\n return { input, tabstops, unique, keys, items };\n};\n\nmodule.exports = async prompt => {\n let options = prompt.options;\n let required = new Set(options.required === true ? [] : (options.required || []));\n let defaults = { ...options.values, ...options.initial };\n let { tabstops, items, keys } = await tokenize(options, defaults);\n\n let result = createFn('result', prompt, options);\n let format = createFn('format', prompt, options);\n let isValid = createFn('validate', prompt, options, true);\n let isVal = prompt.isValue.bind(prompt);\n\n return async(state = {}, submitted = false) => {\n let index = 0;\n\n state.required = required;\n state.items = items;\n state.keys = keys;\n state.output = '';\n\n let validate = async(value, state, item, index) => {\n let error = await isValid(value, state, item, index);\n if (error === false) {\n return 'Invalid field ' + item.name;\n }\n return error;\n };\n\n for (let token of tabstops) {\n let value = token.value;\n let key = token.key;\n\n if (token.type !== 'template') {\n if (value) state.output += value;\n continue;\n }\n\n if (token.type === 'template') {\n let item = items.find(ch => ch.name === key);\n\n if (options.required === true) {\n state.required.add(item.name);\n }\n\n let val = [item.input, state.values[item.value], item.value, value].find(isVal);\n let field = item.field || {};\n let message = field.message || token.inner;\n\n if (submitted) {\n let error = await validate(state.values[key], state, item, index);\n if ((error && typeof error === 'string') || error === false) {\n state.invalid.set(key, error);\n continue;\n }\n\n state.invalid.delete(key);\n let res = await result(state.values[key], state, item, index);\n state.output += colors.unstyle(res);\n continue;\n }\n\n item.placeholder = false;\n\n let before = value;\n value = await format(value, state, item, index);\n\n if (val !== value) {\n state.values[key] = val;\n value = prompt.styles.typing(val);\n state.missing.delete(message);\n\n } else {\n state.values[key] = void 0;\n val = `<${message}>`;\n value = prompt.styles.primary(val);\n item.placeholder = true;\n\n if (state.required.has(key)) {\n state.missing.add(message);\n }\n }\n\n if (state.missing.has(message) && state.validating) {\n value = prompt.styles.warning(val);\n }\n\n if (state.invalid.has(key) && state.validating) {\n value = prompt.styles.danger(val);\n }\n\n if (index === state.index) {\n if (before !== value) {\n value = prompt.styles.underline(value);\n } else {\n value = prompt.styles.heading(colors.unstyle(value));\n }\n }\n\n index++;\n }\n\n if (value) {\n state.output += value;\n }\n }\n\n let lines = state.output.split('\\n').map(l => ' ' + l);\n let len = items.length;\n let done = 0;\n\n for (let item of items) {\n if (state.invalid.has(item.name)) {\n item.lines.forEach(i => {\n if (lines[i][0] !== ' ') return;\n lines[i] = state.styles.danger(state.symbols.bullet) + lines[i].slice(1);\n });\n }\n\n if (prompt.isValue(state.values[item.name])) {\n done++;\n }\n }\n\n state.completed = ((done / len) * 100).toFixed(0);\n state.output = lines.join('\\n');\n return state.output;\n };\n};\n\nfunction createFn(prop, prompt, options, fallback) {\n return (value, state, item, index) => {\n if (typeof item.field[prop] === 'function') {\n return item.field[prop].call(prompt, value, state, item, index);\n }\n return [fallback, value].find(v => prompt.isValue(v));\n };\n}\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst interpolate = require('../interpolate');\nconst Prompt = require('../prompt');\n\nclass SnippetPrompt extends Prompt {\n constructor(options) {\n super(options);\n this.cursorHide();\n this.reset(true);\n }\n\n async initialize() {\n this.interpolate = await interpolate(this);\n await super.initialize();\n }\n\n async reset(first) {\n this.state.keys = [];\n this.state.invalid = new Map();\n this.state.missing = new Set();\n this.state.completed = 0;\n this.state.values = {};\n\n if (first !== true) {\n await this.initialize();\n await this.render();\n }\n }\n\n moveCursor(n) {\n let item = this.getItem();\n this.cursor += n;\n item.cursor += n;\n }\n\n dispatch(ch, key) {\n if (!key.code && !key.ctrl && ch != null && this.getItem()) {\n this.append(ch, key);\n return;\n }\n this.alert();\n }\n\n append(ch, key) {\n let item = this.getItem();\n let prefix = item.input.slice(0, this.cursor);\n let suffix = item.input.slice(this.cursor);\n this.input = item.input = `${prefix}${ch}${suffix}`;\n this.moveCursor(1);\n this.render();\n }\n\n delete() {\n let item = this.getItem();\n if (this.cursor <= 0 || !item.input) return this.alert();\n let suffix = item.input.slice(this.cursor);\n let prefix = item.input.slice(0, this.cursor - 1);\n this.input = item.input = `${prefix}${suffix}`;\n this.moveCursor(-1);\n this.render();\n }\n\n increment(i) {\n return i >= this.state.keys.length - 1 ? 0 : i + 1;\n }\n\n decrement(i) {\n return i <= 0 ? this.state.keys.length - 1 : i - 1;\n }\n\n first() {\n this.state.index = 0;\n this.render();\n }\n\n last() {\n this.state.index = this.state.keys.length - 1;\n this.render();\n }\n\n right() {\n if (this.cursor >= this.input.length) return this.alert();\n this.moveCursor(1);\n this.render();\n }\n\n left() {\n if (this.cursor <= 0) return this.alert();\n this.moveCursor(-1);\n this.render();\n }\n\n prev() {\n this.state.index = this.decrement(this.state.index);\n this.getItem();\n this.render();\n }\n\n next() {\n this.state.index = this.increment(this.state.index);\n this.getItem();\n this.render();\n }\n\n up() {\n this.prev();\n }\n\n down() {\n this.next();\n }\n\n format(value) {\n let color = this.state.completed < 100 ? this.styles.warning : this.styles.success;\n if (this.state.submitted === true && this.state.completed !== 100) {\n color = this.styles.danger;\n }\n return color(`${this.state.completed}% completed`);\n }\n\n async render() {\n let { index, keys = [], submitted, size } = this.state;\n\n let newline = [this.options.newline, '\\n'].find(v => v != null);\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n this.state.prompt = prompt;\n\n let header = await this.header();\n let error = (await this.error()) || '';\n let hint = (await this.hint()) || '';\n let body = submitted ? '' : await this.interpolate(this.state);\n\n let key = this.state.key = keys[index] || '';\n let input = await this.format(key);\n let footer = await this.footer();\n if (input) prompt += ' ' + input;\n if (hint && !input && this.state.completed === 0) prompt += ' ' + hint;\n\n this.clear(size);\n let lines = [header, prompt, body, footer, error.trim()];\n this.write(lines.filter(Boolean).join(newline));\n this.restore();\n }\n\n getItem(name) {\n let { items, keys, index } = this.state;\n let item = items.find(ch => ch.name === keys[index]);\n if (item && item.input != null) {\n this.input = item.input;\n this.cursor = item.cursor;\n }\n return item;\n }\n\n async submit() {\n if (typeof this.interpolate !== 'function') await this.initialize();\n await this.interpolate(this.state, true);\n\n let { invalid, missing, output, values } = this.state;\n if (invalid.size) {\n let err = '';\n for (let [key, value] of invalid) err += `Invalid ${key}: ${value}\\n`;\n this.state.error = err;\n return super.submit();\n }\n\n if (missing.size) {\n this.state.error = 'Required: ' + [...missing.keys()].join(', ');\n return super.submit();\n }\n\n let lines = colors.unstyle(output).split('\\n');\n let result = lines.map(v => v.slice(1)).join('\\n');\n this.value = { values, result };\n return super.submit();\n }\n}\n\nmodule.exports = SnippetPrompt;\n","'use strict';\n\nconst hint = '(Use <shift>+<up/down> to sort)';\nconst Prompt = require('./select');\n\nclass Sort extends Prompt {\n constructor(options) {\n super({ ...options, reorder: false, sort: true, multiple: true });\n this.state.hint = [this.options.hint, hint].find(this.isValue.bind(this));\n }\n\n indicator() {\n return '';\n }\n\n async renderChoice(choice, i) {\n let str = await super.renderChoice(choice, i);\n let sym = this.symbols.identicalTo + ' ';\n let pre = (this.index === i && this.sorting) ? this.styles.muted(sym) : ' ';\n if (this.options.drag === false) pre = '';\n if (this.options.numbered === true) {\n return pre + `${i + 1} - ` + str;\n }\n return pre + str;\n }\n\n get selected() {\n return this.choices;\n }\n\n submit() {\n this.value = this.choices.map(choice => choice.value);\n return super.submit();\n }\n}\n\nmodule.exports = Sort;\n","'use strict';\n\nconst ArrayPrompt = require('../types/array');\n\nclass Survey extends ArrayPrompt {\n constructor(options = {}) {\n super(options);\n this.emptyError = options.emptyError || 'No items were selected';\n this.term = process.env.TERM_PROGRAM;\n\n if (!this.options.header) {\n let header = ['', '4 - Strongly Agree', '3 - Agree', '2 - Neutral', '1 - Disagree', '0 - Strongly Disagree', ''];\n header = header.map(ele => this.styles.muted(ele));\n this.state.header = header.join('\\n ');\n }\n }\n\n async toChoices(...args) {\n if (this.createdScales) return false;\n this.createdScales = true;\n let choices = await super.toChoices(...args);\n for (let choice of choices) {\n choice.scale = createScale(5, this.options);\n choice.scaleIdx = 2;\n }\n return choices;\n }\n\n dispatch() {\n this.alert();\n }\n\n space() {\n let choice = this.focused;\n let ele = choice.scale[choice.scaleIdx];\n let selected = ele.selected;\n choice.scale.forEach(e => (e.selected = false));\n ele.selected = !selected;\n return this.render();\n }\n\n indicator() {\n return '';\n }\n\n pointer() {\n return '';\n }\n\n separator() {\n return this.styles.muted(this.symbols.ellipsis);\n }\n\n right() {\n let choice = this.focused;\n if (choice.scaleIdx >= choice.scale.length - 1) return this.alert();\n choice.scaleIdx++;\n return this.render();\n }\n\n left() {\n let choice = this.focused;\n if (choice.scaleIdx <= 0) return this.alert();\n choice.scaleIdx--;\n return this.render();\n }\n\n indent() {\n return ' ';\n }\n\n async renderChoice(item, i) {\n await this.onChoice(item, i);\n let focused = this.index === i;\n let isHyper = this.term === 'Hyper';\n let n = !isHyper ? 8 : 9;\n let s = !isHyper ? ' ' : '';\n let ln = this.symbols.line.repeat(n);\n let sp = ' '.repeat(n + (isHyper ? 0 : 1));\n let dot = enabled => (enabled ? this.styles.success('◉') : '◯') + s;\n\n let num = i + 1 + '.';\n let color = focused ? this.styles.heading : this.styles.noop;\n let msg = await this.resolve(item.message, this.state, item, i);\n let indent = this.indent(item);\n let scale = indent + item.scale.map((e, i) => dot(i === item.scaleIdx)).join(ln);\n let val = i => i === item.scaleIdx ? color(i) : i;\n let next = indent + item.scale.map((e, i) => val(i)).join(sp);\n\n let line = () => [num, msg].filter(Boolean).join(' ');\n let lines = () => [line(), scale, next, ' '].filter(Boolean).join('\\n');\n\n if (focused) {\n scale = this.styles.cyan(scale);\n next = this.styles.cyan(next);\n }\n\n return lines();\n }\n\n async renderChoices() {\n if (this.state.submitted) return '';\n let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n let visible = await Promise.all(choices);\n if (!visible.length) visible.push(this.styles.danger('No matching choices'));\n return visible.join('\\n');\n }\n\n format() {\n if (this.state.submitted) {\n let values = this.choices.map(ch => this.styles.info(ch.scaleIdx));\n return values.join(', ');\n }\n return '';\n }\n\n async render() {\n let { submitted, size } = this.state;\n\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n this.state.prompt = prompt;\n\n let header = await this.header();\n let output = await this.format();\n let help = await this.error() || await this.hint();\n let body = await this.renderChoices();\n let footer = await this.footer();\n\n if (output || !help) prompt += ' ' + output;\n if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n if (submitted && !output && !body && this.multiple && this.type !== 'form') {\n prompt += this.styles.danger(this.emptyError);\n }\n\n this.clear(size);\n this.write([prompt, header, body, footer].filter(Boolean).join('\\n'));\n this.restore();\n }\n\n submit() {\n this.value = {};\n for (let choice of this.choices) {\n this.value[choice.name] = choice.scaleIdx;\n }\n return this.base.submit.call(this);\n }\n}\n\nfunction createScale(n, options = {}) {\n if (Array.isArray(options.scale)) {\n return options.scale.map(ele => ({ ...ele }));\n }\n let scale = [];\n for (let i = 1; i < n + 1; i++) scale.push({ i, selected: false });\n return scale;\n}\n\nmodule.exports = Survey;\n","module.exports = require('./input');\n","'use strict';\n\nconst BooleanPrompt = require('../types/boolean');\n\nclass TogglePrompt extends BooleanPrompt {\n async initialize() {\n await super.initialize();\n this.value = this.initial = !!this.options.initial;\n this.disabled = this.options.disabled || 'no';\n this.enabled = this.options.enabled || 'yes';\n await this.render();\n }\n\n reset() {\n this.value = this.initial;\n this.render();\n }\n\n delete() {\n this.alert();\n }\n\n toggle() {\n this.value = !this.value;\n this.render();\n }\n\n enable() {\n if (this.value === true) return this.alert();\n this.value = true;\n this.render();\n }\n disable() {\n if (this.value === false) return this.alert();\n this.value = false;\n this.render();\n }\n\n up() {\n this.toggle();\n }\n down() {\n this.toggle();\n }\n right() {\n this.toggle();\n }\n left() {\n this.toggle();\n }\n next() {\n this.toggle();\n }\n prev() {\n this.toggle();\n }\n\n dispatch(ch = '', key) {\n switch (ch.toLowerCase()) {\n case ' ':\n return this.toggle();\n case '1':\n case 'y':\n case 't':\n return this.enable();\n case '0':\n case 'n':\n case 'f':\n return this.disable();\n default: {\n return this.alert();\n }\n }\n }\n\n format() {\n let active = str => this.styles.primary.underline(str);\n let value = [\n this.value ? this.disabled : active(this.disabled),\n this.value ? active(this.enabled) : this.enabled\n ];\n return value.join(this.styles.muted(' / '));\n }\n\n async render() {\n let { size } = this.state;\n\n let header = await this.header();\n let prefix = await this.prefix();\n let separator = await this.separator();\n let message = await this.message();\n\n let output = await this.format();\n let help = (await this.error()) || (await this.hint());\n let footer = await this.footer();\n\n let prompt = [prefix, message, separator, output].join(' ');\n this.state.prompt = prompt;\n\n if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n this.clear(size);\n this.write([header, prompt, footer].filter(Boolean).join('\\n'));\n this.write(this.margin[2]);\n this.restore();\n }\n}\n\nmodule.exports = TogglePrompt;\n","'use strict';\n\nconst SelectPrompt = require('./select');\n\nclass Quiz extends SelectPrompt {\n constructor(options) {\n super(options);\n if (typeof this.options.correctChoice !== 'number' || this.options.correctChoice < 0) {\n throw new Error('Please specify the index of the correct answer from the list of choices');\n }\n }\n\n async toChoices(value, parent) {\n let choices = await super.toChoices(value, parent);\n if (choices.length < 2) {\n throw new Error('Please give at least two choices to the user');\n }\n if (this.options.correctChoice > choices.length) {\n throw new Error('Please specify the index of the correct answer from the list of choices');\n }\n return choices;\n }\n\n check(state) {\n return state.index === this.options.correctChoice;\n }\n\n async result(selected) {\n return {\n selectedAnswer: selected,\n correctAnswer: this.options.choices[this.options.correctChoice].value,\n correct: await this.check(this.state)\n };\n }\n}\n\nmodule.exports = Quiz;\n","'use strict';\n\nconst utils = require('../utils');\n\nconst define = (key, fn) => {\n utils.defineExport(exports, key, fn);\n utils.defineExport(exports, key.toLowerCase(), fn);\n};\n\ndefine('AutoComplete', () => require('./autocomplete'));\ndefine('BasicAuth', () => require('./basicauth'));\ndefine('Confirm', () => require('./confirm'));\ndefine('Editable', () => require('./editable'));\ndefine('Form', () => require('./form'));\ndefine('Input', () => require('./input'));\ndefine('Invisible', () => require('./invisible'));\ndefine('List', () => require('./list'));\ndefine('MultiSelect', () => require('./multiselect'));\ndefine('Numeral', () => require('./numeral'));\ndefine('Password', () => require('./password'));\ndefine('Scale', () => require('./scale'));\ndefine('Select', () => require('./select'));\ndefine('Snippet', () => require('./snippet'));\ndefine('Sort', () => require('./sort'));\ndefine('Survey', () => require('./survey'));\ndefine('Text', () => require('./text'));\ndefine('Toggle', () => require('./toggle'));\ndefine('Quiz', () => require('./quiz'));\n","module.exports = {\n ArrayPrompt: require('./array'),\n AuthPrompt: require('./auth'),\n BooleanPrompt: require('./boolean'),\n NumberPrompt: require('./number'),\n StringPrompt: require('./string')\n};\n","'use strict';\n\nconst assert = require('assert');\nconst Events = require('events');\nconst utils = require('./lib/utils');\n\n/**\n * Create an instance of `Enquirer`.\n *\n * ```js\n * const Enquirer = require('enquirer');\n * const enquirer = new Enquirer();\n * ```\n * @name Enquirer\n * @param {Object} `options` (optional) Options to use with all prompts.\n * @param {Object} `answers` (optional) Answers object to initialize with.\n * @api public\n */\n\nclass Enquirer extends Events {\n constructor(options, answers) {\n super();\n this.options = utils.merge({}, options);\n this.answers = { ...answers };\n }\n\n /**\n * Register a custom prompt type.\n *\n * ```js\n * const Enquirer = require('enquirer');\n * const enquirer = new Enquirer();\n * enquirer.register('customType', require('./custom-prompt'));\n * ```\n * @name register()\n * @param {String} `type`\n * @param {Function|Prompt} `fn` `Prompt` class, or a function that returns a `Prompt` class.\n * @return {Object} Returns the Enquirer instance\n * @api public\n */\n\n register(type, fn) {\n if (utils.isObject(type)) {\n for (let key of Object.keys(type)) this.register(key, type[key]);\n return this;\n }\n assert.equal(typeof fn, 'function', 'expected a function');\n let name = type.toLowerCase();\n if (fn.prototype instanceof this.Prompt) {\n this.prompts[name] = fn;\n } else {\n this.prompts[name] = fn(this.Prompt, this);\n }\n return this;\n }\n\n /**\n * Prompt function that takes a \"question\" object or array of question objects,\n * and returns an object with responses from the user.\n *\n * ```js\n * const Enquirer = require('enquirer');\n * const enquirer = new Enquirer();\n *\n * const response = await enquirer.prompt({\n * type: 'input',\n * name: 'username',\n * message: 'What is your username?'\n * });\n * console.log(response);\n * ```\n * @name prompt()\n * @param {Array|Object} `questions` Options objects for one or more prompts to run.\n * @return {Promise} Promise that returns an \"answers\" object with the user's responses.\n * @api public\n */\n\n async prompt(questions = []) {\n for (let question of [].concat(questions)) {\n try {\n if (typeof question === 'function') question = await question.call(this);\n await this.ask(utils.merge({}, this.options, question));\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return this.answers;\n }\n\n async ask(question) {\n if (typeof question === 'function') {\n question = await question.call(this);\n }\n\n let opts = utils.merge({}, this.options, question);\n let { type, name } = question;\n let { set, get } = utils;\n\n if (typeof type === 'function') {\n type = await type.call(this, question, this.answers);\n }\n\n if (!type) return this.answers[name];\n\n assert(this.prompts[type], `Prompt \"${type}\" is not registered`);\n\n let prompt = new this.prompts[type](opts);\n let value = get(this.answers, name);\n\n prompt.state.answers = this.answers;\n prompt.enquirer = this;\n\n if (name) {\n prompt.on('submit', value => {\n this.emit('answer', name, value, prompt);\n set(this.answers, name, value);\n });\n }\n\n // bubble events\n let emit = prompt.emit.bind(prompt);\n prompt.emit = (...args) => {\n this.emit.call(this, ...args);\n return emit(...args);\n };\n\n this.emit('prompt', prompt, this);\n\n if (opts.autofill && value != null) {\n prompt.value = prompt.input = value;\n\n // if \"autofill=show\" render the prompt, otherwise stay \"silent\"\n if (opts.autofill === 'show') {\n await prompt.submit();\n }\n } else {\n value = prompt.value = await prompt.run();\n }\n\n return value;\n }\n\n /**\n * Use an enquirer plugin.\n *\n * ```js\n * const Enquirer = require('enquirer');\n * const enquirer = new Enquirer();\n * const plugin = enquirer => {\n * // do stuff to enquire instance\n * };\n * enquirer.use(plugin);\n * ```\n * @name use()\n * @param {Function} `plugin` Plugin function that takes an instance of Enquirer.\n * @return {Object} Returns the Enquirer instance.\n * @api public\n */\n\n use(plugin) {\n plugin.call(this, this);\n return this;\n }\n\n set Prompt(value) {\n this._Prompt = value;\n }\n get Prompt() {\n return this._Prompt || this.constructor.Prompt;\n }\n\n get prompts() {\n return this.constructor.prompts;\n }\n\n static set Prompt(value) {\n this._Prompt = value;\n }\n static get Prompt() {\n return this._Prompt || require('./lib/prompt');\n }\n\n static get prompts() {\n return require('./lib/prompts');\n }\n\n static get types() {\n return require('./lib/types');\n }\n\n /**\n * Prompt function that takes a \"question\" object or array of question objects,\n * and returns an object with responses from the user.\n *\n * ```js\n * const { prompt } = require('enquirer');\n * const response = await prompt({\n * type: 'input',\n * name: 'username',\n * message: 'What is your username?'\n * });\n * console.log(response);\n * ```\n * @name Enquirer#prompt\n * @param {Array|Object} `questions` Options objects for one or more prompts to run.\n * @return {Promise} Promise that returns an \"answers\" object with the user's responses.\n * @api public\n */\n\n static get prompt() {\n const fn = (questions, ...rest) => {\n let enquirer = new this(...rest);\n let emit = enquirer.emit.bind(enquirer);\n enquirer.emit = (...args) => {\n fn.emit(...args);\n return emit(...args);\n };\n return enquirer.prompt(questions);\n };\n utils.mixinEmitter(fn, new Events());\n return fn;\n }\n}\n\nutils.mixinEmitter(Enquirer, new Events());\nconst prompts = Enquirer.prompts;\n\nfor (let name of Object.keys(prompts)) {\n let key = name.toLowerCase();\n\n let run = options => new prompts[name](options).run();\n Enquirer.prompt[key] = run;\n Enquirer[key] = run;\n\n if (!Enquirer[name]) {\n Reflect.defineProperty(Enquirer, name, { get: () => prompts[name] });\n }\n}\n\nconst exp = name => {\n utils.defineExport(Enquirer, name, () => Enquirer.types[name]);\n};\n\nexp('ArrayPrompt');\nexp('AuthPrompt');\nexp('BooleanPrompt');\nexp('NumberPrompt');\nexp('StringPrompt');\n\nmodule.exports = Enquirer;\n","import fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport mri from 'mri';\nimport glob from 'tiny-glob/sync.js';\nimport fuzzysearch from 'fuzzysearch';\nimport enquirer from 'enquirer';\nimport degit from './index.js';\nimport { tryRequire, base } from './utils.js';\n\nconst args = mri(process.argv.slice(2), {\n\talias: {\n\t\tf: 'force',\n\t\tc: 'cache',\n\t\tv: 'verbose',\n\t\tm: 'mode'\n\t},\n\tboolean: ['force', 'cache', 'verbose']\n});\n\nconst [src, dest = '.'] = args._;\n\nasync function main() {\n\tif (args.help) {\n\t\tconst help = fs\n\t\t\t.readFileSync(path.join(__dirname, 'help.md'), 'utf-8')\n\t\t\t.replace(/^(\\s*)#+ (.+)/gm, (m, s, _) => s + chalk.bold(_))\n\t\t\t.replace(/_([^_]+)_/g, (m, _) => chalk.underline(_))\n\t\t\t.replace(/`([^`]+)`/g, (m, _) => chalk.cyan(_));\n\n\t\tprocess.stdout.write(`\\n${help}\\n`);\n\t} else if (!src) {\n\t\t// interactive mode\n\n\t\tconst accessLookup = new Map();\n\n\t\tglob(`**/access.json`, { cwd: base }).forEach(file => {\n\t\t\tconst [host, user, repo] = file.split(path.sep);\n\n\t\t\tconst json = fs.readFileSync(`${base}/${file}`, 'utf-8');\n\t\t\tconst logs = JSON.parse(json);\n\n\t\t\tObject.entries(logs).forEach(([ref, timestamp]) => {\n\t\t\t\tconst id = `${host}:${user}/${repo}#${ref}`;\n\t\t\t\taccessLookup.set(id, new Date(timestamp).getTime());\n\t\t\t});\n\t\t});\n\n\t\tconst getChoice = file => {\n\t\t\tconst [host, user, repo] = file.split(path.sep);\n\n\t\t\treturn Object.entries(tryRequire(`${base}/${file}`)).map(\n\t\t\t\t([ref, hash]) => ({\n\t\t\t\t\tname: hash,\n\t\t\t\t\tmessage: `${host}:${user}/${repo}#${ref}`,\n\t\t\t\t\tvalue: `${host}:${user}/${repo}#${ref}`\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\n\t\tconst choices = glob(`**/map.json`, { cwd: base })\n\t\t\t.map(getChoice)\n\t\t\t.reduce(\n\t\t\t\t(accumulator, currentValue) => accumulator.concat(currentValue),\n\t\t\t\t[]\n\t\t\t)\n\t\t\t.sort((a, b) => {\n\t\t\t\tconst aTime = accessLookup.get(a.value) || 0;\n\t\t\t\tconst bTime = accessLookup.get(b.value) || 0;\n\n\t\t\t\treturn bTime - aTime;\n\t\t\t});\n\n\t\tconst options = await enquirer.prompt([\n\t\t\t{\n\t\t\t\ttype: 'autocomplete',\n\t\t\t\tname: 'src',\n\t\t\t\tmessage: 'Repo to clone?',\n\t\t\t\tsuggest: (input, choices) =>\n\t\t\t\t\tchoices.filter(({ value }) => fuzzysearch(input, value)),\n\t\t\t\tchoices\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'input',\n\t\t\t\tname: 'dest',\n\t\t\t\tmessage: 'Destination directory?',\n\t\t\t\tinitial: '.'\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'toggle',\n\t\t\t\tname: 'cache',\n\t\t\t\tmessage: 'Use cached version?'\n\t\t\t}\n\t\t]);\n\n\t\tconst empty =\n\t\t\t!fs.existsSync(options.dest) || fs.readdirSync(options.dest).length === 0;\n\n\t\tif (!empty) {\n\t\t\tconst { force } = await enquirer.prompt([\n\t\t\t\t{\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\tname: 'force',\n\t\t\t\t\tmessage: 'Overwrite existing files?'\n\t\t\t\t}\n\t\t\t]);\n\n\t\t\tif (!force) {\n\t\t\t\tconsole.error(chalk.magenta(`! Directory not empty — aborting`));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\trun(options.src, options.dest, {\n\t\t\tforce: true,\n\t\t\tcache: options.cache\n\t\t});\n\t} else {\n\t\trun(src, dest, args);\n\t}\n}\n\nfunction run(src, dest, args) {\n\tconst d = degit(src, args);\n\n\td.on('info', event => {\n\t\tconsole.error(chalk.cyan(`> ${event.message.replace('options.', '--')}`));\n\t});\n\n\td.on('warn', event => {\n\t\tconsole.error(\n\t\t\tchalk.magenta(`! ${event.message.replace('options.', '--')}`)\n\t\t);\n\t});\n\n\td.clone(dest).catch(err => {\n\t\tconsole.error(chalk.red(`! ${err.message.replace('options.', '--')}`));\n\t\tprocess.exit(1);\n\t});\n}\n\nmain();\n"],"names":["isWin","os","path","require$$0","fs","globalyzer","globrex","isObject","create","colors","readline","symbols","styles","Events","State","keypress","ansi","Prompt","roles","ArrayPrompt","Select","SelectPrompt","defaultAuthenticate","factory","FormPrompt","AuthPrompt","isPrimitive","BooleanPrompt","Form","StringPrompt","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","assert","chalk","glob","base","tryRequire","fuzzysearch","degit"],"mappings":"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"}
\No newline at end of file