UNPKG

@interopio/gateway

Version:

[![npm version](https://img.shields.io/npm/v/@interopio/gateway.svg)](https://www.npmjs.com/package/@interopio/gateway)

3 lines (2 loc) 6.81 kB
var M=Object.defineProperty;var y=(e,r)=>()=>(e&&(r=e(e=0)),r);var h=(e,r)=>{for(var t in r)M(e,t,{get:r[t],enumerable:!0})};var G={};h(G,{configure:()=>R,getLogger:()=>d,logEvent:()=>K});function K(e){let{name:r,level:t}=e;I(r),P(t,r)&&w(e)}function C(e,r,t,...o){this.enabledFor(r)&&w({time:new Date,level:r,name:e,message:t,data:o})}function P(e,r){let t=u[e];return f[r]<=t}function J(e){I(e);let r=function(o,s,...n){C.call(r,e,o,s,...n)};function t(o){return isNaN(Number(o))}for(let o of Object.keys(u).filter(t))r[o]=function(s,...n){C.call(r,e,o,s,...n)};return r.enabledFor=function(o){return P(o,e)},r.child=function(o){return d(`${e}.${o}`)},r}function I(e){if(!e.startsWith(p))throw new Error(`Logger name must start with ${p}`);if(!f[e]){let r=Object.entries(f).sort(([o],[s])=>s.localeCompare(o)),[,t]=r.find(([o])=>e.startsWith(o));f[e]=t}}function d(e){let r=x[e];return r===void 0&&(r=J(e),x[e]=r),r}function R(e){function r(o,s){for(let n of Object.keys(f).filter(g=>g.startsWith(o)))f[n]=u[s]}let t=e.level;if(typeof t=="string")f[p]=u[t],r(p,t);else if(typeof t=="object"){let o=Object.entries(t).sort(([s],[n])=>s.localeCompare(n));for(let[s,n]of o)r(s,n)}w=e.appender??w}var u,x,f,p,w,E=y(()=>{"use strict";u=(n=>(n[n.trace=0]="trace",n[n.debug=1]="debug",n[n.info=2]="info",n[n.warn=3]="warn",n[n.error=4]="error",n))(u||{}),x=Object.create(null),f={},p="gateway";f[p]=0;w=e=>{console[e.level](`${e.time.toISOString()} ${e.level.toUpperCase()} [${e.name}] - ${e.message}`,...e.data)}});function S(e){let{name:r}=e;if(b.has(r))throw new Error(`The error constructor "${r}" is already known.`);try{new e}catch(t){throw new Error(`The error constructor "${r}" is not compatible`,{cause:t})}b.set(r,e)}var U,b,k=y(()=>{U=[Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),b=new Map(U)});var j={};h(j,{NonError:()=>L,addKnownErrorConstructor:()=>S,deserializeError:()=>z,isErrorLike:()=>O,serializeError:()=>_});function _(e,r={}){let{maxDepth:t=Number.POSITIVE_INFINITY,useToJSON:o=!0}=r;return typeof e=="object"&&e!==null?T({from:e,seen:[],forceEnumerable:!0,maxDepth:t,depth:0,useToJSON:o,serialize:!0}):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:e}function z(e,r={}){let{maxDepth:t=Number.POSITIVE_INFINITY}=r;return e instanceof Error?e:D(e)?T({from:e,seen:[],to:W(e.name),maxDepth:t,depth:0,serialize:!1}):new L(e)}function O(e){return!!e&&typeof e=="object"&&typeof e.name=="string"&&typeof e.message=="string"&&typeof e.stack=="string"}function D(e){return!!e&&typeof e=="object"&&typeof e.message=="string"&&!Array.isArray(e)}var L,B,v,F,W,T,N=y(()=>{k();k();L=class e extends Error{name="NonError";constructor(r){super(e._prepareSuperMessage(r))}static _prepareSuperMessage(r){try{return JSON.stringify(r)}catch{return String(r)}}},B=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1},{property:"errors",enumerable:!1}],v=new WeakSet,F=e=>{v.add(e);let r=e.toJSON();return v.delete(e),r},W=e=>{let r=b.get(e)??Error;return r===AggregateError?new r([]):new r},T=({from:e,seen:r,to:t,forceEnumerable:o,maxDepth:s,depth:n,useToJSON:g,serialize:l})=>{if(t||(Array.isArray(e)?t=[]:!l&&O(e)?t=W(e.name):t={}),r.push(e),n>=s)return t;if(g&&typeof e.toJSON=="function"&&!v.has(e))return F(e);let m=a=>T({from:a,seen:[...r],forceEnumerable:o,maxDepth:s,depth:n,useToJSON:g,serialize:l});for(let[a,c]of Object.entries(e)){if(c&&c instanceof Uint8Array&&c.constructor.name==="Buffer"){t[a]="[object Buffer]";continue}if(c!==null&&typeof c=="object"&&typeof c.pipe=="function"){t[a]="[object Stream]";continue}if(typeof c!="function"){if(!c||typeof c!="object"){try{t[a]=c}catch{}continue}if(!r.includes(e[a])){n++,t[a]=m(e[a]);continue}t[a]="[Circular]"}}if(l||t instanceof Error)for(let{property:a,enumerable:c}of B)e[a]!==void 0&&e[a]!==null&&Object.defineProperty(t,a,{value:O(e[a])||Array.isArray(e[a])?m(e[a]):e[a],enumerable:o?!0:c,configurable:!0,writable:!0});return t}});var A={};h(A,{default:()=>V});var i,V,$=y(()=>{"use strict";i={send:()=>{},on:()=>{},onmessage:null,onerror:null,exit:()=>{},findParameter(e){let r=new URLSearchParams(globalThis.location?.search).get(e);if(!r){let t=globalThis.process?.argv.filter(o=>o.startsWith("--")).map(o=>{let s=o.slice(2).split("=");return[s[0],s[1]]}).find(([o,s])=>o===e);t&&([,r]=t)}return r},async streamLogs(e="trace"){let r=t=>{i.send({log:{time:t.time.getTime(),level:t.level,name:t.name,message:t.message,data:t.data}})};(await Promise.resolve().then(()=>(E(),G))).configure({level:e,appender:r})},async importModule(e){return await import(e)}};if(typeof self<"u"&&typeof postMessage=="function"&&typeof addEventListener=="function")i.on=(e,r)=>{addEventListener(e,t=>{r(t)})},i.send=e=>{postMessage(e)},typeof close=="function"&&(i.exit=close);else if(typeof process<"u"){globalThis.self=i,i.on=process.on.bind(process);let e=process.send?.bind(process);e&&(i.send=r=>{e(JSON.stringify({type:"message",data:r}))}),i.on("disconnect",()=>{process.exit(1)}),process.on("uncaughtException",r=>{e&&e(JSON.stringify({type:"error",message:`Uncaught Error: ${r.message}`}))}),i.exit=process.exit.bind(process)}i.on("message",e=>{i.onmessage&&i.onmessage(e)});i.on("error",e=>{i.onerror&&i.onerror(e)});V=i});E();async function H(e,r){try{let t=await import(r);if(typeof t=="function")return await t();if(typeof t.default=="function")return await t.default()}catch(t){e.error("failed to load preload",t)}}async function q(e,r,t){e.debug(`loading publisher from ${r}`);let o=await import(r);return typeof o.default=="object"&&(o=o.default),await o.create(t,d(`gateway.metrics.publisher.${o.name??r}`))}async function Y(e){let r=e.findParameter("logLevel");if(r?.startsWith('"'))try{r=JSON.parse(r)}catch{r=null}await e.streamLogs(r??"info")}async function Q(e,r){let{publishFn:t,cfg:o}=r;if(o?.preload){let g=await H(e,o.preload);if(typeof g=="object")for(let l in g)o[l]=g[l]}let s;typeof t=="function"?s=t:s=await q(e,t,o);let n=await s("start");return[s,n]}async function X(e,r,t){let o=await r("stop");typeof o=="function"&&await o(t)}function Z(e){let r,t;e.onmessage=async o=>{let s=d("gateway.metrics.worker"),{id:n,cmd:g,arg:l}=o.data;try{switch(g){case"start":{[r,t]=await Q(s,l);break}case"stop":{await X(s,r,t);break}case"update":{await r(l);break}}e.send({id:n,result:"ok"})}catch(m){let{serializeError:a}=await Promise.resolve().then(()=>(N(),j)),c=a(m);e.send({id:n,error:c})}}}Promise.resolve().then(()=>($(),A)).then(e=>e.default).then(async e=>{await Y(e),Z(e),e.send({ready:!0})}).catch(e=>console.error(e)); //# sourceMappingURL=worker.js.map