lakutata
Version:
An IoC-based universal application framework.
270 lines (187 loc) • 7.03 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, {
value: "Module"
});
const e = require("node:os");
const s = require("../../../vendor/Package.16.cjs");
const i = require("../../lib/core/Component.cjs");
require("../../../vendor/Package.1.cjs");
require("../../../vendor/Package.3.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.4.cjs");
require("../../../vendor/Package.5.cjs");
require("../../exceptions/di/LifetimeLockedException.cjs");
require("../../lib/base/abstracts/Exception.cjs");
require("../../lib/base/internal/BasicInfo.cjs");
require("../../lib/helpers/As.cjs");
require("../../../vendor/Package.6.cjs");
require("../../../vendor/Package.7.cjs");
require("../../lib/base/internal/ThrowWarning.cjs");
require("../../lib/helpers/Templating.cjs");
require("../../lib/base/internal/CamelCase.cjs");
require("../../lib/helpers/NoCase.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.2.cjs");
require("../../lib/base/internal/DataValidator.cjs");
require("node:util/types");
require("../../lib/validation/VLD.cjs");
require("../../../vendor/Package.11.cjs");
require("url");
require("../../../vendor/Package.10.cjs");
require("../../exceptions/dto/InvalidValueException.cjs");
require("../../../vendor/Package.9.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("../../../vendor/Package.8.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("../../lib/helpers/DevNull.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;
#c=0;
#l=0;
#o=0;
#d=0;
#h=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.#c) this.#c = t;
this.#c = this.#c < t ? t : this.#c;
const a = this.#a.map((e => e.heapUsed));
const n = s.min(a);
const c = s.max(a);
if (!this.#l) this.#l = n;
this.#l = this.#l > n ? n : this.#l;
if (!this.#o) this.#o = c;
this.#o = this.#o < c ? c : this.#o;
const l = this.#a.map((e => e.external));
const o = s.min(l);
const d = s.max(l);
if (!this.#d) this.#d = o;
this.#d = this.#d > o ? o : this.#d;
if (!this.#h) this.#h = d;
this.#h = this.#h < d ? d : this.#h;
return {
physicalTotal: this.#r,
physicalUsed: e.rss,
physicalUsage: parseFloat((e.rss / this.#r * 100).toFixed(this.#e)),
physicalUsedMin: this.#n,
physicalUsedMax: this.#c,
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.#l,
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.#d,
externalUsedMax: this.#h,
externalUsedAvg: parseFloat(s.mean(l).toFixed(this.#e)),
externalUsedP50: s.quantile(l, .5),
externalUsedP90: s.quantile(l, .9),
externalUsedP95: s.quantile(l, .95),
externalUsedP99: s.quantile(l, .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;