pm2-orbit 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/server.js +1 -1
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -859,7 +859,7 @@ Bus `);for(let a=1;a<o.length;a++){let l=M$e(o[a]);i.push(l)}}e&&e(i),t(i)}),O$e
859
859
  To: <invalid@invalid>\r
860
860
  Subject: Invalid\r
861
861
  \r
862
- Invalid`)}},FromEmailAddress:"invalid@invalid",Destination:{ToAddresses:["invalid@invalid"]}};return this.getRegion(()=>{let s=new this.ses.SendEmailCommand(n);this.ses.sesClient.send(s).then(()=>r(null)).catch(a=>r(a))}),i}};PQ.exports=Lk});var NQ=S((lXe,hb)=>{"use strict";var x5e=KJ(),LQ=Yi(),v5e=mQ(),b5e=bQ(),w5e=_Q(),_5e=EQ(),S5e=CQ(),E5e=AQ(),T5e=mr(),C5e=$h(),kQ=vn(),R5e=(process.env.ETHEREAL_API||"https://api.nodemailer.com").replace(/\/+$/,""),O5e=(process.env.ETHEREAL_WEB||"https://ethereal.email").replace(/\/+$/,""),IQ=(process.env.ETHEREAL_API_KEY||"").replace(/\s*/g,"")||null,P5e=["true","yes","y","1"].includes((process.env.ETHEREAL_CACHE||"yes").toString().trim().toLowerCase()),Gh=!1;hb.exports.createTransport=function(e,t){let i;if(typeof e=="object"&&typeof e.send!="function"||typeof e=="string"&&/^(smtps?|direct):/i.test(e)){let r=typeof e=="string"?e:e.url;if(r?i=LQ.parseConnectionUrl(r):i=e,i.pool)e=new v5e(i);else if(i.sendmail)e=new w5e(i);else if(i.streamTransport)e=new _5e(i);else if(i.jsonTransport)e=new S5e(i);else if(i.SES){if(i.SES.ses&&i.SES.aws){let n=new Error("Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/");throw n.code=T5e.ECONFIG,n}e=new E5e(i)}else e=new b5e(i)}return new x5e(e,i,t)};hb.exports.createTestAccount=function(e,t){let i;if(!t&&typeof e=="function"&&(t=e,e=!1),t||(i=new Promise((c,u)=>{t=LQ.callbackPromise(c,u)})),P5e&&Gh)return setImmediate(()=>t(null,Gh)),i;e=e||R5e;let r=[],n=0,s={},o={requestor:kQ.name,version:kQ.version};IQ&&(s.Authorization="Bearer "+IQ);let a={contentType:"application/json",method:"POST",headers:s,body:Buffer.from(JSON.stringify(o))};/^https:/i.test(e)&&(a.tls={rejectUnauthorized:!0});let l=C5e(e+"/user",a);return l.on("readable",()=>{let c;for(;(c=l.read())!==null;)r.push(c),n+=c.length}),l.once("error",c=>t(c)),l.once("end",()=>{let c=Buffer.concat(r,n),u;try{u=JSON.parse(c.toString())}catch(p){return t(p)}if(u.status!=="success"||u.error)return t(new Error(u.error||"Request failed"));delete u.status,Gh=u,t(null,Gh)}),i};hb.exports.getTestMessageUrl=function(e){if(!e||!e.response)return!1;let t=new Map,i=e.response.toString();if(i.length>2&&i.charAt(i.length-1)==="]"){let r=i.indexOf("[",i.lastIndexOf("]",i.length-2)+1);r>=0&&r<i.length-2&&i.substring(r+1,i.length-1).replace(/\b([A-Z0-9]+)=([^\s]+)/g,(s,o,a)=>{t.set(o,a)})}return t.has("STATUS")&&t.has("MSGID")?(Gh.web||O5e)+"/message/"+t.get("MSGID"):!1}});var MQ={};Ks(MQ,{isEmailConfigured:()=>I5e,sendEmail:()=>k5e});function A5e(){if(mb)return mb;if(!gb)return null;let e=process.env.SMTP_HOST,t=parseInt(process.env.SMTP_PORT||"587",10),i=process.env.SMTP_USER,r=process.env.SMTP_PASS,n=process.env.SMTP_FROM;return!e||!n?null:(mb=gb.createTransport({host:e,port:t,secure:t===465,auth:i&&r?{user:i,pass:r}:void 0}),mb)}async function k5e(e,t){let i=A5e(),r=process.env.SMTP_TO;if(!i||!r)return!1;try{return await i.sendMail({from:process.env.SMTP_FROM,to:r,subject:`[PM2 Orbit] ${e}`,text:t,html:`<p>${t}</p>`}),!0}catch{return!1}}function I5e(){return!!gb&&!!process.env.SMTP_HOST&&!!process.env.SMTP_FROM&&!!process.env.SMTP_TO}var gb,mb,DQ=yr(()=>{"use strict";gb=null;try{gb=NQ()}catch{}mb=null});var zQ=S((CXe,Mk)=>{"use strict";var M5e=/at\s(?:.*\.)?plugin\s.*\n\s*(.*)/,D5e=/(\w*(\.\w*)*)\..*/;Mk.exports=function(t){if(t.name.length>0)return t.name;let i=Error.stackTraceLimit;Error.stackTraceLimit=10;try{throw new Error("anonymous function")}catch(r){return Error.stackTraceLimit=i,UQ(r.stack)}};function UQ(e){let t=e.match(M5e);return t?t[1].split(/[/\\]/).slice(-1)[0].match(D5e)[1]:"anonymous"}Mk.exports.extractPluginName=UQ});var VQ=S((RXe,HQ)=>{"use strict";HQ.exports=function(t){return t[0]==="@"&&(t=t.slice(1).replace("/","-")),t.replace(/-(.)/g,function(i,r){return r.toUpperCase()})}});var WQ=S((OXe,yb)=>{"use strict";var j5e=zQ(),q5e=VQ(),$5e=0;function Dk(e,t={}){let i=!1;if(e.default!==void 0&&(e=e.default),typeof e!="function")throw new TypeError(`fastify-plugin expects a function, instead got a '${typeof e}'`);if(typeof t=="string"&&(t={fastify:t}),typeof t!="object"||Array.isArray(t)||t===null)throw new TypeError("The options object should be an object");if(t.fastify!==void 0&&typeof t.fastify!="string")throw new TypeError(`fastify-plugin expects a version string, instead got '${typeof t.fastify}'`);t.name||(i=!0,t.name=j5e(e)+"-auto-"+$5e++),e[Symbol.for("skip-override")]=t.encapsulate!==!0,e[Symbol.for("fastify.display-name")]=t.name,e[Symbol.for("plugin-meta")]=t,e.default||(e.default=e);let r=q5e(t.name);return!i&&!e[r]&&(e[r]=e),e}yb.exports=Dk;yb.exports.default=Dk;yb.exports.fastifyPlugin=Dk});var KQ=S((PXe,GQ)=>{function ns(e){if(typeof e!="function")throw new Error("obliterator/iterator: expecting a function!");this.next=e}typeof Symbol<"u"&&(ns.prototype[Symbol.iterator]=function(){return this});ns.of=function(){var e=arguments,t=e.length,i=0;return new ns(function(){return i>=t?{done:!0}:{done:!1,value:e[i++]}})};ns.empty=function(){var e=new ns(function(){return{done:!0}});return e};ns.fromSequence=function(e){var t=0,i=e.length;return new ns(function(){return t>=i?{done:!0}:{done:!1,value:e[t++]}})};ns.is=function(e){return e instanceof ns?!0:typeof e=="object"&&e!==null&&typeof e.next=="function"};GQ.exports=ns});var XQ=S(jk=>{jk.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";jk.SYMBOL_SUPPORT=typeof Symbol<"u"});var qk=S((kXe,JQ)=>{var YQ=XQ(),F5e=YQ.ARRAY_BUFFER_SUPPORT,B5e=YQ.SYMBOL_SUPPORT;JQ.exports=function(t,i){var r,n,s,o,a;if(!t)throw new Error("obliterator/forEach: invalid iterable.");if(typeof i!="function")throw new Error("obliterator/forEach: expecting a callback.");if(Array.isArray(t)||F5e&&ArrayBuffer.isView(t)||typeof t=="string"||t.toString()==="[object Arguments]"){for(s=0,o=t.length;s<o;s++)i(t[s],s);return}if(typeof t.forEach=="function"){t.forEach(i);return}if(B5e&&Symbol.iterator in t&&typeof t.next!="function"&&(t=t[Symbol.iterator]()),typeof t.next=="function"){for(r=t,s=0;a=r.next(),a.done!==!0;)i(a.value,s),s++;return}for(n in t)t.hasOwnProperty(n)&&i(t[n],n)}});var $k=S(ss=>{var U5e=Math.pow(2,8)-1,z5e=Math.pow(2,16)-1,H5e=Math.pow(2,32)-1,V5e=Math.pow(2,7)-1,W5e=Math.pow(2,15)-1,G5e=Math.pow(2,31)-1;ss.getPointerArray=function(e){var t=e-1;if(t<=U5e)return Uint8Array;if(t<=z5e)return Uint16Array;if(t<=H5e)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};ss.getSignedPointerArray=function(e){var t=e-1;return t<=V5e?Int8Array:t<=W5e?Int16Array:t<=G5e?Int32Array:Float64Array};ss.getNumberType=function(e){return e===(e|0)?Math.sign(e)===-1?e<=127&&e>=-128?Int8Array:e<=32767&&e>=-32768?Int16Array:Int32Array:e<=255?Uint8Array:e<=65535?Uint16Array:Uint32Array:Float64Array};var K5e={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};ss.getMinimalRepresentation=function(e,t){var i=null,r=0,n,s,o,a,l;for(a=0,l=e.length;a<l;a++)o=t?t(e[a]):e[a],s=ss.getNumberType(o),n=K5e[s.name],n>r&&(r=n,i=s);return i};ss.isTypedArray=function(e){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView(e)};ss.concat=function(){var e=0,t,i,r;for(t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=new arguments[0].constructor(e);for(t=0,i=0;t<r;t++)n.set(arguments[t],i),i+=arguments[t].length;return n};ss.indices=function(e){for(var t=ss.getPointerArray(e),i=new t(e),r=0;r<e;r++)i[r]=r;return i}});var eZ=S(Kh=>{var QQ=qk(),ZQ=$k();function X5e(e){return Array.isArray(e)||ZQ.isTypedArray(e)}function Fk(e){if(typeof e.length=="number")return e.length;if(typeof e.size=="number")return e.size}function Y5e(e){var t=Fk(e),i=typeof t=="number"?new Array(t):[],r=0;return QQ(e,function(n){i[r++]=n}),i}function J5e(e){var t=Fk(e),i=typeof t=="number"?ZQ.getPointerArray(t):Array,r=typeof t=="number"?new Array(t):[],n=typeof t=="number"?new i(t):[],s=0;return QQ(e,function(o){r[s]=o,n[s]=s++}),[r,n]}Kh.isArrayLike=X5e;Kh.guessLength=Fk;Kh.toArray=Y5e;Kh.toArrayWithIndices=J5e});var iZ=S((NXe,tZ)=>{var Bk=KQ(),Q5e=qk(),Z5e=$k(),eze=eZ();function Qt(e,t,i){if(arguments.length<2&&(i=e,e=null,t=null),this.capacity=i,typeof this.capacity!="number"||this.capacity<=0)throw new Error("mnemonist/lru-cache: capacity should be positive number.");if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw new Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var r=Z5e.getPointerArray(i);this.forward=new r(i),this.backward=new r(i),this.K=typeof e=="function"?new e(i):new Array(i),this.V=typeof t=="function"?new t(i):new Array(i),this.size=0,this.head=0,this.tail=0,this.items={}}Qt.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};Qt.prototype.splayOnTop=function(e){var t=this.head;if(this.head===e)return this;var i=this.backward[e],r=this.forward[e];return this.tail===e?this.tail=i:this.backward[r]=i,this.forward[i]=r,this.backward[t]=e,this.head=e,this.forward[e]=t,this};Qt.prototype.set=function(e,t){var i=this.items[e];if(typeof i<"u"){this.splayOnTop(i),this.V[i]=t;return}this.size<this.capacity?i=this.size++:(i=this.tail,this.tail=this.backward[i],delete this.items[this.K[i]]),this.items[e]=i,this.K[i]=e,this.V[i]=t,this.forward[i]=this.head,this.backward[this.head]=i,this.head=i};Qt.prototype.setpop=function(e,t){var i=null,r=null,n=this.items[e];return typeof n<"u"?(this.splayOnTop(n),i=this.V[n],this.V[n]=t,{evicted:!1,key:e,value:i}):(this.size<this.capacity?n=this.size++:(n=this.tail,this.tail=this.backward[n],i=this.V[n],r=this.K[n],delete this.items[r]),this.items[e]=n,this.K[n]=e,this.V[n]=t,this.forward[n]=this.head,this.backward[this.head]=n,this.head=n,r?{evicted:!0,key:r,value:i}:null)};Qt.prototype.has=function(e){return e in this.items};Qt.prototype.get=function(e){var t=this.items[e];if(!(typeof t>"u"))return this.splayOnTop(t),this.V[t]};Qt.prototype.peek=function(e){var t=this.items[e];if(!(typeof t>"u"))return this.V[t]};Qt.prototype.forEach=function(e,t){t=arguments.length>1?t:this;for(var i=0,r=this.size,n=this.head,s=this.K,o=this.V,a=this.forward;i<r;)e.call(t,o[n],s[n],this),n=a[n],i++};Qt.prototype.keys=function(){var e=0,t=this.size,i=this.head,r=this.K,n=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var s=r[i];return e++,e<t&&(i=n[i]),{done:!1,value:s}})};Qt.prototype.values=function(){var e=0,t=this.size,i=this.head,r=this.V,n=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var s=r[i];return e++,e<t&&(i=n[i]),{done:!1,value:s}})};Qt.prototype.entries=function(){var e=0,t=this.size,i=this.head,r=this.K,n=this.V,s=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var o=r[i],a=n[i];return e++,e<t&&(i=s[i]),{done:!1,value:[o,a]}})};typeof Symbol<"u"&&(Qt.prototype[Symbol.iterator]=Qt.prototype.entries);Qt.prototype.inspect=function(){for(var e=new Map,t=this.entries(),i;i=t.next(),!i.done;)e.set(i.value[0],i.value[1]);return Object.defineProperty(e,"constructor",{value:Qt,enumerable:!1}),e};typeof Symbol<"u"&&(Qt.prototype[Symbol.for("nodejs.util.inspect.custom")]=Qt.prototype.inspect);Qt.from=function(e,t,i,r){if(arguments.length<2){if(r=eze.guessLength(e),typeof r!="number")throw new Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else arguments.length===2&&(r=t,t=null,i=null);var n=new Qt(t,i,r);return Q5e(e,function(s,o){n.set(o,s)}),n};tZ.exports=Qt});var nZ=S((MXe,Xh)=>{"use strict";var tze=iZ(),ize=/^[!#$%&'*+\-.^\w`|~]+$/u;function rze(e){if(ize.test(e)===!1)throw new TypeError("Fieldname contains invalid characters.")}function rZ(e){e=e.trim().toLowerCase();let t=[];if(e.length!==0)if(e.indexOf(",")===-1)t.push(e);else{let i=e.length,r=0,n=0,s;for(r;r<i;++r)s=e[r],s===" "?n=r+1:s===","&&(n!==r&&t.push(e.slice(n,r)),n=r+1);n!==r&&t.push(e.slice(n,r))}return t}function Uk(e){let t=new tze(1e3);return rze(e),function(i){let r=i.getHeader("Vary");if(!r){i.header("Vary",e);return}if(r==="*")return;if(e==="*"){i.header("Vary","*");return}if(Array.isArray(r)&&(r=r.join(", ")),!t.has(r)){let s=rZ(r);s.indexOf("*")!==-1?t.set(r,"*"):s.indexOf(e.toLowerCase())===-1?t.set(r,r+", "+e):t.set(r,null)}let n=t.get(r);n!==null&&i.header("Vary",n)}}Xh.exports.createAddFieldnameToVary=Uk;Xh.exports.addOriginToVaryHeader=Uk("Origin");Xh.exports.addAccessControlRequestHeadersToVaryHeader=Uk("Access-Control-Request-Headers");Xh.exports.parse=rZ});var cZ=S((DXe,vb)=>{"use strict";var nze=WQ(),{addAccessControlRequestHeadersToVaryHeader:sze,addOriginToVaryHeader:oze}=nZ(),Hk={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",hook:"onRequest",preflightContinue:!1,optionsSuccessStatus:204,credentials:!1,exposedHeaders:null,allowedHeaders:null,maxAge:null,preflight:!0,strictPreflight:!0},aze=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend"],zk=["preSerialization","preParsing","onSend"];function aZ(e,t){aze.indexOf(e)===-1&&t(new TypeError("@fastify/cors: Invalid hook option provided."))}function lze(e,t,i){e.decorateRequest("corsPreflightEnabled",!1);let r=!0;if(typeof t=="function")sZ(t,e,{hook:Hk.hook},i);else if(t.delegator){let{delegator:n,...s}=t;sZ(n,e,s,i)}else{t.hideOptionsRoute!==void 0&&(r=t.hideOptionsRoute);let n=xb(t);aZ(n.hook,i),zk.indexOf(n.hook)!==-1?e.addHook(n.hook,function(o,a,l,c){Yh(e,n,o,a,c)}):e.addHook(n.hook,function(o,a,l){Yh(e,n,o,a,l)})}e.options("*",{schema:{hide:r}},(n,s)=>{if(!n.corsPreflightEnabled){s.callNotFound();return}s.send()}),i()}function sZ(e,t,i,r){let n=i?.hook||Hk.hook;aZ(n,r),e.length===2?zk.indexOf(n)!==-1?t.addHook(n,function(o,a,l,c){oZ(e,t,o,a,c)}):t.addHook(n,function(o,a,l){oZ(e,t,o,a,l)}):zk.indexOf(n)!==-1?t.addHook(n,function(o,a,l,c){let u=e(o);if(u&&typeof u.then=="function"){u.then(p=>Yh(t,xb(p,!0),o,a,c)).catch(c);return}c(new Error("Invalid CORS origin option"))}):t.addHook(n,function(o,a,l){let c=e(o);if(c&&typeof c.then=="function"){c.then(u=>Yh(t,xb(u,!0),o,a,l)).catch(l);return}l(new Error("Invalid CORS origin option"))})}function oZ(e,t,i,r,n){e(i,(s,o)=>{s?n(s):Yh(t,xb(o,!0),i,r,n)})}function xb(e,t){let i={...Hk,...e};return Array.isArray(e.origin)&&e.origin.indexOf("*")!==-1&&(i.origin="*"),Number.isInteger(i.cacheControl)?i.cacheControl=`max-age=${i.cacheControl}`:typeof i.cacheControl!="string"&&(i.cacheControl=null),i.dynamic=t||!1,i}function Yh(e,t,i,r,n){(typeof t.origin!="string"&&t.origin!==!1||t.dynamic)&&oze(r),(typeof t.origin=="function"?pze(e,t.origin):(o,a)=>a(null,t.origin))(i,(o,a)=>{if(o!==null)return n(o);if(a===!1||i.routeOptions.config?.cors===!1)return n();if(!a)return n(new Error("Invalid CORS origin option"));if(cze(i,r,a,t),i.raw.method==="OPTIONS"&&t.preflight===!0){if(t.strictPreflight===!0&&(!i.headers.origin||!i.headers["access-control-request-method"])){r.status(400).type("text/plain").send("Invalid Preflight Request");return}if(i.corsPreflightEnabled=!0,uze(i,r,t),!t.preflightContinue){r.code(t.optionsSuccessStatus).header("Content-Length","0").send();return}}return n()})}function cze(e,t,i,r){let n=fze(e.headers.origin,i);n&&t.header("Access-Control-Allow-Origin",n),r.credentials&&t.header("Access-Control-Allow-Credentials","true"),r.exposedHeaders!==null&&t.header("Access-Control-Expose-Headers",Array.isArray(r.exposedHeaders)?r.exposedHeaders.join(", "):r.exposedHeaders)}function uze(e,t,i){if(t.header("Access-Control-Allow-Methods",Array.isArray(i.methods)?i.methods.join(", "):i.methods),i.allowedHeaders===null){sze(t);let r=e.headers["access-control-request-headers"];r!==void 0&&t.header("Access-Control-Allow-Headers",r)}else t.header("Access-Control-Allow-Headers",Array.isArray(i.allowedHeaders)?i.allowedHeaders.join(", "):i.allowedHeaders);i.maxAge!==null&&t.header("Access-Control-Max-Age",String(i.maxAge)),i.cacheControl&&t.header("Cache-Control",i.cacheControl)}function pze(e,t){return function(i,r){let n=t.call(e,i.headers.origin,r);n&&typeof n.then=="function"&&n.then(s=>r(null,s),r)}}function fze(e,t){return typeof t=="string"?t:lZ(e,t)?e:!1}function lZ(e,t){if(Array.isArray(t)){for(let i=0;i<t.length;++i)if(lZ(e,t[i]))return!0;return!1}else return typeof t=="string"?e===t:t instanceof RegExp?(t.lastIndex=0,t.test(e)):!!t}var Vk=nze(lze,{fastify:"5.x",name:"@fastify/cors"});vb.exports=Vk;vb.exports.fastifyCors=Vk;vb.exports.default=Vk});function hZ(){try{if(wn.default.existsSync(Wk))return Buffer.from(wn.default.readFileSync(Wk,"utf-8"),"hex")}catch{}let e=(0,Ll.randomBytes)(32);try{wn.default.existsSync(ap)||wn.default.mkdirSync(ap,{recursive:!0}),wn.default.writeFileSync(Wk,e.toString("hex"),{mode:384})}catch{}return e}function hze(e){if(!e)return"";try{let t=hZ(),i=(0,Ll.randomBytes)(16),r=(0,Ll.createCipheriv)("aes-256-cbc",t,i),n=Buffer.concat([r.update(e,"utf8"),r.final()]);return i.toString("hex")+":"+n.toString("hex")}catch{return e}}function mze(e){if(!e||!e.includes(":"))return e;try{let t=hZ(),[i,r]=e.split(":"),n=Buffer.from(i,"hex"),s=Buffer.from(r,"hex"),o=(0,Ll.createDecipheriv)("aes-256-cbc",t,n);return Buffer.concat([o.update(s),o.final()]).toString("utf8")}catch{return e}}function Kk(){if(op)return op;try{if(wn.default.existsSync(Gk)){let e=wn.default.readFileSync(Gk,"utf-8"),t=JSON.parse(e),i={...fZ,...t};for(let r of dZ)i[r]&&(i[r]=mze(i[r]));return op=i,i}}catch{}return op={...fZ},op}function gze(){op=null}function yze(e){try{wn.default.existsSync(ap)||wn.default.mkdirSync(ap,{recursive:!0});let t={...e};for(let i of dZ)t[i]&&(t[i]=hze(t[i]));wn.default.writeFileSync(Gk,JSON.stringify(t,null,2),{mode:384}),gze()}catch{}}function wb(){return Kk()}function mZ(){let e=Kk();return{...e,authToken:e.authToken?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":"",smtpPass:e.smtpPass?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}}function gZ(e){let i={...Kk()};for(let[r,n]of Object.entries(e))(r==="authToken"||r==="smtpPass")&&(n==="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"||n==="")||(i[r]=n);return yze(i),i}function _b(e){e.authToken&&(process.env.PM2_ORBIT_TOKEN=e.authToken),e.slackWebhookUrl&&(process.env.SLACK_WEBHOOK_URL=e.slackWebhookUrl),e.discordWebhookUrl&&(process.env.DISCORD_WEBHOOK_URL=e.discordWebhookUrl),e.webhookUrl&&(process.env.WEBHOOK_URL=e.webhookUrl),e.smtpHost&&(process.env.SMTP_HOST=e.smtpHost),e.smtpPort&&(process.env.SMTP_PORT=String(e.smtpPort)),e.smtpUser&&(process.env.SMTP_USER=e.smtpUser),e.smtpPass&&(process.env.SMTP_PASS=e.smtpPass),e.smtpFrom&&(process.env.SMTP_FROM=e.smtpFrom),e.smtpTo&&(process.env.SMTP_TO=e.smtpTo),e.theme&&(process.env.PM2_ORBIT_THEME=e.theme);for(let t of Object.keys(e.enabledChannels))process.env[`NOTIFY_${t.toUpperCase()}_ENABLED`]=e.enabledChannels[t]?"1":"0"}var wn,bb,Ll,ap,Gk,Wk,fZ,dZ,op,Xk=yr(()=>{"use strict";wn=dt(require("fs")),bb=dt(require("path")),Ll=require("crypto"),ap=bb.default.join(process.env.HOME||process.env.USERPROFILE||"",".pm2-orbit"),Gk=bb.default.join(ap,"settings.json"),Wk=bb.default.join(ap,".key"),fZ={theme:"dark",port:9823,authToken:"",slackWebhookUrl:"",discordWebhookUrl:"",webhookUrl:"",smtpHost:"",smtpPort:587,smtpUser:"",smtpPass:"",smtpFrom:"",smtpTo:"",enabledChannels:{browser:!0,slack:!0,discord:!0,webhook:!0,email:!0}},dZ=["authToken","smtpPass","slackWebhookUrl","discordWebhookUrl","webhookUrl"];op=null});var yZ=S(($Xe,xze)=>{xze.exports={name:"pm2",preferGlobal:!0,version:"7.0.3",engines:{node:">=18.0.0"},directories:{bin:"./bin",lib:"./lib",example:"./examples"},author:{name:"Strzelewicz Alexandre",email:"alex@edgecraft.io <Pour ce Nouveau Monde>",url:"https://pm2.io"},maintainers:[{name:"Alexandre Strzelewicz",email:"alexandre@pm2.io"}],contributors:["Mathilde Tuffier","Antoine Bluchet","Alex Kocharin","Antoine Bluchet","Subhash Burramsetty","Valentin Marchaud","Valentin Touffet","Florian Hermouet-Joscht","Vincent Vallet","Joni Shkurti","Jun Tjatse","Xu Jingxin","Ben Postlethwaite","Devo.ps","Bret Copeland","John Hurliman","TruongSinh Tran-Nguyen","Michael Hueuberger","Chris Wiggins"],homepage:"http://pm2.keymetrics.io/",description:"Production process manager for Node.JS applications with a built-in load balancer.",main:"index.js",types:"types/index.d.ts",scripts:{"test:unit":"bash test/unit.sh","test:e2e":"bash test/e2e.sh",test:"bash test/unit.sh && bash test/e2e.sh","test:parallel":"bash test/docker-parallel.sh","test:bpm":"mocha 'modules/pm2-io-bpm/test/**/*.spec.js' --exit --timeout 10000","test:axon-rpc":"mocha 'modules/pm2-axon-rpc/test/' --reporter spec --exit","test:axon":"bash modules/pm2-axon/test/run modules/pm2-axon/test/test.*.js","test:io-agent":"mocha 'modules/pm2-io-agent/test/units/*.mocha.js' --reporter spec --exit","test:windows":"bash test/windows.sh"},keywords:["cli","fault tolerant","sysadmin","tools","pm2","logs","log","json","express","hapi","kraken","reload","load balancer","lb","load-balancer","kubernetes","k8s","pm2-docker","runtime","source maps","graceful","microservice","programmatic","harmony","node-pm2","production","keymetrics","node.js monitoring","strong-pm","deploy","deployment","daemon","supervisor","supervisord","nodemon","pm2.io","ghost","ghost production","monitoring","keymetrics","process manager","forever","profiling","probes","apm","container","forever-monitor","keep process alive","process configuration","clustering","cluster cli","cluster","docker","cron","devops","dev ops"],bin:{pm2:"bin/pm2","pm2-dev":"bin/pm2-dev","pm2-docker":"bin/pm2-docker","pm2-runtime":"bin/pm2-runtime"},dependencies:{"@pm2/blessed":"0.1.81","@pm2/js-api":"0.8.1","@pm2/pm2-version-check":"1.0.4",amp:"0.3.1","amp-message":"0.1.2",ansis:"4.0.0-node10",async:"3.2.6",chokidar:"3.6.0","cli-tableau":"2.0.1",commander:"2.15.1",croner:"4.1.97",dayjs:"1.11.15",debug:"4.4.3",eventemitter2:"6.4.9","fast-json-patch":"3.1.1","js-yaml":"4.3.0",pidusage:"4.0.1","pm2-deploy":"1.0.2","proxy-agent":"6.5.0",semver:"7.7.2",tx2:"1.0.5",ws:"8.21.0"},overrides:{debug:"4.4.3"},devDependencies:{express:"^4.21.0",mocha:"^11.7.0",should:"^13.2.3"},bugs:{url:"https://github.com/Unitech/pm2/issues"},repository:{type:"git",url:"git://github.com/Unitech/pm2.git"},license:"AGPL-3.0"}});var xZ=S((FXe,vze)=>{vze.exports={name:"pm2-orbit",version:"1.0.2",files:["dist/","dist-ui/","bin/"],description:"High-performance PM2 monitoring dashboard \u2014 event-driven, 1000+ processes, < 150KB",main:"dist/server.js",bin:{"pm2-orbit":"bin/pm2-orbit.js"},scripts:{"dev:ui":"cd ui && vite","dev:server":"tsx watch src/server.ts",dev:'concurrently -k -n ui,server -c blue,green "npm:dev:ui" "npm:dev:server"',build:"node build.js",start:"node dist/server.js",lint:"tsc --noEmit",typecheck:"tsc --noEmit && cd ui && tsc --noEmit",test:"vitest run","test:watch":"vitest","test:e2e":"vitest --config vitest.e2e.config.ts",prepare:"husky",prepublishOnly:"npm run build",postinstall:`node -e "try{require.resolve('pm2')}catch{console.log('\\n \u2139 Install pm2 for process monitoring: npm install -g pm2\\n')}"`},engines:{node:">=18"},dependencies:{"@fastify/compress":"^7","@fastify/cors":"^10","@fastify/helmet":"^13","@fastify/rate-limit":"^10","@fastify/static":"^9.1.3",fastify:"^5",mri:"^1.2",open:"^10",systeminformation:"^5.31.11",ws:"^8"},optionalDependencies:{"better-sqlite3":"^11",nodemailer:"^9.0.1",pm2:"^7"},devDependencies:{"@tailwindcss/postcss":"^4","@testing-library/react":"^14","@types/node":"^26.0.1","@types/nodemailer":"^8.0.1","@types/ws":"^8.18.1","@vitejs/plugin-react":"^4",autoprefixer:"^10",concurrently:"^8",esbuild:"^0.25",husky:"^9","lint-staged":"^15",postcss:"^8",tailwindcss:"^4",tsx:"^4",typescript:"^5",vite:"^6",vitest:"^3"},keywords:["pm2","monitoring","dashboard","devops","nodejs","react"],license:"MIT"}});var vZ={};Ks(vZ,{registerHealthRoutes:()=>wze});function bze(e,t){switch(e){case"browser":return!0;case"slack":return!!t.slackWebhookUrl;case"discord":return!!t.discordWebhookUrl;case"webhook":return!!t.webhookUrl;case"email":return!!t.smtpHost&&!!t.smtpFrom&&!!t.smtpTo}}async function wze(e,t){e.get("/api/health",async()=>{let i="unknown";try{i=yZ().version}catch{try{i=require("pm2/package.json").version}catch{}}return{status:"ok",uptime:process.uptime(),version:xZ().version,processes:(await t.bridge.list()).length,nodeVersion:process.version,pm2Version:i}}),e.get("/api/ping",async()=>"pong"),e.get("/api/system",async()=>{let{readSystem:i}=await Promise.resolve().then(()=>(Ah(),lA));return i()}),e.get("/api/settings",async()=>mZ()),e.get("/api/channels",async()=>{let i=wb(),r=["browser","slack","discord","webhook","email"],n={};for(let s of r){let o=bze(s,i),a=i.enabledChannels[s]!==!1;n[s]={configured:o,enabled:a}}return n}),e.put("/api/settings",async(i,r)=>{let n=i.body;if(!n||typeof n!="object")return r.code(400).send({error:"Invalid request body"});let s=["theme","authToken","slackWebhookUrl","discordWebhookUrl","webhookUrl","smtpHost","smtpPort","smtpUser","smtpPass","smtpFrom","smtpTo","enabledChannels"],o={};for(let l of s)l in n&&(o[l]=n[l]);let a=gZ(o);return _b(a),{success:!0,settings:a}})}var bZ=yr(()=>{"use strict";Xk()});function wZ(e){return e.replace(/\.\.(\/|\\)/g,"").replace(/[/\\]/g,"_").replace(/\0/g,"").replace(/\s+/g,"_").replace(/^_+|_+$/g,"").substring(0,128)}function da(e){if(!e||typeof e!="string")return null;let t=parseInt(e,10);return isNaN(t)||t<0||!Number.isSafeInteger(t)?null:t}function _Z(e){if(!e||typeof e!="object")return null;let t=e;if(typeof t.id!="string"||!t.id||typeof t.metric!="string"||!_ze.includes(t.metric)||typeof t.operator!="string"||!Sze.includes(t.operator)||typeof t.threshold!="number"||isNaN(t.threshold))return null;let i=[];if(Array.isArray(t.channels))for(let r of t.channels)typeof r=="string"&&Eze.includes(r)&&i.push(r);return{id:t.id,metric:t.metric,operator:t.operator,threshold:t.threshold,...typeof t.processId=="number"?{processId:t.processId}:{},...typeof t.processName=="string"?{processName:t.processName}:{},enabled:t.enabled!==!1,channels:i,...typeof t.webhookUrl=="string"?{webhookUrl:t.webhookUrl}:{},...typeof t.slackWebhook=="string"?{slackWebhook:t.slackWebhook}:{},...typeof t.discordWebhook=="string"?{discordWebhook:t.discordWebhook}:{},...typeof t.emailTo=="string"?{emailTo:t.emailTo}:{}}}var _ze,Sze,Eze,lp=yr(()=>{"use strict";_ze=["cpu","memory","restarts","status"],Sze=[">","<","==",">=","<="],Eze=["browser","webhook","slack","discord","email"]});var EZ={};Ks(EZ,{registerProcessRoutes:()=>Tze});async function Tze(e,t){e.get("/api/processes",async()=>t.bridge.list()),e.get("/api/processes/:id/env",async i=>{let{id:r}=i.params,n=da(r);if(n===null)return{};try{return Gr?new Promise(s=>{Gr.list((o,a)=>{if(o)return s({});let l=a.find(d=>d.pm_id===n);if(!l)return s({});let c=l.pm2_env||{},u={},p=new Set(["PATH","PATHEXT","SYSTEMROOT","SYSTEMDRIVE","WINDIR","TEMP","TMP","USERPROFILE","USERNAME","USERDOMAIN","USERDOMAIN_ROAMINGPROFILE","PROCESSOR_ARCHITECTURE","PROCESSOR_IDENTIFIER","PROCESSOR_LEVEL","PROCESSOR_REVISION","PROGRAMDATA","PROGRAMFILES","PROGRAMW6432","COMMONPROGRAMFILES","COMMONPROGRAMW6432","COMPUTERNAME","COMSPEC","DRIVERDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","LOGONSERVER","NUMBER_OF_PROCESSORS","ONEDRIVE","OS","PSMODULEPATH","PUBLIC","SESSIONNAME","ALLUSERSPROFILE","APPDATA","COLORTERM","LANG","TERM","TERM_PROGRAM","TERM_PROGRAM_VERSION","ZES_ENABLE_SYSMAN","ZED_TERM","ZED_ENVIRONMENT","PM2_USAGE","PM2_JSON_PROCESSING"]);for(let[d,f]of Object.entries(c))typeof f=="string"&&!p.has(d)&&!d.startsWith("MIMOCODE_")&&!d.startsWith("FPS_BROWSER_")&&!d.startsWith("EFC_")&&(u[d]=f);s(u)})}):{}}catch{return{}}}),e.post("/api/processes/:id/action",async(i,r)=>{let{id:n}=i.params,s=da(n);if(s===null)return r.code(400).send({error:"Invalid process ID"});let o=i.body,a=typeof o?.action=="string"?o.action:"",l=typeof o?.instances=="number"?o.instances:void 0;if(!a||!SZ.includes(a))return r.code(400).send({error:`Invalid action. Must be one of: ${SZ.join(", ")}`});try{if(!Gr)return r.code(500).send({error:"PM2 not available"});if(a==="scale"){let u=await new Promise((p,d)=>{Gr.list((f,h)=>{if(f)return d(f);let m=h.find(y=>y.pm_id===s);if(!m)return d(new Error("Process not found"));p(m.name)})});return await new Promise((p,d)=>{Gr.scale(u,l!==void 0?String(l):"+1",f=>{f?d(f):p()})}),{success:!0}}let c={restart:u=>Gr.restart(s,u),stop:u=>Gr.stop(s,u),start:u=>Gr.restart(s,u),reload:u=>Gr.reload(s,u),delete:u=>Gr.delete(s,u),flush:u=>Gr.flush(s,u)}[a];return c?(await new Promise((u,p)=>{c(d=>{d?p(d):u()})}),{success:!0}):r.code(400).send({error:`Unknown action: ${a}`})}catch(c){return r.code(500).send({error:c.message})}})}var Gr,SZ,TZ=yr(()=>{"use strict";lp();Gr=null;try{Gr=require("pm2")}catch{}SZ=["restart","stop","start","reload","delete","scale","flush"]});var CZ={};Ks(CZ,{registerHistoryRoutes:()=>Cze});async function Cze(e,t){e.get("/api/history/:id",async(i,r)=>{let{id:n}=i.params,{hours:s}=i.query,o=da(n);if(o===null)return r.code(400).send({error:"Invalid process ID"});if(!t.persistence)return r.code(503).send({error:"Persistence not available"});let a=s?parseInt(s,10):24;return isNaN(a)||a<1||a>168?r.code(400).send({error:"Invalid hours parameter (1-168)"}):t.persistence.getProcessHistory(o,a)}),e.get("/api/history/system",async(i,r)=>{let{hours:n}=i.query;if(!t.persistence)return r.code(503).send({error:"Persistence not available"});let s=n?parseInt(n,10):24;return isNaN(s)||s<1||s>168?r.code(400).send({error:"Invalid hours parameter (1-168)"}):t.persistence.getSystemHistory(s)})}var RZ=yr(()=>{"use strict";lp()});var OZ={};Ks(OZ,{registerAlertRoutes:()=>Rze});async function Rze(e,t){e.get("/api/alerts",async()=>t.alerts.getRules()),e.post("/api/alerts",async(i,r)=>{let n=_Z(i.body);return n?(t.alerts.addRule(n),{success:!0}):r.code(400).send({error:"Invalid alert rule. Required: id (string), metric (cpu|memory|restarts|status), operator (>|<|==|>=|<=), threshold (number)"})}),e.delete("/api/alerts/:id",async(i,r)=>{let{id:n}=i.params;return!n||typeof n!="string"||n.length===0?r.code(400).send({error:"Invalid rule ID"}):(t.alerts.removeRule(n),{success:!0})}),e.get("/api/alerts/history",async()=>t.alerts.getHistory())}var PZ=yr(()=>{"use strict";lp()});function IZ(e,t,i){let r=[],n=!1,s="",o="",a={},l=null;function c(g){if(i){if(g==="out"&&i.out)return i.out;if(g==="err"&&i.err)return i.err}let v=process.env.HOME||process.env.USERPROFILE||"",b=kZ.default.join(v,".pm2","logs",wZ(t)),x=`${b}-${g}-${e}.log`;if(Vs.default.existsSync(x))return x;if(g==="err"){let C=`${b}-error-${e}.log`;if(Vs.default.existsSync(C))return C}let _=[`${b}-${g}.log`];g==="err"&&_.push(`${b}-error.log`);for(let C=0;C<16;C++)_.push(`${b}-${g}-${C}.log`),g==="err"&&_.push(`${b}-error-${C}.log`);for(let C of _)if(Vs.default.existsSync(C))return C;return _[0]}function u(g,v){try{if(!Vs.default.existsSync(g))return;let b=Vs.default.statSync(g),x=a[g]||0;if(b.size<x&&(a[g]=0,l=null),b.size<=(a[g]||0))return;let _=Vs.default.openSync(g,"r"),C=Buffer.alloc(b.size-(a[g]||0));Vs.default.readSync(_,C,0,C.length,a[g]||0),Vs.default.closeSync(_),a[g]=b.size;let E=C.toString("utf-8");if(l!==null&&(E=l+E,l=null),!E.endsWith(`
862
+ Invalid`)}},FromEmailAddress:"invalid@invalid",Destination:{ToAddresses:["invalid@invalid"]}};return this.getRegion(()=>{let s=new this.ses.SendEmailCommand(n);this.ses.sesClient.send(s).then(()=>r(null)).catch(a=>r(a))}),i}};PQ.exports=Lk});var NQ=S((lXe,hb)=>{"use strict";var x5e=KJ(),LQ=Yi(),v5e=mQ(),b5e=bQ(),w5e=_Q(),_5e=EQ(),S5e=CQ(),E5e=AQ(),T5e=mr(),C5e=$h(),kQ=vn(),R5e=(process.env.ETHEREAL_API||"https://api.nodemailer.com").replace(/\/+$/,""),O5e=(process.env.ETHEREAL_WEB||"https://ethereal.email").replace(/\/+$/,""),IQ=(process.env.ETHEREAL_API_KEY||"").replace(/\s*/g,"")||null,P5e=["true","yes","y","1"].includes((process.env.ETHEREAL_CACHE||"yes").toString().trim().toLowerCase()),Gh=!1;hb.exports.createTransport=function(e,t){let i;if(typeof e=="object"&&typeof e.send!="function"||typeof e=="string"&&/^(smtps?|direct):/i.test(e)){let r=typeof e=="string"?e:e.url;if(r?i=LQ.parseConnectionUrl(r):i=e,i.pool)e=new v5e(i);else if(i.sendmail)e=new w5e(i);else if(i.streamTransport)e=new _5e(i);else if(i.jsonTransport)e=new S5e(i);else if(i.SES){if(i.SES.ses&&i.SES.aws){let n=new Error("Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/");throw n.code=T5e.ECONFIG,n}e=new E5e(i)}else e=new b5e(i)}return new x5e(e,i,t)};hb.exports.createTestAccount=function(e,t){let i;if(!t&&typeof e=="function"&&(t=e,e=!1),t||(i=new Promise((c,u)=>{t=LQ.callbackPromise(c,u)})),P5e&&Gh)return setImmediate(()=>t(null,Gh)),i;e=e||R5e;let r=[],n=0,s={},o={requestor:kQ.name,version:kQ.version};IQ&&(s.Authorization="Bearer "+IQ);let a={contentType:"application/json",method:"POST",headers:s,body:Buffer.from(JSON.stringify(o))};/^https:/i.test(e)&&(a.tls={rejectUnauthorized:!0});let l=C5e(e+"/user",a);return l.on("readable",()=>{let c;for(;(c=l.read())!==null;)r.push(c),n+=c.length}),l.once("error",c=>t(c)),l.once("end",()=>{let c=Buffer.concat(r,n),u;try{u=JSON.parse(c.toString())}catch(p){return t(p)}if(u.status!=="success"||u.error)return t(new Error(u.error||"Request failed"));delete u.status,Gh=u,t(null,Gh)}),i};hb.exports.getTestMessageUrl=function(e){if(!e||!e.response)return!1;let t=new Map,i=e.response.toString();if(i.length>2&&i.charAt(i.length-1)==="]"){let r=i.indexOf("[",i.lastIndexOf("]",i.length-2)+1);r>=0&&r<i.length-2&&i.substring(r+1,i.length-1).replace(/\b([A-Z0-9]+)=([^\s]+)/g,(s,o,a)=>{t.set(o,a)})}return t.has("STATUS")&&t.has("MSGID")?(Gh.web||O5e)+"/message/"+t.get("MSGID"):!1}});var MQ={};Ks(MQ,{isEmailConfigured:()=>I5e,sendEmail:()=>k5e});function A5e(){if(mb)return mb;if(!gb)return null;let e=process.env.SMTP_HOST,t=parseInt(process.env.SMTP_PORT||"587",10),i=process.env.SMTP_USER,r=process.env.SMTP_PASS,n=process.env.SMTP_FROM;return!e||!n?null:(mb=gb.createTransport({host:e,port:t,secure:t===465,auth:i&&r?{user:i,pass:r}:void 0}),mb)}async function k5e(e,t){let i=A5e(),r=process.env.SMTP_TO;if(!i||!r)return!1;try{return await i.sendMail({from:process.env.SMTP_FROM,to:r,subject:`[PM2 Orbit] ${e}`,text:t,html:`<p>${t}</p>`}),!0}catch{return!1}}function I5e(){return!!gb&&!!process.env.SMTP_HOST&&!!process.env.SMTP_FROM&&!!process.env.SMTP_TO}var gb,mb,DQ=yr(()=>{"use strict";gb=null;try{gb=NQ()}catch{}mb=null});var zQ=S((CXe,Mk)=>{"use strict";var M5e=/at\s(?:.*\.)?plugin\s.*\n\s*(.*)/,D5e=/(\w*(\.\w*)*)\..*/;Mk.exports=function(t){if(t.name.length>0)return t.name;let i=Error.stackTraceLimit;Error.stackTraceLimit=10;try{throw new Error("anonymous function")}catch(r){return Error.stackTraceLimit=i,UQ(r.stack)}};function UQ(e){let t=e.match(M5e);return t?t[1].split(/[/\\]/).slice(-1)[0].match(D5e)[1]:"anonymous"}Mk.exports.extractPluginName=UQ});var VQ=S((RXe,HQ)=>{"use strict";HQ.exports=function(t){return t[0]==="@"&&(t=t.slice(1).replace("/","-")),t.replace(/-(.)/g,function(i,r){return r.toUpperCase()})}});var WQ=S((OXe,yb)=>{"use strict";var j5e=zQ(),q5e=VQ(),$5e=0;function Dk(e,t={}){let i=!1;if(e.default!==void 0&&(e=e.default),typeof e!="function")throw new TypeError(`fastify-plugin expects a function, instead got a '${typeof e}'`);if(typeof t=="string"&&(t={fastify:t}),typeof t!="object"||Array.isArray(t)||t===null)throw new TypeError("The options object should be an object");if(t.fastify!==void 0&&typeof t.fastify!="string")throw new TypeError(`fastify-plugin expects a version string, instead got '${typeof t.fastify}'`);t.name||(i=!0,t.name=j5e(e)+"-auto-"+$5e++),e[Symbol.for("skip-override")]=t.encapsulate!==!0,e[Symbol.for("fastify.display-name")]=t.name,e[Symbol.for("plugin-meta")]=t,e.default||(e.default=e);let r=q5e(t.name);return!i&&!e[r]&&(e[r]=e),e}yb.exports=Dk;yb.exports.default=Dk;yb.exports.fastifyPlugin=Dk});var KQ=S((PXe,GQ)=>{function ns(e){if(typeof e!="function")throw new Error("obliterator/iterator: expecting a function!");this.next=e}typeof Symbol<"u"&&(ns.prototype[Symbol.iterator]=function(){return this});ns.of=function(){var e=arguments,t=e.length,i=0;return new ns(function(){return i>=t?{done:!0}:{done:!1,value:e[i++]}})};ns.empty=function(){var e=new ns(function(){return{done:!0}});return e};ns.fromSequence=function(e){var t=0,i=e.length;return new ns(function(){return t>=i?{done:!0}:{done:!1,value:e[t++]}})};ns.is=function(e){return e instanceof ns?!0:typeof e=="object"&&e!==null&&typeof e.next=="function"};GQ.exports=ns});var XQ=S(jk=>{jk.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";jk.SYMBOL_SUPPORT=typeof Symbol<"u"});var qk=S((kXe,JQ)=>{var YQ=XQ(),F5e=YQ.ARRAY_BUFFER_SUPPORT,B5e=YQ.SYMBOL_SUPPORT;JQ.exports=function(t,i){var r,n,s,o,a;if(!t)throw new Error("obliterator/forEach: invalid iterable.");if(typeof i!="function")throw new Error("obliterator/forEach: expecting a callback.");if(Array.isArray(t)||F5e&&ArrayBuffer.isView(t)||typeof t=="string"||t.toString()==="[object Arguments]"){for(s=0,o=t.length;s<o;s++)i(t[s],s);return}if(typeof t.forEach=="function"){t.forEach(i);return}if(B5e&&Symbol.iterator in t&&typeof t.next!="function"&&(t=t[Symbol.iterator]()),typeof t.next=="function"){for(r=t,s=0;a=r.next(),a.done!==!0;)i(a.value,s),s++;return}for(n in t)t.hasOwnProperty(n)&&i(t[n],n)}});var $k=S(ss=>{var U5e=Math.pow(2,8)-1,z5e=Math.pow(2,16)-1,H5e=Math.pow(2,32)-1,V5e=Math.pow(2,7)-1,W5e=Math.pow(2,15)-1,G5e=Math.pow(2,31)-1;ss.getPointerArray=function(e){var t=e-1;if(t<=U5e)return Uint8Array;if(t<=z5e)return Uint16Array;if(t<=H5e)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};ss.getSignedPointerArray=function(e){var t=e-1;return t<=V5e?Int8Array:t<=W5e?Int16Array:t<=G5e?Int32Array:Float64Array};ss.getNumberType=function(e){return e===(e|0)?Math.sign(e)===-1?e<=127&&e>=-128?Int8Array:e<=32767&&e>=-32768?Int16Array:Int32Array:e<=255?Uint8Array:e<=65535?Uint16Array:Uint32Array:Float64Array};var K5e={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};ss.getMinimalRepresentation=function(e,t){var i=null,r=0,n,s,o,a,l;for(a=0,l=e.length;a<l;a++)o=t?t(e[a]):e[a],s=ss.getNumberType(o),n=K5e[s.name],n>r&&(r=n,i=s);return i};ss.isTypedArray=function(e){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView(e)};ss.concat=function(){var e=0,t,i,r;for(t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=new arguments[0].constructor(e);for(t=0,i=0;t<r;t++)n.set(arguments[t],i),i+=arguments[t].length;return n};ss.indices=function(e){for(var t=ss.getPointerArray(e),i=new t(e),r=0;r<e;r++)i[r]=r;return i}});var eZ=S(Kh=>{var QQ=qk(),ZQ=$k();function X5e(e){return Array.isArray(e)||ZQ.isTypedArray(e)}function Fk(e){if(typeof e.length=="number")return e.length;if(typeof e.size=="number")return e.size}function Y5e(e){var t=Fk(e),i=typeof t=="number"?new Array(t):[],r=0;return QQ(e,function(n){i[r++]=n}),i}function J5e(e){var t=Fk(e),i=typeof t=="number"?ZQ.getPointerArray(t):Array,r=typeof t=="number"?new Array(t):[],n=typeof t=="number"?new i(t):[],s=0;return QQ(e,function(o){r[s]=o,n[s]=s++}),[r,n]}Kh.isArrayLike=X5e;Kh.guessLength=Fk;Kh.toArray=Y5e;Kh.toArrayWithIndices=J5e});var iZ=S((NXe,tZ)=>{var Bk=KQ(),Q5e=qk(),Z5e=$k(),eze=eZ();function Qt(e,t,i){if(arguments.length<2&&(i=e,e=null,t=null),this.capacity=i,typeof this.capacity!="number"||this.capacity<=0)throw new Error("mnemonist/lru-cache: capacity should be positive number.");if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw new Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var r=Z5e.getPointerArray(i);this.forward=new r(i),this.backward=new r(i),this.K=typeof e=="function"?new e(i):new Array(i),this.V=typeof t=="function"?new t(i):new Array(i),this.size=0,this.head=0,this.tail=0,this.items={}}Qt.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};Qt.prototype.splayOnTop=function(e){var t=this.head;if(this.head===e)return this;var i=this.backward[e],r=this.forward[e];return this.tail===e?this.tail=i:this.backward[r]=i,this.forward[i]=r,this.backward[t]=e,this.head=e,this.forward[e]=t,this};Qt.prototype.set=function(e,t){var i=this.items[e];if(typeof i<"u"){this.splayOnTop(i),this.V[i]=t;return}this.size<this.capacity?i=this.size++:(i=this.tail,this.tail=this.backward[i],delete this.items[this.K[i]]),this.items[e]=i,this.K[i]=e,this.V[i]=t,this.forward[i]=this.head,this.backward[this.head]=i,this.head=i};Qt.prototype.setpop=function(e,t){var i=null,r=null,n=this.items[e];return typeof n<"u"?(this.splayOnTop(n),i=this.V[n],this.V[n]=t,{evicted:!1,key:e,value:i}):(this.size<this.capacity?n=this.size++:(n=this.tail,this.tail=this.backward[n],i=this.V[n],r=this.K[n],delete this.items[r]),this.items[e]=n,this.K[n]=e,this.V[n]=t,this.forward[n]=this.head,this.backward[this.head]=n,this.head=n,r?{evicted:!0,key:r,value:i}:null)};Qt.prototype.has=function(e){return e in this.items};Qt.prototype.get=function(e){var t=this.items[e];if(!(typeof t>"u"))return this.splayOnTop(t),this.V[t]};Qt.prototype.peek=function(e){var t=this.items[e];if(!(typeof t>"u"))return this.V[t]};Qt.prototype.forEach=function(e,t){t=arguments.length>1?t:this;for(var i=0,r=this.size,n=this.head,s=this.K,o=this.V,a=this.forward;i<r;)e.call(t,o[n],s[n],this),n=a[n],i++};Qt.prototype.keys=function(){var e=0,t=this.size,i=this.head,r=this.K,n=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var s=r[i];return e++,e<t&&(i=n[i]),{done:!1,value:s}})};Qt.prototype.values=function(){var e=0,t=this.size,i=this.head,r=this.V,n=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var s=r[i];return e++,e<t&&(i=n[i]),{done:!1,value:s}})};Qt.prototype.entries=function(){var e=0,t=this.size,i=this.head,r=this.K,n=this.V,s=this.forward;return new Bk(function(){if(e>=t)return{done:!0};var o=r[i],a=n[i];return e++,e<t&&(i=s[i]),{done:!1,value:[o,a]}})};typeof Symbol<"u"&&(Qt.prototype[Symbol.iterator]=Qt.prototype.entries);Qt.prototype.inspect=function(){for(var e=new Map,t=this.entries(),i;i=t.next(),!i.done;)e.set(i.value[0],i.value[1]);return Object.defineProperty(e,"constructor",{value:Qt,enumerable:!1}),e};typeof Symbol<"u"&&(Qt.prototype[Symbol.for("nodejs.util.inspect.custom")]=Qt.prototype.inspect);Qt.from=function(e,t,i,r){if(arguments.length<2){if(r=eze.guessLength(e),typeof r!="number")throw new Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else arguments.length===2&&(r=t,t=null,i=null);var n=new Qt(t,i,r);return Q5e(e,function(s,o){n.set(o,s)}),n};tZ.exports=Qt});var nZ=S((MXe,Xh)=>{"use strict";var tze=iZ(),ize=/^[!#$%&'*+\-.^\w`|~]+$/u;function rze(e){if(ize.test(e)===!1)throw new TypeError("Fieldname contains invalid characters.")}function rZ(e){e=e.trim().toLowerCase();let t=[];if(e.length!==0)if(e.indexOf(",")===-1)t.push(e);else{let i=e.length,r=0,n=0,s;for(r;r<i;++r)s=e[r],s===" "?n=r+1:s===","&&(n!==r&&t.push(e.slice(n,r)),n=r+1);n!==r&&t.push(e.slice(n,r))}return t}function Uk(e){let t=new tze(1e3);return rze(e),function(i){let r=i.getHeader("Vary");if(!r){i.header("Vary",e);return}if(r==="*")return;if(e==="*"){i.header("Vary","*");return}if(Array.isArray(r)&&(r=r.join(", ")),!t.has(r)){let s=rZ(r);s.indexOf("*")!==-1?t.set(r,"*"):s.indexOf(e.toLowerCase())===-1?t.set(r,r+", "+e):t.set(r,null)}let n=t.get(r);n!==null&&i.header("Vary",n)}}Xh.exports.createAddFieldnameToVary=Uk;Xh.exports.addOriginToVaryHeader=Uk("Origin");Xh.exports.addAccessControlRequestHeadersToVaryHeader=Uk("Access-Control-Request-Headers");Xh.exports.parse=rZ});var cZ=S((DXe,vb)=>{"use strict";var nze=WQ(),{addAccessControlRequestHeadersToVaryHeader:sze,addOriginToVaryHeader:oze}=nZ(),Hk={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",hook:"onRequest",preflightContinue:!1,optionsSuccessStatus:204,credentials:!1,exposedHeaders:null,allowedHeaders:null,maxAge:null,preflight:!0,strictPreflight:!0},aze=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend"],zk=["preSerialization","preParsing","onSend"];function aZ(e,t){aze.indexOf(e)===-1&&t(new TypeError("@fastify/cors: Invalid hook option provided."))}function lze(e,t,i){e.decorateRequest("corsPreflightEnabled",!1);let r=!0;if(typeof t=="function")sZ(t,e,{hook:Hk.hook},i);else if(t.delegator){let{delegator:n,...s}=t;sZ(n,e,s,i)}else{t.hideOptionsRoute!==void 0&&(r=t.hideOptionsRoute);let n=xb(t);aZ(n.hook,i),zk.indexOf(n.hook)!==-1?e.addHook(n.hook,function(o,a,l,c){Yh(e,n,o,a,c)}):e.addHook(n.hook,function(o,a,l){Yh(e,n,o,a,l)})}e.options("*",{schema:{hide:r}},(n,s)=>{if(!n.corsPreflightEnabled){s.callNotFound();return}s.send()}),i()}function sZ(e,t,i,r){let n=i?.hook||Hk.hook;aZ(n,r),e.length===2?zk.indexOf(n)!==-1?t.addHook(n,function(o,a,l,c){oZ(e,t,o,a,c)}):t.addHook(n,function(o,a,l){oZ(e,t,o,a,l)}):zk.indexOf(n)!==-1?t.addHook(n,function(o,a,l,c){let u=e(o);if(u&&typeof u.then=="function"){u.then(p=>Yh(t,xb(p,!0),o,a,c)).catch(c);return}c(new Error("Invalid CORS origin option"))}):t.addHook(n,function(o,a,l){let c=e(o);if(c&&typeof c.then=="function"){c.then(u=>Yh(t,xb(u,!0),o,a,l)).catch(l);return}l(new Error("Invalid CORS origin option"))})}function oZ(e,t,i,r,n){e(i,(s,o)=>{s?n(s):Yh(t,xb(o,!0),i,r,n)})}function xb(e,t){let i={...Hk,...e};return Array.isArray(e.origin)&&e.origin.indexOf("*")!==-1&&(i.origin="*"),Number.isInteger(i.cacheControl)?i.cacheControl=`max-age=${i.cacheControl}`:typeof i.cacheControl!="string"&&(i.cacheControl=null),i.dynamic=t||!1,i}function Yh(e,t,i,r,n){(typeof t.origin!="string"&&t.origin!==!1||t.dynamic)&&oze(r),(typeof t.origin=="function"?pze(e,t.origin):(o,a)=>a(null,t.origin))(i,(o,a)=>{if(o!==null)return n(o);if(a===!1||i.routeOptions.config?.cors===!1)return n();if(!a)return n(new Error("Invalid CORS origin option"));if(cze(i,r,a,t),i.raw.method==="OPTIONS"&&t.preflight===!0){if(t.strictPreflight===!0&&(!i.headers.origin||!i.headers["access-control-request-method"])){r.status(400).type("text/plain").send("Invalid Preflight Request");return}if(i.corsPreflightEnabled=!0,uze(i,r,t),!t.preflightContinue){r.code(t.optionsSuccessStatus).header("Content-Length","0").send();return}}return n()})}function cze(e,t,i,r){let n=fze(e.headers.origin,i);n&&t.header("Access-Control-Allow-Origin",n),r.credentials&&t.header("Access-Control-Allow-Credentials","true"),r.exposedHeaders!==null&&t.header("Access-Control-Expose-Headers",Array.isArray(r.exposedHeaders)?r.exposedHeaders.join(", "):r.exposedHeaders)}function uze(e,t,i){if(t.header("Access-Control-Allow-Methods",Array.isArray(i.methods)?i.methods.join(", "):i.methods),i.allowedHeaders===null){sze(t);let r=e.headers["access-control-request-headers"];r!==void 0&&t.header("Access-Control-Allow-Headers",r)}else t.header("Access-Control-Allow-Headers",Array.isArray(i.allowedHeaders)?i.allowedHeaders.join(", "):i.allowedHeaders);i.maxAge!==null&&t.header("Access-Control-Max-Age",String(i.maxAge)),i.cacheControl&&t.header("Cache-Control",i.cacheControl)}function pze(e,t){return function(i,r){let n=t.call(e,i.headers.origin,r);n&&typeof n.then=="function"&&n.then(s=>r(null,s),r)}}function fze(e,t){return typeof t=="string"?t:lZ(e,t)?e:!1}function lZ(e,t){if(Array.isArray(t)){for(let i=0;i<t.length;++i)if(lZ(e,t[i]))return!0;return!1}else return typeof t=="string"?e===t:t instanceof RegExp?(t.lastIndex=0,t.test(e)):!!t}var Vk=nze(lze,{fastify:"5.x",name:"@fastify/cors"});vb.exports=Vk;vb.exports.fastifyCors=Vk;vb.exports.default=Vk});function hZ(){try{if(wn.default.existsSync(Wk))return Buffer.from(wn.default.readFileSync(Wk,"utf-8"),"hex")}catch{}let e=(0,Ll.randomBytes)(32);try{wn.default.existsSync(ap)||wn.default.mkdirSync(ap,{recursive:!0}),wn.default.writeFileSync(Wk,e.toString("hex"),{mode:384})}catch{}return e}function hze(e){if(!e)return"";try{let t=hZ(),i=(0,Ll.randomBytes)(16),r=(0,Ll.createCipheriv)("aes-256-cbc",t,i),n=Buffer.concat([r.update(e,"utf8"),r.final()]);return i.toString("hex")+":"+n.toString("hex")}catch{return e}}function mze(e){if(!e||!e.includes(":"))return e;try{let t=hZ(),[i,r]=e.split(":"),n=Buffer.from(i,"hex"),s=Buffer.from(r,"hex"),o=(0,Ll.createDecipheriv)("aes-256-cbc",t,n);return Buffer.concat([o.update(s),o.final()]).toString("utf8")}catch{return e}}function Kk(){if(op)return op;try{if(wn.default.existsSync(Gk)){let e=wn.default.readFileSync(Gk,"utf-8"),t=JSON.parse(e),i={...fZ,...t};for(let r of dZ)i[r]&&(i[r]=mze(i[r]));return op=i,i}}catch{}return op={...fZ},op}function gze(){op=null}function yze(e){try{wn.default.existsSync(ap)||wn.default.mkdirSync(ap,{recursive:!0});let t={...e};for(let i of dZ)t[i]&&(t[i]=hze(t[i]));wn.default.writeFileSync(Gk,JSON.stringify(t,null,2),{mode:384}),gze()}catch{}}function wb(){return Kk()}function mZ(){let e=Kk();return{...e,authToken:e.authToken?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":"",smtpPass:e.smtpPass?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}}function gZ(e){let i={...Kk()};for(let[r,n]of Object.entries(e))(r==="authToken"||r==="smtpPass")&&(n==="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"||n==="")||(i[r]=n);return yze(i),i}function _b(e){e.authToken&&(process.env.PM2_ORBIT_TOKEN=e.authToken),e.slackWebhookUrl&&(process.env.SLACK_WEBHOOK_URL=e.slackWebhookUrl),e.discordWebhookUrl&&(process.env.DISCORD_WEBHOOK_URL=e.discordWebhookUrl),e.webhookUrl&&(process.env.WEBHOOK_URL=e.webhookUrl),e.smtpHost&&(process.env.SMTP_HOST=e.smtpHost),e.smtpPort&&(process.env.SMTP_PORT=String(e.smtpPort)),e.smtpUser&&(process.env.SMTP_USER=e.smtpUser),e.smtpPass&&(process.env.SMTP_PASS=e.smtpPass),e.smtpFrom&&(process.env.SMTP_FROM=e.smtpFrom),e.smtpTo&&(process.env.SMTP_TO=e.smtpTo),e.theme&&(process.env.PM2_ORBIT_THEME=e.theme);for(let t of Object.keys(e.enabledChannels))process.env[`NOTIFY_${t.toUpperCase()}_ENABLED`]=e.enabledChannels[t]?"1":"0"}var wn,bb,Ll,ap,Gk,Wk,fZ,dZ,op,Xk=yr(()=>{"use strict";wn=dt(require("fs")),bb=dt(require("path")),Ll=require("crypto"),ap=bb.default.join(process.env.HOME||process.env.USERPROFILE||"",".pm2-orbit"),Gk=bb.default.join(ap,"settings.json"),Wk=bb.default.join(ap,".key"),fZ={theme:"dark",port:9823,authToken:"",slackWebhookUrl:"",discordWebhookUrl:"",webhookUrl:"",smtpHost:"",smtpPort:587,smtpUser:"",smtpPass:"",smtpFrom:"",smtpTo:"",enabledChannels:{browser:!0,slack:!0,discord:!0,webhook:!0,email:!0}},dZ=["authToken","smtpPass","slackWebhookUrl","discordWebhookUrl","webhookUrl"];op=null});var yZ=S(($Xe,xze)=>{xze.exports={name:"pm2",preferGlobal:!0,version:"7.0.3",engines:{node:">=18.0.0"},directories:{bin:"./bin",lib:"./lib",example:"./examples"},author:{name:"Strzelewicz Alexandre",email:"alex@edgecraft.io <Pour ce Nouveau Monde>",url:"https://pm2.io"},maintainers:[{name:"Alexandre Strzelewicz",email:"alexandre@pm2.io"}],contributors:["Mathilde Tuffier","Antoine Bluchet","Alex Kocharin","Antoine Bluchet","Subhash Burramsetty","Valentin Marchaud","Valentin Touffet","Florian Hermouet-Joscht","Vincent Vallet","Joni Shkurti","Jun Tjatse","Xu Jingxin","Ben Postlethwaite","Devo.ps","Bret Copeland","John Hurliman","TruongSinh Tran-Nguyen","Michael Hueuberger","Chris Wiggins"],homepage:"http://pm2.keymetrics.io/",description:"Production process manager for Node.JS applications with a built-in load balancer.",main:"index.js",types:"types/index.d.ts",scripts:{"test:unit":"bash test/unit.sh","test:e2e":"bash test/e2e.sh",test:"bash test/unit.sh && bash test/e2e.sh","test:parallel":"bash test/docker-parallel.sh","test:bpm":"mocha 'modules/pm2-io-bpm/test/**/*.spec.js' --exit --timeout 10000","test:axon-rpc":"mocha 'modules/pm2-axon-rpc/test/' --reporter spec --exit","test:axon":"bash modules/pm2-axon/test/run modules/pm2-axon/test/test.*.js","test:io-agent":"mocha 'modules/pm2-io-agent/test/units/*.mocha.js' --reporter spec --exit","test:windows":"bash test/windows.sh"},keywords:["cli","fault tolerant","sysadmin","tools","pm2","logs","log","json","express","hapi","kraken","reload","load balancer","lb","load-balancer","kubernetes","k8s","pm2-docker","runtime","source maps","graceful","microservice","programmatic","harmony","node-pm2","production","keymetrics","node.js monitoring","strong-pm","deploy","deployment","daemon","supervisor","supervisord","nodemon","pm2.io","ghost","ghost production","monitoring","keymetrics","process manager","forever","profiling","probes","apm","container","forever-monitor","keep process alive","process configuration","clustering","cluster cli","cluster","docker","cron","devops","dev ops"],bin:{pm2:"bin/pm2","pm2-dev":"bin/pm2-dev","pm2-docker":"bin/pm2-docker","pm2-runtime":"bin/pm2-runtime"},dependencies:{"@pm2/blessed":"0.1.81","@pm2/js-api":"0.8.1","@pm2/pm2-version-check":"1.0.4",amp:"0.3.1","amp-message":"0.1.2",ansis:"4.0.0-node10",async:"3.2.6",chokidar:"3.6.0","cli-tableau":"2.0.1",commander:"2.15.1",croner:"4.1.97",dayjs:"1.11.15",debug:"4.4.3",eventemitter2:"6.4.9","fast-json-patch":"3.1.1","js-yaml":"4.3.0",pidusage:"4.0.1","pm2-deploy":"1.0.2","proxy-agent":"6.5.0",semver:"7.7.2",tx2:"1.0.5",ws:"8.21.0"},overrides:{debug:"4.4.3"},devDependencies:{express:"^4.21.0",mocha:"^11.7.0",should:"^13.2.3"},bugs:{url:"https://github.com/Unitech/pm2/issues"},repository:{type:"git",url:"git://github.com/Unitech/pm2.git"},license:"AGPL-3.0"}});var xZ=S((FXe,vze)=>{vze.exports={name:"pm2-orbit",version:"1.0.3",files:["dist/","dist-ui/","bin/"],description:"High-performance PM2 monitoring dashboard \u2014 event-driven, 1000+ processes, < 150KB",main:"dist/server.js",bin:{"pm2-orbit":"bin/pm2-orbit.js"},scripts:{"dev:ui":"cd ui && vite","dev:server":"tsx watch src/server.ts",dev:'concurrently -k -n ui,server -c blue,green "npm:dev:ui" "npm:dev:server"',build:"node build.js",start:"node dist/server.js",lint:"tsc --noEmit",typecheck:"tsc --noEmit && cd ui && tsc --noEmit",test:"vitest run","test:watch":"vitest","test:e2e":"vitest --config vitest.e2e.config.ts",prepare:"husky",prepublishOnly:"npm run build",postinstall:`node -e "try{require.resolve('pm2')}catch{console.log('\\n \u2139 Install pm2 for process monitoring: npm install -g pm2\\n')}"`},engines:{node:">=18"},dependencies:{"@fastify/compress":"^7","@fastify/cors":"^10","@fastify/helmet":"^13","@fastify/rate-limit":"^10","@fastify/static":"^9.1.3",fastify:"^5",mri:"^1.2",open:"^10",systeminformation:"^5.31.11",ws:"^8"},optionalDependencies:{"better-sqlite3":"^11",nodemailer:"^9.0.1",pm2:"^7"},devDependencies:{"@tailwindcss/postcss":"^4","@testing-library/react":"^14","@types/node":"^26.0.1","@types/nodemailer":"^8.0.1","@types/ws":"^8.18.1","@vitejs/plugin-react":"^4",autoprefixer:"^10",concurrently:"^8",esbuild:"^0.25",husky:"^9","lint-staged":"^15",postcss:"^8",tailwindcss:"^4",tsx:"^4",typescript:"^5",vite:"^6",vitest:"^3"},keywords:["pm2","monitoring","dashboard","devops","nodejs","react"],license:"MIT"}});var vZ={};Ks(vZ,{registerHealthRoutes:()=>wze});function bze(e,t){switch(e){case"browser":return!0;case"slack":return!!t.slackWebhookUrl;case"discord":return!!t.discordWebhookUrl;case"webhook":return!!t.webhookUrl;case"email":return!!t.smtpHost&&!!t.smtpFrom&&!!t.smtpTo}}async function wze(e,t){e.get("/api/health",async()=>{let i="unknown";try{i=yZ().version}catch{try{i=require("pm2/package.json").version}catch{}}return{status:"ok",uptime:process.uptime(),version:xZ().version,processes:(await t.bridge.list()).length,nodeVersion:process.version,pm2Version:i}}),e.get("/api/ping",async()=>"pong"),e.get("/api/system",async()=>{let{readSystem:i}=await Promise.resolve().then(()=>(Ah(),lA));return i()}),e.get("/api/settings",async()=>mZ()),e.get("/api/channels",async()=>{let i=wb(),r=["browser","slack","discord","webhook","email"],n={};for(let s of r){let o=bze(s,i),a=i.enabledChannels[s]!==!1;n[s]={configured:o,enabled:a}}return n}),e.put("/api/settings",async(i,r)=>{let n=i.body;if(!n||typeof n!="object")return r.code(400).send({error:"Invalid request body"});let s=["theme","authToken","slackWebhookUrl","discordWebhookUrl","webhookUrl","smtpHost","smtpPort","smtpUser","smtpPass","smtpFrom","smtpTo","enabledChannels"],o={};for(let l of s)l in n&&(o[l]=n[l]);let a=gZ(o);return _b(a),{success:!0,settings:a}})}var bZ=yr(()=>{"use strict";Xk()});function wZ(e){return e.replace(/\.\.(\/|\\)/g,"").replace(/[/\\]/g,"_").replace(/\0/g,"").replace(/\s+/g,"_").replace(/^_+|_+$/g,"").substring(0,128)}function da(e){if(!e||typeof e!="string")return null;let t=parseInt(e,10);return isNaN(t)||t<0||!Number.isSafeInteger(t)?null:t}function _Z(e){if(!e||typeof e!="object")return null;let t=e;if(typeof t.id!="string"||!t.id||typeof t.metric!="string"||!_ze.includes(t.metric)||typeof t.operator!="string"||!Sze.includes(t.operator)||typeof t.threshold!="number"||isNaN(t.threshold))return null;let i=[];if(Array.isArray(t.channels))for(let r of t.channels)typeof r=="string"&&Eze.includes(r)&&i.push(r);return{id:t.id,metric:t.metric,operator:t.operator,threshold:t.threshold,...typeof t.processId=="number"?{processId:t.processId}:{},...typeof t.processName=="string"?{processName:t.processName}:{},enabled:t.enabled!==!1,channels:i,...typeof t.webhookUrl=="string"?{webhookUrl:t.webhookUrl}:{},...typeof t.slackWebhook=="string"?{slackWebhook:t.slackWebhook}:{},...typeof t.discordWebhook=="string"?{discordWebhook:t.discordWebhook}:{},...typeof t.emailTo=="string"?{emailTo:t.emailTo}:{}}}var _ze,Sze,Eze,lp=yr(()=>{"use strict";_ze=["cpu","memory","restarts","status"],Sze=[">","<","==",">=","<="],Eze=["browser","webhook","slack","discord","email"]});var EZ={};Ks(EZ,{registerProcessRoutes:()=>Tze});async function Tze(e,t){e.get("/api/processes",async()=>t.bridge.list()),e.get("/api/processes/:id/env",async i=>{let{id:r}=i.params,n=da(r);if(n===null)return{};try{return Gr?new Promise(s=>{Gr.list((o,a)=>{if(o)return s({});let l=a.find(d=>d.pm_id===n);if(!l)return s({});let c=l.pm2_env||{},u={},p=new Set(["PATH","PATHEXT","SYSTEMROOT","SYSTEMDRIVE","WINDIR","TEMP","TMP","USERPROFILE","USERNAME","USERDOMAIN","USERDOMAIN_ROAMINGPROFILE","PROCESSOR_ARCHITECTURE","PROCESSOR_IDENTIFIER","PROCESSOR_LEVEL","PROCESSOR_REVISION","PROGRAMDATA","PROGRAMFILES","PROGRAMW6432","COMMONPROGRAMFILES","COMMONPROGRAMW6432","COMPUTERNAME","COMSPEC","DRIVERDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","LOGONSERVER","NUMBER_OF_PROCESSORS","ONEDRIVE","OS","PSMODULEPATH","PUBLIC","SESSIONNAME","ALLUSERSPROFILE","APPDATA","COLORTERM","LANG","TERM","TERM_PROGRAM","TERM_PROGRAM_VERSION","ZES_ENABLE_SYSMAN","ZED_TERM","ZED_ENVIRONMENT","PM2_USAGE","PM2_JSON_PROCESSING"]);for(let[d,f]of Object.entries(c))typeof f=="string"&&!p.has(d)&&!d.startsWith("MIMOCODE_")&&!d.startsWith("FPS_BROWSER_")&&!d.startsWith("EFC_")&&(u[d]=f);s(u)})}):{}}catch{return{}}}),e.post("/api/processes/:id/action",async(i,r)=>{let{id:n}=i.params,s=da(n);if(s===null)return r.code(400).send({error:"Invalid process ID"});let o=i.body,a=typeof o?.action=="string"?o.action:"",l=typeof o?.instances=="number"?o.instances:void 0;if(!a||!SZ.includes(a))return r.code(400).send({error:`Invalid action. Must be one of: ${SZ.join(", ")}`});try{if(!Gr)return r.code(500).send({error:"PM2 not available"});if(a==="scale"){let u=await new Promise((p,d)=>{Gr.list((f,h)=>{if(f)return d(f);let m=h.find(y=>y.pm_id===s);if(!m)return d(new Error("Process not found"));p(m.name)})});return await new Promise((p,d)=>{Gr.scale(u,l!==void 0?String(l):"+1",f=>{f?d(f):p()})}),{success:!0}}let c={restart:u=>Gr.restart(s,u),stop:u=>Gr.stop(s,u),start:u=>Gr.restart(s,u),reload:u=>Gr.reload(s,u),delete:u=>Gr.delete(s,u),flush:u=>Gr.flush(s,u)}[a];return c?(await new Promise((u,p)=>{c(d=>{d?p(d):u()})}),{success:!0}):r.code(400).send({error:`Unknown action: ${a}`})}catch(c){return r.code(500).send({error:c.message})}})}var Gr,SZ,TZ=yr(()=>{"use strict";lp();Gr=null;try{Gr=require("pm2")}catch{}SZ=["restart","stop","start","reload","delete","scale","flush"]});var CZ={};Ks(CZ,{registerHistoryRoutes:()=>Cze});async function Cze(e,t){e.get("/api/history/:id",async(i,r)=>{let{id:n}=i.params,{hours:s}=i.query,o=da(n);if(o===null)return r.code(400).send({error:"Invalid process ID"});if(!t.persistence)return r.code(503).send({error:"Persistence not available"});let a=s?parseInt(s,10):24;return isNaN(a)||a<1||a>168?r.code(400).send({error:"Invalid hours parameter (1-168)"}):t.persistence.getProcessHistory(o,a)}),e.get("/api/history/system",async(i,r)=>{let{hours:n}=i.query;if(!t.persistence)return r.code(503).send({error:"Persistence not available"});let s=n?parseInt(n,10):24;return isNaN(s)||s<1||s>168?r.code(400).send({error:"Invalid hours parameter (1-168)"}):t.persistence.getSystemHistory(s)})}var RZ=yr(()=>{"use strict";lp()});var OZ={};Ks(OZ,{registerAlertRoutes:()=>Rze});async function Rze(e,t){e.get("/api/alerts",async()=>t.alerts.getRules()),e.post("/api/alerts",async(i,r)=>{let n=_Z(i.body);return n?(t.alerts.addRule(n),{success:!0}):r.code(400).send({error:"Invalid alert rule. Required: id (string), metric (cpu|memory|restarts|status), operator (>|<|==|>=|<=), threshold (number)"})}),e.delete("/api/alerts/:id",async(i,r)=>{let{id:n}=i.params;return!n||typeof n!="string"||n.length===0?r.code(400).send({error:"Invalid rule ID"}):(t.alerts.removeRule(n),{success:!0})}),e.get("/api/alerts/history",async()=>t.alerts.getHistory())}var PZ=yr(()=>{"use strict";lp()});function IZ(e,t,i){let r=[],n=!1,s="",o="",a={},l=null;function c(g){if(i){if(g==="out"&&i.out)return i.out;if(g==="err"&&i.err)return i.err}let v=process.env.HOME||process.env.USERPROFILE||"",b=kZ.default.join(v,".pm2","logs",wZ(t)),x=`${b}-${g}-${e}.log`;if(Vs.default.existsSync(x))return x;if(g==="err"){let C=`${b}-error-${e}.log`;if(Vs.default.existsSync(C))return C}let _=[`${b}-${g}.log`];g==="err"&&_.push(`${b}-error.log`);for(let C=0;C<16;C++)_.push(`${b}-${g}-${C}.log`),g==="err"&&_.push(`${b}-error-${C}.log`);for(let C of _)if(Vs.default.existsSync(C))return C;return _[0]}function u(g,v){try{if(!Vs.default.existsSync(g))return;let b=Vs.default.statSync(g),x=a[g]||0;if(b.size<x&&(a[g]=0,l=null),b.size<=(a[g]||0))return;let _=Vs.default.openSync(g,"r"),C=Buffer.alloc(b.size-(a[g]||0));Vs.default.readSync(_,C,0,C.length,a[g]||0),Vs.default.closeSync(_),a[g]=b.size;let E=C.toString("utf-8");if(l!==null&&(E=l+E,l=null),!E.endsWith(`
863
863
  `)){let P=E.lastIndexOf(`
864
864
  `);if(P>=0)l=E.slice(P+1),E=E.slice(0,P+1);else{l=E;return}}let T=E.split(`
865
865
  `);T.pop();let R=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORa-z]/g;for(let P of T){let k=P.replace(/\r$/,"").replace(R,"");k.length!==0&&r.push({ts:Date.now(),stream:v,message:k})}r.length>AZ&&r.splice(0,r.length-AZ)}catch{}}function p(){s=c("out"),o=c("err"),at.debug(`[tailer] processId=${e} name=${t} out=${s} err=${o}`),u(s,"stdout"),u(o,"stderr"),at.debug(`[tailer] buffer after init: ${r.length} entries`)}function d(){n||(u(s,"stdout"),u(o,"stderr"))}function f(){return r}function h(g){return g>=r.length?{entries:[],total:r.length}:g<=0?{entries:r.slice(),total:r.length}:{entries:r.slice(g),total:r.length}}function m(){n=!0}function y(){return n}return p(),{processId:e,processName:t,poll:d,getBuffer:f,getNewEntries:h,close:m,isClosed:y}}var Vs,kZ,AZ,LZ=yr(()=>{"use strict";Vs=dt(require("fs")),kZ=dt(require("path"));lp();gl();AZ=parseInt(process.env.PM2_ORBIT_LOG_BUFFER||"2000",10)});function Pze(){Jh||(Jh=setInterval(()=>{for(let[,e]of cp)e.tailer.poll()},Oze))}function Aze(){Jh!==null&&(clearInterval(Jh),Jh=null)}function NZ(e,t,i){let r=cp.get(e);if(r)return r.refs++,r.tailer;let n=IZ(e,t,i);return cp.set(e,{tailer:n,refs:1,name:t}),Pze(),n}function MZ(e){let t=cp.get(e);t&&(t.refs--,t.refs<=0&&(t.tailer.close(),cp.delete(e),cp.size===0&&Aze()))}var Oze,cp,Jh,DZ=yr(()=>{"use strict";LZ();Oze=2e3,cp=new Map,Jh=null});var qZ={};Ks(qZ,{registerLogRoutes:()=>kze});async function kze(e,t){e.get("/api/logs/:id",async(i,r)=>{let{id:n}=i.params,s=da(n);if(s===null)return r.code(400).send({error:"Invalid process ID"});let o=t.bridge,a=o.getLogBuffer(s),l=a.length;r.raw.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),r.raw.write(`retry: 2000
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm2-orbit",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "files": [
5
5
  "dist/",
6
6
  "dist-ui/",