@zuzjs/pm 0.0.17 → 0.0.18

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/cli.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var n=new commander.Command;n.option("-s, --namespace <name>","Internal daemon namespace","zuz-pm");n.parseOptions(process.argv);var x=n.opts(),f=x.namespace,c=new chunkJWYNDWX7_cjs.a(f),v=m__default.default.dirname(url.fileURLToPath(chunkD4SST7VW_cjs.a)),$=m__default.default.resolve(v,"../package.json"),P=JSON.parse(w__default.default.readFileSync($,"utf8"));async function k(o,e){if(!await c.isDaemonRunning())return;let a=e?`"${e}"`:"all workers";console.log(s__default.default.cyan("[ZPM]"),s__default.default.gray(`Attaching stream for ${a}...`));let r=h__default.default.createConnection(chunkD4SST7VW_cjs.f(o));r.write(JSON.stringify({cmd:"logs",name:e})+`
4
4
  `),r.on("data",l=>{let p=l.toString().split(`
5
5
  `);for(let i of p)if(i.trim())try{let g=JSON.parse(i);g.ok&&process.stdout.write(g.data);}catch{}}),r.on("error",l=>{console.error(s__default.default.red(`[IPC Error] ${l.message}`));}),process.on("SIGINT",()=>{r.destroy(),console.log(s__default.default.gray(`
6
- Disconnected from logs.`)),process.exit();});}n.name("zpm").description("Production grade process manager for the @zuzjs ecosystem").version(P.version,"-v, --version","output the current version");n.command("start <script>").description("Start a new process").option("-n, --name <name>","Unique name for the process").option("-p, --port <port>","Port the app listens on",parseInt).option("-i, --instances <number>","Number of instances (cluster mode)",parseInt,1).option("-d, --dev","Enable development mode (auto-restart)",false).option("-c, --cluster","Use cluster mode instead of fork",false).option("--ws <url>","WebSocket URL to stream logs (e.g. for ZPanel)","http://127.0.0.1:2082/_/wss/zpm").option("--save-logs","Save logs to a local file",false).option("--args <string>",'Arguments to pass to the script (e.g. "dev -p 3000")').option("--probe-type <type>","Type of probe: http, tcp, or exec").option("--probe-target <target>","URL, host:port, or command").option("--probe-interval <sec>","Seconds between probes",parseInt,30).option("--probe-threshold <count>","Failures before restart",parseInt,3).action(async(o,e)=>{try{await c.ensureDaemon();let t=m__default.default.resolve(process.cwd(),o),a=e.name??m__default.default.basename(o),r=await c.start({name:e.name??m__default.default.basename(o),scriptPath:t,port:e.port,instances:e.instances,devMode:e.dev,mode:e.cluster?"cluster":"fork",args:e.args?e.args.split(" "):[],probe:e.probeTarget?{type:e.probeType,target:e.probeTarget||(e.probeType==="http"?"http://localhost:3000":"localhost:3000"),intervalSeconds:e.probeInterval,failureThreshold:e.probeThreshold,timeoutSeconds:5}:void 0,logs:{wsUrl:e.ws,saveToFile:e.saveLogs}});console.log(s__default.default.cyan("[ZPM]"),r),e.dev?await k(f,a):process.exit(0);}catch(t){console.log(s__default.default.cyan("[ZPM]"),s__default.default.red("[ERROR]"),t.message);}});n.command("logs [name]").description("Stream real-time logs (omit name for all logs)").action(async o=>{try{if(!await c.isDaemonRunning())throw new Error("Daemon is not running.");let t=o?`"${o}"`:"all workers";console.log(s__default.default.cyan("[ZPM]"),`Streaming logs for "${s__default.default.green(t)}" (Ctrl+C to stop)`);let a=h__default.default.createConnection(chunkD4SST7VW_cjs.f(f));a.write(JSON.stringify({cmd:"logs",name:o})+`
6
+ Disconnected from logs.`)),process.exit();});}n.name("zpm").description("Production grade process manager for the @zuzjs ecosystem").version(P.version,"-v, --version","output the current version");n.command("start <script>").description("Start a new process").option("-n, --name <name>","Unique name for the process").option("-p, --port <port>","Port the app listens on",parseInt).option("-i, --instances <number>","Number of instances (cluster mode)",parseInt,1).option("-d, --dev","Enable development mode (auto-restart)",false).option("--reload-cmd <command>","Command to run before restarting in dev mode").option("-c, --cluster","Use cluster mode instead of fork",false).option("--ws <url>","WebSocket URL to stream logs (e.g. for ZPanel)","http://127.0.0.1:2082/_/wss/zpm").option("--save-logs","Save logs to a local file",false).option("--args <string>",'Arguments to pass to the script (e.g. "dev -p 3000")').option("--probe-type <type>","Type of probe: http, tcp, or exec").option("--probe-target <target>","URL, host:port, or command").option("--probe-interval <sec>","Seconds between probes",parseInt,30).option("--probe-threshold <count>","Failures before restart",parseInt,3).action(async(o,e)=>{try{await c.ensureDaemon();let t=m__default.default.resolve(process.cwd(),o),a=e.name??m__default.default.basename(o),r=await c.start({name:e.name??m__default.default.basename(o),scriptPath:t,port:e.port,instances:e.instances,devMode:e.dev,mode:e.cluster?"cluster":"fork",args:e.args?e.args.split(" "):[],reloadCommand:e.reloadCmd,probe:e.probeTarget?{type:e.probeType,target:e.probeTarget||(e.probeType==="http"?"http://localhost:3000":"localhost:3000"),intervalSeconds:e.probeInterval,failureThreshold:e.probeThreshold,timeoutSeconds:5}:void 0,logs:{wsUrl:e.ws,saveToFile:e.saveLogs}});console.log(s__default.default.cyan("[ZPM]"),r),e.dev?await k(f,a):process.exit(0);}catch(t){console.log(s__default.default.cyan("[ZPM]"),s__default.default.red("[ERROR]"),t.message);}});n.command("logs [name]").description("Stream real-time logs (omit name for all logs)").action(async o=>{try{if(!await c.isDaemonRunning())throw new Error("Daemon is not running.");let t=o?`"${o}"`:"all workers";console.log(s__default.default.cyan("[ZPM]"),`Streaming logs for "${s__default.default.green(t)}" (Ctrl+C to stop)`);let a=h__default.default.createConnection(chunkD4SST7VW_cjs.f(f));a.write(JSON.stringify({cmd:"logs",name:o})+`
7
7
  `),a.on("data",r=>{let l=r.toString().split(`
8
8
  `);for(let p of l)if(p.trim())try{let i=JSON.parse(p);i.ok?process.stdout.write(i.data):(console.error(`\x1B[31m${i.error}\x1B[0m`),process.exit(1));}catch{}}),a.on("error",r=>{console.error(`\x1B[31m[IPC Error]\x1B[0m ${r.message}`),process.exit(1);}),process.on("SIGINT",()=>{a.destroy(),console.log(`
9
9
  \x1B[90mDisconnected from logs.\x1B[0m`),process.exit();});}catch(e){console.error(`\x1B[31m[Error]\x1B[0m ${e.message}`);}});n.command("list").description("List all managed processes").action(async()=>{let o=await c.list();if(o.length===0){console.log("No workers registered.");return}console.log("\x1B[1mManaged Processes:\x1B[0m"),o.forEach(e=>console.log(` \u2022 ${e}`));});n.command("stats [name]").description("Show telemetry for processes").action(async o=>{let e=await c.stats(o);if(e.length===0){console.log("No stats available.");return}e.forEach(t=>{let a=t.uptime?`${Math.round(t.uptime/1e3)}s`:"0s",r=t.status==="running"?"\x1B[32m":"\x1B[31m";console.log(`${r}[${t.status.toUpperCase()}]\x1B[0m \x1B[1m${t.name.padEnd(15)}\x1B[0m PID: ${String(t.pid??"N/A").padEnd(6)} CPU: ${String(t.cpu??0).padStart(3)}% MEM: ${Math.round((t.memoryRss??0)/1024/1024)}MB Uptime: ${a}`);});});["stop","restart","delete"].forEach(o=>{n.command(`${o} <name>`).description(`${o.charAt(0).toUpperCase()+o.slice(1)} a process`).action(async e=>{try{let t=await c[o](e);console.log(`\x1B[32m[ZPM]\x1B[0m ${t}`);}catch(t){console.error(`\x1B[31m[Error]\x1B[0m ${t.message}`);}});});n.command("kill-daemon").description("Stop the background ZPM daemon").action(async()=>{await c.killDaemon(),console.log("\x1B[33mDaemon killed.\x1B[0m");});n.command("store").description("Show raw internal store state for debugging").action(async()=>{let o=await c.getStore();if(o.ok){let e=o.data;if(e.length===0){console.log(s__default.default.yellow("Store is empty."));return}console.log(s__default.default.magenta(`
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {a}from'./chunk-C2XMYYVX.js';import {f as f$1}from'./chunk-USJACDTS.js';import {Command}from'commander';import y from'fs';import b from'net';import m from'path';import {fileURLToPath}from'url';import s from'picocolors';var n=new Command;n.option("-s, --namespace <name>","Internal daemon namespace","zuz-pm");n.parseOptions(process.argv);var S=n.opts(),f=S.namespace,c=new a(f),x=m.dirname(fileURLToPath(import.meta.url)),v=m.resolve(x,"../package.json"),$=JSON.parse(y.readFileSync(v,"utf8"));async function P(o,e){if(!await c.isDaemonRunning())return;let a=e?`"${e}"`:"all workers";console.log(s.cyan("[ZPM]"),s.gray(`Attaching stream for ${a}...`));let r=b.createConnection(f$1(o));r.write(JSON.stringify({cmd:"logs",name:e})+`
3
3
  `),r.on("data",l=>{let p=l.toString().split(`
4
4
  `);for(let i of p)if(i.trim())try{let g=JSON.parse(i);g.ok&&process.stdout.write(g.data);}catch{}}),r.on("error",l=>{console.error(s.red(`[IPC Error] ${l.message}`));}),process.on("SIGINT",()=>{r.destroy(),console.log(s.gray(`
5
- Disconnected from logs.`)),process.exit();});}n.name("zpm").description("Production grade process manager for the @zuzjs ecosystem").version($.version,"-v, --version","output the current version");n.command("start <script>").description("Start a new process").option("-n, --name <name>","Unique name for the process").option("-p, --port <port>","Port the app listens on",parseInt).option("-i, --instances <number>","Number of instances (cluster mode)",parseInt,1).option("-d, --dev","Enable development mode (auto-restart)",false).option("-c, --cluster","Use cluster mode instead of fork",false).option("--ws <url>","WebSocket URL to stream logs (e.g. for ZPanel)","http://127.0.0.1:2082/_/wss/zpm").option("--save-logs","Save logs to a local file",false).option("--args <string>",'Arguments to pass to the script (e.g. "dev -p 3000")').option("--probe-type <type>","Type of probe: http, tcp, or exec").option("--probe-target <target>","URL, host:port, or command").option("--probe-interval <sec>","Seconds between probes",parseInt,30).option("--probe-threshold <count>","Failures before restart",parseInt,3).action(async(o,e)=>{try{await c.ensureDaemon();let t=m.resolve(process.cwd(),o),a=e.name??m.basename(o),r=await c.start({name:e.name??m.basename(o),scriptPath:t,port:e.port,instances:e.instances,devMode:e.dev,mode:e.cluster?"cluster":"fork",args:e.args?e.args.split(" "):[],probe:e.probeTarget?{type:e.probeType,target:e.probeTarget||(e.probeType==="http"?"http://localhost:3000":"localhost:3000"),intervalSeconds:e.probeInterval,failureThreshold:e.probeThreshold,timeoutSeconds:5}:void 0,logs:{wsUrl:e.ws,saveToFile:e.saveLogs}});console.log(s.cyan("[ZPM]"),r),e.dev?await P(f,a):process.exit(0);}catch(t){console.log(s.cyan("[ZPM]"),s.red("[ERROR]"),t.message);}});n.command("logs [name]").description("Stream real-time logs (omit name for all logs)").action(async o=>{try{if(!await c.isDaemonRunning())throw new Error("Daemon is not running.");let t=o?`"${o}"`:"all workers";console.log(s.cyan("[ZPM]"),`Streaming logs for "${s.green(t)}" (Ctrl+C to stop)`);let a=b.createConnection(f$1(f));a.write(JSON.stringify({cmd:"logs",name:o})+`
5
+ Disconnected from logs.`)),process.exit();});}n.name("zpm").description("Production grade process manager for the @zuzjs ecosystem").version($.version,"-v, --version","output the current version");n.command("start <script>").description("Start a new process").option("-n, --name <name>","Unique name for the process").option("-p, --port <port>","Port the app listens on",parseInt).option("-i, --instances <number>","Number of instances (cluster mode)",parseInt,1).option("-d, --dev","Enable development mode (auto-restart)",false).option("--reload-cmd <command>","Command to run before restarting in dev mode").option("-c, --cluster","Use cluster mode instead of fork",false).option("--ws <url>","WebSocket URL to stream logs (e.g. for ZPanel)","http://127.0.0.1:2082/_/wss/zpm").option("--save-logs","Save logs to a local file",false).option("--args <string>",'Arguments to pass to the script (e.g. "dev -p 3000")').option("--probe-type <type>","Type of probe: http, tcp, or exec").option("--probe-target <target>","URL, host:port, or command").option("--probe-interval <sec>","Seconds between probes",parseInt,30).option("--probe-threshold <count>","Failures before restart",parseInt,3).action(async(o,e)=>{try{await c.ensureDaemon();let t=m.resolve(process.cwd(),o),a=e.name??m.basename(o),r=await c.start({name:e.name??m.basename(o),scriptPath:t,port:e.port,instances:e.instances,devMode:e.dev,mode:e.cluster?"cluster":"fork",args:e.args?e.args.split(" "):[],reloadCommand:e.reloadCmd,probe:e.probeTarget?{type:e.probeType,target:e.probeTarget||(e.probeType==="http"?"http://localhost:3000":"localhost:3000"),intervalSeconds:e.probeInterval,failureThreshold:e.probeThreshold,timeoutSeconds:5}:void 0,logs:{wsUrl:e.ws,saveToFile:e.saveLogs}});console.log(s.cyan("[ZPM]"),r),e.dev?await P(f,a):process.exit(0);}catch(t){console.log(s.cyan("[ZPM]"),s.red("[ERROR]"),t.message);}});n.command("logs [name]").description("Stream real-time logs (omit name for all logs)").action(async o=>{try{if(!await c.isDaemonRunning())throw new Error("Daemon is not running.");let t=o?`"${o}"`:"all workers";console.log(s.cyan("[ZPM]"),`Streaming logs for "${s.green(t)}" (Ctrl+C to stop)`);let a=b.createConnection(f$1(f));a.write(JSON.stringify({cmd:"logs",name:o})+`
6
6
  `),a.on("data",r=>{let l=r.toString().split(`
7
7
  `);for(let p of l)if(p.trim())try{let i=JSON.parse(p);i.ok?process.stdout.write(i.data):(console.error(`\x1B[31m${i.error}\x1B[0m`),process.exit(1));}catch{}}),a.on("error",r=>{console.error(`\x1B[31m[IPC Error]\x1B[0m ${r.message}`),process.exit(1);}),process.on("SIGINT",()=>{a.destroy(),console.log(`
8
8
  \x1B[90mDisconnected from logs.\x1B[0m`),process.exit();});}catch(e){console.error(`\x1B[31m[Error]\x1B[0m ${e.message}`);}});n.command("list").description("List all managed processes").action(async()=>{let o=await c.list();if(o.length===0){console.log("No workers registered.");return}console.log("\x1B[1mManaged Processes:\x1B[0m"),o.forEach(e=>console.log(` \u2022 ${e}`));});n.command("stats [name]").description("Show telemetry for processes").action(async o=>{let e=await c.stats(o);if(e.length===0){console.log("No stats available.");return}e.forEach(t=>{let a=t.uptime?`${Math.round(t.uptime/1e3)}s`:"0s",r=t.status==="running"?"\x1B[32m":"\x1B[31m";console.log(`${r}[${t.status.toUpperCase()}]\x1B[0m \x1B[1m${t.name.padEnd(15)}\x1B[0m PID: ${String(t.pid??"N/A").padEnd(6)} CPU: ${String(t.cpu??0).padStart(3)}% MEM: ${Math.round((t.memoryRss??0)/1024/1024)}MB Uptime: ${a}`);});});["stop","restart","delete"].forEach(o=>{n.command(`${o} <name>`).description(`${o.charAt(0).toUpperCase()+o.slice(1)} a process`).action(async e=>{try{let t=await c[o](e);console.log(`\x1B[32m[ZPM]\x1B[0m ${t}`);}catch(t){console.error(`\x1B[31m[Error]\x1B[0m ${t.message}`);}});});n.command("kill-daemon").description("Stop the background ZPM daemon").action(async()=>{await c.killDaemon(),console.log("\x1B[33mDaemon killed.\x1B[0m");});n.command("store").description("Show raw internal store state for debugging").action(async()=>{let o=await c.getStore();if(o.ok){let e=o.data;if(e.length===0){console.log(s.yellow("Store is empty."));return}console.log(s.magenta(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuzjs/pm",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "keywords": [
5
5
  "core",
6
6
  "zuz",