create-mugnavo 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -8,8 +8,8 @@ pnpm create mugnavo@latest
|
|
|
8
8
|
|
|
9
9
|
## Templates
|
|
10
10
|
|
|
11
|
-
- [`
|
|
12
|
-
- [`
|
|
11
|
+
- [`default`](https://github.com/mugnavo/tanstarter) - Minimal TanStarter template (`main` branch)
|
|
12
|
+
- [`monorepo`](https://github.com/mugnavo/tanstarter/tree/next) - Monorepo via Turborepo & pnpm workspaces (`next` branch)
|
|
13
13
|
|
|
14
14
|
## License
|
|
15
15
|
|
package/dist/index.mjs
CHANGED
|
@@ -92,4 +92,4 @@ ${t?y(`cyan`,F):``}
|
|
|
92
92
|
`)}catch(e){console.error(e)}}const hn=/^no[-A-Z]/;async function gn(e,t){let n=await H(e.meta||{}),r=un(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,r=e.default?`="${e.default}"`:``;s.push([W(t+r),e.description||``,e.valueHint?`<${e.valueHint}>`:``]),l.push(n?`<${t}>`:`[${t}]`)}else{let t=e.required===!0&&e.default===void 0,n=[...(e.alias||[]).map(e=>`-${e}`),`--${e.name}`].join(`, `)+(e.type===`string`&&(e.valueHint||e.default)?`=${e.valueHint?`<${e.valueHint}>`:`"${e.default||``}"`}`:``)+(e.type===`enum`&&e.options?`=<${e.options.join(`|`)}>`:``);if(o.push([W(n+(t?` (required)`:``)),e.description||``]),e.type===`boolean`&&(e.default===!0||e.negativeDescription)&&!hn.test(e.name)){let n=[...(e.alias||[]).map(e=>`--no-${e}`),`--no-${e.name}`].join(`, `);o.push([W(n+(t?` (required)`:``)),e.negativeDescription||``])}t&&l.push(n)}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);n?.hidden||(c.push([W(e),n?.description||``]),t.push(e))}l.push(t.join(`|`))}let u=[],d=n.version||i.version;u.push(sn(`${n.description} (${a+(d?` v${d}`:``)})`),``);let f=o.length>0||s.length>0;return u.push(`${cn(on(`USAGE`))} ${W(`${a}${f?` [OPTIONS]`:``} ${l.join(` `)}`)}`,``),s.length>0&&(u.push(cn(on(`ARGUMENTS`)),``),u.push(tn(s,` `)),u.push(``)),o.length>0&&(u.push(cn(on(`OPTIONS`)),``),u.push(tn(o,` `)),u.push(``)),c.length>0&&(u.push(cn(on(`COMMANDS`)),``),u.push(tn(c,` `)),u.push(``,`Use ${W(`${a} <command> --help`)} for more information about a command.`)),u.filter(e=>typeof e==`string`).join(`
|
|
93
93
|
`)}async function _n(e,t={}){let n=t.rawArgs||process.argv.slice(2),r=t.showUsage||mn;try{if(n.includes(`--help`)||n.includes(`-h`))await r(...await pn(e,n)),process.exit(0);else if(n.length===1&&n[0]===`--version`){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 fn(e,{rawArgs:n})}catch(t){t instanceof U?(await r(...await pn(e,n)),console.error(t.message)):console.error(t,`
|
|
94
94
|
`),process.exit(1)}}var vn=ce({a:()=>G,n:()=>kn,r:()=>On,t:()=>fr});const yn=/^[A-Za-z]:\//;function bn(e=``){return e&&e.replace(/\\/g,`/`).replace(yn,e=>e.toUpperCase())}const xn=/^[/\\]{2}/,Sn=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,Cn=/^[A-Za-z]:$/,wn=function(e){if(e.length===0)return`.`;e=bn(e);let t=e.match(xn),n=K(e),r=e[e.length-1]===`/`;return e=Dn(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),Cn.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!K(e)?`/${e}`:e)},Tn=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 wn(t)};function En(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}const G=function(...e){e=e.map(e=>bn(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:En();!i||i.length===0||(t=`${i}/${t}`,n=K(i))}return t=Dn(t,!n),n&&!K(t)?`/${t}`:t.length>0?t:`.`};function Dn(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 Sn.test(e)},On=function(e){let t=bn(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&Cn.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(K(e)?`/`:`.`)},kn=function(e,t){let n=bn(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};var An=Object.create,jn=Object.defineProperty,Mn=Object.getOwnPropertyDescriptor,Nn=Object.getOwnPropertyNames,Pn=Object.getPrototypeOf,Fn=Object.prototype.hasOwnProperty,q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),In=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Nn(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Fn.call(e,s)&&s!==n&&jn(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Mn(t,s))||r.enumerable});return e},Ln=(e,t,n)=>(n=e==null?{}:An(Pn(e)),In(t||!e||!e.__esModule?jn(n,`default`,{value:e,enumerable:!0}):n,e)),J=E(import.meta.url);const Rn=/^path$/i,zn={key:`PATH`,value:``};function Bn(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!Rn.test(t))continue;let n=e[t];return n?{key:t,value:n}:zn}return zn}function Vn(e,t){let n=t.value.split(d),r=e,i;do n.push(h(r,`node_modules`,`.bin`)),i=r,r=f(r);while(r!==i);return{key:t.key,value:n.join(d)}}function Hn(e,t){let n={...process.env,...t},r=Vn(e,Bn(n));return n[r.key]=r.value,n}const Un=e=>{let t=e.length,n=new te,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var Wn=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)}}),Gn=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?Wn():Gn();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}}}),qn=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}),Yn=q((e,t)=>{let n=J(`path`),r=qn(),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}),Xn=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(/(\\*)"/g,`$1$1\\"`),e=e.replace(/(\\*)$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i}),Zn=q((e,t)=>{t.exports=/^#!(.*)/}),Qn=q((e,t)=>{let n=Zn();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}}),$n=q((e,t)=>{let n=J(`fs`),r=Qn();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}),er=q((e,t)=>{let n=J(`path`),r=Yn(),i=Xn(),a=$n(),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}),tr=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,`spawn`);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}}),nr=Ln(q((e,t)=>{let n=J(`child_process`),r=er(),i=tr();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})(),1),rr=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 ir={timeout:void 0,persist:!1},ar={windowsHide:!0};function or(e,t){return{command:m(e),args:t??[]}}function sr(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 cr(e){let t=``;for await(let n of e)t+=n.toString();return t}var lr=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={...ir,...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 dr(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=Un(t),r=T.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 rr(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?cr(this._streamOut):``,this._streamErr?cr(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 rr(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=x(),t=this._options,n={...ar,...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=sr(r)),n.env=Hn(e,n.env);let{command:i,args:a}=or(this._command,this._args),o=(0,nr._parse)(i,a,n),s=re(o.command,o.args,o.options);if(s.stderr&&(this._streamErr=s.stderr),s.stdout&&(this._streamOut=s.stdout),this._process=s,s.once(`error`,this._onError),s.once(`close`,this._onClose),t.stdin!==void 0&&s.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(s.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 ur=(e,t,n)=>{let r=new lr(e,t,n);return r.spawn(),r},dr=ur;var fr=e({detectPackageManager:()=>yr,installDependencies:()=>br,packageManagers:()=>Y});async function pr(e,t,n={}){let r=wn(e).split(`/`);for(;r.length>0;){let e=await t(r.join(`/`)||`/`);if(e||!n.includeParentDirs)return e;r.pop()}}function mr(e){let t;return()=>(t===void 0&&(t=e().then(e=>(t=e,t))),t)}const hr=mr(async()=>{if(globalThis.process?.versions?.webcontainer)return!1;try{let{exitCode:e}=await ur(`corepack`,[`--version`]);return e===0}catch{return!1}});async function gr(e,t,n={}){let r=e!==`npm`&&e!==`bun`&&e!==`deno`&&n.corepack!==!1&&await hr()?[`corepack`,[e,...t]]:[e,t],{exitCode:i,stdout:a,stderr:o}=await ur(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(`
|
|
95
|
-
`):``}`)}async function _r(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 yr(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 vr(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 yr(e,t={}){let n=await pr(G(e||`.`),async e=>{if(!t.ignorePackageJSON){let t=Tn(e,`package.json`);if(r(t)){let e=JSON.parse(await c(t,`utf8`));if(e?.packageManager){let{name:t,version:n=`0.0.0`,buildMeta:r,warnings:i}=vr(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(r(Tn(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=>r(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 br(e={}){let t=await _r(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 gr(t.packageManager.command,n,{cwd:t.cwd,silent:t.silent,corepack:t.corepack}),{exec:{command:t.packageManager.command,args:n}}}async function xr(e,t,i={}){let a=t+`.json`,o=JSON.parse(await c(a,`utf8`).catch(()=>`{}`)),s=(await Z(e,{method:`HEAD`,headers:i.headers}).catch(()=>void 0))?.headers.get(`etag`);if(o.etag===s&&r(t))return;typeof s==`string`&&(o.etag=s);let l=await Z(e,{headers:i.headers});if(l.status>=400)throw Error(`Failed to download ${e}: ${l.status} ${l.statusText}`);let d=n(t);await _(ne)(l.body,d),await u(a,JSON.stringify(o),`utf8`)}const Sr=/^(?<repo>[\w.-]+\/[\w.-]+)(?<subdir>[^#]+)?(?<ref>#[\w./@-]+)?/;function Cr(e){let t=e.match(Sr)?.groups||{};return{repo:t.repo||``,subdir:t.subdir||`/`,ref:t.ref?t.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:Tr(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 wr(){let e=process.env.XDG_CACHE_HOME?G(process.env.XDG_CACHE_HOME,`giget`):G(ie(),`.cache/giget`);if(process.platform===`win32`){let t=G(ae(),`giget`);if(!r(t)&&r(e))try{a(e,t)}catch{}return t}return e}function Tr(e={}){let t={};for(let[n,r]of Object.entries(e))r&&(t[n.toLowerCase()]=r);return t}const Er=async(e,t)=>{if(e.endsWith(`.json`))return await Dr(e,t);let n=new URL(e),r=kn(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 Dr(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}}},Dr=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},Or=(e,t)=>{let n=Cr(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}`}},kr={http:Er,https:Er,github:Or,gh:Or,gitlab:(e,t)=>{let n=Cr(e),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=Cr(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=Cr(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`}}},Ar=(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}),jr=/^([\w-.]+):/;async function Mr(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:Ar(t.registry,{auth:t.auth}),a=t.provider||(n?`registry`:`github`),o=e,c=e.match(jr);c&&(a=c[1],o=e.slice(c[0].length),(a===`http`||a===`https`)&&(o=e));let u=t.providers?.[a]||kr[a]||n;if(!u)throw Error(`Unsupported provider: ${a}`);let d=await Promise.resolve().then(()=>u(o,{auth:t.auth})).catch(e=>{throw Error(`Failed to download template from ${a}: ${e.message}`)});if(!d)throw Error(`Failed to resolve template from ${a}`);d.name=(d.name||`template`).replace(/[^\da-z-]/gi,`-`),d.defaultDir=(d.defaultDir||d.name).replace(/[^\da-z-]/gi,`-`);let f=G(G(wr(),a,d.name),(d.version||d.name)+`.tar.gz`);if(t.preferOffline&&r(f)&&(t.offline=!0),!t.offline){await s(On(f),{recursive:!0});let e=Date.now();await xr(d.tar,f,{headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,...Tr(d.headers)}}).catch(e=>{if(!r(f))throw e;X(`Download error. Using cached version:`,e),t.offline=!0}),X(`Downloaded ${d.tar} to ${f} in ${Date.now()-e}ms`)}if(!r(f))throw Error(`Tarball not found: ${f} (offline: ${t.offline})`);let p=G(G(t.cwd||`.`),t.dir||d.defaultDir);if(t.forceClean&&await l(p,{recursive:!0,force:!0}),!t.force&&r(p)&&i(p).length>0)throw Error(`Destination ${p} already exists.`);await s(p,{recursive:!0});let m=Date.now(),h=d.subdir?.replace(/^\//,``)||``,{extract:g}=await import(`./tar-B68WOji2.mjs`).then(e=>e.t);if(await g({file:f,cwd:p,onReadEntry(e){e.path=e.path.split(`/`).splice(1).join(`/`),h&&(e.path.startsWith(h+`/`)?e.path=e.path.slice(h.length):e.path=``)}}),X(`Extracted to ${p} in ${Date.now()-m}ms`),t.install){X(`Installing dependencies...`);let{installDependencies:e}=await Promise.resolve().then(()=>vn).then(e=>e.t);await e({cwd:p,silent:t.silent,...typeof t.install==`object`?t.install:{}})}return{...d,source:o,dir:p}}var Nr=Object.create,Pr=Object.defineProperty,Fr=Object.getOwnPropertyDescriptor,Ir=Object.getOwnPropertyNames,Lr=Object.getPrototypeOf,Rr=Object.prototype.hasOwnProperty,Q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zr=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Ir(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Rr.call(e,s)&&s!==n&&Pr(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Fr(t,s))||r.enumerable});return e},Br=(e,t,n)=>(n=e==null?{}:Nr(Lr(e)),zr(t||!e||!e.__esModule?Pr(n,`default`,{value:e,enumerable:!0}):n,e)),$=E(import.meta.url);const Vr=/^path$/i,Hr={key:`PATH`,value:``};function Ur(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!Vr.test(t))continue;let n=e[t];return n?{key:t,value:n}:Hr}return Hr}function Wr(e,t){let n=t.value.split(d),r=e,i;do n.push(h(r,`node_modules`,`.bin`)),i=r,r=f(r);while(r!==i);return{key:t.key,value:n.join(d)}}function Gr(e,t){let n={...process.env,...t},r=Wr(e,Ur(n));return n[r.key]=r.value,n}const Kr=e=>{let t=e.length,n=new te,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var qr=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)}}),Jr=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}}),Yr=Q((e,t)=>{$(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?qr():Jr();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}}}),Xr=Q((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=$(`path`),i=n?`;`:`:`,a=Yr(),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)}}),Zr=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}),Qr=Q((e,t)=>{let n=$(`path`),r=Xr(),i=Zr();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}),$r=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(/(\\*)"/g,`$1$1\\"`),e=e.replace(/(\\*)$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i}),ei=Q((e,t)=>{t.exports=/^#!(.*)/}),ti=Q((e,t)=>{let n=ei();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}}),ni=Q((e,t)=>{let n=$(`fs`),r=ti();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}),ri=Q((e,t)=>{let n=$(`path`),r=Qr(),i=$r(),a=ni(),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}),ii=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,`spawn`);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}}),ai=Br(Q((e,t)=>{let n=$(`child_process`),r=ri(),i=ii();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})(),1),oi=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 si={timeout:void 0,persist:!1},ci={windowsHide:!0};function li(e,t){return{command:m(e),args:t??[]}}function ui(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 di(e){let t=``;for await(let n of e)t+=n.toString();return t}var fi=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={...si,...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 mi(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=Kr(t),r=T.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 oi(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?di(this._streamOut):``,this._streamErr?di(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 oi(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=x(),t=this._options,n={...ci,...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=ui(r)),n.env=Gr(e,n.env);let{command:i,args:a}=li(this._command,this._args),o=(0,ai._parse)(i,a,n),s=re(o.command,o.args,o.options);if(s.stderr&&(this._streamErr=s.stderr),s.stdout&&(this._streamOut=s.stdout),this._process=s,s.once(`error`,this._onError),s.once(`close`,this._onClose),t.stdin!==void 0&&s.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(s.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 pi=(e,t,n)=>{let r=new fi(e,t,n);return r.spawn(),r},mi=pi;function hi(){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 gi(){try{return await pi(`pnpm`,[`--version`],{throwOnError:!0}),!0}catch{return!1}}_n(dn({meta:{name:`create-mugnavo`,version:`0.1.0`},args:{name:{type:`positional`,description:`Project name`,required:!1},template:{type:`enum`,description:`Template to use`,options:[`tanstarter`,`tanstarter-monorepo`],required:!1},install:{type:`boolean`,description:`Install dependencies`,required:!1},packageManager:{type:`enum`,description:`Package manager to use`,options:[`pnpm`,`npm`,`bun`,`yarn`],required:!1}},async run({args:e}){let n=e.name,r=e.template,i=e.install,a=e.packageManager,s=await gi()?`pnpm`:hi();if(!n&&(n=await Wt({message:`Project name?`,placeholder:`my-project`,defaultValue:`my-project`,validate(e){if(e&&e.includes(` `))return`Project name cannot contain spaces`}}),A(n))){Mt(`Operation cancelled.`);return}if(!r&&(r=await Bt({message:`Select a template to use`,options:[{value:`tanstarter`,label:`TanStarter`},{value:`tanstarter-monorepo`,label:`TanStarter (Monorepo)`,hint:`Turborepo`}]}),A(r))){Mt(`Operation cancelled.`);return}if(i===void 0&&(i=await jt({message:`Install dependencies after scaffolding?`,initialValue:!0}),A(i))){Mt(`Operation cancelled.`);return}if(i&&!a&&(a=await Bt({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:s}),A(a))){Mt(`Operation cancelled.`);return}let c=Rt();try{c.start(`Cloning project...`);let{dir:e,source:u}=await Mr(`github:mugnavo/tanstarter${r===`tanstarter-monorepo`?`#next`:``}`,{dir:String(n)});try{await l(p(e,`LICENSE`),{force:!0})}catch{}try{r===`tanstarter`?await o(p(e,`.env.example`),p(e,`.env`),t.COPYFILE_EXCL):r===`tanstarter-monorepo`&&(await o(p(e,`apps`,`web`,`.env.example`),p(e,`apps`,`web`,`.env`),t.COPYFILE_EXCL),await o(p(e,`packages`,`db`,`.env.example`),p(e,`packages`,`db`,`.env`),t.COPYFILE_EXCL))}catch{}let d=String(a||s);if(c.stop(`Project cloned from ${u}`),await pi(`git`,[`init`],{throwOnError:!1,nodeOptions:{cwd:e,stdio:`inherit`}}),i){let t=Ut({title:`Installing dependencies with ${d}...`,limit:5,retainLog:!1}),n=pi(d,[`install`],{throwOnError:!1,nodeOptions:{cwd:e}});for await(let e of n){let n=e.trim();n&&t.message(n)}(await n).exitCode===0?t.success(`Dependencies installed`):(i=!1,t.error(`Dependency installation failed. You can run ${d} install manually.`))}let f=d===`npm`?`npm run dev`:d===`deno`?`deno task dev`:`${d} dev`;It(`cd ${String(n)}${i?``:`\n${d} install`}\n${f}`,`Next steps`),Nt(`Project created successfully`)}catch(e){c.stop(),Nt(`Failed to download template. Please try again later.`),console.error(e);return}}}));export{};
|
|
95
|
+
`):``}`)}async function _r(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 yr(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 vr(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 yr(e,t={}){let n=await pr(G(e||`.`),async e=>{if(!t.ignorePackageJSON){let t=Tn(e,`package.json`);if(r(t)){let e=JSON.parse(await c(t,`utf8`));if(e?.packageManager){let{name:t,version:n=`0.0.0`,buildMeta:r,warnings:i}=vr(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(r(Tn(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=>r(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 br(e={}){let t=await _r(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 gr(t.packageManager.command,n,{cwd:t.cwd,silent:t.silent,corepack:t.corepack}),{exec:{command:t.packageManager.command,args:n}}}async function xr(e,t,i={}){let a=t+`.json`,o=JSON.parse(await c(a,`utf8`).catch(()=>`{}`)),s=(await Z(e,{method:`HEAD`,headers:i.headers}).catch(()=>void 0))?.headers.get(`etag`);if(o.etag===s&&r(t))return;typeof s==`string`&&(o.etag=s);let l=await Z(e,{headers:i.headers});if(l.status>=400)throw Error(`Failed to download ${e}: ${l.status} ${l.statusText}`);let d=n(t);await _(ne)(l.body,d),await u(a,JSON.stringify(o),`utf8`)}const Sr=/^(?<repo>[\w.-]+\/[\w.-]+)(?<subdir>[^#]+)?(?<ref>#[\w./@-]+)?/;function Cr(e){let t=e.match(Sr)?.groups||{};return{repo:t.repo||``,subdir:t.subdir||`/`,ref:t.ref?t.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:Tr(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 wr(){let e=process.env.XDG_CACHE_HOME?G(process.env.XDG_CACHE_HOME,`giget`):G(ie(),`.cache/giget`);if(process.platform===`win32`){let t=G(ae(),`giget`);if(!r(t)&&r(e))try{a(e,t)}catch{}return t}return e}function Tr(e={}){let t={};for(let[n,r]of Object.entries(e))r&&(t[n.toLowerCase()]=r);return t}const Er=async(e,t)=>{if(e.endsWith(`.json`))return await Dr(e,t);let n=new URL(e),r=kn(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 Dr(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}}},Dr=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},Or=(e,t)=>{let n=Cr(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}`}},kr={http:Er,https:Er,github:Or,gh:Or,gitlab:(e,t)=>{let n=Cr(e),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=Cr(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=Cr(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`}}},Ar=(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}),jr=/^([\w-.]+):/;async function Mr(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:Ar(t.registry,{auth:t.auth}),a=t.provider||(n?`registry`:`github`),o=e,c=e.match(jr);c&&(a=c[1],o=e.slice(c[0].length),(a===`http`||a===`https`)&&(o=e));let u=t.providers?.[a]||kr[a]||n;if(!u)throw Error(`Unsupported provider: ${a}`);let d=await Promise.resolve().then(()=>u(o,{auth:t.auth})).catch(e=>{throw Error(`Failed to download template from ${a}: ${e.message}`)});if(!d)throw Error(`Failed to resolve template from ${a}`);d.name=(d.name||`template`).replace(/[^\da-z-]/gi,`-`),d.defaultDir=(d.defaultDir||d.name).replace(/[^\da-z-]/gi,`-`);let f=G(G(wr(),a,d.name),(d.version||d.name)+`.tar.gz`);if(t.preferOffline&&r(f)&&(t.offline=!0),!t.offline){await s(On(f),{recursive:!0});let e=Date.now();await xr(d.tar,f,{headers:{Authorization:t.auth?`Bearer ${t.auth}`:void 0,...Tr(d.headers)}}).catch(e=>{if(!r(f))throw e;X(`Download error. Using cached version:`,e),t.offline=!0}),X(`Downloaded ${d.tar} to ${f} in ${Date.now()-e}ms`)}if(!r(f))throw Error(`Tarball not found: ${f} (offline: ${t.offline})`);let p=G(G(t.cwd||`.`),t.dir||d.defaultDir);if(t.forceClean&&await l(p,{recursive:!0,force:!0}),!t.force&&r(p)&&i(p).length>0)throw Error(`Destination ${p} already exists.`);await s(p,{recursive:!0});let m=Date.now(),h=d.subdir?.replace(/^\//,``)||``,{extract:g}=await import(`./tar-B68WOji2.mjs`).then(e=>e.t);if(await g({file:f,cwd:p,onReadEntry(e){e.path=e.path.split(`/`).splice(1).join(`/`),h&&(e.path.startsWith(h+`/`)?e.path=e.path.slice(h.length):e.path=``)}}),X(`Extracted to ${p} in ${Date.now()-m}ms`),t.install){X(`Installing dependencies...`);let{installDependencies:e}=await Promise.resolve().then(()=>vn).then(e=>e.t);await e({cwd:p,silent:t.silent,...typeof t.install==`object`?t.install:{}})}return{...d,source:o,dir:p}}var Nr=Object.create,Pr=Object.defineProperty,Fr=Object.getOwnPropertyDescriptor,Ir=Object.getOwnPropertyNames,Lr=Object.getPrototypeOf,Rr=Object.prototype.hasOwnProperty,Q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zr=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Ir(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Rr.call(e,s)&&s!==n&&Pr(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Fr(t,s))||r.enumerable});return e},Br=(e,t,n)=>(n=e==null?{}:Nr(Lr(e)),zr(t||!e||!e.__esModule?Pr(n,`default`,{value:e,enumerable:!0}):n,e)),$=E(import.meta.url);const Vr=/^path$/i,Hr={key:`PATH`,value:``};function Ur(e){for(let t in e){if(!Object.prototype.hasOwnProperty.call(e,t)||!Vr.test(t))continue;let n=e[t];return n?{key:t,value:n}:Hr}return Hr}function Wr(e,t){let n=t.value.split(d),r=e,i;do n.push(h(r,`node_modules`,`.bin`)),i=r,r=f(r);while(r!==i);return{key:t.key,value:n.join(d)}}function Gr(e,t){let n={...process.env,...t},r=Wr(e,Ur(n));return n[r.key]=r.value,n}const Kr=e=>{let t=e.length,n=new te,r=()=>{--t===0&&n.emit(`end`)};for(let t of e)t.pipe(n,{end:!1}),t.on(`end`,r);return n};var qr=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)}}),Jr=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}}),Yr=Q((e,t)=>{$(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?qr():Jr();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}}}),Xr=Q((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=$(`path`),i=n?`;`:`:`,a=Yr(),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)}}),Zr=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}),Qr=Q((e,t)=>{let n=$(`path`),r=Xr(),i=Zr();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}),$r=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(/(\\*)"/g,`$1$1\\"`),e=e.replace(/(\\*)$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i}),ei=Q((e,t)=>{t.exports=/^#!(.*)/}),ti=Q((e,t)=>{let n=ei();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}}),ni=Q((e,t)=>{let n=$(`fs`),r=ti();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}),ri=Q((e,t)=>{let n=$(`path`),r=Qr(),i=$r(),a=ni(),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}),ii=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,`spawn`);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}}),ai=Br(Q((e,t)=>{let n=$(`child_process`),r=ri(),i=ii();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})(),1),oi=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 si={timeout:void 0,persist:!1},ci={windowsHide:!0};function li(e,t){return{command:m(e),args:t??[]}}function ui(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 di(e){let t=``;for await(let n of e)t+=n.toString();return t}var fi=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={...si,...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 mi(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=Kr(t),r=T.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 oi(this)}async _waitForOutput(){let e=this._process;if(!e)throw Error(`No process was started`);let[t,n]=await Promise.all([this._streamOut?di(this._streamOut):``,this._streamErr?di(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 oi(this,r);return r}then(e,t){return this._waitForOutput().then(e,t)}_streamOut;_streamErr;spawn(){let e=x(),t=this._options,n={...ci,...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=ui(r)),n.env=Gr(e,n.env);let{command:i,args:a}=li(this._command,this._args),o=(0,ai._parse)(i,a,n),s=re(o.command,o.args,o.options);if(s.stderr&&(this._streamErr=s.stderr),s.stdout&&(this._streamOut=s.stdout),this._process=s,s.once(`error`,this._onError),s.once(`close`,this._onClose),t.stdin!==void 0&&s.stdin&&t.stdin.process){let{stdout:e}=t.stdin.process;e&&e.pipe(s.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 pi=(e,t,n)=>{let r=new fi(e,t,n);return r.spawn(),r},mi=pi;function hi(){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 gi(){try{return await pi(`pnpm`,[`--version`],{throwOnError:!0}),!0}catch{return!1}}_n(dn({meta:{name:`create-mugnavo`,version:`0.1.2`},args:{name:{type:`positional`,description:`Project name`,required:!1},template:{type:`enum`,description:`TanStarter template to use`,options:[`default`,`monorepo`],required:!1},install:{type:`boolean`,description:`Install dependencies`,required:!1},packageManager:{type:`enum`,description:`Package manager to use`,options:[`pnpm`,`npm`,`bun`,`yarn`],required:!1}},async run({args:e}){let n=e.name,r=e.template,i=e.install,a=e.packageManager,s=await gi()?`pnpm`:hi();if(!n&&(n=await Wt({message:`Project name?`,placeholder:`my-project`,defaultValue:`my-project`,validate(e){if(e&&e.includes(` `))return`Project name cannot contain spaces`}}),A(n))){Mt(`Operation cancelled.`);return}if(!r&&(r=await Bt({message:`Select a template to use`,options:[{value:`default`,label:`Default`,hint:`minimal TanStarter template`},{value:`monorepo`,label:`Monorepo`,hint:`with Turborepo & pnpm workspaces`}]}),A(r))){Mt(`Operation cancelled.`);return}if(i===void 0&&(i=await jt({message:`Install dependencies after scaffolding?`,initialValue:!0}),A(i))){Mt(`Operation cancelled.`);return}if(i&&!a&&(a=await Bt({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:s}),A(a))){Mt(`Operation cancelled.`);return}let c=Rt();try{c.start(`Cloning project...`);let{dir:e,source:u}=await Mr(`github:mugnavo/tanstarter${r===`monorepo`?`#next`:``}`,{dir:String(n)});try{await l(p(e,`LICENSE`),{force:!0})}catch{}try{r===`default`?await o(p(e,`.env.example`),p(e,`.env`),t.COPYFILE_EXCL):r===`monorepo`&&(await o(p(e,`apps`,`web`,`.env.example`),p(e,`apps`,`web`,`.env`),t.COPYFILE_EXCL),await o(p(e,`packages`,`db`,`.env.example`),p(e,`packages`,`db`,`.env`),t.COPYFILE_EXCL))}catch{}let d=String(a||s);if(c.stop(`Project cloned from ${u}`),await pi(`git`,[`init`],{throwOnError:!1,nodeOptions:{cwd:e,stdio:`inherit`}}),i){let t=Ut({title:`Installing dependencies with ${d}...`,limit:5,retainLog:!1}),n=pi(d,[`install`],{throwOnError:!1,nodeOptions:{cwd:e}});for await(let e of n){let n=e.trim();n&&t.message(n)}(await n).exitCode===0?t.success(`Dependencies installed`):(i=!1,t.error(`Dependency installation failed. You can run ${d} install manually.`))}let f=d===`npm`?`npm run dev`:d===`deno`?`deno task dev`:`${d} dev`,m=`https://github.com/mugnavo/tanstarter${r===`monorepo`?`/tree/next`:``}`;It(`cd ${String(n)}${i?``:`\n${d} install`}\n${f}\n\nSee README.md for next steps\n${m}`,`Next steps`),Nt(`Project created successfully`)}catch(e){c.stop(),Nt(`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.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Create a project using Mugnavo templates.",
|
|
5
5
|
"homepage": "https://github.com/mugnavo/create-mugnavo#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"type": "git",
|
|
13
13
|
"url": "git+https://github.com/mugnavo/create-mugnavo.git"
|
|
14
14
|
},
|
|
15
|
+
"bin": "./dist/index.mjs",
|
|
15
16
|
"files": [
|
|
16
17
|
"dist"
|
|
17
18
|
],
|