create-mugnavo 0.3.4 → 0.4.0

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.
Files changed (2) hide show
  1. package/dist/index.mjs +4 -4
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -82,11 +82,11 @@ ${t?a(`cyan`,L):``}
82
82
  `)}catch(e){console.error(e)}}const tn=/^no[-A-Z]/;async function nn(e,t){let n=await H(e.meta||{}),r=Kt(await H(e.args||{})),i=await H(t?.meta||{}),a=`${i.name?`${i.name} `:``}`+(n.name||process.argv[1]),o=[],s=[],c=[],l=[];for(let e of r)if(e.type===`positional`){let t=e.name.toUpperCase(),n=e.required!==!1&&e.default===void 0;s.push([W(t+rn(e)),an(e,n)]),l.push(n?`<${t}>`:`[${t}]`)}else{let t=e.required===!0&&e.default===void 0,n=[...(e.alias||[]).map(e=>`-${e}`),`--${e.name}`].join(`, `)+rn(e);if(o.push([W(n),an(e,t)]),e.type===`boolean`&&(e.default===!0||e.negativeDescription)&&!tn.test(e.name)){let n=[...(e.alias||[]).map(e=>`--no-${e}`),`--no-${e.name}`].join(`, `);o.push([W(n),[e.negativeDescription,t?Ut(`(Required)`):``].filter(Boolean).join(` `)])}t&&l.push(`--${e.name}`+rn(e))}if(e.subCommands){let t=[],n=await H(e.subCommands);for(let[e,r]of Object.entries(n)){let n=await H((await H(r))?.meta);if(n?.hidden)continue;let i=V(n?.alias),a=[e,...i].join(`, `);c.push([W(a),n?.description||``]),t.push(e,...i)}l.push(t.join(`|`))}let u=[],d=n.version||i.version;u.push(Ut(`${n.description} (${a+(d?` v${d}`:``)})`),``);let f=o.length>0||s.length>0;return u.push(`${Wt(Ht(`USAGE`))} ${W(`${a}${f?` [OPTIONS]`:``} ${l.join(` `)}`)}`,``),s.length>0&&(u.push(Wt(Ht(`ARGUMENTS`)),``),u.push(Rt(s,` `)),u.push(``)),o.length>0&&(u.push(Wt(Ht(`OPTIONS`)),``),u.push(Rt(o,` `)),u.push(``)),c.length>0&&(u.push(Wt(Ht(`COMMANDS`)),``),u.push(Rt(c,` `)),u.push(``,`Use ${W(`${a} <command> --help`)} for more information about a command.`)),u.filter(e=>typeof e==`string`).join(`
83
83
  `)}function rn(e){let t=e.valueHint?`=<${e.valueHint}>`:``,n=t||`=<${Lt(e.name)}>`;return!e.type||e.type===`positional`||e.type===`boolean`?t:e.type===`enum`&&e.options?.length?`=<${e.options.join(`|`)}>`:n}function an(e,t){let n=t?Ut(`(Required)`):``,r=e.default===void 0?``:Ut(`(Default: ${e.default})`);return[e.description,n,r].filter(Boolean).join(` `)}async function on(e,t={}){let n=t.rawArgs||process.argv.slice(2),r=t.showUsage||en;try{let t=await sn(e);if(t.help.length>0&&n.some(e=>t.help.includes(e)))await r(...await Xt(e,n)),process.exit(0);else if(n.length===1&&t.version.includes(n[0])){let t=typeof e.meta==`function`?await e.meta():await e.meta;if(!t?.version)throw new U(`No version specified`,`E_NO_VERSION`);console.log(t.version)}else await Yt(e,{rawArgs:n})}catch(t){t instanceof U?(await r(...await Xt(e,n)),console.error(t.message)):console.error(t,`
84
84
  `),process.exit(1)}}async function sn(e){let t=await H(e.args||{}),n=new Set,r=new Set;for(let[e,i]of Object.entries(t)){n.add(e);for(let e of V(i.alias))r.add(e)}return{help:cn(`help`,`h`,n,r),version:cn(`version`,`v`,n,r)}}function cn(e,t,n,r){return n.has(e)||r.has(e)?[]:n.has(t)||r.has(t)?[`--${e}`]:[`--${e}`,`-${t}`]}var ln=de({a:()=>G,n:()=>bn,r:()=>yn,t:()=>Yn});const un=/^[A-Za-z]:\//;function dn(e=``){return e&&e.replace(/\\/g,`/`).replace(un,e=>e.toUpperCase())}const fn=/^[/\\]{2}/,pn=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,mn=/^[A-Za-z]:$/,hn=function(e){if(e.length===0)return`.`;e=dn(e);let t=e.match(fn),n=K(e),r=e[e.length-1]===`/`;return e=vn(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),mn.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!K(e)?`/${e}`:e)},gn=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;e&&r?t+=n.slice(1):t+=e||r?n:`/${n}`}else t+=n;return hn(t)};function _n(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}const G=function(...e){e=e.map(e=>dn(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:_n();!i||i.length===0||(t=`${i}/${t}`,n=K(i))}return t=vn(t,!n),n&&!K(t)?`/${t}`:t.length>0?t:`.`};function vn(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}const K=function(e){return pn.test(e)},yn=function(e){let t=dn(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&mn.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(K(e)?`/`:`.`)},bn=function(e,t){let n=dn(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r};globalThis.process?.platform;var q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),J=t(import.meta.url);const xn=/^path$/i,Sn={key:`PATH`,value:``};function Cn(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!xn.test(t))continue;let n=e[t];return n?{key:t,value:n}:Sn}return Sn}function wn(e,t){let n=t.value.split(y),r=[],i=e,a;do r.push(C(i,`node_modules`,`.bin`)),a=i,i=b(i);while(i!==a);let o=r.concat(n).join(y);return{key:t.key,value:o}}function Tn(e,t){let n={...process.env,...t},r=wn(e,Cn(n));return n[r.key]=r.value,n}const En=e=>{let t=e.length,n=new ne,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var Dn=q(((e,t)=>{t.exports=a,a.sync=o;var n=J(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),On=q(((e,t)=>{t.exports=r,r.sync=i;var n=J(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),kn=q(((e,t)=>{J(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Dn():On();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),An=q(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=J(`path`),i=n?`;`:`:`,a=kn(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),jn=q(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),Mn=q(((e,t)=>{let n=J(`path`),r=An(),i=jn();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),Nn=q(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),Pn=q(((e,t)=>{t.exports=/^#!(.*)/})),Fn=q(((e,t)=>{let n=Pn();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),In=q(((e,t)=>{let n=J(`fs`),r=Fn();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),Ln=q(((e,t)=>{let n=J(`path`),r=Mn(),i=Nn(),a=In(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),Rn=q(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),zn=q(((e,t)=>{let n=J(`child_process`),r=Ln(),i=Rn();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i}))(),Bn=class extends Error{result;output;get exitCode(){if(this.result.exitCode!==null)return this.result.exitCode}constructor(e,t){super(`Process exited with non-zero status (${e.exitCode})`),this.result=e,this.output=t}};const Vn={timeout:void 0,persist:!1},Hn={windowsHide:!0};function Un(e,t){return{command:S(e),args:t??[]}}function Wn(e){let t=new AbortController;for(let n of e){if(n.aborted)return t.abort(),n;n.addEventListener(`abort`,()=>{t.abort(n.reason)},{signal:t.signal})}return t.signal}async function Gn(e){let t=``;for await(let n of e)t+=n.toString();return t}var Kn=class{_process;_aborted=!1;_options;_command;_args;_resolveClose;_processClosed;_thrownError;get process(){return this._process}get pid(){return this._process?.pid}get exitCode(){if(this._process&&this._process.exitCode!==null)return this._process.exitCode}constructor(e,t,n){this._options={...Vn,...n},this._command=e,this._args=t??[],this._processClosed=new Promise(e=>{this._resolveClose=e})}kill(e){return this._process?.kill(e)===!0}get aborted(){return this._aborted}get killed(){return this._process?.killed===!0}pipe(e,t,n){return Jn(e,t,{...n,stdin:this})}async*[Symbol.asyncIterator](){let e=this._process;if(!e)return;let t=[];this._streamErr&&t.push(this._streamErr),this._streamOut&&t.push(this._streamOut);let n=En(t),r=d.createInterface({input:n});for await(let e of r)yield e.toString();if(await this._processClosed,e.removeAllListeners(),this._thrownError)throw this._thrownError;if(this._options?.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Bn(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?Gn(this._streamOut):``,this._streamErr?Gn(this._streamErr):``]);if(await this._processClosed,this._options?.stdin&&await this._options.stdin,e.removeAllListeners(),this._thrownError)throw this._thrownError;let r={stderr:n,stdout:t,exitCode:this.exitCode};if(this._options.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Bn(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=s(),t=this._options,n={...Hn,...t.nodeOptions},r=[];this._resetState(),t.timeout!==void 0&&r.push(AbortSignal.timeout(t.timeout)),t.signal!==void 0&&r.push(t.signal),t.persist===!0&&(n.detached=!0),r.length>0&&(n.signal=Wn(r)),n.env=Tn(e,n.env);let{command:i,args:a}=Un(this._command,this._args),o=(0,zn._parse)(i,a,n),c=ae(o.command,o.args,o.options);if(c.stderr&&(this._streamErr=c.stderr),c.stdout&&(this._streamOut=c.stdout),this._process=c,c.once(`error`,this._onError),c.once(`close`,this._onClose),t.stdin!==void 0&&c.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(c.stdin)}}_resetState(){this._aborted=!1,this._processClosed=new Promise(e=>{this._resolveClose=e}),this._thrownError=void 0}_onError=e=>{if(e.name===`AbortError`&&(!(e.cause instanceof Error)||e.cause.name!==`TimeoutError`)){this._aborted=!0;return}this._thrownError=e};_onClose=()=>{this._resolveClose&&this._resolveClose()}};const qn=(e,t,n)=>{let r=new Kn(e,t,n);return r.spawn(),r},Jn=qn;var Yn=e({detectPackageManager:()=>nr,installDependencies:()=>rr,packageManagers:()=>Y});async function Xn(e,t,n={}){let r=hn(e).split(`/`);for(;r.length>0;){let e=await t(r.join(`/`)||`/`);if(e||!n.includeParentDirs)return e;r.pop()}}function Zn(e){let t;return()=>(t===void 0&&(t=e().then(e=>(t=e,t))),t)}const Qn=Zn(async()=>{if(globalThis.process?.versions?.webcontainer)return!1;try{let{exitCode:e}=await qn(`corepack`,[`--version`]);return e===0}catch{return!1}});async function $n(e,t,n={}){let r=e!==`npm`&&e!==`bun`&&e!==`deno`&&n.corepack!==!1&&await Qn()?[`corepack`,[e,...t]]:[e,t],{exitCode:i,stdout:a,stderr:o}=await qn(r[0],r[1],{nodeOptions:{cwd:G(n.cwd||process.cwd()),env:n.env,stdio:n.silent?`pipe`:`inherit`}});if(i!==0)throw Error(`\`${r.flat().join(` `)}\` failed.${n.silent?[``,a,o].join(`
