{"version":3,"sources":["jsdelivr-header.js","/npm/node-process-metrics-prometheus@0.1.0/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,MAAM,aAAe,QAAQ,UACvB,mBAAqB,QAAQ,wBAC7B,KAAO,QAAQ,cAEf,SAAW,CAAE,WAAY,CAAC,KAAK,kBAGrC,MAAM,qCAAqC,aACzC,WAAA,CAAa,GACX,QAEA,MAAM,EAAW,OAAO,OAAO,CAAC,EAAG,SAAU,GAE7C,QAAyB,IAArB,EAAS,QACX,KAAK,SAAW,IAAI,uBACf,MAAM,EAAS,mBAAmB,oBACvC,MAAM,IAAI,UAAU,qDAEpB,KAAK,SAAW,EAAS,OAC3B,CAEA,KAAK,SAAS,GAAG,UAAW,YAAY,KAAK,OAE7C,MAAM,EAAa,EAAS,WAG5B,GAFA,KAAK,YAAc,GAEd,MAAM,QAAQ,EAAS,YAC1B,MAAM,IAAI,UAAU,gDAGtB,KAAK,YAAc,CACjB,QAAS,IAAI,KAAK,MAAM,CACtB,KAAM,+BACN,KAAM,sCACN,OAAQ,CAAC,WAAY,aAAc,QAAS,OAC5C,eAEF,OAAQ,IAAI,KAAK,MAAM,CACrB,KAAM,8BACN,KAAM,qCACN,OAAQ,CAAC,OAAQ,WAAY,YAC7B,eAEF,SAAU,IAAI,KAAK,MAAM,CACvB,KAAM,kBACN,KAAM,wBACN,OAAQ,OAAO,KAAK,QAAQ,UAC5B,eAEF,UAAW,IAAI,KAAK,MAAM,CACxB,KAAM,kCACN,KAAM,oCACN,eAEF,KAAM,IAAI,KAAK,MAAM,CACnB,KAAM,qBACN,KAAM,8BACN,eAEF,SAAU,IAAI,KAAK,MAAM,CACvB,KAAM,gCACN,KAAM,+CACN,eAEF,IAAK,IAAI,KAAK,MAAM,CAClB,KAAM,gCACN,KAAM,iCACN,eAEF,SAAU,IAAI,KAAK,MAAM,CACvB,KAAM,+BACN,KAAM,qCACN,eAEF,QAAS,IAAI,KAAK,MAAM,CACtB,KAAM,8BACN,KAAM,oCACN,eAEF,iBAAkB,IAAI,KAAK,MAAM,CAC/B,KAAM,6BACN,KAAM,yDACN,eAEF,gBAAiB,IAAI,KAAK,MAAM,CAC9B,KAAM,mCACN,KAAM,wDACN,eAEF,KAAM,IAAI,KAAK,MAAM,CACnB,KAAM,0BACN,KAAM,mCACN,eAEF,QAAS,IAAI,KAAK,MAAM,CACtB,KAAM,wBACN,KAAM,4BACN,eAEF,SAAU,IAAI,KAAK,MAAM,CACvB,KAAM,yBACN,KAAM,6BACN,eAEF,QAAS,IAAI,KAAK,MAAM,CACtB,KAAM,wBACN,KAAM,sDACN,OAAQ,CAAC,QACT,gBAIJ,KAAK,cAAe,CACtB,CAEA,OAAA,GACE,MAAM,EAAK,KAAK,SAAS,UAmBzB,OAjB0B,IAAtB,KAAK,eACP,KAAK,cAAe,EACpB,YAAY,KAAM,IAGpB,KAAK,YAAY,UAAU,IAAI,EAAG,QAAQ,YAAY,WACtD,KAAK,YAAY,KAAK,IAAI,EAAG,QAAQ,YAAY,UACjD,KAAK,YAAY,SAAS,IAAI,EAAG,QAAQ,YAAY,UACrD,KAAK,YAAY,IAAI,IAAI,EAAG,QAAQ,YAAY,KAChD,KAAK,YAAY,QAAQ,IAAI,EAAG,OAAO,SACvC,KAAK,YAAY,KAAK,IAAI,OAAO,MAAM,EAAG,MAAQ,EAAI,EAAG,MACzD,KAAK,YAAY,QAAQ,IAAI,EAAG,SAChC,KAAK,YAAY,SAAS,IAAI,EAAG,UACjC,KAAK,YAAY,QAAQ,IAAI,EAAG,OAAO,QAAQ,GAAI,CAAE,KAAM,SAC3D,KAAK,YAAY,QAAQ,IAAI,EAAG,OAAO,QAAQ,GAAI,CAAE,KAAM,SAC3D,KAAK,YAAY,QAAQ,IAAI,EAAG,OAAO,QAAQ,GAAI,CAAE,KAAM,UAE3B,IAA5B,KAAK,YAAY,OACZ,KAC8B,IAA5B,KAAK,YAAY,OACnB,KAAK,YAAY,GAAG,SAGtB,KAAK,YAAY,KAAK,GACpB,EAAS,UAEpB,CAEA,OAAA,GACE,KAAK,YAAY,SAAS,IACxB,IAAK,MAAM,KAAO,KAAK,YACrB,EAAS,WAAW,KAAK,YAAY,GACvC,IAGF,KAAK,SAAW,KAChB,KAAK,YAAc,KACnB,KAAK,YAAc,IACrB,EAMF,SAAS,YAAa,GACpB,KAAK,KAAK,UAAW,KAAK,UAC5B,CAGA,SAAS,YAAa,EAAI,GACxB,MAAM,EAAa,EAAG,YAChB,EAAM,KAAK,MACX,EAAsB,KAAK,MAAO,EAAM,IAAQ,EAAQ,QAAQ,QAChE,EAAqB,KAAK,MAAO,EAAM,IAAQ,EAAQ,OAAO,QAEpE,EAAW,iBAAiB,IAAI,GAChC,EAAW,gBAAgB,IAAI,GAC/B,EAAW,SAAS,IAAI,EAAQ,OAAO,UACvC,EAAW,QAAQ,IAAI,EAAG,CAAE,SAAU,EAAQ,QAAQ,WACtD,EAAW,QAAQ,IAAI,EAAG,CAAE,WAAY,EAAQ,QAAQ,aACxD,EAAW,QAAQ,IAAI,EAAG,CAAE,MAAO,EAAQ,QAAQ,QACnD,EAAW,QAAQ,IAAI,EAAG,CAAE,IAAK,EAAQ,QAAQ,MACjD,EAAW,OAAO,IAAI,EAAG,CAAE,KAAM,EAAQ,OAAO,OAChD,EAAW,OAAO,IAAI,EAAG,CAAE,SAAU,EAAQ,OAAO,WACpD,EAAW,OAAO,IAAI,EAAG,CAAE,SAAU,EAAQ,OAAO,WAEpD,OAAO,KAAK,QAAQ,UAAU,SAAS,IACrC,EAAW,SAAS,IAAI,EAAG,CAAE,CAAC,GAAM,EAAQ,QAAQ,SAAS,IAAO,GAExE,CA5BA,OAAO,QAAU","file":"/npm/node-process-metrics-prometheus@0.1.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/node-process-metrics-prometheus@0.1.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\nconst EventEmitter = require('events');\nconst NodeProcessMetrics = require('node-process-metrics');\nconst Prom = require('prom-dress');\n\nconst defaults = { registries: [Prom.defaultRegistry] };\n\n\nclass PrometheusNodeProcessEmitter extends EventEmitter {\n  constructor (options) {\n    super();\n\n    const settings = Object.assign({}, defaults, options);\n\n    if (settings.metrics === undefined) {\n      this._metrics = new NodeProcessMetrics();\n    } else if (!(settings.metrics instanceof NodeProcessMetrics)) {\n      throw new TypeError('metrics must be an instance of NodeProcessMetrics');\n    } else {\n      this._metrics = settings.metrics;\n    }\n\n    this._metrics.on('metrics', emitMetrics.bind(this));\n\n    const registries = settings.registries;\n    this._registries = registries;\n\n    if (!Array.isArray(settings.registries)) {\n      throw new TypeError('registries must be a CollectorRegistry array');\n    }\n\n    this._collectors = {\n      process: new Prom.Gauge({\n        name: 'nodejs_process_configuration',\n        help: 'Node.js process configuration data.',\n        labels: ['execPath', 'mainModule', 'title', 'pid'],\n        registries\n      }),\n      system: new Prom.Gauge({\n        name: 'nodejs_system_configuration',\n        help: 'Node.js system configuration data.',\n        labels: ['arch', 'hostname', 'platform'],\n        registries\n      }),\n      versions: new Prom.Gauge({\n        name: 'nodejs_versions',\n        help: 'Node.js version data.',\n        labels: Object.keys(process.versions),\n        registries\n      }),\n      heapTotal: new Prom.Gauge({\n        name: 'nodejs_process_heap_total_bytes',\n        help: 'Process total heap size in bytes.',\n        registries\n      }),\n      heap: new Prom.Gauge({\n        name: 'process_heap_bytes',\n        help: 'Process heap size in bytes.',\n        registries\n      }),\n      external: new Prom.Gauge({\n        name: 'nodejs_process_external_bytes',\n        help: 'Process external memory usage size in bytes.',\n        registries\n      }),\n      rss: new Prom.Gauge({\n        name: 'process_resident_memory_bytes',\n        help: 'Resident memory size in bytes.',\n        registries\n      }),\n      totalmem: new Prom.Gauge({\n        name: 'nodejs_system_totalmem_bytes',\n        help: 'System total memory size in bytes.',\n        registries\n      }),\n      freemem: new Prom.Gauge({\n        name: 'nodejs_system_freemem_bytes',\n        help: 'System free memory size in bytes.',\n        registries\n      }),\n      processStartTime: new Prom.Gauge({\n        name: 'process_start_time_seconds',\n        help: 'Start time of the process since unix epoch in seconds.',\n        registries\n      }),\n      systemStartTime: new Prom.Gauge({\n        name: 'nodejs_system_start_time_seconds',\n        help: 'Start time of the system since unix epoch in seconds.',\n        registries\n      }),\n      loop: new Prom.Gauge({\n        name: 'nodejs_event_loop_delay',\n        help: 'Delay of the Node.js event loop.',\n        registries\n      }),\n      handles: new Prom.Gauge({\n        name: 'nodejs_active_handles',\n        help: 'Number of active handles.',\n        registries\n      }),\n      requests: new Prom.Gauge({\n        name: 'nodejs_active_requests',\n        help: 'Number of active requests.',\n        registries\n      }),\n      loadavg: new Prom.Gauge({\n        name: 'nodejs_system_loadavg',\n        help: 'Operating system 1, 5, and 15 minute load averages.',\n        labels: ['span'],\n        registries\n      })\n    };\n\n    this._initialized = false;\n  }\n\n  metrics () {\n    const pm = this._metrics.metrics();\n\n    if (this._initialized === false) {\n      this._initialized = true;\n      initMetrics(this, pm);\n    }\n\n    this._collectors.heapTotal.set(pm.process.memoryUsage.heapTotal);\n    this._collectors.heap.set(pm.process.memoryUsage.heapUsed);\n    this._collectors.external.set(pm.process.memoryUsage.external);\n    this._collectors.rss.set(pm.process.memoryUsage.rss);\n    this._collectors.freemem.set(pm.system.freemem);\n    this._collectors.loop.set(Number.isNaN(pm.loop) ? 0 : pm.loop);\n    this._collectors.handles.set(pm.handles);\n    this._collectors.requests.set(pm.requests);\n    this._collectors.loadavg.set(pm.system.loadavg[0], { span: '1min' });\n    this._collectors.loadavg.set(pm.system.loadavg[1], { span: '5min' });\n    this._collectors.loadavg.set(pm.system.loadavg[2], { span: '15min' });\n\n    if (this._registries.length === 0) {\n      return null;\n    } else if (this._registries.length === 1) {\n      return this._registries[0].report();\n    }\n\n    return this._registries.map((registry) => {\n      return registry.report();\n    });\n  }\n\n  destroy () {\n    this._registries.forEach((registry) => {\n      for (const key in this._collectors) {\n        registry.unregister(this._collectors[key]);\n      }\n    });\n\n    this._metrics = null;\n    this._registries = null;\n    this._collectors = null;\n  }\n}\n\nmodule.exports = PrometheusNodeProcessEmitter;\n\n\nfunction emitMetrics (metrics) {\n  this.emit('metrics', this.metrics());\n}\n\n\nfunction initMetrics (ee, metrics) {\n  const collectors = ee._collectors;\n  const now = Date.now();\n  const processStartTimeSec = Math.round((now / 1000) - metrics.process.uptime);\n  const systemStartTimeSec = Math.round((now / 1000) - metrics.system.uptime);\n\n  collectors.processStartTime.set(processStartTimeSec);\n  collectors.systemStartTime.set(systemStartTimeSec);\n  collectors.totalmem.set(metrics.system.totalmem);\n  collectors.process.set(1, { execPath: metrics.process.execPath });\n  collectors.process.set(1, { mainModule: metrics.process.mainModule });\n  collectors.process.set(1, { title: metrics.process.title });\n  collectors.process.set(1, { pid: metrics.process.pid });\n  collectors.system.set(1, { arch: metrics.system.arch });\n  collectors.system.set(1, { hostname: metrics.system.hostname });\n  collectors.system.set(1, { platform: metrics.system.platform });\n\n  Object.keys(process.versions).forEach((key) => {\n    collectors.versions.set(1, { [key]: metrics.process.versions[key] });\n  });\n}\n"]}