export type RequestTimingBucket = "controller" | "db" | "views"; export type ActiveTimingBucket = { bucket: RequestTimingBucket; startedAtMs: number; }; /** * RequestTimingBucket type. * @typedef {"controller" | "db" | "views"} RequestTimingBucket */ /** * Defines this typedef. * @typedef {{bucket: RequestTimingBucket, startedAtMs: number}} ActiveTimingBucket */ /** * Tracks exclusive request timing buckets. When a nested bucket starts, * the currently active bucket is paused until the nested bucket exits. */ export default class RequestTiming { /** * Buckets. * @type {Record} */ buckets: Record; /** * Bucket stack. * @type {ActiveTimingBucket[]} */ bucketStack: ActiveTimingBucket[]; dbQueryCount: number; /** @type {Set} */ logSensitiveValues: Set; /** * Completed log method. * @type {"debug" | "info" | undefined} */ completedLogMethod: "debug" | "info" | undefined; /** * Completed log subject. * @type {string | undefined} */ completedLogSubject: string | undefined; /** * Response served at ms. * @type {number | undefined} */ responseServedAtMs: number | undefined; startedAtMs: number; /** * Registers exact sensitive values owned by this request lifecycle. * @param {Set} values - Sensitive value representations. * @returns {void} - No return value. */ registerLogSensitiveValues(values: Set): void; /** * Gets the sensitive values owned by this request lifecycle. * @returns {Set} - Request-local sensitive value representations. */ getLogSensitiveValues(): Set; /** * Runs measure. * @template T * @param {RequestTimingBucket} bucket - Bucket name. * @param {() => Promise | T} callback - Callback to measure. * @returns {Promise} - Callback result. */ measure(bucket: RequestTimingBucket, callback: () => Promise | T): Promise; /** * Runs measure sync. * @template T * @param {RequestTimingBucket} bucket - Bucket name. * @param {() => T} callback - Callback to measure. * @returns {T} - Callback result. */ measureSync(bucket: RequestTimingBucket, callback: () => T): T; /** * Runs measure db query. * @template T * @param {() => Promise} callback - Query callback. * @returns {Promise} - Query result. */ measureDbQuery(callback: () => Promise): Promise; /** * Runs mark response served. * @returns {void} - Marks the response as fully served. */ markResponseServed(): void; /** * Runs summary. * @returns {{controllerMs: number, dbMs: number, totalMs: number, velociousMs: number, viewsMs: number, dbQueryCount: number}} - Timing summary. */ summary(): { controllerMs: number; dbMs: number; totalMs: number; velociousMs: number; viewsMs: number; dbQueryCount: number; }; /** * Runs bucket totals at. * @param {number} now - Timestamp to calculate active bucket elapsed time against. * @returns {Record} - Bucket totals. */ _bucketTotalsAt(now: number): Record; /** * Runs push bucket. * @param {RequestTimingBucket} bucket - Bucket name. * @returns {void} - No return value. */ _pushBucket(bucket: RequestTimingBucket): void; /** * Runs pop bucket. * @returns {void} - No return value. */ _popBucket(): void; } //# sourceMappingURL=request-timing.d.ts.map