zerostarter 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/index.mjs +1 -1
- package/package.json +1 -1
package/dist/bin/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"../convert-HXDPuaZU.mjs";import{basename as f,delimiter as p,dirname as m,join as h,parse as g,resolve as _}from"node:path";import{existsSync as v,readFileSync as y,readdirSync as ee}from"node:fs";import{spawn as b}from"node:child_process";import{access as x}from"node:fs/promises";import{createInterface as te}from"node:readline/promises";import{randomBytes as ne}from"node:crypto";import{parseArgs as re}from"node:util";import{homedir as ie}from"node:os";const S=(e,t,n=process.stdout)=>r=>n.isTTY?`\x1b[${e}m${r}\x1b[${t}m`:r,C=S(`36`,`39`),w=S(`32`,`39`),T=S(`33`,`39`),E=S(`90`,`39`),D=S(`2`,`22`),O=S(`31`,`39`,process.stderr),ae=S(`2`,`22`,process.stderr),k=S(`38;5;208`,`39`),A=[`◇`,`◆`],j=(e,t)=>{let n=(e%A.length+A.length)%A.length;return`${C(A[n])} ${t}`},M={barStart:`┌`,bar:`│`,barEnd:`└`,active:`◆`,submit:`◇`,radioOn:`●`,radioOff:`○`,warn:`▲`,error:`■`,barH:`─`,cornerTR:`╮`,connectL:`├`,cornerBL:`╰`,cornerBR:`╯`};var oe=class extends Error{constructor(...e){super(...e),this.name=`SubprocessError`,this.stdout=``,this.stderr=``}};const se=[`.exe`,`.com`],N=e=>e.replaceAll(/([()\][%!^"`<>&|;, *?])/g,`^$1`),ce=e=>N(N(`"${e.replaceAll(/(\\*)"/g,`$1$1\\"`).replace(/(\\*)$/,`$1$1`)}"`)),le=async(e,t,n)=>{if(se.some(t=>e.toLowerCase().endsWith(t)))return!0;let r=(n.PATH||n.Path||``).split(p).filter(Boolean).map(e=>e.replace(/^"(.*)"$/,`$1`));try{return await Promise.any([t,...r].flatMap(t=>se.map(n=>x(`${_(t,e)}${n}`)))),!0}catch{return!1}},ue=async(e,t,n,r=process.platform===`win32`)=>{let i=n.cwd?String(n.cwd):`.`,a=n.env||process.env;return r&&!n.shell&&!await le(e,i,a)?[N(e),t.map(ce),{...n,shell:!0}]:[e,t,n]},P=async(e,t,n,r)=>{let i=[e,...t].join(` `),[a,o,s]=await ue(e,t,n);s.shell&&o.length>0&&(a=[a,...o].join(` `),o=[]);let c=b(a,o,s),l=``,u=``;return new Promise((e,t)=>{let n=(e,n,r)=>{let i=new oe(e,r?{cause:r}:void 0);i.stdout=l,i.stderr=u,i.exitCode=n,t(i)},a=e=>{e.code!==`ERR_STREAM_PREMATURE_CLOSE`&&e.code!==`EPIPE`&&n(`Command failed: ${i}`,void 0,e)};c.stdout&&(c.stdout.setEncoding(`utf8`),c.stdout.on(`data`,e=>{l+=e,r?.(e)}),c.stdout.on(`error`,a)),c.stderr&&(c.stderr.setEncoding(`utf8`),c.stderr.on(`data`,e=>{u+=e,r?.(e)}),c.stderr.on(`error`,a)),c.on(`error`,e=>n(`Command failed: ${i}`,void 0,e)),c.on(`close`,(t,r)=>{if(r)return n(`Command was terminated with ${r}: ${i}`);if(t!==0)return n(`Command failed with exit code ${t}: ${i}`,t??void 0);e({stdout:l,stderr:u})})})},F=async(e,t,n)=>{let{stdout:r}=await P(e,t,{cwd:n,stdio:[`ignore`,`pipe`,`pipe`]});return r},de=async(e,t,n)=>{await P(e,t,{cwd:n,stdio:`inherit`})},I=async(e,t)=>{try{return await P(e,t,{stdio:`ignore`}),!0}catch{return!1}},fe=RegExp(`\x1B\\[[0-9;?]*[a-zA-Z]`,`g`),pe=e=>e.replace(fe,``),me=new WeakSet,he=e=>{if(process.stderr.write(`\n ${O(e instanceof Error?e.message:String(e))}\n`),!(e instanceof oe)||me.has(e))return;let t=(e.stderr||e.stdout||``).trim();if(!t)return;let n=pe(t).split(`
|
|
3
3
|
`).map(e=>e.trimEnd()).filter(Boolean).slice(-12);for(let e of n)process.stderr.write(` ${ae(e)}\n`)},ge=async(e,t,n)=>{let r=process.stdout,i=n.label??``;if(!r.isTTY){i&&r.write(` ${C(M.active)} ${i}\n`),await de(e,t,n.cwd);return}let a=n.lines??3,o=[],s=0,c=0,l=``,u=``,d=()=>(r.columns||80)-1,f=e=>{r.write(e?`\x1B[?7h`:`\x1B[?7l`)},p=()=>{c>0&&(r.write(`[${c}A[0J`),c=0)},m=()=>{p();let e=0;r.write(` ${j(s,i)}\n`),e++;for(let t of o.slice(-a))r.write(` ${E(M.bar)} ${D(t.slice(0,Math.max(0,d()-5)))}\n`),e++;c=e},h=e=>{u+=e,l+=e;let t=l.split(`
|
|
4
|
-
`);l=t.pop()??``;for(let e of t)o.push(pe(e).replace(/\r/g,``).replace(/\t/g,` `).trimEnd()),m()};m(),f(!1);let g=()=>{f(!0),process.exit(130)};process.once(`SIGINT`,g);let _=setInterval(()=>{s+=1,m()},400),v=()=>{clearInterval(_),process.removeListener(`SIGINT`,g)};try{await P(e,t,{cwd:n.cwd,stdio:[`ignore`,`pipe`,`pipe`]},h)}catch(e){throw v(),p(),f(!0),r.write(u),e&&typeof e==`object`&&me.add(e),e}v(),p(),f(!0),r.write(` ${C(M.active)} ${n.done??i}\n`);for(let e of o.slice(-a))r.write(` ${E(M.bar)} ${D(e.slice(0,Math.max(0,d()-5)))}\n`)};var _e={name:`zerostarter`,version:`0.1.
|
|
4
|
+
`);l=t.pop()??``;for(let e of t)o.push(pe(e).replace(/\r/g,``).replace(/\t/g,` `).trimEnd()),m()};m(),f(!1);let g=()=>{f(!0),process.exit(130)};process.once(`SIGINT`,g);let _=setInterval(()=>{s+=1,m()},400),v=()=>{clearInterval(_),process.removeListener(`SIGINT`,g)};try{await P(e,t,{cwd:n.cwd,stdio:[`ignore`,`pipe`,`pipe`]},h)}catch(e){throw v(),p(),f(!0),r.write(u),e&&typeof e==`object`&&me.add(e),e}v(),p(),f(!0),r.write(` ${C(M.active)} ${n.done??i}\n`);for(let e of o.slice(-a))r.write(` ${E(M.bar)} ${D(e.slice(0,Math.max(0,d()-5)))}\n`)};var _e={name:`zerostarter`,version:`0.1.1`,description:`Go from zero to a production-ready SaaS, rebranded and ready to ship.`,keywords:[`cli`,`saas`,`scaffold`,`starter`,`template`,`zerostarter`],homepage:`https://github.com/nrjdalal/zerostarter#readme`,bugs:`https://github.com/nrjdalal/zerostarter/issues`,license:`MIT`,author:{name:`Neeraj Dalal`,email:`admin@nrjdalal.com`,url:`https://nrjdalal.com`},repository:`nrjdalal/zerostarter`,funding:`https://github.com/sponsors/nrjdalal`,bin:{zerostarter:`dist/bin/index.mjs`},files:[`dist`],type:`module`,types:`./dist/index.d.mts`,exports:`./dist/index.mjs`,scripts:{build:`tsdown`,"check-types":`tsc --noEmit`,dev:`tsdown --watch`,test:`bun test`},devDependencies:{"@packages/config":`workspace:*`,"@types/bun":`catalog:`,"@types/node":`catalog:`,tsdown:`catalog:`,typescript:`catalog:`}};const L=()=>!!(process.stdin.isTTY&&process.stdout.isTTY),ve=(e,t=e)=>process.stdout.isTTY?`\x1b]8;;${e}\x07${t}\x1b]8;;\x07`:e,R=e=>ve(e,C(e)),z=e=>{process.stdout.write(`\n ${E(M.barStart)} ${e}\n ${E(M.bar)}\n`)},B=e=>{process.stdout.write(` ${E(M.bar)}\n ${E(M.barEnd)} ${e}\n`)},V=(e=`Cancelled`)=>{process.stdout.write(` ${E(M.barEnd)} ${O(e)}\n`)},H=e=>e.replace(RegExp(`\x1B\\[[0-9;?]*[a-zA-Z]`,`g`),``).replace(RegExp(`\x1B\\]8;;.*?\\x07`,`g`),``).length,U=(e,t=``,n=!1)=>{let r=`\n${e}\n`.split(`
|
|
5
5
|
`),i=H(t),a=r.reduce((e,t)=>Math.max(e,H(t)),i),o=Math.max(a,54)+2,s=r.map(e=>` ${E(M.bar)} ${e}${` `.repeat(o-H(e))}${E(M.bar)}`).join(`
|
|
6
6
|
`),c=n?M.cornerBL:M.connectL;process.stdout.write(` ${C(M.active)} ${t} ${E(M.barH.repeat(Math.max(o-i-1,1))+M.cornerTR)}\n${s}\n ${E(c+M.barH.repeat(o+2)+M.cornerBR)}\n`)},W=(e,t=[])=>{process.stdout.write(` ${C(M.active)} ${e}\n`);for(let e of t)process.stdout.write(` ${E(M.bar)} ${e}\n`)},ye=e=>{process.stdout.write(` ${w(M.active)} ${w(e)}\n`)},G=(e,t=[])=>{process.stdout.write(` ${T(M.warn)} ${T(e)}\n`);for(let e of t)process.stdout.write(` ${E(M.bar)} ${T(e)}\n`)},be=async(e,t,n)=>{let r=process.stdout,i=null;if(r.isTTY){let t=0;r.write(` ${j(0,e)}`),i=setInterval(()=>{t+=1,r.write(`\r\x1b[K ${j(t,e)}`)},400)}try{let e=await n();return i&&clearInterval(i),r.write(r.isTTY?`\r\x1b[K ${C(M.active)} ${t}\n`:` ${C(M.active)} ${t}\n`),e}catch(e){throw i&&clearInterval(i),r.isTTY&&r.write(`\r\x1B[K`),e}},xe=e=>{let t=e?`${w(M.radioOn)} Yes`:D(`${M.radioOff} Yes`),n=e?D(`${M.radioOff} No`):`${w(M.radioOn)} No`;return` ${E(M.bar)} ${t} ${D(`/`)} ${n}`},K=async(e,t=!0)=>{let n=process.stdout;return L()?new Promise(r=>{let i=t,a=process.stdin,o=Math.max(1,Math.ceil((5+H(e))/(n.columns||80)));n.write(` ${C(M.submit)} ${e}\n`),n.write(xe(i)),a.setRawMode(!0),a.resume(),a.setEncoding(`utf8`);let s=()=>{a.setRawMode(!1),a.pause(),a.removeListener(`data`,u)},c=()=>{n.write(`\r\x1b[K\x1b[${o}A\r\x1b[0J`)},l=()=>{s(),c(),r(i)};function u(t){t===``?(s(),c(),n.write(` ${C(M.submit)} ${D(e)}\n`),V(),process.exit(130)):t===`\r`||t===`
|
|
7
7
|
`?l():t===`y`||t===`Y`?(i=!0,l()):t===`n`||t===`N`?(i=!1,l()):(t===`\x1B[C`||t===`\x1B[D`||t===`\x1B[A`||t===`\x1B[B`||t===`h`||t===`l`)&&(i=!i,n.write(`\r\x1b[K${xe(i)}`))}a.on(`data`,u)}):(n.write(` ${C(M.active)} ${e} ${D(t?`Yes`:`No`)}\n`),t)},Se=async(e,t=``)=>{process.stdout.write(` ${C(M.submit)} ${e}${t?` ${D(`(${t})`)}`:``}\n`);let n=te({input:process.stdin,output:process.stdout});try{return(await n.question(` ${E(M.bar)} `)).trim()||t}finally{n.close()}},Ce=`pglaunch@5.5.7`,we=async()=>I(`docker`,[`info`]),Te=t=>{let n=h(t,`.env`);if(!e(n)){let r=h(t,`.env.example`);d(n,e(r)?l(r):``)}return n},Ee=(e,t)=>{let n=`${t}=`,r=l(e).split(`
|