zerostarter 0.1.40 → 0.1.41

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,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{A as e,C as t,D as n,E as r,F as i,I as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,b as m,c as ee,d as h,f as g,g as _,h as v,i as y,j as b,k as x,l as S,m as C,n as te,o as ne,p as w,r as re,s as ie,t as ae,u as T,v as E,w as oe,x as D,y as O}from"../convert-D5950liy.mjs";import{basename as se,delimiter as ce,dirname as le,join as k,parse as ue,resolve as A}from"node:path";import{existsSync as j,readFileSync as de,readdirSync as fe}from"node:fs";import{randomBytes as pe}from"node:crypto";import{createInterface as me}from"node:readline/promises";import{parseArgs as he}from"node:util";import{homedir as ge}from"node:os";var _e={name:`zerostarter`,version:`0.1.40`,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":`tsrs --noEmit`,dev:`tsdown --watch`},devDependencies:{"@packages/config":`workspace:*`,"@types/bun":`catalog:`,"@types/node":`catalog:`,tsdown:`catalog:`,tsrs:`catalog:`,typescript:`catalog:`}};const M=()=>!!(process.stdin.isTTY&&process.stdout.isTTY),ve=(e,t=e)=>process.stdout.isTTY?`\x1b]8;;${e}\x07${t}\x1b]8;;\x07`:e,N=e=>ve(e,O(e)),P=e=>{process.stdout.write(`\n ${D(E.barStart)} ${e}\n ${D(E.bar)}\n`)},F=e=>{process.stdout.write(` ${D(E.bar)}\n ${D(E.barEnd)} ${e}\n`)},I=(e=`Cancelled`)=>{process.stdout.write(` ${D(E.barEnd)} ${d(e)}\n`)},L=e=>e.replace(/* @__PURE__ */ RegExp(`\x1B\\[[0-9;?]*[a-zA-Z]`,`g`),``).replace(/* @__PURE__ */ RegExp(`\x1B\\]8;;.*?\\x07`,`g`),``).length,R=(e,t=``,n=!1)=>{let r=`\n${e}\n`.split(`
2
+ import{A as e,C as t,D as n,E as r,F as i,I as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,b as m,c as ee,d as h,f as g,g as _,h as v,i as y,j as b,k as x,l as S,m as C,n as te,o as ne,p as w,r as re,s as ie,t as ae,u as T,v as E,w as oe,x as D,y as O}from"../convert-CpZLx7IJ.mjs";import{basename as se,delimiter as ce,dirname as le,join as k,parse as ue,resolve as A}from"node:path";import{existsSync as j,readFileSync as de,readdirSync as fe}from"node:fs";import{randomBytes as pe}from"node:crypto";import{createInterface as me}from"node:readline/promises";import{parseArgs as he}from"node:util";import{homedir as ge}from"node:os";var _e={name:`zerostarter`,version:`0.1.41`,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":`tsrs --noEmit`,dev:`tsdown --watch`},devDependencies:{"@packages/config":`workspace:*`,"@types/bun":`catalog:`,"@types/node":`catalog:`,tsdown:`catalog:`,tsrs:`catalog:`,typescript:`catalog:`}};const M=()=>!!(process.stdin.isTTY&&process.stdout.isTTY),ve=(e,t=e)=>process.stdout.isTTY?`\x1b]8;;${e}\x07${t}\x1b]8;;\x07`:e,N=e=>ve(e,O(e)),P=e=>{process.stdout.write(`\n ${D(E.barStart)} ${e}\n ${D(E.bar)}\n`)},F=e=>{process.stdout.write(` ${D(E.bar)}\n ${D(E.barEnd)} ${e}\n`)},I=(e=`Cancelled`)=>{process.stdout.write(` ${D(E.barEnd)} ${d(e)}\n`)},L=e=>e.replace(/* @__PURE__ */ RegExp(`\x1B\\[[0-9;?]*[a-zA-Z]`,`g`),``).replace(/* @__PURE__ */ RegExp(`\x1B\\]8;;.*?\\x07`,`g`),``).length,R=(e,t=``,n=!1)=>{let r=`\n${e}\n`.split(`
3
3
  `),i=L(t),a=r.reduce((e,t)=>Math.max(e,L(t)),i),o=Math.max(a,54)+2,s=r.map(e=>` ${D(E.bar)} ${e}${` `.repeat(o-L(e))}${D(E.bar)}`).join(`
4
4
  `),c=n?E.cornerBL:E.connectL;process.stdout.write(` ${O(E.active)} ${t} ${D(E.barH.repeat(Math.max(o-i-1,1))+E.cornerTR)}\n${s}\n ${D(c+E.barH.repeat(o+2)+E.cornerBR)}\n`)},z=(e,t=[])=>{process.stdout.write(` ${O(E.active)} ${e}\n`);for(let e of t)process.stdout.write(` ${D(E.bar)} ${e}\n`)},ye=e=>{process.stdout.write(` ${u(E.active)} ${u(e)}\n`)},B=(e,t=[])=>{process.stdout.write(` ${r(E.warn)} ${r(e)}\n`);for(let e of t)process.stdout.write(` ${D(E.bar)} ${r(e)}\n`)},be=async(e,t,n)=>{let r=process.stdout,i=null;if(r.isTTY){let t=0;r.write(` ${oe(0,e)}`),i=setInterval(()=>{t+=1,r.write(`\r\x1b[K ${oe(t,e)}`)},400)}try{let e=await n();return i&&clearInterval(i),r.write(r.isTTY?`\r\x1b[K ${O(E.active)} ${t}\n`:` ${O(E.active)} ${t}\n`),e}catch(e){throw i&&clearInterval(i),r.isTTY&&r.write(`\r\x1B[K`),e}},xe=e=>{let t=e?`${u(E.radioOn)} Yes`:m(`${E.radioOff} Yes`),n=e?m(`${E.radioOff} No`):`${u(E.radioOn)} No`;return` ${D(E.bar)} ${t} ${m(`/`)} ${n}`},V=async(e,t=!0)=>{let n=process.stdout;return M()?new Promise(r=>{let i=t,a=process.stdin,o=Math.max(1,Math.ceil((5+L(e))/(n.columns||80)));n.write(` ${O(E.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(` ${O(E.submit)} ${m(e)}\n`),I(),process.exit(130)):t===`\r`||t===`
5
5
  `?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(` ${O(E.active)} ${e} ${m(t?`Yes`:`No`)}\n`),t)},Se=async(e,t)=>{if(t.length===0)return[];let n=process.stdout,r=new Set(t.filter(e=>e.checked).map(e=>e.value)),i=()=>t.filter(e=>r.has(e.value)).map(e=>e.label).join(`, `)||`none`;return M()?new Promise(a=>{let o=process.stdin,s=0,c=e=>{let n=t[e],i=r.has(n.value)?u(E.checkboxOn):m(E.checkboxOff),a=e===s?n.label:m(n.label);return` ${D(E.bar)} ${i} ${a}`},l=e=>{e||n.write(`\x1b[${t.length}A`);for(let e=0;e<t.length;e++)n.write(`\r\x1b[K${c(e)}\n`)};n.write(` ${O(E.submit)} ${e}\n`),l(!0),o.setRawMode(!0),o.resume(),o.setEncoding(`utf8`);let d=()=>{o.setRawMode(!1),o.pause(),o.removeListener(`data`,f)};function f(o){if(o===``)d(),n.write(`\x1b[${t.length+1}A\r\x1b[0J ${O(E.submit)} ${m(e)}\n`),I(),process.exit(130);else if(o===`\r`||o===`
@@ -158,4 +158,4 @@ export default docsConfig
158
158
  `).split(`
159
159
  `),o=a.indexOf(`---`),s=a.indexOf(`---`,o+1);if(o!==0||s===-1)throw Error(`.agents/skills/${r}/SKILL.md has no frontmatter to reconcile (the skill shape drifted). Update packages/cli/src/skills.ts.`);let c=je(e),l=i||c===``||c===`local`?W:c,u=a.slice(o+1,s).map(e=>e.startsWith(`source:`)?`source: ${l}`:Z(e,t,n));u.some(e=>e.startsWith(`source:`))||u.push(`source: ${l}`);let d=Z(a.slice(s+1).join(`
160
160
  `),t,n).replace(/^\n+/,``),f=l===W?`${Oe()}\n\n`:``;return`---\n${u.join(`
161
- `)}\n---\n\n${f}${d}`},Ie=(e,t,n)=>{let i=r(e,`.agents/skills`),a=J();if(!_(i))return a;let o=X(t.name),s=Ne(e),c={};for(let e of Me(i)){let l=r(i,e,`SKILL.md`),u=v(l),d=Fe(u,o,t.name,e),f=n===void 0?void 0:n.get(e),p=s[e];if(f!==void 0){let n=je(f),r=t=>{y(l,f),t.push(e),p&&(c[e]=p)},i=ke(n);if(n!==``&&i!==Ae||i===Ae&&!f.includes(De)){r(a.forkOwned);continue}if(p){if(p.written!==Y(f)){r(a.customized);continue}}else Y(f)!==Y(d)&&Y(f)!==Y(Fe(u,o,t.name,e,!0))&&a.unverified.push(e)}y(l,d),c[e]={ref:K,upstream:Y(u),written:Y(d)},a.adopted.push(e)}return s[`AGENTS.md`]&&(c[q]=s[q]),T(r(e,G),c),a},Q=e=>e.replace(/(<!-- skills:(custom|vendored) -->)[\s\S]*?(<!-- \/skills:\2 -->)/g,`$1$3`),Le=(e,t,n)=>{let i=r(e,q),a=r(e,G),o=Ne(e),s=X(t.name),c=(e,t)=>(y(i,t),o[q]={ref:K,upstream:Y(e),written:Y(Q(t))},T(a,o),`adopted`);if(n===void 0){if(!_(i))return c(U(),U());let e=v(i);return c(e,Z(e,s,t.name))}let{before:l,upstream:u}=n;if(u===void 0||u===l)return`absent`;if(l!==void 0){let e=o[q];if(!(e?e.written===Y(Q(l)):Y(Q(l))===Y(Q(U()))))return y(i,l),e?`customized`:`forkOwned`}return c(u,Z(u,s,t.name))},Re=e=>{let t=r(e,`AGENTS.md`);if(!_(t))return!1;let n=v(t);return!n.includes(`<!-- skills:custom -->`)||!n.includes(`<!-- skills:vendored -->`)},ze=async e=>{if(_(r(e,`.github/scripts/skills-manager.ts`)))try{await R(`bun`,[`.github/scripts/skills-manager.ts`],e)}catch{}},Be=(e,t)=>{let n=w(r(e,`package.json`)).name;return n?Ie(e,{name:n},t):J()},Ve=(e,t)=>{let n=w(r(e,`package.json`)).name;return n?Le(e,{name:n},t):`absent`},He=e=>{let t=r(e,q);return _(t)?v(t):void 0},$=(e,...t)=>r(e,...t),Ue=e=>{let t=$(e,`.gitpickignore`);if(!_(t))return;let s=a(e),c=(e,t)=>{throw Error(`.gitpickignore entry "${e}" ${t}; the in-place converter only removes literal paths under the root.`)},l=g(v(t)).excludes.map(e=>{/[*?![\]]/.test(e)&&c(e,`is not a literal path (a glob or negation would diverge from gitpick's fetch)`);let t=i(s,a(s,e));return(n(e)||!t||t===`..`||t.startsWith(`..${o}`)||n(t))&&c(e,`is not inside the project`),r(s,t)});for(let e of l)b(e);b(t)},We=/[ \t]*\{[^}\r\n]*href:[ \t]*["']\/hire["'][^}\r\n]*\},?[ \t]*\r?\n/,Ge=(e,t)=>{let n=/* @__PURE__ */ new Date,r=n.toISOString().slice(0,10),i=[n.getFullYear(),n.getMonth()+1,n.getDate()].map(e=>String(e).padStart(2,`0`)).join(`-`),a=i<r?i:r;y($(e,`web/next/content/docs/index.mdx`),Se()),y($(e,`web/next/content/blog/index.mdx`),we(a)),y($(e,`web/next/content/blog/hello-world.mdx`),Te(a)),y($(e,`web/next/content/console/docs/index.mdx`),Ce()),y($(e,`web/next/docs.config.ts`),Ee()),y($(e,`web/next/public/.gitkeep`),``),y($(e,`web/next/src/app/page.tsx`),be()),y($(e,`README.md`),xe(t))},Ke=`web/next/src/lib/marketing/fonts.ts`,qe=e=>_($(e,Ke)),Je=(e,t=!1)=>{let n=$(e,`web/next/src/lib/fonts.ts`),r=$(e,Ke),i=$(e,`web/next/src/components/common/navbar.tsx`);if(ee(i,We),_(r)&&!t)throw Error(`web/next/src/lib/marketing/fonts.ts survived the fork strip (add web/next/src/lib/marketing/ to .gitpickignore).`);if(_(n)&&v(n).includes(`fonts/marketing/`))throw Error(`fonts.ts references fonts/marketing/; author-only marketing fonts must live in the fork-excluded web/next/src/lib/marketing/, not the shared fonts.ts.`);if(_(i)&&/href:\s*["']\/hire["']/.test(v(i)))throw Error(`common/navbar.tsx still has the /hire entry after fixDangling (regex drift). Update packages/cli/src/convert.ts.`)},Ye=(e,t)=>{for(let[n,r]of[[`web/next`,t],[`api/hono`,`api.${t}`]]){let t=$(e,n,`package.json`),i=w(t),a=i.portless;if(!a||typeof a!=`object`||Array.isArray(a))throw Error(`${n}/package.json has no "portless" object to rebrand (the dev-URL setup drifted). Update packages/cli/src/convert.ts.`);let o=a;o.name=r,T(t,i)}},Xe=e=>{let t=w($(e,`package.json`)).name;t&&Ye(e,X(t))},Ze=(e,t,n)=>{y($(e,`packages/config/src/site.ts`),ye(t,n));let r=X(t.name),i=$(e,`package.json`),a=w(i);a.name=r,a.version=`0.0.0`;for(let e of E)delete a[e];T(i,a),Ye(e,r)},Qe=(e,t,n=H)=>{Ue(e),Ge(e,t),Je(e),Ze(e,t,n),Ie(e,t),Le(e,t)};export{C as A,ue as C,ae as D,se as E,T as F,g as I,w as M,b as N,S as O,y as P,oe as S,ce as T,_e as _,J as a,A as b,Ve as c,Pe as d,H as f,z as g,R as h,Xe as i,v as j,_ as k,Be as l,ge as m,Je as n,Re as o,me as p,qe as r,He as s,Qe as t,ze as u,N as v,M as w,k as x,O as y};
161
+ `)}\n---\n\n${f}${d}`},Ie=(e,t,n)=>{let i=r(e,`.agents/skills`),a=J();if(!_(i))return a;let o=X(t.name),s=Ne(e),c={};for(let e of Me(i)){let l=r(i,e,`SKILL.md`),u=v(l),d=Fe(u,o,t.name,e),f=n===void 0?void 0:n.get(e),p=s[e];if(f!==void 0){let n=je(f),r=t=>{y(l,f),t.push(e),p&&(c[e]=p)},i=ke(n);if(n!==``&&i!==Ae||i===Ae&&!f.includes(De)){r(a.forkOwned);continue}if(p){if(p.written!==Y(f)){r(a.customized);continue}}else Y(f)!==Y(d)&&Y(f)!==Y(Fe(u,o,t.name,e,!0))&&a.unverified.push(e)}y(l,d),c[e]={ref:K,upstream:Y(u),written:Y(d)},a.adopted.push(e)}return s[`AGENTS.md`]&&(c[q]=s[q]),T(r(e,G),c),a},Q=e=>e.replace(/(<!-- skills:(custom|vendored) -->)[\s\S]*?(<!-- \/skills:\2 -->)/g,`$1$3`),Le=(e,t,n)=>{let i=r(e,q),a=r(e,G),o=Ne(e),s=X(t.name),c=(e,t)=>(y(i,t),o[q]={ref:K,upstream:Y(e),written:Y(Q(t))},T(a,o),`adopted`);if(n===void 0){if(!_(i))return c(U(),U());let e=v(i);return c(e,Z(e,s,t.name))}let{before:l,upstream:u}=n;if(u===void 0||u===l)return`absent`;if(l!==void 0){let e=o[q];if(!(e?e.written===Y(Q(l)):Y(Q(l))===Y(Q(U()))))return y(i,l),e?`customized`:`forkOwned`}return c(u,Z(u,s,t.name))},Re=e=>{let t=r(e,`AGENTS.md`);if(!_(t))return!1;let n=v(t);return!n.includes(`<!-- skills:custom -->`)||!n.includes(`<!-- skills:vendored -->`)},ze=[`packages/scripts/src/skills-manager.ts`,`.github/scripts/skills-manager.ts`],Be=async e=>{let t=ze.find(t=>_(r(e,t)));if(t)try{await R(`bun`,[t],e)}catch{}},Ve=(e,t)=>{let n=w(r(e,`package.json`)).name;return n?Ie(e,{name:n},t):J()},He=(e,t)=>{let n=w(r(e,`package.json`)).name;return n?Le(e,{name:n},t):`absent`},Ue=e=>{let t=r(e,q);return _(t)?v(t):void 0},$=(e,...t)=>r(e,...t),We=e=>{let t=$(e,`.gitpickignore`);if(!_(t))return;let s=a(e),c=(e,t)=>{throw Error(`.gitpickignore entry "${e}" ${t}; the in-place converter only removes literal paths under the root.`)},l=g(v(t)).excludes.map(e=>{/[*?![\]]/.test(e)&&c(e,`is not a literal path (a glob or negation would diverge from gitpick's fetch)`);let t=i(s,a(s,e));return(n(e)||!t||t===`..`||t.startsWith(`..${o}`)||n(t))&&c(e,`is not inside the project`),r(s,t)});for(let e of l)b(e);b(t)},Ge=/[ \t]*\{[^}\r\n]*href:[ \t]*["']\/hire["'][^}\r\n]*\},?[ \t]*\r?\n/,Ke=(e,t)=>{let n=/* @__PURE__ */ new Date,r=n.toISOString().slice(0,10),i=[n.getFullYear(),n.getMonth()+1,n.getDate()].map(e=>String(e).padStart(2,`0`)).join(`-`),a=i<r?i:r;y($(e,`web/next/content/docs/index.mdx`),Se()),y($(e,`web/next/content/blog/index.mdx`),we(a)),y($(e,`web/next/content/blog/hello-world.mdx`),Te(a)),y($(e,`web/next/content/console/docs/index.mdx`),Ce()),y($(e,`web/next/docs.config.ts`),Ee()),y($(e,`web/next/public/.gitkeep`),``),y($(e,`web/next/src/app/page.tsx`),be()),y($(e,`README.md`),xe(t))},qe=`web/next/src/lib/marketing/fonts.ts`,Je=e=>_($(e,qe)),Ye=(e,t=!1)=>{let n=$(e,`web/next/src/lib/fonts.ts`),r=$(e,qe),i=$(e,`web/next/src/components/common/navbar.tsx`);if(ee(i,Ge),_(r)&&!t)throw Error(`web/next/src/lib/marketing/fonts.ts survived the fork strip (add web/next/src/lib/marketing/ to .gitpickignore).`);if(_(n)&&v(n).includes(`fonts/marketing/`))throw Error(`fonts.ts references fonts/marketing/; author-only marketing fonts must live in the fork-excluded web/next/src/lib/marketing/, not the shared fonts.ts.`);if(_(i)&&/href:\s*["']\/hire["']/.test(v(i)))throw Error(`common/navbar.tsx still has the /hire entry after fixDangling (regex drift). Update packages/cli/src/convert.ts.`)},Xe=(e,t)=>{for(let[n,r]of[[`web/next`,t],[`api/hono`,`api.${t}`]]){let t=$(e,n,`package.json`),i=w(t),a=i.portless;if(!a||typeof a!=`object`||Array.isArray(a))throw Error(`${n}/package.json has no "portless" object to rebrand (the dev-URL setup drifted). Update packages/cli/src/convert.ts.`);let o=a;o.name=r,T(t,i)}},Ze=e=>{let t=w($(e,`package.json`)).name;t&&Xe(e,X(t))},Qe=(e,t,n)=>{y($(e,`packages/config/src/site.ts`),ye(t,n));let r=X(t.name),i=$(e,`package.json`),a=w(i);a.name=r,a.version=`0.0.0`;for(let e of E)delete a[e];T(i,a),Xe(e,r)},$e=(e,t,n=H)=>{We(e),Ke(e,t),Ye(e),Qe(e,t,n),Ie(e,t),Le(e,t)};export{C as A,ue as C,ae as D,se as E,T as F,g as I,w as M,b as N,S as O,y as P,oe as S,ce as T,_e as _,J as a,A as b,He as c,Pe as d,H as f,z as g,R as h,Ze as i,v as j,_ as k,Ve as l,ge as m,Ye as n,Re as o,me as p,Je as r,Ue as s,$e as t,Be as u,N as v,M as w,k as x,O as y};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{t as convertRepo}from"./convert-D5950liy.mjs";
1
+ export{t as convertRepo}from"./convert-CpZLx7IJ.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zerostarter",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "description": "Go from zero to a production-ready SaaS, rebranded and ready to ship.",
5
5
  "keywords": [
6
6
  "cli",