UNPKG

@dovenv/utils

Version:
33 lines (31 loc) 50.1 kB
"use strict";const color$1=require("@vibrant/color"),n$2=require("chalk"),m$1=require("chroma-js"),cliHighlight=require("cli-highlight"),b$1=require("gradient-string"),i$1=require("ansi-align"),n$3=require("figlet"),e$2=require("figures"),o$5=require("terminal-link"),e$3=require("boxen"),n$4=require("columnify"),table$1=require("table"),e$1=require("node:process"),C$1=require("terminal-size"),globby=require("globby"),node_fs=require("node:fs"),promises=require("node:fs/promises"),node_os=require("node:os"),node_path=require("node:path"),node_url=require("node:url"),nodeLocalstorage=require("node-localstorage"),o$6=require("open"),module$1=require("module"),node_child_process=require("node:child_process"),npmRunPath=require("npm-run-path"),path=require("path"),matcher=require("matcher"),stringWidth=require("string-width"),l=require("conf"),deepmergeTs=require("deepmerge-ts"),z=require("archiver"),d=require("decompress"),E$1=require("decompress-targz"),o$7=require("yargs"),helpers=require("yargs/helpers"),a$1=require("log-update"),n$5=require("@clack/prompts"),core=require("@clack/core"),p$2=require("enquirer"),consola=require("consola"),r=require("ora"),node_perf_hooks=require("node:perf_hooks"),m$2=require("pretty-ms"),jsonSchema=require("@cfworker/json-schema"),jsonSchemaToTypescriptLite=require("json-schema-to-typescript-lite"),jsonSchemaToZod=require("json-schema-to-zod"),tsJsonSchemaGenerator=require("ts-json-schema-generator"),zodToJsonSchema=require("zod-to-json-schema"),csvParse=require("csv-parse"),sync=require("csv-stringify/sync"),n$6=require("ini"),svgson=require("svgson"),smolToml=require("smol-toml"),fastXmlParser=require("fast-xml-parser"),t$1=require("js-yaml"),zod=require("zod"),zodValidationError=require("zod-validation-error"),zodex=require("zodex"),node_util=require("node:util"),node_stream=require("node:stream"),marked=require("marked"),markedTerminal=require("marked-terminal"),x$1=require("turndown"),badgeMaker=require("badge-maker"),t$2=require("remark-parse"),e$4=require("remark-stringify"),unified=require("unified"),s$4=require("qrcode-terminal"),pngjs=require("pngjs"),h=require("quantize");var _documentCurrentScript=typeof document<"u"?document.currentScript:null;function _interopDefaultCompat(w){return w&&typeof w=="object"&&"default"in w?w.default:w}function _interopNamespaceCompat(w){if(w&&typeof w=="object"&&"default"in w)return w;const v=Object.create(null);if(w)for(const S in w)v[S]=w[S];return v.default=w,v}const n__default=_interopDefaultCompat(n$2),m__default=_interopDefaultCompat(m$1),b__default=_interopDefaultCompat(b$1),i__default=_interopDefaultCompat(i$1),n__default$1=_interopDefaultCompat(n$3),e__default$1=_interopDefaultCompat(e$2),o__default=_interopDefaultCompat(o$5),e__default$2=_interopDefaultCompat(e$3),n__default$2=_interopDefaultCompat(n$4),e__default=_interopDefaultCompat(e$1),C__default=_interopDefaultCompat(C$1),o__namespace=_interopNamespaceCompat(o$6),stringWidth__default=_interopDefaultCompat(stringWidth),l__default=_interopDefaultCompat(l),z__default=_interopDefaultCompat(z),d__default=_interopDefaultCompat(d),E__default=_interopDefaultCompat(E$1),o__default$1=_interopDefaultCompat(o$7),a__default=_interopDefaultCompat(a$1),n__namespace=_interopNamespaceCompat(n$5),p__default=_interopDefaultCompat(p$2),r__default=_interopDefaultCompat(r),m__default$1=_interopDefaultCompat(m$2),n__default$3=_interopDefaultCompat(n$6),t__default=_interopDefaultCompat(t$1),x__default=_interopDefaultCompat(x$1),t__default$1=_interopDefaultCompat(t$2),e__default$3=_interopDefaultCompat(e$4),s__default=_interopDefaultCompat(s$4),h__default=_interopDefaultCompat(h),chroma=m__default,colorConversion={rgb2hex:color$1.rgbToHex,rgb2CIELab:color$1.rgbToCIELab,rgb2sl:color$1.rgbToHsl,rgb2xyz:color$1.rgbToXyz,xyz2CIELab:color$1.xyzToCIELab,hslToRgb:color$1.hslToRgb,hex2rgb:color$1.hexToRgb},highlight=(w,v)=>cliHighlight.highlight(w,v),color=n__default,gradient=(w,v,S)=>b__default(...v).multiline(w,S),icon=e__default$1,asciiFont=(w,v="Standard")=>n__default$1.textSync(w,{font:v,horizontalLayout:"default",verticalLayout:"default",whitespaceBreak:!0}),link=(w,v)=>o__default.isSupported?o__default(w,v):v,align=i__default,table=(w,v)=>table$1.table(w,v),box=(w,v)=>e__default$2(w,v),columns=(w,v)=>n__default$2(w,v),e=typeof window<"u"&&typeof window.document<"u",o$4=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,n$1=typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope",s$3=typeof window<"u"&&window.name==="nodejs"||typeof navigator<"u"&&"userAgent"in navigator&&typeof navigator.userAgent=="string"&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom")),i=typeof Deno<"u"&&typeof Deno.version<"u"&&typeof Deno.version.deno<"u",t=typeof process<"u"&&process.versions!=null&&process.versions.bun!=null,onStd=w=>{const v=w.process||e__default,S=Array.isArray(w.type)?w.type:[w.type||"stdout"],j={},P=L=>{j[L]=v[L].write,v[L].write=(_,...O)=>{const q=typeof _=="string"?_:_.toString(),N=w.fn({data:q,type:L});return j[L]?.call(v[L],N,...O)}};return{start:()=>{S.forEach(P)},stop:()=>{S.forEach(L=>{j[L]&&(v[L].write=j[L])})}}},replaceStd=w=>onStd({process:w.process,type:w.type,fn:({data:v,type:S})=>{let j=w.transform?w.transform({data:v,type:S}):v;for(const[P,L]of Object.entries(w.params))j=j.replace(new RegExp(P,"g"),L);return j}}),onConsole=w=>{const v=Array.isArray(w.type)?w.type:[w.type||"log"],S={},j=P=>{S[P]=console[P],console[P]=(...L)=>{const _=L.map(O=>{const q=typeof O=="string"?O:JSON.stringify(O);return w.fn({data:q,type:P})});S[P]?.call(console,..._)}};return{start:()=>{v.forEach(j)},stop:()=>{v.forEach(P=>{S[P]&&(console[P]=S[P])})}}},replaceConsole=w=>onConsole({type:w.type,fn:({data:v,type:S})=>{let j=w.transform?w.transform({data:v,type:S}):v;for(const[P,L]of Object.entries(w.params))j=j.replace(new RegExp(P,"g"),L);return j}}),isDev=()=>e__default.env.NODE_ENV!=="production",rmDeprecationAlerts=()=>{e__default.noDeprecation=!0},deprecatedAlerts=()=>({show:()=>{e__default.noDeprecation=!1},hide:()=>{e__default.noDeprecation=!0}}),onExit=w=>{e__default.on("exit",w)},onCancel=w=>{e__default.on("SIGINT",w)},cancel=()=>{e__default.exit(130)},g$1=w=>{const v=(k,M)=>k*M/100,{lineChar:S,title:j,titleAlign:P,align:L,lineColor:_}=w;let{width:O}=w;(O<1||O>100)&&(O=100);const{columns:q}=C__default(),N=v(q,O);return box("",{title:j===""?void 0:j,borderStyle:{top:S,topLeft:"",topRight:"",left:"",right:"",bottomRight:"",bottomLeft:"",bottom:""},dimBorder:w.lineDim,borderColor:_,titleAlignment:P,float:L,padding:0,margin:0,width:N}).trimEnd()},line=w=>{let v="";const{title:S="",lineChar:j="\u23AF",align:P="center",titleAlign:L="center",width:_=100,lineColor:O,lineDim:q=!1}=w||{},N={align:P,width:_,lineColor:O,lineDim:q,titleAlign:L.replace("top-","").replace("bottom-","")};return L.startsWith("bottom")?(v+=g$1({lineChar:j,...N}),v+=` `,v+=g$1({title:S,lineChar:" ",...N})):L.startsWith("top")?(v+=g$1({title:S,lineChar:" ",...N}),v+=` `,v+=g$1({lineChar:j,...N})):v+=g$1({lineChar:j,title:S,...N}),v},resolvePath=node_path.resolve,relativePath=node_path.relative,getExtName=node_path.extname,getDirName=node_path.dirname,getBaseName=node_path.basename,isAbsolutePath=node_path.isAbsolute,normalizePath=node_path.normalize,writeFile=promises.writeFile,getPaths=globby.globby,getPathsStream=globby.globbyStream,arePathsEqual=(w,v)=>{const S=resolvePath(w),j=resolvePath(v);return S===j},isPath=w=>{if((node_path.isAbsolute(w)||/^(\.\/|\.\.\/|[A-Za-z]:\\|\/)/.test(w))&&(node_path.isAbsolute(w)||/^(\.\/|\.\.\/|[A-Za-z]:\\|\/)/.test(w))){if(/\s(?!\\)/.test(w)&&!/\\\s/.test(w))return!1;try{return node_path.join(w)!==""}catch{return!1}}return!1},ensureDir=async w=>{await existsDir(w)||await createDir(w)},readDir=async w=>(w=validateHomeDir(w),await promises.readdir(w,{withFileTypes:!0}));async function getFilteredFileNames({path:w,extensions:v=[]}){return(await readDir(w)).filter(S=>{const j=getExtName(S.name);return v.includes(j)}).map(S=>getBaseName(S.name,getExtName(S.name)))}const getCurrentDir=(w=typeof document>"u"?require("url").pathToFileURL(__filename).href:_documentCurrentScript&&_documentCurrentScript.tagName.toUpperCase()==="SCRIPT"&&_documentCurrentScript.src||new URL("main.cjs",document.baseURI).href)=>getDirName(node_url.fileURLToPath(w));function joinPath(...w){return node_path.join(...w)}const getAbsolutePath=node_path.resolve;function validateHomeDir(w){let v=w;return w.startsWith("~/")&&(v=w.replace(/^~(?=$|\/|\\)/,node_os.homedir())),getAbsolutePath(v)}const readFile=promises.readFile;async function removeDir(w){try{w=validateHomeDir(w),await promises.rm(w,{recursive:!0,force:!0})}catch(v){throw new Error(`Error removing ${w}: ${v.message}`)}}async function removeDirIfExist(w){w=validateHomeDir(w),await existsDir(w)&&await removeDir(w)}async function removePathIfExist(w){w=validateHomeDir(w),await isDirectory(w)?await removeDirIfExist(w):await removeFileIfExist(w)}async function removeFileIfExist(w){w=validateHomeDir(w),await existsFile(w)&&await promises.unlink(w)}async function removeFile(w){await promises.unlink(w)}async function isDirectory(w){return w=validateHomeDir(w),(await promises.stat(w)).isDirectory()}async function createDir(w){try{w=validateHomeDir(w),await promises.mkdir(w,{recursive:!0})}catch(v){throw Error(`Error creating the directory: ${v}`)}}async function existsDir(w){try{return w=validateHomeDir(w),await promises.access(w,promises.constants.F_OK),(await promises.stat(w)).isDirectory()}catch{return!1}}async function existsFile(w){try{return w=validateHomeDir(w),await promises.access(w),(await promises.stat(w)).isFile()}catch{return!1}}async function writeFileContent(w,v){w=validateHomeDir(w),await promises.writeFile(w,v)}async function existsPath(w){return await existsFile(w)?!0:await existsDir(w)}const copyFile=async({input:w,output:v})=>{try{await promises.copyFile(w,v)}catch(S){console.error(S)}},copyDir=async({input:w,output:v})=>{try{const S=async({input:j,output:P})=>{const L=await readDir(j);await ensureDir(P);for(const _ of L){const O=node_path.join(j,_.name),q=node_path.join(P,_.name);_.isDirectory()?await S({input:O,output:q}):await copyFile({input:O,output:q})}};await S({input:w,output:v})}catch(S){console.error(`\u{1F4C1} Error copying directory: ${S.message}`)}},createSymlink=async({input:w,output:v})=>{try{await promises.access(v)}catch(P){if(P.code==="ENOENT")await promises.mkdir(v,{recursive:!0});else throw`\u274C\u{1F517} ${P}`}const S=await promises.lstat(w),j=process.platform==="win32";S.isDirectory()?j?await promises.symlink(w,node_path.join(v,node_path.basename(w)),"junction"):await promises.symlink(w,node_path.join(v,node_path.basename(w)),"dir"):S.isFile()&&await promises.symlink(w,node_path.join(v,node_path.basename(w))),console.log(`\u{1F517} symlink: "${w}" to "${v}".`)};function localStorage(w){return new nodeLocalstorage.LocalStorage(w)}const open=o__namespace.default,openApp=o__namespace.openApp,catchError=async w=>w.then(v=>[void 0,v]).catch(v=>[v]);class TypedError extends Error{data;constructor(v,S){super(v),this.data=S,Error.captureStackTrace(this,this.constructor)}}const getLocalPkgPath=w=>{try{return module$1.createRequire(path.resolve(e__default.cwd(),"./")).resolve(w)}catch{}try{const v=(void 0)(w);return new URL(v).pathname}catch{return}};class RunLocalNodeBinError extends Error{}const getLocalNodeBinPath=async({name:w,opts:v})=>{const S=npmRunPath.npmRunPathEnv(v);if(!S.PATH)return;const j=S.PATH.split(":").filter(P=>P.endsWith("node_modules/.bin"));for(const P of j){const L=joinPath(P,w);if(await existsPath(L))return L}},runLocalNodeBin=async({name:w,args:v,opts:S})=>new Promise((j,P)=>{const L=npmRunPath.npmRunPathEnv(S),_=node_child_process.spawn(w,v||[],{env:L,cwd:S?.cwd||e__default.cwd(),shell:!0,stdio:"inherit"});_.on("error",O=>{"code"in O&&O.code==="ENOENT"||"code"in O&&O.code==="MODULE_NOT_FOUND"?P(new RunLocalNodeBinError(`Command '${w}' not found.`)):P(new Error(`Failed to execute '${w}': ${O.message}`))}),_.on("close",O=>{O!==0?P(new Error(`Process '${w}' exited with code ${O}`)):j(O)})}),exec=async w=>{await new Promise((v,S)=>{node_child_process.spawn(w,{shell:!0,stdio:"inherit"}).on("close",j=>{if(j===0)v();else{const P=new Error(`Command failed with code ${j}`);console.error(P),S(P)}})})},execChild=async w=>new Promise((v,S)=>{const j=node_child_process.spawn(w,{shell:!0,stdio:"pipe"});let P="",L="";j.stdout?.on("data",_=>{P+=_.toString()}),j.stderr?.on("data",_=>{L+=_.toString()}),j.on("close",_=>{_===0?v({stdout:P,stderr:L}):S({code:_,stdout:P,stderr:L})}),j.on("error",_=>{S(_)})}),execProcess=async w=>{const{name:v,on:S,onError:j,onExit:P,onSuccess:L}=w,_=e__default.argv.includes("--debug"),O={debug:q=>{_&&console.debug(` \u{1F426}\u2B1B [${v}]`,q)},info:q=>console.log(` \u{1F426}\u{1F7E6} [${v}]`,q),success:q=>console.log(` \u{1F426}\u2705 [${v}]`,q),warn:q=>console.warn(` \u{1F426}\u{1F7E1} [${v}]`,q),error:q=>console.error(` \u{1F426}\u274C [${v}] Error: `,q),box:q=>console.log(` ${box(q,{padding:1,title:`\u{1F426}\u{1F7E6} [${v}]`})}`)};try{O.info(`Init process `),console.group(),await S({log:O}),console.groupEnd(),L?await L({log:O}):O.success(`Process executed successfully `)}catch(q){console.groupEnd(),q.name==="ExitPromptError"?P?await P({log:O}):O.warn("Exit from process"):j?await j({log:O,error:q}):O.error(q)}},catchExecOutput=w=>catchError(new Promise((v,S)=>{node_child_process.exec(w,(j,P,L)=>{if(j){S({error:j,stdout:P,stderr:L});return}v(P)})})),execModulePath=async({module:w,args:v=[]})=>{const S=await getModulePath(w);await new Promise((j,P)=>{node_child_process.fork(S,v,{stdio:"inherit"}).on("close",L=>L===0?j():(console.warn(`[${w.id}] exited with code ${L}`),P()))})},execModulePathWithOutput=async({module:w,args:v=[]})=>{const S=await getModulePath(w);return new Promise((j,P)=>{const L=node_child_process.fork(S,v,{stdio:["pipe","pipe","pipe","ipc"]});let _="",O="";L.stdout&&L.stdout.on("data",q=>_+=q.toString()),L.stderr&&L.stderr.on("data",q=>O+=q.toString()),L.on("close",q=>q===0?j({stdout:_,stderr:O}):(console.warn(`[${w.id}] exited with code ${q}`),P(new Error(`Process exited with code ${q}`)))),L.on("error",q=>{P(q)})})},existsLocalBin=async w=>{const v=e__default.platform==="win32"?`where ${w}`:`which ${w}`;try{return await execChild(v),!0}catch{return!1}},existsLocalBins=async w=>{const v={},S=w.map(async j=>{const P=await existsLocalBin(j);v[j]=P});return await Promise.all(S),v},getChoiceFlagValue=(w,v)=>{const S=getStringFlagValue(w);if(S&&Object.values(v).includes(S))return S},getStringFlagValue=w=>{const v=w.length===1?"-":"--",S=e$1.argv;for(let j=0;j<S.length;j++){const P=S[j];if(P.startsWith(`${v}${w}=`))return P.split("=")[1];if(P===`${v}${w}`&&S[j+1]&&!S[j+1].startsWith(v))return S[j+1]}},getArrayFlagValue=w=>{const v=e$1.argv,S=w.length===1?"-":"--";let j=[];for(let P=0;P<v.length;P++){const L=v[P];if(L.startsWith(`${S}${w}=`)){j=L.split("=")[1].split(",");break}if(L===`${S}${w}`){for(let _=P+1;_<v.length&&!v[_].startsWith(S);_++)j.push(v[_]);break}}return j.length>0?j:void 0},getBooleanFlagValue=w=>{const v=w.length===1?"-":"--";return e$1.argv.includes(`${v}${w}`)},getCmd=w=>e$1.argv.includes(w),existsOptions=()=>e$1.argv.length>2,hideBin=helpers.hideBin,createCli=async({args:w=process.argv,fn:v})=>{const S=o__default$1(w);return await v(S),S.help(),S.parse(),S},animate=({frames:w,interval:v=100,clear:S=!1})=>{let j=!1,P=0,L=null;return{start:()=>{j||(j=!0,L=setInterval(()=>{a__default(w[P]),P=(P+1)%w.length},v))},stop:()=>{j&&(j=!1,L&&(clearInterval(L),L=null),S&&a__default.clear())}}},T=()=>e__default.platform!=="win32"?e__default.env.TERM!=="linux":!!e__default.env.WT_SESSION||!!e__default.env.TERMINUS_SUBLIME||e__default.env.ConEmuTask==="{cmd::Cmder}"||e__default.env.TERM_PROGRAM==="Terminus-Sublime"||e__default.env.TERM_PROGRAM==="vscode"||e__default.env.TERM==="xterm-256color"||e__default.env.TERM==="alacritty"||e__default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm",E=T(),n=(w,v)=>E?w:v,symbols={STEP_ACTIVE:n("\u25C6","*"),STEP_CANCEL:n("\u25A0","x"),STEP_ERROR:n("\u25B2","x"),STEP_SUBMIT:n("\u25C7","o"),BAR:n("\u2502","|"),BAR_END:n("\u2514","\u2014")},symbol=w=>{if(w==="initial"||w==="active")return color.cyan(symbols.STEP_ACTIVE);if(w==="cancel")return color.red(symbols.STEP_CANCEL);if(w==="error")return color.yellow(symbols.STEP_ERROR);if(w==="submit")return color.green(symbols.STEP_SUBMIT)};async function m(w){return new core.TextPrompt({validate:v=>{const S="Value must be a number without",j=/\s/.test(v),P=typeof Number(v)=="number"&&!isNaN(Number(v));if(!v||!P||j)return w.errorText?w.errorText:S;if(w.validate)return w.validate(v)},placeholder:w.placeholder,defaultValue:w.defaultValue,initialValue:w.initialValue,render(){const v=`${color.gray(symbols.BAR)} ${symbol(this.state)} ${w.message} `,S=w.placeholder?color.inverse(w.placeholder[0])+color.dim(w.placeholder.slice(1)):color.inverse(color.hidden("_")),j=this.value?this.valueWithCursor:S;switch(this.state){case"error":return`${v.trim()} ${color.yellow(symbols.BAR)} ${j} ${color.yellow(symbols.BAR_END)} ${color.yellow(this.error)} `;case"submit":return`${v}${color.gray(symbols.BAR)} ${color.dim(this.value||w.placeholder)}`;case"cancel":return`${v}${color.gray(symbols.BAR)} ${color.strikethrough(color.dim(this.value??""))}${this.value?.trim()?` `+color.gray(symbols.BAR):""}`;default:return`${v}${color.cyan(symbols.BAR)} ${j} ${color.cyan(symbols.BAR_END)} `}}}).prompt()}const promptLineMethods={message:"message"};async function promptGroup(w){return p__default.prompt(w)}const s$2=async(w,v)=>{n__namespace.log.message();const S="id",j=await promptGroup({...w,name:S,prefix:P=>{let L="active";return P.cancelled&&(L="cancel"),P.submitted&&(L="submit"),P.error!==""&&(L="error"),symbol(L)},onCancel:async()=>{n__namespace.log.message(),v&&await v()}});return n__namespace.log.message(),S in j?j[S]:void 0},g={table:({value:w,opts:v,type:S=promptLineMethods.message})=>n__namespace.log[S](table(w,v)),columns:({value:w,opts:v,type:S=promptLineMethods.message})=>n__namespace.log[S](columns(w,v)),box:({value:w,opts:v,type:S=promptLineMethods.message})=>n__namespace.log[S](box(w,v))},promptLineCore=n__namespace,promptLineEnquirer=s$2,promptLine={...promptLineCore,number:m,...g};async function promptLineGroup(w){w.onCancel||(w.onCancel=async P=>{P.cancel("canceled \u{1F494}"),process.exit(0)});const v={...promptLine,typePrompt:P=>s$2(P,()=>w.onCancel?.(promptLine))};w.intro&&v.intro(w.intro);const S=await w.list(v),j=await v.group(S,{onCancel:()=>w.onCancel?.(v)});return w.outro&&(v.log.step(""),v.outro(w.outro)),j}const logger=consola.consola,spinner=r__default,performance=()=>{const w=node_perf_hooks.performance.now(),v=()=>node_perf_hooks.performance.now()-w;return{stop:()=>v()/1e3,prettyStop:()=>m__default$1(v())}},delay=async w=>new Promise(v=>setTimeout(v,w)),getCurrentDateTime=()=>{const w=new Date,v=w.getUTCFullYear().toString(),S=("0"+(w.getUTCMonth()+1)).slice(-2),j=("0"+w.getUTCDate()).slice(-2),P=("0"+w.getUTCHours()).slice(-2),L=("0"+w.getUTCMinutes()).slice(-2),_=("0"+w.getUTCSeconds()).slice(-2);return{year:v,month:S,day:j,hours:P,minutes:L,seconds:_}},getCurrentDateTimeString=()=>{const w=getCurrentDateTime();return`${w.year}-${w.month}-${w.day}T${w.hours}:${w.minutes}:${w.seconds}Z`},getModulePath=async({from:w=e__default.cwd(),id:v,path:S})=>{const j=class extends Error{};try{const P=v,L=P.includes("/")?P.startsWith("@")?P.split("/").slice(0,2).join("/"):P.split("/")[0]:P,_=`Module [${joinPath(P,...S||[])}] not found. `,O=(await import("node:module")).default.createRequire(w).resolve.paths(P);if(!O)throw new j(_+"Failed in resolve.paths");let q=O.map(N=>joinPath(N,L)).find(async N=>await existsPath(N));if(!q)throw new j(_+"Failed in lookupPaths");if(S&&(q=joinPath(q,...S)),!await existsPath(q))throw new j(_+"Path does not exist");return q}catch(P){const L=` Error information: - Make sure the package [${v}] is installed correctly.`;throw P instanceof j?(P.message+=L,P):new Error(`It could not be located ${joinPath(v,...S||[])}.`+L)}},replacePlaceholders=async w=>{const{content:v,params:S,transform:j,opts:P}=w,{prefix:L,suffix:_}=P?.mark||{prefix:"{{",suffix:"}}"},O=U=>U.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),q=new RegExp(`${O(L)}\\s*([^}]+?)\\s*${O(_)}`,"g"),N=(U,B)=>{const I=B.split(".");let R=U;for(const W of I){if(R===void 0)return;if(W.includes("[")&&W.includes("]")){const[H,G]=W.split("["),J=parseInt(G.replace("]",""),10);R=R[H]?.[J]}else R=R[W]}return R},k=async(U,B)=>{if(j){const R=await j(B);if(R!==B)return R}const I=N(S,B);if(I===void 0){if(P?.throw)throw new Error(`Placeholder ${B} not found`);return U}return String(I)};let M=v;const V=[...v.matchAll(q)];for(const U of V){const[B,I]=U,R=await k(B,I);M=M.replace(B,R)}return M},getCharsAndWords=w=>{const v=w.length,S=w.split(/\s+/).filter(Boolean).length;return{chars:v,words:S}},indent=(w,v=" ")=>w.split(` `).map(S=>`${v}${S}`).join(` `),capitalize=w=>w.charAt(0).toUpperCase()+w.slice(1),getMatch=matcher.matcher,getStringType=w=>p$1(w)?"url":isPath(w)?"path":"text",p$1=w=>{try{return new URL(w),!0}catch{return!1}},joinUrl=(...w)=>(w=w.map(v=>v.replace(/^\/+|\/+$/g,"")),w.join("/")),object2string=w=>JSON.stringify(w,null," ")+` `,getFileText=async w=>(w=validateHomeDir(w),(await readFile(w)).toString("utf8"));async function fetch2string(w){try{const v=await fetch(w);return v.headers.get("content-type")?.includes("image")?`data:image/jpeg;base64,${Buffer.from(await v.arrayBuffer()).toString("base64")}`:await v.text()}catch(v){throw new Error(`Fetching URL Error: ${v.message}`)}}const getStringFrom=async w=>{const v=getStringType(w);return v==="path"?await getFileText(w):v==="url"?await fetch2string(w):w},getStringsFrom=async w=>{const v=[];for(let S=0;S<w.length;S++){const j=w[S],P=getStringType(j);if(P==="path"){const L=await getPaths(j);for(const _ of L)v.push({type:P,path:_,id:`${getDirName(_)}`,content:await getFileText(_)})}else P==="url"?v.push({type:P,path:j,id:`${P}-${new URL(j).hostname}-${S}`,content:await fetch2string(j)}):v.push({type:P,id:`${P}-${S}`,content:j})}return v},cache=async({id:w,values:v,projectName:S,cwd:j})=>{const P=new l__default({projectName:S,cwd:j}),L=deepmergeTs.deepmergeCustom({mergeArrays:!1}),_=N=>{const k=P.get(w)||{};if(!N)return k;if(N in k)return k[N];if(N in v)return v[N];throw new Error(`Cache value is unexpected: ${N.toString()}`)},O=N=>{const k=P.get(w)||{},M=L(k,N);P.set(w,M)},q=()=>P.reset(w);return P.get(w)||O(v),{defaultValues:v,get:_,set:O,reset:q,path:P.path}},getTempDir=()=>node_os.tmpdir(),getPlatform=async()=>{switch(node_os.platform()){case"win32":return"windows";case"darwin":return"macos";case"linux":return"linux";default:return"unknown"}};function getArch(){switch(node_os.arch()){case"arm64":return"arm64";case"arm":return"arm64";case"x64":return"x64";default:return"unknown"}}async function decompressFile({input:w,output:v,newName:S,remove:j=!1}){const P=node_path.extname(w).toLowerCase(),L=S||node_path.basename(w,P),_=joinPath(v,L);try{if(P===".zip")await d__default(w,v,{strip:1}),console.log(`File decompressed successfully to ${v}`);else if(P===".tar"||P===".tgz"||P===".gz")await d__default(w,v,{plugins:[E__default()],strip:1}),console.log(`File decompressed successfully to ${v}`);else throw new Error(`Unsupported file extension: ${P}`);S&&(await promises.rename(joinPath(v,node_path.basename(w,P)),_),console.log(`File renamed successfully to ${_}`)),j&&(await promises.rm(w),console.log(`Original file ${w} removed successfully`))}catch(O){console.error(`Error during decompression: ${O.message}`)}}const u=(w,v,S,j,P)=>new Promise((L,_)=>{const O=node_fs.createWriteStream(joinPath(S,v)),q=z__default("zip",{zlib:{level:6}});O.on("close",()=>{j(v),L()}),q.on("error",N=>{P(v,N),_(N)}),q.pipe(O),q.file(w,{name:v.replace(".zip","")}),q.finalize()}),zipFile=async({input:w,output:v,name:S,onDone:j=()=>{},onError:P=()=>{}})=>{const L=S?S.endsWith(".zip")?S:`${S}.zip`:node_path.basename(w);return await u(w,L,v,j,P)},zipFilesInDirectory=async({input:w,output:v,onDone:S=()=>{},onError:j=()=>{}})=>{const P=async(N,k,M,V,U)=>{const B=joinPath(N,k),I=`${k}.zip`;return u(B,I,M,V,U)},L=N=>!/(^|\/)\.[^\\/\\.]/g.test(N);await existsPath(w)||await promises.mkdir(v,{recursive:!0});const _=(await promises.readdir(w)).filter(L),O=node_os.cpus().length,q=[];for(let N=0;N<_.length;N+=O)q.push(_.slice(N,N+O));await Promise.all(q.map(async N=>{await Promise.all(N.map(k=>P(w,k,v,S,j)))}))},getCountFromPaths=async({input:w,opts:v})=>{let S=0,j=0;const P=await getPaths(w,{onlyFiles:!0,...v||{}});for(const L of P){const _=await readFile(L,"utf-8"),O=getCharsAndWords(_);S+=O.chars,j+=O.words}return{files:P.length,chars:S,words:j}},getCharsAndWordsFromPaths=async({input:w,opts:v})=>{const{chars:S,words:j}=await getCountFromPaths({input:w,opts:v});return{chars:S,words:j}},getCharsAndWordsFromUrl=async({input:w})=>{let v=0,S=0;for(const j of w){const P=await fetch2string(j),L=getCharsAndWords(P);v+=L.chars,S+=L.words}return{chars:v,words:S}},getCharsAndWordsFromContent=async({input:w})=>{let v=0,S=0;for(const j of w){const P=getCharsAndWords(j);v+=P.chars,S+=P.words}return{chars:v,words:S}},getCharsAndWordsFrom=async({paths:w,url:v,content:S,opts:j})=>{try{const P={chars:0,words:0,paths:{chars:0,words:0},url:{chars:0,words:0},content:{chars:0,words:0}};if(w){const L=await getCharsAndWordsFromPaths({input:w,opts:j?.paths});P.chars+=L.chars,P.words+=L.words,P.paths.chars+=L.chars,P.paths.words+=L.words}if(v){const L=await getCharsAndWordsFromUrl({input:v});P.chars+=L.chars,P.words+=L.words,P.url.chars+=L.chars,P.url.words+=L.words}if(S){const L=await getCharsAndWordsFromContent({input:S});P.chars+=L.chars,P.words+=L.words,P.content.chars+=L.chars,P.content.words+=L.words}return P}catch(P){throw console.error("Error reading files:",P),P}},setDirTree=w=>{const v={lastFolder:color.gray.dim(" "),indent:color.gray.dim("\u2502 "),line:color.gray.dim("\u251C\u2500\u2500 "),lastLine:color.gray.dim("\u2514\u2500\u2500 ")},S=({name:L,indent:_,isLast:O,isFolder:q})=>(O&&q&&_===0?v.lastFolder:v.indent).repeat(_)+(O?v.lastLine:v.line)+(q?color.blue.bold(L):color.green(L)),j=w.style||S,P=(L,_=0)=>{const O=Object.entries(L);let q="";for(let N=0;N<O.length;N++){const[k,M]=O[N],V=typeof M=="object"&&M!==null,U=N===O.length-1;q+=j({name:k,indent:_,isLast:U,isFirst:N===0,isFolder:V})+` `,V&&(q+=P(M,_+1))}return q};return(w.name?w.name+` `:"")+P(w.structure,w.name?1:0)},D=async w=>{if(!w.input)throw new Error("The 'input' path is required.");const v=w.max??1/0,S=w?.sort||"atoz",j=async(P,L)=>{if(L<=0)return{};const _=await readDir(P),O={},q=_.sort((N,k)=>{const M=N.name.localeCompare(k.name);return S==="atoz"?M:-M});return await Promise.all(q.map(async N=>{const k=joinPath(P,N.name);N.isDirectory()?O[N.name]=await j(k,L-1):O[N.name]=null})),O};return await j(w.input,v)},getDirTree=async w=>{const{input:v,...S}=w,j=await D(w);return setDirTree({structure:j,...S})},getPathsStructure=async w=>{const v=await getPaths(w.input,w.patternOpts),S=w.max??1/0,j=w?.sort||"atoz";if(!v||v.length===0)throw new Error("No files found");const P=v.sort((L,_)=>{const O=L.localeCompare(_);return j==="atoz"?O:-O});return((L,_)=>{if(_<=0)return{};const O={};return L.forEach(q=>{const N=q.split("/");N.length>_&&(N.length=_),N.reduce((k,M,V)=>(k[M]||(k[M]=V===N.length-1?null:{}),k[M]),O)}),O})(P,S)},getPathsTree=async w=>{const{input:v,...S}=w,j=await getPathsStructure(w);return setDirTree({structure:j,...S})},getFileContent=getFileText,getObjectFromCSVFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromCSVContent(v)}catch(v){throw new Error(`Error reading CSV file ${w}: ${v.message}`)}},getObjectFromCSVContent=async(w,v={delimiter:",",columns:!0,skip_empty_lines:!0})=>new Promise((S,j)=>{csvParse.parse(w,v,(P,L)=>{P?j(P):S(L)})}),p=async(w,v)=>Array.isArray(w)?sync.stringify(w,{header:!0,...v}):sync.stringify(w,{header:!0,...v}),csv={deserialize:getObjectFromCSVContent,serialize:p},o$3=w=>/<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)/i.test(w.trim()),getObjectFromINIFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromINIContent(v)}catch(v){throw new Error(`Error reading INI file ${w}: ${v.message}`)}},getObjectFromINIContent=async w=>{if(o$3(w))throw new Error("Content is HTML");return n__default$3.parse(w)},s$1=async w=>n__default$3.stringify(w,{align:!0}),ini={deserialize:getObjectFromINIContent,serialize:s$1},getObjectFromJSFile=async(w,v="default")=>{try{w=validateHomeDir(w);const S=(await import(node_url.pathToFileURL(w).href))[v];if(!S)throw new Error(`No [${v}] export found`);if(typeof S!="object")throw new Error("Export is not an object");return S}catch(S){throw S instanceof SyntaxError?new Error(`Syntax error in JS file ${w}: ${S.message}`):S instanceof Error&&S.code==="MODULE_NOT_FOUND"?new Error(`Module not found at ${w}: ${S.message}`):S instanceof TypeError?new Error(`Error accessing export [${v}] in ${w}: ${S.message}`):new Error(`Error reading JS file ${w}: ${S instanceof Error?S.message:String(S)}`)}},getObjectFromJSContent=async(w,v="default")=>{const S=/export\s+default\s+({[^]*?});/,j=new RegExp(`export\\s+(const|let|var|function)\\s+${v}\\s*=\\s*({[^]*?});`);let P;const L=w.match(S);if(L&&L.length>1)P=L[1];else{const _=w.match(j);_&&_.length>2&&(P=_[2])}if(!P)throw new Error(`No export object found for "${v}".`);try{const _=new Function(`return ${P}`)();if(typeof _!="object"||_===null)throw new Error("The export is not a valid object.");return _}catch(_){throw new Error(`Error when loading the object from the Javascript content: ${_.message}`)}},getObjectFromJSONFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromJSONContent(v)}catch(v){throw new Error(`Error reading JSON file ${w}: ${v.message}`)}},getObjectFromJSONContent=async w=>JSON.parse(w),json={deserialize:getObjectFromJSONContent,serialize:w=>JSON.stringify(w),parser:getObjectFromJSONContent,stringify:w=>JSON.stringify(w)},svg={deserialize:svgson.parse,serialize:svgson.stringify},getObjectFromTOMLFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromTOMLContent(v)}catch(v){throw new Error(`Error reading TOML file ${w}: ${v.message}`)}},getObjectFromTOMLContent=async w=>smolToml.parse(w),toml={deserialize:getObjectFromTOMLContent,serialize:w=>smolToml.stringify(w)},getObjectFromXMLFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromXMLContent(v)}catch(v){throw new Error(`Error reading XML file ${w}: ${v.message}`)}},getObjectFromXMLContent=async w=>{try{return new fastXmlParser.XMLParser().parse(w)}catch(v){throw new Error(`Error parsing XML content: ${v.message}`)}},s=async w=>new fastXmlParser.XMLBuilder().build(w),xml={deserialize:getObjectFromXMLContent,serialize:s},getObjectFromYAMLFile=async w=>{try{const v=await getFileContent(w);return await getObjectFromYAMLContent(v)}catch(v){throw new Error(`Error reading YAML file ${w}: ${v.message}`)}},getObjectFromYAMLContent=async w=>t__default.load(w),yaml={deserialize:getObjectFromYAMLContent,serialize:w=>t__default.dump(w)},createMergeDataFn=w=>(...v)=>{const S=(...j)=>deepmergeTs.deepmergeCustom(w||{})(...j);if(v.length===1){const[j]=v;return Array.isArray(j)?S(...j):j}return S(...v)},o$2={json:"json",yml:"yml",yaml:"yaml",toml:"toml",js:"js",mjs:"mjs",ini:"ini",xml:"xml",csv:"csv"},getObjectFromFile=async w=>{try{if(!await existsFile(w))throw Error("File does not exists");let v;if(w.endsWith("."+o$2.json))v=await getObjectFromJSONFile(w);else if(w.endsWith("."+o$2.yml)||w.endsWith("."+o$2.yaml))v=await getObjectFromYAMLFile(w);else if(w.endsWith("."+o$2.toml))v=await getObjectFromTOMLFile(w);else if(w.endsWith("."+o$2.js)||w.endsWith("."+o$2.mjs))v=await getObjectFromJSFile(w);else if(w.endsWith("."+o$2.ini))v=await getObjectFromINIFile(w);else if(w.endsWith("."+o$2.csv))v=await getObjectFromCSVFile(w);else if(w.endsWith("."+o$2.xml))v=await getObjectFromXMLFile(w);else throw new Error("Unsupported file format. Expected JSON, YAML or TOML.");if(typeof v!="object"||v===null)throw new Error("Data is not an object.");return v}catch(v){throw new Error(`Error reading file ${w}: ${v.message}`)}},getObjectFromNonCheckFile=async w=>{try{const v=await getFileContent(w),S=await getObjectFromContent(v);if(typeof S!="object"||S===null)throw new Error("Data is not an object.");return S}catch(v){throw new Error(`Error reading file ${w}: ${v.message}`)}},getObjectFromPath=async(w,v)=>{try{const S=Object.values(o$2);for(let j=0;j<S.length;j++){const P=S[j],L=joinPath(w,v+"."+P);if(await existsFile(L))return await getObjectFromFile(L)}throw Error("Path not exist")}catch(S){throw new Error(`Error reading file ${w} with filename ${v}: ${S.message}`)}},getObjectFromContent=async w=>{const[v,S]=await catchError(getObjectFromJSONContent(w));if(!v&&S)return S;const[j,P]=await catchError(getObjectFromYAMLContent(w));if(!j&&P)return P;const[L,_]=await catchError(getObjectFromTOMLContent(w));if(!L&&_)return _;const[O,q]=await catchError(getObjectFromJSContent(w));if(!O&&q)return q;const[N,k]=await catchError(getObjectFromINIContent(w));if(!N&&k)return k;const[M,V]=await catchError(getObjectFromXMLContent(w));if(!M&&V)return V;const[U,B]=await catchError(getObjectFromCSVContent(w));if(!U&&B&&Array.isArray(B))return B;throw new Error("Cannot parse object from content")},getObjectFromUrl=async w=>{try{const v=await fetch2string(w);return getObjectFromContent(v)}catch(v){throw new Error(`Error getting [${w}] data. ${v.message}`)}},getObjectFrom=async w=>{try{const v=getStringType(w);return v==="url"?await getObjectFromUrl(w):v==="path"?await getObjectFromFile(w):await getObjectFromContent(w)}catch(v){throw new Error(v.message)}},createValidateSchemaFn=w=>w,createValidateSchema=w=>w(validate),formatValidationError=w=>zodValidationError.fromError(w).toString(),ValidateError=zod.ZodError,validate=zod.z,serializeValidation=zodex.zerialize,deserializeValidation=zodex.dezerialize;class Validation{Error=ValidateError;schema=validate;formatError=formatValidationError;serialize=zodex.zerialize;deserialize=zodex.dezerialize;createLiteralUnion(v){return zod.z.union(v.map(S=>zod.z.literal(S)))}}const zod2schema=async w=>await zodToJsonSchema.zodToJsonSchema(w.schema,w.opts),schema2zod=async w=>await jsonSchemaToZod.jsonSchemaToZod(w.schema,w.opts),schema2object=w=>JSON.parse(w),ts2schema=async w=>await tsJsonSchemaGenerator.createGenerator(w.config).createSchema(w.config.type),schema2ts=async w=>jsonSchemaToTypescriptLite.compile(w.schema,w.name,{...w?.opts}),schema2type=async w=>{const v="PKGSchema",S=(await schema2ts({name:v,schema:w.schema})).replace(new RegExp(`^[\\s\\S]*?${v}\\s`),"");return w.required&&S.replaceAll("?",""),w.noUnknownObject&&S.replaceAll(/^\s*\[k: string\]: unknown;\s*$/gm,"").replaceAll(/^\s*[\r\n]+/gm,""),S},a={INVALID_SCHEMA:"INVALID_SCHEMA",INVALID_DATA:"INVALID_DATA",UNEXPECTED:"UNEXPECTED"};class c extends TypedError{}const A$1=async(w,v)=>{const S=async()=>v.parse(w),[j,P]=await catchError(S());if(!j)return P;throw j instanceof ValidateError?new c(a.INVALID_DATA,{data:j.errors}):new c(a.UNEXPECTED,{data:j.message})},validateSchema=async(w,v)=>{try{if(typeof w=="string"&&(w=await getObjectFrom(w)),v instanceof validate.ZodType)return await A$1(w,v);if(typeof v=="string"&&(v=await getObjectFrom(v),typeof v!="object"))throw new c(a.INVALID_SCHEMA,{data:v});const S="2020-12",j=!0,P=new jsonSchema.Validator(v,S,j).validate(w);if(!P.valid)throw new c(a.INVALID_DATA,{data:P.errors});return w}catch(S){throw new c(S?.message||a.UNEXPECTED)}},F=node_util.promisify(node_stream.pipeline),y=/^[/]([^/]+)[/]([^/]+)[/]tree[/]([^/]+)[/](.*)/,b=async(w,v,S)=>{const j=await fetch(`https://api.github.com/repos/${w}`,v?{headers:{Authorization:`Bearer ${v}`}}:{});if(j.status===401)throw S||console.log("\u26A0 The token provided is invalid or has been revoked.",{token:v}),new Error("Invalid token");if(j.status===403){if(j.headers.get("X-RateLimit-Remaining")==="0")throw S||console.log("\u26A0 Your token rate limit has been exceeded.",{token:v}),new Error("Rate limit exceeded")}else if(j.status===404)throw S||console.log("\u26A0 Repository was not found.",{repo:w}),new Error("Repository not found");if(!j.ok)throw S||console.log("\u26A0 Could not obtain repository data from the GitHub API.",{repo:w,response:j}),new Error("Fetch error");return j.json()},x=async({user:w,repository:v,ref:S="HEAD",directory:j,token:P,muteLog:L})=>{j.endsWith("/")||(j+="/");const _=[],O=await b(`${w}/${v}/git/trees/${S}?recursive=1`,P,L);if(O.message)throw new Error(O.message);for(const q of O.tree)q.type==="blob"&&q.path.startsWith(j)&&_.push(q);return _},$=async(w,v,S,j,P)=>{const L=(await b(`${w}/${v}`,P?.token,P?.muteLog)).private;return{files:await x({user:w,repository:v,ref:S,directory:decodeURIComponent(j),token:P?.token,muteLog:P?.muteLog}),repoIsPrivate:L}},A=(w,v)=>{try{const[,S,j,P,L]=y.exec(new URL(w).pathname)??[];return[S,j,P,L]}catch{}return[]},C=async(w,v,S)=>{let j,P;const L={files:{},downloaded:0,success:!1},[_,O,q,N]=A(w);if(!_||!O)return S?.muteLog||console.error("Invalid url. It must match: ",y),L.error="Invalid url",L;v||(v=resolvePath(process.cwd(),N)),isAbsolutePath(v)||(v=resolvePath(process.cwd(),v));try{j=await $(_,O,q,N,S)}catch(I){S?.muteLog||console.error("Failed to fetch repo meta info: ",I),await new Promise(R=>setTimeout(R,3e3));try{j=await $(_,O,q,N,S)}catch(R){return S?.muteLog||console.error("Failed to fetch repo meta info after second attempt: ",R),L.error=R,L}}const{files:k}=j;if(k.length===0)return S?.muteLog||console.log("No files to download"),L.success=!0,L;S?.muteLog||console.log(`Downloading ${k.length} files\u2026`);const M=async I=>{const R=await fetch(`https://raw.githubusercontent.com/${_}/${O}/${q}/${I.path}`,S?.token?{headers:{Authorization:`Bearer ${S?.token}`}}:void 0);if(!R.ok)throw new Error(`HTTP ${R.statusText} for ${I.path}`);return R};P=0;const V=async I=>{let R;try{R=await M(I)}catch(W){S?.muteLog||console.log("\u26A0 Failed to download file: "+I.path,W),await new Promise(H=>setTimeout(H,2e3));try{R=await M(I)}catch(H){S?.muteLog||console.log("\u26A0 Failed to download file after second attempt: "+I.path,H);return}}try{P++;const W=resolvePath(v,I.path.replace(N+"/",""));await ensureDir(getDirName(W)),await F(R.body,node_fs.createWriteStream(W)),L.files[I.path]=W}catch(W){S?.muteLog||console.error("Failed to write file: "+I.path,W)}},U=S?.requests??10,B=[];for(let I=0;I<k.length;I++){const R=I%U;B[R]&&await B[R],B[R]=V(k[I])}return await Promise.all(B),S?.muteLog||console.log(`Downloaded ${P}/${k.length} files`),L.downloaded=P,k.length===P&&(L.success=!0),L},downloadGitHubPath=async w=>{await C(w.input,w.output,{token:w.token})},isGitHubAuthenticated=()=>{try{return node_child_process.execSync("gh auth status",{encoding:"utf-8"}).includes("Logged in to github.com")}catch{return!1}},downloadGitHubRelease=async({user:w,repo:v,outputPath:S,filename:j,newFilename:P,version:L=""})=>{const _=node_util.promisify(node_child_process.exec),O=node_path.join(S,j),q=node_path.join(S,P||j),N=`gh release download ${L||""} --repo ${w}/${v} --pattern ${j} --dir ${S}`;try{if(!isGitHubAuthenticated())throw new Error('You need to authenticate in GitHub via CLI with "gh auth login"');const{stderr:k}=await _(N);if(k){console.error(`stderr: ${k}`);return}console.log(`File downloaded successfully to ${O}`),P&&(await promises.rename(O,q),console.log(`File renamed successfully to ${q}`))}catch(k){console.error(`Error: ${k.message}`)}},createMdLink=({name:w,URL:v,imgURL:S})=>S?`[![${w}](${S})](${v})`:`[${w}](${v})`,createMdLinks=w=>{let v="";for(let S=0;S<w.length;S++)v+=createMdLink(w[S]),S!==w.length-1&&(v+=` `);return v},createBadgeSVG=badgeMaker.makeBadge,createBadgeURL=w=>{const{path:v,style:S="flat",host:j="https://img.shields.io",...P}=w;if(!v)throw new Error('The "path" parameter is required to create a badge URL.');const L=joinUrl(j,v),_=new URLSearchParams({style:S});for(const[O,q]of Object.entries(P))q&&_.append(O,q.toString());return`${L}?${_.toString()}`},o$1=unified.unified().use(t__default$1).use(e__default$3),deserialize=w=>o$1.parse(w),serialize=w=>o$1.stringify(w),parser={__proto__:null,deserialize,serialize},o=async w=>{const v=getStringType(w);return v==="path"?await readFile(w,"utf-8"):v==="url"?await fetch2string(w):w},getMD=async w=>await o(w),getHTML=async w=>await o(w),md2html=async w=>(w=await o(w),await new marked.Marked().parse(w)),md2terminal=async(w,v)=>{w=await o(w);const S=new marked.Marked;return S.use(markedTerminal.markedTerminal(v?.renderer,v?.highlight)),await S.parse(w)},html2md=async w=>(w=await o(w),new x__default().turndown(w)),html2terminal=async w=>(w=await o(w),w=await html2md(w),await md2terminal(w)),incrementMdHeaders=w=>{const v=w.split(` `);let S=!1;return v.map(j=>{if(j.startsWith("```"))return S=!S,j;if(S)return j;if(/^(#{1,6})\s/.test(j)){const P=j.match(/^(#{1,6})\s/);if(P){const L=P[1];if(L.length<6){const _="#".repeat(L.length+1);return j.replace(L,_)}}}return j}).join(` `)},getMDToc=async w=>{w=await o(w);const v=new marked.Marked().lexer(w),S=[];return v.forEach(j=>{if(j.type==="heading"){const P=j.depth,L=j.text,_=L.toLowerCase().replace(/\s+/g,"-").replace(/[^\w-]+/g,"");S.push({level:P,title:L,anchor:_})}}),S},geMDTocString=async w=>{let v,S;const{title:j,input:P,removeH1:L,maxHeadingLevel:_}=w;S=j?`## ${j} `:"";const O=await getMDToc(P),q=L?O.filter(M=>M.level!==1):O,N=_??6,k=q.filter(M=>M.level<=N);return v=1,k.length&&k[0].level>1&&(v=k[0].level),k.forEach((M,V)=>{const U=V>0&&M.level>v?" ".repeat(M.level-v):"";S+=`${U}- [${M.title}](#${M.anchor}) `}),S},qrcode=async(w,v)=>new Promise(S=>{s__default.generate(w,v,j=>S(j))}),getPKG=async(w,v)=>{const S=await getObjectFromUrl(`https://registry.npmjs.org/${w.toLowerCase()}`);return S.versions[v?.version?v.version:S["dist-tags"].latest]},getPKGVersion=async w=>{const{version:v}=await getPKG(w);return v},f=async w=>{try{const v=await fetch(w);return Buffer.from(await v.arrayBuffer())}catch(v){throw new Error(`Error fetching ghaphic from URL: ${v.message}`)}},getMediaInput=async w=>{if(typeof w=="string"){const v=getStringType(w);return v==="url"?await f(w):v==="path"?await readFile(w):Buffer.from(w,"utf-8")}else{if(w instanceof URL)return await f(w);if(Buffer.isBuffer(w))return w}throw new Error(`Invalid input type: ${typeof w}`)},getMediaPalette=async(w,v=6)=>{try{const S=await getMediaInput(w);return new Promise((j,P)=>{const L=new pngjs.PNG;(_=>{L.parse(_,(O,q)=>{if(O)return P(O);const N=[];for(let M=0;M<q.data.length;M+=4){const V=q.data[M],U=q.data[M+1],B=q.data[M+2];q.data[M+3]>0&&N.push([V,U,B])}const k=h__default(N,v).palette().map(([M,V,U])=>`#${(1<<24|M<<16|V<<8|U).toString(16).slice(1)}`);j(k)})})(S)})}catch(S){throw new Error(`Error getting media Palette: ${S instanceof Error?S.message:S}`)}};exports.process=e__default,exports.terminalSize=C__default,exports.createWriteStream=node_fs.createWriteStream,exports.fileURLToPath=node_url.fileURLToPath,exports.stringWidth=stringWidth__default,exports.deepmerge=deepmergeTs.deepmerge,exports.deepmergeCustom=deepmergeTs.deepmergeCustom,exports.RunLocalNodeBinError=RunLocalNodeBinError,exports.TypedError=TypedError,exports.ValidateError=ValidateError,exports.Validation=Validation,exports.align=align,exports.animate=animate,exports.arePathsEqual=arePathsEqual,exports.asciiFont=asciiFont,exports.box=box,exports.cache=cache,exports.cancel=cancel,exports.capitalize=capitalize,exports.catchError=catchError,exports.catchExecOutput=catchExecOutput,exports.chroma=chroma,exports.color=color,exports.colorConversion=colorConversion,exports.columns=columns,exports.copyDir=copyDir,exports.copyFile=copyFile,exports.createBadgeSVG=createBadgeSVG,exports.createBadgeURL=createBadgeURL,exports.createCli=createCli,exports.createDir=createDir,exports.createMdLink=createMdLink,exports.createMdLinks=createMdLinks,exports.createMergeDataFn=createMergeDataFn,exports.createSymlink=createSymlink,exports.createValidateSchema=createValidateSchema,exports.createValidateSchemaFn=createValidateSchemaFn,exports.csv=csv,exports.decompressFile=decompressFile,exports.delay=delay,exports.deprecatedAlerts=deprecatedAlerts,exports.deserializeValidation=deserializeValidation,exports.downloadGitHubPath=downloadGitHubPath,exports.downloadGitHubRelease=downloadGitHubRelease,exports.ensureDir=ensureDir,exports.exec=exec,exports.execChild=execChild,exports.execModulePath=execModulePath,exports.execModulePathWithOutput=execModulePathWithOutput,exports.execProcess=execProcess,exports.existsDir=existsDir,exports.existsFile=existsFile,exports.existsLocalBin=existsLocalBin,exports.existsLocalBins=existsLocalBins,exports.existsOptions=existsOptions,exports.existsPath=existsPath,exports.fetch2string=fetch2string,exports.formatValidationError=formatValidationError,exports.geMDTocString=geMDTocString,exports.getAbsolutePath=getAbsolutePath,exports.getArch=getArch,exports.getArrayFlagValue=getArrayFlagValue,exports.getBaseName=getBaseName,exports.getBooleanFlagValue=getBooleanFlagValue,exports.getCharsAndWords=getCharsAndWords,exports.getCharsAndWordsFrom=getCharsAndWordsFrom,exports.getCharsAndWordsFromContent=getCharsAndWordsFromContent,exports.getCharsAndWordsFromPaths=getCharsAndWordsFromPaths,exports.getCharsAndWordsFromUrl=getCharsAndWordsFromUrl,exports.getChoiceFlagValue=getChoiceFlagValue,exports.getCmd=getCmd,exports.getCountFromPaths=getCountFromPaths,exports.getCurrentDateTime=getCurrentDateTime,exports.getCurrentDateTimeString=getCurrentDateTimeString,exports.getCurrentDir=getCurrentDir,exports.getDirName=getDirName,exports.getDirTree=getDirTree,exports.getExtName=getExtName,exports.getFileText=getFileText,exports.getFilteredFileNames=getFilteredFileNames,exports.getHTML=getHTML,exports.getLocalNodeBinPath=getLocalNodeBinPath,exports.getLocalPkgPath=getLocalPkgPath,exports.getMD=getMD,exports.getMDToc=getMDToc,exports.getMatch=getMatch,exports.getMediaInput=getMediaInput,exports.getMediaPalette=getMediaPalette,exports.getModulePath=getModulePath,exports.getObjectFrom=getObjectFrom,exports.getObjectFromCSVContent=getObjectFromCSVContent,exports.getObjectFromCSVFile=getObjectFromCSVFile,exports.getObjectFromContent=getObjectFromContent,exports.getObjectFromFile=getObjectFromFile,exports.getObjectFromINIContent=getObjectFromINIContent,exports.getObjectFromINIFile=getObjectFromINIFile,exports.getObjectFromJSContent=getObjectFromJSContent,exports.getObjectFromJSFile=getObjectFromJSFile,exports.getObjectFromJSONContent=getObjectFromJSONContent,exports.getObjectFromJSONFile=getObjectFromJSONFile,exports.getObjectFromNonCheckFile=getObjectFromNonCheckFile,exports.getObjectFromPath=getObjectFromPath,exports.getObjectFromTOMLContent=getObjectFromTOMLContent,exports.getObjectFromTOMLFile=getObjectFromTOMLFile,exports.getObjectFromUrl=getObjectFromUrl,exports.getObjectFromXMLContent=getObjectFromXMLContent,exports.getObjectFromXMLFile=getObjectFromXMLFile,exports.getObjectFromYAMLContent=getObjectFromYAMLContent,exports.getObjectFromYAMLFile=getObjectFromYAMLFile,exports.getPKG=getPKG,exports.getPKGVersion=getPKGVersion,exports.getPaths=getPaths,exports.getPathsStream=getPathsStream,exports.getPathsStructure=getPathsStructure,exports.getPathsTree=getPathsTree,exports.getPlatform=getPlatform,exports.getStringFlagValue=getStringFlagValue,exports.getStringFrom=getStringFrom,exports.getStringType=getStringType,exports.getStringsFrom=getStringsFrom,exports.getTempDir=getTempDir,exports.gradient=gradient,exports.hideBin=hideBin,exports.highlight=highlight,exports.html2md=html2md,exports.html2terminal=html2terminal,exports.icon=icon,exports.incrementMdHeaders=incrementMdHeaders,exports.indent=indent,exports.ini=ini,exports.isAbsolutePath=isAbsolutePath,exports.isBrowser=e,exports.isBun=t,exports.isDeno=i,exports.isDev=isDev,exports.isDirectory=isDirectory,exports.isGitHubAuthenticated=isGitHubAuthenticated,exports.isJsDom=s$3,exports.isNode=o$4,exports.isPath=isPath,exports.isWebWorker=n$1,exports.joinPath=joinPath,exports.joinUrl=joinUrl,exports.json=json,exports.line=line,exports.link=link,exports.localStorage=localStorage,exports.logger=logger,exports.md=parser,exports.md2html=md2html,exports.md2terminal=md2terminal,exports.normalizePath=normalizePath,exports.object2string=object2string,exports.onCancel=onCancel,exports.onConsole=onConsole,exports.onExit=onExit,exports.onStd=onStd,exports.open=open,exports.openApp=openApp,exports.performance=performance,exports.promptGroup=promptGroup,exports.promptLine=promptLine,exports.promptLineCore=promptLineCore,exports.promptLineEnquirer=promptLineEnquirer,exports.promptLineGroup=promptLineGroup,exports.qrcode=qrcode,exports.readDir=readDir,exports.readFile=readFile,exports.relativePath=relativePath,exports.removeDir=removeDir,exports.removeDirIfExist=removeDirIfExist,exports.removeFile=removeFile,exports.removeFileIfExist=removeFileIfExist,exports.removePathIfExist=removePathIfExist,exports.replaceConsole=replaceConsole,exports.replacePlaceholders=replacePlaceholders,exports.replaceStd=replaceStd,exports.resolvePath=resolvePath,exports.rmDeprecationAlerts=rmDeprecationAlerts,exports.runLocalNodeBin=runLocalNodeBin,exports.schema2object=schema2object,exports.schema2ts=schema2ts,exports.schema2type=schema2type,exports.schema2zod=schema2zod,exports.serializeValidation=serializeValidation,exports.setDirTree=setDirTree,exports.spinner=spinner,exports.svg=svg,exports.table=table,exports.toml=toml,exports.ts2schema=ts2schema,exports.validate=validate,exports.validateHomeDir=validateHomeDir,exports.validateSchema=validateSchema,exports.writeFile=writeFile,exports.writeFileContent=writeFileContent,exports.xml=xml,exports.yaml=yaml,exports.zipFile=zipFile