@promakeai/cli 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -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}`,NG0=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),RG0=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),EG0=(D,X,Z)=>{let J=Z===""?"":`with ${Z.trim()}() `,Y=AG0.bind(null,J,X.toString());Object.defineProperty(Y,"name",RG0);let{writable:Q,enumerable:$,configurable:K}=NG0;Object.defineProperty(D,"toString",{value:Y,writable:Q,enumerable:$,configurable:K})};function PL(D,X,{ignoreNonConfigurable:Z=!1}={}){let{name:J}=D;for(let Y of Reflect.ownKeys(X))OG0(D,X,Y,Z);return MG0(D,X),EG0(D,X,J),D}var NF=new WeakMap,s_=(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 PL(Q,D),NF.set(Q,J),Q};s_.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 a_=s_;var FD=[];FD.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")FD.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")FD.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",wL=Symbol.for("signal-exit emitter"),SL=globalThis,TG0=Object.defineProperty.bind(Object);class t_{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(SL[wL])return SL[wL];TG0(SL,wL,{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 kL{}var IG0=(D)=>{return{onExit(X,Z){return D.onExit(X,Z)},load(){return D.load()},unload(){return D.unload()}}};class e_ extends kL{onExit(){return()=>{}}load(){}unload(){}}class Dk extends kL{#D=_L.platform==="win32"?"SIGINT":"SIGHUP";#X=new t_;#Z;#J;#Q;#Y={};#$=!1;constructor(D){super();this.#Z=D,this.#Y={};for(let X of FD)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 FD)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,FD.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 _L=globalThis.process,{onExit:Xk,load:v31,unload:b31}=IG0(RF(_L)?new Dk(_L):new e_);var Zk=EF.stderr.isTTY?EF.stderr:EF.stdout.isTTY?EF.stdout:void 0,jG0=Zk?a_(()=>{Xk(()=>{Zk.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},Jk=jG0;var TF=!1,qZ={};qZ.show=(D=Yk.stderr)=>{if(!D.isTTY)return;TF=!1,D.write("\x1B[?25h")};qZ.hide=(D=Yk.stderr)=>{if(!D.isTTY)return;Jk(),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 hL=qZ;var lQ=k1(xL(),1);import N4 from"node:process";function yL(){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 PG0={info:C.blue("ℹ"),success:C.green("✔"),warning:C.yellow("⚠"),error:C.red("✖")},wG0={info:C.blue("i"),success:C.green("√"),warning:C.yellow("‼"),error:C.red("×")},SG0=yL()?PG0:wG0,cQ=SG0;function vL({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 _G0=vL();function dQ(D){if(typeof D!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(_G0,"")}function Gk(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 Wk(D){return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510}function Fk(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 kG0(D){if(!Number.isSafeInteger(D))throw TypeError(`Expected a code point, got \`${typeof D}\`.`)}function Vk(D,{ambiguousAsWide:X=!1}={}){if(kG0(D),Wk(D)||Fk(D)||X&&Gk(D))return 2;return 1}var zk=k1(qk(),1),hG0=new Intl.Segmenter,xG0=/^\p{Default_Ignorable_Code_Point}$/u;function bL(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 hG0.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(xG0.test($))continue;if(zk.default().test($)){Y+=2;continue}Y+=Vk(K,Q)}return Y}function fL({stream:D=process.stdout}={}){return Boolean(D&&D.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}import Uk from"node:process";function gL(){let{env:D}=Uk,{TERM:X,TERM_PROGRAM:Z}=D;if(Uk.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 Y9 from"node:process";var yG0=3;class Bk{#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(Y9.platform==="win32"||!Y9.stdin.isTTY)return;Y9.stdin.setRawMode(!0),Y9.stdin.on("data",this.#J),Y9.stdin.resume()}#Z(){if(!Y9.stdin.isTTY)return;Y9.stdin.off("data",this.#J),Y9.stdin.pause(),Y9.stdin.setRawMode(!1)}#J(D){if(D[0]===yG0)Y9.emit("SIGINT")}}var vG0=new Bk,uL=vG0;var bG0=k1(xL(),1);class Ok{#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:fL({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(!gL())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(bL(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)hL.hide(this.#G);if(this.#Y.discardStdin&&jF.stdin.isTTY)this.#X=!0,uL.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)hL.show(this.#G);if(this.#Y.discardStdin&&jF.stdin.isTTY&&this.#X)uL.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," "),F=Z+J+$+G+`
|
|
262
|
-
`;return this.stop(),this.#G.write(F),this}}function E2(D){return new Ok(D)}var IZ=k1(r8(),1);import Q$ from"path";import{execSync as iV0}from"child_process";var tQ=k1(r8(),1);import XM from"path";var ZM="promake.json";async function T2(D){let X=XM.join(D,ZM);if(await tQ.default.pathExists(X))return tQ.default.readJson(X);return null}async function m9(D,X){let Z=XM.join(D,ZM);await tQ.default.writeJson(Z,X,{spaces:2})}async function JM(D){let X=XM.join(D,ZM);return tQ.default.pathExists(X)}function qD(){return{modulesPath:"src/modules",envFile:".env",modules:{}}}async function fF(D,X,Z){let J=await T2(D)||qD();if(!J.modules)J.modules={};J.modules[X]=Z,await m9(D,J)}async function YM(D,X){let Z=await T2(D);if(Z?.modules&&X in Z.modules)delete Z.modules[X],await m9(D,Z)}function gF(D,X,Z){if(Z==="default")return`${D.modulesPath||"src/modules"}/${X}`;return Z}var zD=k1(r8(),1);import c9 from"path";import{fileURLToPath as eF0}from"url";var DV0=eF0(import.meta.url),eQ=c9.dirname(DV0),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"},Hx=eQ.includes("src"),qx=Hx?c9.join(eQ,"..","..","dist","registry"):c9.join(eQ,"registry"),zx=Hx?c9.join(eQ,"..","..","template"):c9.join(eQ,"..","template");async function E4(D){if(D$.mode==="local"){let J=c9.join(qx,`${D}.json`);if(await zD.default.pathExists(J))return zD.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 Ux(){if(D$.mode==="local"){let Z=c9.join(qx,"index.json");if(await zD.default.pathExists(Z))return zD.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 Bx(D){try{return(await E4(D)).usage||null}catch{return null}}async function XV0(){return zD.default.pathExists(zx)}async function Ox(D){console.log(C.green("Copy Template 1"));let X=await XV0();if(console.log(C.green("Copy Template 2 Local Template: "+X)),X){let Z=zx;console.log(C.green("Copy Template 3 Template Root: "+Z)),console.log(C.green("Copy Template 4 Target Path: "+D))
|
|
262
|
+
`;return this.stop(),this.#G.write(F),this}}function E2(D){return new Ok(D)}var IZ=k1(r8(),1);import Q$ from"path";import{execSync as iV0}from"child_process";var tQ=k1(r8(),1);import XM from"path";var ZM="promake.json";async function T2(D){let X=XM.join(D,ZM);if(await tQ.default.pathExists(X))return tQ.default.readJson(X);return null}async function m9(D,X){let Z=XM.join(D,ZM);await tQ.default.writeJson(Z,X,{spaces:2})}async function JM(D){let X=XM.join(D,ZM);return tQ.default.pathExists(X)}function qD(){return{modulesPath:"src/modules",envFile:".env",modules:{}}}async function fF(D,X,Z){let J=await T2(D)||qD();if(!J.modules)J.modules={};J.modules[X]=Z,await m9(D,J)}async function YM(D,X){let Z=await T2(D);if(Z?.modules&&X in Z.modules)delete Z.modules[X],await m9(D,Z)}function gF(D,X,Z){if(Z==="default")return`${D.modulesPath||"src/modules"}/${X}`;return Z}var zD=k1(r8(),1);import c9 from"path";import{fileURLToPath as eF0}from"url";var DV0=eF0(import.meta.url),eQ=c9.dirname(DV0),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"},Hx=eQ.includes("src"),qx=Hx?c9.join(eQ,"..","..","dist","registry"):c9.join(eQ,"registry"),zx=Hx?c9.join(eQ,"..","..","template"):c9.join(eQ,"..","template");async function E4(D){if(D$.mode==="local"){let J=c9.join(qx,`${D}.json`);if(await zD.default.pathExists(J))return zD.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 Ux(){if(D$.mode==="local"){let Z=c9.join(qx,"index.json");if(await zD.default.pathExists(Z))return zD.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 Bx(D){try{return(await E4(D)).usage||null}catch{return null}}async function XV0(){return zD.default.pathExists(zx)}async function Ox(D){console.log(C.green("Copy Template 1"));let X=await XV0();if(console.log(C.green("Copy Template 2 Local Template: "+X)),X){let Z=zx;console.log(C.green("Copy Template 3 Template Root: "+Z)),console.log(C.green("Copy Template 4 Target Path: "+D));try{await zD.default.copy(Z,D,{overwrite:!0,errorOnExist:!1,filter:(J)=>{try{return!c9.relative(Z,J).includes("node_modules")}catch(Y){throw console.error(C.red("Copy Template 6 Error: "+Y)),Y}}})}catch(J){throw console.error(C.red("Copy Template 5 Error: "+J)),J}console.log(C.green("Copy Template END"));return}if(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 d9=k1(r8(),1);import{execSync as ZV0}from"child_process";import LZ from"path";function X$(D){if(d9.default.existsSync(LZ.join(D,"bun.lockb")))return"bun";if(d9.default.existsSync(LZ.join(D,"pnpm-lock.yaml")))return"pnpm";if(d9.default.existsSync(LZ.join(D,"yarn.lock")))return"yarn";if(d9.default.existsSync(LZ.join(D,"package-lock.json")))return"npm";return"npm"}function JV0(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 QM(D,X,Z=!1){if(X.length===0)return;let J=X$(D),Y=JV0(J,X,Z);ZV0(Y,{cwd:D,stdio:"inherit"})}var YV0=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 Lx(D){let X=LZ.join(D,"package.json"),Z=new Set;if(!await d9.default.pathExists(X))return Z;let J=await d9.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 $M(D,X){return D.filter((Z)=>{let J=Z.split("@")[0]||Z.replace(/^@/,"").split("@")[0],Y=Z.startsWith("@")?"@"+J:J;if(YV0.has(Y))return!1;if(X.has(Y))return!1;return!0})}async function Mx(D,X){let Z=LZ.join(D,"package.json"),J=await d9.default.readJson(Z);J.name=X,await d9.default.writeJson(Z,J,{spaces:2})}var T4=[{name:"ecommerce",description:"E-commerce starter with cart, products, checkout",header:"header-ecommerce",footer:"footer",indexSections:["hero-cta","featured-products","category-section"],modules:["ecommerce-core","product-card","products-page","cart-page","checkout-page","order-confirmation-page","my-orders-page","cart-drawer","favorites-ecommerce-block","login-page-split","register-page-split","forgot-password-page-split","reset-password-page-split","about-page","contact-page-map-split"],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","blog-list-page","about-page","contact-page-split"],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","about-page","contact-page"],theme:{preset:"slate",radius:"medium",shadow:"subtle",font:"raleway"}},{name:"empty",description:"Minimal setup without header, footer, or sections",modules:[],theme:{preset:"zinc"}}];var uF=["api","auth","db","animations"];import HM from"path";import lx from"fs/promises";async function KM(D,X=!1){if(await JM(D)&&!X)return!1;let Z=qD();return await m9(D,Z),!0}var Ax=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 JM(X)&&!D.force){console.log(C.yellow("promake.json already exists.")),console.log(C.dim("Use --force to overwrite."));return}await KM(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 Rx(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 QV0(D,X);if(X.endsWith(".css"))return $V0(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 QV0(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=Ex(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 $V0(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 Ex(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(Nx(Y)&&Nx(Q))Z[J]=Ex(Q,Y)}return Z}function Nx(D){return Boolean(D&&typeof D==="object"&&!Array.isArray(D))}async function Tx(D){await d5.default.remove(D)}async function I4(D){return d5.default.pathExists(D)}async function Ix(D){return d5.default.readFile(D,"utf-8")}var GM={"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"},KV0=["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 jx(D){return KV0.includes(D)}function Cx(D){let X=[],Z=[];for(let J of D)if(jx(J))X.push(J);else Z.push(J);return{shadcn:X,promake:Z}}var cF=k1(r8(),1),yx=k1(xx(),1);import kV0 from"path";async function vx(D,X,Z){let J=kV0.join(D,X),Y="";if(await cF.default.pathExists(J))Y=await cF.default.readFile(J,"utf-8");let Q=yx.default.parse(Y),$=[],K=[];for(let[G,F]of Object.entries(Z))if(!(G in Q))K.push(`${G}="${F}"`),$.push(G);if(K.length>0){let G=Y.trim()?`
|
|
264
264
|
|
|
265
265
|
`:"";Y=Y.trim()+G+K.join(`
|
|
@@ -494,7 +494,7 @@ constants.json (full)`)),console.log(C.dim(JSON.stringify(B.constantsConfig,null
|
|
|
494
494
|
`)),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 br=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 E4(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 r91 from"path";var vK=k1(r8(),1);import{execSync as Px0}from"child_process";import xq from"path";async function rE(D,X=!1){let Z=Date.now(),J=[],Y=xq.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=xq.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 F=$?`${G} check 2>&1`:"npx tsc --noEmit 2>&1";if(!X)console.log(C.dim(` $ ${$?`${G} check`:"tsc --noEmit"}`));let W=Px0(F,{cwd:D,encoding:"utf-8",stdio:"pipe"});if(!X&&W.trim())console.log(C.dim(W));return{name:"TypeScript",status:"pass",severity:"error",duration:Date.now()-Z,items:[],summary:"No type errors"}}catch(F){let W=F.stdout||F.stderr||F.message||"";if(W.includes("This is not the tsc command")||W.includes("typescript"))return{name:"TypeScript",status:"skip",severity:"info",duration:Date.now()-Z,items:[],summary:"TypeScript not installed"};if(!X&&W.trim())console.log(C.dim(W));return J.push(...wx0(W,D)),{name:"TypeScript",status:"fail",severity:"error",duration:Date.now()-Z,items:J,summary:`${J.length} type error(s)`}}}function wx0(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:xq.isAbsolute(G)?xq.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 Sx0}from"child_process";import bK from"path";var _x0=["eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintrc.js",".eslintrc.cjs",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc"];async function kx0(D){for(let Z of _x0)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 sE(D,X=!1,Z=!1){let J=Date.now();if(!await kx0(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 F=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 W=Sx0(F,{cwd:D,encoding:"utf-8",stdio:"pipe",maxBuffer:10485760});if(!Z&&W.trim())console.log(C.dim(W));return{name:"ESLint",status:"pass",severity:"warning",duration:Date.now()-J,items:[],summary:"No linting issues"}}catch(F){let W=F.stdout||F.stderr||F.message||"";if(W.includes("eslint: not found")||W.includes("'eslint' is not recognized"))return{name:"ESLint",status:"skip",severity:"info",duration:Date.now()-J,items:[],summary:"ESLint not installed"};if(!Z&&W.trim())console.log(C.dim(W));let V=hx0(W,D);if(V.length===0&&W.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 hx0(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(`
|
|
495
495
|
`);for(let K of $){let G=K.match(/^([^\s].*\.(ts|tsx|js|jsx))$/);if(G){Q=G[1];continue}let F=K.match(/^\s+(\d+):(\d+)\s+(error|warning)\s+(.+?)\s{2,}(\S+)?$/);if(F&&Q)Z.push({file:bK.isAbsolute(Q)?bK.relative(X,Q):Q,line:parseInt(F[1]),column:parseInt(F[2]),code:F[5]||void 0,message:F[4].trim()})}return Z}var yq=k1(r8(),1);import{execSync as xx0}from"child_process";import fK from"path";async function aE(D){let X=Date.now(),Z=["vite.config.ts","vite.config.js","vite.config.mjs"],J=!1;for(let Y of Z)if(await yq.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{xx0("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 yq.default.pathExists(Y))await yq.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||"",$=yx0(Q,D);return{name:"Build",status:"fail",severity:"error",duration:Date.now()-X,items:$.length>0?$:[{message:"Build failed"}],summary:"Build failed"}}}function yx0(D,X){let Z=[],J=D.split(`
|
|
496
496
|
`),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 F=K.match(G);if(F){if(G.source.includes("Could not resolve"))Z.push({file:fK.relative(X,F[2]),message:`Cannot find module '${F[1]}'`,suggestion:"Check if the module is installed or the path is correct"});else if(F.length===5)Z.push({file:fK.isAbsolute(F[1]||F[2])?fK.relative(X,F[1]||F[2]):F[1]||F[2],line:parseInt(F[2]||F[3]),column:parseInt(F[3]||F[4]),message:F[4]||F[1]});else Z.push({message:F[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 lS=k1(r8(),1);import DF from"path";var y91=[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),v91=["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium"],b91=["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium-browser","/usr/bin/chromium","/snap/bin/chromium"];async function y$0(){let D=await f91();if(!D)return null;try{return{type:"chrome",browser:await(await Promise.resolve().then(() => (x$0(),h$0))).default.launch({executablePath:D,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu"]})}}catch{return null}}async function f91(){if(process.env.CHROME_PATH){if(await lS.default.pathExists(process.env.CHROME_PATH))return process.env.CHROME_PATH}let D;switch(process.platform){case"win32":D=y91;break;case"darwin":D=v91;break;default:D=b91}for(let X of D)if(await lS.default.pathExists(X))return X;return null}async function v$0(D){try{await D.browser.close()}catch{}}async function pS(D,X,Z="/"){let J=Date.now();if(!await g91(D))return{name:"Runtime",status:"skip",severity:"error",duration:Date.now()-J,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 Q=null;try{Q=await y$0()}catch{}if(!Q)return{name:"Runtime",status:"skip",severity:"info",duration:Date.now()-J,items:[{message:"No browser available (Chrome/Chromium/Edge not found)",suggestion:"Set CHROME_PATH environment variable or install Chrome/Edge"}],summary:"Skipped (no browser)"};let $=[],{browser:K,type:G}=Q;try{let W=await K.newPage();W.on("console",(H)=>{let q=H.type();if(q==="error"||q==="warning"){let U=H.location();$.push({type:q==="warning"?"warning":"console",message:H.text(),fileName:U?.url,lineNumber:U?.lineNumber,columnNumber:U?.columnNumber})}}),W.on("pageerror",(H)=>{$.push({type:"error",message:H.message,stack:H.stack})});let V=Z.startsWith("/")?Z:`/${Z}`;await W.goto(`http://localhost:${D}${V}`,{waitUntil:"networkidle0",timeout:X}),await u91(3000);let z=await W.evaluate(()=>{return window.__earlyErrors||[]});$.push(...z)}catch(W){let V=W.message||"Unknown error";if(V.includes("timeout")||V.includes("Timeout"))$.push({type:"error",message:"Page load timeout - app may have crashed or is unresponsive"});else if(V.includes("net::ERR"))$.push({type:"error",message:`Network error: ${V}`});else $.push({type:"error",message:`Runtime check error: ${V}`})}finally{await v$0(Q)}let F=m91($);return{name:`Runtime (${G})`,status:F.length>0?"fail":"pass",severity:"error",duration:Date.now()-J,items:F,summary:F.length>0?`${F.length} runtime error(s)`:"No runtime errors"}}async function g91(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 u91(D){return new Promise((X)=>setTimeout(X,D))}function m91(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(`
|
|
497
|
-
`)}})}function iS(D,X){console.log(""),console.log(C.bold("Health Check")+C.dim(` (${o91(D.duration)})`)),console.log(C.dim("─".repeat(40)));for(let Z of D.checks)c91(Z,X);console.log(C.dim("─".repeat(40))),n91(D)}function c91(D,X){let Z=p91(D.status),J=i91(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 $)d91(G,D.severity);if(K>0)console.log(C.dim(` ... +${K} more (--verbose)`))}function d91(D,X){let Z=X==="error"?C.red:C.yellow,J=l91(D),Y=J?C.cyan(J)+" ":"";console.log(` ${Z("›")} ${Y}${D.message}`)}function l91(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 p91(D){switch(D){case"pass":return C.green("✓");case"fail":return C.red("✗");case"skip":return C.dim("○");default:return C.dim("?")}}function i91(D,X){if(D==="fail")return X==="error"?C.red:C.yellow;if(D==="pass")return C.green;return C.dim}function n91(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 o91(D){if(D<1000)return`${D}ms`;return`${(D/1000).toFixed(1)}s`}var b$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("--fix","Auto-fix ESLint issues where possible").option("--runtime","Run runtime error detection (requires running dev server)").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(),F=[];if(D.typecheck!==!1)F.push(()=>rE(X,$));if(D.lint!==!1)F.push(()=>sE(X,D.fix,$));if(D.build!==!1)F.push(()=>aE(X));if(D.runtime)F.push(()=>pS(Z,J,Y));let W=[];try{if(W=await s91(F,1),G)G.stop()}catch(z){if(G)G.fail("Health check failed");if(!D.json)console.error(C.red(z.message));process.exit(1)}let V={project:r91.basename(X),timestamp:new Date().toISOString(),duration:Date.now()-Q,checks:W,summary:{passed:W.filter((z)=>z.status==="pass").length,failed:W.filter((z)=>z.status==="fail").length,skipped:W.filter((z)=>z.status==="skip").length,errors:W.filter((z)=>z.status==="fail"&&z.severity==="error").reduce((z,H)=>z+H.items.length,0),warnings:W.filter((z)=>z.status==="fail"&&z.severity==="warning").reduce((z,H)=>z+H.items.length,0)}};if(D.json)console.log(JSON.stringify(V,null,2));else iS(V,D.verbose||!1);if(V.summary.errors>0)process.exit(1)});async function s91(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}var f$0={name:"@promakeai/cli",version:"0.3.
|
|
497
|
+
`)}})}function iS(D,X){console.log(""),console.log(C.bold("Health Check")+C.dim(` (${o91(D.duration)})`)),console.log(C.dim("─".repeat(40)));for(let Z of D.checks)c91(Z,X);console.log(C.dim("─".repeat(40))),n91(D)}function c91(D,X){let Z=p91(D.status),J=i91(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 $)d91(G,D.severity);if(K>0)console.log(C.dim(` ... +${K} more (--verbose)`))}function d91(D,X){let Z=X==="error"?C.red:C.yellow,J=l91(D),Y=J?C.cyan(J)+" ":"";console.log(` ${Z("›")} ${Y}${D.message}`)}function l91(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 p91(D){switch(D){case"pass":return C.green("✓");case"fail":return C.red("✗");case"skip":return C.dim("○");default:return C.dim("?")}}function i91(D,X){if(D==="fail")return X==="error"?C.red:C.yellow;if(D==="pass")return C.green;return C.dim}function n91(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 o91(D){if(D<1000)return`${D}ms`;return`${(D/1000).toFixed(1)}s`}var b$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("--fix","Auto-fix ESLint issues where possible").option("--runtime","Run runtime error detection (requires running dev server)").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(),F=[];if(D.typecheck!==!1)F.push(()=>rE(X,$));if(D.lint!==!1)F.push(()=>sE(X,D.fix,$));if(D.build!==!1)F.push(()=>aE(X));if(D.runtime)F.push(()=>pS(Z,J,Y));let W=[];try{if(W=await s91(F,1),G)G.stop()}catch(z){if(G)G.fail("Health check failed");if(!D.json)console.error(C.red(z.message));process.exit(1)}let V={project:r91.basename(X),timestamp:new Date().toISOString(),duration:Date.now()-Q,checks:W,summary:{passed:W.filter((z)=>z.status==="pass").length,failed:W.filter((z)=>z.status==="fail").length,skipped:W.filter((z)=>z.status==="skip").length,errors:W.filter((z)=>z.status==="fail"&&z.severity==="error").reduce((z,H)=>z+H.items.length,0),warnings:W.filter((z)=>z.status==="fail"&&z.severity==="warning").reduce((z,H)=>z+H.items.length,0)}};if(D.json)console.log(JSON.stringify(V,null,2));else iS(V,D.verbose||!1);if(V.summary.errors>0)process.exit(1)});async function s91(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}var f$0={name:"@promakeai/cli",version:"0.3.4",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.2.0",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
|
|
498
498
|
|
|
499
499
|
Quick Start:
|
|
500
500
|
$ promake create my-app
|