UNPKG

lakutata

Version:

An IoC-based universal application framework.

263 lines (184 loc) 6.99 kB
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */ "use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const e = require("node:os"); const s = require("../../../vendor/Package.internal.53.cjs"); const i = require("../../lib/core/Component.cjs"); require("../../../vendor/Package.internal.3.cjs"); require("../../../vendor/Package.internal.4.cjs"); require("../../lib/base/async-constructor/AsyncConstructor.cjs"); require("../../lib/base/async-constructor/Append.cjs"); require("../../lib/helpers/IsPromiseLike.cjs"); require("../../lib/helpers/IsPromise.cjs"); require("util/types"); require("../../decorators/di/Lifetime.cjs"); require("../../lib/base/internal/ObjectLifetime.cjs"); require("../../constants/DIMetadataKey.cjs"); require("../../../vendor/Package.internal.1.cjs"); require("../../../vendor/Package.internal.2.cjs"); require("../../exceptions/di/LifetimeLockedException.cjs"); require("../../lib/base/abstracts/Exception.cjs"); require("../../../vendor/Package.internal.5.cjs"); require("../../lib/helpers/As.cjs"); require("../../../vendor/Package.internal.6.cjs"); require("../../lib/base/internal/ThrowWarning.cjs"); require("../../lib/helpers/Templating.cjs"); require("../../lib/base/internal/CamelCase.cjs"); require("../../lib/helpers/NoCase.cjs"); require("../../lib/helpers/DevNull.cjs"); require("../../exceptions/MethodNotFoundException.cjs"); require("../../lib/ioc/DependencyInjectionContainer.cjs"); require("util"); require("../../lib/ioc/Errors.cjs"); require("../../exceptions/di/DependencyInjectionException.cjs"); require("../../lib/base/internal/ConstructorSymbol.cjs"); require("node:crypto"); require("../../../vendor/Package.internal.7.cjs"); require("../../lib/base/internal/DataValidator.cjs"); require("node:util/types"); require("../../lib/validation/VLD.cjs"); require("url"); require("../../exceptions/dto/InvalidValueException.cjs"); require("../../../vendor/Package.internal.8.cjs"); require("../../lib/helpers/IsHtml.cjs"); require("../../lib/helpers/IsXML.cjs"); require("../../constants/DTOMetadataKey.cjs"); require("../../lib/helpers/ObjectConstructor.cjs"); require("../../lib/helpers/ObjectParentConstructors.cjs"); require("../../lib/helpers/ObjectParentConstructor.cjs"); require("../../lib/helpers/ObjectPrototype.cjs"); require("../../lib/ioc/InjectionMode.cjs"); require("../../lib/ioc/Lifetime.cjs"); require("../../lib/ioc/ListModules.cjs"); require("os"); require("path"); require("stream"); require("events"); require("fs"); require("../../lib/ioc/Utils.cjs"); require("../../lib/ioc/FunctionTokenizer.cjs"); require("../../lib/ioc/LoadModules.cjs"); require("../../lib/ioc/Resolvers.cjs"); require("../../lib/ioc/ParamParser.cjs"); require("../../lib/base/internal/ObjectWeakRefs.cjs"); require("../../lib/base/internal/ConfigurableRecordsInjection.cjs"); require("../../lib/base/internal/ObjectConfiguration.cjs"); require("../../lib/base/internal/ObjectInjection.cjs"); require("../../lib/base/internal/ObjectContainer.cjs"); require("../../decorators/dto/Expect.cjs"); require("../../decorators/dto/IndexSignature.cjs"); require("../../decorators/dto/Accept.cjs"); require("../../lib/base/internal/MethodValidation.cjs"); require("../../exceptions/dto/InvalidMethodAcceptException.cjs"); require("../../exceptions/dto/InvalidMethodReturnException.cjs"); require("../../lib/helpers/IsEmptyObject.cjs"); require("../../lib/base/EventEmitter.cjs"); require("../../lib/core/Provider.cjs"); function r(e) { if (e && e.__esModule) return e; const s = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } }); if (e) { for (const i in e) { if (i !== "default") { const r = Object.getOwnPropertyDescriptor(e, i); Object.defineProperty(s, i, r.get ? r : { enumerable: true, get: () => e[i] }); } } } s.default = e; return Object.freeze(s); } const t = r(e); class MemoryMonitor extends i.Component { #e=2; #s=1e3; #i=65535; #r=t.totalmem(); #t; #a=[]; #n=0; #l=0; #c=0; #o=0; #h=0; #d=0; get statistics() { const e = this.#a[this.#a.length - 1]; const i = this.#a.map(e => e.rss); const r = s.min(i); const t = s.max(i); if (!this.#n) this.#n = r; this.#n = this.#n > r ? r : this.#n; if (!this.#l) this.#l = t; this.#l = this.#l < t ? t : this.#l; const a = this.#a.map(e => e.heapUsed); const n = s.min(a); const l = s.max(a); if (!this.#c) this.#c = n; this.#c = this.#c > n ? n : this.#c; if (!this.#o) this.#o = l; this.#o = this.#o < l ? l : this.#o; const c = this.#a.map(e => e.external); const o = s.min(c); const h = s.max(c); if (!this.#h) this.#h = o; this.#h = this.#h > o ? o : this.#h; if (!this.#d) this.#d = h; this.#d = this.#d < h ? h : this.#d; return { physicalTotal: this.#r, physicalUsed: e.rss, physicalUsage: parseFloat((e.rss / this.#r * 100).toFixed(this.#e)), physicalUsedMin: this.#n, physicalUsedMax: this.#l, physicalUsedAvg: parseFloat(s.mean(i).toFixed(this.#e)), physicalUsedP50: s.quantile(i, .5), physicalUsedP90: s.quantile(i, .9), physicalUsedP95: s.quantile(i, .95), physicalUsedP99: s.quantile(i, .99), heapTotal: e.heapTotal, heapUsed: e.heapUsed, heapUsage: parseFloat((e.heapUsed / e.heapTotal * 100).toFixed(this.#e)), heapUsedMin: this.#c, heapUsedMax: this.#o, heapUsedAvg: parseFloat(s.mean(a).toFixed(this.#e)), heapUsedP50: s.quantile(a, .5), heapUsedP90: s.quantile(a, .9), heapUsedP95: s.quantile(a, .95), heapUsedP99: s.quantile(a, .99), externalUsed: e.external, externalUsedMin: this.#h, externalUsedMax: this.#d, externalUsedAvg: parseFloat(s.mean(c).toFixed(this.#e)), externalUsedP50: s.quantile(c, .5), externalUsedP90: s.quantile(c, .9), externalUsedP95: s.quantile(c, .95), externalUsedP99: s.quantile(c, .99) }; } sampleMemoryUsage() { this.#a.push(process.memoryUsage()); if (this.#a.length > this.#i) this.#a.shift(); } async init() { this.sampleMemoryUsage(); this.#t = setInterval(() => this.sampleMemoryUsage(), this.#s); } async destroy() { clearInterval(this.#t); } reset() { this.#a = []; this.sampleMemoryUsage(); } } exports.MemoryMonitor = MemoryMonitor;