astro-ghostcms/.pnpm-store/v3/files/92/4a17be1a118c15a4b9fb09ee8db...

437 lines
44 KiB
Plaintext
Raw Permalink Normal View History

2024-02-14 14:10:47 +00:00
'use strict';
const process$1 = require('node:process');
const f = require('node:readline');
const tty$1 = require('node:tty');
const index = require('../shared/consola.4bbae468.cjs');
const require$$0 = require('tty');
const utils = require('../utils.cjs');
require('../core.cjs');
require('../shared/consola.deac7d5a.cjs');
require('node:util');
require('node:path');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
const f__default = /*#__PURE__*/_interopDefaultCompat(f);
const require$$0__default = /*#__PURE__*/_interopDefaultCompat(require$$0);
const ESC = '\x1B';
const CSI = `${ESC}[`;
const beep = '\u0007';
const cursor = {
to(x, y) {
if (!y) return `${CSI}${x + 1}G`;
return `${CSI}${y + 1};${x + 1}H`;
},
move(x, y) {
let ret = '';
if (x < 0) ret += `${CSI}${-x}D`;
else if (x > 0) ret += `${CSI}${x}C`;
if (y < 0) ret += `${CSI}${-y}A`;
else if (y > 0) ret += `${CSI}${y}B`;
return ret;
},
up: (count = 1) => `${CSI}${count}A`,
down: (count = 1) => `${CSI}${count}B`,
forward: (count = 1) => `${CSI}${count}C`,
backward: (count = 1) => `${CSI}${count}D`,
nextLine: (count = 1) => `${CSI}E`.repeat(count),
prevLine: (count = 1) => `${CSI}F`.repeat(count),
left: `${CSI}G`,
hide: `${CSI}?25l`,
show: `${CSI}?25h`,
save: `${ESC}7`,
restore: `${ESC}8`
};
const scroll = {
up: (count = 1) => `${CSI}S`.repeat(count),
down: (count = 1) => `${CSI}T`.repeat(count)
};
const erase = {
screen: `${CSI}2J`,
up: (count = 1) => `${CSI}1J`.repeat(count),
down: (count = 1) => `${CSI}J`.repeat(count),
line: `${CSI}2K`,
lineEnd: `${CSI}K`,
lineStart: `${CSI}1K`,
lines(count) {
let clear = '';
for (let i = 0; i < count; i++)
clear += this.line + (i < count - 1 ? cursor.up() : '');
if (count)
clear += cursor.left;
return clear;
}
};
var src = { cursor, scroll, erase, beep };
var picocolors = {exports: {}};
let tty = require$$0__default;
let isColorSupported =
!("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
("FORCE_COLOR" in process.env ||
process.argv.includes("--color") ||
process.platform === "win32" ||
(tty.isatty(1) && process.env.TERM !== "dumb") ||
"CI" in process.env);
let formatter =
(open, close, replace = open) =>
input => {
let string = "" + input;
let index = string.indexOf(close, open.length);
return ~index
? open + replaceClose(string, close, replace, index) + close
: open + string + close
};
let replaceClose = (string, close, replace, index) => {
let start = string.substring(0, index) + replace;
let end = string.substring(index + close.length);
let nextIndex = end.indexOf(close);
return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
};
let createColors = (enabled = isColorSupported) => ({
isColorSupported: enabled,
reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
});
picocolors.exports = createColors();
picocolors.exports.createColors = createColors;
var picocolorsExports = picocolors.exports;
const l = /*@__PURE__*/index.getDefaultExportFromCjs(picocolorsExports);
function z({onlyFirst:t=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,t?void 0:"g")}function $(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(z(),"")}var m={},G={get exports(){return m},set exports(t){m=t;}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),C=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(e){var s=this.e
`)];for(const[E,a]of o.entries()){if(e+=a,p.has(a)){const{groups:B}=new RegExp(`(?:\\${W}(?<code>\\d+)m|\\${w}(?<uri>.*)${b})`).exec(o.slice(E).join(""))||{groups:{}};if(B.code!==void 0){const A=Number.parseFloat(B.code);s=A===J?void 0:A;}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri);}const n=q.codes.get(Number(s));o[E+1]===`
`?(C&&(e+=j("")),s&&n&&(e+=N(n))):a===`
`&&(s&&n&&(e+=N(s)),C&&(e+=j(C)));}return e};function P(t,u,F){return String(t).normalize().replace(/\r\n/g,`
`).split(`
`).map(e=>uD(e,u,F)).join(`
`)}function FD(t,u){if(t===u)return;const F=t.split(`
`),e=u.split(`
`),s=[];for(let C=0;C<Math.max(F.length,e.length);C++)F[C]!==e[C]&&s.push(C);return s}const R=Symbol("clack:cancel");function g(t,u){t.isTTY&&t.setRawMode(u);}const V=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),tD=new Set(["up","down","left","right","space","enter"]);class h{constructor({render:u,input:F=process$1.stdin,output:e=process$1.stdout,...s},C=!0){this._track=!1,this._cursor=0,this.state="initial",this.error="",this.subscribers=new Map,this._prevFrame="",this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=u.bind(this),this._track=C,this.input=F,this.output=e;}prompt(){const u=new tty$1.WriteStream(0);return u._write=(F,e,s)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),s();},this.input.pipe(u),this.rl=f__default.createInterface({input:this.input,output:u,tabSize:2,prompt:"",escapeCodeTimeout:50}),f__default.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),g(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((F,e)=>{this.once("submit",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(this.value);}),this.once("cancel",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(R);});})}on(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F}),this.subscribers.set(u,e);}once(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F,once:!0}),this.subscribers.set(u,e);}emit(u,...F){const e=this.subscribers.get(u)??[],s=[];for(const C of e)C.cb(...F),C.once&&s.push(()=>e.splice(e.indexOf(C),1));for(const C of s)C();}unsubscribe(){this.subscribers.clear();}onKeypress(u,F){if(this.state==="error"&&(this.state="active"),F?.name&&!this._track&&V.has(F.name)&&this.emit("cursor",V.get(F.name)),F?.name&&tD.has(F.name)&&this.emit("cursor",F.name),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u&&this.emit("key",u.toLowerCase()),F?.name==="return"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e,this.state="error",this.rl.write(this.value));}this.state!=="error"&&(this.state="submit");}u===""&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close();}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
`),g(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=P(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
`).length-1;this.output.write(src.cursor.move(-999,u*-1));}render(){const u=P(this._render(this)??"",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(src.cursor.hide);else {const F=FD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.lines(1));const s=u.split(`
`);this.output.write(s[e]),this._prevFrame=u,this.output.write(src.cursor.move(0,s.length-e-1));return}else if(F&&F?.length>1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.down());const C=u.split(`
`).slice(e);this.output.write(C.join(`
`)),this._prevFrame=u;return}this.output.write(src.erase.down());}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u;}}}class sD extends h{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value;}),this.on("confirm",F=>{this.output.write(src.cursor.move(0,-1)),this.value=F,this.state="submit",this.close();}),this.on("cursor",()=>{this.value=!this.value;});}}class iD extends h{constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on("key",F=>{F==="a"&&this.toggleAll();}),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}});}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value);}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value];}}class ED extends h{constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}}class oD extends h{constructor(u){super(u),this.valueWithCursor="",this.on("finalize",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value;}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${l.inverse(l.hidden("_"))}`;else {const F=this.value.slice(0,this.cursor),e=this.value.slice(this.cursor);this.valueWithCursor=`${F}${l.inverse(e[0])}${e.slice(1)}`;}});}get cursor(){return this._cursor}}
const unicode = index.isUnicodeSupported();
const s = (c, fallback) => unicode ? c : fallback;
const S_STEP_ACTIVE = s("\u276F", ">");
const S_STEP_CANCEL = s("\u25A0", "x");
const S_STEP_ERROR = s("\u25B2", "x");
const S_STEP_SUBMIT = s("\u2714", "\u221A");
const S_BAR = "";
const S_BAR_END = "";
const S_RADIO_ACTIVE = s("\u25CF", ">");
const S_RADIO_INACTIVE = s("\u25CB", " ");
const S_CHECKBOX_ACTIVE = s("\u25FB", "[\u2022]");
const S_CHECKBOX_SELECTED = s("\u25FC", "[+]");
const S_CHECKBOX_INACTIVE = s("\u25FB", "[ ]");
const symbol = (state) => {
switch (state) {
case "initial":
case "active": {
return utils.colors.cyan(S_STEP_ACTIVE);
}
case "cancel": {
return utils.colors.red(S_STEP_CANCEL);
}
case "error": {
return utils.colors.yellow(S_STEP_ERROR);
}
case "submit": {
return utils.colors.green(S_STEP_SUBMIT);
}
}
};
const text = (opts) => {
return new oD({
validate: opts.validate,
placeholder: opts.placeholder,
defaultValue: opts.defaultValue,
initialValue: opts.initialValue,
render() {
const title = `${utils.colors.gray(S_BAR)}
${symbol(this.state)} ${opts.message}
`;
const placeholder = opts.placeholder ? utils.colors.inverse(opts.placeholder[0]) + utils.colors.dim(opts.placeholder.slice(1)) : utils.colors.inverse(utils.colors.hidden("_"));
const value = this.value ? this.valueWithCursor : placeholder;
switch (this.state) {
case "error": {
return `${title.trim()}
${utils.colors.yellow(
S_BAR
)} ${value}
${utils.colors.yellow(S_BAR_END)} ${utils.colors.yellow(
this.error
)}
`;
}
case "submit": {
return `${title}${utils.colors.gray(S_BAR)} ${utils.colors.dim(
this.value || opts.placeholder
)}`;
}
case "cancel": {
return `${title}${utils.colors.gray(S_BAR)} ${utils.colors.strikethrough(
utils.colors.dim(this.value ?? "")
)}${this.value?.trim() ? "\n" + utils.colors.gray(S_BAR) : ""}`;
}
default: {
return `${title}${utils.colors.cyan(S_BAR)} ${value}
${utils.colors.cyan(
S_BAR_END
)}
`;
}
}
}
}).prompt();
};
const confirm = (opts) => {
const active = opts.active ?? "Yes";
const inactive = opts.inactive ?? "No";
return new sD({
active,
inactive,
initialValue: opts.initialValue ?? true,
render() {
const title = `${utils.colors.gray(S_BAR)}
${symbol(this.state)} ${opts.message}
`;
const value = this.value ? active : inactive;
switch (this.state) {
case "submit": {
return `${title}${utils.colors.gray(S_BAR)} ${utils.colors.dim(value)}`;
}
case "cancel": {
return `${title}${utils.colors.gray(S_BAR)} ${utils.colors.strikethrough(
utils.colors.dim(value)
)}
${utils.colors.gray(S_BAR)}`;
}
default: {
return `${title}${utils.colors.cyan(S_BAR)} ${this.value ? `${utils.colors.green(S_RADIO_ACTIVE)} ${active}` : `${utils.colors.dim(S_RADIO_INACTIVE)} ${utils.colors.dim(active)}`} ${utils.colors.dim("/")} ${this.value ? `${utils.colors.dim(S_RADIO_INACTIVE)} ${utils.colors.dim(inactive)}` : `${utils.colors.green(S_RADIO_ACTIVE)} ${inactive}`}
${utils.colors.cyan(S_BAR_END)}
`;
}
}
}
}).prompt();
};
const select = (opts) => {
const opt = (option, state) => {
const label = option.label ?? String(option.value);
switch (state) {
case "active": {
return `${utils.colors.green(S_RADIO_ACTIVE)} ${label} ${option.hint ? utils.colors.dim(`(${option.hint})`) : ""}`;
}
case "selected": {
return `${utils.colors.dim(label)}`;
}
case "cancelled": {
return `${utils.colors.strikethrough(utils.colors.dim(label))}`;
}
}
return `${utils.colors.dim(S_RADIO_INACTIVE)} ${utils.colors.dim(label)}`;
};
return new ED({
options: opts.options,
initialValue: opts.initialValue,
render() {
const title = `${utils.colors.gray(S_BAR)}
${symbol(this.state)} ${opts.message}
`;
switch (this.state) {
case "submit": {
return `${title}${utils.colors.gray(S_BAR)} ${opt(
this.options[this.cursor],
"selected"
)}`;
}
case "cancel": {
return `${title}${utils.colors.gray(S_BAR)} ${opt(
this.options[this.cursor],
"cancelled"
)}
${utils.colors.gray(S_BAR)}`;
}
default: {
return `${title}${utils.colors.cyan(S_BAR)} ${this.options.map(
(option, i) => opt(option, i === this.cursor ? "active" : "inactive")
).join(`
${utils.colors.cyan(S_BAR)} `)}
${utils.colors.cyan(S_BAR_END)}
`;
}
}
}
}).prompt();
};
const multiselect = (opts) => {
const opt = (option, state) => {
const label = option.label ?? String(option.value);
switch (state) {
case "active": {
return `${utils.colors.cyan(S_CHECKBOX_ACTIVE)} ${label} ${option.hint ? utils.colors.dim(`(${option.hint})`) : ""}`;
}
case "selected": {
return `${utils.colors.green(S_CHECKBOX_SELECTED)} ${utils.colors.dim(label)}`;
}
case "cancelled": {
return `${utils.colors.strikethrough(utils.colors.dim(label))}`;
}
case "active-selected": {
return `${utils.colors.green(S_CHECKBOX_SELECTED)} ${label} ${option.hint ? utils.colors.dim(`(${option.hint})`) : ""}`;
}
case "submitted": {
return `${utils.colors.dim(label)}`;
}
}
return `${utils.colors.dim(S_CHECKBOX_INACTIVE)} ${utils.colors.dim(label)}`;
};
return new iD({
options: opts.options,
initialValues: opts.initialValues,
required: opts.required ?? true,
cursorAt: opts.cursorAt,
validate(selected) {
if (this.required && selected.length === 0) {
return `Please select at least one option.
${utils.colors.reset(
utils.colors.dim(
`Press ${utils.colors.gray(
utils.colors.bgWhite(utils.colors.inverse(" space "))
)} to select, ${utils.colors.gray(
utils.colors.bgWhite(utils.colors.inverse(" enter "))
)} to submit`
)
)}`;
}
},
render() {
const title = `${utils.colors.gray(S_BAR)}
${symbol(this.state)} ${opts.message}
`;
switch (this.state) {
case "submit": {
return `${title}${utils.colors.gray(S_BAR)} ${this.options.filter(({ value }) => this.value.includes(value)).map((option) => opt(option, "submitted")).join(utils.colors.dim(", ")) || utils.colors.dim("none")}`;
}
case "cancel": {
const label = this.options.filter(({ value }) => this.value.includes(value)).map((option) => opt(option, "cancelled")).join(utils.colors.dim(", "));
return `${title}${utils.colors.gray(S_BAR)} ${label.trim() ? `${label}
${utils.colors.gray(S_BAR)}` : ""}`;
}
case "error": {
const footer = this.error.split("\n").map(
(ln, i) => i === 0 ? `${utils.colors.yellow(S_BAR_END)} ${utils.colors.yellow(ln)}` : ` ${ln}`
).join("\n");
return title + utils.colors.yellow(S_BAR) + " " + this.options.map((option, i) => {
const selected = this.value.includes(option.value);
const active = i === this.cursor;
if (active && selected) {
return opt(option, "active-selected");
}
if (selected) {
return opt(option, "selected");
}
return opt(option, active ? "active" : "inactive");
}).join(`
${utils.colors.yellow(S_BAR)} `) + "\n" + footer + "\n";
}
default: {
return `${title}${utils.colors.cyan(S_BAR)} ${this.options.map((option, i) => {
const selected = this.value.includes(option.value);
const active = i === this.cursor;
if (active && selected) {
return opt(option, "active-selected");
}
if (selected) {
return opt(option, "selected");
}
return opt(option, active ? "active" : "inactive");
}).join(`
${utils.colors.cyan(S_BAR)} `)}
${utils.colors.cyan(S_BAR_END)}
`;
}
}
}
}).prompt();
};
async function prompt(message, opts = {}) {
if (!opts.type || opts.type === "text") {
return await text({
message,
defaultValue: opts.default,
placeholder: opts.placeholder,
initialValue: opts.initial
});
}
if (opts.type === "confirm") {
return await confirm({
message,
initialValue: opts.initial
});
}
if (opts.type === "select") {
return await select({
message,
options: opts.options.map(
(o) => typeof o === "string" ? { value: o, label: o } : o
)
});
}
if (opts.type === "multiselect") {
return await multiselect({
message,
options: opts.options.map(
(o) => typeof o === "string" ? { value: o, label: o } : o
),
required: opts.required
});
}
throw new Error(`Unknown prompt type: ${opts.type}`);
}
exports.prompt = prompt;