@ooneex/cli 1.12.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,97 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../node_modules/.bun/ansi-colors@4.1.3/node_modules/ansi-colors/symbols.js", "../../node_modules/.bun/ansi-colors@4.1.3/node_modules/ansi-colors/index.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/utils.js", "../../node_modules/.bun/ansi-regex@5.0.1/node_modules/ansi-regex/index.js", "../../node_modules/.bun/strip-ansi@6.0.1/node_modules/strip-ansi/index.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/combos.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/queue.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/keypress.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/timer.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/state.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/styles.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/symbols.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/theme.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/ansi.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompt.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/roles.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/array.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/select.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/autocomplete.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/placeholder.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/form.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/auth.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/basicauth.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/boolean.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/confirm.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/editable.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/string.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/completer.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/input.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/invisible.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/list.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/multiselect.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/number.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/password.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/scale.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/interpolate.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/snippet.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/sort.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/survey.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/toggle.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/quiz.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/prompts/index.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/lib/types/index.js", "../../node_modules/.bun/enquirer@2.4.1/node_modules/enquirer/index.js", "../../node_modules/.bun/pluralize@8.0.0/node_modules/pluralize/pluralize.js", "src/decorators.ts", "src/container.ts", "src/commandRun.ts", "src/getCommand.ts", "src/commands/CompletionZshCommand.ts", "src/commands/MakeAiCommand.ts", "src/prompts/askName.ts", "src/constraints/AssertName.ts", "src/commands/MakeAnalyticsCommand.ts", "src/commands/MakeAppCommand.ts", "src/prompts/askDestination.ts", "src/commands/MakeControllerCommand.ts", "src/prompts/askConfirm.ts", "../types/dist/index.js", "src/prompts/askRouteMethod.ts", "src/constraints/AssertRouteMethod.ts", "src/prompts/askRouteName.ts", "src/constraints/AssertRouteName.ts", "src/prompts/askRoutePath.ts", "src/constraints/AssertRoutePath.ts", "src/commands/MakeModuleCommand.ts", "src/commands/MakeCacheCommand.ts", "src/commands/MakeClaudeSkillCommand.ts", "src/commands/MakeCommandCommand.ts", "src/commands/MakeCronCommand.ts", "src/commands/MakeDatabaseCommand.ts", "src/commands/MakeDockerCommand.ts", "src/prompts/askDockerService.ts", "src/templates/docker/index.ts", "src/commands/MakeEntityCommand.ts", "src/commands/MakeLoggerCommand.ts", "src/commands/MakeMailerCommand.ts", "src/commands/MakeMiddlewareCommand.ts", "src/commands/MakeMigrationCommand.ts", "src/commands/MakePermissionCommand.ts", "src/commands/MakePubSubCommand.ts", "src/commands/MakeReleaseCommand.ts", "src/commands/MakeRepositoryCommand.ts", "src/commands/MakeResourceBookCommand.ts", "src/commands/MakeServiceCommand.ts", "src/commands/MakeSeedCommand.ts", "src/commands/MakeStorageCommand.ts", "src/commands/MakeVectorDatabaseCommand.ts"],
4
- "sourcesContent": [
5
- "'use strict';\n\nconst isHyper = typeof process !== 'undefined' && process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = typeof process !== 'undefined' && process.platform === 'win32';\nconst isLinux = typeof process !== 'undefined' && 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 question: '?',\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 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 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",
6
- "'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(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 hasColor = () => {\n if (typeof process !== 'undefined') {\n return process.env.FORCE_COLOR !== '0';\n }\n return false;\n};\n\nconst create = () => {\n const colors = {\n enabled: hasColor(),\n visible: true,\n styles: {},\n keys: {}\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",
7
- "'use strict';\n\nconst toString = Object.prototype.toString;\nconst colors = require('ansi-colors');\nlet onExitCalled = false;\nlet onExitCallbacks = new Set();\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 (hasOwnProperty.call(desc, 'value')) {\n if (hasOwnProperty.call(target, key) && isObject(desc.value)) {\n let existing = Object.getOwnPropertyDescriptor(target, key);\n if (isObject(existing.value) && existing.value !== desc.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\nconst onExit = (quit, code) => {\n if (onExitCalled) return;\n\n onExitCalled = true;\n onExitCallbacks.forEach(fn => fn());\n\n if (quit === true) {\n process.exit(128 + code);\n }\n};\nconst onSigTerm = onExit.bind(null, true, 15);\nconst onSigInt = onExit.bind(null, true, 2);\n\nexports.onExit = callback => {\n if (onExitCallbacks.size === 0) {\n process.once('SIGTERM', onSigTerm);\n process.once('SIGINT', onSigInt);\n process.once('exit', onExit);\n }\n\n onExitCallbacks.add(callback);\n\n return () => {\n onExitCallbacks.delete(callback);\n if (onExitCallbacks.size === 0) {\n process.off('SIGTERM', onSigTerm);\n process.off('SIGINT', onSigInt);\n process.off('exit', onExit);\n }\n }\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",
8
- "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n",
9
- "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n",
10
- "'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",
11
- "'use strict';\n\nmodule.exports = class Queue {\n _queue = [];\n _executing = false;\n _jobRunner = null;\n\n constructor(jobRunner) {\n this._jobRunner = jobRunner;\n }\n\n enqueue = (...args) => {\n this._queue.push(args);\n this._dequeue();\n };\n\n destroy() {\n this._queue.length = 0;\n this._jobRunner = null;\n }\n\n _dequeue() {\n if (this._executing || !this._queue.length) return;\n this._executing = true;\n\n this._jobRunner(...this._queue.shift());\n\n setTimeout(() => {\n this._executing = false;\n this._dequeue();\n });\n }\n};\n",
12
- "'use strict';\n\nconst readline = require('readline');\nconst combos = require('./combos');\nconst Queue = require('./queue');\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 const queue = new Queue((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', queue.enqueue);\n rl.resume();\n\n let off = () => {\n if (stdin.isTTY) stdin.setRawMode(isRaw);\n stdin.removeListener('keypress', queue.enqueue);\n queue.destroy();\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",
13
- "'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",
14
- "'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",
15
- "'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 (!hasOwnProperty.call(result, key)) {\n Reflect.defineProperty(result, key, { get: () => colors[key] });\n }\n }\n\n for (let key of Object.keys(colors.styles)) {\n if (!hasOwnProperty.call(result, key)) {\n Reflect.defineProperty(result, key, { get: () => colors[key] });\n }\n }\n return result;\n};\n\nmodule.exports = styles;\n",
16
- "'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",
17
- "'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",
18
- "'use strict';\n\nconst isTerm = process.env.TERM_PROGRAM === 'Apple_Terminal';\nconst stripAnsi = require('strip-ansi');\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 strLen(str) {\n // to suport chinese\n var realLength = 0, len = str.length, charCode = -1;\n for (var i = 0; i < len; i++) {\n charCode = str.charCodeAt(i);\n if (charCode >= 0 && charCode <= 128) realLength += 1;\n else realLength += 2;\n }\n return realLength;\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(this.strLen(prompt));\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) ? - this.strLen(initial) : -this.strLen(input) + cursor;\n if (after) pos -= this.strLen(after);\n if (input === '' && initial && !prompt.includes(initial)) {\n pos += this.strLen(initial);\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 => [...stripAnsi(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",
19
- "'use strict';\n\nconst Events = require('events');\nconst stripAnsi = require('strip-ansi');\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\n const fn = this.options[key.action] || this[key.action] || this.dispatch;\n\n if (typeof fn === 'function') {\n return await fn.call(this, input, key);\n }\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 const releaseOnExit = utils.onExit(() => this.cursorShow());\n this.on('close', () => {\n this.cursorShow();\n releaseOnExit();\n });\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 = stripAnsi(prompt);\n let buf = stripAnsi(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 this.emit('start', this);\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\n if (await this.skip()) {\n this.render = () => {};\n return this.submit();\n }\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\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\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",
20
- "'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",
21
- "'use strict';\n\nconst stripAnsi = require('strip-ansi');\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, stripAnsi(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 if (!this.focused) return;\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() {\n if (!this.choices.some(ch => !!ch.parent)) return this.a();\n const focused = this.focused;\n this.toggle((focused.parent && !focused.choices) ? focused.parent : focused);\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() && !this.allChoicesAreDisabled()) {\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() && !this.allChoicesAreDisabled()) {\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 allChoicesAreDisabled(choices = this.choices) {\n return choices.every(choice => this.isDisabled(choice));\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",
22
- "'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",
23
- "'use strict';\n\nconst Select = require('./select');\n\nconst highlight = (input, color) => {\n const regex = input ? new RegExp(input, 'ig') : /$^/;\n\n return str => {\n return input ? str.replace(regex, match => color(match)) : 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\n if (this.options.multiple && this.state.submitted) {\n return this.selected.map(ch => this.styles.primary(ch.message)).join(', ');\n }\n\n if (this.state.submitted) {\n let value = this.value = this.input = this.focused.value;\n return this.styles.primary(value);\n }\n\n return this.input;\n }\n\n async render() {\n if (this.state.status !== 'pending') return super.render();\n const hl = this.options.highlight || this.styles.complement;\n\n const style = (input, color) => {\n if (!input) return input;\n if (hl.stack) return hl(input);\n return hl.call(this, input);\n };\n\n const color = highlight(this.input, style);\n const 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",
24
- "'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",
25
- "'use strict';\n\nconst stripAnsi = require('strip-ansi');\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, input = '' } = choice;\n let { muted, submitted, primary, danger } = styles;\n\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 ].filter(Boolean).join(' ');\n\n if (state.submitted) {\n msg = stripAnsi(msg);\n input = submitted(input);\n\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",
26
- "'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",
27
- "'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",
28
- "'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",
29
- "'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",
30
- "'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",
31
- "'use strict';\n\nconst Prompt = require('../prompt');\nconst keypress = require('../keypress');\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 this.keypressTimeout =\n this.options.keypressTimeout !== undefined\n ? this.options.keypressTimeout\n : null;\n }\n\n async keypress(input, key = input ? keypress(input, {}) : {}) {\n const now = Date.now();\n const elapsed = now - this.lastKeypress;\n this.lastKeypress = now;\n\n const isEnterKey = key.name === 'return' || key.name === 'enter';\n let prev = this.state.prevKeypress;\n let append;\n this.state.prevKeypress = key;\n\n if (this.keypressTimeout != null && isEnterKey) {\n if (elapsed < this.keypressTimeout) {\n return this.submit();\n }\n\n this.state.multilineBuffer = this.state.multilineBuffer || '';\n this.state.multilineBuffer += input;\n append = true;\n prev = null;\n }\n\n if (append || (this.options.multiline && isEnterKey)) {\n if (!prev || prev.name !== 'return') {\n return this.append('\\n', key);\n }\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",
32
- "'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",
33
- "'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",
34
- "'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass InvisiblePrompt extends StringPrompt {\n format() {\n return '';\n }\n}\n\nmodule.exports = InvisiblePrompt;\n",
35
- "'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",
36
- "'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",
37
- "'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",
38
- "'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",
39
- "'use strict';\n\nconst stripAnsi = require('strip-ansi');\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 = stripAnsi(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",
40
- "'use strict';\n\nconst stripAnsi = require('strip-ansi');\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 (hasOwnProperty.call(defaults, 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 += stripAnsi(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(stripAnsi(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",
41
- "'use strict';\n\nconst stripAnsi = require('strip-ansi');\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 = stripAnsi(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",
42
- "'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",
43
- "'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",
44
- "'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.resolve(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",
45
- "'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",
46
- "'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",
47
- "module.exports = {\n ArrayPrompt: require('./array'),\n AuthPrompt: require('./auth'),\n BooleanPrompt: require('./boolean'),\n NumberPrompt: require('./number'),\n StringPrompt: require('./string')\n};\n",
48
- "'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\n assert.equal(typeof fn, 'function', 'expected a function');\n const name = type.toLowerCase();\n\n if (fn.prototype instanceof this.Prompt) {\n this.prompts[name] = fn;\n } else {\n this.prompts[name] = fn(this.Prompt, this);\n }\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 if (type === 'number') type = 'numeral';\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 define = name => {\n utils.defineExport(Enquirer, name, () => Enquirer.types[name]);\n};\n\ndefine('ArrayPrompt');\ndefine('AuthPrompt');\ndefine('BooleanPrompt');\ndefine('NumberPrompt');\ndefine('StringPrompt');\n\nmodule.exports = Enquirer;\n",
49
- "/* global define */\n\n(function (root, pluralize) {\n /* istanbul ignore else */\n if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n // Node.\n module.exports = pluralize();\n } else if (typeof define === 'function' && define.amd) {\n // AMD, registers as an anonymous module.\n define(function () {\n return pluralize();\n });\n } else {\n // Browser global.\n root.pluralize = pluralize();\n }\n})(this, function () {\n // Rule storage - pluralize and singularize need to be run sequentially,\n // while other rules can be optimized using an object for instant lookups.\n var pluralRules = [];\n var singularRules = [];\n var uncountables = {};\n var irregularPlurals = {};\n var irregularSingles = {};\n\n /**\n * Sanitize a pluralization rule to a usable regular expression.\n *\n * @param {(RegExp|string)} rule\n * @return {RegExp}\n */\n function sanitizeRule (rule) {\n if (typeof rule === 'string') {\n return new RegExp('^' + rule + '$', 'i');\n }\n\n return rule;\n }\n\n /**\n * Pass in a word token to produce a function that can replicate the case on\n * another word.\n *\n * @param {string} word\n * @param {string} token\n * @return {Function}\n */\n function restoreCase (word, token) {\n // Tokens are an exact match.\n if (word === token) return token;\n\n // Lower cased words. E.g. \"hello\".\n if (word === word.toLowerCase()) return token.toLowerCase();\n\n // Upper cased words. E.g. \"WHISKY\".\n if (word === word.toUpperCase()) return token.toUpperCase();\n\n // Title cased words. E.g. \"Title\".\n if (word[0] === word[0].toUpperCase()) {\n return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n }\n\n // Lower cased words. E.g. \"test\".\n return token.toLowerCase();\n }\n\n /**\n * Interpolate a regexp string.\n *\n * @param {string} str\n * @param {Array} args\n * @return {string}\n */\n function interpolate (str, args) {\n return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n return args[index] || '';\n });\n }\n\n /**\n * Replace a word using a rule.\n *\n * @param {string} word\n * @param {Array} rule\n * @return {string}\n */\n function replace (word, rule) {\n return word.replace(rule[0], function (match, index) {\n var result = interpolate(rule[1], arguments);\n\n if (match === '') {\n return restoreCase(word[index - 1], result);\n }\n\n return restoreCase(match, result);\n });\n }\n\n /**\n * Sanitize a word by passing in the word and sanitization rules.\n *\n * @param {string} token\n * @param {string} word\n * @param {Array} rules\n * @return {string}\n */\n function sanitizeWord (token, word, rules) {\n // Empty string or doesn't need fixing.\n if (!token.length || uncountables.hasOwnProperty(token)) {\n return word;\n }\n\n var len = rules.length;\n\n // Iterate over the sanitization rules and use the first one to match.\n while (len--) {\n var rule = rules[len];\n\n if (rule[0].test(word)) return replace(word, rule);\n }\n\n return word;\n }\n\n /**\n * Replace a word with the updated word.\n *\n * @param {Object} replaceMap\n * @param {Object} keepMap\n * @param {Array} rules\n * @return {Function}\n */\n function replaceWord (replaceMap, keepMap, rules) {\n return function (word) {\n // Get the correct token and case restoration functions.\n var token = word.toLowerCase();\n\n // Check against the keep object map.\n if (keepMap.hasOwnProperty(token)) {\n return restoreCase(word, token);\n }\n\n // Check against the replacement map for a direct word replacement.\n if (replaceMap.hasOwnProperty(token)) {\n return restoreCase(word, replaceMap[token]);\n }\n\n // Run all the rules against the word.\n return sanitizeWord(token, word, rules);\n };\n }\n\n /**\n * Check if a word is part of the map.\n */\n function checkWord (replaceMap, keepMap, rules, bool) {\n return function (word) {\n var token = word.toLowerCase();\n\n if (keepMap.hasOwnProperty(token)) return true;\n if (replaceMap.hasOwnProperty(token)) return false;\n\n return sanitizeWord(token, token, rules) === token;\n };\n }\n\n /**\n * Pluralize or singularize a word based on the passed in count.\n *\n * @param {string} word The word to pluralize\n * @param {number} count How many of the word exist\n * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n * @return {string}\n */\n function pluralize (word, count, inclusive) {\n var pluralized = count === 1\n ? pluralize.singular(word) : pluralize.plural(word);\n\n return (inclusive ? count + ' ' : '') + pluralized;\n }\n\n /**\n * Pluralize a word.\n *\n * @type {Function}\n */\n pluralize.plural = replaceWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Check if a word is plural.\n *\n * @type {Function}\n */\n pluralize.isPlural = checkWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Singularize a word.\n *\n * @type {Function}\n */\n pluralize.singular = replaceWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Check if a word is singular.\n *\n * @type {Function}\n */\n pluralize.isSingular = checkWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Add a pluralization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addPluralRule = function (rule, replacement) {\n pluralRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add a singularization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addSingularRule = function (rule, replacement) {\n singularRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add an uncountable word rule.\n *\n * @param {(string|RegExp)} word\n */\n pluralize.addUncountableRule = function (word) {\n if (typeof word === 'string') {\n uncountables[word.toLowerCase()] = true;\n return;\n }\n\n // Set singular and plural references for the word.\n pluralize.addPluralRule(word, '$0');\n pluralize.addSingularRule(word, '$0');\n };\n\n /**\n * Add an irregular word definition.\n *\n * @param {string} single\n * @param {string} plural\n */\n pluralize.addIrregularRule = function (single, plural) {\n plural = plural.toLowerCase();\n single = single.toLowerCase();\n\n irregularSingles[single] = plural;\n irregularPlurals[plural] = single;\n };\n\n /**\n * Irregular rules.\n */\n [\n // Pronouns.\n ['I', 'we'],\n ['me', 'us'],\n ['he', 'they'],\n ['she', 'they'],\n ['them', 'them'],\n ['myself', 'ourselves'],\n ['yourself', 'yourselves'],\n ['itself', 'themselves'],\n ['herself', 'themselves'],\n ['himself', 'themselves'],\n ['themself', 'themselves'],\n ['is', 'are'],\n ['was', 'were'],\n ['has', 'have'],\n ['this', 'these'],\n ['that', 'those'],\n // Words ending in with a consonant and `o`.\n ['echo', 'echoes'],\n ['dingo', 'dingoes'],\n ['volcano', 'volcanoes'],\n ['tornado', 'tornadoes'],\n ['torpedo', 'torpedoes'],\n // Ends with `us`.\n ['genus', 'genera'],\n ['viscus', 'viscera'],\n // Ends with `ma`.\n ['stigma', 'stigmata'],\n ['stoma', 'stomata'],\n ['dogma', 'dogmata'],\n ['lemma', 'lemmata'],\n ['schema', 'schemata'],\n ['anathema', 'anathemata'],\n // Other irregular rules.\n ['ox', 'oxen'],\n ['axe', 'axes'],\n ['die', 'dice'],\n ['yes', 'yeses'],\n ['foot', 'feet'],\n ['eave', 'eaves'],\n ['goose', 'geese'],\n ['tooth', 'teeth'],\n ['quiz', 'quizzes'],\n ['human', 'humans'],\n ['proof', 'proofs'],\n ['carve', 'carves'],\n ['valve', 'valves'],\n ['looey', 'looies'],\n ['thief', 'thieves'],\n ['groove', 'grooves'],\n ['pickaxe', 'pickaxes'],\n ['passerby', 'passersby']\n ].forEach(function (rule) {\n return pluralize.addIrregularRule(rule[0], rule[1]);\n });\n\n /**\n * Pluralization rules.\n */\n [\n [/s?$/i, 's'],\n [/[^\\u0000-\\u007F]$/i, '$0'],\n [/([^aeiou]ese)$/i, '$1'],\n [/(ax|test)is$/i, '$1es'],\n [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n [/(e[mn]u)s?$/i, '$1s'],\n [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n [/(seraph|cherub)(?:im)?$/i, '$1im'],\n [/(her|at|gr)o$/i, '$1oes'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n [/sis$/i, 'ses'],\n [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n [/([^aeiouy]|qu)y$/i, '$1ies'],\n [/([^ch][ieo][ln])ey$/i, '$1ies'],\n [/(x|ch|ss|sh|zz)$/i, '$1es'],\n [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n [/(pe)(?:rson|ople)$/i, '$1ople'],\n [/(child)(?:ren)?$/i, '$1ren'],\n [/eaux$/i, '$0'],\n [/m[ae]n$/i, 'men'],\n ['thou', 'you']\n ].forEach(function (rule) {\n return pluralize.addPluralRule(rule[0], rule[1]);\n });\n\n /**\n * Singularization rules.\n */\n [\n [/s$/i, ''],\n [/(ss)$/i, '$1'],\n [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n [/ies$/i, 'y'],\n [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n [/\\b(mon|smil)ies$/i, '$1ey'],\n [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n [/(seraph|cherub)im$/i, '$1'],\n [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n [/(test)(?:is|es)$/i, '$1is'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n [/(alumn|alg|vertebr)ae$/i, '$1a'],\n [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n [/(matr|append)ices$/i, '$1ix'],\n [/(pe)(rson|ople)$/i, '$1rson'],\n [/(child)ren$/i, '$1'],\n [/(eau)x?$/i, '$1'],\n [/men$/i, 'man']\n ].forEach(function (rule) {\n return pluralize.addSingularRule(rule[0], rule[1]);\n });\n\n /**\n * Uncountable rules.\n */\n [\n // Singular words with no plurals.\n 'adulthood',\n 'advice',\n 'agenda',\n 'aid',\n 'aircraft',\n 'alcohol',\n 'ammo',\n 'analytics',\n 'anime',\n 'athletics',\n 'audio',\n 'bison',\n 'blood',\n 'bream',\n 'buffalo',\n 'butter',\n 'carp',\n 'cash',\n 'chassis',\n 'chess',\n 'clothing',\n 'cod',\n 'commerce',\n 'cooperation',\n 'corps',\n 'debris',\n 'diabetes',\n 'digestion',\n 'elk',\n 'energy',\n 'equipment',\n 'excretion',\n 'expertise',\n 'firmware',\n 'flounder',\n 'fun',\n 'gallows',\n 'garbage',\n 'graffiti',\n 'hardware',\n 'headquarters',\n 'health',\n 'herpes',\n 'highjinks',\n 'homework',\n 'housework',\n 'information',\n 'jeans',\n 'justice',\n 'kudos',\n 'labour',\n 'literature',\n 'machinery',\n 'mackerel',\n 'mail',\n 'media',\n 'mews',\n 'moose',\n 'music',\n 'mud',\n 'manga',\n 'news',\n 'only',\n 'personnel',\n 'pike',\n 'plankton',\n 'pliers',\n 'police',\n 'pollution',\n 'premises',\n 'rain',\n 'research',\n 'rice',\n 'salmon',\n 'scissors',\n 'series',\n 'sewage',\n 'shambles',\n 'shrimp',\n 'software',\n 'species',\n 'staff',\n 'swine',\n 'tennis',\n 'traffic',\n 'transportation',\n 'trout',\n 'tuna',\n 'wealth',\n 'welfare',\n 'whiting',\n 'wildebeest',\n 'wildlife',\n 'you',\n /pok[eé]mon$/i,\n // Regexes.\n /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n /deer$/i, // \"deer\", \"reindeer\"\n /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n /measles$/i,\n /o[iu]s$/i, // \"carnivorous\"\n /pox$/i, // \"chickpox\", \"smallpox\"\n /sheep$/i\n ].forEach(pluralize.addUncountableRule);\n\n return pluralize;\n});\n",
50
- "import { container, EContainerScope } from \"@ooneex/container\";\nimport { COMMANDS_CONTAINER } from \"./container\";\nimport type { CommandClassType } from \"./types\";\n\nexport const decorator = {\n command: (scope: EContainerScope = EContainerScope.Singleton) => {\n return (command: CommandClassType): void => {\n container.add(command, scope);\n COMMANDS_CONTAINER.push(command);\n };\n },\n};\n",
51
- "import type { CommandClassType } from \"./types\";\n\nexport const COMMANDS_CONTAINER: CommandClassType[] = [];\n",
52
- "import { parseArgs } from \"node:util\";\nimport type { IException } from \"@ooneex/exception\";\nimport { Exception } from \"@ooneex/exception\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport type { HttpMethodType } from \"@ooneex/types\";\nimport { getCommand } from \"./getCommand\";\nimport \"./commands\";\n\nexport const commandRun = async () => {\n const { values, positionals } = parseArgs({\n args: Bun.argv,\n options: {\n name: {\n type: \"string\",\n },\n \"route-name\": {\n type: \"string\",\n },\n \"route-path\": {\n type: \"string\",\n },\n \"route-method\": {\n type: \"string\",\n },\n \"is-socket\": {\n type: \"boolean\",\n },\n dir: {\n type: \"string\",\n },\n channel: {\n type: \"string\",\n },\n \"table-name\": {\n type: \"string\",\n },\n module: {\n type: \"string\",\n },\n destination: {\n type: \"string\",\n },\n },\n strict: false,\n allowPositionals: true,\n });\n\n const logger = new TerminalLogger();\n\n const commandName = positionals[2];\n\n if (!commandName) {\n logger.error(\"Command name is required\\n\");\n process.exit(1);\n }\n\n const command = getCommand(commandName);\n\n if (!command) {\n logger.info(\"No commands found\\n\");\n process.exit(1);\n }\n\n const parsedValues = {\n name: values.name,\n dir: values.dir,\n channel: values.channel,\n isSocket: values[\"is-socket\"],\n tableName: values[\"table-name\"],\n module: values.module,\n destination: values.destination,\n route: {\n name: values[\"route-name\"],\n path: values[\"route-path\"] as `/${string}` | undefined,\n method: values[\"route-method\"] as HttpMethodType | undefined,\n },\n };\n\n try {\n await command.run(parsedValues);\n } catch (error) {\n const exception: IException =\n error instanceof Exception ? error : new Exception(error instanceof Error ? error : String(error));\n logger.error(exception, undefined, {\n showArrow: false,\n showTimestamp: false,\n showLevel: false,\n });\n process.exit(1);\n }\n};\n",
53
- "import { container } from \"@ooneex/container\";\nimport { COMMANDS_CONTAINER } from \"./container\";\nimport type { ICommand } from \"./types\";\n\nexport const getCommand = (name: string): ICommand | null => {\n let command: ICommand | null = null;\n\n COMMANDS_CONTAINER.find((CommandClass) => {\n command = container.get(CommandClass);\n\n return command.getName() === name;\n });\n\n return command;\n};\n",
54
- "import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { decorator } from \"../decorators\";\nimport ooTemplate from \"../templates/completions/_oo.txt\";\nimport ooneexTemplate from \"../templates/completions/_ooneex.txt\";\nimport type { ICommand } from \"../types\";\n\n@decorator.command()\nexport class CompletionZshCommand implements ICommand {\n public getName(): string {\n return \"completion:zsh\";\n }\n\n public getDescription(): string {\n return \"Install Zsh completion for oo command\";\n }\n\n public async run(): Promise<void> {\n const completionDir = join(homedir(), \".zsh\");\n\n const ooFilePath = join(completionDir, \"_oo\");\n await Bun.write(ooFilePath, ooTemplate);\n\n const ooneexFilePath = join(completionDir, \"_ooneex\");\n await Bun.write(ooneexFilePath, ooneexTemplate);\n\n const logger = new TerminalLogger();\n\n logger.success(`${ooFilePath} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${ooneexFilePath} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.info(\n \"Add the following to your .zshrc if not already present:\\n fpath=(~/.zsh $fpath)\\n autoload -Uz compinit && compinit\",\n undefined,\n {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n },\n );\n }\n}\n",
55
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/ai.test.txt\";\nimport template from \"../templates/ai.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeAiCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:ai\";\n }\n\n public getDescription(): string {\n return \"Generate a new AI class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter name\" });\n }\n\n name = toPascalCase(name).replace(/Ai$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const aiLocalDir = join(base, \"src\", \"ai\");\n const aiDir = join(process.cwd(), aiLocalDir);\n const filePath = join(aiDir, `${name}Ai.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"ai\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Ai.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(aiLocalDir, name)}Ai.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Ai.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/ai dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/ai\"] && !devDeps[\"@ooneex/ai\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/ai\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
56
- "import { prompt } from \"enquirer\";\nimport { AssertName } from \"../constraints/AssertName\";\n\nexport const askName = async (config: { message: string }) => {\n const response = await prompt<{ name: string }>({\n type: \"input\",\n name: \"name\",\n message: config.message,\n validate: (value) => {\n const constraint = new AssertName();\n const result = constraint.validate(value);\n\n if (!result.isValid) {\n return result.message || \"Controller name is invalid\";\n }\n\n return true;\n },\n });\n\n return response.name;\n};\n",
57
- "import { Assert, type AssertType, Validation, type ValidationResultType } from \"@ooneex/validation\";\n\nconst NAME_MIN_LENGTH = 1;\nconst NAME_REGEX = /^[a-zA-Z][a-zA-Z0-9-]*$/;\n\nexport class AssertName extends Validation {\n public getConstraint(): AssertType {\n return Assert(`string >= ${NAME_MIN_LENGTH}`);\n }\n\n public getErrorMessage(): string | null {\n return \"Name must start with a letter and contain only letters, numbers, and hyphens\";\n }\n\n public override validate(data: unknown, constraint?: AssertType): ValidationResultType {\n const basicValidation = super.validate(data, constraint);\n if (!basicValidation.isValid) {\n return basicValidation;\n }\n\n const name = data as string;\n\n if (!NAME_REGEX.test(name)) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid name format\",\n };\n }\n\n return {\n isValid: true,\n };\n }\n}\n",
58
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/analytics.test.txt\";\nimport template from \"../templates/analytics.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeAnalyticsCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:analytics\";\n }\n\n public getDescription(): string {\n return \"Generate a new analytics class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter analytics name\" });\n }\n\n name = toPascalCase(name).replace(/Analytics$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const analyticsLocalDir = join(base, \"src\", \"analytics\");\n const analyticsDir = join(process.cwd(), analyticsLocalDir);\n const filePath = join(analyticsDir, `${name}Analytics.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"analytics\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Analytics.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(analyticsLocalDir, name)}Analytics.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Analytics.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/analytics dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/analytics\"] && !devDeps[\"@ooneex/analytics\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/analytics\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
59
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toKebabCase, toSnakeCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askDestination } from \"../prompts/askDestination\";\nimport { askName } from \"../prompts/askName\";\nimport commitlintTemplate from \"../templates/app/.commitlintrc.ts.txt\";\nimport gitignoreTemplate from \"../templates/app/.gitignore.txt\";\nimport databaseTemplate from \"../templates/app/app-database.txt\";\nimport biomeTemplate from \"../templates/app/biome.jsonc.txt\";\nimport bunfigTemplate from \"../templates/app/bunfig.toml.txt\";\nimport dockerfileTemplate from \"../templates/app/Dockerfile.txt\";\nimport dockerComposeTemplate from \"../templates/app/docker-compose.yml.txt\";\nimport envTemplate from \"../templates/app/env.txt\";\nimport indexTemplate from \"../templates/app/index.ts.txt\";\nimport nxTemplate from \"../templates/app/nx.json.txt\";\nimport packageTemplate from \"../templates/app/package.json.txt\";\nimport readmeTemplate from \"../templates/app/README.md.txt\";\nimport tsconfigTemplate from \"../templates/app/tsconfig.json.txt\";\nimport zedSettingsTemplate from \"../templates/app/zed-settings.json.txt\";\nimport type { ICommand } from \"../types\";\nimport { MakeControllerCommand } from \"./MakeControllerCommand\";\nimport { MakeModuleCommand } from \"./MakeModuleCommand\";\n\ntype CommandOptionsType = {\n name?: string;\n destination?: string;\n};\n\n@decorator.command()\nexport class MakeAppCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:app\";\n }\n\n public getDescription(): string {\n return \"Generate a new application\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, destination } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter application name\" });\n }\n\n const kebabName = toKebabCase(name);\n\n if (!destination) {\n destination = await askDestination({ message: \"Enter destination path\", initial: kebabName });\n }\n\n const packageContent = packageTemplate.replace(/{{NAME}}/g, kebabName);\n\n await Bun.write(join(destination, \".commitlintrc.ts\"), commitlintTemplate);\n await Bun.write(join(destination, \".gitignore\"), gitignoreTemplate);\n await Bun.write(join(destination, \"biome.jsonc\"), biomeTemplate);\n await Bun.write(join(destination, \"bunfig.toml\"), bunfigTemplate);\n await Bun.write(join(destination, \"nx.json\"), nxTemplate);\n await Bun.write(join(destination, \"package.json\"), packageContent);\n await Bun.write(join(destination, \"README.md\"), readmeTemplate.replace(/{{NAME}}/g, kebabName));\n await Bun.write(join(destination, \"tsconfig.json\"), tsconfigTemplate);\n await Bun.write(join(destination, \".zed\", \"settings.json\"), zedSettingsTemplate);\n\n // Create app module\n const makeModuleCommand = new MakeModuleCommand();\n await makeModuleCommand.run({\n name: \"app\",\n cwd: destination,\n silent: true,\n skipMigrations: true,\n skipSeeds: true,\n });\n\n const appModulePackagePath = join(destination, \"modules\", \"app\", \"package.json\");\n const appModulePackageJson = await Bun.file(appModulePackagePath).json();\n appModulePackageJson.scripts.dev = \"bun --hot run ./src/index.ts\";\n appModulePackageJson.scripts.build = \"bun build ./src/index.ts --outdir ./dist --target bun\";\n await Bun.write(appModulePackagePath, JSON.stringify(appModulePackageJson, null, 2));\n\n const envContent = envTemplate\n .replace(/^DATABASE_URL=/m, 'DATABASE_URL=\"postgresql://ooneex:ooneex@localhost:5432/ooneex\"')\n .replace(/^CACHE_REDIS_URL=/m, 'CACHE_REDIS_URL=\"redis://localhost:6379\"')\n .replace(/^PUBSUB_REDIS_URL=/m, 'PUBSUB_REDIS_URL=\"redis://localhost:6379\"')\n .replace(/^RATE_LIMIT_REDIS_URL=/m, 'RATE_LIMIT_REDIS_URL=\"redis://localhost:6379\"')\n .replace(/^DATABASE_REDIS_URL=/m, 'DATABASE_REDIS_URL=\"redis://localhost:6379\"');\n await Bun.write(join(destination, \"modules\", \"app\", \".env\"), envContent);\n await Bun.write(join(destination, \"modules\", \"app\", \".env.example\"), envTemplate);\n await Bun.write(join(destination, \"modules\", \"app\", \"src\", \"databases\", \"AppDatabase.ts\"), databaseTemplate);\n await Bun.write(join(destination, \"modules\", \"app\", \"src\", \"index.ts\"), indexTemplate);\n const snakeName = toSnakeCase(name);\n const dockerComposeContent = dockerComposeTemplate.replace(/{{NAME}}/g, snakeName);\n await Bun.write(join(destination, \"modules\", \"app\", \"docker-compose.yml\"), dockerComposeContent);\n const dockerfileContent = dockerfileTemplate.replace(/{{NAME}}/g, snakeName);\n await Bun.write(join(destination, \"modules\", \"app\", \"Dockerfile\"), dockerfileContent);\n await Bun.write(join(destination, \"modules\", \"app\", \"var\", \".gitkeep\"), \"\");\n\n // Create health check controller in app module\n const makeControllerCommand = new MakeControllerCommand();\n await makeControllerCommand.run({\n name: \"HealthCheck\",\n isSocket: false,\n module: \"app\",\n route: {\n name: \"api.health.check\",\n path: \"/healthcheck\",\n method: \"GET\",\n },\n });\n\n // Initialize git repository\n const gitInit = Bun.spawn([\"git\", \"init\"], { cwd: destination, stdout: \"ignore\", stderr: \"inherit\" });\n await gitInit.exited;\n\n // Install dependencies\n const addDeps = Bun.spawn(\n [\n \"bun\",\n \"add\",\n \"@ooneex/analytics\",\n \"@ooneex/app\",\n \"@ooneex/app-env\",\n \"@ooneex/auth\",\n \"@ooneex/cache\",\n \"@ooneex/container\",\n \"@ooneex/database\",\n \"@ooneex/logger\",\n \"@ooneex/mailer\",\n \"@ooneex/middleware\",\n \"@ooneex/module\",\n \"@ooneex/rate-limit\",\n \"@ooneex/role\",\n \"@ooneex/routing\",\n \"@ooneex/storage\",\n \"@ooneex/translation\",\n \"@ooneex/types\",\n \"@ooneex/user\",\n \"@ooneex/utils\",\n \"@ooneex/validation\",\n \"@ooneex/controller\",\n \"pg\",\n \"react\",\n \"react-dom\",\n \"apache-arrow\",\n \"reflect-metadata\",\n \"typeorm\",\n ],\n { cwd: destination, stdout: \"ignore\", stderr: \"inherit\" },\n );\n await addDeps.exited;\n\n // Install dev dependencies\n const addDevDeps = Bun.spawn(\n [\n \"bun\",\n \"add\",\n \"-D\",\n \"@biomejs/biome\",\n \"@commitlint/cli\",\n \"@commitlint/config-conventional\",\n \"@commitlint/prompt-cli\",\n \"@commitlint/types\",\n \"@types/bun\",\n \"@types/node\",\n \"@types/react\",\n \"@types/react-dom\",\n \"@typescript/native-preview\",\n \"husky\",\n \"lint-staged\",\n \"nx\",\n \"typescript\",\n \"undici-types\",\n ],\n { cwd: destination, stdout: \"ignore\", stderr: \"inherit\" },\n );\n await addDevDeps.exited;\n\n // Configure husky\n const huskyInit = Bun.spawn([\"bunx\", \"husky\", \"init\"], { cwd: destination, stdout: \"ignore\", stderr: \"inherit\" });\n await huskyInit.exited;\n\n await Bun.write(join(destination, \".husky\", \"pre-commit\"), \"lint-staged\");\n await Bun.write(join(destination, \".husky\", \"commit-msg\"), `bunx commitlint --edit \"$1\"`);\n\n const logger = new TerminalLogger();\n\n logger.success(`${kebabName} created successfully at ${destination}`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n}\n",
60
- "import { prompt } from \"enquirer\";\nimport { AssertName } from \"../constraints/AssertName\";\n\nexport const askDestination = async (config: { message: string; initial?: string }) => {\n const assertName = new AssertName();\n\n const response = await prompt<{ destination: string }>({\n type: \"input\",\n name: \"destination\",\n message: config.message,\n initial: config.initial || \".\",\n validate: (value) => {\n const result = assertName.validate(value);\n if (!result.isValid) {\n return result.message || \"Invalid destination\";\n }\n\n return true;\n },\n });\n\n return response.destination;\n};\n",
61
- "import { basename, join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport type { HttpMethodType } from \"@ooneex/types\";\nimport { toKebabCase, toPascalCase, trim } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askConfirm } from \"../prompts/askConfirm\";\nimport { askName } from \"../prompts/askName\";\nimport { askRouteMethod } from \"../prompts/askRouteMethod\";\nimport { askRouteName } from \"../prompts/askRouteName\";\nimport { askRoutePath } from \"../prompts/askRoutePath\";\nimport socketTemplate from \"../templates/controller.socket.txt\";\nimport testTemplate from \"../templates/controller.test.txt\";\nimport template from \"../templates/controller.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n isSocket?: boolean;\n route?: {\n name?: string;\n path?: `/${string}`;\n method?: HttpMethodType;\n };\n};\n\n@decorator.command()\nexport class MakeControllerCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:controller\";\n }\n\n public getDescription(): string {\n return \"Generate a new controller class\";\n }\n\n private async addToModule(modulePath: string, controllerName: string): Promise<void> {\n let content = await Bun.file(modulePath).text();\n const className = `${controllerName}Controller`;\n const importLine = `import { ${className} } from \"./controllers/${className}\";\\n`;\n\n // Add import after the last import statement\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n // Add controller to the controllers array\n const regex = /(controllers:\\s*\\[)([^\\]]*)/s;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const newValue = existing ? `${existing}, ${className}` : className;\n content = content.replace(regex, `$1${newValue}`);\n }\n\n await Bun.write(modulePath, content);\n }\n\n public async run(options: T): Promise<void> {\n let { name, module, isSocket } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter controller name\" });\n }\n\n if (isSocket === undefined) {\n isSocket = await askConfirm({ message: \"Is this a socket controller?\" });\n }\n\n name = toPascalCase(name).replace(/Controller$/, \"\");\n\n const { route = {} } = options;\n const selectedTemplate = isSocket ? socketTemplate : template;\n let content: string = selectedTemplate.replaceAll(\"{{NAME}}\", name);\n\n if (!route.name) {\n route.name = await askRouteName({ message: \"Enter route name (e.g., api.user.create)\" });\n }\n\n const routeTypeName = toPascalCase(route.name);\n\n content = content.replaceAll(\"{{ROUTE_NAME}}\", route.name).replaceAll(\"{{TYPE_NAME}}\", routeTypeName);\n\n if (!route.path) {\n route.path = (await askRoutePath({ message: \"Enter route path\", initial: \"/\" })) as `/${string}`;\n }\n\n const routePath = `/${toKebabCase(trim(route.path, \"/\"))}`;\n content = content.replaceAll(\"{{ROUTE_PATH}}\", routePath);\n\n if (!isSocket && !route.method) {\n route.method = (await askRouteMethod({ message: \"Enter route method\" })) as HttpMethodType;\n }\n\n if (!isSocket && route.method) {\n content = content.replaceAll(\"{{ROUTE_METHOD}}\", route.method.toLowerCase());\n }\n\n const base = module ? join(\"modules\", module) : \".\";\n const controllersLocalDir = join(base, \"src\", \"controllers\");\n const controllersDir = join(process.cwd(), controllersLocalDir);\n const filePath = join(controllersDir, `${name}Controller.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"controllers\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Controller.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const modulePascalName = module ? toPascalCase(module) : toPascalCase(basename(process.cwd()));\n const modulePath = join(process.cwd(), base, \"src\", `${modulePascalName}Module.ts`);\n if (await Bun.file(modulePath).exists()) {\n await this.addToModule(modulePath, name);\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(controllersLocalDir, name)}Controller.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Controller.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/controller dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/controller\"] && !devDeps[\"@ooneex/controller\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/controller\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
62
- "import { prompt } from \"enquirer\";\n\nexport const askConfirm = async (config: { message: string; initial?: boolean }) => {\n const response = await prompt<{ confirm: boolean }>({\n type: \"confirm\",\n name: \"confirm\",\n message: config.message,\n initial: config.initial,\n });\n\n return response.confirm;\n};\n",
63
- "// src/index.ts\nvar HTTP_METHODS = [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\", \"HEAD\"];\nexport {\n HTTP_METHODS\n};\n\n//# debugId=72D0E29CD0ABC2EB64756E2164756E21\n",
64
- "import { HTTP_METHODS } from \"@ooneex/types\";\nimport { prompt } from \"enquirer\";\nimport { AssertRouteMethod } from \"../constraints/AssertRouteMethod\";\n\nexport const askRouteMethod = async (config: { message: string; initial?: number }) => {\n const response = await prompt<{ method: string }>({\n type: \"select\",\n name: \"method\",\n message: config.message,\n initial: config.initial ?? 0,\n choices: HTTP_METHODS.map((method) => method),\n validate: (value) => {\n const constraint = new AssertRouteMethod();\n const result = constraint.validate(value);\n\n if (!result.isValid) {\n return result.message || \"Route method is invalid\";\n }\n\n return true;\n },\n });\n\n return response.method;\n};\n",
65
- "import { HTTP_METHODS } from \"@ooneex/types\";\nimport { Assert, type AssertType, Validation, type ValidationResultType } from \"@ooneex/validation\";\n\nexport class AssertRouteMethod extends Validation {\n public getConstraint(): AssertType {\n return Assert(\"string >= 3\");\n }\n\n public getErrorMessage(): string | null {\n return `Route method must be one of: ${HTTP_METHODS.join(\", \")}`;\n }\n\n public override validate(data: unknown, constraint?: AssertType): ValidationResultType {\n const basicValidation = super.validate(data, constraint);\n if (!basicValidation.isValid) {\n return basicValidation;\n }\n\n const method = data as string;\n\n // Check for leading or trailing whitespace\n if (method.trim() !== method) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route method format\",\n };\n }\n\n // Convert to uppercase for comparison\n const upperMethod = method.toUpperCase();\n\n // Check if the method is valid\n if (!HTTP_METHODS.includes(upperMethod as (typeof HTTP_METHODS)[number])) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route method\",\n };\n }\n\n return {\n isValid: true,\n };\n }\n}\n",
66
- "import { prompt } from \"enquirer\";\nimport { AssertRouteName } from \"../constraints/AssertRouteName\";\n\nexport const askRouteName = async (config: { message: string }) => {\n const response = await prompt<{ routeName: string }>({\n type: \"input\",\n name: \"routeName\",\n message: config.message,\n validate: (value) => {\n const constraint = new AssertRouteName();\n const result = constraint.validate(value);\n\n if (!result.isValid) {\n return result.message || \"Route name is invalid\";\n }\n\n return true;\n },\n });\n\n return response.routeName;\n};\n",
67
- "import { Assert, type AssertType, Validation, type ValidationResultType } from \"@ooneex/validation\";\n\nconst ROUTE_NAME_REGEX = /^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$/;\n\nexport class AssertRouteName extends Validation {\n public getConstraint(): AssertType {\n return Assert(\"string >= 7\");\n }\n\n public getErrorMessage(): string | null {\n return \"Route name must follow format: namespace.resource.action (e.g., 'api.users.list')\";\n }\n\n public override validate(data: unknown, constraint?: AssertType): ValidationResultType {\n const basicValidation = super.validate(data, constraint);\n if (!basicValidation.isValid) {\n return basicValidation;\n }\n\n const routeName = data as string;\n\n // Check for leading or trailing whitespace\n if (routeName.trim() !== routeName) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route name format\",\n };\n }\n\n // Check basic format (three segments separated by dots)\n if (!ROUTE_NAME_REGEX.test(routeName)) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route name format\",\n };\n }\n\n const segments = routeName.split(\".\");\n\n // Must have exactly three segments\n if (segments.length !== 3) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route name format\",\n };\n }\n\n const [namespace, resource, action] = segments;\n\n // Validate all segments are defined\n if (!namespace || !resource || !action) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route name format\",\n };\n }\n\n return {\n isValid: true,\n };\n }\n}\n",
68
- "import { prompt } from \"enquirer\";\nimport { AssertRoutePath } from \"../constraints/AssertRoutePath\";\n\nexport const askRoutePath = async (config: { message: string; initial?: string }) => {\n const response = await prompt<{ path: string }>({\n type: \"input\",\n name: \"path\",\n message: config.message,\n initial: config.initial ?? \"/\",\n validate: (value) => {\n const constraint = new AssertRoutePath();\n const result = constraint.validate(value);\n\n if (!result.isValid) {\n return result.message || \"Route path is invalid\";\n }\n\n return true;\n },\n });\n\n return response.path;\n};\n",
69
- "import { Assert, type AssertType, Validation, type ValidationResultType } from \"@ooneex/validation\";\n\nconst ROUTE_PATH_MIN_LENGTH = 1;\nconst ROUTE_PATH_REGEX = /^\\/[\\w\\-/:]*$/;\nconst VALID_SEGMENT_REGEX = /^[a-zA-Z0-9\\-_]+$/;\nconst PARAM_SEGMENT_REGEX = /^:[a-zA-Z][a-zA-Z0-9]*$/;\n\nexport class AssertRoutePath extends Validation {\n public getConstraint(): AssertType {\n return Assert(`string >= ${ROUTE_PATH_MIN_LENGTH}`);\n }\n\n public getErrorMessage(): string | null {\n return \"Route path must start with '/' and contain only valid segments (e.g., '/users', '/api/users/:id')\";\n }\n\n public override validate(data: unknown, constraint?: AssertType): ValidationResultType {\n const basicValidation = super.validate(data, constraint);\n if (!basicValidation.isValid) {\n return basicValidation;\n }\n\n const path = data as string;\n\n // Check for leading or trailing whitespace\n if (path.trim() !== path) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route path format\",\n };\n }\n\n // Must start with /\n if (!path.startsWith(\"/\")) {\n return {\n isValid: false,\n message: \"Route path must start with '/'\",\n };\n }\n\n // Check for trailing slash (not allowed except for root \"/\")\n if (path.length > 1 && path.endsWith(\"/\")) {\n return {\n isValid: false,\n message: \"Route path cannot end with '/' (except for root path)\",\n };\n }\n\n // Basic format check\n if (!ROUTE_PATH_REGEX.test(path)) {\n return {\n isValid: false,\n message: this.getErrorMessage() || \"Invalid route path format\",\n };\n }\n\n // If path is just \"/\", it's valid\n if (path === \"/\") {\n return {\n isValid: true,\n };\n }\n\n // Split into segments and validate each\n const segments = path.slice(1).split(\"/\");\n\n for (const segment of segments) {\n // Empty segments (double slashes) are not allowed\n if (!segment) {\n return {\n isValid: false,\n message: \"Route path cannot contain empty segments (double slashes)\",\n };\n }\n\n // Check if it's a parameter segment (starts with :)\n if (segment.startsWith(\":\")) {\n if (!PARAM_SEGMENT_REGEX.test(segment)) {\n return {\n isValid: false,\n message: `Invalid parameter segment '${segment}'. Parameters must follow format ':paramName' with alphanumeric characters only`,\n };\n }\n } else {\n // Regular segment validation\n if (!VALID_SEGMENT_REGEX.test(segment)) {\n return {\n isValid: false,\n message: `Invalid path segment '${segment}'. Segments must contain only letters, numbers, hyphens, and underscores`,\n };\n }\n }\n }\n\n return {\n isValid: true,\n };\n }\n}\n",
70
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toKebabCase, toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport commandRunTemplate from \"../templates/module/command.run.txt\";\nimport moduleTemplate from \"../templates/module/module.txt\";\nimport packageTemplate from \"../templates/module/package.txt\";\nimport testTemplate from \"../templates/module/test.txt\";\nimport tsconfigTemplate from \"../templates/module/tsconfig.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n cwd?: string;\n silent?: boolean;\n skipMigrations?: boolean;\n skipSeeds?: boolean;\n skipCommands?: boolean;\n};\n\n@decorator.command()\nexport class MakeModuleCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:module\";\n }\n\n public getDescription(): string {\n return \"Generate a new module\";\n }\n\n private async addToAppModule(appModulePath: string, pascalName: string, kebabName: string): Promise<void> {\n let content = await Bun.file(appModulePath).text();\n const moduleName = `${pascalName}Module`;\n const importPath = `@${kebabName}/${moduleName}`;\n const importLine = `import { ${moduleName} } from \"${importPath}\";\\n`;\n\n // Add import after the last import statement\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n // Spread new module arrays into each AppModule field\n const fields = [\"controllers\", \"entities\", \"middlewares\", \"cronJobs\", \"events\"] as const;\n for (const field of fields) {\n const regex = new RegExp(`(${field}:\\\\s*\\\\[)([^\\\\]]*)`, \"s\");\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const spread = `...${moduleName}.${field}`;\n const newValue = existing ? `${existing}, ${spread}` : spread;\n content = content.replace(regex, `$1${newValue}`);\n }\n }\n\n await Bun.write(appModulePath, content);\n }\n\n private async addModuleScope(commitlintPath: string, kebabName: string): Promise<void> {\n let content = await Bun.file(commitlintPath).text();\n\n const regex = /(\"scope-enum\":\\s*\\[\\s*RuleConfigSeverity\\.Error,\\s*\"always\",\\s*\\[)([\\s\\S]*?)(\\])/;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim() ?? \"\";\n const newScope = `\"${kebabName}\"`;\n if (!existing.includes(newScope)) {\n const newValue = existing ? `${existing}\\n ${newScope},` : `\\n ${newScope},`;\n content = content.replace(regex, `$1${newValue}\\n $3`);\n await Bun.write(commitlintPath, content);\n }\n }\n }\n\n private async addPathAlias(tsconfigPath: string, kebabName: string): Promise<void> {\n const content = await Bun.file(tsconfigPath).text();\n const tsconfig = JSON.parse(content);\n\n tsconfig.compilerOptions ??= {};\n tsconfig.compilerOptions.paths ??= {};\n tsconfig.compilerOptions.paths[`@${kebabName}/*`] = [`../${kebabName}/src/*`];\n\n await Bun.write(tsconfigPath, `${JSON.stringify(tsconfig, null, 2)}\\n`);\n }\n\n public async run(options: T): Promise<void> {\n const {\n cwd = process.cwd(),\n silent = false,\n skipMigrations = false,\n skipSeeds = false,\n skipCommands = false,\n } = options;\n let { name } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter module name\" });\n }\n\n const pascalName = toPascalCase(name).replace(/Module$/, \"\");\n const kebabName = toKebabCase(pascalName);\n\n const moduleDir = join(cwd, \"modules\", kebabName);\n const srcDir = join(moduleDir, \"src\");\n const testsDir = join(moduleDir, \"tests\");\n\n const moduleContent = moduleTemplate.replace(/{{NAME}}/g, pascalName);\n const packageContent = packageTemplate.replace(/{{NAME}}/g, kebabName);\n const testContent = testTemplate.replace(/{{NAME}}/g, pascalName);\n\n await Bun.write(join(srcDir, `${pascalName}Module.ts`), moduleContent);\n if (!skipMigrations) {\n await Bun.write(join(srcDir, \"migrations\", \"migrations.ts\"), \"\");\n }\n if (!skipSeeds) {\n await Bun.write(join(srcDir, \"seeds\", \"seeds.ts\"), \"\");\n }\n if (!skipCommands) {\n await Bun.write(join(srcDir, \"commands\", \"commands.ts\"), \"\");\n\n // Create bin/command/run.ts if it doesn't exist\n const binCommandRunPath = join(moduleDir, \"bin\", \"command\", \"run.ts\");\n const binCommandRunFile = Bun.file(binCommandRunPath);\n if (!(await binCommandRunFile.exists())) {\n await Bun.write(binCommandRunPath, commandRunTemplate);\n }\n }\n await Bun.write(join(moduleDir, \"package.json\"), packageContent);\n await Bun.write(join(moduleDir, \"tsconfig.json\"), tsconfigTemplate);\n await Bun.write(join(testsDir, `${pascalName}Module.spec.ts`), testContent);\n\n // Add module to AppModule\n if (kebabName !== \"app\") {\n const appModulePath = join(cwd, \"modules\", \"app\", \"src\", \"AppModule.ts\");\n if (await Bun.file(appModulePath).exists()) {\n await this.addToAppModule(appModulePath, pascalName, kebabName);\n }\n\n // Add path alias in app module tsconfig\n const appTsconfigPath = join(cwd, \"modules\", \"app\", \"tsconfig.json\");\n if (await Bun.file(appTsconfigPath).exists()) {\n await this.addPathAlias(appTsconfigPath, kebabName);\n }\n }\n\n // Add module scope to commitlint config if it exists\n const commitlintPath = join(cwd, \".commitlintrc.ts\");\n if (await Bun.file(commitlintPath).exists()) {\n await this.addModuleScope(commitlintPath, kebabName);\n }\n\n if (!silent) {\n const logger = new TerminalLogger();\n\n logger.success(`modules/${kebabName} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n\n // Install @ooneex/module dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/module\"] && !devDeps[\"@ooneex/module\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/module\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
71
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/cache.test.txt\";\nimport template from \"../templates/cache.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeCacheCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:cache\";\n }\n\n public getDescription(): string {\n return \"Generate a new cache class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter cache name\" });\n }\n\n name = toPascalCase(name).replace(/Cache$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const cacheLocalDir = join(base, \"src\", \"cache\");\n const cacheDir = join(process.cwd(), cacheLocalDir);\n const filePath = join(cacheDir, `${name}Cache.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"cache\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Cache.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(cacheLocalDir, name)}Cache.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Cache.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/cache dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/cache\"] && !devDeps[\"@ooneex/cache\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/cache\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
72
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { decorator } from \"../decorators\";\nimport commit from \"../templates/claude/skills/commit.md.txt\";\nimport makeAi from \"../templates/claude/skills/make.ai.md.txt\";\nimport makeAnalytics from \"../templates/claude/skills/make.analytics.md.txt\";\nimport makeCache from \"../templates/claude/skills/make.cache.md.txt\";\nimport makeController from \"../templates/claude/skills/make.controller.md.txt\";\nimport makeCron from \"../templates/claude/skills/make.cron.md.txt\";\nimport makeDatabase from \"../templates/claude/skills/make.database.md.txt\";\nimport makeEntity from \"../templates/claude/skills/make.entity.md.txt\";\nimport makeLogger from \"../templates/claude/skills/make.logger.md.txt\";\nimport makeMailer from \"../templates/claude/skills/make.mailer.md.txt\";\nimport makeMiddleware from \"../templates/claude/skills/make.middleware.md.txt\";\nimport makeMigration from \"../templates/claude/skills/make.migration.md.txt\";\nimport makePermission from \"../templates/claude/skills/make.permission.md.txt\";\nimport makePubsub from \"../templates/claude/skills/make.pubsub.md.txt\";\nimport makeRepository from \"../templates/claude/skills/make.repository.md.txt\";\nimport makeSeed from \"../templates/claude/skills/make.seed.md.txt\";\nimport makeService from \"../templates/claude/skills/make.service.md.txt\";\nimport makeStorage from \"../templates/claude/skills/make.storage.md.txt\";\nimport makeVectorDatabase from \"../templates/claude/skills/make.vector-database.md.txt\";\nimport optimize from \"../templates/claude/skills/optimize.md.txt\";\nimport type { ICommand } from \"../types\";\n\nconst skills: Record<string, string> = {\n \"make.ai\": makeAi,\n \"make.analytics\": makeAnalytics,\n \"make.cache\": makeCache,\n \"make.controller\": makeController,\n \"make.cron\": makeCron,\n \"make.database\": makeDatabase,\n \"make.entity\": makeEntity,\n \"make.logger\": makeLogger,\n \"make.mailer\": makeMailer,\n \"make.middleware\": makeMiddleware,\n \"make.migration\": makeMigration,\n \"make.permission\": makePermission,\n \"make.pubsub\": makePubsub,\n \"make.repository\": makeRepository,\n \"make.seed\": makeSeed,\n \"make.service\": makeService,\n \"make.storage\": makeStorage,\n \"make.vector-database\": makeVectorDatabase,\n commit: commit,\n optimize: optimize,\n};\n\n@decorator.command()\nexport class MakeClaudeSkillCommand implements ICommand {\n public getName(): string {\n return \"make:claude:skill\";\n }\n\n public getDescription(): string {\n return \"Generate Claude skills from templates\";\n }\n\n public async run(): Promise<void> {\n const skillsLocalDir = join(\".claude\", \"skills\");\n const skillsDir = join(process.cwd(), skillsLocalDir);\n const logger = new TerminalLogger();\n\n for (const [skillName, content] of Object.entries(skills)) {\n const dirName = skillName.replace(/\\./g, \"-\");\n const filePath = join(skillsDir, dirName, \"SKILL.md\");\n await Bun.write(filePath, content);\n\n logger.success(`${join(skillsLocalDir, dirName, \"SKILL.md\")} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n }\n}\n",
73
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toKebabCase, toPascalCase } from \"@ooneex/utils\";\nimport { Glob } from \"bun\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/command.test.txt\";\nimport template from \"../templates/command.txt\";\nimport commandRunTemplate from \"../templates/module/command.run.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeCommandCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:command\";\n }\n\n public getDescription(): string {\n return \"Generate a new command class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter name\" });\n }\n\n name = toPascalCase(name).replace(/Command$/, \"\");\n\n const commandName = toKebabCase(name).replace(/-/g, \":\");\n const content = template\n .replace(/{{NAME}}/g, name)\n .replace(/{{COMMAND_NAME}}/g, commandName)\n .replace(/{{COMMAND_DESCRIPTION}}/g, `Execute ${commandName} command`);\n\n const base = module ? join(\"modules\", module) : \".\";\n const commandLocalDir = join(base, \"src\", \"commands\");\n const commandDir = join(process.cwd(), commandLocalDir);\n const filePath = join(commandDir, `${name}Command.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"commands\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Command.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n // Generate commands root export file\n const imports: string[] = [];\n const glob = new Glob(\"**/*Command.ts\");\n for await (const file of glob.scan(commandDir)) {\n const commandClassName = file.replace(/\\.ts$/, \"\");\n imports.push(`export { ${commandClassName} } from './${commandClassName}';`);\n }\n await Bun.write(join(commandDir, \"commands.ts\"), `${imports.sort().join(\"\\n\")}\\n`);\n\n // Import commands root file in app root file\n if (module && module !== \"app\") {\n const appCommandsRootPath = join(process.cwd(), \"modules\", \"app\", \"src\", \"commands\", \"commands.ts\");\n const appCommandsRootFile = Bun.file(appCommandsRootPath);\n const importLine = `import \"@${module}/commands/commands\";`;\n\n if (await appCommandsRootFile.exists()) {\n const appCommandsContent = await appCommandsRootFile.text();\n if (!appCommandsContent.includes(importLine)) {\n await Bun.write(appCommandsRootPath, `${appCommandsContent.trimEnd()}\\n${importLine}\\n`);\n }\n } else {\n await Bun.write(appCommandsRootPath, `${importLine}\\n`);\n }\n }\n\n // Create bin/command/run.ts if it doesn't exist\n const binCommandRunPath = join(process.cwd(), \"modules\", \"app\", \"bin\", \"command\", \"run.ts\");\n const binCommandRunFile = Bun.file(binCommandRunPath);\n if (!(await binCommandRunFile.exists())) {\n await Bun.write(binCommandRunPath, commandRunTemplate);\n }\n\n // Update package.json with command script\n const packageJsonPath = join(process.cwd(), \"modules\", \"app\", \"package.json\");\n const packageJsonFile = Bun.file(packageJsonPath);\n if (await packageJsonFile.exists()) {\n const packageJson = await packageJsonFile.json();\n packageJson.scripts = packageJson.scripts || {};\n packageJson.scripts.command = \"bun ./bin/command/run.ts\";\n await Bun.write(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(commandLocalDir, name)}Command.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Command.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.info(\"Run 'bun run command' to execute commands\", undefined, {\n showTimestamp: false,\n showArrow: true,\n showLevel: false,\n });\n }\n}\n",
74
- "import { basename, join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/cron.test.txt\";\nimport template from \"../templates/cron.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeCronCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:cron\";\n }\n\n public getDescription(): string {\n return \"Generate a new cron class\";\n }\n\n private async addToModule(modulePath: string, cronName: string): Promise<void> {\n let content = await Bun.file(modulePath).text();\n const className = `${cronName}Cron`;\n const importLine = `import { ${className} } from \"./crons/${className}\";\\n`;\n\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n const regex = /(cronJobs:\\s*\\[)([^\\]]*)/s;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const newValue = existing ? `${existing}, ${className}` : className;\n content = content.replace(regex, `$1${newValue}`);\n }\n\n await Bun.write(modulePath, content);\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter cron name\" });\n }\n\n name = toPascalCase(name).replace(/Cron$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const cronLocalDir = join(base, \"src\", \"crons\");\n const cronDir = join(process.cwd(), cronLocalDir);\n const filePath = join(cronDir, `${name}Cron.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"crons\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Cron.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n // Import cron in its module\n const modulePascalName = module ? toPascalCase(module) : toPascalCase(basename(process.cwd()));\n const modulePath = join(process.cwd(), base, \"src\", `${modulePascalName}Module.ts`);\n if (await Bun.file(modulePath).exists()) {\n await this.addToModule(modulePath, name);\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(cronLocalDir, name)}Cron.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Cron.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/cron dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/cron\"] && !devDeps[\"@ooneex/cron\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/cron\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
75
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/database.test.txt\";\nimport template from \"../templates/database.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeDatabaseCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:database\";\n }\n\n public getDescription(): string {\n return \"Generate a new database class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter database name\" });\n }\n\n name = toPascalCase(name)\n .replace(/DatabaseAdapter$/, \"\")\n .replace(/Database$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const databaseLocalDir = join(base, \"src\", \"databases\");\n const databaseDir = join(process.cwd(), databaseLocalDir);\n const filePath = join(databaseDir, `${name}Database.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"databases\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Database.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(databaseLocalDir, name)}Database.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Database.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/database dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/database\"] && !devDeps[\"@ooneex/database\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/database\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
76
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { YAML } from \"bun\";\nimport { decorator } from \"../decorators\";\nimport { askDockerService, type DockerServiceType } from \"../prompts/askDockerService\";\nimport { templates } from \"../templates/docker\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: DockerServiceType;\n};\n\ntype DockerComposeConfigType = {\n services?: Record<string, unknown>;\n volumes?: Record<string, unknown>;\n networks?: Record<string, unknown>;\n};\n\n/**\n * Extracts the service block (including comments) from a template string.\n * Returns the content between \"services:\" and \"volumes:\" (or end of services section).\n */\nconst extractServiceBlock = (template: string): string => {\n const lines = template.split(\"\\n\");\n const result: string[] = [];\n let inServices = false;\n\n for (const line of lines) {\n if (line.startsWith(\"services:\")) {\n inServices = true;\n continue;\n }\n if (inServices) {\n // Stop when we hit volumes: or networks: at root level\n if (line.startsWith(\"volumes:\") || line.startsWith(\"networks:\")) {\n break;\n }\n result.push(line);\n }\n }\n\n return result.join(\"\\n\");\n};\n\n/**\n * Extracts volume names from a template string.\n */\nconst extractVolumeNames = (template: string): string[] => {\n const config = YAML.parse(template) as DockerComposeConfigType;\n return config.volumes ? Object.keys(config.volumes) : [];\n};\n\n@decorator.command()\nexport class MakeDockerCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:docker\";\n }\n\n public getDescription(): string {\n return \"Add a docker service to docker-compose.yml\";\n }\n\n public async run(options: T): Promise<void> {\n let { name } = options;\n\n if (!name) {\n name = await askDockerService({ message: \"Select docker service\" });\n }\n\n const templateContent = templates[name];\n const base = join(\"modules\", \"app\");\n const composePath = join(process.cwd(), base, \"docker-compose.yml\");\n const logger = new TerminalLogger();\n const composeFile = Bun.file(composePath);\n\n if (await composeFile.exists()) {\n const existingContent = await composeFile.text();\n const existingConfig = YAML.parse(existingContent) as DockerComposeConfigType;\n\n // Check if service already exists\n if (existingConfig.services && name in existingConfig.services) {\n logger.warn(`Service \"${name}\" already exists in docker-compose.yml`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n return;\n }\n\n // Extract service block with comments from template\n const serviceBlock = extractServiceBlock(templateContent);\n const newVolumeNames = extractVolumeNames(templateContent);\n\n let updatedContent = existingContent;\n\n // Find where to insert the service (before volumes: section or at end of services)\n const volumesIndex = updatedContent.indexOf(\"\\nvolumes:\");\n const networksIndex = updatedContent.indexOf(\"\\nnetworks:\");\n\n // Find the earliest section after services\n let insertIndex = -1;\n if (volumesIndex !== -1 && networksIndex !== -1) {\n insertIndex = Math.min(volumesIndex, networksIndex);\n } else if (volumesIndex !== -1) {\n insertIndex = volumesIndex;\n } else if (networksIndex !== -1) {\n insertIndex = networksIndex;\n }\n\n if (insertIndex !== -1) {\n // Insert service before volumes/networks section\n updatedContent = `${updatedContent.slice(0, insertIndex)}\\n${serviceBlock}${updatedContent.slice(insertIndex)}`;\n } else {\n // Append service at the end\n updatedContent = `${updatedContent.trimEnd()}\\n${serviceBlock}`;\n }\n\n // Add new volumes if they don't exist\n for (const volumeName of newVolumeNames) {\n if (!updatedContent.includes(` ${volumeName}:`)) {\n if (updatedContent.includes(\"\\nvolumes:\")) {\n // Find the volumes section and add the new volume\n const volumesSectionIndex = updatedContent.indexOf(\"\\nvolumes:\");\n const afterVolumes = updatedContent.slice(volumesSectionIndex + \"\\nvolumes:\".length);\n updatedContent = `${updatedContent.slice(0, volumesSectionIndex + \"\\nvolumes:\".length)}\\n ${volumeName}:${afterVolumes}`;\n } else {\n // Create volumes section\n updatedContent = `${updatedContent.trimEnd()}\\n\\nvolumes:\\n ${volumeName}:\\n`;\n }\n }\n }\n\n await Bun.write(composePath, updatedContent);\n } else {\n // Create new docker-compose.yml with template as-is (preserves comments)\n await Bun.write(composePath, templateContent);\n }\n\n // Update package.json with dev script\n const packageJsonPath = join(process.cwd(), base, \"package.json\");\n const packageJsonFile = Bun.file(packageJsonPath);\n if (await packageJsonFile.exists()) {\n const packageJson = await packageJsonFile.json();\n packageJson.scripts = packageJson.scripts || {};\n packageJson.scripts.dev = \"docker compose up -d && bun --hot run ./src/index.ts\";\n await Bun.write(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n\n logger.success(`Service \"${name}\" added to docker-compose.yml`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.info(\"Run 'bun run docker' to start docker containers\", undefined, {\n showTimestamp: false,\n showArrow: true,\n showLevel: false,\n });\n }\n}\n",
77
- "import { prompt } from \"enquirer\";\n\nconst DOCKER_SERVICES = [\n \"clickhouse\",\n \"elasticsearch\",\n \"grafana\",\n \"jaeger\",\n \"keycloak\",\n \"libretranslate\",\n \"maildev\",\n \"memcached\",\n \"minio\",\n \"mongodb\",\n \"mysql\",\n \"nats\",\n \"postgres\",\n \"prometheus\",\n \"rabbitmq\",\n \"redis\",\n \"temporal\",\n \"vault\",\n] as const;\n\nexport type DockerServiceType = (typeof DOCKER_SERVICES)[number];\n\nexport const askDockerService = async (config: { message: string; initial?: string }) => {\n const response = await prompt<{ service: DockerServiceType }>({\n type: \"autocomplete\",\n name: \"service\",\n message: config.message,\n initial: config.initial,\n choices: DOCKER_SERVICES.map((service) => service),\n validate: (value) => {\n if (!DOCKER_SERVICES.includes(value as DockerServiceType)) {\n return \"Docker service is invalid\";\n }\n\n return true;\n },\n });\n\n return response.service;\n};\n",
78
- "import clickhouse from \"./clickhouse.txt\";\nimport elasticsearch from \"./elasticsearch.txt\";\nimport grafana from \"./grafana.txt\";\nimport jaeger from \"./jaeger.txt\";\nimport keycloak from \"./keycloak.txt\";\nimport libretranslate from \"./libretranslate.txt\";\nimport maildev from \"./maildev.txt\";\nimport memcached from \"./memcached.txt\";\nimport minio from \"./minio.txt\";\nimport mongodb from \"./mongodb.txt\";\nimport mysql from \"./mysql.txt\";\nimport nats from \"./nats.txt\";\nimport ooneexJade from \"./ooneex-jade.txt\";\nimport postgres from \"./postgres.txt\";\nimport prometheus from \"./prometheus.txt\";\nimport rabbitmq from \"./rabbitmq.txt\";\nimport redis from \"./redis.txt\";\nimport temporal from \"./temporal.txt\";\nimport vault from \"./vault.txt\";\n\nexport const templates = {\n clickhouse,\n elasticsearch,\n grafana,\n \"ooneex-jade\": ooneexJade,\n jaeger,\n keycloak,\n libretranslate,\n maildev,\n memcached,\n minio,\n mongodb,\n mysql,\n nats,\n postgres,\n prometheus,\n rabbitmq,\n redis,\n temporal,\n vault,\n};\n",
79
- "import { basename, join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase, toSnakeCase } from \"@ooneex/utils\";\nimport pluralize from \"pluralize\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/entity.test.txt\";\nimport template from \"../templates/entity.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n tableName?: string;\n};\n\n@decorator.command()\nexport class MakeEntityCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:entity\";\n }\n\n public getDescription(): string {\n return \"Generate a new entity class\";\n }\n\n private async addToModule(modulePath: string, entityName: string): Promise<void> {\n let content = await Bun.file(modulePath).text();\n const className = `${entityName}Entity`;\n const importLine = `import { ${className} } from \"./entities/${className}\";\\n`;\n\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n const regex = /(entities:\\s*\\[)([^\\]]*)/s;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const newValue = existing ? `${existing}, ${className}` : className;\n content = content.replace(regex, `$1${newValue}`);\n }\n\n await Bun.write(modulePath, content);\n }\n\n public async run(options: T): Promise<void> {\n let { name, module, tableName } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter entity name\" });\n }\n\n name = toPascalCase(name).replace(/Entity$/, \"\");\n\n if (!tableName) {\n tableName = toSnakeCase(pluralize(name));\n }\n\n const content = template.replace(/{{NAME}}/g, name).replace(/{{TABLE_NAME}}/g, tableName);\n\n const base = module ? join(\"modules\", module) : \".\";\n const entitiesLocalDir = join(base, \"src\", \"entities\");\n const entitiesDir = join(process.cwd(), entitiesLocalDir);\n const filePath = join(entitiesDir, `${name}Entity.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"entities\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Entity.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n // Import entity in its module\n const modulePascalName = module ? toPascalCase(module) : toPascalCase(basename(process.cwd()));\n const modulePath = join(process.cwd(), base, \"src\", `${modulePascalName}Module.ts`);\n if (await Bun.file(modulePath).exists()) {\n await this.addToModule(modulePath, name);\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(entitiesLocalDir, name)}Entity.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Entity.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n}\n",
80
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/logger.test.txt\";\nimport template from \"../templates/logger.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeLoggerCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:logger\";\n }\n\n public getDescription(): string {\n return \"Generate a new logger class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter logger name\" });\n }\n\n name = toPascalCase(name).replace(/Logger$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const loggerLocalDir = join(base, \"src\", \"loggers\");\n const loggerDir = join(process.cwd(), loggerLocalDir);\n const filePath = join(loggerDir, `${name}Logger.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"loggers\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Logger.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(loggerLocalDir, name)}Logger.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Logger.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/logger dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/logger\"] && !devDeps[\"@ooneex/logger\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/logger\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
81
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport mailerTestTemplate from \"../templates/mailer/mailer.test.txt\";\nimport mailerTemplate from \"../templates/mailer/mailer.txt\";\nimport mailerTemplateTestTemplate from \"../templates/mailer/mailer-template.test.txt\";\nimport mailerTemplateTemplate from \"../templates/mailer/mailer-template.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeMailerCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:mailer\";\n }\n\n public getDescription(): string {\n return \"Generate a new mailer class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter mailer name\" });\n }\n\n name = toPascalCase(name).replace(/Mailer$/, \"\");\n\n const mailerContent = mailerTemplate.replace(/{{NAME}}/g, name);\n const templateContent = mailerTemplateTemplate.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const mailerLocalDir = join(base, \"src\", \"mailers\");\n const mailerDir = join(process.cwd(), mailerLocalDir);\n const mailerFilePath = join(mailerDir, `${name}Mailer.ts`);\n const templateFilePath = join(mailerDir, `${name}MailerTemplate.tsx`);\n\n await Bun.write(mailerFilePath, mailerContent);\n await Bun.write(templateFilePath, templateContent);\n\n // Generate test files\n const mailerTestContent = mailerTestTemplate.replace(/{{NAME}}/g, name);\n const templateTestContent = mailerTemplateTestTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"mailers\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const mailerTestFilePath = join(testsDir, `${name}Mailer.spec.ts`);\n const templateTestFilePath = join(testsDir, `${name}MailerTemplate.spec.ts`);\n await Bun.write(mailerTestFilePath, mailerTestContent);\n await Bun.write(templateTestFilePath, templateTestContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(mailerLocalDir, name)}Mailer.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(mailerLocalDir, name)}MailerTemplate.tsx created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Mailer.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}MailerTemplate.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/mailer dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/mailer\"] && !devDeps[\"@ooneex/mailer\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/mailer\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
82
- "import { basename, join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askConfirm } from \"../prompts/askConfirm\";\nimport { askName } from \"../prompts/askName\";\nimport socketTemplate from \"../templates/middleware.socket.txt\";\nimport testTemplate from \"../templates/middleware.test.txt\";\nimport template from \"../templates/middleware.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n isSocket?: boolean;\n};\n\n@decorator.command()\nexport class MakeMiddlewareCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:middleware\";\n }\n\n public getDescription(): string {\n return \"Generate a new middleware class\";\n }\n\n private async addToModule(modulePath: string, middlewareName: string): Promise<void> {\n let content = await Bun.file(modulePath).text();\n const className = `${middlewareName}Middleware`;\n const importLine = `import { ${className} } from \"./middlewares/${className}\";\\n`;\n\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n const regex = /(middlewares:\\s*\\[)([^\\]]*)/s;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const newValue = existing ? `${existing}, ${className}` : className;\n content = content.replace(regex, `$1${newValue}`);\n }\n\n await Bun.write(modulePath, content);\n }\n\n public async run(options: T): Promise<void> {\n let { name, module, isSocket } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter middleware name\" });\n }\n\n if (isSocket === undefined) {\n isSocket = await askConfirm({ message: \"Is this a socket middleware?\" });\n }\n\n name = toPascalCase(name).replace(/Middleware$/, \"\");\n\n const selectedTemplate = isSocket ? socketTemplate : template;\n const content = selectedTemplate.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const middlewareLocalDir = join(base, \"src\", \"middlewares\");\n const middlewareDir = join(process.cwd(), middlewareLocalDir);\n const filePath = join(middlewareDir, `${name}Middleware.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"middlewares\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Middleware.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n // Import middleware in its module\n const modulePascalName = module ? toPascalCase(module) : toPascalCase(basename(process.cwd()));\n const modulePath = join(process.cwd(), base, \"src\", `${modulePascalName}Module.ts`);\n if (await Bun.file(modulePath).exists()) {\n await this.addToModule(modulePath, name);\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(middlewareLocalDir, name)}Middleware.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Middleware.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/middleware dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/middleware\"] && !devDeps[\"@ooneex/middleware\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/middleware\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
83
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { migrationCreate } from \"@ooneex/migrations\";\nimport { decorator } from \"../decorators\";\nimport migrationUpTemplate from \"../templates/module/migration.up.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n module?: string;\n};\n\n@decorator.command()\nexport class MakeMigrationCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:migration\";\n }\n\n public getDescription(): string {\n return \"Generate a new migration file\";\n }\n\n public async run(options: T): Promise<void> {\n const { module } = options;\n const base = module ? join(\"modules\", module) : \".\";\n const filePath = await migrationCreate({ dir: join(base, \"src\", \"migrations\") });\n\n // Create bin/migration/up.ts if it doesn't exist\n const binMigrationUpPath = join(process.cwd(), base, \"bin\", \"migration\", \"up.ts\");\n const binMigrationUpFile = Bun.file(binMigrationUpPath);\n if (!(await binMigrationUpFile.exists())) {\n await Bun.write(binMigrationUpPath, migrationUpTemplate);\n }\n\n // Update package.json with migration script\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJsonFile = Bun.file(packageJsonPath);\n if (await packageJsonFile.exists()) {\n const packageJson = await packageJsonFile.json();\n packageJson.scripts = packageJson.scripts || {};\n packageJson.scripts[\"migration:up\"] = \"bun ./bin/migration/up.ts\";\n await Bun.write(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${filePath} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.info(\"Run 'bun run migration:up' to execute migrations\", undefined, {\n showTimestamp: false,\n showArrow: true,\n showLevel: false,\n });\n\n // Install @ooneex/migrations dev dependency if not already installed\n const pkgJson = await Bun.file(packageJsonPath).json();\n const deps = pkgJson.dependencies ?? {};\n const devDeps = pkgJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/migrations\"] && !devDeps[\"@ooneex/migrations\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"--dev\", \"@ooneex/migrations\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
84
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/permission.test.txt\";\nimport template from \"../templates/permission.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakePermissionCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:permission\";\n }\n\n public getDescription(): string {\n return \"Generate a new permission class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter permission name\" });\n }\n\n name = toPascalCase(name).replace(/Permission$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const permissionLocalDir = join(base, \"src\", \"permissions\");\n const permissionDir = join(process.cwd(), permissionLocalDir);\n const filePath = join(permissionDir, `${name}Permission.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"permissions\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Permission.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(permissionLocalDir, name)}Permission.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Permission.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/permission dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/permission\"] && !devDeps[\"@ooneex/permission\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/permission\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
85
- "import { basename, join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toKebabCase, toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/pubsub.test.txt\";\nimport template from \"../templates/pubsub.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n channel?: string;\n};\n\n@decorator.command()\nexport class MakePubSubCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:pubsub\";\n }\n\n public getDescription(): string {\n return \"Generate a new PubSub event class\";\n }\n\n private async addToModule(modulePath: string, eventName: string): Promise<void> {\n let content = await Bun.file(modulePath).text();\n const className = `${eventName}Event`;\n const importLine = `import { ${className} } from \"./events/${className}\";\\n`;\n\n const lastImportIndex = content.lastIndexOf(\"import \");\n const lineEnd = content.indexOf(\"\\n\", lastImportIndex);\n content = `${content.slice(0, lineEnd + 1)}${importLine}${content.slice(lineEnd + 1)}`;\n\n const regex = /(events:\\s*\\[)([^\\]]*)/s;\n const match = content.match(regex);\n if (match) {\n const existing = match[2]?.trim();\n const newValue = existing ? `${existing}, ${className}` : className;\n content = content.replace(regex, `$1${newValue}`);\n }\n\n await Bun.write(modulePath, content);\n }\n\n public async run(options: T): Promise<void> {\n let { name, module, channel } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter name\" });\n }\n\n name = toPascalCase(name).replace(/PubSub$/, \"\");\n\n if (!channel) {\n channel = toKebabCase(name);\n }\n\n const content = template.replace(/{{NAME}}/g, name).replace(/{{CHANNEL}}/g, channel);\n\n const base = module ? join(\"modules\", module) : \".\";\n const pubSubLocalDir = join(base, \"src\", \"events\");\n const pubSubDir = join(process.cwd(), pubSubLocalDir);\n const filePath = join(pubSubDir, `${name}Event.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"events\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Event.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n // Import event in its module\n const modulePascalName = module ? toPascalCase(module) : toPascalCase(basename(process.cwd()));\n const modulePath = join(process.cwd(), base, \"src\", `${modulePascalName}Module.ts`);\n if (await Bun.file(modulePath).exists()) {\n await this.addToModule(modulePath, name);\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(pubSubLocalDir, name)}Event.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Event.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/pub-sub dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/pub-sub\"] && !devDeps[\"@ooneex/pub-sub\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/pub-sub\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
86
- "import { readdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { $ } from \"bun\";\nimport { decorator } from \"../decorators\";\nimport { askConfirm } from \"../prompts/askConfirm\";\nimport type { ICommand } from \"../types\";\n\ntype PackageJsonType = {\n name: string;\n version: string;\n [key: string]: unknown;\n};\n\ntype CommitInfoType = {\n hash: string;\n type: string;\n scope: string;\n subject: string;\n author: string;\n};\n\ntype ChangelogCategory = \"Added\" | \"Changed\" | \"Deprecated\" | \"Removed\" | \"Fixed\" | \"Security\";\n\nconst COMMIT_TYPE_TO_CATEGORY: Record<string, ChangelogCategory> = {\n feat: \"Added\",\n fix: \"Fixed\",\n refactor: \"Changed\",\n perf: \"Changed\",\n style: \"Changed\",\n docs: \"Changed\",\n build: \"Changed\",\n ci: \"Changed\",\n chore: \"Changed\",\n revert: \"Removed\",\n};\n\n@decorator.command()\nexport class MakeReleaseCommand implements ICommand {\n public getName(): string {\n return \"make:release\";\n }\n\n public getDescription(): string {\n return \"Release packages with version bump, changelog, and git tag\";\n }\n\n public async run(): Promise<void> {\n const logger = new TerminalLogger();\n const cwd = process.cwd();\n\n const dirs: { base: string; type: string }[] = [];\n\n for (const { name, type } of [\n { name: \"packages\", type: \"package\" },\n { name: \"modules\", type: \"module\" },\n ]) {\n try {\n const entries = await readdir(join(cwd, name), { withFileTypes: true });\n dirs.push(...entries.filter((d) => d.isDirectory()).map((d) => ({ base: join(name, d.name), type })));\n } catch {\n // Directory doesn't exist\n }\n }\n\n const logOptions = { showTimestamp: false, showArrow: false, useSymbol: true };\n\n if (dirs.length === 0) {\n logger.error(\"No packages or modules found\", undefined, logOptions);\n return;\n }\n\n let releasedCount = 0;\n\n for (const dir of dirs) {\n const fullDir = join(cwd, dir.base);\n const pkgJsonPath = join(fullDir, \"package.json\");\n\n const pkgJsonFile = Bun.file(pkgJsonPath);\n if (!(await pkgJsonFile.exists())) {\n continue;\n }\n\n const pkgJson: PackageJsonType = await pkgJsonFile.json();\n const lastTag = await this.getLastTag(pkgJson.name);\n const commits = await this.getCommitsSinceTag(lastTag, dir.base);\n\n if (commits.length === 0) {\n continue;\n }\n\n const bumpType = this.determineBumpType(commits);\n const newVersion = this.bumpVersion(pkgJson.version, bumpType);\n\n pkgJson.version = newVersion;\n const tag = `${pkgJson.name}@${newVersion}`;\n\n await Bun.write(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n await this.updateChangelog(fullDir, newVersion, tag, commits);\n\n await this.gitAdd(join(dir.base, \"package.json\"), join(dir.base, \"CHANGELOG.md\"));\n await this.gitCommit(`chore(release): ${pkgJson.name}@${newVersion}`);\n await this.gitTag(tag, `chore(release): ${pkgJson.name}@${newVersion}`);\n\n logger.success(\n `${pkgJson.name}@${newVersion} released (${bumpType} bump, ${commits.length} commit(s))`,\n undefined,\n logOptions,\n );\n\n releasedCount++;\n }\n\n if (releasedCount === 0) {\n logger.info(\"No packages have unreleased commits\\n\", undefined, {\n showArrow: false,\n showTimestamp: false,\n showLevel: false,\n useSymbol: false,\n });\n return;\n }\n\n logger.success(`${releasedCount} package(s) released`, undefined, logOptions);\n\n const shouldPush = await askConfirm({ message: \"Push commits and tags to remote?\", initial: true });\n\n if (shouldPush) {\n try {\n await $`git push && git push --tags`;\n logger.success(\"Pushed commits and tags to remote\", undefined, logOptions);\n } catch {\n logger.error(\"Failed to push to remote\", undefined, logOptions);\n }\n }\n }\n\n private async getLastTag(packageName: string): Promise<string | null> {\n try {\n const result = await $`git --no-pager tag --list \"${packageName}@*\" --sort=-v:refname`.quiet();\n const tags = result.text().trim();\n\n if (!tags) {\n return null;\n }\n\n return tags.split(\"\\n\")[0] ?? null;\n } catch {\n return null;\n }\n }\n\n private async getCommitsSinceTag(tag: string | null, dirPath: string): Promise<CommitInfoType[]> {\n const range = tag ? `${tag}..HEAD` : \"HEAD\";\n const format = \"%H|%an|%s\";\n\n try {\n const result = await $`git --no-pager log ${range} --format=${format} -- ${dirPath}`.quiet();\n const output = result.text().trim();\n\n if (!output) {\n return [];\n }\n\n const commits: CommitInfoType[] = [];\n const conventionalRegex = /^([a-z]+)\\(([^)]+)\\):\\s*(.+)$/;\n\n for (const line of output.split(\"\\n\")) {\n const [hash, author, ...subjectParts] = line.split(\"|\");\n const subject = subjectParts.join(\"|\");\n\n if (!hash || !author || !subject) {\n continue;\n }\n\n const match = subject.match(conventionalRegex);\n if (match) {\n const [, type, scope, message] = match;\n if (type && scope && message) {\n commits.push({ hash: hash.substring(0, 8), type, scope, subject: message, author });\n }\n }\n }\n\n return commits;\n } catch {\n return [];\n }\n }\n\n private determineBumpType(commits: CommitInfoType[]): \"minor\" | \"patch\" {\n for (const commit of commits) {\n if (commit.type === \"feat\") {\n return \"minor\";\n }\n }\n return \"patch\";\n }\n\n private bumpVersion(version: string, type: \"minor\" | \"patch\"): string {\n const parts = version.split(\".\").map(Number);\n const [major = 0, minor = 0, patch = 0] = parts;\n\n if (type === \"minor\") {\n return `${major}.${minor + 1}.0`;\n }\n\n return `${major}.${minor}.${patch + 1}`;\n }\n\n private async getRepoUrl(): Promise<string | null> {\n try {\n const result = await $`git --no-pager remote get-url origin`.quiet();\n const url = result.text().trim();\n\n return url.replace(/\\.git$/, \"\").replace(/^git@([^:]+):/, \"https://$1/\");\n } catch {\n return null;\n }\n }\n\n private async updateChangelog(dir: string, version: string, tag: string, commits: CommitInfoType[]): Promise<void> {\n const changelogPath = join(dir, \"CHANGELOG.md\");\n const today = new Date().toISOString().split(\"T\")[0];\n const repoUrl = await this.getRepoUrl();\n\n const grouped = new Map<ChangelogCategory, CommitInfoType[]>();\n for (const commit of commits) {\n const category = COMMIT_TYPE_TO_CATEGORY[commit.type] ?? \"Changed\";\n const existing = grouped.get(category) ?? [];\n existing.push(commit);\n grouped.set(category, existing);\n }\n\n const categoryOrder: ChangelogCategory[] = [\"Added\", \"Changed\", \"Deprecated\", \"Removed\", \"Fixed\", \"Security\"];\n const versionLink = repoUrl ? `[${version}](${repoUrl}/releases/tag/${tag})` : `[${version}]`;\n let section = `## ${versionLink} - ${today}\\n`;\n\n for (const category of categoryOrder) {\n const categoryCommits = grouped.get(category);\n if (!categoryCommits || categoryCommits.length === 0) {\n continue;\n }\n\n section += `\\n### ${category}\\n\\n`;\n for (const commit of categoryCommits) {\n const link = repoUrl ? ` ([${commit.hash}](${repoUrl}/commit/${commit.hash}))` : \"\";\n section += `- ${commit.subject} — ${commit.author}${link}\\n`;\n }\n }\n\n const changelogFile = Bun.file(changelogPath);\n let existingContent = \"\";\n if (await changelogFile.exists()) {\n existingContent = await changelogFile.text();\n }\n\n let newContent: string;\n\n if (existingContent) {\n const unreleasedMatch = existingContent.match(/## \\[Unreleased\\][^\\n]*\\n/);\n const firstVersionMatch = existingContent.match(/## \\[\\d+\\.\\d+\\.\\d+\\]/);\n\n if (unreleasedMatch) {\n const insertIndex = (unreleasedMatch.index ?? 0) + unreleasedMatch[0].length;\n newContent = `${existingContent.slice(0, insertIndex)}\\n${section}\\n${existingContent.slice(insertIndex)}`;\n } else if (firstVersionMatch && firstVersionMatch.index !== undefined) {\n newContent = `${existingContent.slice(0, firstVersionMatch.index)}${section}\\n${existingContent.slice(firstVersionMatch.index)}`;\n } else {\n newContent = `${existingContent.trimEnd()}\\n\\n${section}\\n`;\n }\n } else {\n newContent = `# Changelog\n\n${section}\n`;\n }\n\n await Bun.write(changelogPath, newContent);\n }\n\n private async gitAdd(...files: string[]): Promise<void> {\n await $`git add ${files}`;\n }\n\n private async gitCommit(message: string): Promise<void> {\n await $`git commit --no-verify -m ${message}`;\n }\n\n private async gitTag(tag: string, message: string): Promise<void> {\n await $`git tag -a ${tag} -m ${message}`;\n }\n}\n",
87
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/repository.test.txt\";\nimport template from \"../templates/repository.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeRepositoryCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:repository\";\n }\n\n public getDescription(): string {\n return \"Generate a new repository class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter repository name\" });\n }\n\n // Normalize inputs\n name = toPascalCase(name).replace(/Repository$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const repositoriesLocalDir = join(base, \"src\", \"repositories\");\n const repositoriesDir = join(process.cwd(), repositoriesLocalDir);\n const filePath = join(repositoriesDir, `${name}Repository.ts`);\n\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"repositories\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Repository.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(repositoriesLocalDir, name)}Repository.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Repository.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/repository dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/repository\"] && !devDeps[\"@ooneex/repository\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/repository\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
88
- "import { join } from \"node:path\";\nimport { Glob } from \"bun\";\nimport { decorator } from \"../decorators\";\nimport entityTemplate from \"../templates/resources/book/BookEntity.txt\";\nimport migrationTemplate from \"../templates/resources/book/BookMigration.txt\";\nimport repositoryTemplate from \"../templates/resources/book/BookRepository.txt\";\nimport createBookControllerTemplate from \"../templates/resources/book/controllers/CreateBookController.txt\";\nimport deleteBookControllerTemplate from \"../templates/resources/book/controllers/DeleteBookController.txt\";\nimport getBookControllerTemplate from \"../templates/resources/book/controllers/GetBookController.txt\";\nimport listBooksControllerTemplate from \"../templates/resources/book/controllers/ListBooksController.txt\";\nimport updateBookControllerTemplate from \"../templates/resources/book/controllers/UpdateBookController.txt\";\nimport createBookServiceTemplate from \"../templates/resources/book/services/CreateBookService.txt\";\nimport deleteBookServiceTemplate from \"../templates/resources/book/services/DeleteBookService.txt\";\nimport getBookServiceTemplate from \"../templates/resources/book/services/GetBookService.txt\";\nimport listBooksServiceTemplate from \"../templates/resources/book/services/ListBooksService.txt\";\nimport updateBookServiceTemplate from \"../templates/resources/book/services/UpdateBookService.txt\";\nimport type { ICommand } from \"../types\";\nimport { MakeControllerCommand } from \"./MakeControllerCommand\";\nimport { MakeEntityCommand } from \"./MakeEntityCommand\";\nimport { MakeMigrationCommand } from \"./MakeMigrationCommand\";\nimport { MakeModuleCommand } from \"./MakeModuleCommand\";\nimport { MakeRepositoryCommand } from \"./MakeRepositoryCommand\";\nimport { MakeServiceCommand } from \"./MakeServiceCommand\";\n\n@decorator.command()\nexport class MakeResourceBookCommand implements ICommand {\n public getName(): string {\n return \"make:resource:book\";\n }\n\n public getDescription(): string {\n return \"Generate book resource (entity, migration, repository)\";\n }\n\n public async run(): Promise<void> {\n const module = \"book\";\n const base = join(\"modules\", module);\n\n // Create module first\n const makeModuleCommand = new MakeModuleCommand();\n await makeModuleCommand.run({ name: module, silent: true, skipMigrations: false, skipSeeds: true });\n\n const makeEntityCommand = new MakeEntityCommand();\n await makeEntityCommand.run({ name: \"Book\", module, tableName: \"books\" });\n\n const makeMigrationCommand = new MakeMigrationCommand();\n await makeMigrationCommand.run({ module });\n\n const makeRepositoryCommand = new MakeRepositoryCommand();\n await makeRepositoryCommand.run({ name: \"Book\", module });\n\n // Create controllers\n const makeControllerCommand = new MakeControllerCommand();\n const controllers = [\n { name: \"CreateBook\", route: { name: \"book.create\", path: \"/books\" as const, method: \"POST\" as const } },\n { name: \"GetBook\", route: { name: \"book.get\", path: \"/books/:id\" as const, method: \"GET\" as const } },\n { name: \"ListBooks\", route: { name: \"book.list\", path: \"/books\" as const, method: \"GET\" as const } },\n { name: \"UpdateBook\", route: { name: \"book.update\", path: \"/books/:id\" as const, method: \"PATCH\" as const } },\n { name: \"DeleteBook\", route: { name: \"book.delete\", path: \"/books/:id\" as const, method: \"DELETE\" as const } },\n ];\n\n for (const controller of controllers) {\n await makeControllerCommand.run({ ...controller, module, isSocket: false });\n }\n\n // Replace controller contents with book templates\n const controllersDir = join(process.cwd(), base, \"src\", \"controllers\");\n await Bun.write(join(controllersDir, \"CreateBookController.ts\"), createBookControllerTemplate);\n await Bun.write(join(controllersDir, \"GetBookController.ts\"), getBookControllerTemplate);\n await Bun.write(join(controllersDir, \"ListBooksController.ts\"), listBooksControllerTemplate);\n await Bun.write(join(controllersDir, \"UpdateBookController.ts\"), updateBookControllerTemplate);\n await Bun.write(join(controllersDir, \"DeleteBookController.ts\"), deleteBookControllerTemplate);\n\n // Create services\n const makeServiceCommand = new MakeServiceCommand();\n const services = [\"CreateBook\", \"GetBook\", \"ListBooks\", \"UpdateBook\", \"DeleteBook\"];\n\n for (const name of services) {\n await makeServiceCommand.run({ name, module });\n }\n\n // Replace service contents with book templates\n const servicesDir = join(process.cwd(), base, \"src\", \"services\");\n await Bun.write(join(servicesDir, \"CreateBookService.ts\"), createBookServiceTemplate);\n await Bun.write(join(servicesDir, \"GetBookService.ts\"), getBookServiceTemplate);\n await Bun.write(join(servicesDir, \"ListBooksService.ts\"), listBooksServiceTemplate);\n await Bun.write(join(servicesDir, \"UpdateBookService.ts\"), updateBookServiceTemplate);\n await Bun.write(join(servicesDir, \"DeleteBookService.ts\"), deleteBookServiceTemplate);\n\n // Replace entity content with book template\n const entityPath = join(process.cwd(), base, \"src\", \"entities\", \"BookEntity.ts\");\n await Bun.write(entityPath, entityTemplate);\n\n // Replace migration content with book template\n const migrationsDir = join(process.cwd(), base, \"src\", \"migrations\");\n const glob = new Glob(\"Migration*.ts\");\n for await (const file of glob.scan(migrationsDir)) {\n if (file === \"migrations.ts\") continue;\n const name = file.replace(/\\.ts$/, \"\");\n const version = name.replace(\"Migration\", \"\");\n const content = migrationTemplate.replaceAll(\"{{ name }}\", name).replaceAll(\"{{ version }}\", version);\n await Bun.write(join(migrationsDir, file), content);\n }\n\n // Replace repository content with book template\n const repositoryPath = join(process.cwd(), base, \"src\", \"repositories\", \"BookRepository.ts\");\n await Bun.write(repositoryPath, repositoryTemplate);\n }\n}\n",
89
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/service.test.txt\";\nimport template from \"../templates/service.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeServiceCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:service\";\n }\n\n public getDescription(): string {\n return \"Generate a new service class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter service name\" });\n }\n\n name = toPascalCase(name).replace(/Service$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const serviceLocalDir = join(base, \"src\", \"services\");\n const serviceDir = join(process.cwd(), serviceLocalDir);\n const filePath = join(serviceDir, `${name}Service.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"services\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Service.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(serviceLocalDir, name)}Service.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Service.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/service dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/service\"] && !devDeps[\"@ooneex/service\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/service\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
90
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { seedCreate } from \"@ooneex/seeds\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport seedRunTemplate from \"../templates/module/seed.run.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeSeedCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:seed\";\n }\n\n public getDescription(): string {\n return \"Generate a new seed file\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter seed name\" });\n }\n\n const base = module ? join(\"modules\", module) : \".\";\n const filePath = await seedCreate({ name, dir: join(base, \"src\", \"seeds\") });\n\n // Create bin/seed/run.ts if it doesn't exist\n const binSeedRunPath = join(process.cwd(), base, \"bin\", \"seed\", \"run.ts\");\n const binSeedRunFile = Bun.file(binSeedRunPath);\n if (!(await binSeedRunFile.exists())) {\n await Bun.write(binSeedRunPath, seedRunTemplate);\n }\n\n // Update package.json with seed script\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJsonFile = Bun.file(packageJsonPath);\n if (await packageJsonFile.exists()) {\n const packageJson = await packageJsonFile.json();\n packageJson.scripts = packageJson.scripts || {};\n packageJson.scripts[\"seed:run\"] = \"bun ./bin/seed/run.ts\";\n await Bun.write(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n\n const logger = new TerminalLogger();\n\n logger.success(`${filePath} created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.info(\"Run 'bun run seed:run' to execute seeds\", undefined, {\n showTimestamp: false,\n showArrow: true,\n showLevel: false,\n });\n\n // Install @ooneex/seeds dev dependency if not already installed\n const pkgJson = await Bun.file(packageJsonPath).json();\n const deps = pkgJson.dependencies ?? {};\n const devDeps = pkgJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/seeds\"] && !devDeps[\"@ooneex/seeds\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"--dev\", \"@ooneex/seeds\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
91
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase, toSnakeCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/storage.test.txt\";\nimport template from \"../templates/storage.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeStorageCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:storage\";\n }\n\n public getDescription(): string {\n return \"Generate a new storage class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter storage name\" });\n }\n\n name = toPascalCase(name).replace(/Storage$/, \"\");\n const nameUpper = toSnakeCase(name).toUpperCase();\n const content = template.replace(/{{NAME}}/g, name).replace(/{{NAME_UPPER}}/g, nameUpper);\n\n const base = module ? join(\"modules\", module) : \".\";\n const storageLocalDir = join(base, \"src\", \"storage\");\n const storageDir = join(process.cwd(), storageLocalDir);\n const filePath = join(storageDir, `${name}Storage.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"storage\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}Storage.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(storageLocalDir, name)}Storage.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}Storage.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/storage dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/storage\"] && !devDeps[\"@ooneex/storage\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/storage\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n",
92
- "import { join } from \"node:path\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { toPascalCase } from \"@ooneex/utils\";\nimport { decorator } from \"../decorators\";\nimport { askName } from \"../prompts/askName\";\nimport testTemplate from \"../templates/vector-database.test.txt\";\nimport template from \"../templates/vector-database.txt\";\nimport type { ICommand } from \"../types\";\n\ntype CommandOptionsType = {\n name?: string;\n module?: string;\n};\n\n@decorator.command()\nexport class MakeVectorDatabaseCommand<T extends CommandOptionsType = CommandOptionsType> implements ICommand<T> {\n public getName(): string {\n return \"make:vector-database\";\n }\n\n public getDescription(): string {\n return \"Generate a new vector database class\";\n }\n\n public async run(options: T): Promise<void> {\n let { name, module } = options;\n\n if (!name) {\n name = await askName({ message: \"Enter vector database name\" });\n }\n\n name = toPascalCase(name)\n .replace(/VectorDatabase$/, \"\")\n .replace(/Database$/, \"\");\n\n const content = template.replace(/{{NAME}}/g, name);\n\n const base = module ? join(\"modules\", module) : \".\";\n const vectorDatabaseLocalDir = join(base, \"src\", \"databases\");\n const vectorDatabaseDir = join(process.cwd(), vectorDatabaseLocalDir);\n const filePath = join(vectorDatabaseDir, `${name}VectorDatabase.ts`);\n await Bun.write(filePath, content);\n\n // Generate test file\n const testContent = testTemplate.replace(/{{NAME}}/g, name);\n const testsLocalDir = join(base, \"tests\", \"databases\");\n const testsDir = join(process.cwd(), testsLocalDir);\n const testFilePath = join(testsDir, `${name}VectorDatabase.spec.ts`);\n await Bun.write(testFilePath, testContent);\n\n const logger = new TerminalLogger();\n\n logger.success(`${join(vectorDatabaseLocalDir, name)}VectorDatabase.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n logger.success(`${join(testsLocalDir, name)}VectorDatabase.spec.ts created successfully`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n // Install @ooneex/rag dependency if not already installed\n const packageJsonPath = join(process.cwd(), \"package.json\");\n const packageJson = await Bun.file(packageJsonPath).json();\n const deps = packageJson.dependencies ?? {};\n const devDeps = packageJson.devDependencies ?? {};\n\n if (!deps[\"@ooneex/rag\"] && !devDeps[\"@ooneex/rag\"]) {\n const install = Bun.spawn([\"bun\", \"add\", \"@ooneex/rag\"], {\n cwd: process.cwd(),\n stdout: \"ignore\",\n stderr: \"inherit\",\n });\n await install.exited;\n }\n }\n}\n"
93
- ],
94
- "mappings": "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",
95
- "debugId": "82C73E83EFCA9ED864756E2164756E21",
96
- "names": []
97
- }