@promakeai/cli 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -259,7 +259,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
259
259
  ${X}`,TG0=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),IG0=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),jG0=(D,X,Z)=>{let J=Z===""?"":`with ${Z.trim()}() `,Y=EG0.bind(null,J,X.toString());Object.defineProperty(Y,"name",IG0);let{writable:Q,enumerable:$,configurable:K}=TG0;Object.defineProperty(D,"toString",{value:Y,writable:Q,enumerable:$,configurable:K})};function _L(D,X,{ignoreNonConfigurable:Z=!1}={}){let{name:J}=D;for(let Y of Reflect.ownKeys(X))AG0(D,X,Y,Z);return RG0(D,X),jG0(D,X,J),D}var NF=new WeakMap,t_=(D,X={})=>{if(typeof D!=="function")throw TypeError("Expected a function");let Z,J=0,Y=D.displayName||D.name||"<anonymous>",Q=function(...$){if(NF.set(Q,++J),J===1)Z=D.apply(this,$),D=void 0;else if(X.throw===!0)throw Error(`Function \`${Y}\` can only be called once`);return Z};return _L(Q,D),NF.set(Q,J),Q};t_.callCount=(D)=>{if(!NF.has(D))throw Error(`The given function \`${D.name}\` is not wrapped by the \`onetime\` package`);return NF.get(D)};var e_=t_;var VD=[];VD.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")VD.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")VD.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var RF=(D)=>!!D&&typeof D==="object"&&typeof D.removeListener==="function"&&typeof D.emit==="function"&&typeof D.reallyExit==="function"&&typeof D.listeners==="function"&&typeof D.kill==="function"&&typeof D.pid==="number"&&typeof D.on==="function",kL=Symbol.for("signal-exit emitter"),hL=globalThis,CG0=Object.defineProperty.bind(Object);class Dk{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(hL[kL])return hL[kL];CG0(hL,kL,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(D,X){this.listeners[D].push(X)}removeListener(D,X){let Z=this.listeners[D],J=Z.indexOf(X);if(J===-1)return;if(J===0&&Z.length===1)Z.length=0;else Z.splice(J,1)}emit(D,X,Z){if(this.emitted[D])return!1;this.emitted[D]=!0;let J=!1;for(let Y of this.listeners[D])J=Y(X,Z)===!0||J;if(D==="exit")J=this.emit("afterExit",X,Z)||J;return J}}class yL{}var PG0=(D)=>{return{onExit(X,Z){return D.onExit(X,Z)},load(){return D.load()},unload(){return D.unload()}}};class Xk extends yL{onExit(){return()=>{}}load(){}unload(){}}class Zk extends yL{#D=xL.platform==="win32"?"SIGINT":"SIGHUP";#X=new Dk;#Z;#J;#Q;#Y={};#$=!1;constructor(D){super();this.#Z=D,this.#Y={};for(let X of VD)this.#Y[X]=()=>{let Z=this.#Z.listeners(X),{count:J}=this.#X,Y=D;if(typeof Y.__signal_exit_emitter__==="object"&&typeof Y.__signal_exit_emitter__.count==="number")J+=Y.__signal_exit_emitter__.count;if(Z.length===J){this.unload();let Q=this.#X.emit("exit",null,X),$=X==="SIGHUP"?this.#D:X;if(!Q)D.kill(D.pid,$)}};this.#Q=D.reallyExit,this.#J=D.emit}onExit(D,X){if(!RF(this.#Z))return()=>{};if(this.#$===!1)this.load();let Z=X?.alwaysLast?"afterExit":"exit";return this.#X.on(Z,D),()=>{if(this.#X.removeListener(Z,D),this.#X.listeners.exit.length===0&&this.#X.listeners.afterExit.length===0)this.unload()}}load(){if(this.#$)return;this.#$=!0,this.#X.count+=1;for(let D of VD)try{let X=this.#Y[D];if(X)this.#Z.on(D,X)}catch(X){}this.#Z.emit=(D,...X)=>{return this.#K(D,...X)},this.#Z.reallyExit=(D)=>{return this.#G(D)}}unload(){if(!this.#$)return;this.#$=!1,VD.forEach((D)=>{let X=this.#Y[D];if(!X)throw Error("Listener not defined for signal: "+D);try{this.#Z.removeListener(D,X)}catch(Z){}}),this.#Z.emit=this.#J,this.#Z.reallyExit=this.#Q,this.#X.count-=1}#G(D){if(!RF(this.#Z))return 0;return this.#Z.exitCode=D||0,this.#X.emit("exit",this.#Z.exitCode,null),this.#Q.call(this.#Z,this.#Z.exitCode)}#K(D,...X){let Z=this.#J;if(D==="exit"&&RF(this.#Z)){if(typeof X[0]==="number")this.#Z.exitCode=X[0];let J=Z.call(this.#Z,D,...X);return this.#X.emit("exit",this.#Z.exitCode,null),J}else return Z.call(this.#Z,D,...X)}}var xL=globalThis.process,{onExit:Jk,load:u31,unload:m31}=PG0(RF(xL)?new Zk(xL):new Xk);var Yk=EF.stderr.isTTY?EF.stderr:EF.stdout.isTTY?EF.stdout:void 0,wG0=Yk?e_(()=>{Jk(()=>{Yk.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},Qk=wG0;var TF=!1,qZ={};qZ.show=(D=$k.stderr)=>{if(!D.isTTY)return;TF=!1,D.write("\x1B[?25h")};qZ.hide=(D=$k.stderr)=>{if(!D.isTTY)return;Qk(),TF=!0,D.write("\x1B[?25l")};qZ.toggle=(D,X)=>{if(D!==void 0)TF=D;if(TF)qZ.show(X);else qZ.hide(X)};var vL=qZ;var lQ=k1(bL(),1);import N4 from"node:process";function fL(){if(N4.platform!=="win32")return N4.env.TERM!=="linux";return Boolean(N4.env.CI)||Boolean(N4.env.WT_SESSION)||Boolean(N4.env.TERMINUS_SUBLIME)||N4.env.ConEmuTask==="{cmd::Cmder}"||N4.env.TERM_PROGRAM==="Terminus-Sublime"||N4.env.TERM_PROGRAM==="vscode"||N4.env.TERM==="xterm-256color"||N4.env.TERM==="alacritty"||N4.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var _G0={info:C.blue("ℹ"),success:C.green("✔"),warning:C.yellow("⚠"),error:C.red("✖")},kG0={info:C.blue("i"),success:C.green("√"),warning:C.yellow("‼"),error:C.red("×")},hG0=fL()?_G0:kG0,cQ=hG0;function gL({onlyFirst:D=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",D?void 0:"g")}var xG0=gL();function dQ(D){if(typeof D!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(xG0,"")}function Fk(D){return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109}function Vk(D){return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510}function Hk(D){return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9776&&D<=9783||D>=9800&&D<=9811||D===9855||D>=9866&&D<=9871||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12773||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D>=94192&&D<=94198||D>=94208&&D<=101589||D>=101631&&D<=101662||D>=101760&&D<=101874||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D>=119552&&D<=119638||D>=119648&&D<=119670||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128728||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129674||D>=129678&&D<=129734||D===129736||D>=129741&&D<=129756||D>=129759&&D<=129770||D>=129775&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141}function yG0(D){if(!Number.isSafeInteger(D))throw TypeError(`Expected a code point, got \`${typeof D}\`.`)}function qk(D,{ambiguousAsWide:X=!1}={}){if(yG0(D),Vk(D)||Hk(D)||X&&Fk(D))return 2;return 1}var Bk=k1(Uk(),1),vG0=new Intl.Segmenter,bG0=/^\p{Default_Ignorable_Code_Point}$/u;function uL(D,X={}){if(typeof D!=="string"||D.length===0)return 0;let{ambiguousIsNarrow:Z=!0,countAnsiEscapeCodes:J=!1}=X;if(!J)D=dQ(D);if(D.length===0)return 0;let Y=0,Q={ambiguousAsWide:!Z};for(let{segment:$}of vG0.segment(D)){let K=$.codePointAt(0);if(K<=31||K>=127&&K<=159)continue;if(K>=8203&&K<=8207||K===65279)continue;if(K>=768&&K<=879||K>=6832&&K<=6911||K>=7616&&K<=7679||K>=8400&&K<=8447||K>=65056&&K<=65071)continue;if(K>=55296&&K<=57343)continue;if(K>=65024&&K<=65039)continue;if(bG0.test($))continue;if(Bk.default().test($)){Y+=2;continue}Y+=qk(K,Q)}return Y}function mL({stream:D=process.stdout}={}){return Boolean(D&&D.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}import Ok from"node:process";function cL(){let{env:D}=Ok,{TERM:X,TERM_PROGRAM:Z}=D;if(Ok.platform!=="win32")return X!=="linux";return Boolean(D.WT_SESSION)||Boolean(D.TERMINUS_SUBLIME)||D.ConEmuTask==="{cmd::Cmder}"||Z==="Terminus-Sublime"||Z==="vscode"||X==="xterm-256color"||X==="alacritty"||X==="rxvt-unicode"||X==="rxvt-unicode-256color"||D.TERMINAL_EMULATOR==="JetBrains-JediTerm"}import Q9 from"node:process";var fG0=3;class Lk{#D=0;start(){if(this.#D++,this.#D===1)this.#X()}stop(){if(this.#D<=0)throw Error("`stop` called more times than `start`");if(this.#D--,this.#D===0)this.#Z()}#X(){if(Q9.platform==="win32"||!Q9.stdin.isTTY)return;Q9.stdin.setRawMode(!0),Q9.stdin.on("data",this.#J),Q9.stdin.resume()}#Z(){if(!Q9.stdin.isTTY)return;Q9.stdin.off("data",this.#J),Q9.stdin.pause(),Q9.stdin.setRawMode(!1)}#J(D){if(D[0]===fG0)Q9.emit("SIGINT")}}var gG0=new Lk,dL=gG0;var uG0=k1(bL(),1);class Mk{#D=0;#X=!1;#Z=0;#J=-1;#Q=0;#Y;#$;#G;#K;#W;#V;#q;#H;#F;#U;#B;color;constructor(D){if(typeof D==="string")D={text:D};if(this.#Y={color:"cyan",stream:jF.stderr,discardStdin:!0,hideCursor:!0,...D},this.color=this.#Y.color,this.spinner=this.#Y.spinner,this.#W=this.#Y.interval,this.#G=this.#Y.stream,this.#V=typeof this.#Y.isEnabled==="boolean"?this.#Y.isEnabled:mL({stream:this.#G}),this.#q=typeof this.#Y.isSilent==="boolean"?this.#Y.isSilent:!1,this.text=this.#Y.text,this.prefixText=this.#Y.prefixText,this.suffixText=this.#Y.suffixText,this.indent=this.#Y.indent,jF.env.NODE_ENV==="test")this._stream=this.#G,this._isEnabled=this.#V,Object.defineProperty(this,"_linesToClear",{get(){return this.#D},set(X){this.#D=X}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#J}}),Object.defineProperty(this,"_lineCount",{get(){return this.#Z}})}get indent(){return this.#H}set indent(D=0){if(!(D>=0&&Number.isInteger(D)))throw Error("The `indent` option must be an integer from 0 and up");this.#H=D,this.#M()}get interval(){return this.#W??this.#$.interval??100}get spinner(){return this.#$}set spinner(D){if(this.#J=-1,this.#W=void 0,typeof D==="object"){if(D.frames===void 0)throw Error("The given spinner must have a `frames` property");this.#$=D}else if(!cL())this.#$=lQ.default.line;else if(D===void 0)this.#$=lQ.default.dots;else if(D!=="default"&&lQ.default[D])this.#$=lQ.default[D];else throw Error(`There is no built-in spinner named '${D}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#F}set text(D=""){this.#F=D,this.#M()}get prefixText(){return this.#U}set prefixText(D=""){this.#U=D,this.#M()}get suffixText(){return this.#B}set suffixText(D=""){this.#B=D,this.#M()}get isSpinning(){return this.#K!==void 0}#O(D=this.#U,X=" "){if(typeof D==="string"&&D!=="")return D+X;if(typeof D==="function")return D()+X;return""}#R(D=this.#B,X=" "){if(typeof D==="string"&&D!=="")return X+D;if(typeof D==="function")return X+D();return""}#M(){let D=this.#G.columns??80,X=this.#O(this.#U,"-"),Z=this.#R(this.#B,"-"),J=" ".repeat(this.#H)+X+"--"+this.#F+"--"+Z;this.#Z=0;for(let Y of dQ(J).split(`
260
260
  `))this.#Z+=Math.max(1,Math.ceil(uL(Y,{countAnsiEscapeCodes:!0})/D))}get isEnabled(){return this.#V&&!this.#q}set isEnabled(D){if(typeof D!=="boolean")throw TypeError("The `isEnabled` option must be a boolean");this.#V=D}get isSilent(){return this.#q}set isSilent(D){if(typeof D!=="boolean")throw TypeError("The `isSilent` option must be a boolean");this.#q=D}frame(){let D=Date.now();if(this.#J===-1||D-this.#Q>=this.interval)this.#J=++this.#J%this.#$.frames.length,this.#Q=D;let{frames:X}=this.#$,Z=X[this.#J];if(this.color)Z=C[this.color](Z);let J=typeof this.#U==="string"&&this.#U!==""?this.#U+" ":"",Y=typeof this.text==="string"?" "+this.text:"",Q=typeof this.#B==="string"&&this.#B!==""?" "+this.#B:"";return J+Z+Y+Q}clear(){if(!this.#V||!this.#G.isTTY)return this;this.#G.cursorTo(0);for(let D=0;D<this.#D;D++){if(D>0)this.#G.moveCursor(0,-1);this.#G.clearLine(1)}if(this.#H||this.lastIndent!==this.#H)this.#G.cursorTo(this.#H);return this.lastIndent=this.#H,this.#D=0,this}render(){if(this.#q)return this;return this.clear(),this.#G.write(this.frame()),this.#D=this.#Z,this}start(D){if(D)this.text=D;if(this.#q)return this;if(!this.#V){if(this.text)this.#G.write(`- ${this.text}
261
261
  `);return this}if(this.isSpinning)return this;if(this.#Y.hideCursor)vL.hide(this.#G);if(this.#Y.discardStdin&&jF.stdin.isTTY)this.#X=!0,dL.start();return this.render(),this.#K=setInterval(this.render.bind(this),this.interval),this}stop(){if(!this.#V)return this;if(clearInterval(this.#K),this.#K=void 0,this.#J=0,this.clear(),this.#Y.hideCursor)vL.show(this.#G);if(this.#Y.discardStdin&&jF.stdin.isTTY&&this.#X)dL.stop(),this.#X=!1;return this}succeed(D){return this.stopAndPersist({symbol:cQ.success,text:D})}fail(D){return this.stopAndPersist({symbol:cQ.error,text:D})}warn(D){return this.stopAndPersist({symbol:cQ.warning,text:D})}info(D){return this.stopAndPersist({symbol:cQ.info,text:D})}stopAndPersist(D={}){if(this.#q)return this;let X=D.prefixText??this.#U,Z=this.#O(X," "),J=D.symbol??" ",Y=D.text??this.text,$=typeof Y==="string"?(J?" ":"")+Y:"",K=D.suffixText??this.#B,G=this.#R(K," "),W=Z+J+$+G+`
262
- `;return this.stop(),this.#G.write(W),this}}function E2(D){return new Mk(D)}var IZ=k1(r8(),1);import Q$ from"path";import{execSync as rV0}from"child_process";var tQ=k1(r8(),1);import YM from"path";var QM="promake.json";async function T2(D){let X=YM.join(D,QM);if(await tQ.default.pathExists(X))return tQ.default.readJson(X);return null}async function c9(D,X){let Z=YM.join(D,QM);await tQ.default.writeJson(Z,X,{spaces:2})}async function $M(D){let X=YM.join(D,QM);return tQ.default.pathExists(X)}function zD(){return{modulesPath:"src/modules",envFile:".env",modules:{}}}async function fF(D,X,Z){let J=await T2(D)||zD();if(!J.modules)J.modules={};J.modules[X]=Z,await c9(D,J)}async function KM(D,X){let Z=await T2(D);if(Z?.modules&&X in Z.modules)delete Z.modules[X],await c9(D,Z)}function gF(D,X,Z){if(Z==="default")return`${D.modulesPath||"src/modules"}/${X}`;return Z}var d9=k1(r8(),1);import E4 from"path";import{fileURLToPath as ZV0}from"url";var JV0=ZV0(import.meta.url),eQ=E4.dirname(JV0),D$={mode:process.env.PROMAKE_MODE||"local",remoteRegistryUrl:"https://raw.githubusercontent.com/anthropics/promake-registry/main",remoteTemplateUrl:"https://raw.githubusercontent.com/anthropics/promake-registry/main/template"},zx=eQ.includes("src"),Ux=zx?E4.join(eQ,"..","..","dist","registry"):E4.join(eQ,"registry"),Bx=zx?E4.join(eQ,"..","..","template"):E4.join(eQ,"..","template");async function T4(D){if(D$.mode==="local"){let J=E4.join(Ux,`${D}.json`);if(await d9.default.pathExists(J))return d9.default.readJson(J)}let X=`${D$.remoteRegistryUrl}/registry/${D}.json`,Z=await fetch(X);if(!Z.ok)throw Error(`Registry item "${D}" not found (status: ${Z.status})`);return Z.json()}async function Ox(){if(D$.mode==="local"){let Z=E4.join(Ux,"index.json");if(await d9.default.pathExists(Z))return d9.default.readJson(Z)}let D=`${D$.remoteRegistryUrl}/registry/index.json`,X=await fetch(D);if(!X.ok)throw Error("Failed to fetch registry index");return X.json()}async function Lx(D){try{return(await T4(D)).usage||null}catch{return null}}async function YV0(){return d9.default.pathExists(Bx)}async function Mx(D,X,Z){let J=E4.relative(Z,D)||".";console.log(`[copyDirRecursive] 1. ensureDir: ${X} (rel: ${J})`),await d9.default.ensureDir(X),console.log(`[copyDirRecursive] 2. readdir: ${D}`);let Y=await d9.default.readdir(D,{withFileTypes:!0});console.log(`[copyDirRecursive] 3. entries count: ${Y.length} in ${J}`);for(let Q of Y){let $=E4.join(D,Q.name),K=E4.join(X,Q.name),G=E4.relative(Z,$);if(G.includes("node_modules")){console.log(`[copyDirRecursive] 4. SKIP node_modules: ${G}`);continue}if(Q.isDirectory())console.log(`[copyDirRecursive] 5. DIR recurse: ${G}`),await Mx($,K,Z);else console.log(`[copyDirRecursive] 6. COPY file: ${G}`),await d9.default.copyFile($,K),console.log(`[copyDirRecursive] 7. DONE file: ${G}`)}console.log(`[copyDirRecursive] 8. DIR complete: ${J}`)}async function Ax(D){console.log(`[copyTemplate] 1. START targetPath: ${D}`);let X=await YV0();if(console.log(`[copyTemplate] 2. hasLocalTemplate: ${X}`),X){let Z=Bx;console.log(`[copyTemplate] 3. templateRoot: ${Z}`),console.log("[copyTemplate] 4. calling copyDirRecursive..."),await Mx(Z,D,Z),console.log("[copyTemplate] 5. copyDirRecursive DONE");return}if(console.log("[copyTemplate] 6. no local template found"),D$.mode==="remote")throw Error("Remote template download not yet implemented. Please use local mode or ensure template/ exists.");throw Error("Template not found. Ensure cli/template/ exists.")}var l9=k1(r8(),1);import{execSync as QV0}from"child_process";import LZ from"path";function X$(D){if(l9.default.existsSync(LZ.join(D,"bun.lockb")))return"bun";if(l9.default.existsSync(LZ.join(D,"pnpm-lock.yaml")))return"pnpm";if(l9.default.existsSync(LZ.join(D,"yarn.lock")))return"yarn";if(l9.default.existsSync(LZ.join(D,"package-lock.json")))return"npm";return"npm"}function $V0(D,X,Z=!1){let J=X.join(" ");return{bun:`bun add ${Z?"-D ":""}${J}`,npm:`npm install ${Z?"--save-dev ":""}${J}`,yarn:`yarn add ${Z?"-D ":""}${J}`,pnpm:`pnpm add ${Z?"-D ":""}${J}`}[D]}async function GM(D,X,Z=!1){if(X.length===0)return;let J=X$(D),Y=$V0(J,X,Z);QV0(Y,{cwd:D,stdio:"inherit"})}var KV0=new Set(["react","react-dom","react-router","zustand","@tanstack/react-query","tailwindcss","@tailwindcss/vite","tailwind-merge","clsx","class-variance-authority","@radix-ui/react-accordion","@radix-ui/react-alert-dialog","@radix-ui/react-aspect-ratio","@radix-ui/react-avatar","@radix-ui/react-checkbox","@radix-ui/react-collapsible","@radix-ui/react-context-menu","@radix-ui/react-dialog","@radix-ui/react-dropdown-menu","@radix-ui/react-hover-card","@radix-ui/react-label","@radix-ui/react-menubar","@radix-ui/react-navigation-menu","@radix-ui/react-popover","@radix-ui/react-progress","@radix-ui/react-radio-group","@radix-ui/react-scroll-area","@radix-ui/react-select","@radix-ui/react-separator","@radix-ui/react-slider","@radix-ui/react-slot","@radix-ui/react-switch","@radix-ui/react-tabs","@radix-ui/react-toggle","@radix-ui/react-toggle-group","@radix-ui/react-tooltip","cmdk","embla-carousel-react","input-otp","react-day-picker","react-resizable-panels","recharts","sonner","vaul","react-hook-form","@hookform/resolvers","zod","i18next","react-i18next","i18next-browser-languagedetector","axios","date-fns","lucide-react","motion","next-themes","sql.js","@promakeai/customer-backend-client","@promakeai/inspector"]);async function Nx(D){let X=LZ.join(D,"package.json"),Z=new Set;if(!await l9.default.pathExists(X))return Z;let J=await l9.default.readJson(X),Y=J.dependencies||{},Q=J.devDependencies||{};for(let $ of Object.keys(Y))Z.add($);for(let $ of Object.keys(Q))Z.add($);return Z}function WM(D,X){return D.filter((Z)=>{let J=Z.split("@")[0]||Z.replace(/^@/,"").split("@")[0],Y=Z.startsWith("@")?"@"+J:J;if(KV0.has(Y))return!1;if(X.has(Y))return!1;return!0})}async function Rx(D,X){let Z=LZ.join(D,"package.json"),J=await l9.default.readJson(Z);J.name=X,await l9.default.writeJson(Z,J,{spaces:2})}var I4=[{name:"ecommerce",description:"E-commerce starter with cart, products, checkout",header:"header-ecommerce",footer:"footer",indexSections:["hero-cta","featured-products","category-section"],modules:["api","ecommerce-core","product-card","products-page","product-detail-page","cart-page","checkout-page","order-confirmation-page","my-orders-page","cart-drawer","favorites-ecommerce-page","related-products-block","auth-core","login-page","register-page","forgot-password-page","reset-password-page"],theme:{preset:"blue",radius:"medium",shadow:"small",maxWidth:"6xl"}},{name:"blog",description:"Blog starter with posts, categories, favorites",header:"header-simple",footer:"footer-minimal",indexSections:["hero","blog-section"],modules:["blog-core","post-card","post-detail-page","blog-list-page","related-posts-block","newsletter-section"],theme:{preset:"rose",radius:"medium",shadow:"subtle",font:"nunito"}},{name:"portfolio",description:"Portfolio starter with skills, services",header:"header-minimal",footer:"footer-minimal",indexSections:["hero-profile","feature-section","cta-section"],modules:["skill-card","service-card","portfolio-page","testimonials-grid"],theme:{preset:"slate",radius:"medium",shadow:"subtle",font:"raleway"}},{name:"auth",description:"Authentication starter with login, register, forgot & reset password",modules:["auth-core","api","login-page","register-page","forgot-password-page","reset-password-page"],theme:{preset:"zinc"}},{name:"empty",description:"Minimal setup without header, footer, or sections",modules:[],theme:{preset:"zinc"}}];var uF=["api","auth","db","animations"];import UM from"path";import nx from"fs/promises";async function FM(D,X=!1){if(await $M(D)&&!X)return!1;let Z=zD();return await c9(D,Z),!0}var Ex=new $5("init").description("Initialize promake.json in current directory").option("-f, --force","Overwrite existing config").action(async(D)=>{let X=process.cwd();if(await $M(X)&&!D.force){console.log(C.yellow("promake.json already exists.")),console.log(C.dim("Use --force to overwrite."));return}await FM(X,D.force),console.log(C.green("Created promake.json")),console.log(""),console.log("You can now add modules:"),console.log(C.cyan(" npx promake add <module-name>"))});var d5=k1(r8(),1);import Z$ from"path";async function Ix(D,X,Z){let J=await d5.default.pathExists(X);switch(Z){case"overwrite":return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:J?"updated":"created",path:X};case"stop":if(J)return{action:"skipped",path:X,reason:"file exists"};return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};case"skip":return{action:"skipped",path:X,reason:"skip behavior"};case"merge":if(X.endsWith(".json"))return GV0(D,X);if(X.endsWith(".css"))return WV0(D,X);return{action:"skipped",path:X,reason:"no merge strategy"};case"prompt":if(J)return{action:"skipped",path:X,reason:"file exists"};return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};default:return{action:"skipped",path:X,reason:"unknown behavior"}}}async function GV0(D,X){if(!await d5.default.pathExists(X))return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};try{let J=await d5.default.readJson(X),Y=JSON.parse(D),Q=jx(J,Y);return await d5.default.writeJson(X,Q,{spaces:2}),{action:"merged",path:X}}catch(J){return{action:"skipped",path:X,reason:"merge failed"}}}async function WV0(D,X){if(!await d5.default.pathExists(X))return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};try{let J=await d5.default.readFile(X,"utf-8");if(!J.includes(D.trim()))return await d5.default.writeFile(X,J+`
262
+ `;return this.stop(),this.#G.write(W),this}}function E2(D){return new Mk(D)}var IZ=k1(r8(),1);import Q$ from"path";import{execSync as rV0}from"child_process";var tQ=k1(r8(),1);import YM from"path";var QM="promake.json";async function T2(D){let X=YM.join(D,QM);if(await tQ.default.pathExists(X))return tQ.default.readJson(X);return null}async function c9(D,X){let Z=YM.join(D,QM);await tQ.default.writeJson(Z,X,{spaces:2})}async function $M(D){let X=YM.join(D,QM);return tQ.default.pathExists(X)}function zD(){return{modulesPath:"src/modules",envFile:".env",modules:{}}}async function fF(D,X,Z){let J=await T2(D)||zD();if(!J.modules)J.modules={};J.modules[X]=Z,await c9(D,J)}async function KM(D,X){let Z=await T2(D);if(Z?.modules&&X in Z.modules)delete Z.modules[X],await c9(D,Z)}function gF(D,X,Z){if(Z==="default")return`${D.modulesPath||"src/modules"}/${X}`;return Z}var d9=k1(r8(),1);import E4 from"path";import{fileURLToPath as ZV0}from"url";var JV0=ZV0(import.meta.url),eQ=E4.dirname(JV0),D$={mode:process.env.PROMAKE_MODE||"local",remoteRegistryUrl:"https://raw.githubusercontent.com/anthropics/promake-registry/main",remoteTemplateUrl:"https://raw.githubusercontent.com/anthropics/promake-registry/main/template"},zx=eQ.includes("src"),Ux=zx?E4.join(eQ,"..","..","dist","registry"):E4.join(eQ,"registry"),Bx=zx?E4.join(eQ,"..","..","template"):E4.join(eQ,"..","template");async function T4(D){if(D$.mode==="local"){let J=E4.join(Ux,`${D}.json`);if(await d9.default.pathExists(J))return d9.default.readJson(J)}let X=`${D$.remoteRegistryUrl}/registry/${D}.json`,Z=await fetch(X);if(!Z.ok)throw Error(`Registry item "${D}" not found (status: ${Z.status})`);return Z.json()}async function Ox(){if(D$.mode==="local"){let Z=E4.join(Ux,"index.json");if(await d9.default.pathExists(Z))return d9.default.readJson(Z)}let D=`${D$.remoteRegistryUrl}/registry/index.json`,X=await fetch(D);if(!X.ok)throw Error("Failed to fetch registry index");return X.json()}async function Lx(D){try{return(await T4(D)).usage||null}catch{return null}}async function YV0(){return d9.default.pathExists(Bx)}async function Mx(D,X,Z){let J=E4.relative(Z,D)||".";console.log(`[copyDirRecursive] 1. ensureDir: ${X} (rel: ${J})`),await d9.default.ensureDir(X),console.log(`[copyDirRecursive] 2. readdir: ${D}`);let Y=await d9.default.readdir(D,{withFileTypes:!0});console.log(`[copyDirRecursive] 3. entries count: ${Y.length} in ${J}`);for(let Q of Y){let $=E4.join(D,Q.name),K=E4.join(X,Q.name),G=E4.relative(Z,$);if(G.includes("node_modules")){console.log(`[copyDirRecursive] 4. SKIP node_modules: ${G}`);continue}if(Q.isDirectory())console.log(`[copyDirRecursive] 5. DIR recurse: ${G}`),await Mx($,K,Z);else console.log(`[copyDirRecursive] 6. COPY file: ${G}`),await d9.default.copyFile($,K),console.log(`[copyDirRecursive] 7. DONE file: ${G}`)}console.log(`[copyDirRecursive] 8. DIR complete: ${J}`)}async function Ax(D){console.log(`[copyTemplate] 1. START targetPath: ${D}`);let X=await YV0();if(console.log(`[copyTemplate] 2. hasLocalTemplate: ${X}`),X){let Z=Bx;console.log(`[copyTemplate] 3. templateRoot: ${Z}`),console.log("[copyTemplate] 4. calling copyDirRecursive..."),await Mx(Z,D,Z),console.log("[copyTemplate] 5. copyDirRecursive DONE");return}if(console.log("[copyTemplate] 6. no local template found"),D$.mode==="remote")throw Error("Remote template download not yet implemented. Please use local mode or ensure template/ exists.");throw Error("Template not found. Ensure cli/template/ exists.")}var l9=k1(r8(),1);import{execSync as QV0}from"child_process";import LZ from"path";function X$(D){if(l9.default.existsSync(LZ.join(D,"bun.lockb")))return"bun";if(l9.default.existsSync(LZ.join(D,"pnpm-lock.yaml")))return"pnpm";if(l9.default.existsSync(LZ.join(D,"yarn.lock")))return"yarn";if(l9.default.existsSync(LZ.join(D,"package-lock.json")))return"npm";return"npm"}function $V0(D,X,Z=!1){let J=X.join(" ");return{bun:`bun add ${Z?"-D ":""}${J}`,npm:`npm install ${Z?"--save-dev ":""}${J}`,yarn:`yarn add ${Z?"-D ":""}${J}`,pnpm:`pnpm add ${Z?"-D ":""}${J}`}[D]}async function GM(D,X,Z=!1){if(X.length===0)return;let J=X$(D),Y=$V0(J,X,Z);QV0(Y,{cwd:D,stdio:"inherit"})}var KV0=new Set(["react","react-dom","react-router","zustand","@tanstack/react-query","tailwindcss","@tailwindcss/vite","tailwind-merge","clsx","class-variance-authority","@radix-ui/react-accordion","@radix-ui/react-alert-dialog","@radix-ui/react-aspect-ratio","@radix-ui/react-avatar","@radix-ui/react-checkbox","@radix-ui/react-collapsible","@radix-ui/react-context-menu","@radix-ui/react-dialog","@radix-ui/react-dropdown-menu","@radix-ui/react-hover-card","@radix-ui/react-label","@radix-ui/react-menubar","@radix-ui/react-navigation-menu","@radix-ui/react-popover","@radix-ui/react-progress","@radix-ui/react-radio-group","@radix-ui/react-scroll-area","@radix-ui/react-select","@radix-ui/react-separator","@radix-ui/react-slider","@radix-ui/react-slot","@radix-ui/react-switch","@radix-ui/react-tabs","@radix-ui/react-toggle","@radix-ui/react-toggle-group","@radix-ui/react-tooltip","cmdk","embla-carousel-react","input-otp","react-day-picker","react-resizable-panels","recharts","sonner","vaul","react-hook-form","@hookform/resolvers","zod","i18next","react-i18next","i18next-browser-languagedetector","axios","date-fns","lucide-react","motion","next-themes","sql.js","@promakeai/customer-backend-client","@promakeai/inspector"]);async function Nx(D){let X=LZ.join(D,"package.json"),Z=new Set;if(!await l9.default.pathExists(X))return Z;let J=await l9.default.readJson(X),Y=J.dependencies||{},Q=J.devDependencies||{};for(let $ of Object.keys(Y))Z.add($);for(let $ of Object.keys(Q))Z.add($);return Z}function WM(D,X){return D.filter((Z)=>{let J=Z.split("@")[0]||Z.replace(/^@/,"").split("@")[0],Y=Z.startsWith("@")?"@"+J:J;if(KV0.has(Y))return!1;if(X.has(Y))return!1;return!0})}async function Rx(D,X){let Z=LZ.join(D,"package.json"),J=await l9.default.readJson(Z);J.name=X,await l9.default.writeJson(Z,J,{spaces:2})}var I4=[{name:"ecommerce",description:"E-commerce starter with cart, products, checkout",header:"header-ecommerce",footer:"footer",indexSections:["hero-cta","featured-products","category-section"],modules:["api","ecommerce-core","product-card","products-page","product-detail-page","cart-page","checkout-page","order-confirmation-page","my-orders-page","cart-drawer","favorites-ecommerce-page","related-products-block","auth-core","login-page","register-page","forgot-password-page","reset-password-page"],theme:{preset:"blue",radius:"medium",shadow:"small",maxWidth:"6xl"}},{name:"blog",description:"Blog starter with posts, categories, favorites",header:"header-simple",footer:"footer-minimal",indexSections:["hero","blog-section"],modules:["blog-core","post-card","post-detail-page","blog-list-page","related-posts-block","newsletter-section"],theme:{preset:"rose",radius:"medium",shadow:"subtle",font:"nunito"}},{name:"portfolio",description:"Portfolio starter with skills, services",header:"header-minimal",footer:"footer-minimal",indexSections:["hero-profile","feature-section","cta-section"],modules:["skill-card","service-card","portfolio-page","testimonials-grid"],theme:{preset:"slate",radius:"medium",shadow:"subtle",font:"raleway"}},{name:"auth",description:"Authentication starter with login, register, forgot & reset password",modules:["auth-core","api","login-page","register-page","forgot-password-page","reset-password-page"],theme:{preset:"zinc"}},{name:"empty",description:"Minimal setup without header, footer, or sections",modules:[],theme:{preset:"zinc"}}];var uF=["api","auth-core","db","animations"];import UM from"path";import nx from"fs/promises";async function FM(D,X=!1){if(await $M(D)&&!X)return!1;let Z=zD();return await c9(D,Z),!0}var Ex=new $5("init").description("Initialize promake.json in current directory").option("-f, --force","Overwrite existing config").action(async(D)=>{let X=process.cwd();if(await $M(X)&&!D.force){console.log(C.yellow("promake.json already exists.")),console.log(C.dim("Use --force to overwrite."));return}await FM(X,D.force),console.log(C.green("Created promake.json")),console.log(""),console.log("You can now add modules:"),console.log(C.cyan(" npx promake add <module-name>"))});var d5=k1(r8(),1);import Z$ from"path";async function Ix(D,X,Z){let J=await d5.default.pathExists(X);switch(Z){case"overwrite":return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:J?"updated":"created",path:X};case"stop":if(J)return{action:"skipped",path:X,reason:"file exists"};return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};case"skip":return{action:"skipped",path:X,reason:"skip behavior"};case"merge":if(X.endsWith(".json"))return GV0(D,X);if(X.endsWith(".css"))return WV0(D,X);return{action:"skipped",path:X,reason:"no merge strategy"};case"prompt":if(J)return{action:"skipped",path:X,reason:"file exists"};return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};default:return{action:"skipped",path:X,reason:"unknown behavior"}}}async function GV0(D,X){if(!await d5.default.pathExists(X))return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};try{let J=await d5.default.readJson(X),Y=JSON.parse(D),Q=jx(J,Y);return await d5.default.writeJson(X,Q,{spaces:2}),{action:"merged",path:X}}catch(J){return{action:"skipped",path:X,reason:"merge failed"}}}async function WV0(D,X){if(!await d5.default.pathExists(X))return await d5.default.ensureDir(Z$.dirname(X)),await d5.default.writeFile(X,D,"utf-8"),{action:"created",path:X};try{let J=await d5.default.readFile(X,"utf-8");if(!J.includes(D.trim()))return await d5.default.writeFile(X,J+`
263
263
  `+D,"utf-8"),{action:"merged",path:X};return{action:"skipped",path:X,reason:"content already exists"}}catch(J){return{action:"skipped",path:X,reason:"merge failed"}}}function jx(D,X){let Z={...D};for(let J in X)if(Object.prototype.hasOwnProperty.call(X,J)){let Y=X[J],Q=Z[J];if(!(J in Z))Z[J]=Y;else if(Tx(Y)&&Tx(Q))Z[J]=jx(Q,Y)}return Z}function Tx(D){return Boolean(D&&typeof D==="object"&&!Array.isArray(D))}async function Cx(D){await d5.default.remove(D)}async function j4(D){return d5.default.pathExists(D)}async function Px(D){return d5.default.readFile(D,"utf-8")}var VM={"registry:store":"overwrite","registry:hook":"overwrite","registry:service":"overwrite","registry:type":"overwrite","registry:context":"stop","registry:page":"stop","registry:component":"overwrite","registry:block":"overwrite","registry:ui":"skip","registry:lang":"merge","registry:lib":"overwrite","registry:style":"merge","registry:module":"stop","registry:file":"prompt","registry:index":"overwrite"},FV0=["accordion","alert","alert-dialog","aspect-ratio","avatar","badge","breadcrumb","button","calendar","card","carousel","chart","checkbox","collapsible","command","context-menu","dialog","drawer","dropdown-menu","form","hover-card","input","input-otp","label","menubar","navigation-menu","pagination","popover","progress","radio-group","resizable","scroll-area","select","separator","sheet","sidebar","skeleton","slider","sonner","switch","table","tabs","textarea","toast","toggle","toggle-group","tooltip"];function wx(D){return FV0.includes(D)}function Sx(D){let X=[],Z=[];for(let J of D)if(wx(J))X.push(J);else Z.push(J);return{shadcn:X,promake:Z}}var cF=k1(r8(),1),fx=k1(bx(),1);import yV0 from"path";async function gx(D,X,Z){let J=yV0.join(D,X),Y="";if(await cF.default.pathExists(J))Y=await cF.default.readFile(J,"utf-8");let Q=fx.default.parse(Y),$=[],K=[];for(let[G,W]of Object.entries(Z))if(!(G in Q))K.push(`${G}="${W}"`),$.push(G);if(K.length>0){let G=Y.trim()?`
264
264
 
265
265
  `:"";Y=Y.trim()+G+K.join(`
@@ -433,7 +433,7 @@ Google:`)),console.log(` ${C.dim("Site Verification:")} ${Q.googleVerification}
433
433
  Syncing SEO settings...`)),console.log(C.dim(` Source: ${J}`)),console.log(C.dim(` Target: ${Z}`));let Y=await yr(X);if(!Y.success)console.log(C.red(`
434
434
  Failed to apply SEO configuration`)),process.exit(1);if(Y.changes.length===0){console.log(C.yellow(`
435
435
  No changes to apply`));return}console.log(C.green(`
436
- SEO meta tags updated successfully:`)),Y.changes.forEach((Q)=>console.log(` ${C.cyan("✓")} ${Q}`))});import u4 from"fs/promises";import M8 from"path";async function Ax0(D){let X=M8.join(D,"package.json"),Z=M8.basename(D),J="npm",Y={};try{let Q=await u4.readFile(X,"utf-8"),$=JSON.parse(Q);Z=$.name||Z;let K={...$.dependencies,...$.devDependencies},G=["react","tailwindcss","react-router","typescript","vite","zustand"];for(let F of G)if(K[F])Y[F]=K[F].replace(/^\^|~/,"");let W=[{file:"bun.lockb",manager:"bun"},{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:F,manager:V}of W)try{await u4.access(M8.join(D,F)),J=V;break}catch{}}catch{}return{name:Z,path:D,packageManager:J,versions:Y}}async function Nx0(D){let X=M8.join(D,"src/components/ui"),Z=[];try{let J=await u4.readdir(X);for(let Y of J)if(Y.endsWith(".tsx"))Z.push(Y.replace(".tsx",""))}catch{}return Z.sort()}async function Rx0(D){let X=[M8.join(D,"src/constants/constants.json"),M8.join(D,"constants/constants.json")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8");return JSON.parse(J)}catch{}return null}function Ex0(D,X){let Z=[];if(D.react)Z.push(`React ${D.react}`);if(D.vite)Z.push(`Vite ${D.vite}`);if(D.tailwindcss)Z.push(`Tailwind v${D.tailwindcss.split(".")[0]}`);if(D.typescript)Z.push("TypeScript");if(D["react-router"])Z.push("React Router");if(D.zustand)Z.push("Zustand");if(X>0)Z.push(`shadcn/ui (${X})`);return Z.push("i18n"),Z}async function Tx0(D){let X=M8.join(D,"src/modules"),Z=["auth","db","api"],J=[];for(let Y of Z)try{await u4.access(M8.join(X,Y)),J.push(Y)}catch{}return J}async function Ix0(D){let X=[M8.join(D,"src/constants/constants.json"),M8.join(D,"constants/constants.json")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8"),Y=JSON.parse(J);return{site:{name:Y.site?.name,tagline:Y.site?.tagline,description:Y.site?.description,language:Y.site?.defaultLanguage,currency:Y.site?.currency},seo:{title:Y.seo?.title,description:Y.seo?.description,author:Y.seo?.author},api:{baseUrl:Y.api?.baseUrl,endpoints:Y.api?.endpoints}}}catch{}return{site:{},seo:{},api:{}}}async function jx0(D){let X=[M8.join(D,"src/router.tsx"),M8.join(D,"src/Router.tsx")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8"),Y=[],Q=/<Route\s+path=["']([^"']+)["']\s+element=\{<(\w+)/g,$;while(($=Q.exec(J))!==null)Y.push({path:$[1],component:$[2]});return Y}catch{}return[]}async function Cx0(D){let X=[],Z=M8.join(D,"src"),J=M8.join(Z,"components");try{let $=(await u4.readdir(J)).filter((G)=>G.endsWith(".tsx")).map((G)=>G.replace(".tsx",""));if($.length>0)X.push({path:"src/components",description:$.join(", ")});let K=M8.join(J,"ui");try{await u4.access(K),X.push({path:"src/components/ui",description:"shadcn/ui components (see SHADCN/UI section)"})}catch{}}catch{}let Y=[{name:"modules",description:"Feature modules (promake add)"},{name:"pages",description:"Page components"},{name:"hooks",description:"Custom React hooks"},{name:"lib",description:"Utility functions"},{name:"lang",description:"i18n translations (en, tr, ...)"},{name:"constants",description:"App config (constants.json)"},{name:"contexts",description:"React context providers"},{name:"stores",description:"Zustand stores"},{name:"types",description:"TypeScript types"}];for(let Q of Y){let $=M8.join(Z,Q.name);try{if((await u4.stat($)).isDirectory())if(Q.name==="pages"||Q.name==="hooks"||Q.name==="contexts"||Q.name==="stores"){let W=(await u4.readdir($)).filter((F)=>F.endsWith(".tsx")||F.endsWith(".ts")).map((F)=>F.replace(/\.(tsx|ts)$/,""));if(W.length>0)X.push({path:`src/${Q.name}`,description:W.join(", ")});else X.push({path:`src/${Q.name}`,description:Q.description})}else X.push({path:`src/${Q.name}`,description:Q.description})}catch{}}return X}function Px0(D,X){if(!D?.modules)return[];return Object.entries(D.modules).map(([Z,J])=>({name:Z,path:J==="default"?`${X}/${Z}`:String(J)}))}var br=new $5("discover").description("Analyze project structure and configuration").option("--json","Output as JSON for machine parsing").option("-d, --detailed","Show full config file contents").option("--cwd <path>","Working directory").action(async(D)=>{let X=D.cwd||process.cwd(),Z=await Ax0(X),J=await T2(X),{site:Y,seo:Q,api:$}=await Ix0(X),K=await jx0(X),G=await Cx0(X),W=await Nx0(X),F=await Rx0(X),V=await Tx0(X),z=J?.modulesPath||"src/modules",H=Px0(J,z),q=Ex0(Z.versions,W.length),U={preset:J?.theme?.preset,radius:J?.theme?.radius,font:J?.theme?.font},B={project:Z,overview:q,builtinModules:V,config:{modulesPath:z,routerFile:J?.routerFile||"src/router.tsx",envFile:J?.envFile||".env"},modules:H,shadcnComponents:W,theme:U,site:Y,seo:Q,api:$,routes:K,structure:G,promakeConfig:J,constantsConfig:F};if(D.json){console.log(JSON.stringify(B,null,2));return}if(console.log(C.bold(`
436
+ SEO meta tags updated successfully:`)),Y.changes.forEach((Q)=>console.log(` ${C.cyan("✓")} ${Q}`))});import u4 from"fs/promises";import M8 from"path";async function Ax0(D){let X=M8.join(D,"package.json"),Z=M8.basename(D),J="npm",Y={};try{let Q=await u4.readFile(X,"utf-8"),$=JSON.parse(Q);Z=$.name||Z;let K={...$.dependencies,...$.devDependencies},G=["react","tailwindcss","react-router","typescript","vite","zustand"];for(let F of G)if(K[F])Y[F]=K[F].replace(/^\^|~/,"");let W=[{file:"bun.lockb",manager:"bun"},{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:F,manager:V}of W)try{await u4.access(M8.join(D,F)),J=V;break}catch{}}catch{}return{name:Z,path:D,packageManager:J,versions:Y}}async function Nx0(D){let X=M8.join(D,"src/components/ui"),Z=[];try{let J=await u4.readdir(X);for(let Y of J)if(Y.endsWith(".tsx"))Z.push(Y.replace(".tsx",""))}catch{}return Z.sort()}async function Rx0(D){let X=[M8.join(D,"src/constants/constants.json"),M8.join(D,"constants/constants.json")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8");return JSON.parse(J)}catch{}return null}function Ex0(D,X){let Z=[];if(D.react)Z.push(`React ${D.react}`);if(D.vite)Z.push(`Vite ${D.vite}`);if(D.tailwindcss)Z.push(`Tailwind v${D.tailwindcss.split(".")[0]}`);if(D.typescript)Z.push("TypeScript");if(D["react-router"])Z.push("React Router");if(D.zustand)Z.push("Zustand");if(X>0)Z.push(`shadcn/ui (${X})`);return Z.push("i18n"),Z}async function Tx0(D){let X=M8.join(D,"src/modules"),Z=["auth-core","db","api"],J=[];for(let Y of Z)try{await u4.access(M8.join(X,Y)),J.push(Y)}catch{}return J}async function Ix0(D){let X=[M8.join(D,"src/constants/constants.json"),M8.join(D,"constants/constants.json")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8"),Y=JSON.parse(J);return{site:{name:Y.site?.name,tagline:Y.site?.tagline,description:Y.site?.description,language:Y.site?.defaultLanguage,currency:Y.site?.currency},seo:{title:Y.seo?.title,description:Y.seo?.description,author:Y.seo?.author},api:{baseUrl:Y.api?.baseUrl,endpoints:Y.api?.endpoints}}}catch{}return{site:{},seo:{},api:{}}}async function jx0(D){let X=[M8.join(D,"src/router.tsx"),M8.join(D,"src/Router.tsx")];for(let Z of X)try{let J=await u4.readFile(Z,"utf-8"),Y=[],Q=/<Route\s+path=["']([^"']+)["']\s+element=\{<(\w+)/g,$;while(($=Q.exec(J))!==null)Y.push({path:$[1],component:$[2]});return Y}catch{}return[]}async function Cx0(D){let X=[],Z=M8.join(D,"src"),J=M8.join(Z,"components");try{let $=(await u4.readdir(J)).filter((G)=>G.endsWith(".tsx")).map((G)=>G.replace(".tsx",""));if($.length>0)X.push({path:"src/components",description:$.join(", ")});let K=M8.join(J,"ui");try{await u4.access(K),X.push({path:"src/components/ui",description:"shadcn/ui components (see SHADCN/UI section)"})}catch{}}catch{}let Y=[{name:"modules",description:"Feature modules (promake add)"},{name:"pages",description:"Page components"},{name:"hooks",description:"Custom React hooks"},{name:"lib",description:"Utility functions"},{name:"lang",description:"i18n translations (en, tr, ...)"},{name:"constants",description:"App config (constants.json)"},{name:"contexts",description:"React context providers"},{name:"stores",description:"Zustand stores"},{name:"types",description:"TypeScript types"}];for(let Q of Y){let $=M8.join(Z,Q.name);try{if((await u4.stat($)).isDirectory())if(Q.name==="pages"||Q.name==="hooks"||Q.name==="contexts"||Q.name==="stores"){let W=(await u4.readdir($)).filter((F)=>F.endsWith(".tsx")||F.endsWith(".ts")).map((F)=>F.replace(/\.(tsx|ts)$/,""));if(W.length>0)X.push({path:`src/${Q.name}`,description:W.join(", ")});else X.push({path:`src/${Q.name}`,description:Q.description})}else X.push({path:`src/${Q.name}`,description:Q.description})}catch{}}return X}function Px0(D,X){if(!D?.modules)return[];return Object.entries(D.modules).map(([Z,J])=>({name:Z,path:J==="default"?`${X}/${Z}`:String(J)}))}var br=new $5("discover").description("Analyze project structure and configuration").option("--json","Output as JSON for machine parsing").option("-d, --detailed","Show full config file contents").option("--cwd <path>","Working directory").action(async(D)=>{let X=D.cwd||process.cwd(),Z=await Ax0(X),J=await T2(X),{site:Y,seo:Q,api:$}=await Ix0(X),K=await jx0(X),G=await Cx0(X),W=await Nx0(X),F=await Rx0(X),V=await Tx0(X),z=J?.modulesPath||"src/modules",H=Px0(J,z),q=Ex0(Z.versions,W.length),U={preset:J?.theme?.preset,radius:J?.theme?.radius,font:J?.theme?.font},B={project:Z,overview:q,builtinModules:V,config:{modulesPath:z,routerFile:J?.routerFile||"src/router.tsx",envFile:J?.envFile||".env"},modules:H,shadcnComponents:W,theme:U,site:Y,seo:Q,api:$,routes:K,structure:G,promakeConfig:J,constantsConfig:F};if(D.json){console.log(JSON.stringify(B,null,2));return}if(console.log(C.bold(`
437
437
  PROJECT`)),console.log(` ${Z.name} ${C.dim(`(${Z.packageManager})`)}`),console.log(` ${C.dim(Z.path)}`),console.log(C.bold(`
438
438
  STACK`)),console.log(` ${q.join(", ")}`),V.length>0)console.log(C.bold(`
439
439
  BUILT-IN MODULES`)),console.log(` ${V.join(", ")} ${C.dim("(included in template)")}`);if(console.log(C.bold(`
@@ -496,7 +496,7 @@ constants.json (full)`)),console.log(C.dim(JSON.stringify(B.constantsConfig,null
496
496
  `)),D6("promake create <name>","Create new project"),D6("promake add <modules...>","Add modules"),D6("promake add <page> --module-name <name>","Add page with custom name"),D6("promake remove <modules...>","Remove modules"),D6("promake sync","Sync from promake.json"),D6("promake theme --list","List theme options"),D6("promake theme --preset <name>","Apply color preset"),D6("promake list","List available modules"),D6("promake doctor","Check project health"),D6("promake doctor --runtime","Include runtime checks"),D6("promake discover --json","Project info for AI"),D6("promake seo","Sync SEO meta tags"),D6("promake usage","Show this guide"),D6("promake <command> --help","Command-specific help"),console.log()}var ur=new $5("info").description("Show detailed information about a module").argument("<module>","Module name").option("--json","Output as JSON").action(async(D,X)=>{let Z=E2(`Fetching ${D}...`).start();try{let J=await T4(D);if(Z.stop(),!J)console.error(C.red(`Module not found: ${D}`)),process.exit(1);if(X.json){console.log(JSON.stringify(J,null,2));return}if(console.log(""),console.log(C.bold.cyan(J.name)),console.log(C.dim("─".repeat(J.name.length+4))),J.title)console.log(`${C.gray("Title:")} ${J.title}`);if(console.log(`${C.gray("Type:")} ${J.type.replace("registry:","")}`),J.description)console.log(`${C.gray("Description:")} ${J.description}`);if(J.registryDependencies?.length)console.log(""),console.log(C.gray("Dependencies:")),J.registryDependencies.forEach((Y)=>{let $=!Y.includes("-")||["button","card","input","badge","dialog","sheet","dropdown-menu","accordion","tabs","select","checkbox","slider","separator","avatar","tooltip","popover","navigation-menu","scroll-area"].includes(Y)?C.dim("(shadcn)"):"";console.log(` ${C.yellow("•")} ${Y} ${$}`)});if(J.dependencies?.length)console.log(""),console.log(C.gray("NPM Packages:")),J.dependencies.forEach((Y)=>{console.log(` ${C.blue("•")} ${Y}`)});if(J.files?.length)console.log(""),console.log(C.gray("Files:")),J.files.forEach((Y)=>{console.log(` ${C.dim("•")} ${Y.path}`)});if(J.exports){if(console.log(""),console.log(C.gray("Exports:")),J.exports.types?.length)console.log(` ${C.magenta("Types:")} ${J.exports.types.join(", ")}`);if(J.exports.variables?.length)console.log(` ${C.green("Components:")} ${J.exports.variables.join(", ")}`)}if(J.route)console.log(""),console.log(C.gray("Route:")),console.log(` ${C.cyan("Path:")} ${J.route.path}`),console.log(` ${C.cyan("Component:")} ${J.route.componentName}`);if(J.usage)console.log(""),console.log(C.gray("Usage:")),console.log(C.dim("─".repeat(40))),console.log(J.usage);console.log("")}catch(J){if(Z.fail("Failed to fetch module info"),J instanceof Error)console.error(C.red(J.message));process.exit(1)}});import t91 from"path";var vK=k1(r8(),1);import{execSync as _x0}from"child_process";import vq from"path";async function tE(D,X=!1){let Z=Date.now(),J=[],Y=vq.join(D,"tsconfig.json");if(!await vK.default.pathExists(Y))return{name:"TypeScript",status:"skip",severity:"info",duration:Date.now()-Z,items:[],summary:"No tsconfig.json found"};let Q=vq.join(D,"package.json"),$=!1;if(await vK.default.pathExists(Q))$=!!(await vK.default.readJson(Q)).scripts?.check;let K=X$(D),G=K==="npm"?"npm run":`${K} run`;try{let W=$?`${G} check 2>&1`:"npx tsc --noEmit 2>&1";if(!X)console.log(C.dim(` $ ${$?`${G} check`:"tsc --noEmit"}`));let F=_x0(W,{cwd:D,encoding:"utf-8",stdio:"pipe"});if(!X&&F.trim())console.log(C.dim(F));return{name:"TypeScript",status:"pass",severity:"error",duration:Date.now()-Z,items:[],summary:"No type errors"}}catch(W){let F=W.stdout||W.stderr||W.message||"";if(F.includes("This is not the tsc command")||F.includes("typescript"))return{name:"TypeScript",status:"skip",severity:"info",duration:Date.now()-Z,items:[],summary:"TypeScript not installed"};if(!X&&F.trim())console.log(C.dim(F));return J.push(...kx0(F,D)),{name:"TypeScript",status:"fail",severity:"error",duration:Date.now()-Z,items:J,summary:`${J.length} type error(s)`}}}function kx0(D,X){let Z=[],J=/^(.+)\((\d+),(\d+)\):\s*(error|warning)\s*(TS\d+):\s*(.+)$/gm,Y=/^(.+):(\d+):(\d+)\s*-\s*(error|warning)\s*(TS\d+):\s*(.+)$/gm;for(let $ of[J,Y]){let K;while((K=$.exec(D))!==null){let G=K[1].trim();Z.push({file:vq.isAbsolute(G)?vq.relative(X,G):G,line:parseInt(K[2]),column:parseInt(K[3]),code:K[5],message:K[6]})}}let Q=new Set;return Z.filter(($)=>{let K=`${$.file}:${$.line}:${$.column}:${$.message}`;if(Q.has(K))return!1;return Q.add(K),!0})}var oD=k1(r8(),1);import{execSync as hx0}from"child_process";import bK from"path";var xx0=["eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintrc.js",".eslintrc.cjs",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc"];async function yx0(D){for(let Z of xx0)if(await oD.default.pathExists(bK.join(D,Z)))return!0;let X=bK.join(D,"package.json");if(await oD.default.pathExists(X))try{if((await oD.default.readJson(X)).eslintConfig)return!0}catch{}return!1}async function eE(D,X=!1,Z=!1){let J=Date.now();if(!await yx0(D))return{name:"ESLint",status:"skip",severity:"warning",duration:Date.now()-J,items:[],summary:"No ESLint config found"};let Y=bK.join(D,"package.json"),Q=!1;if(await oD.default.pathExists(Y))Q=!!(await oD.default.readJson(Y)).scripts?.lint;let $=X$(D),K=$==="npm"?"npm run":`${$} run`,G=X?" -- --fix":"";try{let W=Q?`${K} lint${G} 2>&1`:`npx eslint .${X?" --fix":""} 2>&1`;if(!Z)console.log(C.dim(` $ ${Q?`${K} lint${G}`:`eslint .${X?" --fix":""}`}`));let F=hx0(W,{cwd:D,encoding:"utf-8",stdio:"pipe",maxBuffer:10485760});if(!Z&&F.trim())console.log(C.dim(F));return{name:"ESLint",status:"pass",severity:"warning",duration:Date.now()-J,items:[],summary:"No linting issues"}}catch(W){let F=W.stdout||W.stderr||W.message||"";if(F.includes("eslint: not found")||F.includes("'eslint' is not recognized"))return{name:"ESLint",status:"skip",severity:"info",duration:Date.now()-J,items:[],summary:"ESLint not installed"};if(!Z&&F.trim())console.log(C.dim(F));let V=vx0(F,D);if(V.length===0&&F.includes("error"))return{name:"ESLint",status:"fail",severity:"warning",duration:Date.now()-J,items:[{message:"ESLint encountered an error"}],summary:"ESLint error"};return{name:"ESLint",status:V.length>0?"fail":"pass",severity:"warning",duration:Date.now()-J,items:V,summary:V.length>0?`${V.length} linting issue(s)`:"No linting issues"}}}function vx0(D,X){let Z=[],J=/^([^\s].*\.(ts|tsx|js|jsx))$/gm,Y=/^\s+(\d+):(\d+)\s+(error|warning)\s+(.+?)\s{2,}(\S+)?$/gm,Q=null,$=D.split(`
497
497
  `);for(let K of $){let G=K.match(/^([^\s].*\.(ts|tsx|js|jsx))$/);if(G){Q=G[1];continue}let W=K.match(/^\s+(\d+):(\d+)\s+(error|warning)\s+(.+?)\s{2,}(\S+)?$/);if(W&&Q)Z.push({file:bK.isAbsolute(Q)?bK.relative(X,Q):Q,line:parseInt(W[1]),column:parseInt(W[2]),code:W[5]||void 0,message:W[4].trim()})}return Z}var bq=k1(r8(),1);import{execSync as bx0}from"child_process";import fK from"path";async function DT(D){let X=Date.now(),Z=["vite.config.ts","vite.config.js","vite.config.mjs"],J=!1;for(let Y of Z)if(await bq.default.pathExists(fK.join(D,Y))){J=!0;break}if(!J)return{name:"Build",status:"skip",severity:"error",duration:Date.now()-X,items:[],summary:"No vite.config found"};try{bx0("npx vite build 2>&1",{cwd:D,encoding:"utf-8",stdio:"pipe",env:{...process.env,NODE_ENV:"production"}});let Y=fK.join(D,"dist");if(await bq.default.pathExists(Y))await bq.default.remove(Y);return{name:"Build",status:"pass",severity:"error",duration:Date.now()-X,items:[],summary:"Build succeeded"}}catch(Y){let Q=Y.stdout||Y.stderr||Y.message||"",$=fx0(Q,D);return{name:"Build",status:"fail",severity:"error",duration:Date.now()-X,items:$.length>0?$:[{message:"Build failed"}],summary:"Build failed"}}}function fx0(D,X){let Z=[],J=D.split(`
498
498
  `),Y=[/^(.+):(\d+):(\d+):\s*(.+)$/,/\[vite\]:\s*Error:\s*(.+)/,/Error:\s*(.+?)\s+at\s+(.+):(\d+):(\d+)/,/Could not resolve ["']([^"']+)["']\s+from\s+["']([^"']+)["']/,/RollupError:\s*(.+)/];for(let $=0;$<J.length;$++){let K=J[$].trim();if(!K)continue;if(K.includes("building for production")||K.includes("transforming")||K.includes("rendering chunks")||K.includes("computing gzip")||K.startsWith("✓")||K.startsWith("vite v"))continue;for(let G of Y){let W=K.match(G);if(W){if(G.source.includes("Could not resolve"))Z.push({file:fK.relative(X,W[2]),message:`Cannot find module '${W[1]}'`,suggestion:"Check if the module is installed or the path is correct"});else if(W.length===5)Z.push({file:fK.isAbsolute(W[1]||W[2])?fK.relative(X,W[1]||W[2]):W[1]||W[2],line:parseInt(W[2]||W[3]),column:parseInt(W[3]||W[4]),message:W[4]||W[1]});else Z.push({message:W[1]||K});break}}if(Z.length===0&&(K.toLowerCase().includes("error")||K.toLowerCase().includes("failed")))Z.push({message:K})}let Q=new Set;return Z.filter(($)=>{let K=`${$.file}:${$.line}:${$.message}`;if(Q.has(K))return!1;return Q.add(K),!0})}var HL=k1(r8(),1);import DF from"path";var f91=[process.env["PROGRAMFILES(X86)"]&&DF.join(process.env["PROGRAMFILES(X86)"],"Google","Chrome","Application","chrome.exe"),process.env.PROGRAMFILES&&DF.join(process.env.PROGRAMFILES,"Google","Chrome","Application","chrome.exe"),process.env.LOCALAPPDATA&&DF.join(process.env.LOCALAPPDATA,"Google","Chrome","Application","chrome.exe"),process.env["PROGRAMFILES(X86)"]&&DF.join(process.env["PROGRAMFILES(X86)"],"Microsoft","Edge","Application","msedge.exe"),process.env.PROGRAMFILES&&DF.join(process.env.PROGRAMFILES,"Microsoft","Edge","Application","msedge.exe")].filter(Boolean),g91=["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium"],u91=["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium-browser","/usr/bin/chromium","/snap/bin/chromium"];async function f$0(D){let X=await m91(D);if(!X)return null;try{return{type:"chrome",browser:await(await Promise.resolve().then(() => (b$0(),v$0))).default.launch({executablePath:X,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu"]})}}catch{return null}}async function m91(D,X=process.platform,Z){if(D){if(await HL.default.pathExists(D))return D}if(process.env.CHROME_PATH){if(await HL.default.pathExists(process.env.CHROME_PATH))return process.env.CHROME_PATH}let J=Z||[];if(!Z)switch(X){case"win32":J=f91;break;case"darwin":J=g91;break;default:J=u91}for(let Y of J)if(await HL.default.pathExists(Y))return Y;return null}async function g$0(D){try{await D.browser.close()}catch{}}async function nS(D,X,Z="/",J){let Y=Date.now();if(!await c91(D))return{name:"Runtime",status:"skip",severity:"error",duration:Date.now()-Y,items:[{message:`No server running on port ${D}`,suggestion:"Start dev server first: npm run dev (or use --port to specify different port)"}],summary:`Skipped (no server on port ${D})`};let $=null;try{$=await f$0(J)}catch{}if(!$)return{name:"Runtime",status:"skip",severity:"info",duration:Date.now()-Y,items:[{message:"No browser available (Chrome/Chromium/Edge not found)",suggestion:"Use --chrome-path <path> or set CHROME_PATH environment variable, or install Chrome/Edge"}],summary:"Skipped (no browser)"};let K=[],{browser:G,type:W}=$;try{let V=await G.newPage();V.on("console",(q)=>{let U=q.type();if(U==="error"||U==="warning"){let B=q.location();K.push({type:U==="warning"?"warning":"console",message:q.text(),fileName:B?.url,lineNumber:B?.lineNumber,columnNumber:B?.columnNumber})}}),V.on("pageerror",(q)=>{K.push({type:"error",message:q.message,stack:q.stack})});let z=Z.startsWith("/")?Z:`/${Z}`;await V.goto(`http://localhost:${D}${z}`,{waitUntil:"networkidle0",timeout:X}),await d91(3000);let H=await V.evaluate(()=>{return window.__earlyErrors||[]});K.push(...H)}catch(V){let z=V.message||"Unknown error";if(z.includes("timeout")||z.includes("Timeout"))K.push({type:"error",message:"Page load timeout - app may have crashed or is unresponsive"});else if(z.includes("net::ERR"))K.push({type:"error",message:`Network error: ${z}`});else K.push({type:"error",message:`Runtime check error: ${z}`})}finally{await g$0($)}let F=l91(K);return{name:`Runtime (${W})`,status:F.length>0?"fail":"pass",severity:"error",duration:Date.now()-Y,items:F,summary:F.length>0?`${F.length} runtime error(s)`:"No runtime errors"}}async function c91(D){try{let X=await fetch(`http://localhost:${D}`,{method:"HEAD",signal:AbortSignal.timeout(3000)});return X.ok||X.status<500}catch{return!1}}function d91(D){return new Promise((X)=>setTimeout(X,D))}function l91(D){return D.map((X)=>{let Z=[];for(let[J,Y]of Object.entries(X))if(Y!==void 0&&Y!==null)Z.push(`${J}: ${Y}`);return{message:Z.join(`
499
- `)}})}function oS(D,X){console.log(""),console.log(C.bold("Health Check")+C.dim(` (${a91(D.duration)})`)),console.log(C.dim("─".repeat(40)));for(let Z of D.checks)p91(Z,X);console.log(C.dim("─".repeat(40))),s91(D)}function p91(D,X){let Z=o91(D.status),J=r91(D.status,D.severity),Y=C.dim(`${D.duration}ms`);console.log(`${Z} ${J(D.name)} ${Y} ${C.dim("·")} ${C.dim(D.summary||"")}`);let Q=D.name.startsWith("Runtime"),$=X||Q?D.items:D.items.slice(0,3),K=D.items.length-$.length;for(let G of $)i91(G,D.severity);if(K>0)console.log(C.dim(` ... +${K} more (--verbose)`))}function i91(D,X){let Z=X==="error"?C.red:C.yellow,J=n91(D),Y=J?C.cyan(J)+" ":"";console.log(` ${Z("›")} ${Y}${D.message}`)}function n91(D){if(!D.file)return"";let X=D.file;if(D.line!==void 0){if(X+=`:${D.line}`,D.column!==void 0)X+=`:${D.column}`}return X}function o91(D){switch(D){case"pass":return C.green("✓");case"fail":return C.red("✗");case"skip":return C.dim("○");default:return C.dim("?")}}function r91(D,X){if(D==="fail")return X==="error"?C.red:C.yellow;if(D==="pass")return C.green;return C.dim}function s91(D){let{summary:X}=D,Z=[];if(X.passed>0)Z.push(C.green(`${X.passed} passed`));if(X.failed>0)Z.push(C.red(`${X.failed} failed`));if(X.skipped>0)Z.push(C.dim(`${X.skipped} skipped`));if(console.log(Z.join(C.dim(" · "))),X.errors>0)console.log(C.red(`${X.errors} error(s) need attention`));else if(X.warnings>0)console.log(C.yellow(`${X.warnings} warning(s) to review`));else console.log(C.green("All good!"))}function a91(D){if(D<1000)return`${D}ms`;return`${(D/1000).toFixed(1)}s`}var u$0=new $5("doctor").description("Analyze project for issues (TypeScript, ESLint, build, runtime)").option("--cwd <path>","Working directory").option("--port <number>","Vite dev server port","5174").option("--chrome-path <path>","Chrome/Edge executable path for runtime checks").option("--fix","Auto-fix ESLint issues where possible").option("--runtime","Run runtime error detection (requires running dev server)").option("--only-build","Run only Vite build check").option("--only-runtime","Run only runtime error detection").option("--runtime-timeout <ms>","Runtime check timeout in ms","10000").option("--route <path>","Route path for runtime check","/").option("--json","Output as JSON (for CI/CD)").option("-v, --verbose","Show all details including all errors").option("-q, --quiet","Hide command output logs (only show summary)").option("--no-typecheck","Skip TypeScript type checking").option("--no-lint","Skip ESLint checking").option("--no-build","Skip Vite build checking").action(async(D)=>{let X=D.cwd||process.cwd(),Z=parseInt(D.port||"5173"),J=parseInt(D.runtimeTimeout||"10000"),Y=D.route||"/",Q=Date.now(),$=D.quiet||D.json||!1;if(!await T2(X)&&!D.json)console.log(C.yellow("Warning: No promake.json found. Running checks anyway..."));let G=D.json?null:E2("Running health checks...").start(),W=D31(D),F=[];if(W.typecheck)F.push(()=>tE(X,$));if(W.lint)F.push(()=>eE(X,D.fix,$));if(W.build)F.push(()=>DT(X));if(W.runtime)F.push(()=>nS(Z,J,Y,D.chromePath));let V=[];try{if(V=await e91(F,1),G)G.stop()}catch(H){if(G)G.fail("Health check failed");if(!D.json)console.error(C.red(H.message));process.exit(1)}let z={project:t91.basename(X),timestamp:new Date().toISOString(),duration:Date.now()-Q,checks:V,summary:{passed:V.filter((H)=>H.status==="pass").length,failed:V.filter((H)=>H.status==="fail").length,skipped:V.filter((H)=>H.status==="skip").length,errors:V.filter((H)=>H.status==="fail"&&H.severity==="error").reduce((H,q)=>H+q.items.length,0),warnings:V.filter((H)=>H.status==="fail"&&H.severity==="warning").reduce((H,q)=>H+q.items.length,0)}};if(D.json)console.log(JSON.stringify(z,null,2));else oS(z,D.verbose||!1);if(z.summary.errors>0)process.exit(1)});async function e91(D,X){let Z=[],J=0;async function Y(){let $=J++;if($>=D.length)return;Z[$]=await D[$](),await Y()}let Q=Array(Math.min(X,D.length)).fill(null).map(()=>Y());return await Promise.all(Q),Z}function D31(D){let X=!!D.onlyBuild,Z=!!D.onlyRuntime;if(X||Z)return{typecheck:!1,lint:!1,build:X,runtime:Z};return{typecheck:D.typecheck!==!1,lint:D.lint!==!1,build:D.build!==!1,runtime:!!D.runtime}}var m$0={name:"@promakeai/cli",version:"0.4.7",type:"module",bin:{promake:"dist/index.js"},files:["dist/index.js","dist/registry","template"],scripts:{dev:"bun run src/index.ts","dev:app":"cd dev && bun run dev","dev:populate":"bun run scripts/populate-dev.ts","dev:fresh":"bun run dev:populate && bun run dev:app","playground:create":"rm -rf playground && bun run dev -- create playground --template empty --pm bun","playground:reset":"bun run playground:create","playground:add":"cd playground && bun run ../src/index.ts add","playground:ecommerce":"rm -rf playground && bun run dev -- create playground --template ecommerce --pm bun",build:"bun run build:cli && bun run build:registry","build:cli":"bun build src/index.ts --outdir dist --target node --minify","build:registry":"bun run scripts/build-registry.ts",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",test:"bun test","test:watch":"bun test --watch","test:coverage":"bun test --coverage",release:"bun run build && npm publish --access public"},dependencies:{"adm-zip":"^0.5.16",archiver:"^7.0.1",chalk:"^5.3.0",commander:"^12.1.0",culori:"^4.0.2",dotenv:"^17.2.3","fs-extra":"^11.3.3",glob:"^11.0.0",ora:"^8.1.1",prompts:"^2.4.2","puppeteer-core":"^24.36.0"},devDependencies:{"@types/archiver":"^7.0.0","@types/bun":"^1.1.14","@types/culori":"^4.0.1","@types/fs-extra":"^11.0.4","@types/node":"^22.10.2","@types/prompts":"^2.4.9",typescript:"^5.7.2"}};var P8=new $5;P8.name("promake").description(`Modular React template CLI - Build React apps with pre-built components
499
+ `)}})}function oS(D,X){console.log(""),console.log(C.bold("Health Check")+C.dim(` (${a91(D.duration)})`)),console.log(C.dim("─".repeat(40)));for(let Z of D.checks)p91(Z,X);console.log(C.dim("─".repeat(40))),s91(D)}function p91(D,X){let Z=o91(D.status),J=r91(D.status,D.severity),Y=C.dim(`${D.duration}ms`);console.log(`${Z} ${J(D.name)} ${Y} ${C.dim("·")} ${C.dim(D.summary||"")}`);let Q=D.name.startsWith("Runtime"),$=X||Q?D.items:D.items.slice(0,3),K=D.items.length-$.length;for(let G of $)i91(G,D.severity);if(K>0)console.log(C.dim(` ... +${K} more (--verbose)`))}function i91(D,X){let Z=X==="error"?C.red:C.yellow,J=n91(D),Y=J?C.cyan(J)+" ":"";console.log(` ${Z("›")} ${Y}${D.message}`)}function n91(D){if(!D.file)return"";let X=D.file;if(D.line!==void 0){if(X+=`:${D.line}`,D.column!==void 0)X+=`:${D.column}`}return X}function o91(D){switch(D){case"pass":return C.green("✓");case"fail":return C.red("✗");case"skip":return C.dim("○");default:return C.dim("?")}}function r91(D,X){if(D==="fail")return X==="error"?C.red:C.yellow;if(D==="pass")return C.green;return C.dim}function s91(D){let{summary:X}=D,Z=[];if(X.passed>0)Z.push(C.green(`${X.passed} passed`));if(X.failed>0)Z.push(C.red(`${X.failed} failed`));if(X.skipped>0)Z.push(C.dim(`${X.skipped} skipped`));if(console.log(Z.join(C.dim(" · "))),X.errors>0)console.log(C.red(`${X.errors} error(s) need attention`));else if(X.warnings>0)console.log(C.yellow(`${X.warnings} warning(s) to review`));else console.log(C.green("All good!"))}function a91(D){if(D<1000)return`${D}ms`;return`${(D/1000).toFixed(1)}s`}var u$0=new $5("doctor").description("Analyze project for issues (TypeScript, ESLint, build, runtime)").option("--cwd <path>","Working directory").option("--port <number>","Vite dev server port","5174").option("--chrome-path <path>","Chrome/Edge executable path for runtime checks").option("--fix","Auto-fix ESLint issues where possible").option("--runtime","Run runtime error detection (requires running dev server)").option("--only-build","Run only Vite build check").option("--only-runtime","Run only runtime error detection").option("--runtime-timeout <ms>","Runtime check timeout in ms","10000").option("--route <path>","Route path for runtime check","/").option("--json","Output as JSON (for CI/CD)").option("-v, --verbose","Show all details including all errors").option("-q, --quiet","Hide command output logs (only show summary)").option("--no-typecheck","Skip TypeScript type checking").option("--no-lint","Skip ESLint checking").option("--no-build","Skip Vite build checking").action(async(D)=>{let X=D.cwd||process.cwd(),Z=parseInt(D.port||"5173"),J=parseInt(D.runtimeTimeout||"10000"),Y=D.route||"/",Q=Date.now(),$=D.quiet||D.json||!1;if(!await T2(X)&&!D.json)console.log(C.yellow("Warning: No promake.json found. Running checks anyway..."));let G=D.json?null:E2("Running health checks...").start(),W=D31(D),F=[];if(W.typecheck)F.push(()=>tE(X,$));if(W.lint)F.push(()=>eE(X,D.fix,$));if(W.build)F.push(()=>DT(X));if(W.runtime)F.push(()=>nS(Z,J,Y,D.chromePath));let V=[];try{if(V=await e91(F,1),G)G.stop()}catch(H){if(G)G.fail("Health check failed");if(!D.json)console.error(C.red(H.message));process.exit(1)}let z={project:t91.basename(X),timestamp:new Date().toISOString(),duration:Date.now()-Q,checks:V,summary:{passed:V.filter((H)=>H.status==="pass").length,failed:V.filter((H)=>H.status==="fail").length,skipped:V.filter((H)=>H.status==="skip").length,errors:V.filter((H)=>H.status==="fail"&&H.severity==="error").reduce((H,q)=>H+q.items.length,0),warnings:V.filter((H)=>H.status==="fail"&&H.severity==="warning").reduce((H,q)=>H+q.items.length,0)}};if(D.json)console.log(JSON.stringify(z,null,2));else oS(z,D.verbose||!1);if(z.summary.errors>0)process.exit(1)});async function e91(D,X){let Z=[],J=0;async function Y(){let $=J++;if($>=D.length)return;Z[$]=await D[$](),await Y()}let Q=Array(Math.min(X,D.length)).fill(null).map(()=>Y());return await Promise.all(Q),Z}function D31(D){let X=!!D.onlyBuild,Z=!!D.onlyRuntime;if(X||Z)return{typecheck:!1,lint:!1,build:X,runtime:Z};return{typecheck:D.typecheck!==!1,lint:D.lint!==!1,build:D.build!==!1,runtime:!!D.runtime}}var m$0={name:"@promakeai/cli",version:"0.4.8",type:"module",bin:{promake:"dist/index.js"},files:["dist/index.js","dist/registry","template"],scripts:{dev:"bun run src/index.ts","dev:app":"cd dev && bun run dev","dev:populate":"bun run scripts/populate-dev.ts","dev:fresh":"bun run dev:populate && bun run dev:app","playground:create":"rm -rf playground && bun run dev -- create playground --template empty --pm bun","playground:reset":"bun run playground:create","playground:add":"cd playground && bun run ../src/index.ts add","playground:ecommerce":"rm -rf playground && bun run dev -- create playground --template ecommerce --pm bun",build:"bun run build:cli && bun run build:registry","build:cli":"bun build src/index.ts --outdir dist --target node --minify","build:registry":"bun run scripts/build-registry.ts",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",test:"bun test","test:watch":"bun test --watch","test:coverage":"bun test --coverage",release:"bun run build && npm publish --access public"},dependencies:{"adm-zip":"^0.5.16",archiver:"^7.0.1",chalk:"^5.3.0",commander:"^12.1.0",culori:"^4.0.2",dotenv:"^17.2.3","fs-extra":"^11.3.3",glob:"^11.0.0",ora:"^8.1.1",prompts:"^2.4.2","puppeteer-core":"^24.36.0"},devDependencies:{"@types/archiver":"^7.0.0","@types/bun":"^1.1.14","@types/culori":"^4.0.1","@types/fs-extra":"^11.0.4","@types/node":"^22.10.2","@types/prompts":"^2.4.9",typescript:"^5.7.2"}};var P8=new $5;P8.name("promake").description(`Modular React template CLI - Build React apps with pre-built components
500
500
 
501
501
  Quick Start:
502
502
  $ promake create my-app
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promakeai/cli",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "promake": "dist/index.js"