@arkenv/cli 0.0.6 → 0.0.8

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/index.cjs CHANGED
@@ -1,96 +1,90 @@
1
1
  #!/usr/bin/env node
2
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`node:util`),u=require(`node:process`);u=c(u,1);let d=require(`node:readline`);d=c(d,1);let f=require(`node:tty`),p=require(`node:fs`);p=c(p,1);let m=require(`node:path`);m=c(m,1);let h=require(`node:child_process`),g=require(`dedent`);g=c(g,1);let _=require(`node:fs/promises`);_=c(_,1);let v=require(`magicast`),y=require(`jsonc-parser`);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,te=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,C=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,ne=/\t{1,1000}/y,w=/[\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,re=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,ie=/\p{M}+/gu,T={limit:1/0,ellipsis:``},ae=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?ae(i,T,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[re,l],[ee,0],[te,o],[ne,s],[w,c],[C,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,E=0,D=0,O=0;outer:for(;;){if(E>y||p>=m&&p>f){let t=e.slice(y,E)||e.slice(f,p);h=0;for(let e of t.replaceAll(ie,``)){let t=e.codePointAt(0)||0;if(O=x(t)?2:S(t)?u:l,D+O>v&&(_=Math.min(_,Math.max(y,f)+h)),D+O>r){g=!0;break outer}h+=e.length,D+=O}y=E=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===C?b(e.slice(p,n.lastIndex)):n===w?1:n.lastIndex-p,O=h*i,D+O>v&&(_=Math.min(_,p+Math.floor((v-D)/i))),D+O>r){g=!0;break outer}D+=O,y=f,E=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:D,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},E={limit:1/0,ellipsis:``,ellipsisWidth:0},D=(e,t={})=>ae(e,E,t).width,O=`]8;;`,oe=RegExp(`(?:\\[(?<code>\\d+)m|\\${O}(?<uri>.*))`,`y`),se=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},ce=e=>`[${e}m`,le=e=>`${O}${e}`,k=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:D(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=D(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(O,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())},ue=e=>{let t=e.split(` `),n=t.length;for(;n&&!D(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},de=(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=D(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=D(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(``),k(s,r,t),c=D(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){k(s,r,t),c=D(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){k(s,r,t),c=D(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>ue(e)));let l=s.join(`
3
- `),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===`›`){oe.lastIndex=e+1;let t=oe.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]===`
4
- `){a&&(r+=le(``));let e=i?se(i):void 0;i&&e&&(r+=ce(e))}else t===`
5
- `&&(i&&se(i)&&(r+=ce(i)),a&&(r+=le(a)))}return r},fe=/\r?\n/;function A(e,t,n){return String(e).normalize().split(fe).map(e=>de(e,t,n)).join(`
6
- `)}var j=o(((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 M(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?M(a,t<0?-1:1,n):a}const N={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 P(e,t){if(typeof e==`string`)return N.aliases.get(e)===t;for(let n of e)if(n!==void 0&&P(n,t))return!0;return!1}function pe(e,t){if(e===t)return;let n=e.split(`
2
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let u=require(`node:fs/promises`);u=l(u,1);let d=require(`node:path`);d=l(d,1);let f=require(`dedent`);f=l(f,1);let p=require(`node:util`),m=require(`node:process`);m=l(m,1);let h=require(`node:readline`);h=l(h,1);let g=require(`node:tty`),_=require(`node:fs`);_=l(_,1);let v=require(`node:child_process`),y=require(`magicast`),b=require(`jsonc-parser`);var x=s({safeAppend:()=>ee});const S=`// @arkenv-types`;async function ee(e,t,n){try{let r=await u.default.readFile(e,`utf-8`),i=n===`vite`?`ImportMetaEnvAugmented`:`ProcessEnvAugmented`;if(r.includes(S)||r.includes(i))return!1;let a=d.default.dirname(e),o=d.default.relative(a,t).replace(/\.(ts|js|tsx|jsx)$/,``).split(d.default.sep).join(`/`),s=o.startsWith(`.`)?o:`./${o}`,c=n===`vite`?te(s):C(s),l=r.endsWith(`
3
+ `)?``:`
4
+ `;return await u.default.appendFile(e,`${l}\n${S}\n${c}\n`,`utf-8`),!0}catch(t){return console.error(`Failed to append to ${e}:`,t),!1}}function te(e){return f.default`
5
+ type ImportMetaEnvAugmented = import("@arkenv/vite-plugin").ImportMetaEnvAugmented<
6
+ typeof import("${e}").Env
7
+ >;
8
+
9
+ interface ImportMetaEnv extends ImportMetaEnvAugmented {}
10
+
11
+ interface ImportMeta {
12
+ readonly env: ImportMetaEnv;
13
+ }
14
+ `}function C(e){return f.default`
15
+ type ProcessEnvAugmented = import("@arkenv/bun-plugin").ProcessEnvAugmented<
16
+ typeof import("${e}").Env
17
+ >;
18
+
19
+ declare namespace NodeJS {
20
+ interface ProcessEnv extends ProcessEnvAugmented {}
21
+ }
22
+ `}var w=l(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),T=class{info(e){process.stderr.write(`${w.default.blue(`ℹ ${e}`)}\n`)}warn(e){process.stderr.write(`${w.default.yellow(`⚠ ${e}`)}\n`)}error(e){process.stderr.write(`${w.default.red(`✘ ${e}`)}\n`)}success(e){process.stderr.write(`${w.default.green(`✔ ${e}`)}\n`)}step(e){process.stderr.write(`○ ${e}\n`)}note(e,t){process.stderr.write(`${w.default.dim(`○ ${t?`${t}: `:``}${e}`)}\n`)}log(e){process.stderr.write(`${e}\n`)}spinner(){return{start:e=>process.stderr.write(`${w.default.dim(`○ ${e}...`)}\n`),stop:e=>process.stderr.write(`${w.default.green(`✔ ${e}`)}\n`),message:e=>process.stderr.write(`${w.default.dim(`○ ${e}...`)}\n`)}}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}cancel(e){this.json({status:`cancelled`,message:e}),process.stdout.write(``,()=>process.exit(1))}fatal(e,t){this.json({status:`error`,details:{message:e,error:t instanceof Error?t.message:t?String(t):void 0}}),process.stdout.write(``,()=>process.exit(1))}finish(e,t){this.json({status:`success`,message:e,details:t})}async flush(){return new Promise(e=>{process.stdout.write(``,()=>e())})}},ne=class{stripAnsi(e){return e.replace(/\x1B\[[0-9;]*[JKmsu]/g,``)}info(e){}warn(e){}error(e){}success(e){}step(e){}note(e,t){}log(e){process.stdout.write(`${this.stripAnsi(e)}\n`)}spinner(){return{start:e=>{},stop:e=>{},message:e=>{}}}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}cancel(e){process.stderr.write(`✘ Cancelled: ${e}\n`,()=>{process.exit(1)})}fatal(e,t){process.stderr.write(`✘ Fatal: ${e}\n`),t&&process.stderr.write(`${t instanceof Error?t.stack??t.message:String(t)}\n`),process.stderr.write(``,()=>{process.exit(1)})}finish(e,t){}async flush(){return new Promise(e=>{process.stderr.write(``,()=>e())})}};const re=(()=>{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}})(),E=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,ie=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,ae=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,oe=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,se=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,ce=/\t{1,1000}/y,le=/[\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,ue=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,de=/\p{M}+/gu,fe={limit:1/0,ellipsis:``},pe=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?pe(i,fe,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[ue,l],[ae,0],[oe,o],[ce,s],[le,c],[se,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,S=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(de,``)){let t=e.codePointAt(0)||0;if(S=E(t)?2:ie(t)?u:l,x+S>v&&(_=Math.min(_,Math.max(y,f)+h)),x+S>r){g=!0;break outer}h+=e.length,x+=S}y=b=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===se?re(e.slice(p,n.lastIndex)):n===le?1:n.lastIndex-p,S=h*i,x+S>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+S>r){g=!0;break outer}x+=S,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},me={limit:1/0,ellipsis:``,ellipsisWidth:0},D=(e,t={})=>pe(e,me,t).width,O=`]8;;`,he=RegExp(`(?:\\[(?<code>\\d+)m|\\${O}(?<uri>.*))`,`y`),ge=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},_e=e=>`[${e}m`,ve=e=>`${O}${e}`,ye=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:D(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=D(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(O,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())},be=e=>{let t=e.split(` `),n=t.length;for(;n&&!D(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},xe=(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=D(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=D(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(``),ye(s,r,t),c=D(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){ye(s,r,t),c=D(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){ye(s,r,t),c=D(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>be(e)));let l=s.join(`
23
+ `),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===`›`){he.lastIndex=e+1;let t=he.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]===`
24
+ `){a&&(r+=ve(``));let e=i?ge(i):void 0;i&&e&&(r+=_e(e))}else t===`
25
+ `&&(i&&ge(i)&&(r+=_e(i)),a&&(r+=ve(a)))}return r},Se=/\r?\n/;function k(e,t,n){return String(e).normalize().split(Se).map(e=>xe(e,t,n)).join(`
26
+ `)}var A=o(((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 j(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?j(a,t<0?-1:1,n):a}const M={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 N(e,t){if(typeof e==`string`)return M.aliases.get(e)===t;for(let n of e)if(n!==void 0&&N(n,t))return!0;return!1}function Ce(e,t){if(e===t)return;let n=e.split(`
7
27
  `),r=t.split(`
8
- `),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 me=globalThis.process.platform.startsWith(`win`),F=Symbol(`clack:cancel`);function I(e){return e===F}function L(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function he({input:e=u.stdin,output:t=u.stdout,overwrite:n=!0,hideCursor:r=!0}={}){let i=d.createInterface({input:e,output:t,prompt:``,tabSize:1});d.emitKeypressEvents(e,i),e instanceof f.ReadStream&&e.isTTY&&e.setRawMode(!0);let a=(i,{name:o,sequence:s})=>{if(P([String(i),o,s],`cancel`)){r&&t.write(j.cursor.show),process.exit(0);return}if(!n)return;let c=o===`return`?0:-1,l=o===`return`?-1:0;d.moveCursor(t,c,l,()=>{d.clearLine(t,1,()=>{e.once(`keypress`,a)})})};return r&&t.write(j.cursor.hide),e.once(`keypress`,a),()=>{e.off(`keypress`,a),r&&t.write(j.cursor.show),e instanceof f.ReadStream&&e.isTTY&&!me&&e.setRawMode(!1),i.terminal=!1,i.close()}}const R=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,ge=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function z(e,t,n,r=n,i){return A(t,R(e??u.stdout)-n.length,{hard:!0,trim:!1}).split(`
28
+ `),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 we=globalThis.process.platform.startsWith(`win`),Te=Symbol(`clack:cancel`);function P(e){return e===Te}function F(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function Ee({input:e=m.stdin,output:t=m.stdout,overwrite:n=!0,hideCursor:r=!0}={}){let i=h.createInterface({input:e,output:t,prompt:``,tabSize:1});h.emitKeypressEvents(e,i),e instanceof g.ReadStream&&e.isTTY&&e.setRawMode(!0);let a=(i,{name:o,sequence:s})=>{if(N([String(i),o,s],`cancel`)){r&&t.write(A.cursor.show),process.exit(0);return}if(!n)return;let c=o===`return`?0:-1,l=o===`return`?-1:0;h.moveCursor(t,c,l,()=>{h.clearLine(t,1,()=>{e.once(`keypress`,a)})})};return r&&t.write(A.cursor.hide),e.once(`keypress`,a),()=>{e.off(`keypress`,a),r&&t.write(A.cursor.show),e instanceof g.ReadStream&&e.isTTY&&!we&&e.setRawMode(!1),i.terminal=!1,i.close()}}const I=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,De=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function L(e,t,n,r=n,i){return k(t,I(e??m.stdout)-n.length,{hard:!0,trim:!1}).split(`
9
29
  `).map((e,t)=>{let a=i?i(e,t):e;return`${t===0?r:n}${a}`}).join(`
10
- `)}let B=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=u.stdin,output:r=u.stdout,render:i,signal:a,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,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(F);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=d.default.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),L(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(j.cursor.show),this.output.off(`resize`,this.render),L(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(j.cursor.show),this.output.off(`resize`,this.render),L(this.input,!1),e(F)})})}_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&&N.aliases.has(t.name)&&this.emit(`cursor`,N.aliases.get(t.name)),N.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?.toLowerCase(),t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=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`)}P([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(`
11
- `),L(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=A(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
12
- `).length-1;this.output.write(j.cursor.move(-999,e*-1))}render(){let e=A(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(j.cursor.hide);else{let t=pe(this._prevFrame,e),n=ge(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(j.cursor.move(0,a-i)),this.output.write(j.erase.lines(1));let t=e.split(`
13
- `);this.output.write(t[a]),this._prevFrame=e,this.output.write(j.cursor.move(0,t.length-a-1));return}else if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(j.cursor.move(0,e))}this.output.write(j.erase.down());let t=e.split(`
30
+ `)}let R=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=m.stdin,output:r=m.stdout,render:i,signal:a,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,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(Te);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=h.default.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),F(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(A.cursor.show),this.output.off(`resize`,this.render),F(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(A.cursor.show),this.output.off(`resize`,this.render),F(this.input,!1),e(Te)})})}_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&&M.aliases.has(t.name)&&this.emit(`cursor`,M.aliases.get(t.name)),M.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?.toLowerCase(),t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=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`)}N([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(`
31
+ `),F(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=k(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
32
+ `).length-1;this.output.write(A.cursor.move(-999,e*-1))}render(){let e=k(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(A.cursor.hide);else{let t=Ce(this._prevFrame,e),n=De(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(A.cursor.move(0,a-i)),this.output.write(A.erase.lines(1));let t=e.split(`
33
+ `);this.output.write(t[a]),this._prevFrame=e,this.output.write(A.cursor.move(0,t.length-a-1));return}else if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(A.cursor.move(0,e))}this.output.write(A.erase.down());let t=e.split(`
14
34
  `).slice(a);this.output.write(t.join(`
15
- `)),this._prevFrame=e;return}}this.output.write(j.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};var _e=class extends B{get cursor(){return+!this.value}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on(`userInput`,()=>{this.value=this._value}),this.on(`confirm`,e=>{this.output.write(j.cursor.move(0,-1)),this.value=e,this.state=`submit`,this.close()}),this.on(`cursor`,()=>{this.value=!this.value})}},ve=class extends B{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.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?M(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=M(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=M(this.cursor,1,this.options);break}this.changeValue()})}},ye=class extends B{get userInputWithCursor(){if(this.state===`submit`)return this.userInput;let e=this.userInput;if(this.cursor>=e.length)return`${this.userInput}\u2588`;let t=e.slice(0,this.cursor),[n,...r]=e.slice(this.cursor);return`${t}${(0,l.styleText)(`inverse`,n)}${r.join(``)}`}get cursor(){return this._cursor}constructor(e){super({...e,initialUserInput:e.initialUserInput??e.initialValue}),this.on(`userInput`,e=>{this._setValue(e)}),this.on(`finalize`,()=>{this.value||=e.defaultValue,this.value===void 0&&(this.value=``)})}};function be(){return u.default.platform===`win32`?!!u.default.env.CI||!!u.default.env.WT_SESSION||!!u.default.env.TERMINUS_SUBLIME||u.default.env.ConEmuTask===`{cmd::Cmder}`||u.default.env.TERM_PROGRAM===`Terminus-Sublime`||u.default.env.TERM_PROGRAM===`vscode`||u.default.env.TERM===`xterm-256color`||u.default.env.TERM===`alacritty`||u.default.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:u.default.env.TERM!==`linux`}const V=be(),xe=()=>process.env.CI===`true`,H=(e,t)=>V?e:t,Se=H(`◆`,`*`),Ce=H(`■`,`x`),we=H(`▲`,`x`),U=H(`◇`,`o`),W=H(`│`,`|`),G=H(`└`,`—`),Te=H(`●`,`>`),K=H(`○`,` `),Ee=H(`─`,`-`),De=H(`╮`,`+`),Oe=H(`├`,`+`),ke=H(`╯`,`+`),Ae=H(`╰`,`+`),je=H(`●`,`•`),Me=H(`◆`,`*`),Ne=H(`▲`,`!`),Pe=H(`■`,`x`),Fe=e=>{switch(e){case`initial`:case`active`:return(0,l.styleText)(`cyan`,Se);case`cancel`:return(0,l.styleText)(`red`,Ce);case`error`:return(0,l.styleText)(`yellow`,we);case`submit`:return(0,l.styleText)(`green`,U)}},Ie=e=>{switch(e){case`initial`:case`active`:return(0,l.styleText)(`cyan`,W);case`cancel`:return(0,l.styleText)(`red`,W);case`error`:return(0,l.styleText)(`yellow`,W);case`submit`:return(0,l.styleText)(`green`,W)}},Le=(e,t,n,r,i)=>{let a=t,o=0;for(let t=n;t<r;t++){let n=e[t];if(a-=n.length,o++,a<=i)break}return{lineCount:a,removals:o}},Re=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=1/0,columnPadding:a=0,rowPadding:o=4})=>{let s=R(r)-a,c=ge(r),u=(0,l.styleText)(`dim`,`...`),d=Math.max(c-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=A(n(t[r],r===e),s,{hard:!0,trim:!1}).split(`
16
- `);_.push(i),v+=i.length}if(v>d){let t=0,n=0,r=v,i=e-y,a=(e,t)=>Le(_,r,e,t,d);m?({lineCount:r,removals:t}=a(0,i),r>d&&({lineCount:r,removals:n}=a(i+1,_.length))):({lineCount:r,removals:n}=a(i+1,_.length),r>d&&({lineCount:r,removals:t}=a(0,i))),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},q=e=>{let t=e.active??`Yes`,n=e.inactive??`No`;return new _e({active:t,inactive:n,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let r=e.withGuide??N.withGuide,i=`${Fe(this.state)} `,a=r?`${(0,l.styleText)(`gray`,W)} `:``,o=z(e.output,e.message,a,i),s=`${r?`${(0,l.styleText)(`gray`,W)}
35
+ `)),this._prevFrame=e;return}}this.output.write(A.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};var Oe=class extends R{get cursor(){return+!this.value}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on(`userInput`,()=>{this.value=this._value}),this.on(`confirm`,e=>{this.output.write(A.cursor.move(0,-1)),this.value=e,this.state=`submit`,this.close()}),this.on(`cursor`,()=>{this.value=!this.value})}},ke=class extends R{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.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?j(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=j(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=j(this.cursor,1,this.options);break}this.changeValue()})}},Ae=class extends R{get userInputWithCursor(){if(this.state===`submit`)return this.userInput;let e=this.userInput;if(this.cursor>=e.length)return`${this.userInput}\u2588`;let t=e.slice(0,this.cursor),[n,...r]=e.slice(this.cursor);return`${t}${(0,p.styleText)(`inverse`,n)}${r.join(``)}`}get cursor(){return this._cursor}constructor(e){super({...e,initialUserInput:e.initialUserInput??e.initialValue}),this.on(`userInput`,e=>{this._setValue(e)}),this.on(`finalize`,()=>{this.value||=e.defaultValue,this.value===void 0&&(this.value=``)})}};function je(){return m.default.platform===`win32`?!!m.default.env.CI||!!m.default.env.WT_SESSION||!!m.default.env.TERMINUS_SUBLIME||m.default.env.ConEmuTask===`{cmd::Cmder}`||m.default.env.TERM_PROGRAM===`Terminus-Sublime`||m.default.env.TERM_PROGRAM===`vscode`||m.default.env.TERM===`xterm-256color`||m.default.env.TERM===`alacritty`||m.default.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:m.default.env.TERM!==`linux`}const z=je(),Me=()=>process.env.CI===`true`,B=(e,t)=>z?e:t,Ne=B(`◆`,`*`),Pe=B(`■`,`x`),Fe=B(`▲`,`x`),V=B(`◇`,`o`),H=B(`│`,`|`),U=B(`└`,`—`),W=B(`●`,`>`),G=B(`○`,` `),Ie=B(`─`,`-`),Le=B(`╮`,`+`),Re=B(`├`,`+`),ze=B(`╯`,`+`),Be=B(`╰`,`+`),Ve=B(`●`,`•`),He=B(`◆`,`*`),Ue=B(`▲`,`!`),We=B(`■`,`x`),K=e=>{switch(e){case`initial`:case`active`:return(0,p.styleText)(`cyan`,Ne);case`cancel`:return(0,p.styleText)(`red`,Pe);case`error`:return(0,p.styleText)(`yellow`,Fe);case`submit`:return(0,p.styleText)(`green`,V)}},Ge=e=>{switch(e){case`initial`:case`active`:return(0,p.styleText)(`cyan`,H);case`cancel`:return(0,p.styleText)(`red`,H);case`error`:return(0,p.styleText)(`yellow`,H);case`submit`:return(0,p.styleText)(`green`,H)}},Ke=(e,t,n,r,i)=>{let a=t,o=0;for(let t=n;t<r;t++){let n=e[t];if(a-=n.length,o++,a<=i)break}return{lineCount:a,removals:o}},qe=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=1/0,columnPadding:a=0,rowPadding:o=4})=>{let s=I(r)-a,c=De(r),l=(0,p.styleText)(`dim`,`...`),u=Math.max(c-o,0),d=Math.max(Math.min(i,u),5),f=0;e>=d-3&&(f=Math.max(Math.min(e-d+3,t.length-d),0));let m=d<t.length&&f>0,h=d<t.length&&f+d<t.length,g=Math.min(f+d,t.length),_=[],v=0;m&&v++,h&&v++;let y=f+ +!!m,b=g-+!!h;for(let r=y;r<b;r++){let i=k(n(t[r],r===e),s,{hard:!0,trim:!1}).split(`
36
+ `);_.push(i),v+=i.length}if(v>u){let t=0,n=0,r=v,i=e-y,a=(e,t)=>Ke(_,r,e,t,u);m?({lineCount:r,removals:t}=a(0,i),r>u&&({lineCount:r,removals:n}=a(i+1,_.length))):({lineCount:r,removals:n}=a(i+1,_.length),r>u&&({lineCount:r,removals:t}=a(0,i))),t>0&&(m=!0,_.splice(0,t)),n>0&&(h=!0,_.splice(_.length-n,n))}let x=[];m&&x.push(l);for(let e of _)for(let t of e)x.push(t);return h&&x.push(l),x},q=e=>{let t=e.active??`Yes`,n=e.inactive??`No`;return new Oe({active:t,inactive:n,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let r=e.withGuide??M.withGuide,i=`${K(this.state)} `,a=r?`${(0,p.styleText)(`gray`,H)} `:``,o=L(e.output,e.message,a,i),s=`${r?`${(0,p.styleText)(`gray`,H)}
17
37
  `:``}${o}
18
- `,c=this.value?t:n;switch(this.state){case`submit`:return`${s}${r?`${(0,l.styleText)(`gray`,W)} `:``}${(0,l.styleText)(`dim`,c)}`;case`cancel`:return`${s}${r?`${(0,l.styleText)(`gray`,W)} `:``}${(0,l.styleText)([`strikethrough`,`dim`],c)}${r?`
19
- ${(0,l.styleText)(`gray`,W)}`:``}`;default:{let i=r?`${(0,l.styleText)(`cyan`,W)} `:``,a=r?(0,l.styleText)(`cyan`,G):``;return`${s}${i}${this.value?`${(0,l.styleText)(`green`,Te)} ${t}`:`${(0,l.styleText)(`dim`,K)} ${(0,l.styleText)(`dim`,t)}`}${e.vertical?r?`
20
- ${(0,l.styleText)(`cyan`,W)} `:`
21
- `:` ${(0,l.styleText)(`dim`,`/`)} `}${this.value?`${(0,l.styleText)(`dim`,K)} ${(0,l.styleText)(`dim`,n)}`:`${(0,l.styleText)(`green`,Te)} ${n}`}
38
+ `,c=this.value?t:n;switch(this.state){case`submit`:return`${s}${r?`${(0,p.styleText)(`gray`,H)} `:``}${(0,p.styleText)(`dim`,c)}`;case`cancel`:return`${s}${r?`${(0,p.styleText)(`gray`,H)} `:``}${(0,p.styleText)([`strikethrough`,`dim`],c)}${r?`
39
+ ${(0,p.styleText)(`gray`,H)}`:``}`;default:{let i=r?`${(0,p.styleText)(`cyan`,H)} `:``,a=r?(0,p.styleText)(`cyan`,U):``;return`${s}${i}${this.value?`${(0,p.styleText)(`green`,W)} ${t}`:`${(0,p.styleText)(`dim`,G)} ${(0,p.styleText)(`dim`,t)}`}${e.vertical?r?`
40
+ ${(0,p.styleText)(`cyan`,H)} `:`
41
+ `:` ${(0,p.styleText)(`dim`,`/`)} `}${this.value?`${(0,p.styleText)(`dim`,G)} ${(0,p.styleText)(`dim`,n)}`:`${(0,p.styleText)(`green`,W)} ${n}`}
22
42
  ${a}
23
- `}}}}).prompt()},ze=async(e,t)=>{let n={},r=Object.keys(e);for(let i of r){let r=e[i],a=await r({results:n})?.catch(e=>{throw e});if(typeof t?.onCancel==`function`&&I(a)){n[i]=`canceled`,t.onCancel({results:n});continue}n[i]=a}return n},J={message:(e=[],{symbol:t=(0,l.styleText)(`gray`,W),secondarySymbol:n=(0,l.styleText)(`gray`,W),output:r=process.stdout,spacing:i=1,withGuide:a}={})=>{let o=[],s=a??N.withGuide,c=s?n:``,u=s?`${t} `:``,d=s?`${n} `:``;for(let e=0;e<i;e++)o.push(c);let f=Array.isArray(e)?e:e.split(`
24
- `);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(`
43
+ `}}}}).prompt()},Je=async(e,t)=>{let n={},r=Object.keys(e);for(let i of r){let r=e[i],a=await r({results:n})?.catch(e=>{throw e});if(typeof t?.onCancel==`function`&&P(a)){n[i]=`canceled`,t.onCancel({results:n});continue}n[i]=a}return n},J={message:(e=[],{symbol:t=(0,p.styleText)(`gray`,H),secondarySymbol:n=(0,p.styleText)(`gray`,H),output:r=process.stdout,spacing:i=1,withGuide:a}={})=>{let o=[],s=a??M.withGuide,c=s?n:``,l=s?`${t} `:``,u=s?`${n} `:``;for(let e=0;e<i;e++)o.push(c);let d=Array.isArray(e)?e:e.split(`
44
+ `);if(d.length>0){let[e,...r]=d;e.length>0?o.push(`${l}${e}`):o.push(s?t:``);for(let e of r)e.length>0?o.push(`${u}${e}`):o.push(s?n:``)}r.write(`${o.join(`
25
45
  `)}
26
- `)},info:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`blue`,je)})},success:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`green`,Me)})},step:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`green`,U)})},warn:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`yellow`,Ne)})},warning:(e,t)=>{J.warn(e,t)},error:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`red`,Pe)})}},Y=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??N.withGuide?`${(0,l.styleText)(`gray`,G)} `:``;n.write(`${r}${(0,l.styleText)(`red`,e)}
27
-
28
- `)},Be=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??N.withGuide?`${(0,l.styleText)(`gray`,W)}
29
- ${(0,l.styleText)(`gray`,G)} `:``;n.write(`${r}${e}
30
-
31
- `)},Ve=e=>(0,l.styleText)(`dim`,e),He=(e,t,n)=>{let r={hard:!0,trim:!1},i=A(e,t,r).split(`
32
- `),a=i.reduce((e,t)=>Math.max(D(t),e),0);return A(e,t-(i.map(n).reduce((e,t)=>Math.max(D(t),e),0)-a),r)},Ue=(e=``,t=``,n)=>{let r=n?.output??u.default.stdout,i=n?.withGuide??N.withGuide,a=n?.format??Ve,o=[``,...He(e,R(r)-6,a).split(`
33
- `).map(a),``],s=D(t),c=Math.max(o.reduce((e,t)=>{let n=D(t);return n>e?n:e},0),s)+2,d=o.map(e=>`${(0,l.styleText)(`gray`,W)} ${e}${` `.repeat(c-D(e))}${(0,l.styleText)(`gray`,W)}`).join(`
34
- `),f=i?`${(0,l.styleText)(`gray`,W)}
35
- `:``,p=i?Oe:Ae;r.write(`${f}${(0,l.styleText)(`green`,U)} ${(0,l.styleText)(`reset`,t)} ${(0,l.styleText)(`gray`,Ee.repeat(Math.max(c-s-1,1))+De)}
36
- ${d}
37
- ${(0,l.styleText)(`gray`,p+Ee.repeat(c+2)+ke)}
38
- `)},We=e=>(0,l.styleText)(`magenta`,e),Ge=({indicator:e=`dots`,onCancel:t,output:n=process.stdout,cancelMessage:r,errorMessage:i,frames:a=V?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:o=V?80:120,signal:s,...c}={})=>{let u=xe(),d,f,p=!1,m=!1,h=``,g,_=performance.now(),v=R(n),y=c?.styleFrame??We,b=e=>{let n=e>1?i??N.messages.error:r??N.messages.cancel;m=e===1,p&&(T(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)},te=()=>{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)},C=()=>{if(g===void 0)return;u&&n.write(`
39
- `);let e=A(g,v,{hard:!0,trim:!1}).split(`
40
- `);e.length>1&&n.write(j.cursor.up(e.length-1)),n.write(j.cursor.to(0)),n.write(j.erase.down())},ne=e=>e.replace(/\.+$/,``),w=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]`},re=c.withGuide??N.withGuide,ie=(t=``)=>{p=!0,d=he({output:n}),h=ne(t),_=performance.now(),re&&n.write(`${(0,l.styleText)(`gray`,W)}
41
- `);let r=0,i=0;ee(),f=setInterval(()=>{if(u&&h===g)return;C(),g=h;let t=y(a[r]),o;if(u)o=`${t} ${h}...`;else if(e===`timer`)o=`${t} ${h} ${w(_)}`;else{let e=`.`.repeat(Math.floor(i)).slice(0,3);o=`${t} ${h}${e}`}let s=A(o,v,{hard:!0,trim:!1});n.write(s),r=r+1<a.length?r+1:0,i=i<4?i+.125:0},o)},T=(t=``,r=0,i=!1)=>{if(!p)return;p=!1,clearInterval(f),C();let a=r===0?(0,l.styleText)(`green`,U):r===1?(0,l.styleText)(`red`,Ce):(0,l.styleText)(`red`,we);h=t??h,i||(e===`timer`?n.write(`${a} ${h} ${w(_)}
46
+ `)},info:(e,t)=>{J.message(e,{...t,symbol:(0,p.styleText)(`blue`,Ve)})},success:(e,t)=>{J.message(e,{...t,symbol:(0,p.styleText)(`green`,He)})},step:(e,t)=>{J.message(e,{...t,symbol:(0,p.styleText)(`green`,V)})},warn:(e,t)=>{J.message(e,{...t,symbol:(0,p.styleText)(`yellow`,Ue)})},warning:(e,t)=>{J.warn(e,t)},error:(e,t)=>{J.message(e,{...t,symbol:(0,p.styleText)(`red`,We)})}},Ye=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??M.withGuide?`${(0,p.styleText)(`gray`,H)}
47
+ ${(0,p.styleText)(`gray`,U)} `:``;n.write(`${r}${e}
48
+
49
+ `)},Xe=e=>(0,p.styleText)(`dim`,e),Ze=(e,t,n)=>{let r={hard:!0,trim:!1},i=k(e,t,r).split(`
50
+ `),a=i.reduce((e,t)=>Math.max(D(t),e),0);return k(e,t-(i.map(n).reduce((e,t)=>Math.max(D(t),e),0)-a),r)},Qe=(e=``,t=``,n)=>{let r=n?.output??m.default.stdout,i=n?.withGuide??M.withGuide,a=n?.format??Xe,o=[``,...Ze(e,I(r)-6,a).split(`
51
+ `).map(a),``],s=D(t),c=Math.max(o.reduce((e,t)=>{let n=D(t);return n>e?n:e},0),s)+2,l=o.map(e=>`${(0,p.styleText)(`gray`,H)} ${e}${` `.repeat(c-D(e))}${(0,p.styleText)(`gray`,H)}`).join(`
52
+ `),u=i?`${(0,p.styleText)(`gray`,H)}
53
+ `:``,d=i?Re:Be;r.write(`${u}${(0,p.styleText)(`green`,V)} ${(0,p.styleText)(`reset`,t)} ${(0,p.styleText)(`gray`,Ie.repeat(Math.max(c-s-1,1))+Le)}
54
+ ${l}
55
+ ${(0,p.styleText)(`gray`,d+Ie.repeat(c+2)+ze)}
56
+ `)},$e=e=>(0,p.styleText)(`magenta`,e),et=({indicator:e=`dots`,onCancel:t,output:n=process.stdout,cancelMessage:r,errorMessage:i,frames:a=z?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:o=z?80:120,signal:s,...c}={})=>{let l=Me(),u,d,f=!1,m=!1,h=``,g,_=performance.now(),v=I(n),y=c?.styleFrame??$e,b=e=>{let n=e>1?i??M.messages.error:r??M.messages.cancel;m=e===1,f&&(E(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)},te=()=>{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)},C=()=>{if(g===void 0)return;l&&n.write(`
57
+ `);let e=k(g,v,{hard:!0,trim:!1}).split(`
58
+ `);e.length>1&&n.write(A.cursor.up(e.length-1)),n.write(A.cursor.to(0)),n.write(A.erase.down())},w=e=>e.replace(/\.+$/,``),T=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]`},ne=c.withGuide??M.withGuide,re=(t=``)=>{f=!0,u=Ee({output:n}),h=w(t),_=performance.now(),ne&&n.write(`${(0,p.styleText)(`gray`,H)}
59
+ `);let r=0,i=0;ee(),d=setInterval(()=>{if(l&&h===g)return;C(),g=h;let t=y(a[r]),o;if(l)o=`${t} ${h}...`;else if(e===`timer`)o=`${t} ${h} ${T(_)}`;else{let e=`.`.repeat(Math.floor(i)).slice(0,3);o=`${t} ${h}${e}`}let s=k(o,v,{hard:!0,trim:!1});n.write(s),r=r+1<a.length?r+1:0,i=i<4?i+.125:0},o)},E=(t=``,r=0,i=!1)=>{if(!f)return;f=!1,clearInterval(d),C();let a=r===0?(0,p.styleText)(`green`,V):r===1?(0,p.styleText)(`red`,Pe):(0,p.styleText)(`red`,Fe);h=t??h,i||(e===`timer`?n.write(`${a} ${h} ${T(_)}
42
60
  `):n.write(`${a} ${h}
43
- `)),te(),d()};return{start:ie,stop:(e=``)=>T(e,0),message:(e=``)=>{h=ne(e??h)},cancel:(e=``)=>T(e,1),error:(e=``)=>T(e,2),clear:()=>T(``,0,!0),get isCancelled(){return m}}},X=(e,t)=>e.includes(`
61
+ `)),te(),u()};return{start:re,stop:(e=``)=>E(e,0),message:(e=``)=>{h=w(e??h)},cancel:(e=``)=>E(e,1),error:(e=``)=>E(e,2),clear:()=>E(``,0,!0),get isCancelled(){return m}}},Y=(e,t)=>e.includes(`
44
62
  `)?e.split(`
45
63
  `).map(e=>t(e)).join(`
46
- `):t(e),Ke=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`disabled`:return`${(0,l.styleText)(`gray`,K)} ${X(n,e=>(0,l.styleText)(`gray`,e))}${e.hint?` ${(0,l.styleText)(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${X(n,e=>(0,l.styleText)(`dim`,e))}`;case`active`:return`${(0,l.styleText)(`green`,Te)} ${n}${e.hint?` ${(0,l.styleText)(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${X(n,e=>(0,l.styleText)([`strikethrough`,`dim`],e))}`;default:return`${(0,l.styleText)(`dim`,K)} ${X(n,e=>(0,l.styleText)(`dim`,e))}`}};return new ve({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let n=e.withGuide??N.withGuide,r=`${Fe(this.state)} `,i=`${Ie(this.state)} `,a=z(e.output,e.message,i,r),o=`${n?`${(0,l.styleText)(`gray`,W)}
64
+ `):t(e),tt=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`disabled`:return`${(0,p.styleText)(`gray`,G)} ${Y(n,e=>(0,p.styleText)(`gray`,e))}${e.hint?` ${(0,p.styleText)(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${Y(n,e=>(0,p.styleText)(`dim`,e))}`;case`active`:return`${(0,p.styleText)(`green`,W)} ${n}${e.hint?` ${(0,p.styleText)(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${Y(n,e=>(0,p.styleText)([`strikethrough`,`dim`],e))}`;default:return`${(0,p.styleText)(`dim`,G)} ${Y(n,e=>(0,p.styleText)(`dim`,e))}`}};return new ke({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let n=e.withGuide??M.withGuide,r=`${K(this.state)} `,i=`${Ge(this.state)} `,a=L(e.output,e.message,i,r),o=`${n?`${(0,p.styleText)(`gray`,H)}
47
65
  `:``}${a}
48
- `;switch(this.state){case`submit`:{let r=n?`${(0,l.styleText)(`gray`,W)} `:``;return`${o}${z(e.output,t(this.options[this.cursor],`selected`),r)}`}case`cancel`:{let r=n?`${(0,l.styleText)(`gray`,W)} `:``;return`${o}${z(e.output,t(this.options[this.cursor],`cancelled`),r)}${n?`
49
- ${(0,l.styleText)(`gray`,W)}`:``}`}default:{let r=n?`${(0,l.styleText)(`cyan`,W)} `:``,i=n?(0,l.styleText)(`cyan`,G):``,a=o.split(`
50
- `).length,s=n?2:1;return`${o}${r}${Re({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:r.length,rowPadding:a+s,style:(e,n)=>t(e,e.disabled?`disabled`:n?`active`:`inactive`)}).join(`
66
+ `;switch(this.state){case`submit`:{let r=n?`${(0,p.styleText)(`gray`,H)} `:``;return`${o}${L(e.output,t(this.options[this.cursor],`selected`),r)}`}case`cancel`:{let r=n?`${(0,p.styleText)(`gray`,H)} `:``;return`${o}${L(e.output,t(this.options[this.cursor],`cancelled`),r)}${n?`
67
+ ${(0,p.styleText)(`gray`,H)}`:``}`}default:{let r=n?`${(0,p.styleText)(`cyan`,H)} `:``,i=n?(0,p.styleText)(`cyan`,U):``,a=o.split(`
68
+ `).length,s=n?2:1;return`${o}${r}${qe({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:r.length,rowPadding:a+s,style:(e,n)=>t(e,e.disabled?`disabled`:n?`active`:`inactive`)}).join(`
51
69
  ${r}`)}
52
70
  ${i}
53
- `}}}}).prompt()},qe=`${(0,l.styleText)(`gray`,W)} `,Z={message:async(e,{symbol:t=(0,l.styleText)(`gray`,W)}={})=>{process.stdout.write(`${(0,l.styleText)(`gray`,W)}
71
+ `}}}}).prompt()},nt=`${(0,p.styleText)(`gray`,H)} `,X={message:async(e,{symbol:t=(0,p.styleText)(`gray`,H)}={})=>{process.stdout.write(`${(0,p.styleText)(`gray`,H)}
54
72
  ${t} `);let n=3;for await(let t of e){t=t.replace(/\n/g,`
55
- ${qe}`),t.includes(`
56
- `)&&(n=3+(0,l.stripVTControlCharacters)(t.slice(t.lastIndexOf(`
57
- `))).length);let e=(0,l.stripVTControlCharacters)(t).length;n+e<process.stdout.columns?(n+=e,process.stdout.write(t)):(process.stdout.write(`
58
- ${qe}${t.trimStart()}`),n=3+(0,l.stripVTControlCharacters)(t.trimStart()).length)}process.stdout.write(`
59
- `)},info:e=>Z.message(e,{symbol:(0,l.styleText)(`blue`,je)}),success:e=>Z.message(e,{symbol:(0,l.styleText)(`green`,Me)}),step:e=>Z.message(e,{symbol:(0,l.styleText)(`green`,U)}),warn:e=>Z.message(e,{symbol:(0,l.styleText)(`yellow`,Ne)}),warning:e=>Z.warn(e),error:e=>Z.message(e,{symbol:(0,l.styleText)(`red`,Pe)})},Je=e=>new ye({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??N.withGuide,n=`${`${t?`${(0,l.styleText)(`gray`,W)}
60
- `:``}${Fe(this.state)} `}${e.message}
61
- `,r=e.placeholder?(0,l.styleText)(`inverse`,e.placeholder[0])+(0,l.styleText)(`dim`,e.placeholder.slice(1)):(0,l.styleText)([`inverse`,`hidden`],`_`),i=this.userInput?this.userInputWithCursor:r,a=this.value??``;switch(this.state){case`error`:{let e=this.error?` ${(0,l.styleText)(`yellow`,this.error)}`:``,r=t?`${(0,l.styleText)(`yellow`,W)} `:``,a=t?(0,l.styleText)(`yellow`,G):``;return`${n.trim()}
73
+ ${nt}`),t.includes(`
74
+ `)&&(n=3+(0,p.stripVTControlCharacters)(t.slice(t.lastIndexOf(`
75
+ `))).length);let e=(0,p.stripVTControlCharacters)(t).length;n+e<process.stdout.columns?(n+=e,process.stdout.write(t)):(process.stdout.write(`
76
+ ${nt}${t.trimStart()}`),n=3+(0,p.stripVTControlCharacters)(t.trimStart()).length)}process.stdout.write(`
77
+ `)},info:e=>X.message(e,{symbol:(0,p.styleText)(`blue`,Ve)}),success:e=>X.message(e,{symbol:(0,p.styleText)(`green`,He)}),step:e=>X.message(e,{symbol:(0,p.styleText)(`green`,V)}),warn:e=>X.message(e,{symbol:(0,p.styleText)(`yellow`,Ue)}),warning:e=>X.warn(e),error:e=>X.message(e,{symbol:(0,p.styleText)(`red`,We)})},rt=e=>new Ae({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??M.withGuide,n=`${`${t?`${(0,p.styleText)(`gray`,H)}
78
+ `:``}${K(this.state)} `}${e.message}
79
+ `,r=e.placeholder?(0,p.styleText)(`inverse`,e.placeholder[0])+(0,p.styleText)(`dim`,e.placeholder.slice(1)):(0,p.styleText)([`inverse`,`hidden`],`_`),i=this.userInput?this.userInputWithCursor:r,a=this.value??``;switch(this.state){case`error`:{let e=this.error?` ${(0,p.styleText)(`yellow`,this.error)}`:``,r=t?`${(0,p.styleText)(`yellow`,H)} `:``,a=t?(0,p.styleText)(`yellow`,U):``;return`${n.trim()}
62
80
  ${r}${i}
63
81
  ${a}${e}
64
- `}case`submit`:{let e=a?` ${(0,l.styleText)(`dim`,a)}`:``;return`${n}${t?(0,l.styleText)(`gray`,W):``}${e}`}case`cancel`:{let e=a?` ${(0,l.styleText)([`strikethrough`,`dim`],a)}`:``,r=t?(0,l.styleText)(`gray`,W):``;return`${n}${r}${e}${a.trim()?`
65
- ${r}`:``}`}default:return`${n}${t?`${(0,l.styleText)(`cyan`,W)} `:``}${i}
66
- ${t?(0,l.styleText)(`cyan`,G):``}
67
- `}}}).prompt();var Q=c(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),Ye=class{constructor(e){this.options=e,this.originalStdoutWrite=process.stdout.write}format(e){return this.options.isQuiet?e.replace(/\x1B\[[0-9;]*[JKmsu]/g,``):e}write(e,t=`stdout`){let n=this.format(e);this.options.isJson||t===`stderr`?process.stderr.write(`${n}\n`):process.stdout.write(`${n}\n`)}info(e){this.write(Q.default.blue(`ℹ ${e}`))}warn(e){this.write(Q.default.yellow(`⚠ ${e}`),`stderr`)}error(e){this.write(Q.default.red(`✘ ${e}`),`stderr`)}success(e){this.write(Q.default.green(`✔ ${e}`))}step(e){this.write(`○ ${e}`)}note(e,t){this.options.isQuiet||this.options.isJson?this.write(Q.default.dim(`○ ${t?`${t}: `:``}${e}`)):Ue(e,t)}log(e){this.write(e)}spinner(){return this.options.isQuiet||this.options.isJson?{start:e=>this.write(Q.default.dim(`○ ${e}...`)),stop:e=>this.write(Q.default.green(`✔ ${e}`)),message:e=>this.write(Q.default.dim(`○ ${e}...`))}:Ge()}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}get stdio(){return this.options.isJson?[process.stdin,process.stderr,process.stderr]:`inherit`}interactiveStdout(e){!this.options.isJson||this.options.isYes||(e?process.stdout.write=process.stderr.write.bind(process.stderr):process.stdout.write=this.originalStdoutWrite)}cancel(e){this.options.isJson?this.json({status:`error`,message:e}):Y(e),process.exit(0)}fatal(e,t){this.options.isJson?this.json({status:`error`,details:{message:e,error:t instanceof Error?t.message:t?String(t):void 0}}):(this.error(e),t&&this.log(Q.default.red(t instanceof Error?t.stack:String(t)))),process.exit(1)}finish(e,t){this.options.isJson?this.json({status:`success`,message:e,details:t}):Be(e)}},Xe=class{constructor(e){this.args=e.slice(2),this.command=this.args[0],this.isYes=this.args.includes(`--yes`)||this.args.includes(`-y`),this.isQuiet=this.args.includes(`--quiet`)||this.args.includes(`-q`),this.isJson=this.args.includes(`--json`)||this.args.includes(`-j`),this.isAgent=this.args.includes(`--agent`)||this.args.includes(`-a`),this.helpRequested=this.args.includes(`--help`)||this.args.includes(`-h`),this.isAgent&&(this.isYes=!0,this.isQuiet=!0,this.isJson=!0),this.logger=new Ye({isQuiet:this.isQuiet,isJson:this.isJson,isYes:this.isYes})}},Ze=`0.0.6`,Qe=class{constructor(e){this.cli=e}async run(){let{logger:e}=this.cli;e.log(`ArkEnv CLI v${Ze}`),e.log(`\n${Q.default.bold(`Usage:`)}`),e.log(` arkenv init Set up ArkEnv in your project`),e.log(`\n${Q.default.bold(`Options:`)}`),e.log(` --yes, -y Skip prompts and use defaults (also passed to skill processes)`),e.log(` --agent, -a Agent mode: --yes --quiet --json`),e.log(` --quiet, -q Quiet mode: Suppress output, capture logs on failure`),e.log(` --json, -j Output structured JSON to stdout`),e.log(` --help, -h Show this help message`)}};async function $e(e){let t=process.cwd();for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}return null}async function et(){return $e([`vite.config.ts`,`vite.config.js`,`vite.config.mts`,`vite.config.mjs`])}async function tt(){return $e([`bunfig.toml`,`bun.setup.ts`,`bun.setup.js`])}async function nt(e,t){try{let n=await(0,v.loadFile)(e),r=(0,v.generateCode)(n).code,i=n.exports.default;if(i&&typeof i==`object`&&`$type`in i&&i.$type===`function-call`&&(i.$callee||i.$name||JSON.stringify(i))===`defineConfig`&&(i=i.$args[0]),!i||typeof i!=`object`)return{success:!1,error:`Could not find default export in Vite config`};if(i.plugins||=[],Array.isArray(i.plugins))if(!(r.includes(`arkenvVitePlugin`)||r.includes(`arkenvPlugin`)))n.imports.$add({from:`@arkenv/vite-plugin`,local:`arkenvVitePlugin`,imported:`default`}),t&&n.imports.$add({from:t,imported:`Env`}),i.plugins.push(`__ARK_PLUGIN_PLACEHOLDER__`);else return{success:!0};else return{success:!1,error:`The 'plugins' property in ${m.default.basename(e)} is not an array.`};let a=(0,v.generateCode)(n,{format:(0,v.detectCodeFormat)(r)}).code,o=t?`arkenvVitePlugin(Env)`:`arkenvVitePlugin()`;return a=a.replace(/['"]__ARK_PLUGIN_PLACEHOLDER__['"]/g,o),await _.default.writeFile(e,a,`utf-8`),{success:!0}}catch(t){let n=t instanceof Error?t.message:String(t);return{success:!1,error:`Failed to parse ${m.default.basename(e)}: ${n}`}}}async function rt(e){return e?.endsWith(`bunfig.toml`)?{success:!0,instructions:g.default`
68
- [preload]
69
- preload = ["./bun.setup.ts"]
70
- `}:e?.endsWith(`bun.setup.ts`)||e?.endsWith(`bun.setup.js`)?{success:!0,instructions:g.default`
71
- import arkenv from "@arkenv/bun-plugin";
72
-
73
- Bun.build({
74
- // ... other config
75
- plugins: [arkenv],
76
- });
77
- `}:{success:!0,instructions:g.default`
78
- To complete Bun integration, add the following to your setup/preload file:
79
-
80
- import arkenv from "@arkenv/bun-plugin";
81
-
82
- Bun.build({
83
- // ... other config
84
- plugins: [arkenv],
85
- });
86
-
87
- If you don't have a setup file, create one (e.g., bun.setup.ts) and add it to your bunfig.toml:
88
-
89
- [preload]
90
- preload = ["./bun.setup.ts"]
91
- `}}function it(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function at(){let e=m.default.join(process.cwd(),`.env.example`);try{let t=it(await _.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const $=e=>Q.default.cyan(e),ot=Q.default.blue(`⛯`);async function st(e,t=!1,n=!1){let r=await at();if(t){let t=e?.framework||`node`,n;if(t===`vite`||t===`bun`){let e=t===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.dirname(m.default.resolve(process.cwd(),`./src/env.ts`)),i=m.default.join(r,e);n=p.default.existsSync(i)?`append`:`overwrite`}return{path:`./src/env.ts`,validator:`arktype`,framework:t,language:`ts`,overwriteEnvSchemaFile:!0,envDtsHandling:n,installTypeDefinitions:t!==`node`,envKeys:r||void 0,installSkill:!1}}let i=await ze({overwriteEnvSchemaFile:async()=>{let e=`./src/env.ts`;if(p.default.existsSync(m.default.resolve(process.cwd(),e))){let t=await q({message:Q.default.yellow(`An existing ArkEnv configuration was found at ${$(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return I(t)&&(Y(`Operation cancelled.`),process.exit(0)),t||(Y(`Operation cancelled.`),process.exit(0)),t}return!0},framework:()=>Ke({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]}),useDefaultPath:()=>q({message:`Use default config path (./src/env.ts)?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`}),path:async({results:e})=>e.useDefaultPath?`./src/env.ts`:Je({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`}),installTypeDefinitions:async({results:e})=>{if(e.framework===`vite`||e.framework===`bun`){let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);return p.default.existsSync(r)?!0:q({message:`Establish ${$(t)} for typesafe environment variables?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}return!0},envDtsHandling:async({results:e})=>{if(!e.installTypeDefinitions||e.framework!==`vite`&&e.framework!==`bun`)return`skip`;let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);if(p.default.existsSync(r)){let e=await Ke({message:`Found existing ${$(t)}. How should we handle ArkEnv types?`,options:[{value:`append`,label:`Append types safely`,hint:`Recommended`},{value:`overwrite`,label:`Overwrite entirely`,hint:`Destructive`},{value:`skip`,label:`Skip`}]});return I(e)&&(Y(`Operation cancelled.`),process.exit(0)),e}return`overwrite`},validator:()=>Ke({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]}),useEnvExample:async()=>r?q({message:`Detected ${Q.default.cyan(`.env.example`)} with ${r.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0}):!1,installSkill:()=>{if(!n)return q({message:`Would you like to install the ArkEnv agent skill?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}},{onCancel:()=>{Y(`Operation cancelled.`),process.exit(0)}});return I(i)&&(Y(`Operation cancelled.`),process.exit(0)),{path:i.path||`./src/env.ts`,validator:i.validator,framework:i.framework,language:`ts`,overwriteEnvSchemaFile:i.overwriteEnvSchemaFile,envDtsHandling:i.envDtsHandling,installTypeDefinitions:i.installTypeDefinitions,envKeys:i.useEnvExample?r:void 0,installSkill:i.installSkill}}const ct=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string = ''",`).join(`
82
+ `}case`submit`:{let e=a?` ${(0,p.styleText)(`dim`,a)}`:``;return`${n}${t?(0,p.styleText)(`gray`,H):``}${e}`}case`cancel`:{let e=a?` ${(0,p.styleText)([`strikethrough`,`dim`],a)}`:``,r=t?(0,p.styleText)(`gray`,H):``;return`${n}${r}${e}${a.trim()?`
83
+ ${r}`:``}`}default:return`${n}${t?`${(0,p.styleText)(`cyan`,H)} `:``}${i}
84
+ ${t?(0,p.styleText)(`cyan`,U):``}
85
+ `}}}).prompt();var it=class{info(e){process.stdout.write(`${w.default.blue(`ℹ ${e}`)}\n`)}warn(e){process.stderr.write(`${w.default.yellow(`⚠ ${e}`)}\n`)}error(e){process.stderr.write(`${w.default.red(`✘ ${e}`)}\n`)}success(e){process.stdout.write(`${w.default.green(`✔ ${e}`)}\n`)}step(e){process.stdout.write(`○ ${e}\n`)}note(e,t){Qe(e,t)}log(e){process.stdout.write(`${e}\n`)}spinner(){return et()}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}cancel(e){process.stderr.write(`${w.default.red(`✘ ${e}`)}\n`,()=>process.exit(1))}fatal(e,t){let n=`${w.default.red(`✘ ${e}`)}\n`;if(t){let e=`${w.default.red(t instanceof Error?t.stack??String(t):String(t))}\n`;process.stderr.write(n,()=>{process.stderr.write(e,()=>process.exit(1))})}else process.stderr.write(n,()=>process.exit(1))}finish(e,t){Ye(e)}async flush(){return new Promise(e=>{process.stderr.write(``,()=>e())})}},at=class{constructor(e){this.options=e,this.originalStdoutWrite=process.stdout.write,e.isJson?this.reporter=new T:e.isQuiet?this.reporter=new ne:this.reporter=new it}info(e){this.reporter.info(e)}warn(e){this.reporter.warn(e)}error(e){this.reporter.error(e)}success(e){this.reporter.success(e)}step(e){this.reporter.step(e)}note(e,t){this.reporter.note(e,t)}log(e){this.reporter.log(e)}spinner(){return this.reporter.spinner()}json(e){this.reporter.json(e)}get stdio(){return this.options.isJson?[process.stdin,process.stderr,process.stderr]:`inherit`}interactiveStdout(e){!this.options.isJson||this.options.isYes||(e?process.stdout.write=process.stderr.write.bind(process.stderr):process.stdout.write=this.originalStdoutWrite)}cancel(e){this.reporter.cancel(e)}fatal(e,t){this.reporter.fatal(e,t)}finish(e,t){this.reporter.finish(e,t)}async flush(){await this.reporter.flush()}};const Z=e=>w.default.cyan(e),ot=w.default.blue(`⛯`);function st(e){try{let t=(0,y.parseModule)(e.code),n=e.code,r=t.exports.default;if(r&&typeof r==`object`&&`$type`in r&&r.$type===`function-call`){let e=r;if((e.$callee||JSON.stringify(r))===`defineConfig`&&e.$args){let t=e.$args[0];if(t&&typeof t==`object`&&`$type`in t&&(t.$type===`arrow-function-expression`||t.$type===`function-expression`))return{success:!1,updated:!1,error:`The 'defineConfig' callback form is currently not supported for automatic mutation. Please add the plugin manually.`};r=t}}if(!r||typeof r!=`object`||typeof r==`object`&&`$type`in r)return{success:!1,updated:!1,error:`Could not find default export object in Vite config`};if(r.plugins||=[],Array.isArray(r.plugins))if(!/\barkenv(?:Vite)?Plugin\b/.test(n))t.imports.$add({from:`@arkenv/vite-plugin`,local:`arkenvVitePlugin`,imported:`default`}),e.envImportPath&&t.imports.$add({from:e.envImportPath,imported:`Env`}),r.plugins.push(`__ARK_PLUGIN_PLACEHOLDER__`);else return{success:!0,updated:!1};else return{success:!1,updated:!1,error:`The 'plugins' property in your Vite config is not an array.`};let i=(0,y.generateCode)(t,{format:(0,y.detectCodeFormat)(n)}).code,a=e.envImportPath?`arkenvVitePlugin(Env)`:`arkenvVitePlugin()`;return i=i.replace(/['"]__ARK_PLUGIN_PLACEHOLDER__['"]/g,a),{success:!0,updated:!0,code:i}}catch(e){return{success:!1,updated:!1,error:`Failed to parse Vite config: ${e instanceof Error?e.message:String(e)}`}}}function ct(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function lt(){let e=d.default.join(process.cwd(),`.env.example`);try{let t=ct(await u.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const ut=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string = ''",`).join(`
92
86
  `):` NODE_ENV: "'development' | 'production' | 'test' = 'development'",
93
- PORT: "number.port = 3000",`;return t===`vite`?g.default`
87
+ PORT: "number.port = 3000",`;return t===`vite`?f.default`
94
88
  import { type } from "arkenv";
95
89
 
96
90
  /**
@@ -101,7 +95,7 @@ ${t?(0,l.styleText)(`cyan`,G):``}
101
95
  export const Env = type({
102
96
  ${n}
103
97
  });
104
- `:t===`bun`?g.default`
98
+ `:t===`bun`?f.default`
105
99
  import { type } from "arkenv";
106
100
 
107
101
  /**
@@ -112,7 +106,7 @@ ${n}
112
106
  export const Env = type({
113
107
  ${n}
114
108
  });
115
- `:g.default`
109
+ `:f.default`
116
110
  import arkenv, { type } from "arkenv";
117
111
 
118
112
  export const Env = type({
@@ -120,12 +114,12 @@ ${n}
120
114
  });
121
115
 
122
116
  export const env = arkenv(Env);
123
- `},lt=e=>g.default`
117
+ `},dt=e=>f.default`
124
118
  /// <reference types="vite/client" />
125
119
 
126
120
  type ImportMetaEnvAugmented =
127
121
  import("@arkenv/vite-plugin").ImportMetaEnvAugmented<
128
- typeof import("./${m.default.basename(e).replace(/\.(ts|js|tsx|jsx)$/,``)}").Env
122
+ typeof import("./${d.default.basename(e).replace(/\.(ts|js|tsx|jsx)$/,``)}").Env
129
123
  >;
130
124
 
131
125
  interface ImportMetaEnv extends ImportMetaEnvAugmented {}
@@ -133,19 +127,19 @@ ${n}
133
127
  interface ImportMeta {
134
128
  readonly env: ImportMetaEnv;
135
129
  }
136
- `,ut=e=>g.default`
130
+ `,ft=e=>f.default`
137
131
  /// <reference types="bun-types" />
138
132
 
139
133
  type ProcessEnvAugmented = import("@arkenv/bun-plugin").ProcessEnvAugmented<
140
- typeof import("./${m.default.basename(e).replace(/\.(ts|js|tsx|jsx)$/,``)}").Env
134
+ typeof import("./${d.default.basename(e).replace(/\.(ts|js|tsx|jsx)$/,``)}").Env
141
135
  >;
142
136
 
143
137
  declare namespace NodeJS {
144
138
  interface ProcessEnv extends ProcessEnvAugmented {}
145
139
  }
146
- `,dt=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: v.optional(v.string(), ""),`).join(`
140
+ `,pt=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: v.optional(v.string(), ""),`).join(`
147
141
  `):` NODE_ENV: v.optional(v.picklist(["development", "production", "test"]), "development"),
148
- PORT: v.optional(v.pipe(v.string(), v.transform(Number), v.number(), v.integer(), v.minValue(1), v.maxValue(65535)), 3000),`;return t===`vite`?g.default`
142
+ PORT: v.optional(v.pipe(v.string(), v.transform(Number), v.number(), v.integer(), v.minValue(1), v.maxValue(65535)), 3000),`;return t===`vite`?f.default`
149
143
  import * as v from "valibot";
150
144
 
151
145
  /**
@@ -156,7 +150,7 @@ ${n}
156
150
  export const Env = v.object({
157
151
  ${n}
158
152
  });
159
- `:t===`bun`?g.default`
153
+ `:t===`bun`?f.default`
160
154
  import * as v from "valibot";
161
155
 
162
156
  /**
@@ -167,7 +161,7 @@ ${n}
167
161
  export const Env = v.object({
168
162
  ${n}
169
163
  });
170
- `:g.default`
164
+ `:f.default`
171
165
  import arkenv from "arkenv/standard";
172
166
  import * as v from "valibot";
173
167
 
@@ -176,9 +170,9 @@ ${n}
176
170
  });
177
171
 
178
172
  export const env = arkenv(Env);
179
- `},ft=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: z.string().default(""),`).join(`
173
+ `},mt=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: z.string().default(""),`).join(`
180
174
  `):` NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
181
- PORT: z.coerce.number().int().min(1).max(65535).default(3000),`;return t===`vite`?g.default`
175
+ PORT: z.coerce.number().int().min(1).max(65535).default(3000),`;return t===`vite`?f.default`
182
176
  import { z } from "zod";
183
177
 
184
178
  /**
@@ -189,7 +183,7 @@ ${n}
189
183
  export const Env = z.object({
190
184
  ${n}
191
185
  });
192
- `:t===`bun`?g.default`
186
+ `:t===`bun`?f.default`
193
187
  import { z } from "zod";
194
188
 
195
189
  /**
@@ -200,7 +194,7 @@ ${n}
200
194
  export const Env = z.object({
201
195
  ${n}
202
196
  });
203
- `:g.default`
197
+ `:f.default`
204
198
  import arkenv from "arkenv/standard";
205
199
  import { z } from "zod";
206
200
 
@@ -209,12 +203,35 @@ ${n}
209
203
  });
210
204
 
211
205
  export const env = arkenv(Env);
212
- `};function pt(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return`${ct(n,r)}\n`;case`zod`:return`${ft(n,r)}\n`;case`valibot`:return`${dt(n,r)}\n`;default:throw Error(`Unsupported validator: ${t}`)}}async function mt(e){let t=m.default.resolve(process.cwd(),e.path),n=m.default.dirname(t);await _.default.mkdir(n,{recursive:!0});let r=await xt(),i=[`arkenv`,e.validator];e.framework===`vite`&&i.push(`@arkenv/vite-plugin`),e.framework===`bun`&&i.push(`@arkenv/bun-plugin`);let a=St(r,i),o=pt(e);if((0,p.existsSync)(t)){if(e.overwriteEnvSchemaFile===!1)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}};if(e.overwriteEnvSchemaFile===void 0){let e=await q({message:`File ${m.default.basename(t)} already exists. Overwrite?`,initialValue:!1});if(I(e)&&(Y(`Operation cancelled.`),process.exit(0)),!e)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}}}await _.default.writeFile(t,o,`utf-8`)}else await _.default.writeFile(t,o,`utf-8`);let s={status:`already_strict`};e.shouldUpdateTsConfig&&(s=await yt());let c={status:`none`};return(e.framework===`vite`||e.framework===`bun`)&&e.installTypeDefinitions!==!1&&(c=await ht(e,n)),{tsConfigResult:s,installCmd:a,packageManager:r,typeDefinitionResult:c}}async function ht(e,t){let n=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.join(t,n),i=m.default.resolve(process.cwd(),e.path);if(e.envDtsHandling===`skip`)return{status:`skipped`,file:n};if(e.envDtsHandling===`append`||!e.envDtsHandling&&(0,p.existsSync)(r)){let{safeAppend:t}=await Promise.resolve().then(()=>require(`./injection-IfQN68XB.cjs`));return{status:await t(r,i,e.framework)?`appended`:`skipped`,file:n}}let a=e.framework===`vite`?lt(e.path):ut(e.path),o=(0,p.existsSync)(r);return await _.default.writeFile(r,a,`utf-8`),{status:o?`overwritten`:`created`,file:n}}function gt(e){switch(e){case`pnpm`:return`pnpm dlx`;case`yarn`:return`yarn dlx`;case`bun`:return`bunx`;default:return`npx`}}async function _t(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==m.default.parse(t).root;){for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}t=m.default.dirname(t)}return null}async function vt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{return(0,y.parse)(await _.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function yt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{let n=await _.default.readFile(e,`utf-8`);if((0,y.parse)(n)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:t};let r=(0,y.applyEdits)(n,(0,y.modify)(n,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await _.default.writeFile(e,r,`utf-8`),{status:`updated`,file:t}}catch{return{status:`error`,file:t}}}async function bt(){try{let e=m.default.join(process.cwd(),`package.json`),t=await _.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function xt(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==m.default.parse(t).root;){try{let e=m.default.join(t,`package.json`),n=await _.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=await _.default.readdir(t);if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=m.default.dirname(t)}return`npm`}function St(e,t){switch(e){case`pnpm`:return`pnpm add ${t.join(` `)}`;case`yarn`:return`yarn add ${t.join(` `)}`;case`bun`:return`bun add ${t.join(` `)}`;default:return`npm install ${t.join(` `)}`}}var Ct=class{constructor(e){this.cli=e}async run(){let{logger:e,isYes:t}=this.cli;e.interactiveStdout(!0);let n=!1,r=null;try{let i=await vt();if(i.status===`not_strict`)if(t)n=!0;else{e.warn(`TypeScript strict mode is not enabled in your ${$(i.file)}.`);let t=await q({message:`ArkEnv requires ${Q.default.dim(`strict`)} mode in your ${$(i.file)}. Would you like to enable it now?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});I(t)&&e.cancel(`Operation cancelled.`),t&&(n=!0)}r=await st({framework:await bt()},t,this.cli.isAgent)}finally{e.interactiveStdout(!1)}if(!r){e.cancel(`Operation cancelled.`);return}let i=e.spinner();i.start(`Scaffolding ArkEnv configuration...`);try{let{tsConfigResult:t,installCmd:a,packageManager:o,typeDefinitionResult:s}=await mt({...r,shouldUpdateTsConfig:n});i.stop(`Configuration scaffolded!`),a&&process.env.SKIP_INSTALL!==`true`&&(e.step(`Installing dependencies with ${o}...`),await this.execute(a)),t.status===`updated`?e.info(`Enforced strict: true in your ${$(t.file)}`):t.status===`error`&&e.warn(`Could not automatically update ${$(t.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`),s.status===`created`?e.info(`Created ${$(s.file)} for typesafe environment variables.`):s.status===`overwritten`?e.info(`Updated ${$(s.file)} for typesafe environment variables.`):s.status===`appended`&&e.info(`Appended ArkEnv types to ${$(s.file)}.`);let c=m.default.relative(process.cwd(),m.default.resolve(r.path)),l=c.startsWith(`.`)?c:`./${c}`,u=l.replace(/\.(ts|js|tsx|jsx)$/,``);if(r.framework===`vite`){let t=await et();if(t){e.step(`Bootstrapping Vite plugin...`);let n=await nt(t,u);n.success?e.info(`Updated ${$(m.default.basename(t))}`):(e.warn(`Could not automatically update ${$(m.default.basename(t))}: ${n.error}`),e.info(`Please add '@arkenv/vite-plugin' manually.`))}else e.info(`No Vite config found — please add '@arkenv/vite-plugin' to your Vite config manually.`)}else if(r.framework===`bun`){let t=await rt(await tt());t.success&&t.instructions?e.info(t.instructions):t.success||e.error(t.error||`Bun bootstrap failed`)}let d=gt(o),f=this.cli.isYes?` --yes`:``,p=!1;if(r.installSkill&&process.env.SKIP_INSTALL!==`true`){e.step(`Installing ArkEnv agent skill...`);try{await this.execute(`${d} skills add yamcodes/arkenv${f}`),p=!0}catch(t){e.warn(`Failed to install ArkEnv AI skill: ${t.message}`)}}let h=`2. Import and use: ${$(`import { env } from "${u}"`)}`;r.framework===`vite`?h=`2. Access via ${$(`import.meta.env.YOUR_VAR`)}`:r.framework===`bun`&&(h=`2. Access via ${$(`process.env.YOUR_VAR`)}`),p?e.note(g.default`
213
- Inside your AI assistant (e.g. Claude Code), use:
214
- ${Q.default.cyan(`/arkenv`)} - automatically refine your schema and configure integrations.
215
- `,`Next steps`):e.note(g.default`
216
- 1. Check ${$(l)} and refine your environment schema.
217
- ${h}
218
- 3. (Recommended) Install the AI skill: ${$(`${d} skills add yamcodes/arkenv`)}
219
- Then run ${Q.default.cyan(`/arkenv`)} inside your AI assistant to finish.
220
- `,`Next steps`),e.finish(`${ot} ArkEnv scaffolding complete. ${Q.default.dim(`Happy coding!`)}`,{path:l,framework:r.framework,validator:r.validator,packageManager:o,tsConfigUpdated:t.status===`updated`,skillInstalled:p})}catch(t){i.stop(`Scaffolding failed.`),e.fatal(`Scaffolding failed.`,t)}}async execute(e){let{logger:t,isQuiet:n}=this.cli,r=n?`pipe`:t.stdio;return new Promise((t,i)=>{let a=(0,h.spawn)(e,[],{stdio:r,shell:!0}),o=``,s=``,c=1e4;n&&(a.stdout?.on(`data`,e=>{o=(o+e.toString()).slice(-c)}),a.stderr?.on(`data`,e=>{s=(s+e.toString()).slice(-c)})),a.on(`close`,(e,r)=>{if(e===0)t();else{let t=e===null?`Command terminated by signal ${r}`:`Command failed with code ${e}`;n&&(o&&(t+=`\n${Q.default.dim(`STDOUT:`)}\n${o}`),s&&(t+=`\n${Q.default.red(`STDERR:`)}\n${s}`)),i(Error(t))}}),a.on(`error`,i)})}};async function wt(){let e=new Xe(process.argv);e.helpRequested&&(await new Qe(e).run(),process.exit(0)),e.command!==`init`&&(e.command?e.logger.error(`Unknown command: ${e.command}`):e.logger.error(`Missing command.`),await new Qe(e).run(),process.exit(1));try{await new Ct(e).run()}catch(t){e.logger.fatal(`An unexpected error occurred`,t)}}wt(),process.on(`unhandledRejection`,e=>{new Xe(process.argv).logger.fatal(`Unhandled rejection`,e)}),exports.t=c;
206
+ `};function ht(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return`${ut(n,r)}\n`;case`zod`:return`${mt(n,r)}\n`;case`valibot`:return`${pt(n,r)}\n`;default:throw Error(`Unsupported validator: ${t}`)}}var gt=class{constructor(e,t){this.workspace=e,this.reporter=t}async execute(e){let t=this.reporter.spinner();t.start(`Scaffolding ArkEnv configuration...`);try{for(let t of e.files){if(t.action===`append`){if(!e.bootstrap||e.bootstrap.framework!==`vite`&&e.bootstrap.framework!==`bun`){this.reporter.warn(`Skipping safe-append for ${Z(d.default.basename(t.path))}: unsupported framework.`);continue}await this.workspace.safeAppend(t.path,t.content,e.bootstrap.framework)?this.reporter.info(`Appended ArkEnv types to ${Z(d.default.basename(t.path))}.`):this.reporter.info(`${Z(d.default.basename(t.path))} already contains ArkEnv types.`);continue}if(await this.workspace.mkdir(d.default.dirname(t.path),!0),await this.workspace.writeFile(t.path,t.content),t.label!==`environment schema`&&t.label?.includes(`types`)){let e=t.action===`overwrite`?`Updated`:`Created`;this.reporter.info(`${e} ${Z(d.default.basename(t.path))} for typesafe environment variables.`)}}if(t.stop(`Configuration scaffolded!`),e.install&&process.env.SKIP_INSTALL!==`true`){this.reporter.step(`Installing dependencies with ${Z(e.install.packageManager)}...`);let[t,n]=this.getInstallCommand(e.install.packageManager,e.install.dependencies);await this.workspace.execute(t,n)}let n=!1;if(e.tsConfig){let t=await this.workspace.updateTsConfigToStrict(e.tsConfig.path);t.status===`updated`?(this.reporter.info(`Enforced strict: true in your ${Z(t.file)}`),n=!0):t.status===`error`&&this.reporter.warn(`Could not automatically update ${Z(t.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`)}if(e.bootstrap){if(e.bootstrap.framework===`vite`){let t=await this.workspace.findViteConfig();if(t){this.reporter.step(`Bootstrapping Vite plugin...`);let n=await this.workspace.bootstrapViteConfig(t,e.bootstrap.importPath||`./src/env`);n.success?n.updated&&this.reporter.info(`Updated ${Z(d.default.basename(t))}`):(this.reporter.warn(`Could not automatically update ${Z(d.default.basename(t))}: ${n.error}`),this.reporter.info(`Please add ${Z(`@arkenv/vite-plugin`)} manually.`))}else this.reporter.info(`No Vite config found — please add ${Z(`@arkenv/vite-plugin`)} to your Vite config manually.`)}else if(e.bootstrap.framework===`bun`){let e=await this.workspace.findBunConfig();if(e){let t=await this.workspace.bootstrapBunConfig(e);t.success&&t.instructions?this.reporter.info(t.instructions):t.success||this.reporter.error(t.error||`Bun bootstrap failed`)}else this.reporter.info(`No Bun config found — create a ${Z(`bun.config.ts`)} or run ${Z(`bun init`)} to bootstrap manually.`)}}let r=!1;if(e.skill&&process.env.SKIP_INSTALL!==`true`){this.reporter.step(`Installing ArkEnv agent skill...`);try{let[t,...n]=e.skill.dlxCommand,i=[...n,`skills`,`add`,e.skill.packageName];e.skill.isYes&&i.push(`--yes`),await this.workspace.execute(t,i),r=!0}catch(e){let t=e instanceof Error?e.message:String(e);this.reporter.warn(`Failed to install ArkEnv AI skill: ${t}`)}}this.reportNextSteps(e,r),this.reporter.finish(`${ot} ArkEnv scaffolding complete. Happy coding!`,{path:e.metadata.displayPath,framework:e.metadata.framework,validator:e.metadata.validator,packageManager:e.metadata.packageManager,tsConfigUpdated:n,skillInstalled:r})}catch(e){throw t.stop(`Scaffolding failed.`),e}}getInstallCommand(e,t){switch(e){case`pnpm`:return[`pnpm`,[`add`,...t]];case`yarn`:return[`yarn`,[`add`,...t]];case`bun`:return[`bun`,[`add`,...t]];default:return[`npm`,[`install`,...t]]}}reportNextSteps(e,t){let n=`2. Import and use: import { env } from "${Z(e.metadata.importPath)}"`;if(e.metadata.framework===`vite`?n=`2. Access via ${Z(`import.meta.env.YOUR_VAR`)}`:e.metadata.framework===`bun`&&(n=`2. Access via ${Z(`process.env.YOUR_VAR`)}`),t)this.reporter.note(f.default`
207
+ Inside your AI assistant (e.g. Claude Code), use:
208
+ ${Z(`/arkenv`)} - automatically refine your schema and configure integrations.
209
+ `,`Next steps`);else{let t=e.skill?.dlxCommand.join(` `)||`npx`,r=e.skill?.packageName||`yamcodes/arkenv`;this.reporter.note(f.default`
210
+ 1. Check ${Z(e.metadata.displayPath)} and refine your environment schema.
211
+ ${n}
212
+ 3. (Recommended) Install the AI skill: ${Z(`${t} skills add ${r}`)}
213
+ Then run ${Z(`/arkenv`)} inside your AI assistant to finish.
214
+ `,`Next steps`)}}};function _t(e){switch(e){case`pnpm`:return[`pnpm`,`dlx`];case`yarn`:return[`yarn`,`dlx`];case`bun`:return[`bunx`];default:return[`npx`]}}async function vt(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==d.default.parse(t).root;){for(let n of e){let e=d.default.join(t,n);try{return await u.default.access(e),e}catch{}}t=d.default.dirname(t)}return null}async function yt(){let e=await vt();if(!e)return{status:`not_found`};let t=d.default.basename(e);try{return(0,b.parse)(await u.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function bt(e){let t=e||await vt();if(!t)return{status:`not_found`};let n=d.default.basename(t);try{let e=await u.default.readFile(t,`utf-8`);if((0,b.parse)(e)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:n};let r=(0,b.applyEdits)(e,(0,b.modify)(e,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await u.default.writeFile(t,r,`utf-8`),{status:`updated`,file:n}}catch{return{status:`error`,file:n}}}async function xt(){try{let e=d.default.join(process.cwd(),`package.json`),t=await u.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await u.default.access(d.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await u.default.access(d.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function St(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==d.default.parse(t).root;){try{let e=d.default.join(t,`package.json`),n=await u.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=[];try{e=await u.default.readdir(t)}catch{}if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=d.default.dirname(t)}return`npm`}function Ct(e){let{options:t,packageManager:n,tsConfig:r,shouldUpdateTsConfig:i,cwd:a,existingFiles:o}=e,s=d.default.resolve(a,t.path),c=d.default.dirname(s),l={files:[],metadata:{displayPath:``,framework:t.framework,validator:t.validator,packageManager:n,importPath:``}},u=ht(t),f=o.includes(s);(!f||t.overwriteEnvSchemaFile!==!1)&&l.files.push({path:s,content:u,action:f?`overwrite`:`create`,label:`environment schema`});let p=[`arkenv`,t.validator];if(t.framework===`vite`&&p.push(`@arkenv/vite-plugin`),t.framework===`bun`&&p.push(`@arkenv/bun-plugin`),l.install={packageManager:n,dependencies:p},i&&r.file&&(l.tsConfig={path:d.default.resolve(a,r.file),action:`strict`}),(t.framework===`vite`||t.framework===`bun`)&&t.installTypeDefinitions!==!1){let e=t.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=d.default.join(c,e),r=o.includes(n);if(t.envDtsHandling!==`skip`)if(t.envDtsHandling===`append`||!t.envDtsHandling&&r)l.files.push({path:n,content:s,action:`append`,label:`${t.framework} types`});else{let e=t.framework===`vite`?dt(t.path):ft(t.path);l.files.push({path:n,content:e,action:r?`overwrite`:`create`,label:`${t.framework} types`})}}(t.framework===`vite`||t.framework===`bun`)&&(l.bootstrap={framework:t.framework}),t.installSkill&&(l.skill={dlxCommand:_t(n),packageName:`yamcodes/arkenv`,isYes:e.isYes});let m=d.default.relative(a,s).replace(/\\/g,`/`),h=m.startsWith(`.`)?m:`./${m}`,g=h.replace(/\.(ts|js|tsx|jsx)$/,``);return l.metadata.displayPath=h,l.metadata.importPath=g,l.bootstrap&&(l.bootstrap.importPath=g),l}var wt=class{constructor(e,t){this.isQuiet=e,this.stdio=t}async exists(e){try{return await u.default.access(e),!0}catch{return!1}}async readFile(e){return u.default.readFile(e,`utf-8`)}async writeFile(e,t){await u.default.writeFile(e,t,`utf-8`)}async mkdir(e,t){await u.default.mkdir(e,{recursive:t})}async execute(e,t=[]){return new Promise((n,r)=>{let i=(0,v.spawn)(e,t,{stdio:this.isQuiet?`pipe`:this.stdio,shell:!1}),a=``,o=``,s=1e4;this.isQuiet&&(i.stdout?.on(`data`,e=>{a=(a+e.toString()).slice(-s)}),i.stderr?.on(`data`,e=>{o=(o+e.toString()).slice(-s)})),i.on(`close`,(e,t)=>{if(e===0)n();else{let n=e===null?`Command terminated by signal ${t}`:`Command failed with code ${e}`;this.isQuiet&&(a&&(n+=`\n${w.default.dim(`STDOUT:`)}\n${a}`),o&&(n+=`\n${w.default.red(`STDERR:`)}\n${o}`)),r(Error(n))}}),i.on(`error`,r)})}async updateTsConfigToStrict(e){return bt(e)}async findViteConfig(){for(let e of[`vite.config.ts`,`vite.config.js`,`vite.config.mts`,`vite.config.mjs`]){let t=d.default.resolve(process.cwd(),e);try{return await u.default.access(t),t}catch{}}return null}async findBunConfig(){for(let e of[`bunfig.toml`,`bun.setup.ts`,`bun.setup.js`]){let t=d.default.resolve(process.cwd(),e);try{return await u.default.access(t),t}catch{}}return null}async bootstrapViteConfig(e,t){try{let n=st({code:await this.readFile(e),envImportPath:t});return n.success&&n.updated&&n.code&&await this.writeFile(e,n.code),n.success?n.updated===void 0?{success:!0}:{success:!0,updated:n.updated}:{success:!1,error:n.error}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e)}}}async bootstrapBunConfig(e){return e?.endsWith(`bunfig.toml`)?{success:!0,instructions:f.default`
215
+ To complete Bun integration, ensure your ${Z(`bunfig.toml`)} includes a preload file:
216
+
217
+ [preload]
218
+ preload = ["./bun.setup.ts"]
219
+
220
+ Then, in your setup file, import the ArkEnv plugin.
221
+ `}:e?.endsWith(`bun.setup.ts`)||e?.endsWith(`bun.setup.js`)?{success:!0,instructions:f.default`
222
+ To complete Bun integration, add the ArkEnv plugin to your setup file:
223
+
224
+ import arkenv from "@arkenv/bun-plugin";
225
+
226
+ // If using Bun.build or similar:
227
+ // plugins: [arkenv]
228
+ `}:{success:!0,instructions:f.default`
229
+ To complete Bun integration, we recommend creating a ${Z(`bun.setup.ts`)} file and adding it to your ${Z(`bunfig.toml`)}:
230
+
231
+ ${w.default.dim(`[preload]`)}
232
+ ${w.default.dim(`preload = ["./bun.setup.ts"]`)}
233
+
234
+ In your setup file, import the ArkEnv plugin:
235
+
236
+ ${Z(`import arkenv from "@arkenv/bun-plugin";`)}
237
+ `}}async safeAppend(e,t,n){let{safeAppend:r}=await Promise.resolve().then(()=>x);return r(e,t,n)}};const Q={overwriteEnvSchemaFile:async()=>{let e=`./src/env.ts`;if(_.default.existsSync(d.default.resolve(process.cwd(),e))){let t=await q({message:w.default.yellow(`An existing ArkEnv configuration was found at ${Z(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return P(t)||!t?null:t}return!0},framework:async e=>{let t=await tt({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]});return P(t)?null:t},useDefaultPath:async()=>{let e=await q({message:`Use default config path (${Z(`./src/env.ts`)})?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`});return P(e)?null:e},path:async({results:e})=>{if(e.useDefaultPath===null)return null;if(!e.useDefaultPath){let e=await rt({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`});return P(e)?null:e}return`./src/env.ts`},installTypeDefinitions:async({results:e})=>{if(e.framework===null)return null;if(e.framework===`vite`||e.framework===`bun`){let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=d.default.dirname(d.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=d.default.join(n,t);if(_.default.existsSync(r))return!0;let i=await q({message:`Establish ${Z(t)} for typesafe environment variables?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});return P(i)?null:i}return!0},envDtsHandling:async({results:e})=>{if(e.installTypeDefinitions===null)return null;if(!e.installTypeDefinitions||e.framework!==`vite`&&e.framework!==`bun`)return`skip`;let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=d.default.dirname(d.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=d.default.join(n,t);if(_.default.existsSync(r)){let e=await tt({message:`Found existing ${Z(t)}. How should we handle ArkEnv types?`,options:[{value:`append`,label:`Append types safely (if needed)`,hint:`Recommended`},{value:`overwrite`,label:`Overwrite entirely`,hint:`Destructive`},{value:`skip`,label:`Skip`}]});return P(e)?null:e}return`overwrite`},validator:async()=>{let e=await tt({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]});return P(e)?null:e},useEnvExample:async e=>{if(e&&e.length>0){let t=await q({message:`Detected ${Z(`.env.example`)} with ${e.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0});return P(t)?null:t}return!1}};async function Tt(e,t=!1){let n=await lt();if(t){let t=e?.framework||`node`,r;if(t===`vite`||t===`bun`){let e=t===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=d.default.dirname(d.default.resolve(process.cwd(),`./src/env.ts`)),i=d.default.join(n,e);r=_.default.existsSync(i)?`append`:`overwrite`}return{path:`./src/env.ts`,validator:`arktype`,framework:t,language:`ts`,overwriteEnvSchemaFile:!0,envDtsHandling:r,installTypeDefinitions:t!==`node`,envKeys:n||void 0,installSkill:!1}}let r=await Je({overwriteEnvSchemaFile:Q.overwriteEnvSchemaFile,framework:()=>Q.framework(e),useDefaultPath:Q.useDefaultPath,path:Q.path,installTypeDefinitions:Q.installTypeDefinitions,envDtsHandling:Q.envDtsHandling,validator:Q.validator,useEnvExample:()=>Q.useEnvExample(n)},{onCancel:()=>{}});return P(r)||Object.values(r).some(e=>e===null)?null:{path:r.path||`./src/env.ts`,validator:r.validator,framework:r.framework,language:`ts`,overwriteEnvSchemaFile:r.overwriteEnvSchemaFile,envDtsHandling:r.envDtsHandling,installTypeDefinitions:r.installTypeDefinitions,envKeys:r.useEnvExample?n:void 0,installSkill:!1}}var Et=class{async confirm(e,t=!0){let n=await q({message:e,initialValue:t});return P(n)?null:n}async runWizard(e,t=!1){return Tt(e,t)}},Dt=class{constructor(e,t={}){this.args=e.slice(2),this.command=this.args[0],this.isYes=this.args.includes(`--yes`)||this.args.includes(`-y`),this.isQuiet=this.args.includes(`--quiet`)||this.args.includes(`-q`),this.isJson=this.args.includes(`--json`)||this.args.includes(`-j`),this.isAgent=this.args.includes(`--agent`)||this.args.includes(`-a`),this.helpRequested=this.args.includes(`--help`)||this.args.includes(`-h`),this.isAgent&&(this.isYes=!0,this.isQuiet=!0,this.isJson=!0),this.logger=t.logger||new at({isQuiet:this.isQuiet,isJson:this.isJson,isYes:this.isYes})}},Ot=`0.0.8`,kt=class{constructor(e){this.logger=e}async execute(){this.logger.log(`ArkEnv CLI v${Ot}`),this.logger.log(`\n${w.default.bold(`Usage:`)}`),this.logger.log(` arkenv init Set up ArkEnv in your project`),this.logger.log(`\n${w.default.bold(`Options:`)}`),this.logger.log(` --yes, -y Skip prompts and use defaults (also passed to skill processes)`),this.logger.log(` --agent, -a Agent mode: --yes --quiet --json`),this.logger.log(` --quiet, -q Quiet mode: Suppress output, capture logs on failure`),this.logger.log(` --json, -j Output structured JSON to stdout`),this.logger.log(` --help, -h Show this help message`)}},At=class{constructor(e,t,n){this.logger=e,this.workspace=t,this.prompt=n}async execute(e){let t=await this.collect(e);if(!t)return;let n=Ct(t),r=new gt(this.workspace,this.logger);try{await r.execute(n)}catch(e){this.logger.fatal(`Scaffolding failed.`,e)}}async collect(e){let{isYes:t,isAgent:n}=e;this.logger.interactiveStdout(!0);try{let e=!1,r=await yt();if(r.status===`not_strict`)if(t)e=!0;else{if(this.logger.warn(`TypeScript strict mode is not enabled in your ${Z(r.file)}.`),!await this.prompt.confirm(`ArkEnv requires ${w.default.dim(`strict`)} mode in your ${Z(r.file)}. Would you like to enable it now?`,!0))return this.logger.cancel(`Operation cancelled.`),null;e=!0}let i=await xt(),a=await this.prompt.runWizard({framework:i},t);if(!a)return this.logger.cancel(`Operation cancelled.`),null;if(n)a.installSkill=!1;else if(t)a.installSkill=!0;else{let e=await this.prompt.confirm(`Would you like to install the ArkEnv agent skill?`,!0);if(e===null)return this.logger.cancel(`Operation cancelled.`),null;a.installSkill=e}let o=d.default.resolve(process.cwd(),a.path);if(await this.workspace.exists(o)&&a.overwriteEnvSchemaFile===void 0){let e=await this.prompt.confirm(`File ${Z(d.default.basename(o))} already exists. Overwrite?`,!1);if(!e)return this.logger.cancel(`Operation cancelled.`),null;a.overwriteEnvSchemaFile=e}let s=await St(),c=[];await this.workspace.exists(o)&&c.push(o);let l;if(a.framework===`vite`?l=`vite-env.d.ts`:a.framework===`bun`&&(l=`bun-env.d.ts`),l){let e=d.default.dirname(o),t=d.default.join(e,l);await this.workspace.exists(t)&&c.push(t)}return{cwd:process.cwd(),options:a,detectedFramework:i,packageManager:s,tsConfig:r,shouldUpdateTsConfig:e,existingFiles:c,isYes:t}}finally{this.logger.interactiveStdout(!1)}}};function jt(e){let t=new Dt(e),n=t.logger,r=new wt(t.isQuiet,n.stdio),i=new Et;return{cli:t,logger:n,workspace:r,prompt:i,initUseCase:new At(n,r,i),helpUseCase:new kt(n)}}let $;async function Mt(){let{cli:e,logger:t,initUseCase:n,helpUseCase:r}=jt(process.argv);$=t,e.helpRequested&&(await r.execute(),await t.flush(),process.exit(0)),e.command!==`init`&&(e.command?t.error(`Unknown command: ${e.command}`):t.error(`Missing command.`),await r.execute(),await t.flush(),process.exit(1));try{await n.execute({isYes:e.isYes,isQuiet:e.isQuiet,isAgent:e.isAgent})}catch(e){t.fatal(`An unexpected error occurred`,e),await t.flush(),process.exit(1)}}Mt(),process.on(`unhandledRejection`,async e=>{$?($.fatal(`Unhandled rejection`,e),await $.flush()):console.error(`Unhandled rejection`,e),process.exit(1)}),process.on(`uncaughtException`,async e=>{$?($.fatal(`Uncaught exception`,e),await $.flush()):console.error(`Uncaught exception`,e),process.exit(1)});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arkenv/cli",
3
3
  "type": "module",
4
- "version": "0.0.6",
4
+ "version": "0.0.8",
5
5
  "description": "Interactive CLI for scaffolding ArkEnv projects",
6
6
  "bin": {
7
7
  "arkenv": "./dist/index.cjs"
@@ -1,21 +0,0 @@
1
- const e=require(`./index.cjs`);let t=require(`node:path`);t=e.t(t,1);let n=require(`dedent`);n=e.t(n,1);let r=require(`node:fs/promises`);r=e.t(r,1);const i=`// @arkenv-types`;async function a(e,n,a){try{let c=await r.default.readFile(e,`utf-8`);if(c.includes(i))return!1;let l=t.default.dirname(e),u=t.default.relative(l,n).replace(/\.(ts|js|tsx|jsx)$/,``).split(t.default.sep).join(`/`),d=u.startsWith(`.`)?u:`./${u}`,f=a===`vite`?o(d):s(d),p=c.endsWith(`
2
- `)?``:`
3
- `;return await r.default.appendFile(e,`${p}\n${i}\n${f}\n`,`utf-8`),!0}catch(t){return console.error(`Failed to append to ${e}:`,t),!1}}function o(e){return n.default`
4
- type ImportMetaEnvAugmented = import("@arkenv/vite-plugin").ImportMetaEnvAugmented<
5
- typeof import("${e}").Env
6
- >;
7
-
8
- interface ImportMetaEnv extends ImportMetaEnvAugmented {}
9
-
10
- interface ImportMeta {
11
- readonly env: ImportMetaEnv;
12
- }
13
- `}function s(e){return n.default`
14
- type ProcessEnvAugmented = import("@arkenv/bun-plugin").ProcessEnvAugmented<
15
- typeof import("${e}").Env
16
- >;
17
-
18
- declare namespace NodeJS {
19
- interface ProcessEnv extends ProcessEnvAugmented {}
20
- }
21
- `}exports.safeAppend=a;