@scpxl/nodejs-framework 1.0.49 → 1.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -7
- package/dist/api-requester/api-requester.js +1 -1
- package/dist/api-requester/api-requester.js.map +2 -2
- package/dist/api-requester/index.d.ts +1 -1
- package/dist/api-requester/index.d.ts.map +1 -1
- package/dist/api-requester/index.js.map +2 -2
- package/dist/application/base-application.d.ts +6 -5
- package/dist/application/base-application.d.ts.map +1 -1
- package/dist/application/base-application.interface.d.ts +2 -4
- package/dist/application/base-application.interface.d.ts.map +1 -1
- package/dist/application/base-application.js +23 -14
- package/dist/application/base-application.js.map +2 -2
- package/dist/application/command-application.d.ts.map +1 -1
- package/dist/application/command-application.js +2 -2
- package/dist/application/command-application.js.map +2 -2
- package/dist/application/index.d.ts +3 -3
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +4 -4
- package/dist/application/index.js.map +2 -2
- package/dist/application/web-application.d.ts +5 -5
- package/dist/application/web-application.d.ts.map +1 -1
- package/dist/application/web-application.js +6 -7
- package/dist/application/web-application.js.map +2 -2
- package/dist/application/worker-application.d.ts +2 -2
- package/dist/application/worker-application.d.ts.map +1 -1
- package/dist/application/worker-application.js +2 -2
- package/dist/application/worker-application.js.map +2 -2
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +2 -2
- package/dist/auth/jwt.js.map +2 -2
- package/dist/cache/manager.d.ts.map +1 -1
- package/dist/cache/manager.js.map +2 -2
- package/dist/cli/index.js +192 -7029
- package/dist/cli/index.js.map +4 -4
- package/dist/cluster/cluster-manager.d.ts.map +1 -1
- package/dist/cluster/cluster-manager.js +1 -1
- package/dist/cluster/cluster-manager.js.map +2 -2
- package/dist/command/command.d.ts +1 -1
- package/dist/command/command.d.ts.map +1 -1
- package/dist/command/command.js.map +2 -2
- package/dist/config/env.d.ts +1 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +2 -2
- package/dist/database/dynamic-entity.js +9 -9
- package/dist/database/dynamic-entity.js.map +2 -2
- package/dist/database/index.d.ts +3 -3
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +5 -5
- package/dist/database/index.js.map +2 -2
- package/dist/database/instance.d.ts +3 -3
- package/dist/database/instance.js +3 -3
- package/dist/database/instance.js.map +1 -1
- package/dist/database/manager.d.ts +1 -0
- package/dist/database/manager.d.ts.map +1 -1
- package/dist/database/manager.js +16 -3
- package/dist/database/manager.js.map +2 -2
- package/dist/error/error-reporter.js +1 -1
- package/dist/error/error-reporter.js.map +2 -2
- package/dist/error/index.d.ts +2 -3
- package/dist/error/index.d.ts.map +1 -1
- package/dist/error/index.js +8 -9
- package/dist/error/index.js.map +2 -2
- package/dist/event/controller/base.d.ts +2 -2
- package/dist/event/controller/base.d.ts.map +1 -1
- package/dist/event/controller/base.js +2 -2
- package/dist/event/controller/base.js.map +2 -2
- package/dist/event/index.d.ts +3 -3
- package/dist/event/index.d.ts.map +1 -1
- package/dist/event/index.js +5 -5
- package/dist/event/index.js.map +2 -2
- package/dist/event/manager.d.ts.map +1 -1
- package/dist/event/manager.interface.d.ts +2 -3
- package/dist/event/manager.interface.d.ts.map +1 -1
- package/dist/event/manager.js.map +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/lifecycle/index.d.ts +3 -3
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +1 -1
- package/dist/lifecycle/index.js.map +2 -2
- package/dist/lifecycle/lifecycle-manager.d.ts +6 -0
- package/dist/lifecycle/lifecycle-manager.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-manager.js +28 -0
- package/dist/lifecycle/lifecycle-manager.js.map +2 -2
- package/dist/logger/logger.d.ts +20 -1
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +68 -96
- package/dist/logger/logger.js.map +2 -2
- package/dist/performance/cache-performance.d.ts.map +1 -1
- package/dist/performance/cache-performance.js +1 -1
- package/dist/performance/cache-performance.js.map +2 -2
- package/dist/performance/database-performance.d.ts.map +1 -1
- package/dist/performance/database-performance.js +1 -1
- package/dist/performance/database-performance.js.map +2 -2
- package/dist/performance/index.d.ts +3 -3
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -3
- package/dist/performance/index.js.map +1 -1
- package/dist/performance/performance-monitor.js +2 -2
- package/dist/performance/performance-monitor.js.map +2 -2
- package/dist/performance/performance-monitor.plugin.d.ts.map +1 -1
- package/dist/performance/performance-monitor.plugin.js +1 -1
- package/dist/performance/performance-monitor.plugin.js.map +2 -2
- package/dist/performance/queue-performance.d.ts.map +1 -1
- package/dist/performance/queue-performance.js +1 -1
- package/dist/performance/queue-performance.js.map +2 -2
- package/dist/performance/webserver-performance.d.ts.map +1 -1
- package/dist/performance/webserver-performance.js +1 -1
- package/dist/performance/webserver-performance.js.map +2 -2
- package/dist/performance/websocket-performance.d.ts.map +1 -1
- package/dist/performance/websocket-performance.js +1 -1
- package/dist/performance/websocket-performance.js.map +2 -2
- package/dist/queue/index.d.ts +2 -2
- package/dist/queue/index.d.ts.map +1 -1
- package/dist/queue/index.interface.d.ts +1 -1
- package/dist/queue/index.interface.d.ts.map +1 -1
- package/dist/queue/index.js.map +2 -2
- package/dist/queue/manager.d.ts +9 -2
- package/dist/queue/manager.d.ts.map +1 -1
- package/dist/queue/manager.js +44 -6
- package/dist/queue/manager.js.map +2 -2
- package/dist/queue/processor/base.d.ts +5 -5
- package/dist/queue/processor/base.d.ts.map +1 -1
- package/dist/queue/processor/base.js +2 -2
- package/dist/queue/processor/base.js.map +2 -2
- package/dist/queue/processor/processor.interface.d.ts +3 -3
- package/dist/queue/processor/processor.interface.d.ts.map +1 -1
- package/dist/queue/worker.d.ts +5 -0
- package/dist/queue/worker.d.ts.map +1 -1
- package/dist/queue/worker.interface.d.ts +1 -1
- package/dist/queue/worker.interface.d.ts.map +1 -1
- package/dist/queue/worker.js +9 -1
- package/dist/queue/worker.js.map +2 -2
- package/dist/redis/index.d.ts +1 -1
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js +5 -4
- package/dist/redis/index.js.map +2 -2
- package/dist/redis/instance.js +1 -1
- package/dist/redis/instance.js.map +2 -2
- package/dist/redis/manager.d.ts +7 -1
- package/dist/redis/manager.d.ts.map +1 -1
- package/dist/redis/manager.js +20 -4
- package/dist/redis/manager.js.map +2 -2
- package/dist/request-context/index.d.ts +1 -1
- package/dist/request-context/index.d.ts.map +1 -1
- package/dist/request-context/index.js +5 -5
- package/dist/request-context/index.js.map +1 -1
- package/dist/schemas/entity-builder.d.ts +3 -3
- package/dist/schemas/entity-builder.d.ts.map +1 -1
- package/dist/schemas/entity-builder.js.map +1 -1
- package/dist/services/aws/s3.d.ts.map +1 -1
- package/dist/services/aws/s3.js +7 -10
- package/dist/services/aws/s3.js.map +2 -2
- package/dist/util/file.d.ts +13 -8
- package/dist/util/file.d.ts.map +1 -1
- package/dist/util/file.js +6 -28
- package/dist/util/file.js.map +2 -2
- package/dist/util/helper.js +2 -2
- package/dist/util/helper.js.map +2 -2
- package/dist/util/index.d.ts +2 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +18 -18
- package/dist/util/index.js.map +2 -2
- package/dist/util/loader.js +3 -3
- package/dist/util/loader.js.map +2 -2
- package/dist/util/os.js +2 -2
- package/dist/util/os.js.map +2 -2
- package/dist/webserver/controller/auth-middleware.d.ts +1 -1
- package/dist/webserver/controller/auth-middleware.d.ts.map +1 -1
- package/dist/webserver/controller/auth-middleware.js +1 -1
- package/dist/webserver/controller/auth-middleware.js.map +2 -2
- package/dist/webserver/controller/base.d.ts +6 -6
- package/dist/webserver/controller/base.d.ts.map +1 -1
- package/dist/webserver/controller/base.interface.d.ts +1 -1
- package/dist/webserver/controller/base.interface.d.ts.map +1 -1
- package/dist/webserver/controller/base.js +4 -4
- package/dist/webserver/controller/base.js.map +2 -2
- package/dist/webserver/controller/entity.d.ts +4 -3
- package/dist/webserver/controller/entity.d.ts.map +1 -1
- package/dist/webserver/controller/entity.js +26 -17
- package/dist/webserver/controller/entity.js.map +2 -2
- package/dist/webserver/controller/example-auth.d.ts.map +1 -1
- package/dist/webserver/controller/example-auth.js +1 -1
- package/dist/webserver/controller/example-auth.js.map +2 -2
- package/dist/webserver/controller/health.d.ts.map +1 -1
- package/dist/webserver/controller/health.js +1 -1
- package/dist/webserver/controller/health.js.map +2 -2
- package/dist/webserver/define-action.d.ts +1 -1
- package/dist/webserver/define-action.d.ts.map +1 -1
- package/dist/webserver/define-action.js.map +1 -1
- package/dist/webserver/define-route.d.ts +1 -1
- package/dist/webserver/define-route.d.ts.map +1 -1
- package/dist/webserver/define-route.js.map +2 -2
- package/dist/webserver/index.d.ts +9 -9
- package/dist/webserver/index.d.ts.map +1 -1
- package/dist/webserver/index.js +14 -14
- package/dist/webserver/index.js.map +2 -2
- package/dist/webserver/webserver.d.ts +3 -3
- package/dist/webserver/webserver.d.ts.map +1 -1
- package/dist/webserver/webserver.interface.d.ts +5 -5
- package/dist/webserver/webserver.interface.d.ts.map +1 -1
- package/dist/webserver/webserver.interface.js.map +1 -1
- package/dist/webserver/webserver.js +9 -9
- package/dist/webserver/webserver.js.map +2 -2
- package/dist/websocket/controller/server/base.d.ts +2 -2
- package/dist/websocket/controller/server/base.js.map +1 -1
- package/dist/websocket/controllers/server/system.d.ts.map +1 -1
- package/dist/websocket/controllers/server/system.js +1 -1
- package/dist/websocket/controllers/server/system.js.map +2 -2
- package/dist/websocket/index.d.ts +9 -11
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +22 -22
- package/dist/websocket/index.js.map +2 -2
- package/dist/websocket/subscriber-middleware.d.ts.map +1 -1
- package/dist/websocket/subscriber-middleware.js.map +2 -2
- package/dist/websocket/subscriber-utils.d.ts.map +1 -1
- package/dist/websocket/subscriber-utils.js.map +2 -2
- package/dist/websocket/utils.d.ts.map +1 -1
- package/dist/websocket/utils.js +4 -2
- package/dist/websocket/utils.js.map +2 -2
- package/dist/websocket/websocket-auth.d.ts.map +1 -1
- package/dist/websocket/websocket-auth.js +3 -3
- package/dist/websocket/websocket-auth.js.map +2 -2
- package/dist/websocket/websocket-base.d.ts +2 -2
- package/dist/websocket/websocket-base.d.ts.map +1 -1
- package/dist/websocket/websocket-base.js +1 -1
- package/dist/websocket/websocket-base.js.map +2 -2
- package/dist/websocket/websocket-client-manager.d.ts +2 -0
- package/dist/websocket/websocket-client-manager.d.ts.map +1 -1
- package/dist/websocket/websocket-client-manager.js +11 -4
- package/dist/websocket/websocket-client-manager.js.map +2 -2
- package/dist/websocket/websocket-client.d.ts +10 -5
- package/dist/websocket/websocket-client.d.ts.map +1 -1
- package/dist/websocket/websocket-client.js +27 -5
- package/dist/websocket/websocket-client.js.map +2 -2
- package/dist/websocket/websocket-room-manager.js +1 -1
- package/dist/websocket/websocket-room-manager.js.map +1 -1
- package/dist/websocket/websocket-server.d.ts +7 -7
- package/dist/websocket/websocket-server.d.ts.map +1 -1
- package/dist/websocket/websocket-server.js +25 -20
- package/dist/websocket/websocket-server.js.map +2 -2
- package/dist/websocket/websocket-service.d.ts +2 -2
- package/dist/websocket/websocket-service.d.ts.map +1 -1
- package/dist/websocket/websocket-service.js +1 -1
- package/dist/websocket/websocket-service.js.map +2 -2
- package/dist/websocket/websocket.interface.d.ts +3 -5
- package/dist/websocket/websocket.interface.d.ts.map +1 -1
- package/dist/websocket/websocket.interface.js.map +2 -2
- package/package.json +68 -64
package/dist/logger/logger.d.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
+
import pino from 'pino';
|
|
1
2
|
import type { LogOptions } from '../websocket/utils.js';
|
|
2
3
|
export type LoggerLevels = 'error' | 'warn' | 'info' | 'command' | 'database' | 'redis' | 'webServer' | 'webSocket' | 'queue' | 'queueJob' | 'event' | 'debug';
|
|
4
|
+
declare const customLevels: {
|
|
5
|
+
readonly error: 10;
|
|
6
|
+
readonly warn: 20;
|
|
7
|
+
readonly info: 30;
|
|
8
|
+
readonly command: 35;
|
|
9
|
+
readonly database: 40;
|
|
10
|
+
readonly redis: 45;
|
|
11
|
+
readonly webServer: 50;
|
|
12
|
+
readonly webSocket: 55;
|
|
13
|
+
readonly queue: 60;
|
|
14
|
+
readonly queueJob: 65;
|
|
15
|
+
readonly event: 70;
|
|
16
|
+
readonly debug: 80;
|
|
17
|
+
};
|
|
18
|
+
type CustomLogger = pino.Logger<keyof typeof customLevels>;
|
|
3
19
|
export declare class Logger {
|
|
4
20
|
private static instance;
|
|
5
21
|
private logger;
|
|
@@ -7,8 +23,9 @@ export declare class Logger {
|
|
|
7
23
|
isSentryInitialized: boolean;
|
|
8
24
|
private showRequestIdInConsole;
|
|
9
25
|
private constructor();
|
|
26
|
+
/** Get the underlying Pino logger instance (useful for Fastify integration) */
|
|
27
|
+
get pinoInstance(): CustomLogger;
|
|
10
28
|
static getInstance(): Logger;
|
|
11
|
-
private getCustomFormat;
|
|
12
29
|
configure({ showRequestIdInConsole }: {
|
|
13
30
|
showRequestIdInConsole?: boolean;
|
|
14
31
|
}): void;
|
|
@@ -16,6 +33,8 @@ export declare class Logger {
|
|
|
16
33
|
sentryDsn: string;
|
|
17
34
|
environment: string;
|
|
18
35
|
}): void;
|
|
36
|
+
private buildMeta;
|
|
37
|
+
private formatMessage;
|
|
19
38
|
log({ level, message, meta, options: _options, }: {
|
|
20
39
|
level: LoggerLevels;
|
|
21
40
|
message: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAGA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,OAAO,GACP,WAAW,GACX,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,GACP,OAAO,CAAC;AAGZ,QAAA,MAAM,YAAY;;;;;;;;;;;;;CAaR,CAAC;AAEX,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE3D,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,WAAW,CAAqB;IAEjC,mBAAmB,UAAS;IAEnC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,OAAO;IA+BP,+EAA+E;IAC/E,IAAW,YAAY,IAAI,YAAY,CAEtC;WAEa,WAAW,IAAI,MAAM;IAQ5B,SAAS,CAAC,EAAE,sBAAsB,EAAE,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAMjF,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiB/F,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,aAAa;IAUd,GAAG,CAAC,EACT,KAAK,EACL,OAAO,EACP,IAAI,EACJ,OAAO,EAAE,QAAQ,GAClB,EAAE;QACD,KAAK,EAAE,YAAY,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;IAYD,KAAK,CAAC,EACX,OAAO,EACP,IAAI,EACJ,OAAO,GACR,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;IACD,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiB7D,IAAI,CAAC,EACV,OAAO,EACP,IAAI,EACJ,OAAO,GACR,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;IACD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiB5D,IAAI,CAAC,EACV,OAAO,EACP,IAAI,EACJ,OAAO,GACR,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;IACD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkB5D,KAAK,CAAC,IAAI,EAAE;QACjB,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IA+E3G,MAAM,CAAC,EACZ,KAAK,EACL,OAAO,EACP,IAAI,EACJ,OAAO,GACR,EAAE;QACD,KAAK,EAAE,YAAY,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,GAAG,IAAI;CAGT;;AAED,wBAAoC"}
|
package/dist/logger/logger.js
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import cluster from "node:cluster";
|
|
3
4
|
import * as Sentry from "@sentry/node";
|
|
4
5
|
import { nodeProfilingIntegration } from "@sentry/profiling-node";
|
|
5
|
-
import
|
|
6
|
-
import winston from "winston";
|
|
7
|
-
import { getRequestId } from "../request-context/index.js";
|
|
6
|
+
import pino from "pino";
|
|
8
7
|
import { safeSerializeError } from "../error/error-reporter.js";
|
|
8
|
+
import { getRequestId } from "../request-context/index.js";
|
|
9
|
+
const customLevels = {
|
|
10
|
+
error: 10,
|
|
11
|
+
warn: 20,
|
|
12
|
+
info: 30,
|
|
13
|
+
command: 35,
|
|
14
|
+
database: 40,
|
|
15
|
+
redis: 45,
|
|
16
|
+
webServer: 50,
|
|
17
|
+
webSocket: 55,
|
|
18
|
+
queue: 60,
|
|
19
|
+
queueJob: 65,
|
|
20
|
+
event: 70,
|
|
21
|
+
debug: 80
|
|
22
|
+
};
|
|
9
23
|
class Logger {
|
|
10
24
|
static {
|
|
11
25
|
__name(this, "Logger");
|
|
@@ -17,101 +31,40 @@ class Logger {
|
|
|
17
31
|
showRequestIdInConsole = true;
|
|
18
32
|
constructor() {
|
|
19
33
|
this.environment = process.env.NODE_ENV;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
warn: 1,
|
|
24
|
-
info: 2,
|
|
25
|
-
command: 3,
|
|
26
|
-
database: 4,
|
|
27
|
-
redis: 5,
|
|
28
|
-
webServer: 6,
|
|
29
|
-
webSocket: 7,
|
|
30
|
-
queue: 8,
|
|
31
|
-
queueJob: 9,
|
|
32
|
-
event: 10,
|
|
33
|
-
debug: 11
|
|
34
|
-
};
|
|
35
|
-
const customColors = {
|
|
36
|
-
error: "red",
|
|
37
|
-
warn: "yellow",
|
|
38
|
-
info: "blue",
|
|
39
|
-
command: "cyan",
|
|
40
|
-
database: "brightGreen",
|
|
41
|
-
redis: "brightYellow",
|
|
42
|
-
webServer: "brightBlue",
|
|
43
|
-
webSocket: "brightMagenta",
|
|
44
|
-
queue: "gray",
|
|
45
|
-
queueJob: "blue",
|
|
46
|
-
event: "brightGreen",
|
|
47
|
-
debug: "brightCyan"
|
|
48
|
-
};
|
|
49
|
-
winston.addColors(customColors);
|
|
50
|
-
this.logger = winston.createLogger({
|
|
51
|
-
levels: customLevels,
|
|
34
|
+
this.logger = pino({
|
|
35
|
+
customLevels,
|
|
36
|
+
useOnlyCustomLevels: true,
|
|
52
37
|
level: this.environment === "production" ? "info" : "debug",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
38
|
+
formatters: {
|
|
39
|
+
level(label) {
|
|
40
|
+
return { level: label };
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
timestamp: pino.stdTimeFunctions.isoTime,
|
|
44
|
+
transport: {
|
|
45
|
+
target: "pino-pretty",
|
|
46
|
+
options: {
|
|
47
|
+
colorize: true,
|
|
48
|
+
translateTime: "yyyy-mm-dd HH:MM:ss",
|
|
49
|
+
ignore: "pid,hostname",
|
|
50
|
+
messageFormat: "{msg}",
|
|
51
|
+
customLevels: Object.entries(customLevels).map(([name, num]) => `${name}:${num}`).join(","),
|
|
52
|
+
customColors: "error:red,warn:yellow,info:blue,command:cyan,database:greenBright,redis:yellowBright,webServer:blueBright,webSocket:magentaBright,queue:gray,queueJob:blue,event:greenBright,debug:cyanBright",
|
|
53
|
+
useOnlyCustomProps: false
|
|
54
|
+
}
|
|
55
|
+
}
|
|
66
56
|
});
|
|
67
57
|
}
|
|
58
|
+
/** Get the underlying Pino logger instance (useful for Fastify integration) */
|
|
59
|
+
get pinoInstance() {
|
|
60
|
+
return this.logger;
|
|
61
|
+
}
|
|
68
62
|
static getInstance() {
|
|
69
63
|
if (!Logger.instance) {
|
|
70
64
|
Logger.instance = new Logger();
|
|
71
65
|
}
|
|
72
66
|
return Logger.instance;
|
|
73
67
|
}
|
|
74
|
-
getCustomFormat() {
|
|
75
|
-
return winston.format.printf(({ level, message, timestamp, ...meta }) => {
|
|
76
|
-
const requestId = getRequestId();
|
|
77
|
-
if (requestId && !meta["requestId"] && this.showRequestIdInConsole) {
|
|
78
|
-
meta["requestId"] = requestId;
|
|
79
|
-
}
|
|
80
|
-
if (cluster.isWorker && cluster.worker) {
|
|
81
|
-
meta["Worker"] = cluster.worker.id;
|
|
82
|
-
}
|
|
83
|
-
const metaString = Object.entries(meta).map(([key, value]) => {
|
|
84
|
-
let stringValue;
|
|
85
|
-
if (value === null) {
|
|
86
|
-
stringValue = "null";
|
|
87
|
-
} else if (value === void 0) {
|
|
88
|
-
stringValue = "undefined";
|
|
89
|
-
} else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
90
|
-
stringValue = String(value);
|
|
91
|
-
} else if (value instanceof Error) {
|
|
92
|
-
stringValue = value.message;
|
|
93
|
-
} else if (value instanceof Promise) {
|
|
94
|
-
stringValue = "[Promise]";
|
|
95
|
-
} else if (typeof value === "object") {
|
|
96
|
-
try {
|
|
97
|
-
stringValue = JSON.stringify(value);
|
|
98
|
-
} catch {
|
|
99
|
-
stringValue = "[Object]";
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
stringValue = String(value);
|
|
103
|
-
}
|
|
104
|
-
return `${key}: ${stringValue}`;
|
|
105
|
-
}).join(" | ");
|
|
106
|
-
if (level === "error") {
|
|
107
|
-
if (this.isSentryInitialized) {
|
|
108
|
-
const errorMessage = typeof message === "string" ? message : JSON.stringify(message);
|
|
109
|
-
Sentry.captureException(new Error(errorMessage));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return `[${timestamp}] ${level}: ${message}${metaString ? ` (${metaString})` : ""}`;
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
68
|
configure({ showRequestIdInConsole }) {
|
|
116
69
|
if (showRequestIdInConsole !== void 0) {
|
|
117
70
|
this.showRequestIdInConsole = showRequestIdInConsole;
|
|
@@ -130,19 +83,38 @@ class Logger {
|
|
|
130
83
|
});
|
|
131
84
|
this.isSentryInitialized = true;
|
|
132
85
|
}
|
|
86
|
+
buildMeta(meta) {
|
|
87
|
+
const enriched = { ...meta };
|
|
88
|
+
const requestId = getRequestId();
|
|
89
|
+
if (requestId && !enriched.requestId && this.showRequestIdInConsole) {
|
|
90
|
+
enriched.requestId = requestId;
|
|
91
|
+
}
|
|
92
|
+
if (cluster.isWorker && cluster.worker) {
|
|
93
|
+
enriched.Worker = cluster.worker.id;
|
|
94
|
+
}
|
|
95
|
+
return enriched;
|
|
96
|
+
}
|
|
97
|
+
formatMessage(message) {
|
|
98
|
+
if (message instanceof Error) {
|
|
99
|
+
return message.stack ?? message.toString();
|
|
100
|
+
}
|
|
101
|
+
if (typeof message === "string") {
|
|
102
|
+
return message;
|
|
103
|
+
}
|
|
104
|
+
return JSON.stringify(message);
|
|
105
|
+
}
|
|
133
106
|
log({
|
|
134
107
|
level,
|
|
135
108
|
message,
|
|
136
109
|
meta,
|
|
137
110
|
options: _options
|
|
138
111
|
}) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
this.logger.log(level, JSON.stringify(message), meta);
|
|
112
|
+
const enrichedMeta = this.buildMeta(meta);
|
|
113
|
+
const msg = this.formatMessage(message);
|
|
114
|
+
this.logger[level](enrichedMeta, msg);
|
|
115
|
+
if (level === "error" && this.isSentryInitialized) {
|
|
116
|
+
const errorMessage = typeof message === "string" ? message : JSON.stringify(message);
|
|
117
|
+
Sentry.captureException(new Error(errorMessage));
|
|
146
118
|
}
|
|
147
119
|
}
|
|
148
120
|
debug(messageOrOptions, meta) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/logger/logger.ts"],
|
|
4
|
-
"sourcesContent": ["import * as Sentry from '@sentry/node';\nimport { nodeProfilingIntegration } from '@sentry/profiling-node';\nimport cluster from 'node:cluster';\nimport winston from 'winston';\nimport type { LogOptions } from '../websocket/utils.js';\nimport { getRequestId } from '../request-context/index.js';\nimport { safeSerializeError } from '../error/error-reporter.js';\n\nexport type LoggerLevels =\n | 'error'\n | 'warn'\n | 'info'\n | 'command'\n | 'database'\n | 'redis'\n | 'webServer'\n | 'webSocket'\n | 'queue'\n | 'queueJob'\n | 'event'\n | 'debug';\n\nexport class Logger {\n private static instance: Logger;\n private logger: winston.Logger;\n\n private environment: string | undefined;\n\n public isSentryInitialized = false;\n\n private showRequestIdInConsole = true;\n\n private constructor() {\n this.environment = process.env.NODE_ENV;\n\n const customFormat = this.getCustomFormat();\n\n const customLevels: winston.config.AbstractConfigSetLevels = {\n error: 0,\n warn: 1,\n info: 2,\n command: 3,\n database: 4,\n redis: 5,\n webServer: 6,\n webSocket: 7,\n queue: 8,\n queueJob: 9,\n event: 10,\n debug: 11,\n };\n\n const customColors: winston.config.AbstractConfigSetColors = {\n error: 'red',\n warn: 'yellow',\n info: 'blue',\n command: 'cyan',\n database: 'brightGreen',\n redis: 'brightYellow',\n webServer: 'brightBlue',\n webSocket: 'brightMagenta',\n queue: 'gray',\n queueJob: 'blue',\n event: 'brightGreen',\n debug: 'brightCyan',\n };\n\n winston.addColors(customColors);\n\n this.logger = winston.createLogger({\n levels: customLevels,\n level: this.environment === 'production' ? 'info' : 'debug',\n format: winston.format.combine(\n winston.format.timestamp({\n format: 'YYYY-MM-DD HH:mm:ss',\n }),\n winston.format.errors({ stack: true }),\n winston.format.splat(),\n winston.format.json(),\n ),\n transports: [\n new winston.transports.Console({\n format: winston.format.combine(winston.format.colorize(), customFormat),\n }),\n ],\n });\n }\n\n public static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n\n return Logger.instance;\n }\n\n private getCustomFormat(): winston.Logform.Format {\n return winston.format.printf(({ level, message, timestamp, ...meta }) => {\n // Auto-inject request ID from AsyncLocalStorage context if available\n const requestId = getRequestId();\n if (requestId && !meta['requestId'] && this.showRequestIdInConsole) {\n meta['requestId'] = requestId;\n }\n\n if (cluster.isWorker && cluster.worker) {\n meta['Worker'] = cluster.worker.id; // .process.pid;\n }\n\n const metaString = Object.entries(meta)\n .map(([key, value]) => {\n // Safely convert value to string representation\n let stringValue: string;\n\n if (value === null) {\n stringValue = 'null';\n } else if (value === undefined) {\n stringValue = 'undefined';\n } else if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n stringValue = String(value);\n } else if (value instanceof Error) {\n stringValue = value.message;\n } else if (value instanceof Promise) {\n stringValue = '[Promise]';\n } else if (typeof value === 'object') {\n try {\n // Attempt to JSON.stringify, but handle circular references\n stringValue = JSON.stringify(value);\n } catch {\n // Fallback for circular references or other issues\n stringValue = '[Object]';\n }\n } else {\n stringValue = String(value);\n }\n\n return `${key}: ${stringValue}`;\n })\n .join(' | ');\n\n if (level === 'error') {\n if (this.isSentryInitialized) {\n const errorMessage = typeof message === 'string' ? message : JSON.stringify(message);\n\n Sentry.captureException(new Error(errorMessage));\n }\n }\n\n return `[${timestamp}] ${level}: ${message}${metaString ? ` (${metaString})` : ''}`;\n });\n }\n\n public configure({ showRequestIdInConsole }: { showRequestIdInConsole?: boolean }): void {\n if (showRequestIdInConsole !== undefined) {\n this.showRequestIdInConsole = showRequestIdInConsole;\n }\n }\n\n public initSentry({ sentryDsn, environment }: { sentryDsn: string; environment: string }): void {\n if (!sentryDsn) {\n this.logger.warn('Missing Sentry DSN when initializing Sentry');\n\n return;\n }\n\n Sentry.init({\n dsn: sentryDsn,\n integrations: [nodeProfilingIntegration()],\n tracesSampleRate: 1.0,\n environment,\n });\n\n this.isSentryInitialized = true;\n }\n\n public log({\n level,\n message,\n meta,\n options: _options,\n }: {\n level: LoggerLevels;\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void {\n // if (options?.muteWorker) {\n // }\n\n if (message instanceof Error) {\n const errorMessage = message.stack ?? message.toString();\n this.logger.log(level, errorMessage, meta);\n } else if (typeof message === 'string') {\n this.logger.log(level, message, meta);\n } else {\n this.logger.log(level, JSON.stringify(message), meta);\n }\n }\n\n public debug({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public debug(message: unknown, meta?: Record<string, unknown>): void;\n public debug(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'debug', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'debug', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n public info({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public info(message: unknown, meta?: Record<string, unknown>): void;\n public info(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'info', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'info', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n public warn({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public warn(message: unknown, meta?: Record<string, unknown>): void;\n public warn(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'warn', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'warn', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n // Overload 1: Object signature (existing usage)\n public error(args: {\n error: Error | unknown;\n message?: string;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n // Overload 2: Positional signature (new usage)\n public error(error: Error | unknown, message?: string, meta?: Record<string, unknown>, options?: LogOptions): void;\n public error(\n arg1:\n | { error: Error | unknown; message?: string; meta?: Record<string, unknown>; options?: LogOptions }\n | (Error | unknown),\n message?: string,\n meta?: Record<string, unknown>,\n options?: LogOptions,\n ): void {\n // Support original object signature: Logger.error({ error, message?, meta?, options? })\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n 'error' in arg1 &&\n // If the caller passed a second positional arg, treat it as new signature\n message === undefined\n ) {\n const {\n error,\n message: objMessage,\n meta: objMeta,\n options: objOptions,\n } = arg1 as {\n error: Error | unknown;\n message?: string;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n };\n\n if (objMessage) {\n const errorMessage = error instanceof Error ? error.message : safeSerializeError(error);\n const combinedMessage = `${objMessage}: ${errorMessage}`;\n // Preserve stack & name when Error instance so callers get actionable traces\n let enhancedMeta = objMeta;\n if (error instanceof Error) {\n enhancedMeta = {\n ...objMeta,\n name: error.name,\n stack: error.stack,\n };\n }\n this.log({ level: 'error', message: combinedMessage, meta: enhancedMeta, options: objOptions });\n if (error instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(error);\n }\n } else {\n // When no custom message, log the raw error. If it's an Error, pass stack & name.\n if (error instanceof Error) {\n const enhancedMeta = {\n ...objMeta,\n name: error.name,\n stack: error.stack,\n };\n // For consistency use the Error object message as primary message\n this.log({ level: 'error', message: error, meta: enhancedMeta, options: objOptions });\n } else {\n this.log({ level: 'error', message: error, meta: objMeta, options: objOptions });\n }\n if (error instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(error);\n }\n }\n return;\n }\n\n // New positional signature: Logger.error(error, message?, meta?, options?)\n const errorObj = arg1;\n if (message) {\n const errorMessage = errorObj instanceof Error ? errorObj.message : safeSerializeError(errorObj);\n const combinedMessage = `${message}: ${errorMessage}`;\n this.log({ level: 'error', message: combinedMessage, meta, options });\n } else {\n this.log({ level: 'error', message: errorObj, meta, options });\n }\n if (errorObj instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(errorObj);\n }\n }\n\n public custom({\n level,\n message,\n meta,\n options,\n }: {\n level: LoggerLevels;\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void {\n this.log({ level, message, meta, options });\n }\n}\n\nexport default Logger.getInstance();\n"],
|
|
5
|
-
"mappings": ";;AAAA,YAAY,YAAY;AACxB,SAAS,gCAAgC;AACzC,OAAO,
|
|
4
|
+
"sourcesContent": ["import cluster from 'node:cluster';\nimport * as Sentry from '@sentry/node';\nimport { nodeProfilingIntegration } from '@sentry/profiling-node';\nimport pino from 'pino';\nimport { safeSerializeError } from '../error/error-reporter.js';\nimport { getRequestId } from '../request-context/index.js';\nimport type { LogOptions } from '../websocket/utils.js';\n\nexport type LoggerLevels =\n | 'error'\n | 'warn'\n | 'info'\n | 'command'\n | 'database'\n | 'redis'\n | 'webServer'\n | 'webSocket'\n | 'queue'\n | 'queueJob'\n | 'event'\n | 'debug';\n\n// Map custom levels to numeric values (lower = more severe, matching Pino convention)\nconst customLevels = {\n error: 10,\n warn: 20,\n info: 30,\n command: 35,\n database: 40,\n redis: 45,\n webServer: 50,\n webSocket: 55,\n queue: 60,\n queueJob: 65,\n event: 70,\n debug: 80,\n} as const;\n\ntype CustomLogger = pino.Logger<keyof typeof customLevels>;\n\nexport class Logger {\n private static instance: Logger;\n private logger: CustomLogger;\n\n private environment: string | undefined;\n\n public isSentryInitialized = false;\n\n private showRequestIdInConsole = true;\n\n private constructor() {\n this.environment = process.env.NODE_ENV;\n\n this.logger = pino({\n customLevels,\n useOnlyCustomLevels: true,\n level: this.environment === 'production' ? 'info' : 'debug',\n formatters: {\n level(label) {\n return { level: label };\n },\n },\n timestamp: pino.stdTimeFunctions.isoTime,\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n ignore: 'pid,hostname',\n messageFormat: '{msg}',\n customLevels: Object.entries(customLevels)\n .map(([name, num]) => `${name}:${num}`)\n .join(','),\n customColors:\n 'error:red,warn:yellow,info:blue,command:cyan,database:greenBright,redis:yellowBright,webServer:blueBright,webSocket:magentaBright,queue:gray,queueJob:blue,event:greenBright,debug:cyanBright',\n useOnlyCustomProps: false,\n },\n },\n });\n }\n\n /** Get the underlying Pino logger instance (useful for Fastify integration) */\n public get pinoInstance(): CustomLogger {\n return this.logger;\n }\n\n public static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n\n return Logger.instance;\n }\n\n public configure({ showRequestIdInConsole }: { showRequestIdInConsole?: boolean }): void {\n if (showRequestIdInConsole !== undefined) {\n this.showRequestIdInConsole = showRequestIdInConsole;\n }\n }\n\n public initSentry({ sentryDsn, environment }: { sentryDsn: string; environment: string }): void {\n if (!sentryDsn) {\n this.logger.warn('Missing Sentry DSN when initializing Sentry');\n\n return;\n }\n\n Sentry.init({\n dsn: sentryDsn,\n integrations: [nodeProfilingIntegration()],\n tracesSampleRate: 1.0,\n environment,\n });\n\n this.isSentryInitialized = true;\n }\n\n private buildMeta(meta?: Record<string, unknown>): Record<string, unknown> {\n const enriched: Record<string, unknown> = { ...meta };\n\n // Auto-inject request ID from AsyncLocalStorage context if available\n const requestId = getRequestId();\n if (requestId && !enriched.requestId && this.showRequestIdInConsole) {\n enriched.requestId = requestId;\n }\n\n if (cluster.isWorker && cluster.worker) {\n enriched.Worker = cluster.worker.id;\n }\n\n return enriched;\n }\n\n private formatMessage(message: unknown): string {\n if (message instanceof Error) {\n return message.stack ?? message.toString();\n }\n if (typeof message === 'string') {\n return message;\n }\n return JSON.stringify(message);\n }\n\n public log({\n level,\n message,\n meta,\n options: _options,\n }: {\n level: LoggerLevels;\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void {\n const enrichedMeta = this.buildMeta(meta);\n const msg = this.formatMessage(message);\n\n this.logger[level](enrichedMeta, msg);\n\n if (level === 'error' && this.isSentryInitialized) {\n const errorMessage = typeof message === 'string' ? message : JSON.stringify(message);\n Sentry.captureException(new Error(errorMessage));\n }\n }\n\n public debug({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public debug(message: unknown, meta?: Record<string, unknown>): void;\n public debug(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'debug', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'debug', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n public info({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public info(message: unknown, meta?: Record<string, unknown>): void;\n public info(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'info', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'info', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n public warn({\n message,\n meta,\n options,\n }: {\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n public warn(message: unknown, meta?: Record<string, unknown>): void;\n public warn(\n messageOrOptions: unknown | { message: unknown; meta?: Record<string, unknown>; options?: LogOptions },\n meta?: Record<string, unknown>,\n ): void {\n if (typeof messageOrOptions === 'object' && messageOrOptions !== null && 'message' in messageOrOptions) {\n const {\n message,\n meta: optionsMeta,\n options,\n } = messageOrOptions as { message: unknown; meta?: Record<string, unknown>; options?: LogOptions };\n this.log({ level: 'warn', message, meta: optionsMeta, options });\n } else {\n this.log({ level: 'warn', message: messageOrOptions, meta, options: undefined });\n }\n }\n\n // Overload 1: Object signature (existing usage)\n public error(args: {\n error: Error | unknown;\n message?: string;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void;\n // Overload 2: Positional signature (new usage)\n public error(error: Error | unknown, message?: string, meta?: Record<string, unknown>, options?: LogOptions): void;\n public error(\n arg1:\n | { error: Error | unknown; message?: string; meta?: Record<string, unknown>; options?: LogOptions }\n | (Error | unknown),\n message?: string,\n meta?: Record<string, unknown>,\n options?: LogOptions,\n ): void {\n // Support original object signature: Logger.error({ error, message?, meta?, options? })\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n 'error' in arg1 &&\n // If the caller passed a second positional arg, treat it as new signature\n message === undefined\n ) {\n const {\n error,\n message: objMessage,\n meta: objMeta,\n options: objOptions,\n } = arg1 as {\n error: Error | unknown;\n message?: string;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n };\n\n if (objMessage) {\n const errorMessage = error instanceof Error ? error.message : safeSerializeError(error);\n const combinedMessage = `${objMessage}: ${errorMessage}`;\n // Preserve stack & name when Error instance so callers get actionable traces\n let enhancedMeta = objMeta;\n if (error instanceof Error) {\n enhancedMeta = {\n ...objMeta,\n name: error.name,\n stack: error.stack,\n };\n }\n this.log({ level: 'error', message: combinedMessage, meta: enhancedMeta, options: objOptions });\n if (error instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(error);\n }\n } else {\n // When no custom message, log the raw error. If it's an Error, pass stack & name.\n if (error instanceof Error) {\n const enhancedMeta = {\n ...objMeta,\n name: error.name,\n stack: error.stack,\n };\n // For consistency use the Error object message as primary message\n this.log({ level: 'error', message: error, meta: enhancedMeta, options: objOptions });\n } else {\n this.log({ level: 'error', message: error, meta: objMeta, options: objOptions });\n }\n if (error instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(error);\n }\n }\n return;\n }\n\n // New positional signature: Logger.error(error, message?, meta?, options?)\n const errorObj = arg1;\n if (message) {\n const errorMessage = errorObj instanceof Error ? errorObj.message : safeSerializeError(errorObj);\n const combinedMessage = `${message}: ${errorMessage}`;\n this.log({ level: 'error', message: combinedMessage, meta, options });\n } else {\n this.log({ level: 'error', message: errorObj, meta, options });\n }\n if (errorObj instanceof Error && this.isSentryInitialized) {\n Sentry.captureException(errorObj);\n }\n }\n\n public custom({\n level,\n message,\n meta,\n options,\n }: {\n level: LoggerLevels;\n message: unknown;\n meta?: Record<string, unknown>;\n options?: LogOptions;\n }): void {\n this.log({ level, message, meta, options });\n }\n}\n\nexport default Logger.getInstance();\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-performance.d.ts","sourceRoot":"","sources":["../../src/performance/cache-performance.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cache-performance.d.ts","sourceRoot":"","sources":["../../src/performance/cache-performance.ts"],"names":[],"mappings":"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"}
|
|
@@ -191,7 +191,7 @@ class CachePerformanceWrapper {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
function MonitorCacheOperation(operationName) {
|
|
194
|
-
return
|
|
194
|
+
return (target, propertyKey, descriptor) => {
|
|
195
195
|
const originalMethod = descriptor.value;
|
|
196
196
|
const className = target.constructor.name;
|
|
197
197
|
const operation = operationName ?? propertyKey;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/performance/cache-performance.ts"],
|
|
4
|
-
"sourcesContent": ["import { PerformanceMonitor } from './performance-monitor.js';\n\nexport interface CacheOperationMetadata {\n operation: string;\n key?: string;\n keyPattern?: string;\n hit?: boolean;\n miss?: boolean;\n size?: number;\n ttl?: number;\n error?: string;\n argumentCount?: number;\n host?: string;\n port?: number;\n}\n\nexport class CachePerformanceWrapper {\n private static performanceMonitor: PerformanceMonitor;\n\n public static setPerformanceMonitor(monitor: PerformanceMonitor): void {\n CachePerformanceWrapper.performanceMonitor = monitor;\n }\n\n public static getPerformanceMonitor(): PerformanceMonitor {\n if (!CachePerformanceWrapper.performanceMonitor) {\n CachePerformanceWrapper.performanceMonitor = PerformanceMonitor.getInstance();\n }\n return CachePerformanceWrapper.performanceMonitor;\n }\n\n /**\n * Monitor cache connection operations (e.g., Redis connect/disconnect)\n */\n public static async monitorConnection<T>(\n operationName: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: operationName,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `connection.${operationName}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache get operations\n */\n public static async monitorGet<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'get',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `get.${key}`,\n type: 'cache',\n fn: async () => {\n const result = await operation();\n\n // Determine cache hit/miss\n operationMetadata.hit = result !== null && result !== undefined;\n operationMetadata.miss = !operationMetadata.hit;\n\n return result;\n },\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache set operations\n */\n public static async monitorSet<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'set',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `set.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache delete operations\n */\n public static async monitorDelete<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'delete',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `delete.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache clear operations\n */\n public static async monitorClear<T>(\n pattern: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'clear',\n keyPattern: pattern,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `clear.${pattern}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache exists operations\n */\n public static async monitorExists<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'exists',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `exists.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache multi-get operations\n */\n public static async monitorMultiGet<T>(\n keys: string[],\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'multi_get',\n keyPattern: `[${keys.join(', ')}]`,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `multi_get.${keys.length}_keys`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache multi-set operations\n */\n public static async monitorMultiSet<T>(\n keys: string[],\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'multi_set',\n keyPattern: `[${keys.join(', ')}]`,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `multi_set.${keys.length}_keys`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache increment operations\n */\n public static async monitorIncrement<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'increment',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `increment.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache decrement operations\n */\n public static async monitorDecrement<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'decrement',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `decrement.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n}\n\n/**\n * Decorator for monitoring cache operations\n */\nexport function MonitorCacheOperation(operationName?: string) {\n return
|
|
5
|
-
"mappings": ";;AAAA,SAAS,0BAA0B;AAgB5B,MAAM,wBAAwB;AAAA,EAhBrC,OAgBqC;AAAA;AAAA;AAAA,EACnC,OAAe;AAAA,EAEf,OAAc,sBAAsB,SAAmC;AACrE,4BAAwB,qBAAqB;AAAA,EAC/C;AAAA,EAEA,OAAc,wBAA4C;AACxD,QAAI,CAAC,wBAAwB,oBAAoB;AAC/C,8BAAwB,qBAAqB,mBAAmB,YAAY;AAAA,IAC9E;AACA,WAAO,wBAAwB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,kBAClB,eACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,cAAc,aAAa;AAAA,MACjC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,WAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,OAAO,GAAG;AAAA,MAChB,MAAM;AAAA,MACN,IAAI,mCAAY;AACd,cAAM,SAAS,MAAM,UAAU;AAG/B,0BAAkB,MAAM,WAAW,QAAQ,WAAW;AACtD,0BAAkB,OAAO,CAAC,kBAAkB;AAE5C,eAAO;AAAA,MACT,GARI;AAAA,MASJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,WAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,OAAO,GAAG;AAAA,MAChB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,cAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,UAAU,GAAG;AAAA,MACnB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,aAClB,SACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,SAAS,OAAO;AAAA,MACtB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,cAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,UAAU,GAAG;AAAA,MACnB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,gBAClB,MACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,MAC/B,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,aAAa,KAAK,MAAM;AAAA,MAC9B,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,gBAClB,MACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,MAC/B,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,aAAa,KAAK,MAAM;AAAA,MAC9B,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,iBAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,aAAa,GAAG;AAAA,MACtB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,iBAClB,KACA,WACA,UACY;AACZ,UAAM,UAAU,wBAAwB,sBAAsB;AAE9D,UAAM,oBAA4C;AAAA,MAChD,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,aAAa,GAAG;AAAA,MACtB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF;AAKO,SAAS,sBAAsB,eAAwB;AAC5D,SAAO,
|
|
4
|
+
"sourcesContent": ["import { PerformanceMonitor } from './performance-monitor.js';\n\nexport interface CacheOperationMetadata {\n operation: string;\n key?: string;\n keyPattern?: string;\n hit?: boolean;\n miss?: boolean;\n size?: number;\n ttl?: number;\n error?: string;\n argumentCount?: number;\n host?: string;\n port?: number;\n}\n\nexport class CachePerformanceWrapper {\n private static performanceMonitor: PerformanceMonitor;\n\n public static setPerformanceMonitor(monitor: PerformanceMonitor): void {\n CachePerformanceWrapper.performanceMonitor = monitor;\n }\n\n public static getPerformanceMonitor(): PerformanceMonitor {\n if (!CachePerformanceWrapper.performanceMonitor) {\n CachePerformanceWrapper.performanceMonitor = PerformanceMonitor.getInstance();\n }\n return CachePerformanceWrapper.performanceMonitor;\n }\n\n /**\n * Monitor cache connection operations (e.g., Redis connect/disconnect)\n */\n public static async monitorConnection<T>(\n operationName: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: operationName,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `connection.${operationName}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache get operations\n */\n public static async monitorGet<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'get',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `get.${key}`,\n type: 'cache',\n fn: async () => {\n const result = await operation();\n\n // Determine cache hit/miss\n operationMetadata.hit = result !== null && result !== undefined;\n operationMetadata.miss = !operationMetadata.hit;\n\n return result;\n },\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache set operations\n */\n public static async monitorSet<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'set',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `set.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache delete operations\n */\n public static async monitorDelete<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'delete',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `delete.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache clear operations\n */\n public static async monitorClear<T>(\n pattern: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'clear',\n keyPattern: pattern,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `clear.${pattern}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache exists operations\n */\n public static async monitorExists<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'exists',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `exists.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache multi-get operations\n */\n public static async monitorMultiGet<T>(\n keys: string[],\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'multi_get',\n keyPattern: `[${keys.join(', ')}]`,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `multi_get.${keys.length}_keys`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache multi-set operations\n */\n public static async monitorMultiSet<T>(\n keys: string[],\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'multi_set',\n keyPattern: `[${keys.join(', ')}]`,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `multi_set.${keys.length}_keys`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache increment operations\n */\n public static async monitorIncrement<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'increment',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `increment.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n\n /**\n * Monitor cache decrement operations\n */\n public static async monitorDecrement<T>(\n key: string,\n operation: () => Promise<T>,\n metadata?: Partial<CacheOperationMetadata>,\n ): Promise<T> {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n const operationMetadata: CacheOperationMetadata = {\n operation: 'decrement',\n key,\n ...metadata,\n };\n\n return monitor.measureAsync({\n name: `decrement.${key}`,\n type: 'cache',\n fn: operation,\n metadata: operationMetadata,\n });\n }\n}\n\n/**\n * Decorator for monitoring cache operations\n */\nexport function MonitorCacheOperation(operationName?: string) {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value;\n const className = target.constructor.name;\n const operation = operationName ?? propertyKey;\n\n descriptor.value = async function (...args: any[]) {\n const monitor = CachePerformanceWrapper.getPerformanceMonitor();\n\n return monitor.measureAsync({\n name: `${className}.${operation}`,\n type: 'cache',\n fn: () => originalMethod.apply(this, args),\n metadata: { argumentCount: args.length },\n });\n };\n\n return descriptor;\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-performance.d.ts","sourceRoot":"","sources":["../../src/performance/database-performance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAqB;WAExC,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAItE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC;;OAEG;WACiB,0BAA0B,CAAC,CAAC,EAC9C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;IA8Bb;;OAEG;WACiB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,YAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA4BnH;;OAEG;WACiB,kBAAkB,CAAC,CAAC,EACtC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;IAYb;;OAEG;WACiB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAe9G;;OAEG;WACiB,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAUxG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"database-performance.d.ts","sourceRoot":"","sources":["../../src/performance/database-performance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAqB;WAExC,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAItE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC;;OAEG;WACiB,0BAA0B,CAAC,CAAC,EAC9C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;IA8Bb;;OAEG;WACiB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,YAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA4BnH;;OAEG;WACiB,kBAAkB,CAAC,CAAC,EACtC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;IAYb;;OAEG;WACiB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAe9G;;OAEG;WACiB,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAUxG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,CAAC,EAAE,MAAM,IACrD,QAAQ,GAAG,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAgBzE"}
|
|
@@ -109,7 +109,7 @@ class DatabasePerformanceWrapper {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
function MonitorDatabaseOperation(operationName) {
|
|
112
|
-
return
|
|
112
|
+
return (target, propertyKey, descriptor) => {
|
|
113
113
|
const originalMethod = descriptor.value;
|
|
114
114
|
const entityName = target.constructor.name.replace("Repository", "");
|
|
115
115
|
const operation = operationName ?? propertyKey;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/performance/database-performance.ts"],
|
|
4
|
-
"sourcesContent": ["import { PerformanceMonitor } from './performance-monitor.js';\n\nexport interface DatabaseOperationMetadata {\n operation: string;\n entity?: string;\n query?: string;\n parameters?: any[];\n resultCount?: number;\n cacheHit?: boolean;\n argumentCount?: number;\n}\n\nexport class DatabasePerformanceWrapper {\n private static performanceMonitor: PerformanceMonitor;\n\n public static setPerformanceMonitor(monitor: PerformanceMonitor): void {\n DatabasePerformanceWrapper.performanceMonitor = monitor;\n }\n\n private static getPerformanceMonitor(): PerformanceMonitor {\n if (!DatabasePerformanceWrapper.performanceMonitor) {\n DatabasePerformanceWrapper.performanceMonitor = PerformanceMonitor.getInstance();\n }\n return DatabasePerformanceWrapper.performanceMonitor;\n }\n\n /**\n * Monitor database repository operations\n */\n public static async monitorRepositoryOperation<T>(\n operationName: string,\n entity: string,\n operation: () => Promise<T>,\n additionalMetadata?: Record<string, any>,\n ): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: operationName,\n entity,\n ...additionalMetadata,\n };\n\n return monitor.measureAsync({\n name: `${entity}.${operationName}`,\n type: 'database',\n fn: async () => {\n const result = await operation();\n\n // Add result metadata\n if (Array.isArray(result)) {\n metadata.resultCount = result.length;\n } else if (result && typeof result === 'object') {\n metadata.resultCount = 1;\n } else {\n metadata.resultCount = 0;\n }\n\n return result;\n },\n metadata,\n });\n }\n\n /**\n * Monitor raw database queries\n */\n public static async monitorQuery<T>(query: string, parameters: any[] = [], operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'raw_query',\n query: query.substring(0, 200) + (query.length > 200 ? '...' : ''), // Truncate long queries\n parameters: parameters.slice(0, 10), // Limit parameters for logging\n };\n\n return monitor.measureAsync({\n name: 'raw_query',\n type: 'database',\n fn: async () => {\n const result = await operation();\n\n // Add result metadata\n if (Array.isArray(result)) {\n metadata.resultCount = result.length;\n } else if (result && typeof result === 'object') {\n metadata.resultCount = 1;\n }\n\n return result;\n },\n metadata,\n });\n }\n\n /**\n * Monitor database transactions\n */\n public static async monitorTransaction<T>(\n transactionName: string,\n operation: () => Promise<T>,\n additionalMetadata?: Record<string, any>,\n ): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'transaction',\n entity: transactionName,\n ...additionalMetadata,\n };\n\n return monitor.measureAsync({ name: `transaction.${transactionName}`, type: 'database', fn: operation, metadata });\n }\n\n /**\n * Monitor database connection operations\n */\n public static async monitorConnection<T>(connectionOperation: string, operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: connectionOperation,\n };\n\n return monitor.measureAsync({\n name: `connection.${connectionOperation}`,\n type: 'database',\n fn: operation,\n metadata,\n });\n }\n\n /**\n * Monitor database migrations\n */\n public static async monitorMigration<T>(migrationName: string, operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'migration',\n entity: migrationName,\n };\n\n return monitor.measureAsync({ name: `migration.${migrationName}`, type: 'database', fn: operation, metadata });\n }\n}\n\n/**\n * Decorator for monitoring repository methods\n */\nexport function MonitorDatabaseOperation(operationName?: string) {\n return
|
|
5
|
-
"mappings": ";;AAAA,SAAS,0BAA0B;AAY5B,MAAM,2BAA2B;AAAA,EAZxC,OAYwC;AAAA;AAAA;AAAA,EACtC,OAAe;AAAA,EAEf,OAAc,sBAAsB,SAAmC;AACrE,+BAA2B,qBAAqB;AAAA,EAClD;AAAA,EAEA,OAAe,wBAA4C;AACzD,QAAI,CAAC,2BAA2B,oBAAoB;AAClD,iCAA2B,qBAAqB,mBAAmB,YAAY;AAAA,IACjF;AACA,WAAO,2BAA2B;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,2BAClB,eACA,QACA,WACA,oBACY;AACZ,UAAM,UAAU,2BAA2B,sBAAsB;AAEjE,UAAM,WAAsC;AAAA,MAC1C,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,GAAG,MAAM,IAAI,aAAa;AAAA,MAChC,MAAM;AAAA,MACN,IAAI,mCAAY;AACd,cAAM,SAAS,MAAM,UAAU;AAG/B,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,mBAAS,cAAc,OAAO;AAAA,QAChC,WAAW,UAAU,OAAO,WAAW,UAAU;AAC/C,mBAAS,cAAc;AAAA,QACzB,OAAO;AACL,mBAAS,cAAc;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAbI;AAAA,MAcJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,aAAgB,OAAe,aAAoB,CAAC,GAAG,WAAyC;AAClH,UAAM,UAAU,2BAA2B,sBAAsB;AAEjE,UAAM,WAAsC;AAAA,MAC1C,WAAW;AAAA,MACX,OAAO,MAAM,UAAU,GAAG,GAAG,KAAK,MAAM,SAAS,MAAM,QAAQ;AAAA;AAAA,MAC/D,YAAY,WAAW,MAAM,GAAG,EAAE;AAAA;AAAA,IACpC;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,IAAI,mCAAY;AACd,cAAM,SAAS,MAAM,UAAU;AAG/B,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,mBAAS,cAAc,OAAO;AAAA,QAChC,WAAW,UAAU,OAAO,WAAW,UAAU;AAC/C,mBAAS,cAAc;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAXI;AAAA,MAYJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,mBAClB,iBACA,WACA,oBACY;AACZ,UAAM,UAAU,2BAA2B,sBAAsB;AAEjE,UAAM,WAAsC;AAAA,MAC1C,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAEA,WAAO,QAAQ,aAAa,EAAE,MAAM,eAAe,eAAe,IAAI,MAAM,YAAY,IAAI,WAAW,SAAS,CAAC;AAAA,EACnH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,kBAAqB,qBAA6B,WAAyC;AAC7G,UAAM,UAAU,2BAA2B,sBAAsB;AAEjE,UAAM,WAAsC;AAAA,MAC1C,WAAW;AAAA,IACb;AAEA,WAAO,QAAQ,aAAa;AAAA,MAC1B,MAAM,cAAc,mBAAmB;AAAA,MACvC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAoB,iBAAoB,eAAuB,WAAyC;AACtG,UAAM,UAAU,2BAA2B,sBAAsB;AAEjE,UAAM,WAAsC;AAAA,MAC1C,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAEA,WAAO,QAAQ,aAAa,EAAE,MAAM,aAAa,aAAa,IAAI,MAAM,YAAY,IAAI,WAAW,SAAS,CAAC;AAAA,EAC/G;AACF;AAKO,SAAS,yBAAyB,eAAwB;AAC/D,SAAO,
|
|
4
|
+
"sourcesContent": ["import { PerformanceMonitor } from './performance-monitor.js';\n\nexport interface DatabaseOperationMetadata {\n operation: string;\n entity?: string;\n query?: string;\n parameters?: any[];\n resultCount?: number;\n cacheHit?: boolean;\n argumentCount?: number;\n}\n\nexport class DatabasePerformanceWrapper {\n private static performanceMonitor: PerformanceMonitor;\n\n public static setPerformanceMonitor(monitor: PerformanceMonitor): void {\n DatabasePerformanceWrapper.performanceMonitor = monitor;\n }\n\n private static getPerformanceMonitor(): PerformanceMonitor {\n if (!DatabasePerformanceWrapper.performanceMonitor) {\n DatabasePerformanceWrapper.performanceMonitor = PerformanceMonitor.getInstance();\n }\n return DatabasePerformanceWrapper.performanceMonitor;\n }\n\n /**\n * Monitor database repository operations\n */\n public static async monitorRepositoryOperation<T>(\n operationName: string,\n entity: string,\n operation: () => Promise<T>,\n additionalMetadata?: Record<string, any>,\n ): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: operationName,\n entity,\n ...additionalMetadata,\n };\n\n return monitor.measureAsync({\n name: `${entity}.${operationName}`,\n type: 'database',\n fn: async () => {\n const result = await operation();\n\n // Add result metadata\n if (Array.isArray(result)) {\n metadata.resultCount = result.length;\n } else if (result && typeof result === 'object') {\n metadata.resultCount = 1;\n } else {\n metadata.resultCount = 0;\n }\n\n return result;\n },\n metadata,\n });\n }\n\n /**\n * Monitor raw database queries\n */\n public static async monitorQuery<T>(query: string, parameters: any[] = [], operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'raw_query',\n query: query.substring(0, 200) + (query.length > 200 ? '...' : ''), // Truncate long queries\n parameters: parameters.slice(0, 10), // Limit parameters for logging\n };\n\n return monitor.measureAsync({\n name: 'raw_query',\n type: 'database',\n fn: async () => {\n const result = await operation();\n\n // Add result metadata\n if (Array.isArray(result)) {\n metadata.resultCount = result.length;\n } else if (result && typeof result === 'object') {\n metadata.resultCount = 1;\n }\n\n return result;\n },\n metadata,\n });\n }\n\n /**\n * Monitor database transactions\n */\n public static async monitorTransaction<T>(\n transactionName: string,\n operation: () => Promise<T>,\n additionalMetadata?: Record<string, any>,\n ): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'transaction',\n entity: transactionName,\n ...additionalMetadata,\n };\n\n return monitor.measureAsync({ name: `transaction.${transactionName}`, type: 'database', fn: operation, metadata });\n }\n\n /**\n * Monitor database connection operations\n */\n public static async monitorConnection<T>(connectionOperation: string, operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: connectionOperation,\n };\n\n return monitor.measureAsync({\n name: `connection.${connectionOperation}`,\n type: 'database',\n fn: operation,\n metadata,\n });\n }\n\n /**\n * Monitor database migrations\n */\n public static async monitorMigration<T>(migrationName: string, operation: () => Promise<T>): Promise<T> {\n const monitor = DatabasePerformanceWrapper.getPerformanceMonitor();\n\n const metadata: DatabaseOperationMetadata = {\n operation: 'migration',\n entity: migrationName,\n };\n\n return monitor.measureAsync({ name: `migration.${migrationName}`, type: 'database', fn: operation, metadata });\n }\n}\n\n/**\n * Decorator for monitoring repository methods\n */\nexport function MonitorDatabaseOperation(operationName?: string) {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value;\n const entityName = target.constructor.name.replace('Repository', '');\n const operation = operationName ?? propertyKey;\n\n descriptor.value = async function (...args: any[]) {\n return DatabasePerformanceWrapper.monitorRepositoryOperation(\n operation,\n entityName,\n () => originalMethod.apply(this, args),\n { argumentCount: args.length },\n );\n };\n\n return descriptor;\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
export * from './cache-performance.js';
|
|
2
|
+
export * from './database-performance.js';
|
|
1
3
|
export * from './performance-monitor.js';
|
|
2
4
|
export * from './performance-monitor.plugin.js';
|
|
3
|
-
export * from './
|
|
5
|
+
export * from './queue-performance.js';
|
|
4
6
|
export * from './webserver-performance.js';
|
|
5
7
|
export * from './websocket-performance.js';
|
|
6
|
-
export * from './queue-performance.js';
|
|
7
|
-
export * from './cache-performance.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
export * from "./cache-performance.js";
|
|
2
|
+
export * from "./database-performance.js";
|
|
1
3
|
export * from "./performance-monitor.js";
|
|
2
4
|
export * from "./performance-monitor.plugin.js";
|
|
3
|
-
export * from "./
|
|
5
|
+
export * from "./queue-performance.js";
|
|
4
6
|
export * from "./webserver-performance.js";
|
|
5
7
|
export * from "./websocket-performance.js";
|
|
6
|
-
export * from "./queue-performance.js";
|
|
7
|
-
export * from "./cache-performance.js";
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/performance/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './performance
|
|
4
|
+
"sourcesContent": ["export * from './cache-performance.js';\nexport * from './database-performance.js';\nexport * from './performance-monitor.js';\nexport * from './performance-monitor.plugin.js';\nexport * from './queue-performance.js';\nexport * from './webserver-performance.js';\nexport * from './websocket-performance.js';\n"],
|
|
5
5
|
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import { PerformanceObserver, performance } from "perf_hooks";
|
|
4
|
-
import { Logger } from "../logger/index.js";
|
|
3
|
+
import { PerformanceObserver, performance } from "node:perf_hooks";
|
|
5
4
|
import { safeSerializeError } from "../error/error-reporter.js";
|
|
5
|
+
import { Logger } from "../logger/index.js";
|
|
6
6
|
class PerformanceMonitor {
|
|
7
7
|
static {
|
|
8
8
|
__name(this, "PerformanceMonitor");
|