Untitled
unknown
plain_text
2 years ago
37 kB
0
Indexable
Never
(() => { var __webpack_modules__ = { 279: (module, __unused_webpack_exports, __webpack_require__) => { const prom = (() => { const e = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : {}; function t(e, t, s, r) { Object.defineProperty(e, t, { get: s, set: r, enumerable: !0, configurable: !0 }) } const s = {}; const r = {}; let a = e.parcelRequire599d; a == null && ((a = function(e) { if (e in s) return s[e].exports; if (e in r) { const t = r[e]; delete r[e]; const a = { id: e, exports: {} }; return s[e] = a, t.call(a.exports, a, a.exports), a.exports } const i = new Error(`Cannot find module '${e}'`); throw i.code = "MODULE_NOT_FOUND", i }).register = function(e, t) { r[e] = t }, e.parcelRequire599d = a), a.register("dbipy", ((e, t) => { const s = a("akv27").getValueAsString; function r(e) { return e.replace(/\n/g, "\\n").replace(/\\(?!n)/g, "\\\\") } function i(e) { return typeof e !== "string" ? e : r(e).replace(/"/g, '\\"') } class n { constructor() { this._metrics = {}, this._collectors = [], this._defaultLabels = {} } getMetricsAsArray() { return Object.values(this._metrics) } async getMetricAsPrometheusString(e, t = null) { const a = await e.get(); const n = r(a.name); const l = `# HELP ${n} ${r(a.help)}`; const o = `# TYPE ${n} ${a.type}`; const c = Object.keys(this._defaultLabels); let u = ""; for (const e of a.values || []) { if (e.labels = e.labels || {}, c.length > 0) { e.labels = { ...e.labels }; for (const t of c) e.labels[t] = e.labels[t] || this._defaultLabels[t] } let r = e.metricName || a.name; const n = Object.keys(e.labels); const l = n.length; if (l > 0) { let t = ""; let s = 0; for (; s < l - 1; s++) t += `${n[s]}="${i(e.labels[n[s]])}",`; t += `${n[s]}="${i(e.labels[n[s]])}"`, r += `{${t}}` } u += `${r} ${s(e.value)}${t?` ${t}`:""}\n` } return `${l}\n${o}\n${u}`.trim() } async metrics(e = null) { const t = []; for (const s of this.getMetricsAsArray()) t.push(this.getMetricAsPrometheusString(s, e)); return `${(await Promise.all(t)).join("\n\n")}\n` } registerMetric(e) { if (this._metrics[e.name] && this._metrics[e.name] !== e) throw new Error(`A metric with the name ${e.name} has already been registered.`); this._metrics[e.name] = e } clear() { this._metrics = {}, this._defaultLabels = {} } async getMetricsAsJSON() { const e = []; const t = Object.keys(this._defaultLabels); const s = []; for (const e of this.getMetricsAsArray()) s.push(e.get()); const r = await Promise.all(s); for (const s of r) { if (s.values && t.length > 0) for (const e of s.values) { e.labels = { ...e.labels }; for (const s of t) e.labels[s] = e.labels[s] || this._defaultLabels[s] } e.push(s) } return e } removeSingleMetric(e) { delete this._metrics[e] } getSingleMetricAsString(e) { return this.getMetricAsPrometheusString(this._metrics[e]) } getSingleMetric(e) { return this._metrics[e] } setDefaultLabels(e) { this._defaultLabels = e } resetMetrics() { for (const e in this._metrics) this._metrics[e].reset() } get contentType() { return "text/plain; version=0.0.4; charset=utf-8" } static merge(e) { const t = new n; return e.reduce(((e, t) => e.concat(t.getMetricsAsArray())), []).forEach(t.registerMetric, t), t } } e.exports = n, e.exports.globalRegistry = new n })), a.register("akv27", ((s, r) => { let a; let i; let n; let l; let o; let c; let u; t(s.exports, "getValueAsString", (() => a), (e => a = e)), t(s.exports, "hrtime", (() => i), (e => i = e)), t(s.exports, "removeLabels", (() => n), (e => n = e)), t(s.exports, "setValue", (() => l), (e => l = e)), t(s.exports, "getLabels", (() => o), (e => o = e)), t(s.exports, "hashObject", (() => c), (e => c = e)), t(s.exports, "isObject", (() => u), (e => u = e)), a = function(e) { return Number.isNaN(e) ? "Nan" : Number.isFinite(e) ? `${e}` : e < 0 ? "-Inf" : "+Inf" }; const h = e.performance || {}; const b = h.now || h.mozNow || h.msNow || h.oNow || h.webkitNow || function() { return (new Date).getTime() }; function m(e) { let t = Object.keys(e); if (t.length === 0) return ""; t.length > 1 && (t = t.sort()); let s = ""; let r = 0; const a = t.length; for (; r < a - 1; r++) s += `${t[r]}:${e[t[r]]},`; return s += `${t[r]}:${e[t[r]]}`, s } i = function(e) { const t = .001 * b.call(h); let s = Math.floor(t); let r = Math.floor(t % 1 * 1e9); return e && (s -= e[0], r -= e[1], r < 0 && (s--, r += 1e9)), [s, r] }, n = function(e, t) { delete e[m(t)] }, l = function(e, t, s) { return e[m(s)] = { value: typeof t === "number" ? t : 0, labels: s || {} }, e }, o = function(e, t) { if (typeof t[0] === "object") return t[0]; if (e.length !== t.length) throw new Error("Invalid number of arguments"); const s = {}; for (let r = 0; r < e.length; r++) s[e[r]] = t[r]; return s }, c = m, u = function(e) { return e === Object(e) }; class g extends Map { add(e, t) { this.has(e) ? this.get(e).push(t) : this.set(e, [t]) } } })), a.register("4jGCD", ((e, s) => { let r; let a; let i; t(e.exports, "validateMetricName", (() => r), (e => r = e)), t(e.exports, "validateLabelName", (() => a), (e => a = e)), t(e.exports, "validateLabel", (() => i), (e => i = e)); const n = /^[a-zA-Z_:][a-zA-Z0-9_:]*$/; const l = /^[a-zA-Z_][a-zA-Z0-9_]*$/; r = function(e) { return n.test(e) }, a = function(e = []) { return e.every((e => l.test(e))) }, i = function(e, t) { for (const s in t) if (!e.includes(s)) throw new Error(`Added label "${s}" is not included in initial labelset: ${e}`) } })), a.register("lRKyl", ((e, t) => { const s = a("akv27"); const r = s.hashObject; const i = s.isObject; const n = s.getLabels; const l = s.removeLabels; const o = a("4jGCD").validateLabel; const c = a("5xkNv").Metric; function u(e, t, s = {}, r = "") { return e[r] ? e[r].value += t : e[r] = { value: t, labels: s }, e } e.exports = class extends c { inc(e, t) { let s; if (i(e) ? (s = r(e), o(this.labelNames, e)) : (t = e, e = {}), t && !Number.isFinite(t)) throw new TypeError(`Value is not a valid number: ${t}`); if (t < 0) throw new Error("It is not possible to decrease a counter"); t == null && (t = 1), u(this.hashMap, t, e, s) } reset() { this.hashMap = {}, this.labelNames.length === 0 && u(this.hashMap, 0) } async get() { if (this.collect) { const e = this.collect(); e instanceof Promise && await e } return { help: this.help, name: this.name, type: "counter", values: Object.values(this.hashMap), aggregator: this.aggregator } } labels(...e) { const t = n(this.labelNames, e) || {}; return { inc: this.inc.bind(this, t) } } remove(...e) { const t = n(this.labelNames, e) || {}; return o(this.labelNames, t), l.call(this, this.hashMap, t) } } })), a.register("5xkNv", ((e, t) => { const s = a("dbipy").globalRegistry; const r = a("akv27").isObject; const i = a("4jGCD"); const n = i.validateMetricName; const l = i.validateLabelName; e.exports = { Metric: class { constructor(e, t = {}) { if (!r(e)) throw new TypeError("constructor expected a config object"); if (Object.assign(this, { labelNames: [], registers: [s], aggregator: "sum" }, t, e), this.registers || (this.registers = [s]), !this.help) throw new Error("Missing mandatory help parameter"); if (!this.name) throw new Error("Missing mandatory name parameter"); if (!n(this.name)) throw new Error("Invalid metric name"); if (!l(this.labelNames)) throw new Error("Invalid label name"); if (this.collect && typeof this.collect !== "function") throw new Error('Optional "collect" parameter must be a function'); this.reset(); for (const e of this.registers) e.registerMetric(this) } reset() {} } } })), a.register("jxOKZ", ((e, t) => { const s = a("akv27"); const r = s.setValue; const i = s.getLabels; const n = s.hashObject; const l = s.isObject; const o = s.removeLabels; const c = s.hrtime; const u = a("4jGCD").validateLabel; const h = a("5xkNv").Metric; function b(e, t, s) { if (typeof s !== "number") throw new TypeError(`Value is not a valid number: ${s}`); u(e.labelNames, t), r(e.hashMap, s, t) } function m(e) { return l(e) ? e : {} } function g(e, t) { return l(e) ? t : e } e.exports = class extends h { set(e, t) { t = g(e, t), b(this, e = m(e), t) } reset() { this.hashMap = {}, this.labelNames.length === 0 && r(this.hashMap, 0, {}) } inc(e, t) { void 0 === (t = g(e, t)) && (t = 1), b(this, e = m(e), this._getValue(e) + t) } dec(e, t) { void 0 === (t = g(e, t)) && (t = 1), b(this, e = m(e), this._getValue(e) - t) } setToCurrentTime(e) { const t = Date.now() / 1e3; void 0 === e ? this.set(t) : this.set(e, t) } startTimer(e) { const t = c(); return s => { const r = c(t); const a = r[0] + r[1] / 1e9; return this.set({ ...e, ...s }, a), a } } async get() { if (this.collect) { const e = this.collect(); e instanceof Promise && await e } return { help: this.help, name: this.name, type: "gauge", values: Object.values(this.hashMap), aggregator: this.aggregator } } _getValue(e) { const t = n(e || {}); return this.hashMap[t] ? this.hashMap[t].value : 0 } labels(...e) { const t = i(this.labelNames, e); return u(this.labelNames, t), { inc: this.inc.bind(this, t), dec: this.dec.bind(this, t), set: this.set.bind(this, t), setToCurrentTime: this.setToCurrentTime.bind(this, t), startTimer: this.startTimer.bind(this, t) } } remove(...e) { const t = i(this.labelNames, e); u(this.labelNames, t), o.call(this, this.hashMap, t) } } })); const i = a("akv27").getLabels; async function n(e = "", t = {}, s = {}) { const r = typeof t === "string"; const a = r ? t : JSON.stringify(t); return await fetch(e, { method: "POST", headers: { "Content-Type": r ? "text/plain" : "application/json", "Content-Length": a.length, ...s }, body: a }) } const l = { register: a("dbipy").globalRegistry, Registry: a("dbipy"), contentType: a("dbipy").globalRegistry.contentType, validateMetricName: a("4jGCD").validateMetricName, Counter: a("lRKyl"), Gauge: a("jxOKZ"), postData: n, async postWithAuth(e, t, s) { if (s) { return await n(e, t, { authorization: s }) } return await n(e, t) }, async pushToVM(e, t) { return await l.postWithAuth(e, await l.register.metrics(), t) } }; const o = server.region + server.id; function c(e, t) { return typeof e === "number" ? { labels: { server: o }, value: e } : (e ? Array.isArray(e) && !e.includes(o) ? e.push(o) : e.server || (e.server = o) : e = { server: o }, { labels: e, value: t }) } l.ServerCounter = class extends l.Counter { constructor(e) { e || (e = {}), e.labelNames || (e.labelNames = []), e.labelNames.includes("server") || e.labelNames.push("server"), super(e) } inc(e, t) { const { labels: s, value: r } = c(e, t); return super.inc(s, r) } labels(...e) { const t = i(this.labelNames, e) || {}; return t.server = o, super.labels(t) } remove(...e) { const t = i(this.labelNames, e) || {}; return t.server = o, super.remove(t) } }, l.ServerGauge = class extends l.Gauge { constructor(e) { e || (e = {}), e.labelNames || (e.labelNames = []), e.labelNames.includes("server") || e.labelNames.push("server"), super(e) } set(e, t) { const { labels: s, value: r } = c(e, t); return super.set(s, r) } inc(e, t) { const { labels: s, value: r } = c(e, t); return super.inc(s, r) } dec(e, t) { const { labels: s, value: r } = c(e, t); return super.dec(s, r) } labels(...e) { const t = i(this.labelNames, e) || {}; return t.server = o, super.labels(t) } remove(...e) { const t = i(this.labelNames, e) || {}; return t.server = o, super.remove(t) } }; globalThis.prom = l; return globalThis.prom })(); module.exports.h = prom } }; var __webpack_module_cache__ = {}; function __webpack_require__(moduleId) { var cachedModule = __webpack_module_cache__[moduleId]; if (cachedModule !== undefined) { return cachedModule.exports } var module = __webpack_module_cache__[moduleId] = { exports: {} }; __webpack_modules__[moduleId](module, module.exports, __webpack_require__); return module.exports }(() => { __webpack_require__.d = (exports, definition) => { for (var key in definition) { if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }) } } } })(); (() => { __webpack_require__.g = function() { if (typeof globalThis === "object") return globalThis; try { return this || new Function("return this")() } catch (e) { if (typeof window === "object") return window } }() })(); (() => { __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) })(); var __webpack_exports__ = {}; (() => { "use strict"; var _prom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(279); const cumulatedXp = [0, 0, 200, 450, 760, 1140, 1610, 2190, 2910, 3810, 4910, 6210, 7810, 9810, 12310, 15410, 19210, 23910, 29710, 36910, 45910, 56910, 69910, 85910, 105910, 130910, 161910, 199910, 246910, 304910, 376910, 466910, 576910, 706910, 866910, 1066910, 1316910, 1626910, 2006910, 2476910, 3056910, 3776910, 4676910, 5776910, 7076910, 8676910, 10676910, 13176910, 16276910, 20076910, 24776910, 30576910, 37776910, 46776910, 57776910, 70776910, 86776910, 106776910, 131776910, 162776910, 200776910, 247776910, 304776910, 373776910, 457776910, 557776910, 677776910, 817776910, 987776910, 1187776910, 1427776910, 1717776910, 2067776910, 2487776910, 2997776910, 3617776910, 4367776910, 5267776910, 6267776910, 7467776910, 8867776910, 10467776910, 12467776910, 14967776910, 18067776910, 21967776910, 26867776910, 33067776910, 40967776910, 50967776910, 62967776910, 77967776910, 97967776910, 124967776910, 161967776910, 211967776910, 279967776910, 372967776910, 492967776910, 652967776910, 872967776910, 1172967776910, 1502967776910, 1862967776910, 2252967776910, 2672967776910, 3132967776910, 3632967776910, 4182967776910, 4782967776910, 5442967776910, 6162967776910, 6952967776910, 7812967776910, 8752967776910, 9752967776910, 0x9dee74a028e, 0xaf64cdce28e, 0xc24fae6aa8e, 0xd6af1675a8e, 0xec8305ef28e, 17852967776910, 19552967776910, 21352967776910, 23252967776910, 25252967776910, 27452967776910, 29852967776910, 32452967776910, 35252967776910, 38252967776910, 41552967776910, 45152967776910, 49052967776910, 53252967776910, 57852967776910, 62852967776910, 68352967776910, 74352967776910, 80952967776910, 88152967776910, 96052967776910, 0x5f2e6af8128e, 0x67bb06a1428e, 0x70d35513e28e, 0x7ad4782b928e, 0x85be6fe8528e, 0x91913c4a228e, 0x9e4cdd51028e, 0xabf152fcf28e, 0xba7e9d4df28e, 0xc9f4bc44028e, 0xda53afdf228e, 0xeb9b781f528e, 0xfdcc1504928e, 301052967776910, 325052967776910, 351052967776910, 379052967776910, 409052967776910, 442052967776910, 478052967776910, 517052967776910, 559052967776910, 605052967776910, 655052967776910, 710052967776910, 770052967776910, 836052967776910, 908052967776910, 987052967776910, 0x3cfef9cf8328e, 0x4256db194128e, 0x48060c20e528e, 0x4e46c20fb328e, 0x5518fce5ab28e, 0x5c7cbca2cd28e, 0x647201471928e, 0x6cf8cad28f28e, 0x761119452f28e, 0x7fbaec9ef928e, 0x89f644dfed28e, 0x94c322080b28e, 0xa02184175328e, 0xaca2eff4ef28e, 0xba4765a0df28e, 0xc90ee51b2328e, 0xd8f96e63bb28e, 0xea07017aa728e, 0xfcc923471128e, 4807052967776910, 5197052967776910, 5617052967776910, 6077052967776910, 6577052967776910, 7127052967776910, 7727052967776910, 8387052967776910, 9107052967776910, 9897052967776910, 0x26377b90f9728e]; _prom__WEBPACK_IMPORTED_MODULE_0__.h.register.setDefaultLabels({ character: "Melira" }); const char = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Gauge({ name: "al_character_info", help: "Informations regarding the character", labelNames: ["name", "class", "owner"] }); char.set({ name: "Melira", class: "warrior", owner: character.owner }, 1); const serv = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Gauge({ name: "al_server_info", help: "Informations regarding the server", labelNames: ["fullname", "mode", "pvp", "region", "id"] }); serv.set({ fullname: server.region + server.id, mode: server.mode, pvp: `${server.pvp}`, region: server.region, id: server.id }, 1); const kills = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_kills_total", help: "How many kills my characters did", labelNames: ["enemy"] }); const damage_dealt = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_damage_dealt_total", help: "How much damage my characters dealt", labelNames: ["damage_type", "monster", "projectile", "source"] }); const damage_received = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_damage_received_total", help: "How much damage my characters received", labelNames: ["damage_type", "monster", "projectile", "source"] }); const used_skills = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_used_skills_total", help: "How many skills my characters used", labelNames: ["skill"] }); const deaths = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_deaths_total", help: "How many deaths my characters suffered" }); const opened_chests = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_opened_chests_total", help: "How many chests did my characters open", labelNames: ["skin"] }); const looted_items = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_looted_items_total", help: "How many items did my characters loot", labelNames: ["item", "level"] }); const looted_gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_looted_gold_total", help: "How much gold did my characters loot" }); const bought_items = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_bought_items_total", help: "How many items I bought", labelNames: ["item", "from"] }); const spent_gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_spent_gold_total", help: "How many gold I spent", labelNames: ["for"] }); const sold_items = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_sold_items_total", help: "How many items I sold", labelNames: ["item", "to"] }); const sales_gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerCounter({ name: "al_sales_gold_total", help: "How many gold I gained from sales", labelNames: ["to"] }); const ping = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.ServerGauge({ name: "al_ping_seconds", help: "How is the ping with the server", collect() { this.set(parent.pings.reduce(((a, b) => a + b)) / parent.pings.length / 1e3) } }); const level = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Gauge({ name: "al_level_total", help: "How many levels my characters have", collect() { this.set(character.level) } }); const exp = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Gauge({ name: "al_exp_total", help: "How many exp points my characters have", collect() { this.set(cumulatedXp[character.level] + character.xp) } }); const gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Gauge({ name: "al_gold_total", help: "How much gold do I have", collect() { this.set(character.gold) } }); const sent_gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_sent_gold_total", help: "How much gold have I sent to others", labelNames: ["to"] }); const received_gold = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_received_gold_total", help: "How much gold have I received from others", labelNames: ["from"] }); const failed_upgrades = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_failed_upgrades_total", help: "How many upgrades I failed", labelNames: ["item", "level"] }); const success_upgrades = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_success_upgrades_total", help: "How many upgrades I did successfully", labelNames: ["item", "level"] }); const failed_compounds = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_failed_compounds_total", help: "How many compounds I failed", labelNames: ["item", "level"] }); const success_compounds = new _prom__WEBPACK_IMPORTED_MODULE_0__.h.Counter({ name: "al_success_compounds_total", help: "How many compounds I did successfully", labelNames: ["item", "level"] }); character.on("buy", (data => { if (!data.q) { data.q = 1 } bought_items.labels({ item: data.name, from: "npc" }).inc(data.q); spent_gold.labels({ for: "npc" }).inc(data.cost) })); character.on("sell", (data => { if (!data.item.q) { data.item.q = 1 } sold_items.labels({ item: data.item.name, to: "npc" }).inc(data.item.q); sales_gold.labels({ to: "npc" }).inc(data.gold) })); game.on("sbuy", (({ name, item }) => { if (name !== "Melira") { return } if (!item.q) { item.q = 1 } delete item.rid; bought_items.labels({ item: item.name, from: "ponty" }).inc(item.q); const ponty_mult = item.cash ? G.multipliers.secondhands_cash_mult : G.multipliers.secondhands_mult; spent_gold.labels({ for: "ponty" }).inc(calculate_item_value(item) * ponty_mult) })); game.on("fbuy", (({ name, item }) => { if (name !== "Melira") { return } if (!item.q) { item.q = 1 } delete item.rid; bought_items.labels({ item: item.name, from: "lost_and_found" }).inc(item.q); spent_gold.labels({ for: "lost_and_found" }).inc(calculate_item_value(item) * G.multipliers.lostandfound_mult) })); character.on("gold_sent", (data => { if ("response" in data) { sent_gold.inc({ to: data.name }, data.gold) } })); character.on("gold_received", (data => { if ("response" in data) { received_gold.inc({ from: data.name }, data.gold) } })); character.on("loot", (data => { looted_gold.inc(data.gold); if (data.items && data.items.length) { for (const item of data.items) { if (item.looter === "Melira") { looted_items.labels({ item: item.name, level: item.level ?? 0 }).inc(item.q ?? 1) } } } })); character.on("target_hit", (data => { const entity = parent.entities[data.target]; if (data.kill) { kills.labels({ enemy: entity?.mtype ?? "_unknown" }).inc() } if (typeof data.damage === "number") { damage_dealt.labels({ damage_type: data.damage_type ?? "_unknown", monster: entity?.mtype ?? "_unknown", projectile: data.projectile ?? "_unknown", source: data.source ?? "_unknown" }).inc(data.damage) } })); character.on("hit", (data => { const entity = parent.entities[data.actor]; if (typeof data.damage === "number") { damage_received.labels({ damage_type: data.damage_type ?? "_unknown", monster: entity?.mtype ?? "_unknown", projectile: data.projectile ?? "_unknown", source: data.source ?? "_unknown" }).inc(data.damage) } if (data.kill) { deaths.inc() } })); const PUBLISH_INTERVAL = 1e3 * 1; const METRICS_POST_URL = "http://localhost:3000/api/v1/import/prometheus"; const METRICS_AUTH_TOKEN = "test"; async function publish_metrics() { await _prom__WEBPACK_IMPORTED_MODULE_0__.h.pushToVM(METRICS_POST_URL, `Basic ${METRICS_AUTH_TOKEN}`) } async function loop_publish_metrics() { try { await publish_metrics() } catch (err) { log("Error while pushing metrics.") } setTimeout(loop_publish_metrics, PUBLISH_INTERVAL) } loop_publish_metrics() })() })();