lakutata
Version:
An IoC-based universal application framework.
200 lines (125 loc) • 4.98 kB
JavaScript
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */
import { PerformanceObserver as t } from "node:perf_hooks";
import { q as i, k as s, b as o } from "../../../vendor/Package.internal.53.mjs";
import { Component as e } 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 HttpRequestMonitor extends e {
constructor() {
super(...arguments);
this.#t = 2;
this.#i = 65535;
this.#s = 0;
this.#o = 0;
this.#e = [];
this.observer = new t(t => {
const i = t.getEntries()[0];
const s = parseFloat(i.duration.toFixed(this.#t));
this.#e.push(s);
if (this.#e.length > this.#i) this.#e.shift();
if (!this.#s) this.#s = s;
this.#s = this.#s > s ? s : this.#s;
if (!this.#o) this.#o = s;
this.#o = this.#o < s ? s : this.#o;
});
}
#t;
#i;
#s;
#o;
#e;
get statistics() {
return {
min: this.#s,
max: this.#o,
avg: parseFloat((this.#e.length ? o(this.#e) : 0).toFixed(this.#t)),
stdDev: parseFloat((this.#e.length ? s(this.#e) : 0).toFixed(this.#t)),
p50: parseFloat((this.#e.length ? i(this.#e, .5) : 0).toFixed(this.#t)),
p90: parseFloat((this.#e.length ? i(this.#e, .9) : 0).toFixed(this.#t)),
p95: parseFloat((this.#e.length ? i(this.#e, .95) : 0).toFixed(this.#t)),
p99: parseFloat((this.#e.length ? i(this.#e, .99) : 0).toFixed(this.#t))
};
}
async init() {
this.observer.observe({
entryTypes: [ "http" ]
});
}
async destroy() {
this.observer.disconnect();
}
reset() {
this.#s = 0;
this.#o = 0;
this.#e = [];
}
}
export { HttpRequestMonitor };