@cmflow/atlas 3.4.0-beta.18 → 3.4.0-beta.19
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.
- package/dist/bin/atlas.d.mts +2 -0
- package/dist/bin/atlas.mjs +220 -29712
- package/dist/bin/atlas.mjs.map +1 -0
- package/dist/index.mjs +1 -10
- package/dist/index.mjs.map +1 -1
- package/dist/propertyExtractionService-Bg6xKCTu.mjs +4 -0
- package/dist/propertyExtractionService-Bg6xKCTu.mjs.map +1 -0
- package/dist/rolldown-runtime-tLoeUGlk.mjs +3 -0
- package/dist/routeBackendTopologyService-_ebE4-LV.mjs +44 -0
- package/dist/routeBackendTopologyService-_ebE4-LV.mjs.map +1 -0
- package/dist/taskProgressService-Qw3ExHJI.mjs +50 -0
- package/dist/taskProgressService-Qw3ExHJI.mjs.map +1 -0
- package/dist/token-Cnw7Rqlg.mjs +4 -0
- package/dist/token-Cnw7Rqlg.mjs.map +1 -0
- package/dist/token-util-D_QRVbKm.mjs +4 -0
- package/dist/token-util-D_QRVbKm.mjs.map +1 -0
- package/dist/{token-util-Bn9v-va7.mjs → token-util-GFn-xfdx.mjs} +1 -3
- package/dist/workers/routeBackendTopologyWorker.d.mts +2 -0
- package/dist/workers/routeBackendTopologyWorker.mjs +2 -29
- package/dist/workers/routeBackendTopologyWorker.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/rolldown-runtime-BhZ21nvr.mjs +0 -28
- package/dist/routeBackendTopologyService-DaSeX-3r.mjs +0 -9582
- package/dist/token-CyLtECE0.mjs +0 -58
- package/dist/token-util-D-AsjUg4.mjs +0 -463
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { fileURLToPath as __atlasFileURLToPath } from "node:url";
|
|
2
|
+
const __filename = __atlasFileURLToPath(import.meta.url);
|
|
3
|
+
import{t as e}from"./rolldown-runtime-tLoeUGlk.mjs";import t from"node:path";import n from"node:fs";import r,{stdin as i,stdout as a}from"node:process";import{pathToFileURL as o}from"node:url";import{Project as s}from"ts-morph";import{styleText as c}from"node:util";import*as l from"node:readline";import u from"node:readline";import{ReadStream as d}from"node:tty";import{AsyncLocalStorage as f}from"node:async_hooks";function p(e){let t=e.map(e=>typeof e==`string`?{name:e}:e),n=new Map;for(let e of t){if(!e.name.trim())throw Error(`Backend source names must not be empty`);n.set(e.name,e)}return[...n.values()]}function m(e){return[...new Set(e)].map((e,t)=>({rule:e,index:t})).sort((e,t)=>(t.rule.priority||0)-(e.rule.priority||0)||e.index-t.index).map(({rule:e})=>e)}function h(e=process.cwd()){let r=t.join(e,`tsconfig.json`);if(!n.existsSync(r))return{};let i=new s({tsConfigFilePath:r,skipAddingFilesFromTsConfig:!0}).getCompilerOptions().paths??{};return Object.fromEntries(Object.entries(i).flatMap(([e,t])=>{let n=t?.[0];return n?[[e.replace(/\/\*$/,``),n.replace(/^\.\//,``).replace(/\/\*$/,``)]]:[]}))}let g;function _(e){let t=p(e.analysis.backends);g={...e,envs:e.envs??{},analysis:{...e.analysis,backends:t,rules:m([...e.analysis.rules,...t.flatMap(e=>e.rules||[])])}}}function v(){if(!g)throw Error(`Atlas config not loaded. Run Atlas from a directory containing atlas.config.ts or pass --config.`);return g}async function y(e,n){let r=t.resolve(e);try{let e;if(r.endsWith(`.ts`)){let{tsImport:t}=await import(`tsx/esm/api`),n=await t(r,import.meta.url);e=n.default??n}else e=await import(o(r).href);let t=e.default??e,i=n||t.repoRoot||process.cwd(),a=p(t.analysis.backends);return{...t,repoRoot:i,cwd:i,envs:t.envs??{},analysis:{...t.analysis,backends:a},resolver:{alias:{...h(),...t.resolver?.alias}}}}catch(e){throw Error(`Unable to load Atlas configuration at ${r}: ${e instanceof Error?e.message:String(e)}`)}}const b=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),x=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,S=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,ee=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,C=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,w=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,T=/\t{1,1000}/y,E=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,te=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,ne=/\p{M}+/gu,D={limit:1/0,ellipsis:``},re=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?re(i,D,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[te,l],[ee,0],[C,o],[T,s],[E,c],[w,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,O=0,k=0,A=0;outer:for(;;){if(O>y||p>=m&&p>f){let t=e.slice(y,O)||e.slice(f,p);h=0;for(let e of t.replaceAll(ne,``)){let t=e.codePointAt(0)||0;if(A=x(t)?2:S(t)?u:l,k+A>v&&(_=Math.min(_,Math.max(y,f)+h)),k+A>r){g=!0;break outer}h+=e.length,k+=A}y=O=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===w?b(e.slice(p,n.lastIndex)):n===E?1:n.lastIndex-p,A=h*i,k+A>v&&(_=Math.min(_,p+Math.floor((v-k)/i))),k+A>r){g=!0;break outer}k+=A,y=f,O=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:k,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},O={limit:1/0,ellipsis:``,ellipsisWidth:0},k=(e,t={})=>re(e,O,t).width,A=`]8;;`,ie=RegExp(`(?:\\[(?<code>\\d+)m|\\${A}(?<uri>.*))`,`y`),j=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},M=e=>`[${e}m`,N=e=>`${A}${e}`,P=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:k(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=k(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===``)&&(i=!0,a=t.startsWith(A,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},ae=e=>{let t=e.split(` `),n=t.length;for(;n&&!k(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},oe=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=k(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=k(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),P(s,r,t),c=k(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){P(s,r,t),c=k(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){P(s,r,t),c=k(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>ae(e)));let l=s.join(`
|
|
4
|
+
`),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===``){ie.lastIndex=e+1;let t=ie.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
|
|
5
|
+
`){a&&(r+=N(``));let e=i?j(i):void 0;i&&e&&(r+=M(e))}else t===`
|
|
6
|
+
`&&(i&&j(i)&&(r+=M(i)),a&&(r+=N(a)))}return r},se=/\r?\n/;function F(e,t,n){return String(e).normalize().split(se).map(e=>oe(e,t,n)).join(`
|
|
7
|
+
`)}var I=e(((e,t)=>{let n={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`};t.exports={cursor:n,scroll:{up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},erase:{screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(e){let t=``;for(let r=0;r<e;r++)t+=this.line+(r<e-1?n.up():``);return e&&(t+=n.left),t}},beep:`\x07`}}))();function L(e,t,n){if(!n.some(e=>!e.disabled))return e;let r=e+t,i=Math.max(n.length-1,0),a=r<0?i:r>i?0:r;return n[a]?.disabled?L(a,t<0?-1:1,n):a}const R={actions:new Set([`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`]),aliases:new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]]),messages:{cancel:`Canceled`,error:`Something went wrong`},withGuide:!0,date:{monthNames:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],messages:{required:`Please enter a valid date`,invalidMonth:`There are only 12 months in a year`,invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function z(e,t){if(typeof e==`string`)return R.aliases.get(e)===t;for(let n of e)if(n!==void 0&&z(n,t))return!0;return!1}function ce(e,t){if(e===t)return;let n=e.split(`
|
|
8
|
+
`),r=t.split(`
|
|
9
|
+
`),i=Math.max(n.length,r.length),a=[];for(let e=0;e<i;e++)n[e]!==r[e]&&a.push(e);return{lines:a,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}const le=globalThis.process.platform.startsWith(`win`),B=Symbol(`clack:cancel`);function ue(e){return e===B}function V(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function de({input:e=i,output:t=a,overwrite:n=!0,hideCursor:r=!0}={}){let o=l.createInterface({input:e,output:t,prompt:``,tabSize:1});l.emitKeypressEvents(e,o),e instanceof d&&e.isTTY&&e.setRawMode(!0);let s=(i,{name:a,sequence:o})=>{if(z([String(i),a,o],`cancel`)){r&&t.write(I.cursor.show),process.exit(0);return}if(!n)return;let c=a===`return`?0:-1,u=a===`return`?-1:0;l.moveCursor(t,c,u,()=>{l.clearLine(t,1,()=>{e.once(`keypress`,s)})})};return r&&t.write(I.cursor.hide),e.once(`keypress`,s),()=>{e.off(`keypress`,s),r&&t.write(I.cursor.show),e instanceof d&&e.isTTY&&!le&&e.setRawMode(!1),o.terminal=!1,o.close()}}const H=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,U=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function W(e,t,n,r=n,i=n,o){return F(t,H(e??a)-n.length,{hard:!0,trim:!1}).split(`
|
|
10
|
+
`).map((e,t,a)=>{let s=o?o(e,t):e;return t===0?`${r}${s}`:t===a.length-1?`${i}${s}`:`${n}${s}`}).join(`
|
|
11
|
+
`)}function fe(e,t){if(`~standard`in e){let n=e[`~standard`].validate(t);if(n instanceof Promise)throw TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return n.issues?.at(0)?.message}return e(t)}var pe=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame=``;_subscribers=new Map;_cursor=0;state=`initial`;error=``;value;userInput=``;constructor(e,t=!0){let{input:n=i,output:r=a,render:o,signal:s,...c}=e;this.opts=c,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=o.bind(this),this._track=t,this._abortSignal=s,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(B);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=u.createInterface({input:this.input,tabSize:2,prompt:``,escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on(`keypress`,this.onKeypress),V(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(I.cursor.show),this.output.off(`resize`,this.render),V(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(I.cursor.show),this.output.off(`resize`,this.render),V(this.input,!1),e(B)})})}_isActionKey(e,t){return e===` `}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit(`value`,this.value)}_setUserInput(e,t){this.userInput=e??``,this.emit(`userInput`,this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:`u`}),this._setUserInput(``)}onKeypress(e,t){if(this._track&&t.name!==`return`&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:`h`}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&R.aliases.has(t.name)&&this.emit(`cursor`,R.aliases.get(t.name)),R.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),this.emit(`key`,e,t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=fe(this.opts.validate,this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=`error`,this.rl?.write(this.userInput))}this.state!==`error`&&(this.state=`submit`)}z([e,t?.name,t?.sequence],`cancel`)&&(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(`
|
|
12
|
+
`),V(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=F(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
13
|
+
`).length-1;this.output.write(I.cursor.move(-999,e*-1))}render(){let e=F(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(I.cursor.hide);else{let t=ce(this._prevFrame,e),n=U(this.output);if(this.restoreCursor(),t){let r=Math.max(0,t.numLinesAfter-n),i=Math.max(0,t.numLinesBefore-n),a=t.lines.find(e=>e>=r);if(a===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(I.cursor.move(0,a-i)),this.output.write(I.erase.lines(1));let t=e.split(`
|
|
14
|
+
`);this.output.write(t[a]),this._prevFrame=e,this.output.write(I.cursor.move(0,t.length-a-1));return}if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(I.cursor.move(0,e))}this.output.write(I.erase.down());let t=e.split(`
|
|
15
|
+
`).slice(a);this.output.write(t.join(`
|
|
16
|
+
`)),this._prevFrame=e;return}}this.output.write(I.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};let me=class extends pe{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let t=this.options.findIndex(({value:t})=>t===e.initialValue),n=t===-1?0:t;this.cursor=this.options[n]?.disabled?L(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=L(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=L(this.cursor,1,this.options)}this.changeValue()})}};function he(){return r.platform===`win32`?!!r.env.CI||!!r.env.WT_SESSION||!!r.env.TERMINUS_SUBLIME||r.env.ConEmuTask===`{cmd::Cmder}`||r.env.TERM_PROGRAM===`Terminus-Sublime`||r.env.TERM_PROGRAM===`vscode`||r.env.TERM===`xterm-256color`||r.env.TERM===`alacritty`||r.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:r.env.TERM!==`linux`}const G=he(),ge=()=>process.env.CI===`true`,K=(e,t)=>G?e:t,_e=K(`◆`,`*`),q=K(`■`,`x`),ve=K(`▲`,`x`),J=K(`◇`,`o`),ye=K(`┌`,`T`),Y=K(`│`,`|`),X=K(`└`,`—`),be=K(`●`,`>`),xe=K(`○`,` `),Se=K(`─`,`-`),Ce=K(`╮`,`+`),we=K(`├`,`+`),Te=K(`╯`,`+`),Ee=K(`╰`,`+`),De=K(`●`,`•`),Oe=K(`◆`,`*`),ke=K(`▲`,`!`),Ae=K(`■`,`x`),je=e=>{switch(e){case`initial`:case`active`:return c(`cyan`,_e);case`cancel`:return c(`red`,q);case`error`:return c(`yellow`,ve);case`submit`:return c(`green`,J)}},Me=e=>{switch(e){case`initial`:case`active`:return c(`cyan`,Y);case`cancel`:return c(`red`,Y);case`error`:return c(`yellow`,Y);case`submit`:return c(`green`,Y)}};function Ne(e,t){let n=[`${t?`${c(`cyan`,Y)} `:``}${e.join(` • `)}`];return t&&n.push(c(`cyan`,X)),n}const Pe=(e,t,n,r,i,a=!1)=>{let o=t,s=0;if(a)for(let t=r-1;t>=n;t--){let n=e[t];if(n&&(o-=n.length),s++,o<=i)break}else for(let t=n;t<r;t++){let n=e[t];if(n&&(o-=n.length),s++,o<=i)break}return{lineCount:o,removals:s}},Fe=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=1/0,columnPadding:a=0,rowPadding:o=4})=>{let s=H(r)-a,l=U(r),u=c(`dim`,`...`),d=Math.max(l-o,0),f=Math.max(Math.min(i,d),5),p=0;e>=f-3&&(p=Math.max(Math.min(e-f+3,t.length-f),0));let m=f<t.length&&p>0,h=f<t.length&&p+f<t.length,g=Math.min(p+f,t.length),_=[],v=0;m&&v++,h&&v++;let y=p+ +!!m,b=g-+!!h;for(let r=y;r<b;r++){let i=t[r],a=F(i?n(i,r===e):``,s,{hard:!0,trim:!1}).split(`
|
|
17
|
+
`);_.push(a),v+=a.length}if(v>d){let t=0,n=0,r=v,i=e-y,a=d,o=()=>Pe(_,r,0,i,a),s=()=>Pe(_,r,i+1,_.length,a,!0);m?({lineCount:r,removals:t}=o(),r>a&&(h||--a,{lineCount:r,removals:n}=s())):(h||--a,{lineCount:r,removals:n}=s(),r>a&&(--a,{lineCount:r,removals:t}=o())),t>0&&(m=!0,_.splice(0,t)),n>0&&(h=!0,_.splice(_.length-n,n))}let x=[];m&&x.push(u);for(let e of _)for(let t of e)x.push(t);return h&&x.push(u),x};`${c(`dim`,`↑/↓`)}`,`${c(`dim`,`Space:`)}`,`${c(`dim`,`Enter:`)}`;const Z={message:(e=[],{symbol:t=c(`gray`,Y),secondarySymbol:n=c(`gray`,Y),output:r=process.stdout,spacing:i=1,withGuide:a}={})=>{let o=[],s=a??R.withGuide,l=s?n:``,u=s?`${t} `:``,d=s?`${n} `:``;for(let e=0;e<i;e++)o.push(l);let f=Array.isArray(e)?e:e.split(`
|
|
18
|
+
`);if(f.length>0){let[e,...r]=f;e.length>0?o.push(`${u}${e}`):o.push(s?t:``);for(let e of r)e.length>0?o.push(`${d}${e}`):o.push(s?n:``)}r.write(`${o.join(`
|
|
19
|
+
`)}
|
|
20
|
+
`)},info:(e,t)=>{Z.message(e,{...t,symbol:c(`blue`,De)})},success:(e,t)=>{Z.message(e,{...t,symbol:c(`green`,Oe)})},step:(e,t)=>{Z.message(e,{...t,symbol:c(`green`,J)})},warn:(e,t)=>{Z.message(e,{...t,symbol:c(`yellow`,ke)})},warning:(e,t)=>{Z.warn(e,t)},error:(e,t)=>{Z.message(e,{...t,symbol:c(`red`,Ae)})}},Ie=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??R.withGuide?`${c(`gray`,X)} `:``;n.write(`${r}${c(`red`,e)}
|
|
21
|
+
|
|
22
|
+
`)},Le=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??R.withGuide?`${c(`gray`,ye)} `:``;n.write(`${r}${e}
|
|
23
|
+
`)},Re=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??R.withGuide?`${c(`gray`,Y)}
|
|
24
|
+
${c(`gray`,X)} `:``;n.write(`${r}${e}
|
|
25
|
+
|
|
26
|
+
`)},ze=e=>e,Be=(e,t,n)=>{let r={hard:!0,trim:!1},i=F(e,t,r).split(`
|
|
27
|
+
`),a=i.reduce((e,t)=>Math.max(k(t),e),0);return F(e,t-(i.map(n).reduce((e,t)=>Math.max(k(t),e),0)-a),r)},Ve=(e=``,t=``,n)=>{let i=n?.output??r.stdout,a=n?.withGuide??R.withGuide,o=n?.format??ze,s=[``,...Be(e,H(i)-6,o).split(`
|
|
28
|
+
`).map(o),``],l=k(t),u=Math.max(s.reduce((e,t)=>{let n=k(t);return n>e?n:e},0),l)+2,d=s.map(e=>`${c(`gray`,Y)} ${e}${` `.repeat(u-k(e))}${c(`gray`,Y)}`).join(`
|
|
29
|
+
`),f=a?`${c(`gray`,Y)}
|
|
30
|
+
`:``,p=a?we:Ee;i.write(`${f}${c(`green`,J)} ${c(`reset`,t)} ${c(`gray`,Se.repeat(Math.max(u-l-1,1))+Ce)}
|
|
31
|
+
${d}
|
|
32
|
+
${c(`gray`,p+Se.repeat(u+2)+Te)}
|
|
33
|
+
`)},He=e=>c(`magenta`,e),Ue=({indicator:e=`dots`,onCancel:t,output:n=process.stdout,cancelMessage:r,errorMessage:i,frames:a=G?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:o=G?80:120,signal:s,...l}={})=>{let u=ge(),d,f,p=!1,m=!1,h=``,g,_=performance.now(),v=H(n),y=l?.styleFrame??He,b=e=>{let n=e>1?i??R.messages.error:r??R.messages.cancel;m=e===1,p&&(D(n,e),m&&typeof t==`function`&&t())},x=()=>b(2),S=()=>b(1),ee=()=>{process.on(`uncaughtExceptionMonitor`,x),process.on(`unhandledRejection`,x),process.on(`SIGINT`,S),process.on(`SIGTERM`,S),process.on(`exit`,b),s&&s.addEventListener(`abort`,S)},C=()=>{process.removeListener(`uncaughtExceptionMonitor`,x),process.removeListener(`unhandledRejection`,x),process.removeListener(`SIGINT`,S),process.removeListener(`SIGTERM`,S),process.removeListener(`exit`,b),s&&s.removeEventListener(`abort`,S)},w=()=>{if(g===void 0)return;u&&n.write(`
|
|
34
|
+
`);let e=F(g,v,{hard:!0,trim:!1}).split(`
|
|
35
|
+
`);e.length>1&&n.write(I.cursor.up(e.length-1)),n.write(I.cursor.to(0)),n.write(I.erase.down())},T=e=>e.replace(/\.+$/,``),E=e=>{let t=(performance.now()-e)/1e3,n=Math.floor(t/60),r=Math.floor(t%60);return n>0?`[${n}m ${r}s]`:`[${r}s]`},te=l.withGuide??R.withGuide,ne=(t=``)=>{p=!0,d=de({output:n}),h=T(t),_=performance.now(),te&&n.write(`${c(`gray`,Y)}
|
|
36
|
+
`);let r=0,i=0;ee(),f=setInterval(()=>{if(u&&h===g)return;w(),g=h;let t=y(a[r]),o;if(u)o=`${t} ${h}...`;else if(e===`timer`)o=`${t} ${h} ${E(_)}`;else{let e=`.`.repeat(Math.floor(i)).slice(0,3);o=`${t} ${h}${e}`}let s=F(o,v,{hard:!0,trim:!1});n.write(s),r=r+1<a.length?r+1:0,i=i<4?i+.125:0},o)},D=(t=``,r=0,i=!1)=>{if(!p)return;p=!1,clearInterval(f),w();let a=r===0?c(`green`,J):r===1?c(`red`,q):c(`red`,ve);h=t??h,i||(e===`timer`?n.write(`${a} ${h} ${E(_)}
|
|
37
|
+
`):n.write(`${a} ${h}
|
|
38
|
+
`)),C(),d()};return{start:ne,stop:(e=``)=>D(e,0),message:(e=``)=>{h=T(e??h)},cancel:(e=``)=>D(e,1),error:(e=``)=>D(e,2),clear:()=>D(``,0,!0),get isCancelled(){return m}}},We={light:K(`─`,`-`),heavy:K(`━`,`=`),block:K(`█`,`#`)};function Ge({style:e=`heavy`,max:t=100,size:n=40,...r}={}){let i=Ue(r),a=0,o=``,s=Math.max(1,t),l=Math.max(1,n),u=e=>{switch(e){case`initial`:case`active`:return e=>c(`magenta`,e);case`error`:case`cancel`:return e=>c(`red`,e);case`submit`:return e=>c(`green`,e);default:return e=>c(`magenta`,e)}},d=(t,n)=>{let r=Math.floor(a/s*l);return`${u(t)(We[e].repeat(r))}${c(`dim`,We[e].repeat(l-r))} ${n}`},f=(e=``)=>{o=e,i.start(d(`initial`,e))},p=(e=1,t)=>{a=Math.min(s,e+a),i.message(d(`active`,t??o)),o=t??o};return{start:f,stop:i.stop,cancel:i.cancel,error:i.error,clear:i.clear,advance:p,isCancelled:i.isCancelled,message:e=>p(0,e)}}const Ke=[`${c(`dim`,`↑/↓`)} to navigate`,`${c(`dim`,`Enter:`)} confirm`],Q=(e,t)=>e.includes(`
|
|
39
|
+
`)?e.split(`
|
|
40
|
+
`).map(e=>t(e)).join(`
|
|
41
|
+
`):t(e),qe=e=>{let t=(e,t)=>{if(e===void 0)return``;let n=e.label??String(e.value);switch(t){case`disabled`:return`${c(`gray`,xe)} ${Q(n,e=>c(`gray`,e))}${e.hint?` ${c(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${Q(n,e=>c(`dim`,e))}`;case`active`:return`${c(`green`,be)} ${n}${e.hint?` ${c(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${Q(n,e=>c([`strikethrough`,`dim`],e))}`;default:return`${c(`dim`,xe)} ${Q(n,e=>c(`dim`,e))}`}},n=e.showInstructions??!0;return new me({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let r=e.withGuide??R.withGuide,i=`${je(this.state)} `,a=`${Me(this.state)} `,o=W(e.output,e.message,a,i),s=`${r?`${c(`gray`,Y)}
|
|
42
|
+
`:``}${o}
|
|
43
|
+
`;switch(this.state){case`submit`:{let n=r?`${c(`gray`,Y)} `:``;return`${s}${W(e.output,t(this.options[this.cursor],`selected`),n)}`}case`cancel`:{let n=r?`${c(`gray`,Y)} `:``;return`${s}${W(e.output,t(this.options[this.cursor],`cancelled`),n)}${r?`
|
|
44
|
+
${c(`gray`,Y)}`:``}`}default:{let i=r?`${c(`cyan`,Y)} `:``,a=s.split(`
|
|
45
|
+
`).length,o=n?Ne(Ke,r):r?[c(`cyan`,X)]:[],l=o.join(`
|
|
46
|
+
`),u=o.length+1;return`${s}${i}${Fe({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:i.length,rowPadding:a+u,style:(e,n)=>t(e,e.disabled?`disabled`:n?`active`:`inactive`)}).join(`
|
|
47
|
+
${i}`)}
|
|
48
|
+
${l}
|
|
49
|
+
`}}}}).prompt()};`${c(`gray`,Y)}`;function $(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}const Je=new class{#e=new f;attach(e,t){return this.#e.run(e,t)}log(e){this.#e.getStore()?.log(e)}report(e){let t=this.#e.getStore();(t?.report||t?.log)?.(e)}createStepProgress(e=e=>({id:e,title:e})){let t=Ue(),n,r=e=>{if(!n)return;let r=$(Date.now()-n.startedAt);t.stop(`${e||n.completedTitle||`${n.title} completed`} (${r})`),n=void 0},i=e=>{if(n?.id===e.id){t.message(e.detail?`${e.title}: ${e.detail}`:e.title);return}r(),n={id:e.id,title:e.title,completedTitle:e.completedTitle,startedAt:Date.now()},t.start(e.detail?`${e.title}: ${e.detail}`:e.title)},a=r=>this.attach({log:e=>t.message(n?`${n.title}: ${e}`:e),report:t=>i(e(t))},r);return{report(t){i(e(t))},start:i,execute:a,run:async(e,t)=>{i(e),await new Promise(e=>setImmediate(e));let n=await a(t);return r(),n},finish(e){r(e)},fail(e){if(!n)return;let r=$(Date.now()-n.startedAt);t.stop(`${e} (${r})`),n=void 0}}}};export{Ve as a,qe as c,_ as d,y as f,Z as i,ue as l,Ie as n,Re as o,Le as r,Ge as s,Je as t,v as u};
|
|
50
|
+
//# sourceMappingURL=taskProgressService-Qw3ExHJI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskProgressService-Qw3ExHJI.mjs","names":["NO_TRUNCATION","fastStringTruncatedWidth","stringWidth","cursor","erase","l","cursor","erase","SelectPrompt","#storage"],"sources":["../src/config/mappers/normalizeBackendSources.ts","../src/config/mappers/normalizeExpressionRules.ts","../src/config/utils/getTsconfigAliases.ts","../src/config/userConfig.ts","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/sisteransi/src/index.js","../../../node_modules/@clack/core/dist/index.mjs","../../../node_modules/@clack/prompts/dist/index.mjs","../src/services/tasks/taskProgressService.ts"],"sourcesContent":["import type { BackendSource, UserConfig } from \"../../models/types\";\n\nexport function normalizeBackendSources(backends: UserConfig[\"analysis\"][\"backends\"]): BackendSource[] {\n const sources = backends.map((backend) => (typeof backend === \"string\" ? { name: backend } : backend));\n const sourcesByName = new Map<string, BackendSource>();\n for (const source of sources) {\n if (!source.name.trim()) {\n throw new Error(\"Backend source names must not be empty\");\n }\n sourcesByName.set(source.name, source);\n }\n return [...sourcesByName.values()];\n}\n","export function normalizeExpressionRules<Rule>(rules: Rule[]): Rule[] {\n return [...new Set(rules)]\n .map((rule, index) => ({ rule, index }))\n .sort(\n (left, right) =>\n ((right.rule as { priority?: number }).priority || 0) - ((left.rule as { priority?: number }).priority || 0) ||\n left.index - right.index\n )\n .map(({ rule }) => rule);\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Project } from \"ts-morph\";\n\nexport function getTsconfigAliases(workingDirectory = process.cwd()): Record<string, string> {\n const tsconfigPath = path.join(workingDirectory, \"tsconfig.json\");\n if (!fs.existsSync(tsconfigPath)) {\n return {};\n }\n\n const paths = new Project({ tsConfigFilePath: tsconfigPath, skipAddingFilesFromTsConfig: true }).getCompilerOptions().paths ?? {};\n return Object.fromEntries(\n Object.entries(paths).flatMap(([alias, targets]) => {\n const target = targets?.[0];\n if (!target) {\n return [];\n }\n return [[alias.replace(/\\/\\*$/, \"\"), target.replace(/^\\.\\//, \"\").replace(/\\/\\*$/, \"\")]];\n })\n );\n}\n","import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ResolvedUserConfig, UserConfig } from \"../models/types\";\nimport { normalizeBackendSources } from \"./mappers/normalizeBackendSources\";\nimport { normalizeExpressionRules } from \"./mappers/normalizeExpressionRules\";\nimport { getTsconfigAliases } from \"./utils/getTsconfigAliases\";\n\nlet _config: ResolvedUserConfig | undefined;\n\nexport function setUserConfig(config: ResolvedUserConfig): void {\n const backends = normalizeBackendSources(config.analysis.backends);\n _config = {\n ...config,\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n backends,\n rules: normalizeExpressionRules([...config.analysis.rules, ...backends.flatMap((backend) => backend.rules || [])])\n }\n };\n}\n\nexport function getUserConfig(): ResolvedUserConfig {\n if (!_config) {\n throw new Error(\"Atlas config not loaded. Run Atlas from a directory containing atlas.config.ts or pass --config.\");\n }\n return _config;\n}\n\nexport async function userConfig(configPath: string, projectRoot?: string): Promise<ResolvedUserConfig> {\n const filePath = path.resolve(configPath);\n try {\n let mod: { default?: UserConfig };\n if (filePath.endsWith(\".ts\")) {\n const { tsImport } = await import(\"tsx/esm/api\");\n const loadedModule = await tsImport(filePath, import.meta.url);\n mod = (loadedModule.default ?? loadedModule) as { default?: UserConfig };\n } else {\n mod = await import(pathToFileURL(filePath).href);\n }\n\n const config = mod.default ?? (mod as unknown as UserConfig);\n const repoRoot = projectRoot || config.repoRoot || process.cwd();\n const backends = normalizeBackendSources(config.analysis.backends);\n\n return {\n ...config,\n repoRoot,\n cwd: repoRoot,\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n backends\n },\n resolver: {\n alias: {\n ...getTsconfigAliases(),\n ...config.resolver?.alias\n }\n }\n };\n } catch (error) {\n throw new Error(`Unable to load Atlas configuration at ${filePath}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","import { styleText } from 'node:util';\nimport { stdout, stdin } from 'node:process';\nimport * as l from 'node:readline';\nimport l__default from 'node:readline';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport { ReadStream } from 'node:tty';\n\nfunction findCursor(s, o, l) {\n if (!l.some((r) => !r.disabled))\n return s;\n const t = s + o, n = Math.max(l.length - 1, 0), e = t < 0 ? n : t > n ? 0 : t;\n return l[e]?.disabled ? findCursor(e, o < 0 ? -1 : 1, l) : e;\n}\nfunction findTextCursor(s, o, l, i) {\n const t = i.split(`\n`);\n let n = 0, e = s;\n for (const r of t) {\n if (e <= r.length)\n break;\n e -= r.length + 1, n++;\n }\n for (n = Math.max(0, Math.min(t.length - 1, n + l)), e = Math.min(e, t[n].length) + o; e < 0 && n > 0; )\n n--, e += t[n].length + 1;\n for (; e > t[n].length && n < t.length - 1; )\n e -= t[n].length + 1, n++;\n e = Math.max(0, Math.min(t[n].length, e));\n let h = 0;\n for (let r = 0; r < n; r++)\n h += t[r].length + 1;\n return h + e;\n}\n\nconst a$1 = [\"up\", \"down\", \"left\", \"right\", \"space\", \"enter\", \"cancel\"], t = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nconst settings = {\n actions: new Set(a$1),\n aliases: /* @__PURE__ */ new Map([\n // vim support\n [\"k\", \"up\"],\n [\"j\", \"down\"],\n [\"h\", \"left\"],\n [\"l\", \"right\"],\n [\"\u0003\", \"cancel\"],\n // opinionated defaults!\n [\"escape\", \"cancel\"]\n ]),\n messages: {\n cancel: \"Canceled\",\n error: \"Something went wrong\"\n },\n withGuide: true,\n date: {\n monthNames: [...t],\n messages: {\n required: \"Please enter a valid date\",\n invalidMonth: \"There are only 12 months in a year\",\n invalidDay: (n, e) => `There are only ${n} days in ${e}`,\n afterMin: (n) => `Date must be on or after ${n.toISOString().slice(0, 10)}`,\n beforeMax: (n) => `Date must be on or before ${n.toISOString().slice(0, 10)}`\n }\n }\n};\nfunction updateSettings(n) {\n if (n.aliases !== void 0) {\n const e = n.aliases;\n for (const s in e) {\n if (!Object.hasOwn(e, s)) continue;\n const i = e[s];\n i === void 0 || !settings.actions.has(i) || settings.aliases.has(s) || settings.aliases.set(s, i);\n }\n }\n if (n.messages !== void 0) {\n const e = n.messages;\n e.cancel !== void 0 && (settings.messages.cancel = e.cancel), e.error !== void 0 && (settings.messages.error = e.error);\n }\n if (n.withGuide !== void 0 && (settings.withGuide = n.withGuide !== false), n.date !== void 0) {\n const e = n.date;\n e.monthNames !== void 0 && (settings.date.monthNames = [...e.monthNames]), e.messages !== void 0 && (e.messages.required !== void 0 && (settings.date.messages.required = e.messages.required), e.messages.invalidMonth !== void 0 && (settings.date.messages.invalidMonth = e.messages.invalidMonth), e.messages.invalidDay !== void 0 && (settings.date.messages.invalidDay = e.messages.invalidDay), e.messages.afterMin !== void 0 && (settings.date.messages.afterMin = e.messages.afterMin), e.messages.beforeMax !== void 0 && (settings.date.messages.beforeMax = e.messages.beforeMax));\n }\n}\nfunction isActionKey(n, e) {\n if (typeof n == \"string\")\n return settings.aliases.get(n) === e;\n for (const s of n)\n if (s !== void 0 && isActionKey(s, e))\n return true;\n return false;\n}\n\nfunction diffLines(i, s) {\n if (i === s) return;\n const e = i.split(`\n`), t = s.split(`\n`), r = Math.max(e.length, t.length), f = [];\n for (let n = 0; n < r; n++)\n e[n] !== t[n] && f.push(n);\n return {\n lines: f,\n numLinesBefore: e.length,\n numLinesAfter: t.length,\n numLines: r\n };\n}\n\nconst R = globalThis.process.platform.startsWith(\"win\");\nconst CANCEL_SYMBOL = Symbol(\"clack:cancel\");\nfunction isCancel(e) {\n return e === CANCEL_SYMBOL;\n}\nfunction setRawMode(e, r) {\n const o = e;\n o.isTTY && o.setRawMode(r);\n}\nfunction block({\n input: e = stdin,\n output: r = stdout,\n overwrite: o = true,\n hideCursor: t = true\n} = {}) {\n const s = l.createInterface({\n input: e,\n output: r,\n prompt: \"\",\n tabSize: 1\n });\n l.emitKeypressEvents(e, s), e instanceof ReadStream && e.isTTY && e.setRawMode(true);\n const n = (f, { name: a, sequence: p }) => {\n const c = String(f);\n if (isActionKey([c, a, p], \"cancel\")) {\n t && r.write(cursor.show), process.exit(0);\n return;\n }\n if (!o) return;\n const i = a === \"return\" ? 0 : -1, m = a === \"return\" ? -1 : 0;\n l.moveCursor(r, i, m, () => {\n l.clearLine(r, 1, () => {\n e.once(\"keypress\", n);\n });\n });\n };\n return t && r.write(cursor.hide), e.once(\"keypress\", n), () => {\n e.off(\"keypress\", n), t && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !R && e.setRawMode(false), s.terminal = false, s.close();\n };\n}\nconst getColumns = (e) => \"columns\" in e && typeof e.columns == \"number\" ? e.columns : 80, getRows = (e) => \"rows\" in e && typeof e.rows == \"number\" ? e.rows : 20;\nfunction wrapTextWithPrefix(e, r, o, t = o, s = o, n) {\n const f = getColumns(e ?? stdout);\n return wrapAnsi(r, f - o.length, {\n hard: true,\n trim: false\n }).split(`\n`).map((c, i, m) => {\n const d = n ? n(c, i) : c;\n return i === 0 ? `${t}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;\n }).join(`\n`);\n}\n\nfunction runValidation(e, n) {\n if (\"~standard\" in e) {\n const a = e[\"~standard\"].validate(n);\n if (a instanceof Promise)\n throw new TypeError(\n \"Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.\"\n );\n return a.issues?.at(0)?.message;\n }\n return e(n);\n}\n\nclass V {\n input;\n output;\n _abortSignal;\n rl;\n opts;\n _render;\n _track = false;\n _prevFrame = \"\";\n _subscribers = /* @__PURE__ */ new Map();\n _cursor = 0;\n state = \"initial\";\n error = \"\";\n value;\n userInput = \"\";\n constructor(t, e = true) {\n const { input: i = stdin, output: n = stdout, render: s, signal: r, ...o } = t;\n this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = s.bind(this), this._track = e, this._abortSignal = r, this.input = i, this.output = n;\n }\n /**\n * Unsubscribe all listeners\n */\n unsubscribe() {\n this._subscribers.clear();\n }\n /**\n * Set a subscriber with opts\n * @param event - The event name\n */\n setSubscriber(t, e) {\n const i = this._subscribers.get(t) ?? [];\n i.push(e), this._subscribers.set(t, i);\n }\n /**\n * Subscribe to an event\n * @param event - The event name\n * @param cb - The callback\n */\n on(t, e) {\n this.setSubscriber(t, { cb: e });\n }\n /**\n * Subscribe to an event once\n * @param event - The event name\n * @param cb - The callback\n */\n once(t, e) {\n this.setSubscriber(t, { cb: e, once: true });\n }\n /**\n * Emit an event with data\n * @param event - The event name\n * @param data - The data to pass to the callback\n */\n emit(t, ...e) {\n const i = this._subscribers.get(t) ?? [], n = [];\n for (const s of i)\n s.cb(...e), s.once && n.push(() => i.splice(i.indexOf(s), 1));\n for (const s of n)\n s();\n }\n prompt() {\n return new Promise((t) => {\n if (this._abortSignal) {\n if (this._abortSignal.aborted)\n return this.state = \"cancel\", this.close(), t(CANCEL_SYMBOL);\n this._abortSignal.addEventListener(\n \"abort\",\n () => {\n this.state = \"cancel\", this.close();\n },\n { once: true }\n );\n }\n this.rl = l__default.createInterface({\n input: this.input,\n tabSize: 2,\n prompt: \"\",\n escapeCodeTimeout: 50,\n terminal: true\n }), this.rl.prompt(), this.opts.initialUserInput !== void 0 && this._setUserInput(this.opts.initialUserInput, true), this.input.on(\"keypress\", this.onKeypress), setRawMode(this.input, true), this.output.on(\"resize\", this.render), this.render(), this.once(\"submit\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(this.value);\n }), this.once(\"cancel\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(CANCEL_SYMBOL);\n });\n });\n }\n _isActionKey(t, e) {\n return t === \"\t\";\n }\n _shouldSubmit(t, e) {\n return true;\n }\n _setValue(t) {\n this.value = t, this.emit(\"value\", this.value);\n }\n _setUserInput(t, e) {\n this.userInput = t ?? \"\", this.emit(\"userInput\", this.userInput), e && this._track && this.rl && (this.rl.write(this.userInput), this._cursor = this.rl.cursor);\n }\n _clearUserInput() {\n this.rl?.write(null, { ctrl: true, name: \"u\" }), this._setUserInput(\"\");\n }\n onKeypress(t, e) {\n if (this._track && e.name !== \"return\" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: \"h\" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === \"error\" && (this.state = \"active\"), e?.name && (!this._track && settings.aliases.has(e.name) && this.emit(\"cursor\", settings.aliases.get(e.name)), settings.actions.has(e.name) && this.emit(\"cursor\", e.name)), t && (t.toLowerCase() === \"y\" || t.toLowerCase() === \"n\") && this.emit(\"confirm\", t.toLowerCase() === \"y\"), this.emit(\"key\", t, e), e?.name === \"return\" && this._shouldSubmit(t, e)) {\n if (this.opts.validate) {\n const i = runValidation(this.opts.validate, this.value);\n i && (this.error = i instanceof Error ? i.message : i, this.state = \"error\", this.rl?.write(this.userInput));\n }\n this.state !== \"error\" && (this.state = \"submit\");\n }\n isActionKey([t, e?.name, e?.sequence], \"cancel\") && (this.state = \"cancel\"), (this.state === \"submit\" || this.state === \"cancel\") && this.emit(\"finalize\"), this.render(), (this.state === \"submit\" || this.state === \"cancel\") && this.close();\n }\n close() {\n this.input.unpipe(), this.input.removeListener(\"keypress\", this.onKeypress), this.output.write(`\n`), setRawMode(this.input, false), this.rl?.close(), this.rl = void 0, this.emit(`${this.state}`, this.value), this.unsubscribe();\n }\n restoreCursor() {\n const t = wrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split(`\n`).length - 1;\n this.output.write(cursor.move(-999, t * -1));\n }\n render() {\n const t = wrapAnsi(this._render(this) ?? \"\", process.stdout.columns, {\n hard: true,\n trim: false\n });\n if (t !== this._prevFrame) {\n if (this.state === \"initial\")\n this.output.write(cursor.hide);\n else {\n const e = diffLines(this._prevFrame, t), i = getRows(this.output);\n if (this.restoreCursor(), e) {\n const n = Math.max(0, e.numLinesAfter - i), s = Math.max(0, e.numLinesBefore - i);\n let r = e.lines.find((o) => o >= n);\n if (r === void 0) {\n this._prevFrame = t;\n return;\n }\n if (e.lines.length === 1) {\n this.output.write(cursor.move(0, r - s)), this.output.write(erase.lines(1));\n const o = t.split(`\n`);\n this.output.write(o[r]), this._prevFrame = t, this.output.write(cursor.move(0, o.length - r - 1));\n return;\n } else if (e.lines.length > 1) {\n if (n < s)\n r = n;\n else {\n const h = r - s;\n h > 0 && this.output.write(cursor.move(0, h));\n }\n this.output.write(erase.down());\n const f = t.split(`\n`).slice(r);\n this.output.write(f.join(`\n`)), this._prevFrame = t;\n return;\n }\n }\n this.output.write(erase.down());\n }\n this.output.write(t), this.state === \"initial\" && (this.state = \"active\"), this._prevFrame = t;\n }\n }\n}\n\nfunction p$1(l, e) {\n if (l === void 0 || e.length === 0)\n return 0;\n const i = e.findIndex((s) => s.value === l);\n return i !== -1 ? i : 0;\n}\nfunction g(l, e) {\n return (e.label ?? String(e.value)).toLowerCase().includes(l.toLowerCase());\n}\nfunction m(l, e) {\n if (e)\n return l ? e : e[0];\n}\nlet T$1 = class T extends V {\n filteredOptions;\n multiple;\n isNavigating = false;\n selectedValues = [];\n focusedValue;\n #e = 0;\n #s = \"\";\n #t;\n #i;\n #n;\n get cursor() {\n return this.#e;\n }\n get userInputWithCursor() {\n if (!this.userInput)\n return styleText([\"inverse\", \"hidden\"], \"_\");\n if (this._cursor >= this.userInput.length)\n return `${this.userInput}\\u2588`;\n const e = this.userInput.slice(0, this.cursor), t = this.userInput.slice(this.cursor, this.cursor + 1), i = this.userInput.slice(this.cursor + 1);\n return `${e}${styleText(\"inverse\", t)}${i}`;\n }\n get options() {\n return typeof this.#i == \"function\" ? this.#i() : this.#i;\n }\n constructor(e) {\n super(e), this.#i = e.options, this.#n = e.placeholder;\n const t = this.options;\n this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == \"function\" ? e.filter : e.filter ?? g;\n let i;\n if (e.initialValue && Array.isArray(e.initialValue) ? this.multiple ? i = e.initialValue : i = e.initialValue.slice(0, 1) : !this.multiple && this.options.length > 0 && (i = [this.options[0]?.value]), i)\n for (const s of i) {\n const n = t.findIndex((o) => o.value === s);\n n !== -1 && (this.toggleSelected(s), this.#e = n);\n }\n this.focusedValue = this.options[this.#e]?.value, this.on(\"key\", (s, n) => this.#l(s, n)), this.on(\"userInput\", (s) => this.#u(s));\n }\n _isActionKey(e, t) {\n return e === \"\t\" || this.multiple && this.isNavigating && t.name === \"space\" && e !== void 0 && e !== \"\";\n }\n #l(e, t) {\n const i = t.name === \"up\", s = t.name === \"down\", n = t.name === \"return\", o = this.userInput === \"\" || this.userInput === \"\t\", u = this.#n, a = this.options, f = u !== void 0 && u !== \"\" && a.some(\n (r) => !r.disabled && (this.#t ? this.#t(u, r) : true)\n );\n if (t.name === \"tab\" && o && f) {\n this.userInput === \"\t\" && this._clearUserInput(), this._setUserInput(u, true), this.isNavigating = false;\n return;\n }\n i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = m(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === \"tab\" || this.isNavigating && t.name === \"space\") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);\n }\n deselectAll() {\n this.selectedValues = [];\n }\n toggleSelected(e) {\n this.filteredOptions.length !== 0 && (this.multiple ? this.selectedValues.includes(e) ? this.selectedValues = this.selectedValues.filter((t) => t !== e) : this.selectedValues = [...this.selectedValues, e] : this.selectedValues = [e]);\n }\n #u(e) {\n if (e !== this.#s) {\n this.#s = e;\n const t = this.options;\n e && this.#t ? this.filteredOptions = t.filter((n) => this.#t?.(e, n)) : this.filteredOptions = [...t];\n const i = p$1(this.focusedValue, this.filteredOptions);\n this.#e = findCursor(i, 0, this.filteredOptions);\n const s = this.filteredOptions[this.#e];\n s && !s.disabled ? this.focusedValue = s.value : this.focusedValue = void 0, this.multiple || (this.focusedValue !== void 0 ? this.toggleSelected(this.focusedValue) : this.deselectAll());\n }\n }\n};\n\nclass r extends V {\n get cursor() {\n return this.value ? 0 : 1;\n }\n get _value() {\n return this.cursor === 0;\n }\n constructor(t) {\n super(t, false), this.value = !!t.initialValue, this.on(\"userInput\", () => {\n this.value = this._value;\n }), this.on(\"confirm\", (i) => {\n this.output.write(cursor.move(0, -1)), this.value = i, this.state = \"submit\", this.close();\n }), this.on(\"cursor\", () => {\n this.value = !this.value;\n });\n }\n}\n\nconst _ = {\n Y: { type: \"year\", len: 4 },\n M: { type: \"month\", len: 2 },\n D: { type: \"day\", len: 2 }\n};\nfunction M(r) {\n return [...r].map((t) => _[t]);\n}\nfunction P(r) {\n const i = new Intl.DateTimeFormat(r, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n }).formatToParts(new Date(2e3, 0, 15)), s = [];\n let n = \"/\";\n for (const e of i)\n e.type === \"literal\" ? n = e.value.trim() || e.value : (e.type === \"year\" || e.type === \"month\" || e.type === \"day\") && s.push({ type: e.type, len: e.type === \"year\" ? 4 : 2 });\n return { segments: s, separator: n };\n}\nfunction p(r) {\n return Number.parseInt((r || \"0\").replace(/_/g, \"0\"), 10) || 0;\n}\nfunction f(r) {\n return {\n year: p(r.year),\n month: p(r.month),\n day: p(r.day)\n };\n}\nfunction c(r, t) {\n return new Date(r || 2001, t || 1, 0).getDate();\n}\nfunction b(r) {\n const { year: t, month: i, day: s } = f(r);\n if (!t || t < 0 || t > 9999 || !i || i < 1 || i > 12 || !s || s < 1) return;\n const n = new Date(Date.UTC(t, i - 1, s));\n if (!(n.getUTCFullYear() !== t || n.getUTCMonth() !== i - 1 || n.getUTCDate() !== s))\n return { year: t, month: i, day: s };\n}\nfunction C(r) {\n const t = b(r);\n return t ? new Date(Date.UTC(t.year, t.month - 1, t.day)) : void 0;\n}\nfunction T(r, t, i, s) {\n const n = i ? {\n year: i.getUTCFullYear(),\n month: i.getUTCMonth() + 1,\n day: i.getUTCDate()\n } : null, e = s ? {\n year: s.getUTCFullYear(),\n month: s.getUTCMonth() + 1,\n day: s.getUTCDate()\n } : null;\n return r === \"year\" ? { min: n?.year ?? 1, max: e?.year ?? 9999 } : r === \"month\" ? {\n min: n && t.year === n.year ? n.month : 1,\n max: e && t.year === e.year ? e.month : 12\n } : {\n min: n && t.year === n.year && t.month === n.month ? n.day : 1,\n max: e && t.year === e.year && t.month === e.month ? e.day : c(t.year, t.month)\n };\n}\nclass U extends V {\n #i;\n #o;\n #t;\n #h;\n #u;\n #e = { segmentIndex: 0, positionInSegment: 0 };\n #n = true;\n #s = null;\n inlineError = \"\";\n get segmentCursor() {\n return { ...this.#e };\n }\n get segmentValues() {\n return { ...this.#t };\n }\n get segments() {\n return this.#i;\n }\n get separator() {\n return this.#o;\n }\n get formattedValue() {\n return this.#l(this.#t);\n }\n #l(t) {\n return this.#i.map((i) => t[i.type]).join(this.#o);\n }\n #r() {\n this._setUserInput(this.#l(this.#t)), this._setValue(C(this.#t) ?? void 0);\n }\n constructor(t) {\n const i = t.format ? { segments: M(t.format), separator: t.separator ?? \"/\" } : P(t.locale), s = t.separator ?? i.separator, n = t.format ? M(t.format) : i.segments, e = t.initialValue ?? t.defaultValue, m = e ? {\n year: String(e.getUTCFullYear()).padStart(4, \"0\"),\n month: String(e.getUTCMonth() + 1).padStart(2, \"0\"),\n day: String(e.getUTCDate()).padStart(2, \"0\")\n } : { year: \"____\", month: \"__\", day: \"__\" }, o = n.map((a) => m[a.type]).join(s);\n super({ ...t, initialUserInput: o }, false), this.#i = n, this.#o = s, this.#t = m, this.#h = t.minDate, this.#u = t.maxDate, this.#r(), this.on(\"cursor\", (a) => this.#f(a)), this.on(\"key\", (a, u) => this.#y(a, u)), this.on(\"finalize\", () => this.#p(t));\n }\n #a() {\n const t = Math.max(0, Math.min(this.#e.segmentIndex, this.#i.length - 1)), i = this.#i[t];\n if (i)\n return this.#e.positionInSegment = Math.max(\n 0,\n Math.min(this.#e.positionInSegment, i.len - 1)\n ), { segment: i, index: t };\n }\n #m(t) {\n this.inlineError = \"\", this.#s = null;\n const i = this.#a();\n i && (this.#e.segmentIndex = Math.max(\n 0,\n Math.min(this.#i.length - 1, i.index + t)\n ), this.#e.positionInSegment = 0, this.#n = true);\n }\n #d(t) {\n const i = this.#a();\n if (!i) return;\n const { segment: s } = i, n = this.#t[s.type], e = !n || n.replace(/_/g, \"\") === \"\", m = Number.parseInt((n || \"0\").replace(/_/g, \"0\"), 10) || 0, o = T(\n s.type,\n f(this.#t),\n this.#h,\n this.#u\n );\n let a;\n e ? a = t === 1 ? o.min : o.max : a = Math.max(Math.min(o.max, m + t), o.min), this.#t = {\n ...this.#t,\n [s.type]: a.toString().padStart(s.len, \"0\")\n }, this.#n = true, this.#s = null, this.#r();\n }\n #f(t) {\n if (t)\n switch (t) {\n case \"right\":\n return this.#m(1);\n case \"left\":\n return this.#m(-1);\n case \"up\":\n return this.#d(1);\n case \"down\":\n return this.#d(-1);\n }\n }\n #y(t, i) {\n if (i?.name === \"backspace\" || i?.sequence === \"\\x7F\" || i?.sequence === \"\\b\" || t === \"\\x7F\" || t === \"\\b\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n if (!this.#t[n.segment.type].replace(/_/g, \"\")) {\n this.#m(-1);\n return;\n }\n this.#t[n.segment.type] = \"_\".repeat(n.segment.len), this.#n = true, this.#e.positionInSegment = 0, this.#r();\n return;\n }\n if (i?.name === \"tab\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n const e = i.shift ? -1 : 1, m = n.index + e;\n m >= 0 && m < this.#i.length && (this.#e.segmentIndex = m, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n if (t && /^[0-9]$/.test(t)) {\n const n = this.#a();\n if (!n) return;\n const { segment: e } = n, m = !this.#t[e.type].replace(/_/g, \"\");\n if (this.#n && this.#s !== null && !m) {\n const h = this.#s + t, d = { ...this.#t, [e.type]: h }, g = this.#g(d, e);\n if (g) {\n this.inlineError = g, this.#s = null, this.#n = false;\n return;\n }\n this.inlineError = \"\", this.#t[e.type] = h, this.#s = null, this.#n = false, this.#r(), n.index < this.#i.length - 1 && (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n this.#n && !m && (this.#t[e.type] = \"_\".repeat(e.len), this.#e.positionInSegment = 0), this.#n = false, this.#s = null;\n const o = this.#t[e.type], a = o.indexOf(\"_\"), u = a >= 0 ? a : Math.min(this.#e.positionInSegment, e.len - 1);\n if (u < 0 || u >= e.len) return;\n let l = o.slice(0, u) + t + o.slice(u + 1), D = false;\n if (u === 0 && o === \"__\" && (e.type === \"month\" || e.type === \"day\")) {\n const h = Number.parseInt(t, 10);\n l = `0${t}`, D = h <= (e.type === \"month\" ? 1 : 2);\n }\n if (e.type === \"year\" && (l = (o.replace(/_/g, \"\") + t).padStart(e.len, \"_\")), !l.includes(\"_\")) {\n const h = { ...this.#t, [e.type]: l }, d = this.#g(h, e);\n if (d) {\n this.inlineError = d;\n return;\n }\n }\n this.inlineError = \"\", this.#t[e.type] = l;\n const y = l.includes(\"_\") ? void 0 : b(this.#t);\n if (y) {\n const { year: h, month: d } = y, g = c(h, d);\n this.#t = {\n year: String(Math.max(0, Math.min(9999, h))).padStart(4, \"0\"),\n month: String(Math.max(1, Math.min(12, d))).padStart(2, \"0\"),\n day: String(Math.max(1, Math.min(g, y.day))).padStart(2, \"0\")\n };\n }\n this.#r();\n const S = l.indexOf(\"_\");\n D ? (this.#n = true, this.#s = t) : S >= 0 ? this.#e.positionInSegment = S : a >= 0 && n.index < this.#i.length - 1 ? (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true) : this.#e.positionInSegment = Math.min(u + 1, e.len - 1);\n }\n }\n #g(t, i) {\n const { month: s, day: n } = f(t);\n if (i.type === \"month\" && (s < 0 || s > 12))\n return settings.date.messages.invalidMonth;\n if (i.type === \"day\" && (n < 0 || n > 31))\n return settings.date.messages.invalidDay(31, \"any month\");\n }\n #p(t) {\n const { year: i, month: s, day: n } = f(this.#t);\n if (i && s && n) {\n const e = c(i, s);\n this.#t = {\n ...this.#t,\n day: String(Math.min(n, e)).padStart(2, \"0\")\n };\n }\n this.value = C(this.#t) ?? t.defaultValue ?? void 0;\n }\n}\n\nlet u$2 = class u extends V {\n options;\n cursor = 0;\n #t;\n getGroupItems(t) {\n return this.options.filter((r) => r.group === t);\n }\n isGroupSelected(t) {\n const r = this.getGroupItems(t), e = this.value;\n return e === void 0 ? false : r.every((s) => e.includes(s.value));\n }\n toggleValue() {\n const t = this.options[this.cursor];\n if (t !== void 0)\n if (this.value === void 0 && (this.value = []), t.group === true) {\n const r = t.value, e = this.getGroupItems(r);\n this.isGroupSelected(r) ? this.value = this.value.filter(\n (s) => e.findIndex((i) => i.value === s) === -1\n ) : this.value = [...this.value, ...e.map((s) => s.value)], this.value = Array.from(new Set(this.value));\n } else {\n const r = this.value.includes(t.value);\n this.value = r ? this.value.filter((e) => e !== t.value) : [...this.value, t.value];\n }\n }\n constructor(t) {\n super(t, false);\n const { options: r } = t;\n this.#t = t.selectableGroups !== false, this.options = Object.entries(r).flatMap(([e, s]) => [\n { value: e, group: true, label: e },\n ...s.map((i) => ({ ...i, group: e }))\n ]), this.value = [...t.initialValues ?? []], this.cursor = Math.max(\n this.options.findIndex(({ value: e }) => e === t.cursorAt),\n this.#t ? 0 : 1\n ), this.on(\"cursor\", (e) => {\n switch (e) {\n case \"left\":\n case \"up\": {\n this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1);\n break;\n }\n case \"down\":\n case \"right\": {\n this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1);\n break;\n }\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n};\n\nconst o = /* @__PURE__ */ new Set([\"up\", \"down\", \"left\", \"right\"]);\nclass h extends V {\n #t = false;\n #s;\n focused = \"editor\";\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${t}\\u2588`;\n const s = t.slice(0, this.cursor), r = t.slice(this.cursor, this.cursor + 1), i = t.slice(this.cursor + 1);\n return r === `\n` ? `${s}\\u2588\n${i}` : `${s}${styleText(\"inverse\", r)}${i}`;\n }\n get cursor() {\n return this._cursor;\n }\n #r(t) {\n if (this.userInput.length === 0) {\n this._setUserInput(t);\n return;\n }\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + t + this.userInput.slice(this.cursor)\n );\n }\n #i(t) {\n const s = this.value ?? \"\";\n switch (t) {\n case \"up\":\n this._cursor = findTextCursor(this._cursor, 0, -1, s);\n return;\n case \"down\":\n this._cursor = findTextCursor(this._cursor, 0, 1, s);\n return;\n case \"left\":\n this._cursor = findTextCursor(this._cursor, -1, 0, s);\n return;\n case \"right\":\n this._cursor = findTextCursor(this._cursor, 1, 0, s);\n return;\n }\n }\n _shouldSubmit(t, s) {\n if (this.#s)\n return this.focused === \"submit\" ? true : (this.#r(`\n`), this._cursor++, false);\n const r = this.#t;\n return this.#t = true, r && this.cursor === this.userInput.length ? (this.userInput[this.cursor - 1] === `\n` && (this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--), true) : (this.#r(`\n`), this._cursor++, false);\n }\n constructor(t) {\n const s = t.initialUserInput ?? t.initialValue;\n super(\n {\n ...t,\n initialUserInput: s\n },\n false\n ), s !== void 0 && (this._cursor = s.length), this.#s = t.showSubmit ?? false, this.on(\"key\", (r, i) => {\n if (i?.name && o.has(i.name)) {\n this.#t = false, this.#i(i.name);\n return;\n }\n if (r === \"\t\" && this.#s) {\n this.focused = this.focused === \"editor\" ? \"submit\" : \"editor\";\n return;\n }\n if (i?.name !== \"return\") {\n if (this.#t = false, i?.name === \"backspace\" && this.cursor > 0) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--;\n return;\n }\n if (i?.name === \"delete\" && this.cursor < this.userInput.length) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1)\n );\n return;\n }\n r && (this.#s && this.focused === \"submit\" && (this.focused = \"editor\"), this.#r(r ?? \"\"), this._cursor++);\n }\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nclass a extends V {\n options;\n cursor = 0;\n get _value() {\n return this.options[this.cursor]?.value;\n }\n get _enabledOptions() {\n return this.options.filter((e) => e.disabled !== true);\n }\n toggleAll() {\n const e = this._enabledOptions, i = this.value !== void 0 && this.value.length === e.length;\n this.value = i ? [] : e.map((t) => t.value);\n }\n toggleInvert() {\n const e = this.value;\n if (!e)\n return;\n const i = this._enabledOptions.filter((t) => !e.includes(t.value));\n this.value = i.map((t) => t.value);\n }\n toggleValue() {\n this.value === void 0 && (this.value = []);\n const e = this.value.includes(this._value);\n this.value = e ? this.value.filter((i) => i !== this._value) : [...this.value, this._value];\n }\n constructor(e) {\n super(e, false), this.options = e.options, this.value = [...e.initialValues ?? []];\n const i = Math.max(\n this.options.findIndex(({ value: t }) => t === e.cursorAt),\n 0\n );\n this.cursor = this.options[i]?.disabled ? findCursor(i, 1, this.options) : i, this.on(\"key\", (t, l) => {\n l.name === \"a\" && this.toggleAll(), l.name === \"i\" && this.toggleInvert();\n }), this.on(\"cursor\", (t) => {\n switch (t) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n}\n\nlet u$1 = class u extends V {\n _mask = \"\\u2022\";\n get cursor() {\n return this._cursor;\n }\n get masked() {\n return this.userInput.replaceAll(/./g, this._mask);\n }\n get userInputWithCursor() {\n if (this.state === \"submit\" || this.state === \"cancel\")\n return this.masked;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.masked}${styleText([\"inverse\", \"hidden\"], \"_\")}`;\n const s = this.masked, r = s.slice(0, this.cursor), i = s.slice(this.cursor, this.cursor + 1), o = s.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", i)}${o}`;\n }\n clear() {\n this._clearUserInput();\n }\n constructor({ mask: t, ...s }) {\n super(s), this._mask = t ?? \"\\u2022\", this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value === void 0 && (this.value = \"\");\n });\n }\n};\n\nlet n$1 = class n extends V {\n options;\n cursor = 0;\n get _selectedValue() {\n return this.options[this.cursor];\n }\n changeValue() {\n const e = this._selectedValue;\n this.value = e === void 0 ? void 0 : e.value;\n }\n constructor(e) {\n super(e, false), this.options = e.options;\n const o = this.options.findIndex(({ value: s }) => s === e.initialValue), t = o === -1 ? 0 : o;\n this.cursor = this.options[t]?.disabled ? findCursor(t, 1, this.options) : t, this.changeValue(), this.on(\"cursor\", (s) => {\n switch (s) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n }\n this.changeValue();\n });\n }\n};\n\nclass u extends V {\n options;\n cursor = 0;\n constructor(t) {\n super(t, false), this.options = t.options;\n const s = t.caseSensitive === true, i = this.options.map(({ value: [e] }) => s ? e : e?.toLowerCase());\n this.cursor = Math.max(i.indexOf(t.initialValue), 0), this.on(\"key\", (e) => {\n if (!e)\n return;\n const o = s ? e : e.toLowerCase();\n if (!i.includes(o))\n return;\n const n = this.options.find(({ value: [r] }) => s ? r === o : r?.toLowerCase() === o);\n n && (this.value = n.value, this.state = \"submit\", this.emit(\"submit\"));\n });\n }\n}\n\nclass n extends V {\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.userInput}\\u2588`;\n const r = t.slice(0, this.cursor), s = t.slice(this.cursor, this.cursor + 1), e = t.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", s)}${e}`;\n }\n get cursor() {\n return this._cursor;\n }\n constructor(t) {\n super({\n ...t,\n initialUserInput: t.initialUserInput ?? t.initialValue\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nexport { T$1 as AutocompletePrompt, r as ConfirmPrompt, U as DatePrompt, u$2 as GroupMultiSelectPrompt, h as MultiLinePrompt, a as MultiSelectPrompt, u$1 as PasswordPrompt, V as Prompt, u as SelectKeyPrompt, n$1 as SelectPrompt, n as TextPrompt, block, getColumns, getRows, isCancel, runValidation, settings, updateSettings, wrapTextWithPrefix };\n","import { getColumns, getRows, AutocompletePrompt, settings, ConfirmPrompt, wrapTextWithPrefix, DatePrompt, runValidation, isCancel, MultiSelectPrompt, GroupMultiSelectPrompt, MultiLinePrompt, PasswordPrompt, block, SelectPrompt, SelectKeyPrompt, TextPrompt } from '@clack/core';\nexport { isCancel, settings, updateSettings } from '@clack/core';\nimport { styleText, stripVTControlCharacters } from 'node:util';\nimport process$1 from 'node:process';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport l from 'fast-string-width';\nimport { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cursor, erase } from 'sisteransi';\n\nfunction isUnicodeSupported() {\n\tif (process$1.platform !== 'win32') {\n\t\treturn process$1.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process$1.env.CI)\n\t\t|| Boolean(process$1.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process$1.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process$1.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process$1.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process$1.env.TERM_PROGRAM === 'vscode'\n\t\t|| process$1.env.TERM === 'xterm-256color'\n\t\t|| process$1.env.TERM === 'alacritty'\n\t\t|| process$1.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst unicode = isUnicodeSupported(), isCI = () => process.env.CI === \"true\", isTTY = (o) => o.isTTY === true, unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr(\"\\u25C6\", \"*\"), S_STEP_CANCEL = unicodeOr(\"\\u25A0\", \"x\"), S_STEP_ERROR = unicodeOr(\"\\u25B2\", \"x\"), S_STEP_SUBMIT = unicodeOr(\"\\u25C7\", \"o\"), S_BAR_START = unicodeOr(\"\\u250C\", \"T\"), S_BAR = unicodeOr(\"\\u2502\", \"|\"), S_BAR_END = unicodeOr(\"\\u2514\", \"\\u2014\"), S_BAR_START_RIGHT = unicodeOr(\"\\u2510\", \"T\"), S_BAR_END_RIGHT = unicodeOr(\"\\u2518\", \"\\u2014\"), S_RADIO_ACTIVE = unicodeOr(\"\\u25CF\", \">\"), S_RADIO_INACTIVE = unicodeOr(\"\\u25CB\", \" \"), S_CHECKBOX_ACTIVE = unicodeOr(\"\\u25FB\", \"[\\u2022]\"), S_CHECKBOX_SELECTED = unicodeOr(\"\\u25FC\", \"[+]\"), S_CHECKBOX_INACTIVE = unicodeOr(\"\\u25FB\", \"[ ]\"), S_PASSWORD_MASK = unicodeOr(\"\\u25AA\", \"\\u2022\"), S_BAR_H = unicodeOr(\"\\u2500\", \"-\"), S_CORNER_TOP_RIGHT = unicodeOr(\"\\u256E\", \"+\"), S_CONNECT_LEFT = unicodeOr(\"\\u251C\", \"+\"), S_CORNER_BOTTOM_RIGHT = unicodeOr(\"\\u256F\", \"+\"), S_CORNER_BOTTOM_LEFT = unicodeOr(\"\\u2570\", \"+\"), S_CORNER_TOP_LEFT = unicodeOr(\"\\u256D\", \"+\"), S_INFO = unicodeOr(\"\\u25CF\", \"\\u2022\"), S_SUCCESS = unicodeOr(\"\\u25C6\", \"*\"), S_WARN = unicodeOr(\"\\u25B2\", \"!\"), S_ERROR = unicodeOr(\"\\u25A0\", \"x\"), symbol = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_STEP_ACTIVE);\n case \"cancel\":\n return styleText(\"red\", S_STEP_CANCEL);\n case \"error\":\n return styleText(\"yellow\", S_STEP_ERROR);\n case \"submit\":\n return styleText(\"green\", S_STEP_SUBMIT);\n }\n}, symbolBar = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_BAR);\n case \"cancel\":\n return styleText(\"red\", S_BAR);\n case \"error\":\n return styleText(\"yellow\", S_BAR);\n case \"submit\":\n return styleText(\"green\", S_BAR);\n }\n};\nfunction formatInstructionFooter(o, e) {\n const r = [`${e ? `${styleText(\"cyan\", S_BAR)} ` : \"\"}${o.join(\" \\u2022 \")}`];\n return e && r.push(styleText(\"cyan\", S_BAR_END)), r;\n}\n\nconst I = (l, e, w, p, b, C = false) => {\n let r = e, O = 0;\n if (C)\n for (let i = p - 1; i >= w; i--) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n else\n for (let i = w; i < p; i++) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n return { lineCount: r, removals: O };\n};\nconst limitOptions = ({\n cursor: l,\n options: e,\n style: w,\n output: p = process.stdout,\n maxItems: b = Number.POSITIVE_INFINITY,\n columnPadding: C = 0,\n rowPadding: r = 4\n}) => {\n const i = getColumns(p) - C, m = getRows(p), M = styleText(\"dim\", \"...\"), v = Math.max(m - r, 0), a = Math.max(Math.min(b, v), 5);\n let f = 0;\n l >= a - 3 && (f = Math.max(\n Math.min(l - a + 3, e.length - a),\n 0\n ));\n let d = a < e.length && f > 0, c = a < e.length && f + a < e.length;\n const W = Math.min(\n f + a,\n e.length\n ), s = [];\n let g = 0;\n d && g++, c && g++;\n const T = f + (d ? 1 : 0), y = W - (c ? 1 : 0);\n for (let t = T; t < y; t++) {\n const n = e[t], o = n ? w(n, t === l) : \"\", h = wrapAnsi(o, i, {\n hard: true,\n trim: false\n }).split(`\n`);\n s.push(h), g += h.length;\n }\n if (g > v) {\n let t = 0, n = 0, o = g;\n const h = l - T;\n let u = v;\n const L = () => I(s, o, 0, h, u), E = () => I(\n s,\n o,\n h + 1,\n s.length,\n u,\n true\n );\n d ? ({ lineCount: o, removals: t } = L(), o > u && (c || (u -= 1), { lineCount: o, removals: n } = E())) : (c || (u -= 1), { lineCount: o, removals: n } = E(), o > u && (u -= 1, { lineCount: o, removals: t } = L())), t > 0 && (d = true, s.splice(0, t)), n > 0 && (c = true, s.splice(s.length - n, n));\n }\n const x = [];\n d && x.push(M);\n for (const t of s)\n for (const n of t)\n x.push(n);\n return c && x.push(M), x;\n};\n\nfunction P(t) {\n return t.label ?? String(t.value ?? \"\");\n}\nfunction E(t, c) {\n if (!t)\n return true;\n const n = (c.label ?? String(c.value ?? \"\")).toLowerCase(), i = (c.hint ?? \"\").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();\n return n.includes(o) || i.includes(o) || l.includes(o);\n}\nfunction N(t, c) {\n const n = [];\n for (const i of c)\n t.includes(i.value) && n.push(i);\n return n;\n}\nconst autocomplete = (t) => new AutocompletePrompt({\n options: t.options,\n initialValue: t.initialValue ? [t.initialValue] : void 0,\n initialUserInput: t.initialUserInput,\n placeholder: t.placeholder,\n filter: t.filter ?? ((n, i) => E(n, i)),\n signal: t.signal,\n input: t.input,\n output: t.output,\n validate: t.validate,\n render() {\n const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText(\"gray\", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === \"\" && m !== void 0, $ = (r, s) => {\n const a = P(r), u = r.hint && r.value === this.focusedValue ? styleText(\"dim\", ` (${r.hint})`) : \"\";\n switch (s) {\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}${u}`;\n case \"inactive\":\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`;\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], a)}`;\n }\n };\n switch (this.state) {\n case \"submit\": {\n const r = N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText(\"dim\", r.map(P).join(\", \"))}` : \"\", a = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${a}${s}`;\n }\n case \"cancel\": {\n const r = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", s = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${s}${r}`;\n }\n default: {\n const r = this.state === \"error\" ? \"yellow\" : \"cyan\", s = n ? `${styleText(r, S_BAR)} ` : \"\", a = n ? styleText(r, S_BAR_END) : \"\";\n let u = \"\";\n if (this.isNavigating || p) {\n const d = p ? m : l;\n u = d !== \"\" ? ` ${styleText(\"dim\", d)}` : \"\";\n } else\n u = ` ${this.userInputWithCursor}`;\n const V = this.filteredOptions.length !== o.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText(\"yellow\", \"No matches found\")}`] : [], b = this.state === \"error\" ? [`${s}${styleText(\"yellow\", this.error)}`] : [];\n n && i.push(`${s.trimEnd()}`), i.push(\n `${s}${styleText(\"dim\", \"Search:\")}${u}${V}`,\n ...y,\n ...b\n );\n const v = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], g = [`${s}${v.join(\" \\u2022 \")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n columnPadding: n ? 3 : 0,\n // for `| ` when guide is shown\n rowPadding: i.length + g.length,\n style: (d, f) => $(\n d,\n d.disabled ? \"disabled\" : f ? \"active\" : \"inactive\"\n ),\n maxItems: t.maxItems,\n output: t.output\n });\n return [\n ...i,\n ...O.map((d) => `${s}${d}`),\n ...g\n ].join(`\n`);\n }\n }\n }\n}).prompt(), autocompleteMultiselect = (t) => {\n const c = (i, l, o, m) => {\n const p = o.includes(i.value), $ = i.label ?? String(i.value ?? \"\"), r = i.hint && m !== void 0 && i.value === m ? styleText(\"dim\", ` (${i.hint})`) : \"\", s = p ? styleText(\"green\", S_CHECKBOX_SELECTED) : styleText(\"dim\", S_CHECKBOX_INACTIVE);\n return i.disabled ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText(\"dim\", $)}`;\n }, n = new AutocompletePrompt({\n options: t.options,\n multiple: true,\n placeholder: t.placeholder,\n filter: t.filter ?? ((i, l) => E(i, l)),\n validate: () => {\n if (t.required && n.selectedValues.length === 0)\n return \"Please select at least one item\";\n },\n initialValue: t.initialValues,\n signal: t.signal,\n input: t.input,\n output: t.output,\n render() {\n const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`, o = this.userInput, m = t.placeholder, p = o === \"\" && m !== void 0, $ = this.isNavigating || p ? styleText(\"dim\", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\";\n switch (this.state) {\n case \"submit\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n \"dim\",\n `${this.selectedValues.length} items selected`\n )}`;\n case \"cancel\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n [\"strikethrough\", \"dim\"],\n o\n )}`;\n default: {\n const a = this.state === \"error\" ? \"yellow\" : \"cyan\", u = i ? `${styleText(a, S_BAR)} ` : \"\", V = i ? styleText(a, S_BAR_END) : \"\", y = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", this.isNavigating ? \"Space/Tab:\" : \"Tab:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText(\"yellow\", \"No matches found\")}`] : [], v = this.state === \"error\" ? [`${u}${styleText(\"yellow\", this.error)}`] : [], g = [\n ...`${l}${i ? styleText(a, S_BAR) : \"\"}`.split(`\n`),\n `${u}${styleText(\"dim\", \"Search:\")} ${$}${s}`,\n ...b,\n ...v\n ], O = [`${u}${y.join(\" \\u2022 \")}`, V], d = limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),\n maxItems: t.maxItems,\n output: t.output,\n rowPadding: g.length + O.length\n });\n return [\n ...g,\n ...d.map((f) => `${u}${f}`),\n ...O\n ].join(`\n`);\n }\n }\n }\n });\n return n.prompt();\n};\n\nconst J = [\n S_CORNER_TOP_LEFT,\n S_CORNER_TOP_RIGHT,\n S_CORNER_BOTTOM_LEFT,\n S_CORNER_BOTTOM_RIGHT\n], K = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\nfunction A$1(n, e, t, o) {\n let i = t, f = t;\n return o === \"center\" ? i = Math.floor((e - n) / 2) : o === \"right\" && (i = e - n - t), f = e - i - n, [i, f];\n}\nconst Q = (n) => n;\nconst box = (n = \"\", e = \"\", t) => {\n const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === \"auto\" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : \"\", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;\n let r = Math.floor(i * w) - p;\n if (t?.width === \"auto\") {\n const c = n.split(`\n`);\n let s = x + u * 2;\n for (const G of c) {\n const P = l(G) + h * 2;\n P > s && (s = P);\n }\n const g = s + R;\n g < r && (r = g);\n }\n r % 2 !== 0 && (r < O ? r++ : r--);\n const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(\n l(T),\n d,\n u,\n t?.titleAlign\n ), L = wrapAnsi(n, d - h * 2, {\n hard: true,\n trim: false\n });\n o.write(\n `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}\n`\n );\n const E = L.split(`\n`);\n for (const c of E) {\n const [s, g] = A$1(\n l(c),\n d,\n h,\n t?.contentAlign\n );\n o.write(\n `${m}${B}${\" \".repeat(s)}${c}${\" \".repeat(g)}${B}\n`\n );\n }\n o.write(`${m}${a[2]}${_.repeat(d)}${a[3]}\n`);\n};\n\nconst confirm = (i) => {\n const a = i.active ?? \"Yes\", s = i.inactive ?? \"No\";\n return new ConfirmPrompt({\n active: a,\n inactive: s,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValue: i.initialValue ?? true,\n render() {\n const e = i.withGuide ?? settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", f = wrapTextWithPrefix(\n i.output,\n i.message,\n l,\n u\n ), o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${f}\n`, c = this.value ? a : s;\n switch (this.state) {\n case \"submit\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText(\"dim\", c)}`;\n }\n case \"cancel\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText([\"strikethrough\", \"dim\"], c)}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${r}${this.value ? `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}` : `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`}${i.vertical ? e ? `\n${styleText(\"cyan\", S_BAR)} ` : `\n` : ` ${styleText(\"dim\", \"/\")} `}${this.value ? `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", s)}` : `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}`}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst date = (e) => {\n const r = e.validate;\n return new DatePrompt({\n ...e,\n validate(t) {\n if (t === void 0)\n return e.defaultValue !== void 0 ? void 0 : r ? runValidation(r, t) : settings.date.messages.required;\n const o = (i) => i.toISOString().slice(0, 10);\n if (e.minDate && o(t) < o(e.minDate))\n return settings.date.messages.afterMin(e.minDate);\n if (e.maxDate && o(t) > o(e.maxDate))\n return settings.date.messages.beforeMax(e.maxDate);\n if (r) return runValidation(r, t);\n },\n render() {\n const t = (e?.withGuide ?? settings.withGuide) !== false, i = `${`${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, l = this.state !== \"initial\" ? this.state : \"active\", d = b(this, l), c = this.value instanceof Date ? this.formattedValue : \"\";\n switch (this.state) {\n case \"error\": {\n const a = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", s = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", f = t ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${i.trim()}\n${s}${d}\n${f}${a}\n`;\n }\n case \"submit\": {\n const a = c ? ` ${styleText(\"dim\", c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}`;\n }\n case \"cancel\": {\n const a = c ? ` ${styleText([\"strikethrough\", \"dim\"], c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}${c.trim() ? `\n${s}` : \"\"}`;\n }\n default: {\n const a = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = t ? styleText(\"cyan\", S_BAR_END) : \"\", f = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = this.inlineError ? `\n${f}${styleText(\"yellow\", this.inlineError)}` : \"\";\n return `${i}${a}${d}${g}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\nfunction b(e, r) {\n const t = e.segmentValues, o = e.segmentCursor;\n if (r === \"submit\" || r === \"cancel\")\n return e.formattedValue;\n const i = styleText(\"gray\", e.separator);\n return e.segments.map((l, d) => {\n const c = d === o.segmentIndex && ![\"submit\", \"cancel\"].includes(r), a = p[l.type];\n return x(t[l.type], { isActive: c, label: a });\n }).join(i);\n}\nfunction x(e, r) {\n const t = !e || e.replace(/_/g, \"\") === \"\";\n return r.isActive ? styleText(\"inverse\", t ? r.label : e.replace(/_/g, \" \")) : t ? styleText(\"dim\", r.label) : e.replace(/_/g, styleText(\"dim\", \" \"));\n}\nconst p = {\n year: \"yyyy\",\n month: \"mm\",\n day: \"dd\"\n};\n\nconst group = async (o, r) => {\n const t = {}, p = Object.keys(o);\n for (const e of p) {\n const i = o[e], n = await i({ results: t })?.catch((a) => {\n throw a;\n });\n if (typeof r?.onCancel == \"function\" && isCancel(n)) {\n t[e] = \"canceled\", r.onCancel({ results: t });\n continue;\n }\n t[e] = n;\n }\n return t;\n};\n\nconst MULTISELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Space:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst m = (i, u) => i.split(`\n`).map((d) => u(d)).join(`\n`);\nconst multiselect = (i) => {\n const u = (t, a) => {\n const r = t.label ?? String(t.value);\n return a === \"disabled\" ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText([\"strikethrough\", \"gray\"], o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint ?? \"disabled\"})`)}` : \"\"}` : a === \"active\" ? `${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${m(r, (o) => styleText(\"dim\", o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"cancelled\" ? `${m(r, (o) => styleText([\"strikethrough\", \"dim\"], o))}` : a === \"active-selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"submitted\" ? `${m(r, (o) => styleText(\"dim\", o))}` : `${styleText(\"dim\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText(\"dim\", o))}`;\n }, d = i.required ?? true, v = i.showInstructions ?? true;\n return new MultiSelectPrompt({\n options: i.options,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValues: i.initialValues,\n required: d,\n cursorAt: i.cursorAt,\n validate(t) {\n if (d && (t === void 0 || t.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText(\"bgWhite\", styleText(\"inverse\", \" enter \"))\n )} to submit`\n )\n )}`;\n },\n render() {\n const t = i.withGuide ?? settings.withGuide, a = wrapTextWithPrefix(\n i.output,\n i.message,\n t ? `${symbolBar(this.state)} ` : \"\",\n `${symbol(this.state)} `\n ), r = `${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${a}\n`, o = this.value ?? [], p = (n, l) => {\n if (n.disabled)\n return u(n, \"disabled\");\n const s = o.includes(n.value);\n return l && s ? u(n, \"active-selected\") : s ? u(n, \"selected\") : u(n, l ? \"active\" : \"inactive\");\n };\n switch (this.state) {\n case \"submit\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"submitted\")).join(styleText(\"dim\", \", \")) || styleText(\"dim\", \"none\"), l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}`;\n }\n case \"cancel\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n if (n.trim() === \"\")\n return `${r}${styleText(\"gray\", S_BAR)}`;\n const l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}${t ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n case \"error\": {\n const n = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", l = this.error.split(`\n`).map(\n ($, C) => C === 0 ? `${t ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", $)}` : ` ${$}`\n ).join(`\n`), s = r.split(`\n`).length, h = l.split(`\n`).length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: s + h,\n style: p\n }).join(`\n${n}`)}\n${l}\n`;\n }\n default: {\n const n = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", l = r.split(`\n`).length, s = v ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t) : t ? [styleText(\"cyan\", S_BAR_END)] : [], h = s.join(`\n`), $ = s.length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: l + $,\n style: p\n }).join(`\n${n}`)}\n${h}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst groupMultiselect = (o) => {\n const { selectableGroups: h = true, groupSpacing: x = 0 } = o, m = (n, l, g = []) => {\n const a = n.label ?? String(n.value), t = typeof n.group == \"string\", s = t && (g[g.indexOf(n) + 1] ?? { group: true }), u = t && s && s.group === true;\n let r = \"\", c = \"\";\n t && (h ? (r = u ? `${S_BAR_END} ` : `${S_BAR} `, c = u ? \" \" : `${S_BAR} `) : r = \" \");\n let i = \"\";\n if (x > 0 && !t && (i = `\n`.repeat(x)), l === \"active\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"group-active\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"group-active-selected\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"selected\") {\n const d = t || h ? styleText(\"green\", S_CHECKBOX_SELECTED) : \"\";\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` (${n.hint})` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${d} `,\n `${i}${styleText(\"dim\", c)} `,\n (S) => styleText(\"dim\", S)\n );\n }\n if (l === \"cancelled\")\n return `${styleText([\"strikethrough\", \"dim\"], a)}`;\n if (l === \"active-selected\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"submitted\")\n return `${styleText(\"dim\", a)}`;\n const f = t || h ? styleText(\"dim\", S_CHECKBOX_INACTIVE) : \"\";\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${f} `,\n `${i}${styleText(\"dim\", c)} `,\n (d) => styleText(\"dim\", d)\n );\n }, y = o.required ?? true, I = o.showInstructions ?? true;\n return new GroupMultiSelectPrompt({\n options: o.options,\n signal: o.signal,\n input: o.input,\n output: o.output,\n initialValues: o.initialValues,\n required: y,\n cursorAt: o.cursorAt,\n selectableGroups: h,\n validate(n) {\n if (y && (n === void 0 || n.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText([\"bgWhite\", \"inverse\"], \" enter \")\n )} to submit`\n )\n )}`;\n },\n render() {\n const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${o.message}\n`, g = this.value ?? [], a = (t, s) => {\n const u = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);\n return !s && typeof t.group == \"string\" && this.options[this.cursor]?.value === t.group ? m(t, r ? \"group-active-selected\" : \"group-active\", u) : s && r ? m(t, \"active-selected\", u) : r ? m(t, \"selected\", u) : m(t, s ? \"active\" : \"inactive\", u);\n };\n switch (this.state) {\n case \"submit\": {\n const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, \"submitted\")), s = t.length === 0 ? \"\" : ` ${t.join(styleText(\"dim\", \", \"))}`;\n return `${l}${n ? styleText(\"gray\", S_BAR) : \"\"}${s}`;\n }\n case \"cancel\": {\n const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n return `${l}${n ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${t.trim() ? `${t}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}` : \"\"}`;\n }\n case \"error\": {\n const t = n ? `${styleText(\"yellow\", S_BAR)} ` : \"\", s = this.error.split(`\n`).map(\n (i, f) => f === 0 ? `${n ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", i)}` : ` ${i}`\n ).join(`\n`), u = l.split(`\n`).length, r = s.split(`\n`).length + 1, c = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: u + r,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${c}\n${s}\n`;\n }\n default: {\n const t = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = l.split(`\n`).length, u = I ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], r = u.join(`\n`), c = u.length + 1, i = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: s + c,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${i}\n${r}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst log = {\n message: (s = [], {\n symbol: e = styleText(\"gray\", S_BAR),\n secondarySymbol: r = styleText(\"gray\", S_BAR),\n output: m = process.stdout,\n spacing: l = 1,\n withGuide: c\n } = {}) => {\n const t = [], o = c ?? settings.withGuide, f = o ? r : \"\", O = o ? `${e} ` : \"\", u = o ? `${r} ` : \"\";\n for (let i = 0; i < l; i++)\n t.push(f);\n const g = Array.isArray(s) ? s : s.split(`\n`);\n if (g.length > 0) {\n const [i, ...y] = g;\n i.length > 0 ? t.push(`${O}${i}`) : t.push(o ? e : \"\");\n for (const p of y)\n p.length > 0 ? t.push(`${u}${p}`) : t.push(o ? r : \"\");\n }\n m.write(`${t.join(`\n`)}\n`);\n },\n info: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"blue\", S_INFO) });\n },\n success: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_SUCCESS) });\n },\n step: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_STEP_SUBMIT) });\n },\n warn: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"yellow\", S_WARN) });\n },\n /** alias for `log.warn()`. */\n warning: (s, e) => {\n log.warn(s, e);\n },\n error: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"red\", S_ERROR) });\n }\n};\n\nconst cancel = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${styleText(\"red\", o)}\n\n`);\n}, intro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_START)} ` : \"\";\n i.write(`${e}${o}\n`);\n}, outro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR)}\n${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${o}\n\n`);\n};\n\nconst multiline = (e) => new MultiLinePrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n showSubmit: e.showSubmit,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, m = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), a = this.userInput ? this.userInputWithCursor : m, l = this.value ?? \"\", c = e.showSubmit ? `\n ${styleText(this.focused === \"submit\" ? \"cyan\" : \"dim\", \"[ submit ]\")}` : \"\";\n switch (this.state) {\n case \"error\": {\n const n = `${styleText(\"yellow\", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText(\"yellow\", S_BAR_END);\n return `${o}${r}\n${u} ${styleText(\"yellow\", this.error)}${c}\n`;\n }\n case \"submit\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText(\"dim\", u)\n ) : l ? styleText(\"dim\", l) : \"\";\n return `${o}${r}`;\n }\n case \"cancel\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText([\"strikethrough\", \"dim\"], u)\n ) : l ? styleText([\"strikethrough\", \"dim\"], l) : \"\";\n return `${o}${r}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\", u = i ? wrapTextWithPrefix(e.output, a, n) : a;\n return `${o}${u}\n${r}${c}\n`;\n }\n }\n }\n}).prompt();\n\nconst W$1 = (o) => o, C = (o, e, s) => {\n const a = {\n hard: true,\n trim: false\n }, i = wrapAnsi(o, e, a).split(`\n`), c = i.reduce((n, t) => Math.max(l(t), n), 0), u = i.map(s).reduce((n, t) => Math.max(l(t), n), 0), g = e - (u - c);\n return wrapAnsi(o, g, a);\n};\nconst note = (o = \"\", e = \"\", s) => {\n const a = s?.output ?? process$1.stdout, i = s?.withGuide ?? settings.withGuide, c = s?.format ?? W$1, g = [\"\", ...C(o, getColumns(a) - 6, c).split(`\n`).map(c), \"\"], n = l(e), t = Math.max(\n g.reduce((m, F) => {\n const O = l(F);\n return O > m ? O : m;\n }, 0),\n n\n ) + 2, h = g.map(\n (m) => `${styleText(\"gray\", S_BAR)} ${m}${\" \".repeat(t - l(m))}${styleText(\"gray\", S_BAR)}`\n ).join(`\n`), T = i ? `${styleText(\"gray\", S_BAR)}\n` : \"\", l$1 = i ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n a.write(\n `${T}${styleText(\"green\", S_STEP_SUBMIT)} ${styleText(\"reset\", e)} ${styleText(\n \"gray\",\n S_BAR_H.repeat(Math.max(t - n - 1, 1)) + S_CORNER_TOP_RIGHT\n )}\n${h}\n${styleText(\"gray\", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BOTTOM_RIGHT)}\n`\n );\n};\n\nconst password = (r) => new PasswordPrompt({\n validate: r.validate,\n mask: r.mask ?? S_PASSWORD_MASK,\n signal: r.signal,\n input: r.input,\n output: r.output,\n render() {\n const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${r.message}\n`, c = this.userInputWithCursor, i = this.masked;\n switch (this.state) {\n case \"error\": {\n const s = e ? `${styleText(\"yellow\", S_BAR)} ` : \"\", n = e ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\", l = i ?? \"\";\n return r.clearOnError && this.clear(), `${o.trim()}\n${s}${l}\n${n}${styleText(\"yellow\", this.error)}\n`;\n }\n case \"submit\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText(\"dim\", i) : \"\";\n return `${o}${s}${n}`;\n }\n case \"cancel\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText([\"strikethrough\", \"dim\"], i) : \"\";\n return `${o}${s}${n}${i && e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const s = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", n = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${s}${c}\n${n}\n`;\n }\n }\n }\n}).prompt();\n\nconst path = (e) => {\n const a = e.validate;\n return autocomplete({\n ...e,\n initialUserInput: e.initialValue ?? e.root ?? process.cwd(),\n maxItems: 5,\n validate(t) {\n if (!Array.isArray(t)) {\n if (!t)\n return \"Please select a path\";\n if (a)\n return runValidation(a, t);\n }\n },\n options() {\n const t = this.userInput;\n if (t === \"\")\n return [];\n try {\n let i;\n existsSync(t) ? lstatSync(t).isDirectory() && (!e.directory || t.endsWith(\"/\")) ? i = t : i = dirname(t) : i = dirname(t);\n const c = t.length > 1 && t.endsWith(\"/\") ? t.slice(0, -1) : t;\n return readdirSync(i).map((r) => {\n const n = join(i, r), m = lstatSync(n);\n return {\n name: r,\n path: n,\n isDirectory: m.isDirectory()\n };\n }).filter(\n ({ path: r, isDirectory: n }) => r.startsWith(c) && (n || !e.directory)\n ).map((r) => ({\n value: r.path\n }));\n } catch {\n return [];\n }\n }\n });\n};\n\nconst W = (l) => styleText(\"magenta\", l);\nconst spinner = ({\n indicator: l = \"dots\",\n onCancel: h,\n output: n = process.stdout,\n cancelMessage: G,\n errorMessage: O,\n frames: E = unicode ? [\"\\u25D2\", \"\\u25D0\", \"\\u25D3\", \"\\u25D1\"] : [\"\\u2022\", \"o\", \"O\", \"0\"],\n delay: F = unicode ? 80 : 120,\n signal: m,\n ...I\n} = {}) => {\n const u = isCI();\n let M, T, d = false, S = false, s = \"\", p, w = performance.now();\n const x = getColumns(n), k = I?.styleFrame ?? W, g = (e) => {\n const r = e > 1 ? O ?? settings.messages.error : G ?? settings.messages.cancel;\n S = e === 1, d && (a(r, e), S && typeof h == \"function\" && h());\n }, f = () => g(2), i = () => g(1), A = () => {\n process.on(\"uncaughtExceptionMonitor\", f), process.on(\"unhandledRejection\", f), process.on(\"SIGINT\", i), process.on(\"SIGTERM\", i), process.on(\"exit\", g), m && m.addEventListener(\"abort\", i);\n }, H = () => {\n process.removeListener(\"uncaughtExceptionMonitor\", f), process.removeListener(\"unhandledRejection\", f), process.removeListener(\"SIGINT\", i), process.removeListener(\"SIGTERM\", i), process.removeListener(\"exit\", g), m && m.removeEventListener(\"abort\", i);\n }, y = () => {\n if (p === void 0) return;\n u && n.write(`\n`);\n const r = wrapAnsi(p, x, {\n hard: true,\n trim: false\n }).split(`\n`);\n r.length > 1 && n.write(cursor.up(r.length - 1)), n.write(cursor.to(0)), n.write(erase.down());\n }, C = (e) => e.replace(/\\.+$/, \"\"), _ = (e) => {\n const r = (performance.now() - e) / 1e3, t = Math.floor(r / 60), o = Math.floor(r % 60);\n return t > 0 ? `[${t}m ${o}s]` : `[${o}s]`;\n }, N = I.withGuide ?? settings.withGuide, P = (e = \"\") => {\n d = true, M = block({ output: n }), s = C(e), w = performance.now(), N && n.write(`${styleText(\"gray\", S_BAR)}\n`);\n let r = 0, t = 0;\n A(), T = setInterval(() => {\n if (u && s === p)\n return;\n y(), p = s;\n const o = k(E[r]);\n let v;\n if (u)\n v = `${o} ${s}...`;\n else if (l === \"timer\")\n v = `${o} ${s} ${_(w)}`;\n else {\n const B = \".\".repeat(Math.floor(t)).slice(0, 3);\n v = `${o} ${s}${B}`;\n }\n const j = wrapAnsi(v, x, {\n hard: true,\n trim: false\n });\n n.write(j), r = r + 1 < E.length ? r + 1 : 0, t = t < 4 ? t + 0.125 : 0;\n }, F);\n }, a = (e = \"\", r = 0, t = false) => {\n if (!d) return;\n d = false, clearInterval(T), y();\n const o = r === 0 ? styleText(\"green\", S_STEP_SUBMIT) : r === 1 ? styleText(\"red\", S_STEP_CANCEL) : styleText(\"red\", S_STEP_ERROR);\n s = e ?? s, t || (l === \"timer\" ? n.write(`${o} ${s} ${_(w)}\n`) : n.write(`${o} ${s}\n`)), H(), M();\n };\n return {\n start: P,\n stop: (e = \"\") => a(e, 0),\n message: (e = \"\") => {\n s = C(e ?? s);\n },\n cancel: (e = \"\") => a(e, 1),\n error: (e = \"\") => a(e, 2),\n clear: () => a(\"\", 0, true),\n get isCancelled() {\n return S;\n }\n };\n};\n\nconst u = {\n light: unicodeOr(\"\\u2500\", \"-\"),\n heavy: unicodeOr(\"\\u2501\", \"=\"),\n block: unicodeOr(\"\\u2588\", \"#\")\n};\nfunction progress({\n style: o = \"heavy\",\n max: d = 100,\n size: v = 40,\n ...x\n} = {}) {\n const r = spinner(x);\n let a = 0, n = \"\";\n const c = Math.max(1, d), l = Math.max(1, v), S = (t) => {\n switch (t) {\n case \"initial\":\n case \"active\":\n return (e) => styleText(\"magenta\", e);\n case \"error\":\n case \"cancel\":\n return (e) => styleText(\"red\", e);\n case \"submit\":\n return (e) => styleText(\"green\", e);\n default:\n return (e) => styleText(\"magenta\", e);\n }\n }, p = (t, e) => {\n const m = Math.floor(a / c * l);\n return `${S(t)(u[o].repeat(m))}${styleText(\"dim\", u[o].repeat(l - m))} ${e}`;\n }, h = (t = \"\") => {\n n = t, r.start(p(\"initial\", t));\n }, g = (t = 1, e) => {\n a = Math.min(c, t + a), r.message(p(\"active\", e ?? n)), n = e ?? n;\n };\n return {\n start: h,\n stop: r.stop,\n cancel: r.cancel,\n error: r.error,\n clear: r.clear,\n advance: g,\n isCancelled: r.isCancelled,\n message: (t) => g(0, t)\n };\n}\n\nconst SELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst c = (t, o) => t.includes(`\n`) ? t.split(`\n`).map((d) => o(d)).join(`\n`) : o(t);\nconst select = (t) => {\n const o = (n, m) => {\n if (n === void 0)\n return \"\";\n const s = n.label ?? String(n.value);\n switch (m) {\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"gray\", i))}${n.hint ? ` ${styleText(\"dim\", `(${n.hint ?? \"disabled\"})`)}` : \"\"}`;\n case \"selected\":\n return `${c(s, (i) => styleText(\"dim\", i))}`;\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`;\n case \"cancelled\":\n return `${c(s, (i) => styleText([\"strikethrough\", \"dim\"], i))}`;\n default:\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"dim\", i))}`;\n }\n }, d = t.showInstructions ?? true;\n return new SelectPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n render() {\n const n = t.withGuide ?? settings.withGuide, m = `${symbol(this.state)} `, s = `${symbolBar(this.state)} `, i = wrapTextWithPrefix(\n t.output,\n t.message,\n s,\n m\n ), u = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${i}\n`;\n switch (this.state) {\n case \"submit\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"selected\"),\n r\n );\n return `${u}${a}`;\n }\n case \"cancel\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"cancelled\"),\n r\n );\n return `${u}${a}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", a = u.split(`\n`).length, p = d ? formatInstructionFooter(SELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], b = p.join(`\n`), f = p.length + 1;\n return `${u}${r}${limitOptions({\n output: t.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: t.maxItems,\n columnPadding: r.length,\n rowPadding: a + f,\n style: (g, x) => o(g, g.disabled ? \"disabled\" : x ? \"active\" : \"inactive\")\n }).join(`\n${r}`)}\n${b}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst selectKey = (t) => {\n const l = (e, a = \"inactive\") => {\n if (e === void 0)\n return \"\";\n const n = e.label ?? String(e.value);\n return a === \"selected\" ? `${styleText(\"dim\", n)}` : a === \"cancelled\" ? `${styleText([\"strikethrough\", \"dim\"], n)}` : a === \"active\" ? `${styleText([\"bgCyan\", \"gray\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}` : `${styleText([\"gray\", \"bgWhite\", \"inverse\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}`;\n };\n return new SelectKeyPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n caseSensitive: t.caseSensitive,\n render() {\n const e = t.withGuide ?? settings.withGuide, a = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`;\n switch (this.state) {\n case \"submit\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(\n t.output,\n l(s, \"selected\"),\n n\n );\n return `${a}${c}`;\n }\n case \"cancel\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = wrapTextWithPrefix(\n t.output,\n l(this.options[0], \"cancelled\"),\n n\n );\n return `${a}${s}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const n = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = e ? styleText(\"cyan\", S_BAR_END) : \"\", c = this.options.map(\n (u, d) => wrapTextWithPrefix(\n t.output,\n l(u, d === this.cursor ? \"active\" : \"inactive\"),\n n\n )\n ).join(`\n`);\n return `${a}${c}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst i = `${styleText(\"gray\", S_BAR)} `;\nconst stream = {\n message: async (e, { symbol: l = styleText(\"gray\", S_BAR) } = {}) => {\n process.stdout.write(`${styleText(\"gray\", S_BAR)}\n${l} `);\n let s = 3;\n for await (let r of e) {\n r = r.replace(/\\n/g, `\n${i}`), r.includes(`\n`) && (s = 3 + stripVTControlCharacters(r.slice(r.lastIndexOf(`\n`))).length);\n const o = stripVTControlCharacters(r).length;\n s + o < process.stdout.columns ? (s += o, process.stdout.write(r)) : (process.stdout.write(`\n${i}${r.trimStart()}`), s = 3 + stripVTControlCharacters(r.trimStart()).length);\n }\n process.stdout.write(`\n`);\n },\n info: (e) => stream.message(e, { symbol: styleText(\"blue\", S_INFO) }),\n success: (e) => stream.message(e, { symbol: styleText(\"green\", S_SUCCESS) }),\n step: (e) => stream.message(e, { symbol: styleText(\"green\", S_STEP_SUBMIT) }),\n warn: (e) => stream.message(e, { symbol: styleText(\"yellow\", S_WARN) }),\n /** alias for `log.warn()`. */\n warning: (e) => stream.warn(e),\n error: (e) => stream.message(e, { symbol: styleText(\"red\", S_ERROR) })\n};\n\nconst tasks = async (o, e) => {\n for (const t of o) {\n if (t.enabled === false) continue;\n const s = spinner(e);\n s.start(t.title);\n const n = await t.task(s.message);\n s.stop(n || t.title);\n }\n};\n\nconst A = (l) => l.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, \"\");\nconst taskLog = (l) => {\n const r = l.output ?? process.stdout, O = getColumns(r), i = styleText(\"gray\", S_BAR), p = l.spacing ?? 1, k = 3, m = l.retainLog === true, d = !isCI() && isTTY(r);\n r.write(`${i}\n`), r.write(`${styleText(\"green\", S_STEP_SUBMIT)} ${l.title}\n`);\n for (let e = 0; e < p; e++)\n r.write(`${i}\n`);\n const n = [\n {\n value: \"\",\n full: \"\"\n }\n ];\n let v = false;\n const f = (e) => {\n if (n.length === 0)\n return;\n let s = 0;\n e && (s += p + 2);\n for (const t of n) {\n const { value: o, result: a } = t;\n let g = a?.message ?? o;\n if (g.length === 0)\n continue;\n a === void 0 && t.header !== void 0 && t.header !== \"\" && (g += `\n${t.header}`);\n const E = g.split(`\n`).reduce((b, w) => w === \"\" ? b + 1 : b + Math.ceil((w.length + k) / O), 0);\n s += E;\n }\n s > 0 && (s += 1, r.write(erase.lines(s)));\n }, h = (e, s, t) => {\n const o = t ? `${e.full}\n${e.value}` : e.value;\n e.header !== void 0 && e.header !== \"\" && log.message(\n e.header.split(`\n`).map((a) => styleText(\"bold\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: 0\n }\n ), log.message(\n o.split(`\n`).map((a) => styleText(\"dim\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: s ?? p\n }\n );\n }, T = () => {\n for (const e of n) {\n const { header: s, value: t, full: o } = e;\n (s === void 0 || s.length === 0) && t.length === 0 || h(e, void 0, m === true && o.length > 0);\n }\n }, L = (e, s, t) => {\n if (f(false), (t?.raw !== true || !v) && e.value !== \"\" && (e.value += `\n`), e.value += A(s), v = t?.raw === true, l.limit !== void 0) {\n const o = e.value.split(`\n`), a = o.length - l.limit;\n if (a > 0) {\n const g = o.splice(0, a);\n m && (e.full += (e.full === \"\" ? \"\" : `\n`) + g.join(`\n`));\n }\n e.value = o.join(`\n`);\n }\n d && y();\n }, y = () => {\n for (const e of n)\n e.result ? e.result.status === \"error\" ? log.error(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : log.success(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : e.value !== \"\" && h(e, 0);\n }, B = (e, s) => {\n f(false), e.result = s, d && y();\n };\n return {\n message(e, s) {\n L(n[0], e, s);\n },\n group(e) {\n const s = {\n header: e,\n value: \"\",\n full: \"\"\n };\n return n.push(s), {\n message(t, o) {\n L(s, t, o);\n },\n error(t) {\n B(s, {\n status: \"error\",\n message: t\n });\n },\n success(t) {\n B(s, {\n status: \"success\",\n message: t\n });\n }\n };\n },\n error(e, s) {\n f(true), log.error(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog !== false && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n },\n success(e, s) {\n f(true), log.success(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog === true && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n }\n };\n};\n\nconst text = (e) => new TextPrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, s = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, c = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), o = this.userInput ? this.userInputWithCursor : c, l = this.value ?? \"\";\n switch (this.state) {\n case \"error\": {\n const n = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", r = i ? `${styleText(\"yellow\", S_BAR)} ` : \"\", d = i ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${s.trim()}\n${r}${o}\n${d}${n}\n`;\n }\n case \"submit\": {\n const n = l ? ` ${styleText(\"dim\", l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}`;\n }\n case \"cancel\": {\n const n = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}${l.trim() ? `\n${r}` : \"\"}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${s}${n}${o}\n${r}\n`;\n }\n }\n }\n}).prompt();\n\nexport { MULTISELECT_INSTRUCTIONS, SELECT_INSTRUCTIONS, S_BAR, S_BAR_END, S_BAR_END_RIGHT, S_BAR_H, S_BAR_START, S_BAR_START_RIGHT, S_CHECKBOX_ACTIVE, S_CHECKBOX_INACTIVE, S_CHECKBOX_SELECTED, S_CONNECT_LEFT, S_CORNER_BOTTOM_LEFT, S_CORNER_BOTTOM_RIGHT, S_CORNER_TOP_LEFT, S_CORNER_TOP_RIGHT, S_ERROR, S_INFO, S_PASSWORD_MASK, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_SUCCESS, S_WARN, autocomplete, autocompleteMultiselect, box, cancel, confirm, date, formatInstructionFooter, group, groupMultiselect, intro, isCI, isTTY, limitOptions, log, multiline, multiselect, note, outro, password, path, progress, select, selectKey, spinner, stream, symbol, symbolBar, taskLog, tasks, text, unicode, unicodeOr };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { spinner } from \"@clack/prompts\";\n\nexport type StepDescriptor = {\n id: string;\n title: string;\n completedTitle?: string;\n detail?: string;\n};\n\ntype TaskProgressSink = {\n log: (message: string) => void;\n report?: (message: string) => void;\n};\n\nfunction formatDuration(durationMs: number): string {\n if (durationMs < 1_000) {\n return `${durationMs}ms`;\n }\n return `${(durationMs / 1_000).toFixed(1)}s`;\n}\n\nclass TaskProgressService {\n readonly #storage = new AsyncLocalStorage<TaskProgressSink>();\n\n attach<T>(sink: TaskProgressSink, task: () => Promise<T>): Promise<T> {\n return this.#storage.run(sink, task);\n }\n\n log(message: string): void {\n this.#storage.getStore()?.log(message);\n }\n\n report(message: string): void {\n const sink = this.#storage.getStore();\n const reporter = sink?.report || sink?.log;\n reporter?.(message);\n }\n\n createStepProgress(classify: (message: string) => StepDescriptor = (message) => ({ id: message, title: message })) {\n const progress = spinner();\n let active: { id: string; title: string; completedTitle?: string; startedAt: number } | undefined;\n\n const finishActive = (label?: string) => {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label || active.completedTitle || `${active.title} completed`} (${duration})`);\n active = undefined;\n };\n\n const start = (step: StepDescriptor) => {\n if (active?.id === step.id) {\n progress.message(step.detail ? `${step.title}: ${step.detail}` : step.title);\n return;\n }\n\n finishActive();\n active = {\n id: step.id,\n title: step.title,\n completedTitle: step.completedTitle,\n startedAt: Date.now()\n };\n progress.start(step.detail ? `${step.title}: ${step.detail}` : step.title);\n };\n\n const execute = <T>(task: () => Promise<T>): Promise<T> =>\n this.attach(\n {\n log: (message) => progress.message(active ? `${active.title}: ${message}` : message),\n report: (message) => start(classify(message))\n },\n task\n );\n\n return {\n report(message: string) {\n start(classify(message));\n },\n start,\n execute,\n run: async <T>(step: StepDescriptor, task: () => Promise<T>): Promise<T> => {\n start(step);\n await new Promise<void>((resolve) => setImmediate(resolve));\n const result = await execute(task);\n finishActive();\n return result;\n },\n finish(label?: string) {\n finishActive(label);\n },\n fail(label: string) {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label} (${duration})`);\n active = undefined;\n }\n };\n }\n}\n\nexport const taskProgressService = new TaskProgressService();\n"],"x_google_ignoreList":[4,5,6,7,8,9,10],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { fileURLToPath as __atlasFileURLToPath } from "node:url";
|
|
2
|
+
const __filename = __atlasFileURLToPath(import.meta.url);
|
|
3
|
+
import{t as e}from"./rolldown-runtime-tLoeUGlk.mjs";import{r as t,t as n}from"./token-util-D_QRVbKm.mjs";var r=e(((e,r)=>{var i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,c=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of o(t))!s.call(e,c)&&c!==n&&i(e,c,{get:()=>t[c],enumerable:!(r=a(t,c))||r.enumerable});return e},u=e=>l(i({},`__esModule`,{value:!0}),e),d={};c(d,{refreshToken:()=>m}),r.exports=u(d);var f=t(),p=n();async function m(e){let t=e?.project,n=e?.team;if(!t&&!n){let e=(0,p.findProjectInfo)();t=e.projectId,n=e.teamId}else if(!t||!n){let e=(0,p.findProjectInfo)();t??=e.projectId,n??=e.teamId}if(!t)throw new f.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let r=(0,p.loadToken)(t);if(!r||(0,p.isExpired)((0,p.getTokenPayload)(r.token),e?.expirationBufferMs)){let i=await(0,p.getVercelToken)({expirationBufferMs:e?.expirationBufferMs});if(r=await(0,p.getVercelOidcToken)(i,t,n),!r)throw new f.VercelOidcTokenError(`Failed to refresh OIDC token`);(0,p.saveToken)(r,t)}process.env.VERCEL_OIDC_TOKEN=r.token}0&&(r.exports={refreshToken:m})}));export default r();export{};
|
|
4
|
+
//# sourceMappingURL=token-Cnw7Rqlg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-Cnw7Rqlg.mjs","names":[],"sources":["../../../node_modules/@vercel/oidc/dist/token.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_exports = {};\n__export(token_exports, {\n refreshToken: () => refreshToken\n});\nmodule.exports = __toCommonJS(token_exports);\nvar import_token_error = require(\"./token-error\");\nvar import_token_util = require(\"./token-util\");\nasync function refreshToken(options) {\n let projectId = options?.project;\n let teamId = options?.team;\n if (!projectId && !teamId) {\n const projectInfo = (0, import_token_util.findProjectInfo)();\n projectId = projectInfo.projectId;\n teamId = projectInfo.teamId;\n } else if (!projectId || !teamId) {\n const projectInfo = (0, import_token_util.findProjectInfo)();\n projectId = projectId ?? projectInfo.projectId;\n teamId = teamId ?? projectInfo.teamId;\n }\n if (!projectId) {\n throw new import_token_error.VercelOidcTokenError(\n \"Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`\"\n );\n }\n let maybeToken = (0, import_token_util.loadToken)(projectId);\n if (!maybeToken || (0, import_token_util.isExpired)((0, import_token_util.getTokenPayload)(maybeToken.token), options?.expirationBufferMs)) {\n const authToken = await (0, import_token_util.getVercelToken)({\n expirationBufferMs: options?.expirationBufferMs\n });\n maybeToken = await (0, import_token_util.getVercelOidcToken)(authToken, projectId, teamId);\n if (!maybeToken) {\n throw new import_token_error.VercelOidcTokenError(\"Failed to refresh OIDC token\");\n }\n (0, import_token_util.saveToken)(maybeToken, projectId);\n }\n process.env.VERCEL_OIDC_TOKEN = maybeToken.token;\n return;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n refreshToken\n});\n"],"x_google_ignoreList":[0],"mappings":";;0HACA,IAAI,EAAY,OAAO,eACnB,EAAmB,OAAO,yBAC1B,EAAoB,OAAO,oBAC3B,EAAe,OAAO,UAAU,eAChC,GAAY,EAAQ,IAAQ,CAC9B,IAAK,IAAI,KAAQ,EACf,EAAU,EAAQ,EAAM,CAAE,IAAK,EAAI,GAAO,WAAY,EAAK,CAAC,CAChE,EACI,GAAe,EAAI,EAAM,EAAQ,IAAS,CAC5C,GAAI,GAAQ,OAAO,GAAS,UAAY,OAAO,GAAS,WACjD,IAAA,IAAI,KAAO,EAAkB,CAAI,EAChC,CAAC,EAAa,KAAK,EAAI,CAAG,GAAK,IAAQ,GACzC,EAAU,EAAI,EAAK,CAAE,QAAW,EAAK,GAAM,WAAY,EAAE,EAAO,EAAiB,EAAM,CAAG,IAAM,EAAK,UAAW,CAAC,EAEvH,OAAO,CACT,EACI,EAAgB,GAAQ,EAAY,EAAU,CAAC,EAAG,aAAc,CAAE,MAAO,EAAK,CAAC,EAAG,CAAG,EACrF,EAAgB,CAAC,EACrB,EAAS,EAAe,CACtB,iBAAoB,CACtB,CAAC,EACD,EAAO,QAAU,EAAa,CAAa,EAC3C,IAAI,EAAA,EAAA,EACA,EAAA,EAAA,EACJ,eAAe,EAAa,EAAS,CACnC,IAAI,EAAY,GAAS,QACrB,EAAS,GAAS,KACtB,GAAI,CAAC,GAAa,CAAC,EAAQ,CACzB,IAAM,GAAe,EAAG,EAAkB,gBAAA,CAAiB,EAC3D,EAAY,EAAY,UACxB,EAAS,EAAY,MACvB,MAAO,GAAI,CAAC,GAAa,CAAC,EAAQ,CAChC,IAAM,GAAe,EAAG,EAAkB,gBAAA,CAAiB,EAC3D,IAAyB,EAAY,UACrC,IAAmB,EAAY,MACjC,CACA,GAAI,CAAC,EACH,MAAM,IAAI,EAAmB,qBAC3B,gGACF,EAEF,IAAI,GAAc,EAAG,EAAkB,UAAA,CAAW,CAAS,EAC3D,GAAI,CAAC,IAAe,EAAG,EAAkB,UAAA,EAAY,EAAG,EAAkB,gBAAA,CAAiB,EAAW,KAAK,EAAG,GAAS,kBAAkB,EAAG,CAC1I,IAAM,EAAY,MAAO,EAAG,EAAkB,eAAA,CAAgB,CAC5D,mBAAoB,GAAS,kBAC/B,CAAC,EAED,GADA,EAAa,MAAO,EAAG,EAAkB,mBAAA,CAAoB,EAAW,EAAW,CAAM,EACrF,CAAC,EACH,MAAM,IAAI,EAAmB,qBAAqB,8BAA8B,GAEjF,EAAG,EAAkB,UAAA,CAAW,EAAY,CAAS,CACxD,CACA,QAAQ,IAAI,kBAAoB,EAAW,KAE7C,CAEA,IAAM,EAAO,QAAU,CACrB,cACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { fileURLToPath as __atlasFileURLToPath } from "node:url";
|
|
2
|
+
const __filename = __atlasFileURLToPath(import.meta.url);
|
|
3
|
+
import{n as e,t}from"./rolldown-runtime-tLoeUGlk.mjs";var n=t(((e,t)=>{var n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,o=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})},s=(e,t,o,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of i(t))!a.call(e,c)&&c!==o&&n(e,c,{get:()=>t[c],enumerable:!(s=r(t,c))||s.enumerable});return e},c=e=>s(n({},`__esModule`,{value:!0}),e),l={};o(l,{VercelOidcTokenError:()=>u}),t.exports=c(l);var u=class extends Error{constructor(e,t){super(e),this.name=`VercelOidcTokenError`,this.cause=t}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}};0&&(t.exports={VercelOidcTokenError:u})})),r=t(((e,t)=>{var n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,o=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})},s=(e,t,o,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of i(t))!a.call(e,c)&&c!==o&&n(e,c,{get:()=>t[c],enumerable:!(s=r(t,c))||s.enumerable});return e},c=e=>s(n({},`__esModule`,{value:!0}),e),l={};o(l,{AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d}),t.exports=c(l);var u=class extends Error{constructor(){super(`No authentication found. Please log in with the Vercel CLI (vercel login).`),this.name=`AccessTokenMissingError`}},d=class extends Error{constructor(e){super(`Failed to refresh authentication token.`,{cause:e}),this.name=`RefreshAccessTokenFailedError`}};0&&(t.exports={AccessTokenMissingError:u,RefreshAccessTokenFailedError:d})})),i=t(((t,r)=>{var i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,c=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of s(t))!l.call(e,i)&&i!==n&&a(e,i,{get:()=>t[i],enumerable:!(r=o(t,i))||r.enumerable});return e},f=(e,t,n)=>(n=e==null?{}:i(c(e)),d(t||!e||!e.__esModule?a(n,`default`,{value:e,enumerable:!0}):n,e)),p=e=>d(a({},`__esModule`,{value:!0}),e),m={};u(m,{findRootDir:()=>y,getUserDataDir:()=>b}),r.exports=p(m);var h=f(e(`path`)),g=f(e(`fs`)),_=f(e(`os`)),v=n();function y(){try{let e=process.cwd();for(;e!==h.default.dirname(e);){let t=h.default.join(e,`.vercel`);if(g.default.existsSync(t))return e;e=h.default.dirname(e)}}catch{throw new v.VercelOidcTokenError(`Token refresh only supported in node server environments`)}return null}function b(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(_.default.platform()){case`darwin`:return h.default.join(_.default.homedir(),`Library/Application Support`);case`linux`:return h.default.join(_.default.homedir(),`.local/share`);case`win32`:return process.env.LOCALAPPDATA?process.env.LOCALAPPDATA:null;default:return null}}0&&(r.exports={findRootDir:y,getUserDataDir:b})})),a=t(((t,n)=>{var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,c=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let s of o(t))!l.call(e,s)&&s!==n&&i(e,s,{get:()=>t[s],enumerable:!(r=a(t,s))||r.enumerable});return e},f=(e,t,n)=>(n=e==null?{}:r(c(e)),d(t||!e||!e.__esModule?i(n,`default`,{value:e,enumerable:!0}):n,e)),p=e=>d(i({},`__esModule`,{value:!0}),e),m={};u(m,{isValidAccessToken:()=>x,readAuthConfig:()=>y,writeAuthConfig:()=>b}),n.exports=p(m);var h=f(e(`fs`)),g=f(e(`path`)),_=s();function v(){let e=(0,_.getVercelDataDir)();if(!e)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return g.join(e,`auth.json`)}function y(){try{let e=v();if(!h.existsSync(e))return null;let t=h.readFileSync(e,`utf8`);return t?JSON.parse(t):null}catch{return null}}function b(e){let t=v(),n=g.dirname(t);h.existsSync(n)||h.mkdirSync(n,{mode:504,recursive:!0}),h.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function x(e,t=0){if(!e.token)return!1;if(typeof e.expiresAt!=`number`)return!0;let n=Math.floor(Date.now()/1e3),r=t/1e3;return e.expiresAt>=n+r}0&&(n.exports={isValidAccessToken:x,readAuthConfig:y,writeAuthConfig:b})})),o=t(((t,n)=>{var r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},c=(e,t,n,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!o.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(s=i(t,c))||s.enumerable});return e},l=e=>c(r({},`__esModule`,{value:!0}),e),u={};s(u,{processTokenResponse:()=>g,refreshTokenRequest:()=>h}),n.exports=l(u);var d=e(`os`);let f=`@vercel/oidc node-${process.version} ${(0,d.platform)()} (${(0,d.arch)()}) ${(0,d.hostname)()}`,p=null;async function m(){if(p)return p;let e=await fetch(`https://vercel.com/.well-known/openid-configuration`,{headers:{"user-agent":f}});if(!e.ok)throw Error(`Failed to discover OAuth endpoints`);let t=await e.json();if(!t||typeof t.token_endpoint!=`string`)throw Error(`Invalid OAuth discovery response`);let n=t.token_endpoint;return p=n,n}async function h(e){let t=await m();return await fetch(t,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,"user-agent":f},body:new URLSearchParams({client_id:`cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp`,grant_type:`refresh_token`,...e})})}async function g(e){let t=await e.json();if(!e.ok){let e=typeof t==`object`&&t&&`error`in t?String(t.error):`Token refresh failed`;return[Error(e)]}return typeof t!=`object`||!t?[Error(`Invalid token response`)]:typeof t.access_token==`string`?t.token_type===`Bearer`?typeof t.expires_in==`number`?[null,t]:[Error(`Missing expires_in in response`)]:[Error(`Invalid token_type in response`)]:[Error(`Missing access_token in response`)]}0&&(n.exports={processTokenResponse:g,refreshTokenRequest:h})})),s=t(((t,s)=>{var c=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,m=(e,t)=>{for(var n in t)l(e,n,{get:t[n],enumerable:!0})},h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!p.call(e,i)&&i!==n&&l(e,i,{get:()=>t[i],enumerable:!(r=u(t,i))||r.enumerable});return e},g=(e,t,n)=>(n=e==null?{}:c(f(e)),h(t||!e||!e.__esModule?l(n,`default`,{value:e,enumerable:!0}):n,e)),_=e=>h(l({},`__esModule`,{value:!0}),e),v={};m(v,{assertVercelOidcTokenResponse:()=>k,findProjectInfo:()=>A,getTokenPayload:()=>N,getVercelDataDir:()=>E,getVercelOidcToken:()=>O,getVercelToken:()=>D,isExpired:()=>P,loadToken:()=>M,saveToken:()=>j}),s.exports=_(v);var y=g(e(`path`)),b=g(e(`fs`)),x=n(),S=i(),C=a(),w=o(),T=r();function E(){let e=(0,S.getUserDataDir)();return e?y.join(e,`com.vercel.cli`):null}async function D(e){let t=(0,C.readAuthConfig)();if(!t?.token)throw new T.AccessTokenMissingError;if((0,C.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,C.writeAuthConfig)({}),new T.RefreshAccessTokenFailedError(`No refresh token available`);try{let e=await(0,w.refreshTokenRequest)({refresh_token:t.refreshToken}),[n,r]=await(0,w.processTokenResponse)(e);if(n||!r)throw(0,C.writeAuthConfig)({}),new T.RefreshAccessTokenFailedError(n);let i={token:r.access_token,expiresAt:Math.floor(Date.now()/1e3)+r.expires_in};return r.refresh_token&&(i.refreshToken=r.refresh_token),(0,C.writeAuthConfig)(i),i.token}catch(e){throw(0,C.writeAuthConfig)({}),e instanceof T.AccessTokenMissingError||e instanceof T.RefreshAccessTokenFailedError?e:new T.RefreshAccessTokenFailedError(e)}}async function O(e,t,n){let r=`https://api.vercel.com/v1/projects/${t}/token?source=vercel-oidc-refresh${n?`&teamId=${n}`:``}`,i=await fetch(r,{method:`POST`,headers:{Authorization:`Bearer ${e}`}});if(!i.ok)throw new x.VercelOidcTokenError(`Failed to refresh OIDC token: ${i.statusText}`);let a=await i.json();return k(a),a}function k(e){if(!e||typeof e!=`object`)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!(`token`in e)||typeof e.token!=`string`)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function A(){let e=(0,S.findRootDir)();if(!e)throw new x.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let t=y.join(e,`.vercel`,`project.json`);if(!b.existsSync(t))throw new x.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let n=JSON.parse(b.readFileSync(t,`utf8`));if(typeof n.projectId!=`string`&&typeof n.orgId!=`string`)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:n.projectId,teamId:n.orgId}}function j(e,t){let n=(0,S.getUserDataDir)();if(!n)throw new x.VercelOidcTokenError(`Unable to find user data directory. Please reach out to Vercel support.`);let r=y.join(n,`com.vercel.token`,`${t}.json`),i=JSON.stringify(e);b.mkdirSync(y.dirname(r),{mode:504,recursive:!0}),b.writeFileSync(r,i),b.chmodSync(r,432)}function M(e){let t=(0,S.getUserDataDir)();if(!t)throw new x.VercelOidcTokenError(`Unable to find user data directory. Please reach out to Vercel support.`);let n=y.join(t,`com.vercel.token`,`${e}.json`);if(!b.existsSync(n))return null;let r=JSON.parse(b.readFileSync(n,`utf8`));return k(r),r}function N(e){let t=e.split(`.`);if(t.length!==3)throw new x.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let n=t[1].replace(/-/g,`+`).replace(/_/g,`/`),r=n.padEnd(n.length+(4-n.length%4)%4,`=`);return JSON.parse(Buffer.from(r,`base64`).toString(`utf8`))}function P(e,t=0){return e.exp*1e3<Date.now()+t}0&&(s.exports={assertVercelOidcTokenResponse:k,findProjectInfo:A,getTokenPayload:N,getVercelDataDir:E,getVercelOidcToken:O,getVercelToken:D,isExpired:P,loadToken:M,saveToken:j})}));export{r as n,n as r,s as t};
|
|
4
|
+
//# sourceMappingURL=token-util-D_QRVbKm.mjs.map
|