UNPKG

@actuatorjs/actuatorjs

Version:

Core interfaces and classes for actuatorjs ecosystem

2 lines (1 loc) 3.15 kB
var N=Object.create;var{getPrototypeOf:P,defineProperty:c,getOwnPropertyNames:g,getOwnPropertyDescriptor:w}=Object,d=Object.prototype.hasOwnProperty;var m=(e,t,o)=>{o=e!=null?N(P(e)):{};let r=t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o;for(let n of g(e))if(!d.call(r,n))c(r,n,{get:()=>e[n],enumerable:!0});return r},f=new WeakMap,C=(e)=>{var t=f.get(e),o;if(t)return t;if(t=c({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")g(e).map((r)=>!d.call(t,r)&&c(t,r,{get:()=>e[r],enumerable:!(o=w(e,r))||o.enumerable}));return f.set(e,t),t};var D=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0,configurable:!0,set:(r)=>t[o]=()=>r})};var S={};D(S,{getRuntimeInfo:()=>v,getOutDirFromPackageJson:()=>I,getJavascriptInfo:()=>H,getInfo:()=>h,SimpleHealthIndicator:()=>x,HealthCheck:()=>R,Actuator:()=>y,AbstractHealthIndicator:()=>k});module.exports=C(S);var u=m(require("node:fs/promises")),p=m(require("node:os")),l=m(require("node:path"));var i="Unknown",s;((n)=>{n.Node="Node.js";n.Deno="Deno";n.Bun="Bun";n[n.Unknown=i]="Unknown"})(s||={});var a;((r)=>{r.V8="V8";r.JavaScriptCore="JavaScriptCore";r[r.Unknown=i]="Unknown"})(a||={});async function I(){try{let e=l.default.resolve(process.cwd(),"package.json"),t=await u.default.readFile(e,"utf-8");return JSON.parse(t).outDir||"dist"}catch{return"dist"}}function H(){let e=s.Unknown,t=i,o=a.Unknown,r=i;if(typeof Bun!=="undefined")e="Bun",t=Bun.version,o="JavaScriptCore",r=i;else if(typeof Deno!=="undefined"&&typeof Deno.version!=="undefined")e="Deno",t=Deno.version.deno,o="V8",r=Deno.version.v8;else if(typeof process!=="undefined"&&process.versions?.node)e="Node.js",t=process.version,o="V8",r=process.versions.v8;return{runtime:{name:e,version:t},engine:{name:o,version:r}}}function v(){let e={name:p.default.type(),version:p.default.release(),arch:p.default.arch()},t=process.memoryUsage(),o={pid:process.pid,memory:{heapTotal:t.heapTotal,heapUsed:t.heapUsed,rss:t.rss},cpus:p.default.cpus().length},r=H();return{os:e,process:o,javascript:r}}async function h(){let e=await I(),t=v();if(e){let o=l.default.resolve(process.cwd(),e,"actuator.info.json");try{let r=await u.default.readFile(o,"utf-8");return{...JSON.parse(r),...t}}catch{console.warn(`[InfoCheck] No built actuator.info.json found at ${o}. Returning runtime info.`)}}else console.warn("[InfoCheck] No outDir configured in package.json, returning runtime info.");return t}class y{healthCheck;constructor(e){this.healthCheck=e}async getHealth(){return await this.healthCheck.getHealth()}async getInfo(){return await h()}}class k{name;constructor(e){this.name=e}getName(){return this.name}}class R{healthIndicators;constructor(e){this.healthIndicators=e}async getHealth(){let e={},t="UP";return await Promise.all(this.healthIndicators.map(async(o)=>{try{let r=await o.check();if(e[o.getName()]=r,r.status==="DOWN")t="DOWN"}catch(r){e[o.getName()]={status:"DOWN",details:{error:r instanceof Error?r.message:String(r)}},t="DOWN"}})),{status:t,components:e}}}class x{name;checkFn;constructor(e,t){this.name=e,this.checkFn=t}getName(){return this.name}async check(){return await this.checkFn()}}