@mahameru/cli 0.0.18 → 0.0.19

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/cli.js ADDED
@@ -0,0 +1,648 @@
1
+ #!/usr/bin/env node
2
+ /*!
3
+ * ┌────────────────────────────────────────────┐
4
+ * │ │
5
+ * │ ▲ MahameruJS - CLI │
6
+ * │ Version: 0.0.19 │
7
+ * │ Built: 2026 │
8
+ * │ │
9
+ * │ Copyright (c) Bintan <hello@bintvn.co> │
10
+ * │ Licensed under the ISC License. │
11
+ * │ │
12
+ * └────────────────────────────────────────────┘
13
+ */(()=>{"use strict";var e={545(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{
14
+ default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.build=function({rootPath:e}){return async()=>{
15
+ const t=".mahameru";const o=(0,c.join)(e,t)
16
+ ;console.log(`${n.default.bold(n.default.cyan("▲ Mahameru"))} ${n.default.dim(`CLI v${s.version}`)}\n`);const r=(0,
17
+ i.default)(n.default.cyan(" Checking environment...")).start(),{tscJsPath:h,tscAliasJsPath:g}=(0,
18
+ l.ensureDevEnvironment)();try{r.text=n.default.cyan(" Starting build...\n"),await(0,d.deleteDirIfExists)(o),await(0,
19
+ m.buildConfigJson)(),await(0,f.generateRouteTypes)((0,c.join)(e,"routes"),(0,c.join)(o,"types","routes.d.ts"))
20
+ ;const t="tsconfig.build.json",s=(0,c.join)(e,t),i=(0,c.join)(e,"tsconfig.json"),l=await(0,a.readFile)(i,"utf8")
21
+ ;let y=null;try{y=JSON.parse(l),y.compilerOptions.outDir=".mahameru",y.compilerOptions.rootDir="src",await(0,
22
+ a.writeFile)(s,JSON.stringify(y,null,2))}catch(e){console.error(`Error parsing ${i}: ${e}`),process.exit(1)}
23
+ const v=await(0,u.runNodeScript)(h,["--project",t],e);0!==v&&(r.fail(n.default.red(" Build failed!")),await(0,
24
+ d.deleteDirIfExists)(o),process.exit(v));const P=await(0,u.runNodeScript)(g,["--project",t],e)
25
+ ;0!==P&&(r.fail(n.default.red(" tsc-alias failed.")),await(0,d.deleteDirIfExists)(o),process.exit(P));const w=(0,
26
+ p.findUnresolvedAliases)(o);if(w.length>0){r.fail(n.default.red(" Build produced unresolved path aliases.")),
27
+ console.error(n.default.yellow("Please use tsconfig path aliases such as @/* and avoid package.json imports for app source files."))
28
+ ;for(const e of w)console.error(n.default.red(` - ${e}`));process.exit(1)}await(0,d.deleteDirIfExists)(s),
29
+ r.succeed(n.default.green(" Build success."))}catch(e){r.fail(n.default.red(" Internal error.")),console.error(e),
30
+ process.exit(1)}}}
31
+ ;const s=o(8330),n=r(o(5205)),i=r(o(8720)),a=o(1455),c=o(6760),l=o(242),d=o(5775),u=o(5412),p=o(5242),f=o(5183),m=o(760)
32
+ },7022(e,t,o){t.dev=function({version:e}){return async({host:t,port:o})=>{console.clear();const i=(0,
33
+ r.ensureDevEnvironment)();(0,s.printCliBanner)(e),await(0,n.startWatchedDevServer)({version:e,environment:i,host:t,
34
+ port:o})}};const r=o(242),s=o(1785),n=o(8320)},3674(e,t,o){var r=this&&this.__importDefault||function(e){
35
+ return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.install=void 0
36
+ ;const s=o(1421),n=o(3024),i=r(o(5205)),a=o(6760),c=o(6921),l=o(6718),d=o(6471),u=r(o(8720))
37
+ ;t.install=e=>({host:t,port:o,cert:r,key:p})=>{const f="linux"===process.platform,m="win32"===process.platform;let h=""
38
+ ;try{h=(0,l.getNodeModulesPath)()}catch(e){return void console.error(i.default.red(`❌ ${e.message}`))}const g=(0,
39
+ a.join)(h,"@mahameru","cli");try{
40
+ if(!(0,n.existsSync)(g))throw new Error("Mahameru is not installed on your system.\nPlease install it by running: `npm install -g @mahameru/cli`")
41
+ ;if(f){
42
+ if(process.getuid&&0!==process.getuid())throw new Error("This action requires root privileges. Please run with sudo.")
43
+ ;let c="";try{c=(0,s.execSync)("which mahameru",{stdio:["ignore","pipe","ignore"]}).toString().trim()}catch{
44
+ throw new Error('Executable "mahameru" not found in PATH. Make sure it is installed globally.')}
45
+ !function({serviceName:e,appPath:t,mahameruInstalationPath:o,host:r,port:c,cert:l,key:u}){
46
+ const p=`/etc/systemd/system/${e}.service`;try{
47
+ if((0,n.existsSync)(p))throw new Error(`Service "${e}" is already registered on this system. Please run uninstall command first if you want to update it.`)
48
+ ;(0,n.mkdirSync)((0,a.join)(o,"logs"),{recursive:!0});const f=process.execPath,m=`[Unit]\nDescription=${(0,
49
+ d.toTitleCase)(e)}\nAfter=network.target\n\n[Service]\nType=simple\nUser=root\nWorkingDirectory=${o}\nExecStart=${f} ${t} pm start -d${r?` --host ${r}`:""}${c?` --port ${c}`:""}${l?` --cert ${l}`:""}${u?` --key ${u}`:""}\nRestart=always\nEnvironment=NODE_ENV=production\nStandardOutput=append:${o}/logs/out.log\nStandardError=append:${o}/logs/error.log\n\n[Install]\nWantedBy=multi-user.target\n`
50
+ ;console.log(i.default.cyan(`⏳ Writing service configuration to ${p}...`)),(0,n.writeFileSync)(p,m),
51
+ console.log(i.default.cyan("🔄 Reloading systemd daemon & enabling service...")),(0,
52
+ s.execSync)("systemctl daemon-reload"),(0,s.execSync)(`systemctl enable ${e}`);try{(0,s.execSync)(`systemctl stop ${e}`)
53
+ }catch{}(0,s.execSync)(`systemctl start ${e}`),console.log(i.default.green(`\n🚀 ${(0,
54
+ d.toTitleCase)(e)} successfully registered as a service!`)),
55
+ console.log(`🌍 Mahameru Process Manager running at ${l&&u?"https":"http"}://${r}:${c}`),
56
+ console.log(`📝 To check service status, run: ${i.default.bold("mahameru pm service status")}`)}catch(e){
57
+ console.error(i.default.red("❌ Failed to register service:"),e.message)}}({serviceName:e,appPath:c,
58
+ mahameruInstalationPath:g,host:t,port:o,cert:r,key:p})}else if(m){let l="";try{l=(0,s.execSync)("where mahameru",{
59
+ stdio:["ignore","pipe","ignore"]}).toString().trim(),l.includes("\n")&&(l=l.split(/\r?\n/)[0]),
60
+ async function({serviceName:e,appPath:t,host:o,port:r,cert:l,key:p}){const f=(0,
61
+ u.default)(`Installing ${e} service...`).start();try{t+=".cmd"
62
+ ;const u=(0,a.join)(c.APPDATA_PATH,"winsw",`${e}.exe`),m=(0,a.join)(c.APPDATA_PATH,"winsw",`${e}.xml`);if(!(0,
63
+ n.existsSync)(u)){f.text="Downloading assets..."
64
+ ;const e="https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe",t=await fetch(e,{method:"GET",
65
+ headers:{Accept:"*/*",
66
+ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"
67
+ }});if(!t.ok)throw new Error(`Failed to download WinSW from ${e}. Status code: ${t.status}`)
68
+ ;const o=await t.arrayBuffer();(0,n.writeFileSync)(u,Buffer.from(o)),f.succeed("Downloading WinSW binary... Done")}
69
+ const h=`pm start -d${o?` --host ${o}`:""}${r?` --port ${r}`:""} ${l?` --cert ${l}`:""}${p?` --key ${p}`:""}`,g=`<service>\n <id>mahameru-pm</id>\n <name>${(0,
70
+ d.toTitleCase)(e)}</name>\n <description>${(0,
71
+ d.toTitleCase)(e)}</description>\n <executable>cmd.exe</executable>\n <arguments>/c "${t}" ${h}</arguments>\n <log mode="roll"></log>\n </service>`
72
+ ;(0,
73
+ n.writeFileSync)(m,g,"utf8"),f.text="Registering windows service...",(0,s.execSync)(`"${u}" install && "${u}" start`,{
74
+ cwd:c.APPDATA_PATH}),f.succeed(`\n🚀 ${(0,d.toTitleCase)(e)} successfully registered as a service!`),
75
+ console.log(`🌍 ${(0,d.toTitleCase)(e)} running at ${l&&p?"https":"http"}://${o}:${r}`),
76
+ console.log(`📝 To check service status, run:\n - ${i.default.bold("mahameru pm service status")}`)}catch(e){
77
+ console.error(i.default.red(`❌ Error: ${e.message}`)),
78
+ f.fail("Make sure you are running CMD/PowerShell as an Administrator.")}}({serviceName:e,appPath:l,host:t,port:o,cert:r,
79
+ key:p})}catch{throw new Error('Executable "mahameru" not found in PATH.')}}}catch(e){
80
+ console.error(i.default.red(`❌ Error: ${e.message}`))}}},6478(e,t,o){t.pm=void 0;const r=o(5043)
81
+ ;t.pm=e=>async({host:t,port:o,daemon:s,cert:n,key:i})=>await(0,r.processManager)({host:t,port:o,daemon:s,cert:n,key:i
82
+ },e)},1205(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
83
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.App=void 0;const s=r(o(139)),n=o(8235),i=r(o(5205)),a=o(3024)
84
+ ;t.App=class{initialized=!1;options;worker;appEnv;handleOnExit;constructor(e){if(this.options=e,
85
+ this.appEnv=this.buildAppEnv(),
86
+ !(0,a.existsSync)(this.options.workerPath))throw new Error("Cannot find Mahameru worker.");s.default.setupPrimary({
87
+ exec:this.options.workerPath,cwd:this.options.rootPath,stdio:["inherit","inherit","inherit","ipc"]})}async start(){
88
+ if(this.initialized)throw new Error("App has already been started.");this.worker=s.default.fork(this.appEnv),
89
+ this.initialized=!0,this.setupListeners()}stop(){return new Promise(e=>{
90
+ if(!this.worker||this.worker.isDead()||!this.initialized)return this.initialized=!1,void e()
91
+ ;this.handleOnExit&&this.worker.removeListener("exit",this.handleOnExit);let t=null;this.worker.once("message",o=>{
92
+ "SHUTDOWN_DONE"===o.type&&(t&&clearTimeout(t),this.initialized=!1,this.worker=void 0,e())}),this.worker.send({
93
+ type:"SHUTDOWN"
94
+ }),void 0!==this.options.gracefulShutdownTimeout&&this.options.gracefulShutdownTimeout>0&&(t=setTimeout(()=>{
95
+ this.worker&&!this.worker.isDead()&&(console.warn(i.default.yellow("[Mahameru] Graceful shutdown timed out, killing worker.")),
96
+ this.worker.disconnect(),this.worker.kill(),e())},this.options.gracefulShutdownTimeout))})}async devHRM(e){
97
+ this.worker&&this.worker.send({type:"DEV_HRM",data:{changedFile:e}})}generateTypes(){return new Promise((e,t)=>{
98
+ this.worker?(this.worker.once("message",t=>{"GENERATE_ROUTE_TYPES_DONE"===t.type&&e()}),this.worker.send({
99
+ type:"GENERATE_ROUTE_TYPES"})):t(new Error("Worker is not initialized."))})}setupListeners(){if(!this.worker)return
100
+ ;const e=this.options.onMessage?this.options.onMessage:e=>{switch(e.type){case"READY":(0,n.printServerReady)({
101
+ dev:this.options.dev??!1,mode:this.options.dev?"development":"production",host:e.data?.host??"localhost",
102
+ port:e.data?.port??3e3});break;case"ERROR":
103
+ console.error(i.default.red("\n[Mahameru]"),e.data.message,e.data.stack??"",e.data.code??"");break;case"LOG":
104
+ console.log(e.data)}},t=this.options.onError?this.options.onError:e=>console.error(e)
105
+ ;this.handleOnExit=this.options.onExit?this.options.onExit:e=>{
106
+ console.error(i.default.red(`[Mahameru] Dev server exited with code ${Number(e)}.`)),0!==e&&process.exit(e)},
107
+ this.worker.on("message",e),this.worker.on("error",t),this.worker.on("exit",this.handleOnExit)}buildAppEnv(){return{
108
+ MAHAMERU__ROOT_PATH:this.options.rootPath,...this.options.dev?{MAHAMERU__MODE:"development"}:{
109
+ MAHAMERU__MODE:"production"},...this.options.configFileName?{MAHAMERU__CONFIG_FILE:this.options.configFileName.trim()
110
+ }:{},...this.options.host?{MAHAMERU__HTTP_LISTEN_HOST:this.options.host.trim()}:{},...this.options.port?{
111
+ MAHAMERU__HTTP_LISTEN_PORT:this.options.port.toString().trim()}:{}}}}},760(e,t,o){t.buildConfigJson=async function(){
112
+ const e=(0,
113
+ r.createRequire)(__filename),{mahameruDefaultConfig:t}=e((0,n.join)(process.cwd(),"node_modules","mahameru","dist","mahameru.js")),o=e((0,
114
+ n.join)(process.cwd(),"mahameru.config.ts")).default,i=await o(t),a=JSON.stringify(i),c=(0,
115
+ n.join)(process.cwd(),".mahameru",".mahameru.config.json");return await(0,s.mkdir)((0,n.dirname)(c),{recursive:!0}),
116
+ await(0,s.writeFile)(c,a,"utf-8"),o};const r=o(3339),s=o(1455),n=o(6760)},242(e,t,o){
117
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
118
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.ensureDevEnvironment=function(){const e=process.cwd(),t=(0,
119
+ n.join)(__dirname,"node_modules","tsx","dist","cli.mjs"),o=(0,
120
+ n.join)(__dirname,"node_modules","tsc-alias","dist","bin","index.js"),r=(0,
121
+ n.join)(e,"node_modules","typescript","bin","tsc")
122
+ ;(0,a.isMahameruProjectDir)(e)||(console.error(s.default.red("Current directory is not a Node.js project.")),
123
+ process.exit(1));(0,i.existsSync)(t)||(console.error(s.default.red("Error: Runner 'tsx' is not installed.")),
124
+ console.error(s.default.yellow("Please install it by running: npm install -D tsx")),process.exit(1));(0,
125
+ i.existsSync)(o)||(console.error(s.default.red("Error: tsc-alias not installed.")),
126
+ console.error(s.default.yellow("Please install it by running: npm install -D tsc-alias")),process.exit(1));(0,
127
+ i.existsSync)(r)||(console.error(s.default.red("Error: TypeScript compiler (tsc) is not installed in this project.")),
128
+ console.error(s.default.yellow("Please install it by running: npm install -D typescript")),process.exit(1));return{
129
+ rootPath:e,tsxJsPath:t,tscJsPath:r,tscAliasJsPath:o}};const s=r(o(5205)),n=o(6760),i=o(3024),a=o(4813)},5242(e,t,o){
130
+ t.findUnresolvedAliases=function(e){if(!(0,r.existsSync)(e))return[];const t=[e],o=new Set;for(;t.length>0;){
131
+ const e=t.pop();for(const n of(0,r.readdirSync)(e)){const i=(0,s.join)(e,n);if((0,r.statSync)(i).isDirectory()){
132
+ t.push(i);continue}if(!i.endsWith(".js"))continue;const a=(0,r.readFileSync)(i,"utf8")
133
+ ;(a.includes("'@/")||a.includes('"@/'))&&o.add(i)}}return[...o]};const r=o(3024),s=o(6760)},5183(e,t,o){
134
+ t.generateRouteTypes=async function(e,t){const o=[];await async function e(t,i=""){if(!(0,r.existsSync)(t))return
135
+ ;const a=await(0,s.readdir)(t);for(const r of a){const a=(0,n.join)(t,r);if((await(0,s.stat)(a)).isDirectory()){
136
+ const t=r.startsWith("[")&&r.endsWith("]")?`:${r.slice(1,-1)}`:r;await e(a,`${i}/${t}`)
137
+ }else"route.ts"!==r&&"route.js"!==r||o.push(""===i?"/":i)}}(e)
138
+ ;const i=`// Do not edit this file, it is generated by MahameruJS\n\ntype MahameruGeneratedRoutes = ${o.map(e=>`'${e}'`).join(" | ")||"string"};\n`,a=(0,
139
+ n.join)(process.cwd(),"mahameru.d.ts");await(0,s.mkdir)((0,n.dirname)(t),{recursive:!0}),await(0,
140
+ s.writeFile)(t,i.trim()),
141
+ await(0,s.writeFile)(a,'/// <reference path="./.mahameru/types/routes.d.ts" />\n\n// Do not edit this file, it is generated by MahameruJS\n')
142
+ };const r=o(3024),s=o(1455),n=o(6760)},1785(e,t,o){var r=this&&this.__importDefault||function(e){
143
+ return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.printCliBanner=function(e){
144
+ console.log(`${s.default.bold(s.default.cyan("▲ Mahameru"))} ${s.default.dim(`CLI v${e}`)}\n`)};const s=r(o(5205))},
145
+ 8235(e,t){t.printServerReady=function({mode:e,dev:t,host:o,port:r}){console.log(" Mahameru Server Ready!"),
146
+ console.log(` Mode: ${e}`),console.log(` Local: http://${o}:${r}`),
147
+ console.log(` Host: ${o}`),console.log(` Port: ${r}\n`),
148
+ console.log("Press Ctrl+C to stop the server\n")}},5412(e,t,o){t.runNodeScript=function(e,t,o){
149
+ return new Promise((s,n)=>{const i=(0,r.spawn)(process.execPath,[e,...t],{stdio:"inherit",cwd:o})
150
+ ;i.on("message",e=>console.log(e)),i.on("close",e=>s(e??1)),i.on("error",n)})};const r=o(1421)},8320(e,t,o){
151
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
152
+ ;Object.defineProperty(t,"__esModule",{value:!0
153
+ }),t.startWatchedDevServer=async function({environment:e,host:t,port:o,version:r}){
154
+ let u,M=null,E=!1,j=null,x=!1,T=!0,A=!1,b=0
155
+ ;const D=new Set,O=new Set,R=(0,i.join)(m,"node_modules","mahameru","dist","server.js");(0,
156
+ s.existsSync)(P)||(console.error(`${c.default.red("[Mahameru]")} ${(0,i.relative)(m,P)} does not exist!`),
157
+ process.exit(1));await(0,n.mkdir)(h,{recursive:!0});const k=(0,a.default)({
158
+ text:`${c.default.cyan("[Mahameru]")} Starting TypeScript watch...`,spinner:"triangle"}).start();await(0,
159
+ p.generateRouteTypes)((0,i.join)(m,"routes"),(0,i.join)(h,"types","routes.d.ts"));const C={workerPath:R,
160
+ configFileName:"mahameru.config.ts",dev:!0,host:t,port:o,rootPath:m};u=new d.App(C),
161
+ M=await async function({environment:e,spinner:t,onBuildStart:o,onBuildSuccess:r,onBuildFailure:a}){const l=(0,
162
+ i.resolve)((0,
163
+ i.join)(m,"node_modules","typescript")),{createWatchCompilerHost:d,createWatchProgram:u,formatDiagnosticsWithColorAndContext:p,formatDiagnostic:P,sys:S,createEmitAndSemanticDiagnosticsBuilderProgram:M}=f(l),E={
164
+ getCanonicalFileName:e=>e,getCurrentDirectory:()=>m,getNewLine:()=>S.newLine};let j=!1,x=!1,T=0
165
+ ;const A=new Map,b=new Map;let D,O,R=Promise.resolve();const k=new Promise((e,t)=>{D=e,O=t}),C=d(v,{rootDir:y,outDir:h
166
+ },S,M,e=>{x=!0;const t=e.file?p([e],E):P(e,E);process.stderr.write(t.endsWith("\n")?t:`${t}\n`)},e=>{
167
+ const t=e.messageText.toString().trim();(function(e){
168
+ return e.includes("Starting compilation in watch mode...")||e.includes("File change detected. Starting incremental compilation...")
169
+ })(t)&&(T+=1,A.set(T,Date.now()),b.set(T,{emittedRuntimeFiles:new Set,changedRuntimeSourceFiles:new Set}),x=!1,o()),
170
+ function(e){
171
+ return["Starting compilation in watch mode...","File change detected. Starting incremental compilation...","Found 0 errors. Watching for file changes.","Watching for file changes."].some(t=>e.includes(t))
172
+ }(t)||console.log(`${c.default.yellow("[Mahameru TSC]")} ${t}`)}),N=$((0,i.resolve)((0,i.join)(h,"types"))),I=e=>{
173
+ const t=$((0,i.resolve)(e));return t===N||t.startsWith(`${N}/`)},H=C.watchFile?.bind(C)
174
+ ;H&&(C.watchFile=(e,t,o,r)=>I(e)?{close(){}}:H(e,t,o,r));const F=C.watchDirectory?.bind(C)
175
+ ;F&&(C.watchDirectory=(e,t,o,r)=>I(e)?{close(){}}:F(e,t,o,r));const W=C,J=W.writeFile?.bind(W)??S.writeFile.bind(S)
176
+ ;W.writeFile=(e,t,o,r,s,n)=>{J?.(e,t,o,r,s,n),q(e,s)};const U=C.afterProgramCreate;C.afterProgramCreate=e=>{U?.(e)
177
+ ;const t=0===T?1:T;T=t,R=R.then(()=>B(e,t)).catch(e=>{
178
+ console.error(c.default.red("[Mahameru Dev] Build lifecycle failed.")),console.error(e)})};const L=u(C)
179
+ ;async function B(e,o){const l=A.get(o)??Date.now(),d=b.get(o)??{emittedRuntimeFiles:new Set,
180
+ changedRuntimeSourceFiles:new Set}
181
+ ;if(x)return j||(j=!0,t.fail(`${c.default.red("[Mahameru]")} Initial TypeScript build failed.`),
182
+ O(new Error("Initial TypeScript build failed."))),b.delete(o),A.delete(o),void a();try{if(j)await async function(e){
183
+ if(0===e.length)return;const t=await async function(){if(!w){const e=(0,i.resolve)((0,
184
+ i.join)(__dirname,"node_modules","tsc-alias")),{prepareSingleFileReplaceTscAliasPaths:t}=f(e);w=t({configFile:v,outDir:h
185
+ })}return w}();for(const o of e){if(!(0,s.existsSync)(o))continue;const e=await(0,n.readFile)(o,"utf8"),r=t({
186
+ fileContents:e,filePath:o});r!==e&&await(0,n.writeFile)(o,r)}}([...d.emittedRuntimeFiles]);else{
187
+ await async function(e=3e4){const t=Date.now();for(;Date.now()-t<e;){if((0,s.existsSync)(g))return void await _(200)
188
+ ;await _(100)}throw new Error("Timed out waiting for emitted dev runtime artifacts.")}();const e=(0,i.resolve)((0,
189
+ i.join)(__dirname,"node_modules","tsc-alias")),{replaceTscAliasPaths:t}=f(e);await t({configFile:v,outDir:h})}}catch(e){
190
+ return console.error(c.default.red("[Mahameru Alias] Alias rewrite failed.")),console.error(e),j||(j=!0,
191
+ t.fail(`${c.default.red("[Mahameru]")} Initial alias rewrite failed.`),O(e instanceof Error?e:new Error(String(e)))),
192
+ b.delete(o),A.delete(o),void a()}const u=Date.now()-l;try{await r({durationMs:u,
193
+ emittedRuntimeFiles:[...d.emittedRuntimeFiles],changedRuntimeSourceFiles:[...d.changedRuntimeSourceFiles],
194
+ initialBuild:!j})}catch(e){return console.error(c.default.red("[Mahameru Alias] Alias rewrite failed.")),
195
+ console.error(e),void a()}finally{b.delete(o),A.delete(o)}j||(j=!0,D())}function q(e,t){const o=(0,
196
+ i.resolve)(e),r=$(o),s=b.get(T);if(s&&function(e){const t=`${$((0,i.resolve)(g))}/`
197
+ ;return e.startsWith(t)&&e.endsWith(".js")&&!e.endsWith(".d.ts")&&!e.endsWith(".map")}(r)){s.emittedRuntimeFiles.add(o)
198
+ ;for(const e of function(e){if(!e)return[];const t=`${$((0,i.resolve)(y))}/`;return e.map(e=>(0,
199
+ i.resolve)(e.fileName)).filter(e=>{const o=$(e);return o.startsWith(t)&&o.endsWith(".ts")&&!o.endsWith(".d.ts")})
200
+ }(t))s.changedRuntimeSourceFiles.add(e)}}try{return await k,L}catch(e){throw L.close(),e}}({environment:e,spinner:k,
201
+ onBuildStart:()=>{T=!0},
202
+ onBuildSuccess:({durationMs:e,emittedRuntimeFiles:t,changedRuntimeSourceFiles:o,initialBuild:r})=>{if(b=e,T=!1,!r){
203
+ for(const e of t)D.add(e);for(const e of o)O.add(e)}T||!u?.initialized||E||(x||A||0!==D.size)&&F()},onBuildFailure:()=>{
204
+ T=!1,b=0,A=!1,D.clear(),O.clear(),j&&(clearTimeout(j),j=null)}
205
+ }),k.succeed(`${c.default.green("[Mahameru]")} Initial build completed.\n`),await u.start()
206
+ ;const N=new l.Watchman([h,P]),I=new l.Watchman(y);let H=Promise.resolve();const F=()=>{j&&clearTimeout(j),
207
+ j=setTimeout(()=>{H=H.then(async()=>{if(E||!u)return;if(T)return void F();const e=[...D],t=[...O],o=A,r=x;if(x=!1,A=!1,
208
+ D.clear(),
209
+ O.clear(),j=null,r)return console.log(c.default.yellow("\n [Mahameru] Config file changed. Reloading server...\n")),
210
+ await u.stop(),u=new d.App(C),console.clear(),void await u.start();if(0===e.length&&!o)return
211
+ ;const s=e[e.length-1],n=t[t.length-1]??(s?S(s):(0,i.resolve)(y)),a=Date.now();o?await u.devHRM():await u.devHRM(s)
212
+ ;const l=Date.now()-a,p=b+l;console.log(`${c.default.green("[Mahameru Dev]")} Rebuilt ${(0,
213
+ i.relative)(m,n).replace(/\\/g,"/")} build: ${b}ms runtime: ${l}ms total: ${p}ms`)}).catch(e=>{
214
+ console.error(c.default.red("[Mahameru Dev] Hot reload failed.")),console.error(e)})},250)}
215
+ ;N.on("all",({event:e,filePath:t})=>{const o=function(e){const t=(0,i.resolve)(e),o=$(t),r=$((0,i.resolve)(h)),s=$((0,
216
+ i.resolve)(g)),n=$((0,i.resolve)(P));if(!o.startsWith(`${r}/`)&&o!==n)return null
217
+ ;if(o.endsWith(".d.ts")||o.endsWith(".map")||o.endsWith(".tsbuildinfo"))return null;if(o===n)return"config"
218
+ ;if(!o.endsWith(".js"))return null;if(o.startsWith(`${s}/`))return"runtime";return null}(t)
219
+ ;o&&("runtime"===o&&"delete"!==e&&"rename"!==e||((e,t)=>{"config"===e?x=!0:(D.add(t),O.add(S(t))),T||F()})(o,t))}),
220
+ I.on("all",async({event:e,filePath:t,oldFilePath:o})=>{if("delete"!==e&&"rename"!==e)return;const r="rename"===e&&o?o:t
221
+ ;(function(e){const t=`${$((0,i.resolve)(y))}/`;return $((0,i.resolve)(e)).startsWith(t)})(r)&&(await async function(e){
222
+ const t=(0,i.resolve)(e),o=(0,i.relative)(y,t);if(o.startsWith(".."))return;if(/\.[^\\/]+$/.test(o)){
223
+ const e=function(e){const t=(0,i.relative)(y,e);return(0,i.resolve)(g,t.replace(/\.ts$/i,".js"))}(t)
224
+ ;return void await Promise.all([(0,n.rm)(e,{force:!0}).catch(()=>{}),(0,n.rm)(`${e}.map`,{force:!0}).catch(()=>{}),(0,
225
+ n.rm)(e.replace(/\.js$/i,".d.ts"),{force:!0}).catch(()=>{}),(0,n.rm)(e.replace(/\.js$/i,".d.ts.map"),{force:!0
226
+ }).catch(()=>{})])}await(0,n.rm)((0,i.resolve)(g,o),{recursive:!0,force:!0}).catch(()=>{})}(r),A=!0,O.add((0,
227
+ i.resolve)(r)),T||F())}),await N.start(),await I.start();const W=async(e=0)=>{E||(E=!0,j&&(clearTimeout(j),j=null),
228
+ N.stop(),I.stop(),await u.stop(),M?.close(),process.exit(e))};process.once("SIGINT",()=>{W(0)}),
229
+ process.once("SIGTERM",()=>{W(0)}),await new Promise(()=>{})}
230
+ ;const s=o(3024),n=o(1455),i=o(6760),a=r(o(8720)),c=r(o(5205)),l=o(6469),d=o(1205),u=o(8995),p=o(5183),f=(0,
231
+ u.createRequire)(__filename),m=process.cwd(),h=(0,i.join)(m,".mahameru"),g=h,y=(0,i.join)(m,"src"),v=(0,
232
+ i.join)(m,"tsconfig.json"),P=(0,i.join)(m,"mahameru.config.ts");let w=null;function S(e){const t=(0,i.relative)(g,e)
233
+ ;return(0,i.resolve)(y,t.replace(/\.js$/i,".ts"))}function $(e){return e.replace(/\\/g,"/")}function _(e){
234
+ return new Promise(t=>{setTimeout(t,e)})}},5775(e,t,o){t.deleteDirIfExists=async function(e){return await(0,r.rm)(e,{
235
+ recursive:!0,force:!0})},t.parsePort=function(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}
236
+ ;const r=o(1455),s=o(8161)},6469(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{
237
+ default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Watchman=void 0
238
+ ;const s=o(6261),n=o(9896),i=o(1943),a=r(o(6928)),c=/[*?[\]{}]/;class l extends s.EventEmitter{targets
239
+ ;abortControllers=[];renameBuffer=[];bufferTimeout=null;recentEvents=new Map;constructor(e){super()
240
+ ;const t=Array.isArray(e)?e:[e];this.targets=t.map(e=>this.createTarget(e))}async start(){this.stop()
241
+ ;const e=this.resolveWatchRoots();if(0!==e.length)for(const t of e){const e=new AbortController
242
+ ;this.abortControllers.push(e);const{signal:o}=e;(async()=>{try{const e=(0,i.watch)(t.watchPath,{recursive:t.recursive,
243
+ signal:o});for await(const o of e){const{eventType:e,filename:r}=o;if(!r)continue
244
+ ;const s=a.default.resolve(t.watchPath,r)
245
+ ;this.matchesTarget(s)&&("change"!==e?"rename"===e&&this.handleRenameEvent(r,t.watchPath):this.emitEvent({
246
+ event:"change",filePath:s}))}}catch(e){
247
+ "AbortError"!==e.name&&console.error(`[Watchman] Watch error at ${t.watchPath}:`,e)}})()
248
+ }else console.warn("[Watchman] No files or directories matched the configured watch targets.")}stop(){
249
+ for(const e of this.abortControllers)e.abort();this.abortControllers=[],this.recentEvents.clear(),
250
+ this.bufferTimeout&&(clearTimeout(this.bufferTimeout),this.bufferTimeout=null),this.renameBuffer=[]}createTarget(e){
251
+ const t=this.normalizePath(e),o=a.default.resolve(e);if(c.test(t))return{original:e,normalized:t,absolute:o,kind:"glob"}
252
+ ;return{original:e,normalized:t,absolute:o,kind:(0,n.existsSync)(o)&&(0,n.statSync)(o).isDirectory()?"directory":"file"}
253
+ }resolveWatchRoots(){const e=new Map;for(const t of this.targets){
254
+ const o="glob"===t.kind?this.getGlobBasePath(t.normalized):"directory"===t.kind?t.absolute:a.default.dirname(t.absolute),r=a.default.resolve(o),s="file"!==t.kind,i=`${r}::${s}`
255
+ ;(0,n.existsSync)(r)&&(e.has(i)||e.set(i,{watchPath:r,recursive:s}))}return Array.from(e.values())}matchesTarget(e){
256
+ const t=this.normalizePath(a.default.resolve(e))
257
+ ;return this.targets.some(e=>"directory"===e.kind?t===e.normalized||t.startsWith(`${e.normalized}/`):"file"===e.kind?t===e.normalized:a.default.matchesGlob(t,e.normalized))
258
+ }emitEvent(e){this.shouldDeduplicate(e)||(this.emit(e.event,e),this.emit("all",e))}shouldDeduplicate(e){
259
+ const t=this.normalizePath(a.default.resolve(e.filePath)),o=`${e.event}:${t}:${e.oldFilePath?this.normalizePath(a.default.resolve(e.oldFilePath)):""}`,r=Date.now(),s=this.recentEvents.get(o)
260
+ ;this.recentEvents.set(o,r);for(const[e,t]of this.recentEvents)r-t>80&&this.recentEvents.delete(e)
261
+ ;return"number"==typeof s&&r-s<=80}handleRenameEvent(e,t){this.renameBuffer.push({filename:e,timestamp:Date.now(),
262
+ watcherRoot:t}),this.bufferTimeout&&clearTimeout(this.bufferTimeout),this.bufferTimeout=setTimeout(()=>{
263
+ this.processRenameBuffer(),this.renameBuffer=[]},20)}processRenameBuffer(){const e=this.renameBuffer.map(e=>({...e,
264
+ fullPath:a.default.resolve(e.watcherRoot,e.filename)})).filter(e=>this.matchesTarget(e.fullPath));if(2===e.length){
265
+ const[t,o]=e,r=(0,n.existsSync)(t.fullPath),s=(0,n.existsSync)(o.fullPath);if(!r&&s)return void this.emitEvent({
266
+ event:"rename",oldFilePath:t.fullPath,filePath:o.fullPath});if(r&&!s)return void this.emitEvent({event:"rename",
267
+ oldFilePath:o.fullPath,filePath:t.fullPath})}for(const t of e)(0,n.existsSync)(t.fullPath)?this.emitEvent({
268
+ event:"create",filePath:t.fullPath}):this.emitEvent({event:"delete",filePath:t.fullPath})}getGlobBasePath(e){
269
+ const t=e.split("/"),o=[];for(const e of t){if(c.test(e))break;o.push(e)}
270
+ return 0===o.length?a.default.dirname(e):o.join("/")}normalizePath(e){return e.replace(/\\/g,"/")}}t.Watchman=l},
271
+ 846(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
272
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.startFork=void 0
273
+ ;const s=r(o(9278)),n=r(o(5205)),i=o(4813),a=o(7209),c=r(o(8720)),l=o(4830),d=o(3157),u=o(6921)
274
+ ;t.startFork=({rootPath:e})=>async t=>{const o=(0,d.getWindowsElevatedWorkingDirectory)()??e,r=t.port,p=t.host;(0,
275
+ i.isMahameruProjectDir)(o)||(console.error(n.default.red(`\n${o} is not a Mahameru project directory.`)),
276
+ process.exit(1));const f=await(0,l.getProjectJson)(o),m=(0,c.default)("Checking available port...").start(),h=await(0,
277
+ a.freePortFinder)(r);m.text="Connecting to MahameruJS PM Daemon...";const g=s.default.createConnection({
278
+ path:u.IPC_SOCKET_PATH},()=>{g.write(JSON.stringify({command:"FORK_PROJECT",payload:{name:f.name,
279
+ description:f.description,version:f.version,projectRoot:o,port:h,host:p}}))});g.on("data",e=>{
280
+ const t=JSON.parse(e.toString()),{success:o,message:r,data:s,mpmUrl:i}=t
281
+ ;o?(!function({name:e,version:t,mode:o,host:r,port:s,pid:i,mpmUrl:a}){
282
+ const c=[`${n.default.bold("App:")} ${n.default.cyan(e)}`,`${n.default.bold("Version:")} ${t}`,`${n.default.bold("Mode:")} ${n.default.cyan(o)}`,`${n.default.bold("PID:")} ${i}`,`${n.default.bold("Local:")} ${n.default.cyan(`http://${r}:${s}`)}`]
283
+ ;a&&c.push(`${n.default.bold("PM URL:")} ${n.default.cyan(a)}`),console.log(n.default.green("\n Project Started")),
284
+ c.forEach(e=>console.log(` ${e}`)),
285
+ console.log(`\n${n.default.dim("Use `mahameru status` to inspect this managed project.")}\n`)}({name:f.name,
286
+ version:f.version,mode:"production",host:s.host,port:s.port,pid:s.pid,mpmUrl:i}),
287
+ m.succeed(n.default.green(`\n${r}`))):m.fail(n.default.red(`\n${r}`)),g.end(),process.exit(0)}),g.on("error",e=>{
288
+ "ENOENT"===e.code||"ECONNREFUSED"===e.code?m.fail(n.default.red(`\nMahameru PM Daemon is not running.\nCannot connect to Mahameru PM Daemon. Make sure you run ${n.default.bold("mahameru pm service install")} first.`)):"win32"===process.platform&&"EPERM"===e.code?function(e,t){
289
+ if(!(0,d.hasWindowsElevationRetry)()&&!(0,d.isWindowsProcessElevated)()){
290
+ e.warn(n.default.yellow("\nWindows blocked access to the Mahameru PM pipe. Requesting Administrator approval..."))
291
+ ;const o=(0,d.relaunchCurrentProcessAsAdmin)(t)
292
+ ;o.ok&&(console.log(n.default.cyan("An Administrator PowerShell window has been launched for the elevated retry.")),
293
+ console.log(n.default.dim(`The elevated retry will run from: ${t}`)),
294
+ console.log(n.default.dim("Keep that window open to see whether `mahameru start` succeeds or why it fails.")),
295
+ process.exit(0))
296
+ ;const r="user-cancelled"===o.reason?"UAC request was cancelled.":"Unable to launch an elevated Mahameru process."
297
+ ;e.fail(n.default.red(`\n${r}\nMahameru PM Daemon is likely running with Administrator privileges, so ${n.default.bold("mahameru start")} also needs admin approval to connect.`)),
298
+ o.errorText&&console.error(n.default.dim(o.errorText)),process.exit(1)}
299
+ e.fail(n.default.red(`\nAccess denied while connecting to Mahameru PM Daemon.\nThe daemon or Windows service is likely running elevated, and the elevated retry still could not access ${n.default.bold(u.IPC_SOCKET_PATH)}.`)),
300
+ console.log(n.default.dim("Check the visible Administrator PowerShell window for the detailed failure output.")),
301
+ process.exit(1)}(m,o):(m.fail(n.default.red(`\n${e.message}`)),console.error(e)),process.exit(1)})}},1471(e,t,o){
302
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
303
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.startService=void 0
304
+ ;const s=o(6921),n=o(1421),i=o(3024),a=o(6760),c=r(o(5205));t.startService=e=>()=>{
305
+ const t="linux"===process.platform,o="win32"===process.platform,r=`/etc/systemd/system/${e}.service`;try{if(t){
306
+ if(process.getuid&&0!==process.getuid())throw new Error("This action requires root privileges. Please run with sudo.")
307
+ ;if(!(0,
308
+ i.existsSync)(r))throw new Error(`Service "${e}" is not registered on this system. Please run "mahameru pm service install" first.`)
309
+ ;console.log(c.default.cyan(`🔍 Checking status for service: ${e}...`));let t=!1;try{"active"===(0,
310
+ n.execSync)(`systemctl is-active ${e}`,{stdio:["ignore","pipe","ignore"]}).toString().trim()&&(t=!0)}catch{t=!1}
311
+ t?console.log(c.default.yellow(`⚠️ Service "${e}" is already running.`)):(console.log(c.default.cyan(`🚀 Starting ${e}...`)),
312
+ (0,n.execSync)(`systemctl start ${e}`),console.log(c.default.green(`\n🚀 ${e} has been successfully started.`)),
313
+ console.log(`📝 To check service status, run: ${c.default.bold(`systemctl status ${e}`)}`))
314
+ }else o?function({serviceName:e}){try{console.log(`Attempting to start service: ${c.default.cyan(e)}...`);const t=(0,
315
+ a.join)(s.APPDATA_PATH," winsw",`${e}.exe`);if((0,i.existsSync)(t))return(0,n.execSync)(`"${t}" start`,{
316
+ cwd:s.APPDATA_PATH}),void console.log(c.default.green(`✔ Success: Service "${e}" has been started.`))
317
+ ;console.log(c.default.yellow("WinSW binary not found. Falling back to sc.exe...")),(0,n.execSync)(`sc start "${e}"`),
318
+ console.log(c.default.green(`✔ Success: Service "${e}" has been started via sc.exe.`))}catch(e){
319
+ console.error(c.default.red(`❌ Error: Failed to start service: ${e.message}`)),
320
+ console.error("Make sure you are running CMD/PowerShell as an Administrator and the service is installed.")}}({
321
+ serviceName:e}):console.log(c.default.red("❌ Unsupported platform."))}catch(e){
322
+ console.error(c.default.red("❌ Failed to start service:"),e.message)}}},7695(e,t,o){
323
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
324
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.projectStatus=void 0
325
+ ;const s=r(o(7030)),n=o(4830),i=r(o(8720)),a=r(o(5205)),c=o(3157),l=o(6921)
326
+ ;t.projectStatus=(e,t)=>async({host:o,port:r})=>{try{
327
+ console.log(`${a.default.bold(a.default.cyan("▲ Mahameru"))} ${a.default.dim(`CLI v${t}`)}\n`);const o=(0,
328
+ c.getWindowsElevatedWorkingDirectory)()??e,r=await(0,
329
+ n.getProjectJson)(o),d=(0,i.default)("Checking available port...").start(),u=s.default.createConnection({
330
+ path:l.IPC_SOCKET_PATH},()=>{u.write(JSON.stringify({command:"STATUS",payload:{name:r.name}}))});u.on("data",e=>{
331
+ const{success:t,error:o,data:r}=JSON.parse(e.toString())
332
+ ;t?(d.succeed(a.default.green("\nManaged project status loaded.")),function(e){
333
+ const t=`http://${e.host}:${e.port}`,o="running"===e.status?a.default.green:"stopped"===e.status?a.default.yellow:a.default.red,r=[`${a.default.bold("App:")} ${a.default.cyan(e.name)}`,`${a.default.bold("Version:")} ${e.version}`,`${a.default.bold("Mode:")} ${a.default.cyan(e.mode)}`,`${a.default.bold("Status:")} ${o(e.status)}`,`${a.default.bold("PID:")} ${"number"==typeof e.pid?e.pid:a.default.dim("-")}`,`${a.default.bold("Host:")} ${e.host}`,`${a.default.bold("Port:")} ${e.port}`,`${a.default.bold("Local:")} ${a.default.cyan(t)}`,`${a.default.bold("Root Path:")} ${e.rootPath}`]
334
+ ;console.log(a.default.cyan("\n Project Status")),r.forEach(e=>console.log(` ${e}`)),
335
+ console.log(`\n${a.default.dim(`Created at: ${e.createdAt}`)}\n`)}(r)):d.fail(`${a.default.red("[Mahameru]")} ${o}`),
336
+ process.exit(0)}),u.on("error",e=>{"win32"===process.platform&&"EPERM"===e.code?function(e,t){if(!(0,
337
+ c.hasWindowsElevationRetry)()&&!(0,c.isWindowsProcessElevated)()){
338
+ e.warn(a.default.yellow("\nWindows blocked access to the Mahameru PM pipe. Requesting Administrator approval..."))
339
+ ;const o=(0,c.relaunchCurrentProcessAsAdmin)(t)
340
+ ;o.ok&&(console.log(a.default.cyan("An Administrator PowerShell window has been launched for the elevated retry.")),
341
+ console.log(a.default.dim(`The elevated retry will run from: ${t}`)),
342
+ console.log(a.default.dim("Keep that window open to see the managed project status or why it failed.")),process.exit(0))
343
+ ;const r="user-cancelled"===o.reason?"UAC request was cancelled.":"Unable to launch an elevated Mahameru process."
344
+ ;e.fail(a.default.red(`\n${r}\nMahameru PM Daemon is likely running with Administrator privileges, so ${a.default.bold("mahameru status")} also needs admin approval to connect.`)),
345
+ o.errorText&&console.error(a.default.dim(o.errorText)),process.exit(1)}
346
+ e.fail(a.default.red(`\nAccess denied while connecting to Mahameru PM Daemon.\nThe daemon or Windows service is likely running elevated, and the elevated retry still could not access ${a.default.bold(l.IPC_SOCKET_PATH)}.`)),
347
+ console.log(a.default.dim("Check the visible Administrator PowerShell window for the detailed failure output.")),
348
+ process.exit(1)
349
+ }(d,o):"ENOENT"===e.code||"ECONNREFUSED"===e.code?d.fail(a.default.red("\nMahameru PM Daemon is not running.")):(d.fail(a.default.red(`\n${e.message}`)),
350
+ console.error(e)),process.exit(1)})}catch(e){console.error(e),process.exit(1)}}},7659(e,t,o){
351
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
352
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.status=void 0
353
+ ;const s=o(6921),n=o(6718),i=o(1421),a=o(3024),c=o(6760),l=r(o(5205));function d(e,t){
354
+ console.log(`${l.default.bold(l.default.cyan("▲ Mahameru"))} ${l.default.dim(`Process Manager Status v${t}`)}`),
355
+ console.log("---------------+---------------------------------------------------");for(const[t,o]of Object.entries(e)){
356
+ const e=t.padEnd(14," ");console.log(` ${e} | ${o}`)}
357
+ console.log("---------------+---------------------------------------------------")}t.status=(e,t)=>()=>{
358
+ const o="linux"===process.platform,r="win32"===process.platform,u=`/etc/systemd/system/${e}.service`;let p="";try{p=(0,
359
+ n.getNodeModulesPath)()}catch(e){return void console.error(l.default.red(`❌ ${e.message}`))}const f=(0,
360
+ c.join)(p,"@mahameru","cli");try{if(o){const o={"Service Name":e,Installed:"No",State:"Stopped","Main Process":"N/A",
361
+ "Memory Usage":"N/A","CPU Usage":"N/A"};if(!(0,a.existsSync)(u))return o.Installed=l.default.red("Not Installed"),
362
+ o.State=l.default.red("N/A"),void d(o,t);o.Installed=l.default.green("Yes");try{const t=(0,
363
+ i.execSync)(`systemctl show ${e} --property=ActiveState`,{stdio:["ignore","pipe","ignore"]
364
+ }).toString().trim().split("=")[1],r=(0,i.execSync)(`systemctl show ${e} --property=SubState`,{
365
+ stdio:["ignore","pipe","ignore"]
366
+ }).toString().trim().split("=")[1],s=(0,i.execSync)(`systemctl show ${e} --property=MainPID`,{
367
+ stdio:["ignore","pipe","ignore"]}).toString().trim().split("=")[1];if("active"===t){
368
+ o.State=l.default.green(`${t} (${r})`),o["Main Process"]=s&&"0"!==s?s:"N/A";try{const t=(0,
369
+ i.execSync)(`systemctl show ${e} --property=MemoryCurrent`,{stdio:["ignore","pipe","ignore"]
370
+ }).toString().trim().split("=")[1];if(t&&"[not set]"!==t){const e=(parseInt(t,10)/1024/1024).toFixed(2)
371
+ ;o["Memory Usage"]=`${e} MB`}}catch{}try{const e=(0,i.execSync)(`ps -p ${s} -o %cpu`,{stdio:["ignore","pipe","ignore"]
372
+ }).toString().trim().split("\n")[1];e&&(o["CPU Usage"]=`${e.trim()}%`)}catch{}
373
+ }else o.State="failed"===t?l.default.red(`${t} (${r})`):l.default.yellow(`${t} (${r})`)}catch(e){
374
+ o.State=l.default.red("Unknown (Error reading systemctl)")}d(o,t),function(e){try{const t=(0,
375
+ a.readFileSync)(e,"utf-8").match(/StandardError=append:(.+)/);if(t&&t[1]){const e=t[1].trim();if((0,a.existsSync)(e)){
376
+ console.log(l.default.bold(l.default.yellow(`\n📝 Last 3 lines from error log (${e}):`)));const t=(0,
377
+ a.readFileSync)(e,"utf-8").trim().split("\n").slice(-3)
378
+ ;t.length>0&&""!==t[0]?t.forEach(e=>console.log(` ${l.default.dim(e)}`)):console.log(l.default.dim(" (Log file is empty)")),
379
+ console.log()}}}catch{}}(u)}else r?function({serviceName:e,mahameruInstalationPath:t,version:o}){
380
+ if("win32"===process.platform)try{const r=(0,c.join)(s.APPDATA_PATH,"winsw",`${e}.exe`),n=(0,
381
+ c.join)(s.APPDATA_PATH,"winsw",`${e}.xml`);let d=null,u=null;if((0,a.existsSync)(n))try{const e=(0,
382
+ a.readFileSync)(n,"utf8"),t=e.match(/--host\s+([^\s"<]+)/),o=e.match(/--port\s+([^\s"<]+)/);t&&(d=t[1]),o&&(u=o[1])
383
+ }catch(e){}const p=()=>{d&&console.log(`Host : ${l.default.cyan(d)}`),
384
+ u&&console.log(`Port : ${l.default.cyan(u)}`),
385
+ u&&d&&console.log(`URL : ${l.default.cyan(`http://${d}:${u}`)}`)};if((0,a.existsSync)(r))try{const e=(0,
386
+ i.execSync)(`"${r}" status`,{cwd:t}).toString().trim()
387
+ ;return console.log(`\n${l.default.bold(l.default.cyan("▲ Mahameru"))} ${l.default.dim(`Process Manager Status v${o}`)}\n`),
388
+ void("NonExistent"===e?(console.log(`Installation status : ${l.default.red("Not Installed (NonExistent)")}`),
389
+ console.log(`Service Status : ${l.default.red("-")}`)):(console.log(`Installation status : ${l.default.green("Installed")}`),
390
+ "Started"===e?console.log(`Service Status : ${l.default.green("● Started (Running)")}`):"Stopped"===e?console.log(`Service Status : ${l.default.yellow("○ Stopped")}`):console.log(`Service Status : ${l.default.gray(e)}`),
391
+ p()))}catch(e){}try{const t=(0,i.execSync)(`sc query "${e}"`,{stdio:["pipe","pipe","ignore"]}).toString()
392
+ ;console.log(`\n${l.default.bold(l.default.cyan("▲ Mahameru"))} ${l.default.dim(`Process Manager Status v${o}`)}\n`),
393
+ console.log(`Installation status : ${l.default.green("Installed")}`),
394
+ t.includes("RUNNING")?console.log(`Service Status : ${l.default.green("● Started (Running)")}`):t.includes("STOPPED")?console.log(`Service Status : ${l.default.yellow("○ Stopped")}`):console.log(`Service Status : ${l.default.gray("Unknown")}`),
395
+ p()}catch(e){
396
+ console.log(`\n${l.default.bold(l.default.cyan("▲ Mahameru"))} ${l.default.dim(`Process Manager Status v${o}`)}\n`),
397
+ console.log(`Installation status : ${l.default.red("Not Installed")}`),
398
+ console.log(`Service Status : ${l.default.red("-")}`)}}catch(e){
399
+ console.error(l.default.red(`❌ Error: ${e.message}`)),
400
+ console.error("Make sure you are running CMD/PowerShell as an Administrator.")}}({serviceName:e,
401
+ mahameruInstalationPath:f,version:t}):console.log(l.default.red("❌ Unsupported platform."))}catch(e){
402
+ console.error(l.default.red("❌ Failed to retrieve service status:"),e.message)}}},2074(e,t,o){
403
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
404
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.stopFork=void 0
405
+ ;const s=r(o(7030)),n=o(4830),i=r(o(8720)),a=r(o(5205)),c=o(6921);t.stopFork=(e,t)=>async({host:o,port:r})=>{try{
406
+ console.log(`${a.default.bold(a.default.cyan("▲ Mahameru"))} ${a.default.dim(`CLI v${t}`)}\n`);const o=await(0,
407
+ n.getProjectJson)(e),r=(0,i.default)("Checking available port...").start(),l=s.default.createConnection({
408
+ path:c.IPC_SOCKET_PATH},()=>{l.write(JSON.stringify({command:"STOP",payload:{name:o.name}}))});l.on("data",e=>{
409
+ const{success:t,message:o,data:s}=JSON.parse(e.toString())
410
+ ;t?console.log(s):r.fail(`${a.default.red("[Mahameru]")} ${o}`),process.exit(0)})}catch(e){console.error(e),
411
+ process.exit(1)}}},5019(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
412
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.stopService=void 0
413
+ ;const s=o(6921),n=o(6718),i=o(1421),a=o(3024),c=o(6760),l=r(o(5205));t.stopService=e=>({gracefull:t})=>{
414
+ const o="linux"===process.platform,r="win32"===process.platform,d=`/etc/systemd/system/${e}.service`;let u="";try{u=(0,
415
+ n.getNodeModulesPath)()}catch(e){return void console.error(l.default.red(`❌ ${e.message}`))}const p=(0,
416
+ c.join)(u,"@mahameru","cli");try{if(o){
417
+ if(process.getuid&&0!==process.getuid())throw new Error("This action requires root privileges. Please run with sudo.")
418
+ ;if(!(0,a.existsSync)(d))throw new Error(`Service "${e}" is not registered on this system.`)
419
+ ;console.log(l.default.cyan(`🔍 Checking status for service: ${e}...`));let t=!1;try{"active"===(0,
420
+ i.execSync)(`systemctl is-active ${e}`,{stdio:["ignore","pipe","ignore"]}).toString().trim()&&(t=!0)}catch{t=!1}
421
+ t?(console.log(l.default.yellow(`🛑 Service is active. Stopping ${e}...`)),(0,i.execSync)(`systemctl stop ${e}`),
422
+ console.log(l.default.green(`\n🛑 ${e} has been successfully stopped.`))):console.log(l.default.yellow(`⚠️ Service "${e}" is already stopped.`))
423
+ }else r?function({serviceName:e,mahameruInstalationPath:t}){try{
424
+ console.log(`Attempting to stop service: ${l.default.cyan(e)}...`);const o=(0,c.join)(s.APPDATA_PATH,"winsw",`${e}.exe`)
425
+ ;if((0,a.existsSync)(o))return(0,i.execSync)(`"${o}" stop`,{cwd:t
426
+ }),void console.log(l.default.green(`✔ Success: Service "${e}" has been stopped.`))
427
+ ;console.log(l.default.yellow("WinSW binary not found. Falling back to sc.exe...")),(0,i.execSync)(`sc stop "${e}"`),
428
+ console.log(l.default.green(`✔ Success: Service "${e}" has been stopped via sc.exe.`))}catch(e){
429
+ console.error(l.default.red(`❌ Error: Failed to stop service: ${e.message}`)),
430
+ console.error("Make sure you are running CMD/PowerShell as an Administrator.")}}({serviceName:e,
431
+ mahameruInstalationPath:p}):console.log(l.default.red("❌ Unsupported platform."))}catch(e){
432
+ console.error(l.default.red("❌ Failed to stop service:"),e.message)}}},6571(e,t,o){
433
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
434
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.uninstall=void 0
435
+ ;const s=o(6921),n=o(1421),i=o(3024),a=o(6760),c=r(o(5205));t.uninstall=e=>()=>{
436
+ const t="linux"===process.platform,o="win32"===process.platform,r=`/etc/systemd/system/${e}.service`;try{if(t){
437
+ if(process.getuid&&0!==process.getuid())throw new Error("This action requires root privileges. Please run with sudo.")
438
+ ;if(!(0,i.existsSync)(r))throw new Error(`Service "${e}" was not found or is not registered on this system.`)
439
+ ;console.log(c.default.cyan(`🔍 Checking status for service: ${e}...`));let t=!1;try{"active"===(0,
440
+ n.execSync)(`systemctl is-active ${e}`,{stdio:["ignore","pipe","ignore"]}).toString().trim()&&(t=!0)}catch{t=!1}
441
+ t&&(console.log(c.default.yellow(`🛑 Service is running. Stopping ${e}...`)),(0,n.execSync)(`systemctl stop ${e}`)),
442
+ console.log(c.default.cyan("🔄 Disabling service..."));try{(0,n.execSync)(`systemctl disable ${e}`,{
443
+ stdio:["ignore","pipe","ignore"]})}catch{}console.log(c.default.cyan(`🗑️ Removing service file from ${r}...`)),(0,
444
+ n.execSync)(`rm ${r}`),(0,n.execSync)("systemctl daemon-reload"),(0,n.execSync)("systemctl reset-failed"),
445
+ console.log(c.default.green(`\n🚀 ${e} successfully uninstalled!`))}else if(o){
446
+ console.log("Deleting Windows Service...");const t=(0,a.join)(s.APPDATA_PATH,"winsw",`${e}.exe`);if((0,
447
+ i.existsSync)(t)){try{(0,n.execSync)(`"${t}" stop`,{cwd:s.APPDATA_PATH})}catch(e){}(0,n.execSync)(`"${t}" uninstall`,{
448
+ cwd:s.APPDATA_PATH}),console.log(`Sukses: Service "${e}" berhasil di-uninstall.`),
449
+ console.log(c.default.green("✔ Mahameru Process Manager successfully uninstalled."))}else{
450
+ console.log(c.default.yellow("Cannot found WinSW binary. Fallback to sc delete..."));try{(0,
451
+ n.execSync)(`sc stop "${e}"`)}catch(e){}
452
+ (0,n.execSync)(`sc delete "${e}"`),console.log(c.default.green(`✔ "${e}" successfully uninstalled.`))}
453
+ }else console.log(c.default.red("❌ Unsupported platform."))}catch(e){
454
+ console.error(c.default.red("❌ Uninstallation failed:"),e.message)}}},8625(e,t,o){
455
+ var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
456
+ ;Object.defineProperty(t,"__esModule",{value:!0})
457
+ ;const s=o(6858),n=r(o(5205)),i=o(8330),a=o(7022),c=o(545),l=o(5775),d=o(3674),u=o(6478),p=o(6571),f=o(1471),m=o(5019),h=o(7659),g=o(846),y=o(7695),v=o(2074),P=new s.Command
458
+ ;(async()=>{try{const e=process.cwd(),t="mahameru-pm"
459
+ ;P.name("mahameru").description(`${n.default.bold(n.default.cyan("▲ MahameruJS"))} ${n.default.dim(`CLI v${i.version}`)}`).version(i.version,"-v, --version","Display help for command"),
460
+ P.command("dev").description("Start MahameruJS development server.").option("-p, --port <number>","Port to run the server on",l.parsePort).option("-H, --host <string>","Host to run the server on").action((0,
461
+ a.dev)({version:i.version})),P.command("build").description("Build MahameruJS production application.").action((0,
462
+ c.build)({rootPath:e
463
+ })),P.command("start").description("Start MahameruJS production server.").option("-p, --port <number>","Port to run the server on",l.parsePort,8e3).option("-H, --host <string>","Host to run the server on","127.0.0.1").action((0,
464
+ g.startFork)({rootPath:e})),P.command("stop").description("Stop MahameruJS production server.").action((0,
465
+ v.stopFork)(e,i.version)),P.command("status").description("View MahameruJS production server status.").action((0,
466
+ y.projectStatus)(e,i.version))
467
+ ;const o=P.command("pm").description(`${n.default.bold(n.default.cyan("▲ MahameruJS"))} ${n.default.dim(`Process Manager v${i.version}`)}`)
468
+ ;o.command("start").description("Start MahameruJS Process Manager.").option("-p, --port <number>","Port to run the server on",l.parsePort,8e3).option("-H, --host <string>","Host to run the server on","127.0.0.1").option("--cert <string>","Path to the SSL certificate file").option("--key <string>","Path to the SSL key file").option("-d, --daemon","Run as a daemon",!1).action((0,
469
+ u.pm)(i.version)),
470
+ o.command("status").description("Start MahameruJS Process Manager.").option("-p, --port <number>","Port to run the server on",l.parsePort,8e3).option("-H, --host <string>","Host to run the server on","127.0.0.1").option("-d, --daemon","Run as a daemon",!1).action(()=>{
471
+ console.log(n.default.bold(n.default.cyan(`▲ MahameruJS Process Manager\n\n Not ${n.default.yellow("Not implemented yet.")}`)))
472
+ }),o.on("command:*",e=>{const t=e[0]
473
+ ;["install","uninstall","start","stop"].includes(t)&&(console.log(n.default.yellow(`\n⚠ Did you mean 'mahameru pm service ${t}'?\n`)),
474
+ r.outputHelp(),process.exit(1))})
475
+ ;const r=o.command("service").description(`${n.default.bold(n.default.cyan("▲ MahameruJS"))} ${n.default.dim(`Process Manager Service v${i.version}`)}`)
476
+ ;r.command("install").description("Install MahameruJS Process Manager and register the server as a service. This will make MahameruJS Process Manager boot on system startup.").option("-p, --port <number>","Port to run the server on",l.parsePort,8080).option("-H, --host <string>","Host to run the server on","127.0.0.1").option("--cert <string>","Path to the SSL certificate file").option("--key <string>","Path to the SSL key file").action((0,
477
+ d.install)(t)),
478
+ r.command("uninstall").description("Uninstall MahameruJS Process Manager as a service. This will remove the service from systemd and disable it.").action((0,
479
+ p.uninstall)(t)),r.command("start").description("Start MahameruJS Process Manager service.").action((0,
480
+ f.startService)(t)),
481
+ r.command("stop").description("Stop MahameruJS Process Manager service.").option("-g, --graceful","Gracefully stop the service.",!1).action((0,
482
+ m.stopService)(t)),r.command("status").description("Get MahameruJS Process Manager status.").action((0,
483
+ h.status)(t,i.version)),await P.parseAsync(process.argv)}catch(e){console.error(e),process.exit(1)}})()},6921(e,t,o){
484
+ t.IPC_SOCKET_PATH=t.MQ=t.PROJECTS_FILE_PATH=t.APPDATA_PATH=t.Ds=t.ig=t.vL=t.IS_WINDOWS=void 0;const r=o(6760)
485
+ ;"darwin"===process.platform||"win32"===process.platform||process.platform,t.IS_WINDOWS="win32"===process.platform,
486
+ t.vL="darwin"===process.platform,t.ig="linux"===process.platform,t.Ds="mahameru",t.APPDATA_PATH=(()=>{
487
+ if(t.IS_WINDOWS)return(0,r.join)(process.env.APPDATA,t.Ds)
488
+ ;if(t.vL)return(0,r.join)(process.env.HOME,"Library","Application Support",t.Ds);if(t.ig)return(0,r.join)("/etc",t.Ds)
489
+ ;throw new Error("Unsupported platform")})(),t.PROJECTS_FILE_PATH=(0,r.join)(t.APPDATA_PATH,"projects.json"),
490
+ t.MQ="mpm_ipc",t.IPC_SOCKET_PATH="win32"===process.platform?`\\\\.\\pipe\\${t.MQ}`:`/tmp/${t.MQ}.sock`},5043(e,t,o){
491
+ var r=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o)
492
+ ;var s=Object.getOwnPropertyDescriptor(t,o);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,
493
+ get:function(){return t[o]}}),Object.defineProperty(e,r,s)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]
494
+ }),s=this&&this.__exportStar||function(e,t){
495
+ for(var o in e)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||r(t,e,o)}
496
+ ;Object.defineProperty(t,"__esModule",{value:!0}),s(o(3602),t),s(o(7258),t)},3602(e,t,o){
497
+ var r,s=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o)
498
+ ;var s=Object.getOwnPropertyDescriptor(t,o);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,
499
+ get:function(){return t[o]}}),Object.defineProperty(e,r,s)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]
500
+ }),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,
501
+ value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(r=function(e){
502
+ return r=Object.getOwnPropertyNames||function(e){var t=[]
503
+ ;for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[t.length]=o);return t},r(e)},function(e){
504
+ if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o=r(e),i=0;i<o.length;i++)"default"!==o[i]&&s(t,e,o[i])
505
+ ;return n(t,e),t}),a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
506
+ ;Object.defineProperty(t,"__esModule",{value:!0}),t.processManager=void 0
507
+ ;const c=a(o(5205)),l=o(1421),d=o(6760),u=a(o(7030)),p=o(7067),f=o(4708),m=o(6921),h=o(5043),g=o(6929),y=o(7209),v=i(o(3024)),P=o(4437),w=(0,
508
+ d.join)(__dirname,"mpm"),S={".html":"text/html",".css":"text/css",".js":"text/javascript",".json":"application/json",
509
+ ".png":"image/png",".jpg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".ico":"image/x-icon"}
510
+ ;t.processManager=async({host:e,port:t,daemon:r,cert:s,key:n},i)=>{try{const a=await(0,y.freePortFinder)(t),$=(e,t)=>{
511
+ if(t.setHeader("Access-Control-Allow-Origin","*"),
512
+ t.setHeader("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),
513
+ t.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization"),t.setHeader("X-Powered-By","MahameruJS"),
514
+ "OPTIONS"===e.method)return t.writeHead(204),t.end();if("/api/process"===e.url&&"GET"===e.method){t.writeHead(200,{
515
+ "Content-Type":"application/json"});const e=(0,h.getProjects)().map(g.parseProject);return t.end(JSON.stringify(e))}
516
+ if("GET"===e.method){const o="/"===e.url?"/index.html":e.url;let r=(0,d.join)(w,o)
517
+ ;return r.startsWith(w)?void v.default.access(r,v.default.constants.F_OK,e=>{if(!e){const e=(0,
518
+ d.extname)(r).toLowerCase(),o=S[e]||"application/octet-stream";return t.writeHead(200,{"Content-Type":o}),
519
+ v.default.createReadStream(r).pipe(t)}{const e=(0,d.join)(w,"index.html")
520
+ ;v.default.access(e,v.default.constants.F_OK,o=>o?(t.writeHead(404,{"Content-Type":"text/html"}),
521
+ t.end("<h1>404 - Frontend Build Not Found</h1>")):(t.writeHead(200,{"Content-Type":"text/html"}),
522
+ v.default.createReadStream(e).pipe(t)))}}):(t.writeHead(403,{"Content-Type":"text/plain"}),t.end("Forbidden"))}
523
+ return t.writeHead(404,{"Content-Type":"text/html"}),t.end("<h1>404 Not Found</h1>")
524
+ },_=()=>console.log("[MPM] HTTP server closed."),M=e=>console.log("[MPM] HTTP server error:",e),E=async()=>{
525
+ process.send||r||(console.clear(),
526
+ console.log(`${c.default.bold(c.default.cyan("▲ Mahameru"))} ${c.default.dim(`Process Manager v${i}`)}\n`)),
527
+ console.log(`Server listening on host ${e} and port ${t}.`),
528
+ process.send||r||console.log(` ${c.default.bold(c.default.green("PID"))}: ${process.pid}\n ${c.default.bold(c.default.green("URL"))}: ${j?"https":"http"}://${e}:${t}\n${c.default.bold(c.default.green("API Endpoint"))}: ${j?"https":"http"}://${e}:${t}/api/process\n\n${c.default.dim("Press Ctrl+C to stop the server")}\n`)
529
+ ;const o=await(0,h.loadProjects)();for(const e of o)e.isLastStatusIsRunning&&await U(e)},j=s&&n,x=s&&n?(0,
530
+ f.createServer)({cert:v.default.readFileSync(s),key:v.default.readFileSync(n)
531
+ },$).on("close",_).on("error",M).listen(a,e,E):(0,p.createServer)($).on("close",_).on("error",M).listen(a,e,E)
532
+ ;if(!m.IS_WINDOWS){const e=o(9896);e.existsSync(m.IPC_SOCKET_PATH)&&e.unlinkSync(m.IPC_SOCKET_PATH)}const T=e=>t=>{
533
+ const o=t.toString().trim();console.log(`[${e}] ${o}`)},A=e=>t=>{const o=t.toString().trim()
534
+ ;console.error(`[${e} ERROR] ${o}`)},b=(o,r,s)=>({type:n,data:i})=>{if(o)if("ERROR"===n)o.write(JSON.stringify({
535
+ success:!1,message:i
536
+ }));else if("READY"===n)console.log(`[MPM] Project${r} successfully started by PM Daemon (PID: ${s.pid})`),
537
+ o.write(JSON.stringify({success:!0,message:`Project ${r} successfully started by PM Daemon (PID: ${s.pid})`,data:i,
538
+ mpmUrl:`http://${e}:${t}`}));else if("PROCESS_USAGE"===n){const e=(0,h.getProject)(r);e&&G.emit("process-usage",{data:i,
539
+ project:(0,g.parseProject)(e)})}},D=e=>t=>{console.log(`[MPM] Project ${e} errored: ${t.message}`)},O=e=>({success:!0,
540
+ data:e}),R=e=>({success:!1,error:e}),k=e=>(0,g.parseProject)(e),C=()=>(0,h.getProjects)().map(g.parseProject),N=e=>{
541
+ console.log(`[MPM] ${e}`)},I=()=>{G.emit("projects",C())},H=e=>{
542
+ const t=(0,d.join)(e.rootPath,"node_modules","mahameru","dist","server.js");if(!(0,
543
+ v.existsSync)(t))throw new Error(`Mahameru package is not installed in ${e.rootPath} project. Please install it by running: npm install mahameru`)
544
+ ;return t},F=e=>({MAHAMERU__SEND_PROCESS_USAGE_INTERVAL:"3000",MAHAMERU__ROOT_PATH:e.rootPath,
545
+ MAHAMERU__MODE:"production",...e.host?{MAHAMERU__HTTP_LISTEN_HOST:e.host.trim()}:{},...e.port?{
546
+ MAHAMERU__HTTP_LISTEN_PORT:e.port.toString().trim()}:{}}),W=(e,t,o=null)=>{t.stdout?.on("data",T(e.name)),
547
+ t.stderr?.on("data",A(e.name)),t.on("message",b(o,e.name,t)),t.on("error",D(e.name)),t.once("exit",o=>{e.child===t&&(0,
548
+ h.getProject)(e.name)&&(e.status=0===o||null===o?"stopped":"errored",e.pid=void 0,e.child=void 0,
549
+ G.emit("project-update",k(e)),I())})},J=(e,t)=>new Promise(o=>{const r=s=>{t.includes(s.type)&&(e.off("message",r),o(s))
550
+ };e.on("message",r)}),U=(e,t=null)=>new Promise((o,r)=>{let s=!1;const n=e=>{s||(s=!0,e())};try{const s=H(e),i=(0,
551
+ l.fork)(s,[],{cwd:e.rootPath,env:{...process.env,...F(e)},stdio:["inherit","pipe","pipe","ipc"]});e.status="stopped",
552
+ e.pid=i.pid,e.child=i,(0,h.setProject)(e),W(e,i,t),J(i,["READY","ERROR"]).then(({type:t,data:s})=>{"READY"===t?n(()=>{
553
+ e.status="running",e.pid=i.pid,e.child=i,(0,h.setProject)(e),o(e)}):"ERROR"===t&&n(()=>{e.status="errored",e.pid=void 0,
554
+ e.child=void 0,(0,h.setProject)(e),r(new Error("string"==typeof s?s:`Failed to start project ${e.name}`))})}),
555
+ i.once("error",t=>{n(()=>{e.status="errored",e.pid=void 0,e.child=void 0,(0,h.setProject)(e),r(t)})}),i.once("exit",t=>{
556
+ n(()=>{e.status=0===t||null===t?"stopped":"errored",e.pid=void 0,e.child=void 0,(0,h.setProject)(e),
557
+ r(new Error(`Project ${e.name} exited before ready${"number"==typeof t?` with code ${t}`:""}`))})})}catch(t){n(()=>{
558
+ e.status="errored",e.pid=void 0,e.child=void 0,(0,h.setProject)(e),r(t)})}}),L=e=>new Promise((t,o)=>{
559
+ if(!e.child)return e.status="stopped",e.pid=void 0,(0,h.setProject)(e),void t(e);const r=e.child;let s=!1;const n=e=>{
560
+ s||(s=!0,e())};J(r,["SHUTDOWN_DONE"]).then(({type:o})=>{"SHUTDOWN_DONE"===o&&n(()=>{e.status="stopped",e.pid=void 0,
561
+ e.child=void 0,(0,h.setProject)(e),t(e)})}),r.once("error",t=>{n(()=>{e.status="errored",e.pid=void 0,e.child=void 0,(0,
562
+ h.setProject)(e),o(t)})}),r.once("exit",r=>{n(()=>{e.status=0===r||null===r?"stopped":"errored",e.pid=void 0,
563
+ e.child=void 0,
564
+ (0,h.setProject)(e),0!==r&&null!==r?o(new Error(`Project ${e.name} exited during shutdown with code ${r}`)):t(e)})}),
565
+ r.send({type:"SHUTDOWN"})}),B=async e=>{N(`Delete requested for project "${e}"`);const t=(0,h.getProject)(e)
566
+ ;if(!t)throw N(`Delete aborted. Project "${e}" not found`),new Error("Project not found");const o=k(t)
567
+ ;t.child?(N(`Project "${e}" is running. Stopping before delete`),await L(t)):(t.status="stopped",t.pid=void 0,
568
+ t.child=void 0,(0,h.setProject)(t),N(`Project "${e}" already stopped. Proceeding to delete`));const r=(0,
569
+ h.getProject)(e),s=r?k(r):o;return N(`Deleting project "${e}" from registry`),(0,h.deleteProject)(e),
570
+ N(`Project "${e}" exists after delete: ${(0,h.getProject)(e)?"true":"false"}`),N(`Emitting project-delete for "${e}"`),
571
+ G.emit("project-delete",s),I(),s},q=u.default.createServer(e=>{e.on("data",t=>{try{const o=JSON.parse(t.toString())
572
+ ;if("FORK_PROJECT"===o.command){const t=o.payload,{name:r,description:s,version:n,projectRoot:i,port:a,host:c}=t,l=(0,
573
+ h.getProject)(r);if(l&&"running"===l.status&&void 0!==l.child&&void 0!==l.pid)return void e.write(JSON.stringify({
574
+ status:"error",message:"Project already running"}));console.log(`[MPM] Starting project: ${r} (${i})`);const d={
575
+ pid:void 0,createdAt:l?.createdAt??(new Date).toISOString(),isDisabled:!1,name:r,mode:"production",description:s,
576
+ version:n,rootPath:i,host:c??null,port:a??null,status:"stopped"};(0,h.setProject)(d),U(d,e).then(e=>{
577
+ l?G.emit("project-update",k(e)):G.emit("project-create",k(e)),I()}).catch(t=>{e.write(JSON.stringify({success:!1,
578
+ error:t.message}))})}else if("STOP"===o.command){const t=o.payload,r=(0,h.getProject)(t.name)
579
+ ;if(!r)return void e.write(JSON.stringify({success:!1,error:"Project not found"}));L(r).then(t=>{
580
+ G.emit("project-update",k(t)),I(),e.write(JSON.stringify(O(k(t))))}).catch(t=>{e.write(JSON.stringify(R(t.message)))})
581
+ }else if("START"===o.command);else if("RESTART"===o.command);else if("STATUS"===o.command){const t=o.payload,r=(0,
582
+ h.getProject)(t.name);if(r){const{child:t,...o}=r;e.write(JSON.stringify({success:!0,data:o}))
583
+ }else e.write(JSON.stringify({success:!1,error:"Project not found"}))}}catch(t){e.write(JSON.stringify({success:!1,
584
+ error:t.message}))}})});q.on("close",()=>{console.log("[MPM IPC SERVER] IPC Server closed")}),q.on("error",e=>{
585
+ "EADDRINUSE"===e.code?console.error(`[MPM IPC SERVER] IPC Server already running on ${m.IPC_SOCKET_PATH}`):console.error("[MPM IPC SERVER]",e),
586
+ process.exit(1)}),q.listen(m.IPC_SOCKET_PATH,()=>{
587
+ console.log(`[MPM IPC SERVER] IPC Server listening on ${m.IPC_SOCKET_PATH}`)});const G=new P.Server(x,{cors:{origin:"*"
588
+ },path:"/ws",serveClient:!1});G.on("connection",e=>{(0,h.setSocket)(e);const t=(0,h.getProjects)().map(g.parseProject)
589
+ ;e.emit("projects",t),e.on("getProjects",e=>e({success:!0,data:(0,h.getProjects)().map(g.parseProject)})),
590
+ e.on("start",(e,t)=>{const o=(0,h.getProject)(e)
591
+ ;return o?o.child||"running"===o.status?t(R(`Project ${e} is already running`)):void U(o).then(e=>{
592
+ G.emit("project-update",k(e)),I(),t(O(k(e)))}).catch(e=>{t(R(e.message))}):t(R("Project not found"))}),
593
+ e.on("stop",(e,t)=>{const o=(0,h.getProject)(e);if(!o)return t(R("Project not found"));L(o).then(e=>{
594
+ G.emit("project-update",k(e)),I(),t(O(k(e)))}).catch(e=>{t(R(e.message))})});const o=e=>(t,o)=>{
595
+ N(`Socket event "${e}" received for project "${t}"`),B(t).then(e=>{N(`Invoking delete callback for project "${t}"`),
596
+ o(O(e))}).catch(e=>{N(`Delete failed for project "${t}": ${e.message}`),o(R(e.message))})};e.on("delete",o("delete")),
597
+ e.on("remove",o("remove")),e.on("disconnect",()=>{(0,h.deleteSocket)(e.id)})});const z=async e=>{
598
+ console.log(`[MPM] Received ${e}`),await(0,h.saveProjects)(),(0,h.getSockets)().forEach(e=>e.disconnect()),G.close(),
599
+ q.close(),x.close(e=>{e&&console.log("[MPM]",e),process.exit(0)})};process.on("SIGINT",z),process.on("SIGTERM",z)
600
+ }catch(e){console.log("mpm error",e),process.exit(1)}}},7258(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),
601
+ t.saveProjects=t.loadProjects=t.clearSockets=t.deleteSocket=t.setSocket=t.getSocket=t.getSockets=t.clearProjects=t.deleteProject=t.setProjects=t.setProject=t.getProject=t.getProjects=void 0
602
+ ;const r=o(3024),s=o(6760),n=o(1455),i=o(6921),a=o(6929),c=new Map;t.getProjects=()=>Array.from(c.values())
603
+ ;t.getProject=e=>c.get(e);t.setProject=e=>(c.set(e.name,e),e);t.setProjects=e=>e.forEach(t.setProject)
604
+ ;t.deleteProject=e=>c.delete(e);t.clearProjects=()=>c.clear();const l=new Map;t.getSockets=()=>Array.from(l.values())
605
+ ;t.getSocket=e=>l.get(e);t.setSocket=e=>l.set(e.id,e);t.deleteSocket=e=>l.delete(e);t.clearSockets=()=>l.clear()
606
+ ;t.loadProjects=async()=>{try{if((0,r.existsSync)((0,s.dirname)(i.PROJECTS_FILE_PATH))||await(0,n.mkdir)((0,
607
+ s.dirname)(i.PROJECTS_FILE_PATH),{recursive:!0}),!(0,r.existsSync)(i.PROJECTS_FILE_PATH))return await(0,
608
+ n.writeFile)(i.PROJECTS_FILE_PATH,"[]","utf-8"),[];const e=await(0,n.readFile)(i.PROJECTS_FILE_PATH,"utf-8")
609
+ ;return JSON.parse(e)}catch(e){throw new Error("Failed to load projects")}};t.saveProjects=async()=>{try{const e=(0,
610
+ t.getProjects)().map(e=>({...e,child:void 0,pid:void 0,isLastStatusIsRunning:"running"===e.status
611
+ })).map(a.parseProject),o=JSON.stringify(e);await(0,n.writeFile)(i.PROJECTS_FILE_PATH,o,"utf-8")}catch(e){
612
+ throw new Error("Failed to save projects")}}},7209(e,t,o){var r=this&&this.__importDefault||function(e){
613
+ return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),
614
+ t.freePortFinder=async function(e=3e3){let t=e;const o=e+999;for(;t<o;)try{return await n(t)}catch(e){t++}
615
+ throw new Error(`Port ${e} - 999 is not available`)};const s=r(o(7030));function n(e){return new Promise((t,o)=>{
616
+ const r=s.default.createServer();r.once("error",e=>{e.code,o(e)}),r.once("listening",()=>{r.close(()=>t(e))}),
617
+ r.listen(e,"127.0.0.1")})}},4830(e,t,o){t.getProjectJson=async function(e){try{return JSON.parse(await(0,r.readFile)((0,
618
+ s.join)(e,"package.json"),"utf-8"))}catch(e){throw new Error("package.json not found")}};const r=o(1455),s=o(6760)},
619
+ 6718(e,t,o){t.getNodeModulesPath=function(){try{return(0,r.execSync)("npm root -g",{stdio:["ignore","pipe","ignore"]
620
+ }).toString().trim()}catch(e){throw new Error("npm is not installed or not accessible on your system.")}}
621
+ ;const r=o(1421)},4813(e,t,o){t.isMahameruProjectDir=function(e){const t=(0,s.join)(e,"package.json"),o=(0,
622
+ s.join)(e,"node_modules");if(!(0,r.existsSync)(t)&&(0,r.existsSync)(o))return!1;try{const e=(0,
623
+ r.readFileSync)(t,"utf-8"),o=JSON.parse(e);return!(!o.dependencies||!o.dependencies.mahameru)}catch(e){return!1}}
624
+ ;const r=o(3024),s=o(6760)},6929(e,t){t.parseProject=function(e){return{pid:e.pid,createdAt:e.createdAt,
625
+ isDisabled:e.isDisabled,name:e.name,description:e.description,version:e.version,mode:e.mode,rootPath:e.rootPath,
626
+ port:e.port,host:e.host,status:e.status}}},3157(e,t,o){t.hasWindowsElevationRetry=function(){return"1"===process.env[s]
627
+ },t.getWindowsElevatedWorkingDirectory=function(){return process.env[n]},t.isWindowsProcessElevated=function(){
628
+ if("win32"!==process.platform)return!1
629
+ ;const e=(0,r.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command","([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)"],{
630
+ encoding:"utf8",windowsHide:!0});return 0===e.status&&"true"===e.stdout.trim().toLowerCase()},
631
+ t.relaunchCurrentProcessAsAdmin=function(e){if("win32"!==process.platform)return{ok:!1,reason:"unsupported-platform"}
632
+ ;const t=process.argv[1];if(!t)return{ok:!1,reason:"missing-entrypoint"}
633
+ ;const o=[t,...process.argv.slice(2)],a=`$env:${s}='1'`,c=`$env:${n}='${i(e)}'`,l=[a,c,`Set-Location -LiteralPath '${i(e)}'`,`& '${i(process.execPath)}' ${o.map(e=>`'${i(e)}'`).join(" ")}`,"",'Write-Host ""','Write-Host "Mahameru elevated session finished. Review any output above." -ForegroundColor Cyan','Write-Host "Press Enter to close this Administrator window." -ForegroundColor DarkGray',"Read-Host | Out-Null"].join("; "),d=["$argumentList = "+(p=["-NoProfile","-ExecutionPolicy","Bypass","-NoExit","-Command",l],
634
+ `@(${p.map(e=>`'${i(e)}'`).join(", ")})`),`Start-Process -FilePath 'powershell.exe' -Verb RunAs -WorkingDirectory '${i(e)}' -ArgumentList $argumentList`].join("; "),u=(0,
635
+ r.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",d],{encoding:"utf8",windowsHide:!0});var p
636
+ ;if(0===u.status)return{ok:!0};const f=[u.stdout,u.stderr].filter(Boolean).join("\n").trim();return{ok:!1,
637
+ reason:/cancelled by the user|canceled by the user/i.test(f)?"user-cancelled":"spawn-failed",errorText:f}}
638
+ ;const r=o(1421),s="MAHAMERU_ELEVATED_RETRY",n="MAHAMERU_ELEVATED_CWD";function i(e){return e.replace(/'/g,"''")}},
639
+ 6858(e){e.exports=require("commander")},6261(e){e.exports=require("events")},8720(e){e.exports=require("ora")},5205(e){
640
+ e.exports=require("picocolors")},6471(e){e.exports=require("porterman/string-helper")},4437(e){
641
+ e.exports=require("socket.io")},9896(e){e.exports=require("fs")},1943(e){e.exports=require("fs/promises")},3339(e){
642
+ e.exports=require("module")},9278(e){e.exports=require("net")},1421(e){e.exports=require("node:child_process")},139(e){
643
+ e.exports=require("node:cluster")},3024(e){e.exports=require("node:fs")},1455(e){e.exports=require("node:fs/promises")},
644
+ 7067(e){e.exports=require("node:http")},4708(e){e.exports=require("node:https")},8995(e){
645
+ e.exports=require("node:module")},7030(e){e.exports=require("node:net")},8161(e){e.exports=require("node:os")},6760(e){
646
+ e.exports=require("node:path")},6928(e){e.exports=require("path")},8330(e){e.exports={version:"0.0.19"}}};const t={}
647
+ ;(function o(r){const s=t[r];if(void 0!==s)return s.exports;const n=t[r]={exports:{}}
648
+ ;return e[r].call(n.exports,n,n.exports,o),n.exports})(8625)})();