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.
@@ -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`),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.0`,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(`
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(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zerostarter",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Go from zero to a production-ready SaaS, rebranded and ready to ship.",
5
5
  "keywords": [
6
6
  "cli",