lakutata
Version:
An IoC-based universal application framework.
233 lines (158 loc) • 6.07 kB
JavaScript
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */
import * as e from "node:os";
import { m as s, a as i, q as t, b as a } from "../../../vendor/Package.internal.53.mjs";
import { Component as o } from "../../lib/core/Component.mjs";
import "../../../vendor/Package.internal.3.mjs";
import "../../../vendor/Package.internal.4.mjs";
import "../../lib/base/async-constructor/AsyncConstructor.mjs";
import "../../lib/base/async-constructor/Append.mjs";
import "../../lib/helpers/IsPromiseLike.mjs";
import "../../lib/helpers/IsPromise.mjs";
import "util/types";
import "../../decorators/di/Lifetime.mjs";
import "../../lib/base/internal/ObjectLifetime.mjs";
import "../../constants/DIMetadataKey.mjs";
import "../../../vendor/Package.internal.1.mjs";
import "../../../vendor/Package.internal.2.mjs";
import "../../exceptions/di/LifetimeLockedException.mjs";
import "../../lib/base/abstracts/Exception.mjs";
import "../../../vendor/Package.internal.5.mjs";
import "../../lib/helpers/As.mjs";
import "../../../vendor/Package.internal.6.mjs";
import "../../lib/base/internal/ThrowWarning.mjs";
import "../../lib/helpers/Templating.mjs";
import "../../lib/base/internal/CamelCase.mjs";
import "../../lib/helpers/NoCase.mjs";
import "../../lib/helpers/DevNull.mjs";
import "../../exceptions/MethodNotFoundException.mjs";
import "../../lib/ioc/DependencyInjectionContainer.mjs";
import "util";
import "../../lib/ioc/Errors.mjs";
import "../../exceptions/di/DependencyInjectionException.mjs";
import "../../lib/base/internal/ConstructorSymbol.mjs";
import "node:crypto";
import "../../../vendor/Package.internal.7.mjs";
import "../../lib/base/internal/DataValidator.mjs";
import "node:util/types";
import "../../lib/validation/VLD.mjs";
import "url";
import "../../exceptions/dto/InvalidValueException.mjs";
import "../../../vendor/Package.internal.8.mjs";
import "../../lib/helpers/IsHtml.mjs";
import "../../lib/helpers/IsXML.mjs";
import "../../constants/DTOMetadataKey.mjs";
import "../../lib/helpers/ObjectConstructor.mjs";
import "../../lib/helpers/ObjectParentConstructors.mjs";
import "../../lib/helpers/ObjectParentConstructor.mjs";
import "../../lib/helpers/ObjectPrototype.mjs";
import "../../lib/ioc/InjectionMode.mjs";
import "../../lib/ioc/Lifetime.mjs";
import "../../lib/ioc/ListModules.mjs";
import "os";
import "path";
import "stream";
import "events";
import "fs";
import "../../lib/ioc/Utils.mjs";
import "../../lib/ioc/FunctionTokenizer.mjs";
import "../../lib/ioc/LoadModules.mjs";
import "../../lib/ioc/Resolvers.mjs";
import "../../lib/ioc/ParamParser.mjs";
import "../../lib/base/internal/ObjectWeakRefs.mjs";
import "../../lib/base/internal/ConfigurableRecordsInjection.mjs";
import "../../lib/base/internal/ObjectConfiguration.mjs";
import "../../lib/base/internal/ObjectInjection.mjs";
import "../../lib/base/internal/ObjectContainer.mjs";
import "../../decorators/dto/Expect.mjs";
import "../../decorators/dto/IndexSignature.mjs";
import "../../decorators/dto/Accept.mjs";
import "../../lib/base/internal/MethodValidation.mjs";
import "../../exceptions/dto/InvalidMethodAcceptException.mjs";
import "../../exceptions/dto/InvalidMethodReturnException.mjs";
import "../../lib/helpers/IsEmptyObject.mjs";
import "../../lib/base/EventEmitter.mjs";
import "../../lib/core/Provider.mjs";
class MemoryMonitor extends o {
#e=2;
#s=1e3;
#i=65535;
#t=e.totalmem();
#a;
#o=[];
#r=0;
#n=0;
#p=0;
#m=0;
#l=0;
#h=0;
get statistics() {
const e = this.#o[this.#o.length - 1];
const o = this.#o.map(e => e.rss);
const r = s(o);
const n = i(o);
if (!this.#r) this.#r = r;
this.#r = this.#r > r ? r : this.#r;
if (!this.#n) this.#n = n;
this.#n = this.#n < n ? n : this.#n;
const p = this.#o.map(e => e.heapUsed);
const m = s(p);
const l = i(p);
if (!this.#p) this.#p = m;
this.#p = this.#p > m ? m : this.#p;
if (!this.#m) this.#m = l;
this.#m = this.#m < l ? l : this.#m;
const h = this.#o.map(e => e.external);
const c = s(h);
const d = i(h);
if (!this.#l) this.#l = c;
this.#l = this.#l > c ? c : this.#l;
if (!this.#h) this.#h = d;
this.#h = this.#h < d ? d : this.#h;
return {
physicalTotal: this.#t,
physicalUsed: e.rss,
physicalUsage: parseFloat((e.rss / this.#t * 100).toFixed(this.#e)),
physicalUsedMin: this.#r,
physicalUsedMax: this.#n,
physicalUsedAvg: parseFloat(a(o).toFixed(this.#e)),
physicalUsedP50: t(o, .5),
physicalUsedP90: t(o, .9),
physicalUsedP95: t(o, .95),
physicalUsedP99: t(o, .99),
heapTotal: e.heapTotal,
heapUsed: e.heapUsed,
heapUsage: parseFloat((e.heapUsed / e.heapTotal * 100).toFixed(this.#e)),
heapUsedMin: this.#p,
heapUsedMax: this.#m,
heapUsedAvg: parseFloat(a(p).toFixed(this.#e)),
heapUsedP50: t(p, .5),
heapUsedP90: t(p, .9),
heapUsedP95: t(p, .95),
heapUsedP99: t(p, .99),
externalUsed: e.external,
externalUsedMin: this.#l,
externalUsedMax: this.#h,
externalUsedAvg: parseFloat(a(h).toFixed(this.#e)),
externalUsedP50: t(h, .5),
externalUsedP90: t(h, .9),
externalUsedP95: t(h, .95),
externalUsedP99: t(h, .99)
};
}
sampleMemoryUsage() {
this.#o.push(process.memoryUsage());
if (this.#o.length > this.#i) this.#o.shift();
}
async init() {
this.sampleMemoryUsage();
this.#a = setInterval(() => this.sampleMemoryUsage(), this.#s);
}
async destroy() {
clearInterval(this.#a);
}
reset() {
this.#o = [];
this.sampleMemoryUsage();
}
}
export { MemoryMonitor };