85
- `):``}`)}async function er(e={}){let t=e.cwd||process.cwd(),n={...process.env,...e.env},r=(typeof e.packageManager==`string`?Y.find(t=>t.name===e.packageManager):e.packageManager)||await nr(e.cwd||process.cwd());if(!r)throw Error(`No package manager auto-detected.`);return{cwd:t,env:n,silent:e.silent??!1,packageManager:r,dev:e.dev??!1,workspace:e.workspace,global:e.global??!1,dry:e.dry??!1,corepack:e.corepack??!0}}function tr(e){let[t,n]=(e||``).split(`@`),[r,i]=n?.split(`+`)||[];if(t&&t!==`-`&&/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(t))return{name:t,version:r,buildMeta:i};let a=(t||``).replace(/\W+/g,``);return{name:a,version:r,buildMeta:i,warnings:[`Abnormal characters found in \`packageManager\` field, sanitizing from \`${t}\` to \`${a}\``]}}const Y=[{name:`npm`,command:`npm`,lockFile:`package-lock.json`},{name:`pnpm`,command:`pnpm`,lockFile:`pnpm-lock.yaml`,files:[`pnpm-workspace.yaml`]},{name:`bun`,command:`bun`,lockFile:[`bun.lockb`,`bun.lock`]},{name:`yarn`,command:`yarn`,lockFile:`yarn.lock`,files:[`.yarnrc.yml`]},{name:`deno`,command:`deno`,lockFile:`deno.lock`,files:[`deno.json`]}];async function nr(e,t={}){let n=await Xn(G(e||`.`),async e=>{if(!t.ignorePackageJSON){let t=gn(e,`package.json`);if(h(t)){let e=JSON.parse(await E(t,`utf8`));if(e?.packageManager){let{name:t,version:n=`0.0.0`,buildMeta:r,warnings:i}=tr(e.packageManager);if(t){let e=n.split(`.`)[0],a=Y.find(n=>n.name===t&&n.majorVersion===e)||Y.find(e=>e.name===t);return{name:t,command:t,version:n,majorVersion:e,buildMeta:r,warnings:i,files:a?.files,lockFile:a?.lockFile}}}}if(h(gn(e,`deno.json`)))return Y.find(e=>e.name===`deno`)}if(!t.ignoreLockFile){for(let t of Y)if([t.lockFile,t.files].flat().filter(Boolean).some(t=>h(G(e,t))))return{...t}}},{includeParentDirs:t.includeParentDirs??!0});if(!n&&!t.ignoreArgv){let e=process.argv[1];if(e){for(let t of Y)if(RegExp(`[/\\\\]\\.?${t.command}`).test(e))return t}}return n}async function rr(e={}){let t=await er(e),n=e.frozenLockFile?{npm:[`ci`],yarn:[`install`,`--immutable`],bun:[`install`,`--frozen-lockfile`],pnpm:[`install`,`--frozen-lockfile`],deno:[`install`,`--frozen`]}[t.packageManager.name]:[`install`];return e.ignoreWorkspace&&t.packageManager.name===`pnpm`&&n.push(`--ignore-workspace`),t.dry||await $n(t.packageManager.command,n,{cwd:t.cwd,silent:t.silent,corepack:t.corepack}),{exec:{command:t.packageManager.command,args:n}}}async function ir(e,t,n={}){let i=t+`.json`,a=JSON.parse(await E(i,`utf8`).catch(()=>`{}`)),o=(await Z(e,{method:`HEAD`,headers:n.headers}).catch(()=>void 0))?.headers.get(`etag`);if(a.etag===o&&h(t))return;typeof o==`string`&&(a.etag=o);let s=await Z(e,{headers:n.headers});if(s.status>=400)throw Error(`Failed to download ${e}: ${s.status} ${s.statusText}`);let c=m(t);await r(ie)(s.body,c),await O(i,JSON.stringify(a),`utf8`)}const ar=/^(?<repo>[-\w.]+\/[-\w.]+)(?<subdir>[^#]+)?(?<ref>#[-\w./@]+)?/,or=/^(?<repo>[-\w.]+(?:\/[-\w.]+)+?)(?:::(?<subdir>[^#]*))?(?<ref>#[-\w./@]+)?$/;function sr(e,t){let n=t?.expandRepo||e.includes(`::`),r=e.match(n?or:ar)?.groups||{},i=n?r.subdir?`/`+r.subdir:`/`:r.subdir||`/`;return{repo:r.repo||``,subdir:i,ref:r.ref?r.ref.slice(1):`main`}}function X(...e){process.env.DEBUG&&console.debug(`[giget]`,...e)}async function Z(e,t={}){t.headers?.[`sec-fetch-mode`]&&(t.mode=t.headers[`sec-fetch-mode`]);let n=await fetch(e,{...t,headers:lr(t.headers)}).catch(t=>{throw Error(`Failed to download ${e}: ${t}`,{cause:t})});if(t.validateStatus&&n.status>=400)throw Error(`Failed to fetch ${e}: ${n.status} ${n.statusText}`);return n}function cr(){let e=process.env.XDG_CACHE_HOME?G(process.env.XDG_CACHE_HOME,`giget`):G(se(),`.cache/giget`);if(process.platform===`win32`){let t=G(ce(),`giget`);if(!h(t)&&h(e))try{_(e,t)}catch{}return t}return e}function lr(e={}){let t={};for(let[n,r]of Object.entries(e))r&&(t[n.toLowerCase()]=r);return t}const ur=(e,t)=>{let n=dr(e);return{name:n.name,version:n.subdir?`${n.version||`default`}-${n.subdir.replaceAll(`/`,`-`)}`:n.version,tar:({auth:e}={})=>fr(n,e??t.auth)}};function dr(e,t={}){let n=t.cwd??process.cwd(),r=e.replace(/#.*$/,``),i;if(/^[./]/.test(e))r=G(n,r);else if(/^https?:\/\//.test(r)){let e=/^(https?:\/\/[^/]+)\/([\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(e){let[,t,n,a]=e;r=`${t}/${n}`,a&&(i=a)}}else if(r.includes(`@`)){let e=/^(.*?:[\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(e){let[,t,n]=e;r=t,n&&(i=n)}}else{let e={"github:":`https://github.com/`,"gh:":`https://github.com/`,"gitlab:":`https://gitlab.com/`,"bitbucket:":`https://bitbucket.org/`,"sourcehut:":`https://git.sr.ht/~`},t=/^(.+?:)/.exec(r)?.at(1);t&&e[t]?r=r.replace(t,e[t]):t||(r=`${(process.env.GIGET_GIT_HOST||`https://github.com/`).replace(/\/$/,``)}/${r}`);let n=/^(https?:\/\/[^/]+\/~?[\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(n){let[,e,t]=n;r=e,t&&(i=t)}}let a=r.replace(/^https?:\/\//,``).replace(/^.+@/,``).replace(/(\.git)?(#.*)?$/,``).replace(/^\W+/,``).replaceAll(/[:/]/g,`-`),[o,s]=/#(.+)$/.exec(e)?.at(1)?.split(`:`)??[],c=o||void 0,l=s||i;return{uri:r,name:a,...c&&{version:c},...l&&{subdir:l}}}async function fr(e,t){let n=await ee(x(ce(),`giget-git-`));if(t&&/[\r\n]/.test(t))throw Error(`Auth token must not contain newline characters`);let r={...process.env,GIT_TERMINAL_PROMPT:`0`};t&&(r.GIT_CONFIG_COUNT=`1`,r.GIT_CONFIG_KEY_0=`http.extraHeader`,r.GIT_CONFIG_VALUE_0=`Authorization: Bearer ${t}`);let i={env:r,timeout:6e4},a=hr(),o=e=>mr(e,i,a),s=e=>mr(e,{...i,cwd:n},a);try{let t=[`clone`,`--progress`,`--depth`,`1`];e.subdir&&t.push(`--filter=blob:none`,`--sparse`,`--no-checkout`),e.version&&t.push(`--branch`,e.version),t.push(`--`,e.uri,n);try{a.update(`Cloning...`),await o(t),a.update(`Cloned.`)}catch(t){if(!e.version)throw t;X(`Shallow clone failed, falling back to full clone:`,t),a.update(`Shallow clone failed, cloning...`),await D(n,{recursive:!0,force:!0}),await T(n,{recursive:!0}),await s([`init`]),await s([`remote`,`add`,`origin`,e.uri]),await s([`fetch`,`origin`]),await s([`checkout`,e.version]),a.update(`Fetched.`)}e.subdir&&(a.update(`Sparse checkout ${e.subdir}...`),await s([`sparse-checkout`,`set`,e.subdir]),await s([`checkout`])),a.update(`Packing...`);let r=e.subdir?x(n,e.subdir):n,{create:i}=await import(`./tar-DC2xmAjf.mjs`).then(e=>e.t);a.done();let c=i({gzip:!0,cwd:r,filter:e=>!e.startsWith(`.git/`)&&e!==`.git`&&!e.startsWith(`./.git/`)&&e!==`./.git`},[`.`]).pipe(new ne),l=!1,u=()=>{l||(l=!0,D(n,{recursive:!0,force:!0}))};return c.on(`end`,u),c.on(`error`,u),c.on(`close`,u),c}catch(e){throw a.done(),await D(n,{recursive:!0,force:!0}),e}}const pr=[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`];function mr(e,t,n){return new Promise((r,i)=>{let a=ae(`git`,e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});a.stdout.resume();let o=``;a.stderr?.on(`data`,e=>{let t=e.toString();for(let e of t.split(/[\r\n]/)){let t=e.trim();t&&(o=t)}n&&n.update(o)}),a.on(`close`,t=>{t===0?r(o):i(Error(`git ${e[0]} exited with code ${t}. Is git installed?`))}),a.on(`error`,e=>{e.code===`ENOENT`?i(Error(`git is not installed or not found in PATH`)):i(e)})})}function hr(){if(!process.stderr.isTTY)return{update(e){},done(){}};let e=``,t=0,n=()=>{let n=pr[t%pr.length];t++,process.stderr.write(`\x1B[2K\r\x1B[2m${n} ${e}\x1B[0m`)},r=setInterval(n,80);return{update(t){e=t,n()},done(){clearInterval(r),process.stderr.write(`\x1B[2K\r`)}}}const gr=async(e,t)=>{if(e.endsWith(`.json`))return await _r(e,t);let n=new URL(e),r=bn(n.pathname);try{let i=await Z(n.href,{method:`HEAD`,validateStatus:!0,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}});if((i.headers.get(`content-type`)||``).includes(`application/json`))return await _r(e,t);let a=i.headers.get(`content-disposition`)?.match(/filename="?(.+)"?/)?.[1];a&&(r=a.split(`.`)[0])}catch(e){X(`Failed to fetch HEAD for ${n.href}:`,e)}return{name:`${r}-${n.href.slice(0,8)}`,version:``,subdir:``,tar:n.href,defaultDir:r,headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0}}},_r=async(e,t)=>{let n=await(await Z(e,{validateStatus:!0,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}})).json();if(!n.tar||!n.name)throw Error(`Invalid template info from ${e}. name or tar fields are missing!`);return n},vr=(e,t)=>{let n=sr(e),r=process.env.GIGET_GITHUB_URL||`https://api.github.com`;return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,Accept:`application/vnd.github+json`,"X-GitHub-Api-Version":`2022-11-28`},url:`${r.replace(`api.github.com`,`github.com`)}/${n.repo}/tree/${n.ref}${n.subdir}`,tar:`${r}/repos/${n.repo}/tarball/${n.ref}`}},yr={http:gr,https:gr,git:ur,github:vr,gh:vr,gitlab:(e,t)=>{let n=sr(e,{expandRepo:!0}),r=process.env.GIGET_GITLAB_URL||`https://gitlab.com`;return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0,"sec-fetch-mode":`same-origin`},url:`${r}/${n.repo}/tree/${n.ref}${n.subdir}`,tar:`${r}/${n.repo}/-/archive/${n.ref}.tar.gz`}},bitbucket:(e,t)=>{let n=sr(e);return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0},url:`https://bitbucket.com/${n.repo}/src/${n.ref}${n.subdir}`,tar:`https://bitbucket.org/${n.repo}/get/${n.ref}.tar.gz`}},sourcehut:(e,t)=>{let n=sr(e);return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0},url:`https://git.sr.ht/~${n.repo}/tree/${n.ref}/item${n.subdir}`,tar:`https://git.sr.ht/~${n.repo}/archive/${n.ref}.tar.gz`}}},br=(e=`https://raw.githubusercontent.com/unjs/giget/main/templates`,t={})=>(async n=>{let r=Date.now(),i=`${e}/${n}.json`,a=await Z(i,{headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}});if(a.status>=400)throw Error(`Failed to download ${n} template info from ${i}: ${a.status} ${a.statusText}`);let o=await a.json();if(!o.tar||!o.name)throw Error(`Invalid template info from ${i}. name or tar fields are missing!`);return X(`Fetched ${n} template info from ${i} in ${Date.now()-r}ms`),o}),xr=/^([\w+-.]+):/;async function Sr(e,t={}){t.registry=process.env.GIGET_REGISTRY??t.registry,t.auth=process.env.GIGET_AUTH??t.auth;let n=t.registry===!1?void 0:br(t.registry,{auth:t.auth}),r=t.provider||(n?`registry`:`github`),i=e,a=e.match(xr);a&&(r=a[1],i=e.slice(a[0].length),(r===`http`||r===`https`)&&(i=e)),r.endsWith(`+git`)&&(i=`${r.slice(0,-4)}:${i}`,r=`git`);let o=t.providers?.[r]||yr[r]||n;if(!o)throw Error(`Unsupported provider: ${r}`);let s=await Promise.resolve().then(()=>o(i,{auth:t.auth})).catch(e=>{throw Error(`Failed to download template from ${r}: ${e.message}`)});if(!s)throw Error(`Failed to resolve template from ${r}`);s.name=(s.name||`template`).replace(/[^\da-z-]/gi,`-`),s.defaultDir=(s.defaultDir||s.name).replace(/[^\da-z-]/gi,`-`);let c=G(G(cr(),r,s.name),(s.version||s.name)+`.tar.gz`);if(t.preferOffline&&h(c)&&(t.offline=!0),!t.offline){await T(yn(c),{recursive:!0});let e=Date.now();if(typeof s.tar==`function`){let e=s.tar;await(async()=>{let n=await e({auth:t.auth});await oe(n instanceof re?n:re.fromWeb(n),m(c))})().catch(e=>{if(!h(c))throw e;X(`Download error. Using cached version:`,e),t.offline=!0})}else await ir(s.tar,c,{headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,...lr(s.headers)}}).catch(e=>{if(!h(c))throw e;X(`Download error. Using cached version:`,e),t.offline=!0});X(`Downloaded to ${c} in ${Date.now()-e}ms`)}if(!h(c))throw Error(`Tarball not found: ${c} (offline: ${t.offline})`);let l=G(G(t.cwd||`.`),t.dir||s.defaultDir);if(t.forceClean&&await D(l,{recursive:!0,force:!0}),!t.force&&h(l)&&g(l).length>0)throw Error(`Destination ${l} already exists.`);await T(l,{recursive:!0});let u=Date.now(),d=s.subdir?.replace(/^\//,``)||``,{extract:f}=await import(`./tar-DC2xmAjf.mjs`).then(e=>e.t);if(await f({file:c,cwd:l,onReadEntry(e){e.path=e.path.split(`/`).splice(1).join(`/`),d&&(e.path.startsWith(d+`/`)?e.path=e.path.slice(d.length):e.path=``)}}),X(`Extracted to ${l} in ${Date.now()-u}ms`),t.install){X(`Installing dependencies...`);let{installDependencies:e}=await Promise.resolve().then(()=>ln).then(e=>e.t);await e({cwd:l,silent:t.silent,...typeof t.install==`object`?t.install:{}})}return{...s,source:i,dir:l}}function Cr(e){return e}const wr=Cr([`default`,`monorepo`]),Tr=Cr([`pnpm`,`npm`,`bun`,`yarn`,`deno`]),Er={name:{type:`positional`,description:`Project name`,required:!1},template:{type:`enum`,description:`Template to use`,options:wr,required:!1,alias:[`t`]},install:{type:`boolean`,description:`Install dependencies`,required:!1,alias:[`i`]},packageManager:{type:`enum`,description:`Package manager to use`,options:Tr,required:!1,alias:[`p`]}};var Q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),$=t(import.meta.url);const Dr=/^path$/i,Or={key:`PATH`,value:``};function kr(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!Dr.test(t))continue;let n=e[t];return n?{key:t,value:n}:Or}return Or}function Ar(e,t){let n=t.value.split(y),r=[],i=e,a;do r.push(C(i,`node_modules`,`.bin`)),a=i,i=b(i);while(i!==a);let o=r.concat(n).join(y);return{key:t.key,value:o}}function jr(e,t){let n={...process.env,...t},r=Ar(e,kr(n));return n[r.key]=r.value,n}const Mr=e=>{let t=e.length,n=new ne,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var Nr=Q(((e,t)=>{t.exports=a,a.sync=o;var n=$(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),Pr=Q(((e,t)=>{t.exports=r,r.sync=i;var n=$(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),Fr=Q(((e,t)=>{$(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Nr():Pr();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),Ir=Q(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=$(`path`),i=n?`;`:`:`,a=Fr(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),Lr=Q(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),Rr=Q(((e,t)=>{let n=$(`path`),r=Ir(),i=Lr();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),zr=Q(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),Br=Q(((e,t)=>{t.exports=/^#!(.*)/})),Vr=Q(((e,t)=>{let n=Br();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),Hr=Q(((e,t)=>{let n=$(`fs`),r=Vr();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),Ur=Q(((e,t)=>{let n=$(`path`),r=Rr(),i=zr(),a=Hr(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),Wr=Q(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),Gr=Q(((e,t)=>{let n=$(`child_process`),r=Ur(),i=Wr();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i}))(),Kr=class extends Error{result;output;get exitCode(){if(this.result.exitCode!==null)return this.result.exitCode}constructor(e,t){super(`Process exited with non-zero status (${e.exitCode})`),this.result=e,this.output=t}};const qr={timeout:void 0,persist:!1},Jr={windowsHide:!0};function Yr(e,t){return{command:S(e),args:t??[]}}function Xr(e){let t=new AbortController;for(let n of e){if(n.aborted)return t.abort(),n;n.addEventListener(`abort`,()=>{t.abort(n.reason)},{signal:t.signal})}return t.signal}async function Zr(e){let t=``;for await(let n of e)t+=n.toString();return t}var Qr=class{_process;_aborted=!1;_options;_command;_args;_resolveClose;_processClosed;_thrownError;get process(){return this._process}get pid(){return this._process?.pid}get exitCode(){if(this._process&&this._process.exitCode!==null)return this._process.exitCode}constructor(e,t,n){this._options={...qr,...n},this._command=e,this._args=t??[],this._processClosed=new Promise(e=>{this._resolveClose=e})}kill(e){return this._process?.kill(e)===!0}get aborted(){return this._aborted}get killed(){return this._process?.killed===!0}pipe(e,t,n){return ei(e,t,{...n,stdin:this})}async*[Symbol.asyncIterator](){let e=this._process;if(!e)return;let t=[];this._streamErr&&t.push(this._streamErr),this._streamOut&&t.push(this._streamOut);let n=Mr(t),r=d.createInterface({input:n});for await(let e of r)yield e.toString();if(await this._processClosed,e.removeAllListeners(),this._thrownError)throw this._thrownError;if(this._options?.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Kr(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?Zr(this._streamOut):``,this._streamErr?Zr(this._streamErr):``]);if(await this._processClosed,this._options?.stdin&&await this._options.stdin,e.removeAllListeners(),this._thrownError)throw this._thrownError;let r={stderr:n,stdout:t,exitCode:this.exitCode};if(this._options.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Kr(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=s(),t=this._options,n={...Jr,...t.nodeOptions},r=[];this._resetState(),t.timeout!==void 0&&r.push(AbortSignal.timeout(t.timeout)),t.signal!==void 0&&r.push(t.signal),t.persist===!0&&(n.detached=!0),r.length>0&&(n.signal=Xr(r)),n.env=jr(e,n.env);let{command:i,args:a}=Yr(this._command,this._args),o=(0,Gr._parse)(i,a,n),c=ae(o.command,o.args,o.options);if(c.stderr&&(this._streamErr=c.stderr),c.stdout&&(this._streamOut=c.stdout),this._process=c,c.once(`error`,this._onError),c.once(`close`,this._onClose),t.stdin!==void 0&&c.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(c.stdin)}}_resetState(){this._aborted=!1,this._processClosed=new Promise(e=>{this._resolveClose=e}),this._thrownError=void 0}_onError=e=>{if(e.name===`AbortError`&&(!(e.cause instanceof Error)||e.cause.name!==`TimeoutError`)){this._aborted=!0;return}this._thrownError=e};_onClose=()=>{this._resolveClose&&this._resolveClose()}};const $r=(e,t,n)=>{let r=new Qr(e,t,n);return r.spawn(),r},ei=$r;function ti(){let e=process.env.npm_config_user_agent??``;return e.startsWith(`pnpm/`)?`pnpm`:e.startsWith(`yarn/`)?`yarn`:e.startsWith(`bun/`)?`bun`:e.startsWith(`deno/`)?`deno`:`npm`}async function ni(){try{return await $r(`pnpm`,[`--version`],{throwOnError:!0}),!0}catch{return!1}}async function ri(e){await $r(`git`,[`init`],{throwOnError:!1,nodeOptions:{cwd:e,stdio:`inherit`}})}async function ii(e,t){let n=Et({title:`Installing dependencies with ${t}...`,limit:5,retainLog:!1}),r=xt();r.start();let i=[`install`];t===`npm`&&i.push(`--legacy-peer-deps`);let a=$r(t,i,{throwOnError:!1,nodeOptions:{cwd:e}});for await(let e of a){let t=e.trim();t&&n.message(t)}let o=await a;return r.stop(),o.exitCode===0?(n.success(`Dependencies installed`),!0):(n.error(`Dependency installation failed. You can run \`${t} install\` manually.`),!1)}function ai(e){return e===`npm`?`npm run dev`:e===`deno`?`deno task dev`:`${e} dev`}const oi=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function si(e){for(let t of e){let e=t.codePointAt(0);if(e!==void 0&&(e<=31||`<>:"|?*`.includes(t)))return!0}return!1}function ci(e){let t=e.trim();if(t.length===0)return`Project name is required`;if(t!==`.`){if(t.includes(`/`)||t.includes(`\\`))return`Project name cannot contain path separators`;if(si(t))return`Project name contains invalid characters`;if(t===`..`)return`Project name cannot be ..`;if(t.startsWith(`.`))return`Project name cannot start with a period`;if(t.endsWith(`.`)||t.endsWith(`-`))return`Project name cannot end with a period or hyphen`;if(t.length>214)return`Project name must be 214 characters or fewer`;if(!oi.test(t))return`Use letters, numbers, periods, underscores, or hyphens`}}function li(e,t){return typeof t==`string`&&e.includes(t)}async function ui(e){let t;try{t=await te(e)}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ENOENT`)return;throw e}if(t.length>0)return`Directory must be empty.`}async function di(){let e=await Dt({message:`Project name:`,placeholder:`my-project`,defaultValue:`my-project`,validate(e){if(typeof e==`string`)return ci(e)}});if(Re(e)){z(`Operation cancelled.`);return}return e}async function fi(){let e=await Ct({message:`Select a template:`,options:[{value:`default`,label:`Default`,hint:`minimal TanStarter template`},{value:`monorepo`,label:`Monorepo (beta)`,hint:`TanStarter via Vite+ with pnpm`}]});if(Re(e)){z(`Operation cancelled.`);return}return e}async function pi(){let e=await ht({message:`Install dependencies after scaffolding?`,initialValue:!0});if(Re(e)){z(`Operation cancelled.`);return}return e}async function mi(e){let t=await Ct({message:`Select a package manager:`,options:[{value:`pnpm`,label:`pnpm (Recommended)`},{value:`npm`,label:`npm`},{value:`bun`,label:`bun`},{value:`yarn`,label:`yarn`},{value:`deno`,label:`deno`}],initialValue:e});if(Re(t)){z(`Operation cancelled.`);return}return t}async function hi(e){let t=e.name,n=e.template,r=e.install,i=e.packageManager,a=await ni()?`pnpm`:ti();if(!t&&(t=await di(),!t))return;t=String(t).trim();let o=await ui(t===`.`?process.cwd():x(process.cwd(),t));if(o){z(o);return}let s=ci(t);if(s){z(s);return}if(!(!n&&(n=await fi(),!n))&&!(r===void 0&&(r=await pi(),r===void 0))&&!(r&&!i&&(i=await mi(a),!i))&&!(!li(wr,n)||typeof r!=`boolean`)&&!(i!==void 0&&!li(Tr,i)))return{projectName:t,template:n,install:r,selectedPackageManager:i,preferredPackageManager:a}}const gi={default:{source:`github:mugnavo/tanstarter`,homeUrl:`https://github.com/mugnavo/tanstarter`},monorepo:{source:`github:mugnavo/tanstarter-plus`,homeUrl:`https://github.com/mugnavo/tanstarter-plus`}};function _i(e){return gi[e]}function vi(e,t){return t===`.`?v(C(e))||`app`:t}async function yi(e){await D(x(e,`LICENSE`),{force:!0})}async function bi(e,t){if(t===`default`){await w(x(e,`.env.example`),x(e,`.env`),p.COPYFILE_EXCL);return}t===`monorepo`&&(await w(x(e,`apps`,`web`,`.env.example`),x(e,`apps`,`web`,`.env`),p.COPYFILE_EXCL),await w(x(e,`packages`,`db`,`.env.example`),x(e,`packages`,`db`,`.env`),p.COPYFILE_EXCL))}async function xi(e,t){let n=x(e,`package.json`),r=JSON.parse(await E(n,`utf8`));r.name=vi(e,t),await O(n,`${JSON.stringify(r,null,2)}\n`)}async function Si(e,t){let n=x(e,`README.md`),r=vi(e,t),i=await E(n,`utf8`),a=i.includes(`\r
85
+ `):``}`)}async function er(e={}){let t=e.cwd||process.cwd(),n={...process.env,...e.env},r=(typeof e.packageManager==`string`?Y.find(t=>t.name===e.packageManager):e.packageManager)||await nr(e.cwd||process.cwd());if(!r)throw Error(`No package manager auto-detected.`);return{cwd:t,env:n,silent:e.silent??!1,packageManager:r,dev:e.dev??!1,workspace:e.workspace,global:e.global??!1,dry:e.dry??!1,corepack:e.corepack??!0}}function tr(e){let[t,n]=(e||``).split(`@`),[r,i]=n?.split(`+`)||[];if(t&&t!==`-`&&/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(t))return{name:t,version:r,buildMeta:i};let a=(t||``).replace(/\W+/g,``);return{name:a,version:r,buildMeta:i,warnings:[`Abnormal characters found in \`packageManager\` field, sanitizing from \`${t}\` to \`${a}\``]}}const Y=[{name:`npm`,command:`npm`,lockFile:`package-lock.json`},{name:`pnpm`,command:`pnpm`,lockFile:`pnpm-lock.yaml`,files:[`pnpm-workspace.yaml`]},{name:`bun`,command:`bun`,lockFile:[`bun.lockb`,`bun.lock`]},{name:`yarn`,command:`yarn`,lockFile:`yarn.lock`,files:[`.yarnrc.yml`]},{name:`deno`,command:`deno`,lockFile:`deno.lock`,files:[`deno.json`]}];async function nr(e,t={}){let n=await Xn(G(e||`.`),async e=>{if(!t.ignorePackageJSON){let t=gn(e,`package.json`);if(h(t)){let e=JSON.parse(await E(t,`utf8`));if(e?.packageManager){let{name:t,version:n=`0.0.0`,buildMeta:r,warnings:i}=tr(e.packageManager);if(t){let e=n.split(`.`)[0],a=Y.find(n=>n.name===t&&n.majorVersion===e)||Y.find(e=>e.name===t);return{name:t,command:t,version:n,majorVersion:e,buildMeta:r,warnings:i,files:a?.files,lockFile:a?.lockFile}}}}if(h(gn(e,`deno.json`)))return Y.find(e=>e.name===`deno`)}if(!t.ignoreLockFile){for(let t of Y)if([t.lockFile,t.files].flat().filter(Boolean).some(t=>h(G(e,t))))return{...t}}},{includeParentDirs:t.includeParentDirs??!0});if(!n&&!t.ignoreArgv){let e=process.argv[1];if(e){for(let t of Y)if(RegExp(`[/\\\\]\\.?${t.command}`).test(e))return t}}return n}async function rr(e={}){let t=await er(e),n=e.frozenLockFile?{npm:[`ci`],yarn:[`install`,`--immutable`],bun:[`install`,`--frozen-lockfile`],pnpm:[`install`,`--frozen-lockfile`],deno:[`install`,`--frozen`]}[t.packageManager.name]:[`install`];return e.ignoreWorkspace&&t.packageManager.name===`pnpm`&&n.push(`--ignore-workspace`),t.dry||await $n(t.packageManager.command,n,{cwd:t.cwd,silent:t.silent,corepack:t.corepack}),{exec:{command:t.packageManager.command,args:n}}}async function ir(e,t,n={}){let i=t+`.json`,a=JSON.parse(await E(i,`utf8`).catch(()=>`{}`)),o=(await Z(e,{method:`HEAD`,headers:n.headers}).catch(()=>void 0))?.headers.get(`etag`);if(a.etag===o&&h(t))return;typeof o==`string`&&(a.etag=o);let s=await Z(e,{headers:n.headers});if(s.status>=400)throw Error(`Failed to download ${e}: ${s.status} ${s.statusText}`);let c=m(t);await r(ie)(s.body,c),await O(i,JSON.stringify(a),`utf8`)}const ar=/^(?<repo>[-\w.]+\/[-\w.]+)(?<subdir>[^#]+)?(?<ref>#[-\w./@]+)?/,or=/^(?<repo>[-\w.]+(?:\/[-\w.]+)+?)(?:::(?<subdir>[^#]*))?(?<ref>#[-\w./@]+)?$/;function sr(e,t){let n=t?.expandRepo||e.includes(`::`),r=e.match(n?or:ar)?.groups||{},i=n?r.subdir?`/`+r.subdir:`/`:r.subdir||`/`;return{repo:r.repo||``,subdir:i,ref:r.ref?r.ref.slice(1):`main`}}function X(...e){process.env.DEBUG&&console.debug(`[giget]`,...e)}async function Z(e,t={}){t.headers?.[`sec-fetch-mode`]&&(t.mode=t.headers[`sec-fetch-mode`]);let n=await fetch(e,{...t,headers:lr(t.headers)}).catch(t=>{throw Error(`Failed to download ${e}: ${t}`,{cause:t})});if(t.validateStatus&&n.status>=400)throw Error(`Failed to fetch ${e}: ${n.status} ${n.statusText}`);return n}function cr(){let e=process.env.XDG_CACHE_HOME?G(process.env.XDG_CACHE_HOME,`giget`):G(se(),`.cache/giget`);if(process.platform===`win32`){let t=G(ce(),`giget`);if(!h(t)&&h(e))try{_(e,t)}catch{}return t}return e}function lr(e={}){let t={};for(let[n,r]of Object.entries(e))r&&(t[n.toLowerCase()]=r);return t}const ur=(e,t)=>{let n=dr(e);return{name:n.name,version:n.subdir?`${n.version||`default`}-${n.subdir.replaceAll(`/`,`-`)}`:n.version,tar:({auth:e}={})=>fr(n,e??t.auth)}};function dr(e,t={}){let n=t.cwd??process.cwd(),r=e.replace(/#.*$/,``),i;if(/^[./]/.test(e))r=G(n,r);else if(/^https?:\/\//.test(r)){let e=/^(https?:\/\/[^/]+)\/([\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(e){let[,t,n,a]=e;r=`${t}/${n}`,a&&(i=a)}}else if(r.includes(`@`)){let e=/^(.*?:[\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(e){let[,t,n]=e;r=t,n&&(i=n)}}else{let e={"github:":`https://github.com/`,"gh:":`https://github.com/`,"gitlab:":`https://gitlab.com/`,"bitbucket:":`https://bitbucket.org/`,"sourcehut:":`https://git.sr.ht/~`},t=/^(.+?:)/.exec(r)?.at(1);t&&e[t]?r=r.replace(t,e[t]):t||(r=`${(process.env.GIGET_GIT_HOST||`https://github.com/`).replace(/\/$/,``)}/${r}`);let n=/^(https?:\/\/[^/]+\/~?[\w.-]+\/[\w.-]+?)(?:\.git)?(?:\/(.+))?$/.exec(r);if(n){let[,e,t]=n;r=e,t&&(i=t)}}let a=r.replace(/^https?:\/\//,``).replace(/^.+@/,``).replace(/(\.git)?(#.*)?$/,``).replace(/^\W+/,``).replaceAll(/[:/]/g,`-`),[o,s]=/#(.+)$/.exec(e)?.at(1)?.split(`:`)??[],c=o||void 0,l=s||i;return{uri:r,name:a,...c&&{version:c},...l&&{subdir:l}}}async function fr(e,t){let n=await ee(x(ce(),`giget-git-`));if(t&&/[\r\n]/.test(t))throw Error(`Auth token must not contain newline characters`);let r={...process.env,GIT_TERMINAL_PROMPT:`0`};t&&(r.GIT_CONFIG_COUNT=`1`,r.GIT_CONFIG_KEY_0=`http.extraHeader`,r.GIT_CONFIG_VALUE_0=`Authorization: Bearer ${t}`);let i={env:r,timeout:6e4},a=hr(),o=e=>mr(e,i,a),s=e=>mr(e,{...i,cwd:n},a);try{let t=[`clone`,`--progress`,`--depth`,`1`];e.subdir&&t.push(`--filter=blob:none`,`--sparse`,`--no-checkout`),e.version&&t.push(`--branch`,e.version),t.push(`--`,e.uri,n);try{a.update(`Cloning...`),await o(t),a.update(`Cloned.`)}catch(t){if(!e.version)throw t;X(`Shallow clone failed, falling back to full clone:`,t),a.update(`Shallow clone failed, cloning...`),await D(n,{recursive:!0,force:!0}),await T(n,{recursive:!0}),await s([`init`]),await s([`remote`,`add`,`origin`,e.uri]),await s([`fetch`,`origin`]),await s([`checkout`,e.version]),a.update(`Fetched.`)}e.subdir&&(a.update(`Sparse checkout ${e.subdir}...`),await s([`sparse-checkout`,`set`,e.subdir]),await s([`checkout`])),a.update(`Packing...`);let r=e.subdir?x(n,e.subdir):n,{create:i}=await import(`./tar-DC2xmAjf.mjs`).then(e=>e.t);a.done();let c=i({gzip:!0,cwd:r,filter:e=>!e.startsWith(`.git/`)&&e!==`.git`&&!e.startsWith(`./.git/`)&&e!==`./.git`},[`.`]).pipe(new ne),l=!1,u=()=>{l||(l=!0,D(n,{recursive:!0,force:!0}))};return c.on(`end`,u),c.on(`error`,u),c.on(`close`,u),c}catch(e){throw a.done(),await D(n,{recursive:!0,force:!0}),e}}const pr=[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`];function mr(e,t,n){return new Promise((r,i)=>{let a=ae(`git`,e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});a.stdout.resume();let o=``;a.stderr?.on(`data`,e=>{let t=e.toString();for(let e of t.split(/[\r\n]/)){let t=e.trim();t&&(o=t)}n&&n.update(o)}),a.on(`close`,t=>{t===0?r(o):i(Error(`git ${e[0]} exited with code ${t}. Is git installed?`))}),a.on(`error`,e=>{e.code===`ENOENT`?i(Error(`git is not installed or not found in PATH`)):i(e)})})}function hr(){if(!process.stderr.isTTY)return{update(e){},done(){}};let e=``,t=0,n=()=>{let n=pr[t%pr.length];t++,process.stderr.write(`\x1B[2K\r\x1B[2m${n} ${e}\x1B[0m`)},r=setInterval(n,80);return{update(t){e=t,n()},done(){clearInterval(r),process.stderr.write(`\x1B[2K\r`)}}}const gr=async(e,t)=>{if(e.endsWith(`.json`))return await _r(e,t);let n=new URL(e),r=bn(n.pathname);try{let i=await Z(n.href,{method:`HEAD`,validateStatus:!0,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}});if((i.headers.get(`content-type`)||``).includes(`application/json`))return await _r(e,t);let a=i.headers.get(`content-disposition`)?.match(/filename="?(.+)"?/)?.[1];a&&(r=a.split(`.`)[0])}catch(e){X(`Failed to fetch HEAD for ${n.href}:`,e)}return{name:`${r}-${n.href.slice(0,8)}`,version:``,subdir:``,tar:n.href,defaultDir:r,headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0}}},_r=async(e,t)=>{let n=await(await Z(e,{validateStatus:!0,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}})).json();if(!n.tar||!n.name)throw Error(`Invalid template info from ${e}. name or tar fields are missing!`);return n},vr=(e,t)=>{let n=sr(e),r=process.env.GIGET_GITHUB_URL||`https://api.github.com`;return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,Accept:`application/vnd.github+json`,"X-GitHub-Api-Version":`2022-11-28`},url:`${r.replace(`api.github.com`,`github.com`)}/${n.repo}/tree/${n.ref}${n.subdir}`,tar:`${r}/repos/${n.repo}/tarball/${n.ref}`}},yr={http:gr,https:gr,git:ur,github:vr,gh:vr,gitlab:(e,t)=>{let n=sr(e,{expandRepo:!0}),r=process.env.GIGET_GITLAB_URL||`https://gitlab.com`;return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0,"sec-fetch-mode":`same-origin`},url:`${r}/${n.repo}/tree/${n.ref}${n.subdir}`,tar:`${r}/${n.repo}/-/archive/${n.ref}.tar.gz`}},bitbucket:(e,t)=>{let n=sr(e);return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0},url:`https://bitbucket.com/${n.repo}/src/${n.ref}${n.subdir}`,tar:`https://bitbucket.org/${n.repo}/get/${n.ref}.tar.gz`}},sourcehut:(e,t)=>{let n=sr(e);return{name:n.repo.replace(`/`,`-`),version:n.ref,subdir:n.subdir,headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0},url:`https://git.sr.ht/~${n.repo}/tree/${n.ref}/item${n.subdir}`,tar:`https://git.sr.ht/~${n.repo}/archive/${n.ref}.tar.gz`}}},br=(e=`https://raw.githubusercontent.com/unjs/giget/main/templates`,t={})=>(async n=>{let r=Date.now(),i=`${e}/${n}.json`,a=await Z(i,{headers:{authorization:t.auth?`Bearer ${t.auth}`:void 0}});if(a.status>=400)throw Error(`Failed to download ${n} template info from ${i}: ${a.status} ${a.statusText}`);let o=await a.json();if(!o.tar||!o.name)throw Error(`Invalid template info from ${i}. name or tar fields are missing!`);return X(`Fetched ${n} template info from ${i} in ${Date.now()-r}ms`),o}),xr=/^([\w+-.]+):/;async function Sr(e,t={}){t.registry=process.env.GIGET_REGISTRY??t.registry,t.auth=process.env.GIGET_AUTH??t.auth;let n=t.registry===!1?void 0:br(t.registry,{auth:t.auth}),r=t.provider||(n?`registry`:`github`),i=e,a=e.match(xr);a&&(r=a[1],i=e.slice(a[0].length),(r===`http`||r===`https`)&&(i=e)),r.endsWith(`+git`)&&(i=`${r.slice(0,-4)}:${i}`,r=`git`);let o=t.providers?.[r]||yr[r]||n;if(!o)throw Error(`Unsupported provider: ${r}`);let s=await Promise.resolve().then(()=>o(i,{auth:t.auth})).catch(e=>{throw Error(`Failed to download template from ${r}: ${e.message}`)});if(!s)throw Error(`Failed to resolve template from ${r}`);s.name=(s.name||`template`).replace(/[^\da-z-]/gi,`-`),s.defaultDir=(s.defaultDir||s.name).replace(/[^\da-z-]/gi,`-`);let c=G(G(cr(),r,s.name),(s.version||s.name)+`.tar.gz`);if(t.preferOffline&&h(c)&&(t.offline=!0),!t.offline){await T(yn(c),{recursive:!0});let e=Date.now();if(typeof s.tar==`function`){let e=s.tar;await(async()=>{let n=await e({auth:t.auth});await oe(n instanceof re?n:re.fromWeb(n),m(c))})().catch(e=>{if(!h(c))throw e;X(`Download error. Using cached version:`,e),t.offline=!0})}else await ir(s.tar,c,{headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,...lr(s.headers)}}).catch(e=>{if(!h(c))throw e;X(`Download error. Using cached version:`,e),t.offline=!0});X(`Downloaded to ${c} in ${Date.now()-e}ms`)}if(!h(c))throw Error(`Tarball not found: ${c} (offline: ${t.offline})`);let l=G(G(t.cwd||`.`),t.dir||s.defaultDir);if(t.forceClean&&await D(l,{recursive:!0,force:!0}),!t.force&&h(l)&&g(l).length>0)throw Error(`Destination ${l} already exists.`);await T(l,{recursive:!0});let u=Date.now(),d=s.subdir?.replace(/^\//,``)||``,{extract:f}=await import(`./tar-DC2xmAjf.mjs`).then(e=>e.t);if(await f({file:c,cwd:l,onReadEntry(e){e.path=e.path.split(`/`).splice(1).join(`/`),d&&(e.path.startsWith(d+`/`)?e.path=e.path.slice(d.length):e.path=``)}}),X(`Extracted to ${l} in ${Date.now()-u}ms`),t.install){X(`Installing dependencies...`);let{installDependencies:e}=await Promise.resolve().then(()=>ln).then(e=>e.t);await e({cwd:l,silent:t.silent,...typeof t.install==`object`?t.install:{}})}return{...s,source:i,dir:l}}function Cr(e){return e}const wr=Cr([`default`,`monorepo`]),Tr=Cr([`pnpm`,`npm`,`bun`,`yarn`,`deno`]),Er={name:{type:`positional`,description:`Project name`,required:!1},template:{type:`enum`,description:`Template to use`,options:wr,required:!1,alias:[`t`]},install:{type:`boolean`,description:`Install dependencies`,required:!1,alias:[`i`]},packageManager:{type:`enum`,description:`Package manager to use`,options:Tr,required:!1,alias:[`p`]}};var Q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),$=t(import.meta.url);const Dr=/^path$/i,Or={key:`PATH`,value:``};function kr(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!Dr.test(t))continue;let n=e[t];return n?{key:t,value:n}:Or}return Or}function Ar(e,t){let n=t.value.split(y),r=[],i=e,a;do r.push(C(i,`node_modules`,`.bin`)),a=i,i=b(i);while(i!==a);let o=r.concat(n).join(y);return{key:t.key,value:o}}function jr(e,t){let n={...process.env,...t},r=Ar(e,kr(n));return n[r.key]=r.value,n}const Mr=e=>{let t=e.length,n=new ne,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var Nr=Q(((e,t)=>{t.exports=a,a.sync=o;var n=$(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),Pr=Q(((e,t)=>{t.exports=r,r.sync=i;var n=$(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),Fr=Q(((e,t)=>{$(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Nr():Pr();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),Ir=Q(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=$(`path`),i=n?`;`:`:`,a=Fr(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),Lr=Q(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),Rr=Q(((e,t)=>{let n=$(`path`),r=Ir(),i=Lr();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),zr=Q(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),Br=Q(((e,t)=>{t.exports=/^#!(.*)/})),Vr=Q(((e,t)=>{let n=Br();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),Hr=Q(((e,t)=>{let n=$(`fs`),r=Vr();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),Ur=Q(((e,t)=>{let n=$(`path`),r=Rr(),i=zr(),a=Hr(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),Wr=Q(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),Gr=Q(((e,t)=>{let n=$(`child_process`),r=Ur(),i=Wr();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i}))(),Kr=class extends Error{result;output;get exitCode(){if(this.result.exitCode!==null)return this.result.exitCode}constructor(e,t){super(`Process exited with non-zero status (${e.exitCode})`),this.result=e,this.output=t}};const qr={timeout:void 0,persist:!1},Jr={windowsHide:!0};function Yr(e,t){return{command:S(e),args:t??[]}}function Xr(e){let t=new AbortController;for(let n of e){if(n.aborted)return t.abort(),n;n.addEventListener(`abort`,()=>{t.abort(n.reason)},{signal:t.signal})}return t.signal}async function Zr(e){let t=``;for await(let n of e)t+=n.toString();return t}var Qr=class{_process;_aborted=!1;_options;_command;_args;_resolveClose;_processClosed;_thrownError;get process(){return this._process}get pid(){return this._process?.pid}get exitCode(){if(this._process&&this._process.exitCode!==null)return this._process.exitCode}constructor(e,t,n){this._options={...qr,...n},this._command=e,this._args=t??[],this._processClosed=new Promise(e=>{this._resolveClose=e})}kill(e){return this._process?.kill(e)===!0}get aborted(){return this._aborted}get killed(){return this._process?.killed===!0}pipe(e,t,n){return ei(e,t,{...n,stdin:this})}async*[Symbol.asyncIterator](){let e=this._process;if(!e)return;let t=[];this._streamErr&&t.push(this._streamErr),this._streamOut&&t.push(this._streamOut);let n=Mr(t),r=d.createInterface({input:n});for await(let e of r)yield e.toString();if(await this._processClosed,e.removeAllListeners(),this._thrownError)throw this._thrownError;if(this._options?.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Kr(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?Zr(this._streamOut):``,this._streamErr?Zr(this._streamErr):``]);if(await this._processClosed,this._options?.stdin&&await this._options.stdin,e.removeAllListeners(),this._thrownError)throw this._thrownError;let r={stderr:n,stdout:t,exitCode:this.exitCode};if(this._options.throwOnError&&this.exitCode!==0&&this.exitCode!==void 0)throw new Kr(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=s(),t=this._options,n={...Jr,...t.nodeOptions},r=[];this._resetState(),t.timeout!==void 0&&r.push(AbortSignal.timeout(t.timeout)),t.signal!==void 0&&r.push(t.signal),t.persist===!0&&(n.detached=!0),r.length>0&&(n.signal=Xr(r)),n.env=jr(e,n.env);let{command:i,args:a}=Yr(this._command,this._args),o=(0,Gr._parse)(i,a,n),c=ae(o.command,o.args,o.options);if(c.stderr&&(this._streamErr=c.stderr),c.stdout&&(this._streamOut=c.stdout),this._process=c,c.once(`error`,this._onError),c.once(`close`,this._onClose),t.stdin!==void 0&&c.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(c.stdin)}}_resetState(){this._aborted=!1,this._processClosed=new Promise(e=>{this._resolveClose=e}),this._thrownError=void 0}_onError=e=>{if(e.name===`AbortError`&&(!(e.cause instanceof Error)||e.cause.name!==`TimeoutError`)){this._aborted=!0;return}this._thrownError=e};_onClose=()=>{this._resolveClose&&this._resolveClose()}};const $r=(e,t,n)=>{let r=new Qr(e,t,n);return r.spawn(),r},ei=$r;function ti(){let e=process.env.npm_config_user_agent??``;return e.startsWith(`pnpm/`)?`pnpm`:e.startsWith(`yarn/`)?`yarn`:e.startsWith(`bun/`)?`bun`:e.startsWith(`deno/`)?`deno`:`npm`}async function ni(){try{return await $r(`pnpm`,[`--version`],{throwOnError:!0}),!0}catch{return!1}}async function ri(e){await $r(`git`,[`init`],{throwOnError:!1,nodeOptions:{cwd:e,stdio:`inherit`}})}async function ii(e,t){let n=Et({title:`Installing dependencies with ${t}...`,limit:5,retainLog:!1}),r=xt();r.start();let i=[`install`];t===`npm`&&i.push(`--legacy-peer-deps`);let a=$r(t,i,{throwOnError:!1,nodeOptions:{cwd:e}});for await(let e of a){let t=e.trim();t&&n.message(t)}let o=await a;return r.stop(),o.exitCode===0?(n.success(`Dependencies installed`),!0):(n.error(`Dependency installation failed. You can run \`${t} install\` manually.`),!1)}function ai(e){return e===`npm`?`npm run dev`:e===`deno`?`deno task dev`:`${e} dev`}const oi=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function si(e){for(let t of e){let e=t.codePointAt(0);if(e!==void 0&&(e<=31||`<>:"|?*`.includes(t)))return!0}return!1}function ci(e){let t=e.trim();if(t.length===0)return`Project name is required`;if(t!==`.`){if(t.includes(`/`)||t.includes(`\\`))return`Project name cannot contain path separators`;if(si(t))return`Project name contains invalid characters`;if(t===`..`)return`Project name cannot be ..`;if(t.startsWith(`.`))return`Project name cannot start with a period`;if(t.endsWith(`.`)||t.endsWith(`-`))return`Project name cannot end with a period or hyphen`;if(t.length>214)return`Project name must be 214 characters or fewer`;if(!oi.test(t))return`Use letters, numbers, periods, underscores, or hyphens`}}function li(e,t){return typeof t==`string`&&e.includes(t)}async function ui(e){let t;try{t=await te(e)}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ENOENT`)return;throw e}if(t.length>0)return`Directory must be empty.`}async function di(){let e=await Dt({message:`Project name:`,placeholder:`my-project`,defaultValue:`my-project`,validate(e){if(typeof e==`string`)return ci(e)}});if(Re(e)){z(`Operation cancelled.`);return}return e}async function fi(){let e=await Ct({message:`Select a template:`,options:[{value:`default`,label:`Default`,hint:`minimal TanStarter template`},{value:`monorepo`,label:`Monorepo (beta)`,hint:`TanStarter via Vite+ with pnpm`}]});if(Re(e)){z(`Operation cancelled.`);return}return e}async function pi(){let e=await ht({message:`Install dependencies after scaffolding?`,initialValue:!0});if(Re(e)){z(`Operation cancelled.`);return}return e}async function mi(e){let t=await Ct({message:`Select a package manager:`,options:[{value:`pnpm`,label:`pnpm (Recommended)`},{value:`npm`,label:`npm`},{value:`bun`,label:`bun`},{value:`yarn`,label:`yarn`},{value:`deno`,label:`deno`}],initialValue:e});if(Re(t)){z(`Operation cancelled.`);return}return t}async function hi(e){let t=e.name,n=e.template,r=e.install,i=e.packageManager,a=await ni()?`pnpm`:ti();if(!t&&(t=await di(),!t))return;t=String(t).trim();let o=await ui(t===`.`?process.cwd():x(process.cwd(),t));if(o){z(o);return}let s=ci(t);if(s){z(s);return}if(!(!n&&(n=await fi(),!n))&&!(r===void 0&&(r=await pi(),r===void 0))&&!(r&&!i&&(i=await mi(a),!i))&&!(!li(wr,n)||typeof r!=`boolean`)&&!(i!==void 0&&!li(Tr,i)))return{projectName:t,template:n,install:r,selectedPackageManager:i,preferredPackageManager:a}}const gi={default:{source:`github:mugnavo/tanstarter`,homeUrl:`https://github.com/mugnavo/tanstarter`},monorepo:{source:`github:mugnavo/tanstarter-plus`,homeUrl:`https://github.com/mugnavo/tanstarter-plus`}};function _i(e){return gi[e]}function vi(e,t){if(!t)return"This project was scaffolded with [`create-mugnavo`](https://github.com/mugnavo/create-mugnavo).";let n=_i(e);return`This project was scaffolded with \`create-mugnavo\` from commit [\`${t.slice(0,7)}\`](${`${n.homeUrl}/tree/${t}`}). See the [template changelog](${`${n.homeUrl}/compare/${t}...main`}) for newer changes.`}function yi(e,t,n){if(!n)return!1;let r=e.findIndex(e=>e.trim()===`## Issue watchlist`);if(r===-1)return!1;let i=e.findIndex((e,t)=>t>r&&e.startsWith(`## `)),a=i===-1?e.length:i,o=`${_i(t).homeUrl}/compare/${n}...main`;if(e.slice(r+1,a).some(e=>e.includes(o)))return!1;let s=r+1;for(;s<a&&e[s]?.trim()===``;)s+=1;return e.splice(s,0,`- [Template changelog](${o}) - Track template updates since this project was created.`),!0}function bi(e,t){return t===`.`?v(C(e))||`app`:t}async function xi(e){await D(x(e,`LICENSE`),{force:!0})}async function Si(e,t){if(t===`default`){await w(x(e,`.env.example`),x(e,`.env`),p.COPYFILE_EXCL);return}t===`monorepo`&&(await w(x(e,`apps`,`web`,`.env.example`),x(e,`apps`,`web`,`.env`),p.COPYFILE_EXCL),await w(x(e,`packages`,`db`,`.env.example`),x(e,`packages`,`db`,`.env`),p.COPYFILE_EXCL))}async function Ci(e,t){let n=x(e,`package.json`),r=JSON.parse(await E(n,`utf8`));r.name=bi(e,t),await O(n,`${JSON.stringify(r,null,2)}\n`)}async function wi(e,t,n,r){let i=x(e,`README.md`),a=bi(e,n),o=await E(i,`utf8`),s=o.includes(`\r
86
86
  `)?`\r
87
87
  `:`
88
- `,o=i.split(/\r?\n/),s=o.findIndex(e=>e.startsWith(`# `));s===-1?o.length>0&&(o[0]=`# ${r}`):o[s]=`# ${r}`,Ci(o,[{marker:`<!-- scaffold:description -->`,replacementContent:"This project was scaffolded with [`create-mugnavo`](https://github.com/mugnavo/create-mugnavo).",skipEmptyLinesAfterMarker:!0}]);let c=o.join(a);c!==i&&await O(n,c)}function Ci(e,t){let n=!1;for(let{marker:r,replacementContent:i,skipEmptyLinesAfterMarker:a}of t){let t=e.findIndex(e=>e.trim()===r);if(t===-1)continue;let o=t+1;if(a)for(;e[o]!==void 0&&e[o]?.trim()===``;)o+=1;let s=e[o];if(s===void 0){e.splice(t,1),n=!0;continue}let c=`${s.match(/^\s*/)?.[0]??``}${i}`;e.splice(t,o-t+1,c),n=!0}return n}async function wi(e,t){let n=await E(e,`utf8`),r=n.includes(`\r
88
+ `,c=o.split(/\r?\n/),l=c.findIndex(e=>e.startsWith(`# `));l===-1?c.length>0&&(c[0]=`# ${a}`):c[l]=`# ${a}`,Ti(c,[{marker:`<!-- scaffold:description -->`,replacementContent:vi(t,r),skipEmptyLinesAfterMarker:!0}]),yi(c,t,r);let u=c.join(s);u!==o&&await O(i,u)}function Ti(e,t){let n=!1;for(let{marker:r,replacementContent:i,skipEmptyLinesAfterMarker:a}of t){let t=e.findIndex(e=>e.trim()===r);if(t===-1)continue;let o=t+1;if(a)for(;e[o]!==void 0&&e[o]?.trim()===``;)o+=1;let s=e[o];if(s===void 0){e.splice(t,1),n=!0;continue}let c=`${s.match(/^\s*/)?.[0]??``}${i}`;e.splice(t,o-t+1,c),n=!0}return n}async function Ei(e,t){let n=await E(e,`utf8`),r=n.includes(`\r
89
89
  `)?`\r
90
90
  `:`
91
- `,i=n.split(/\r?\n/);Ci(i,t)&&await O(e,i.join(r))}async function Ti(e,t,n){let r=vi(e,n);await wi(t===`default`?x(e,`src`,`routes`,`__root.tsx`):x(e,`apps`,`web`,`src`,`routes`,`__root.tsx`),[{marker:`// scaffold:title`,replacementContent:`title: ${JSON.stringify(r)},`},{marker:`// scaffold:description`,replacementContent:`content: "A TanStack Start project scaffolded with create-mugnavo.",`}])}async function Ei(e,t,n){await Promise.allSettled([yi(e),bi(e,t),xi(e,n),Si(e,n),Ti(e,t,n)])}function Di(e,t,n,r){let i=[];return e!==`.`&&i.push(`cd ${e}`),t||i.push(`${n} install${n===`npm`?` --legacy-peer-deps`:``}`),i.push(r,``,`See README.md for next steps`),i.join(`
92
- `)}on(Jt({meta:{name:`create-mugnavo`,version:`0.3.4`,description:`Create a project using Mugnavo templates.`},args:Er,async run({args:e}){let t=await hi(e);if(!t)return;let{projectName:n,template:r,install:i,selectedPackageManager:a,preferredPackageManager:o}=t,s=xt();try{let e=_i(r);s.start(`Cloning project...`);let{dir:t,source:c}=await Sr(e.source,{dir:n,force:!0,forceClean:!0});await Ei(t,r,n);let l=a||o;s.stop(`Project cloned from ${c}`),await ri(t),i&&(await ii(t,l)||(i=!1)),yt(`${Di(n,i,l,ai(l))}\n${e.homeUrl}`,`Next steps`),gt(`All set. Happy coding! 🚀`)}catch(e){s.stop(),gt(`Failed to download template. Please try again later.`),console.error(e);return}}}));export{};
91
+ `,i=n.split(/\r?\n/);Ti(i,t)&&await O(e,i.join(r))}async function Di(e,t,n){let r=bi(e,n);await Ei(t===`default`?x(e,`src`,`routes`,`__root.tsx`):x(e,`apps`,`web`,`src`,`routes`,`__root.tsx`),[{marker:`// scaffold:title`,replacementContent:`title: ${JSON.stringify(r)},`},{marker:`// scaffold:description`,replacementContent:`content: "A TanStack Start project scaffolded with create-mugnavo.",`}])}async function Oi(e,t,n,r){await Promise.allSettled([xi(e),Si(e,t),Ci(e,n),wi(e,t,n,r),Di(e,t,n)])}function ki(e){return new URL(e).pathname.replace(/^\/|\/$/g,``)}async function Ai(e){try{let t=ki(e.homeUrl),n=await fetch(`https://api.github.com/repos/${t}/commits/main`,{headers:{accept:`application/vnd.github+json`,"user-agent":`create-mugnavo`},signal:AbortSignal.timeout(5e3)});if(!n.ok)throw Error(`GitHub API request failed with status ${n.status}`);let r=await n.json();if(!r.sha)throw Error(`GitHub API response did not include commit metadata`);return r.sha}catch{return}}function ji(e,t,n,r){let i=[];return e!==`.`&&i.push(`cd ${e}`),t||i.push(`${n} install${n===`npm`?` --legacy-peer-deps`:``}`),i.push(r,``,`See README.md for next steps`),i.join(`
92
+ `)}on(Jt({meta:{name:`create-mugnavo`,version:`0.4.0`,description:`Create a project using Mugnavo templates.`},args:Er,async run({args:e}){let t=await hi(e);if(!t)return;let{projectName:n,template:r,install:i,selectedPackageManager:a,preferredPackageManager:o}=t,s=xt();try{let e=_i(r),t=Ai(e);s.start(`Cloning project...`);let{dir:c,source:l}=await Sr(e.source,{dir:n,force:!0,forceClean:!0});await Oi(c,r,n,await t);let u=a||o;s.stop(`Project cloned from ${l}`),await ri(c),i&&(await ii(c,u)||(i=!1)),yt(`${ji(n,i,u,ai(u))}\n${e.homeUrl}`,`Next steps`),gt(`All set. Happy coding! 🚀`)}catch(e){s.stop(),gt(`Failed to download template. Please try again later.`),console.error(e);return}}}));export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-mugnavo",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "description": "Create a project using Mugnavo templates.",
5
5
  "homepage": "https://github.com/mugnavo/create-mugnavo#readme",
6
6
  "bugs": {