stratal 0.0.20 → 0.0.22
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 +1 -1
- package/dist/{base-email.provider-CfQCA08m.mjs → base-email.provider-BWZHIjt8.mjs} +1 -1
- package/dist/{base-email.provider-CfQCA08m.mjs.map → base-email.provider-BWZHIjt8.mjs.map} +1 -1
- package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
- package/dist/bin/quarry.mjs +46 -109
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +6 -46
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +22 -67
- package/dist/cache/index.mjs.map +1 -1
- package/dist/{cache.service-DsnKuNyO.d.mts → cache.service-e34gV6tz.d.mts} +8 -8
- package/dist/{cache.service-DsnKuNyO.d.mts.map → cache.service-e34gV6tz.d.mts.map} +1 -1
- package/dist/{cache.tokens-B7Rw1C9Q.mjs → cache.tokens-ovi_c52J.mjs} +1 -1
- package/dist/{cache.tokens-B7Rw1C9Q.mjs.map → cache.tokens-ovi_c52J.mjs.map} +1 -1
- package/dist/{colors-DJaRDXoS.mjs → colors-axmupKdp.mjs} +1 -1
- package/dist/{colors-DJaRDXoS.mjs.map → colors-axmupKdp.mjs.map} +1 -1
- package/dist/{command-BgSlsS4M.mjs → command-BU4ApTo5.mjs} +2 -3
- package/dist/command-BU4ApTo5.mjs.map +1 -0
- package/dist/{command-Bu-PjJrX.d.mts → command-wXfvHbBZ.d.mts} +3 -2
- package/dist/command-wXfvHbBZ.d.mts.map +1 -0
- package/dist/config/index.d.mts +24 -11
- package/dist/config/index.d.mts.map +1 -1
- package/dist/config/index.mjs +33 -57
- package/dist/config/index.mjs.map +1 -1
- package/dist/{consumer-registry-B7yUNh0q.d.mts → consumer-registry-DHQtypr1.d.mts} +1 -1
- package/dist/{consumer-registry-B7yUNh0q.d.mts.map → consumer-registry-DHQtypr1.d.mts.map} +1 -1
- package/dist/container-storage-GpNNz79X.mjs +52 -0
- package/dist/container-storage-GpNNz79X.mjs.map +1 -0
- package/dist/{controller.decorator-DQzenvSN.mjs → controller.decorator-DIUazNU7.mjs} +8 -8
- package/dist/controller.decorator-DIUazNU7.mjs.map +1 -0
- package/dist/cron/index.d.mts +26 -5
- package/dist/cron/index.d.mts.map +1 -1
- package/dist/cron/index.mjs +1 -1
- package/dist/{cron-manager-7Symz_TE.mjs → cron-manager-9bpN9bu4.mjs} +42 -16
- package/dist/cron-manager-9bpN9bu4.mjs.map +1 -0
- package/dist/{cron-manager-BEsH1mjW.d.mts → cron-manager-CSTIBPcM.d.mts} +6 -13
- package/dist/cron-manager-CSTIBPcM.d.mts.map +1 -0
- package/dist/decorate-HgTKAYK8.mjs +16 -0
- package/dist/deep-merge-C8NgcXw4.mjs +18 -0
- package/dist/deep-merge-C8NgcXw4.mjs.map +1 -0
- package/dist/di/index.d.mts +2 -2
- package/dist/di/index.mjs +4 -3
- package/dist/di-BO1QIb5H.mjs +415 -0
- package/dist/di-BO1QIb5H.mjs.map +1 -0
- package/dist/email/index.d.mts +14 -89
- package/dist/email/index.d.mts.map +1 -1
- package/dist/email/index.mjs +30 -125
- package/dist/email/index.mjs.map +1 -1
- package/dist/en-BPP6h6y5.mjs +202 -0
- package/dist/en-BPP6h6y5.mjs.map +1 -0
- package/dist/{env-D1rcZ8_r.d.mts → env-DKSbuBi5.d.mts} +1 -1
- package/dist/env-DKSbuBi5.d.mts.map +1 -0
- package/dist/errors/index.d.mts +2 -2
- package/dist/errors/index.mjs +4 -2
- package/dist/errors-BBZTnjdq.mjs +333 -0
- package/dist/errors-BBZTnjdq.mjs.map +1 -0
- package/dist/events/index.d.mts +2 -2
- package/dist/events/index.d.mts.map +1 -1
- package/dist/events/index.mjs +1 -1
- package/dist/{events-COKixqnG.mjs → events-D1KdDaiP.mjs} +13 -11
- package/dist/events-D1KdDaiP.mjs.map +1 -0
- package/dist/exception-context-B4kM-M53.mjs +429 -0
- package/dist/exception-context-B4kM-M53.mjs.map +1 -0
- package/dist/{gateway-context-CdJjpUCW.mjs → gateway-context-CFe6a9gz.mjs} +20 -31
- package/dist/gateway-context-CFe6a9gz.mjs.map +1 -0
- package/dist/guards/index.d.mts +3 -3
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +1 -1
- package/dist/{guards-DUk_Kzst.mjs → guards-Ced-uNIF.mjs} +7 -5
- package/dist/guards-Ced-uNIF.mjs.map +1 -0
- package/dist/{http-method.decorator-DXwxAfb_.mjs → http-method.decorator-CdjKFJZZ.mjs} +7 -6
- package/dist/http-method.decorator-CdjKFJZZ.mjs.map +1 -0
- package/dist/i18n/index.d.mts +238 -3
- package/dist/i18n/index.d.mts.map +1 -0
- package/dist/i18n/index.mjs +39 -3
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/i18n/messages/en/index.d.mts +2 -2
- package/dist/i18n/messages/en/index.mjs +2 -2
- package/dist/i18n/utils/index.d.mts +4 -26
- package/dist/i18n/utils/index.d.mts.map +1 -1
- package/dist/i18n/utils/index.mjs +2 -2
- package/dist/i18n/validation/index.d.mts +3 -2
- package/dist/i18n/validation/index.mjs +4 -2
- package/dist/i18n.module-BlXrtAlV.mjs +219 -0
- package/dist/i18n.module-BlXrtAlV.mjs.map +1 -0
- package/dist/i18n.tokens-hwRpmjRq.mjs +19 -0
- package/dist/i18n.tokens-hwRpmjRq.mjs.map +1 -0
- package/dist/{index-7-hU3GTV.d.mts → index-B4UBK-2T.d.mts} +1 -1
- package/dist/{index-7-hU3GTV.d.mts.map → index-B4UBK-2T.d.mts.map} +1 -1
- package/dist/index-BtlE9RuO.d.mts +124 -0
- package/dist/index-BtlE9RuO.d.mts.map +1 -0
- package/dist/{index-CjaQ6_tZ.d.mts → index-CW1YHSft.d.mts} +71 -167
- package/dist/index-CW1YHSft.d.mts.map +1 -0
- package/dist/{index-D0US0X14.d.mts → index-DEncMcC6.d.mts} +559 -2239
- package/dist/index-DEncMcC6.d.mts.map +1 -0
- package/dist/index-Dj5IMwtr.d.mts +44 -0
- package/dist/index-Dj5IMwtr.d.mts.map +1 -0
- package/dist/{index-C1KvMncZ.d.mts → index-KMgSCSM7.d.mts} +3 -108
- package/dist/index-KMgSCSM7.d.mts.map +1 -0
- package/dist/index.d.mts +5 -43
- package/dist/index.mjs +1 -1
- package/dist/{is-command-C6a7WTPw.mjs → is-command-CX5rAfZW.mjs} +2 -2
- package/dist/{is-command-C6a7WTPw.mjs.map → is-command-CX5rAfZW.mjs.map} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs → is-seeder-CYCtELlm.mjs} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs.map → is-seeder-CYCtELlm.mjs.map} +1 -1
- package/dist/logger/index.d.mts +2 -2
- package/dist/logger/index.mjs +170 -2
- package/dist/logger/index.mjs.map +1 -0
- package/dist/macroable/index.d.mts +1 -1
- package/dist/macroable/index.mjs +1 -1
- package/dist/{macroable-BmufBshB.mjs → macroable-DzlfzT50.mjs} +1 -1
- package/dist/{macroable-BmufBshB.mjs.map → macroable-DzlfzT50.mjs.map} +1 -1
- package/dist/metadata-BVkc4aUu.mjs +39 -0
- package/dist/metadata-BVkc4aUu.mjs.map +1 -0
- package/dist/module/index.d.mts +6 -24
- package/dist/module/index.d.mts.map +1 -1
- package/dist/module/index.mjs +2 -2
- package/dist/module-xYoHba6B.mjs +422 -0
- package/dist/module-xYoHba6B.mjs.map +1 -0
- package/dist/openapi/index.d.mts +3 -3
- package/dist/openapi/index.d.mts.map +1 -1
- package/dist/openapi/index.mjs +1 -2
- package/dist/openapi-C6lm0RmV.mjs +483 -0
- package/dist/openapi-C6lm0RmV.mjs.map +1 -0
- package/dist/{openapi.service-BLgvn3hJ.d.mts → openapi.service-CrLlsXAd.d.mts} +3 -3
- package/dist/openapi.service-CrLlsXAd.d.mts.map +1 -0
- package/dist/quarry/index.d.mts +5 -163
- package/dist/quarry/index.d.mts.map +1 -1
- package/dist/quarry/index.mjs +5 -5
- package/dist/quarry/runner.d.mts +184 -0
- package/dist/quarry/runner.d.mts.map +1 -0
- package/dist/quarry/runner.mjs +775 -0
- package/dist/quarry/runner.mjs.map +1 -0
- package/dist/quarry-registry-D4hIGScf.d.mts +69 -0
- package/dist/quarry-registry-D4hIGScf.d.mts.map +1 -0
- package/dist/quarry-registry-DkraZNwn.mjs +311 -0
- package/dist/quarry-registry-DkraZNwn.mjs.map +1 -0
- package/dist/queue/index.d.mts +3 -3
- package/dist/queue/index.mjs +27 -28
- package/dist/queue/index.mjs.map +1 -1
- package/dist/{queue.module-BCdCiySt.mjs → queue.module-DeWJ0tQM.mjs} +67 -112
- package/dist/queue.module-DeWJ0tQM.mjs.map +1 -0
- package/dist/{r2-storage.provider-Co6F0ZYV.mjs → r2-storage.provider-Hfm6LdZQ.mjs} +8 -5
- package/dist/r2-storage.provider-Hfm6LdZQ.mjs.map +1 -0
- package/dist/{rate-limit.decorator--o6Q6p9w.mjs → rate-limit.decorator-D69zdZbp.mjs} +6 -11
- package/dist/rate-limit.decorator-D69zdZbp.mjs.map +1 -0
- package/dist/rate-limiter/index.d.mts +11 -50
- package/dist/rate-limiter/index.d.mts.map +1 -1
- package/dist/rate-limiter/index.mjs +25 -30
- package/dist/rate-limiter/index.mjs.map +1 -1
- package/dist/{resend.provider-M6qRLrcy.mjs → resend.provider-Ur6tU7fK.mjs} +8 -7
- package/dist/resend.provider-Ur6tU7fK.mjs.map +1 -0
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +8 -7
- package/dist/{i18n.module-BBlNNlcG.mjs → router-Cy6DjkvP.mjs} +215 -855
- package/dist/router-Cy6DjkvP.mjs.map +1 -0
- package/dist/seeder/index.d.mts +6 -11
- package/dist/seeder/index.d.mts.map +1 -1
- package/dist/seeder/index.mjs +3 -3
- package/dist/{seeder-CJAOHEIo.mjs → seeder-BADTig4n.mjs} +17 -22
- package/dist/seeder-BADTig4n.mjs.map +1 -0
- package/dist/{signed-url-BQPbv2In.mjs → signed-url-BqUqt5dF.mjs} +1 -1
- package/dist/{signed-url-BQPbv2In.mjs.map → signed-url-BqUqt5dF.mjs.map} +1 -1
- package/dist/{smtp.provider-w0Ve52Xg.mjs → smtp.provider-C129sNBT.mjs} +7 -6
- package/dist/smtp.provider-C129sNBT.mjs.map +1 -0
- package/dist/storage/index.d.mts +15 -39
- package/dist/storage/index.d.mts.map +1 -1
- package/dist/storage/index.mjs +3 -3
- package/dist/storage/providers/index.d.mts +2 -2
- package/dist/storage/providers/index.mjs +1 -1
- package/dist/{storage-1zw-6Yiz.mjs → storage-BA3ppVYM.mjs} +70 -59
- package/dist/storage-BA3ppVYM.mjs.map +1 -0
- package/dist/{storage-provider.interface-Bd6vA4ak.d.mts → storage-provider.interface-DQMtT42e.d.mts} +2 -3
- package/dist/storage-provider.interface-DQMtT42e.d.mts.map +1 -0
- package/dist/storage.error-C6FY037a.mjs +8 -0
- package/dist/storage.error-C6FY037a.mjs.map +1 -0
- package/dist/{stratal-DeEcGgdq.mjs → stratal-Bdq4IdB3.mjs} +31 -183
- package/dist/stratal-Bdq4IdB3.mjs.map +1 -0
- package/dist/stratal-BsKmvP6J.d.mts +43 -0
- package/dist/stratal-BsKmvP6J.d.mts.map +1 -0
- package/dist/{types-cySNS_lp.d.mts → types-BaeHi67f.d.mts} +1 -1
- package/dist/types-BaeHi67f.d.mts.map +1 -0
- package/dist/{usage-generator-BUdlhnCK.mjs → usage-generator-DTqaUMR9.mjs} +6 -3
- package/dist/usage-generator-DTqaUMR9.mjs.map +1 -0
- package/dist/validation-DUzcjb8Q.mjs +49 -0
- package/dist/validation-DUzcjb8Q.mjs.map +1 -0
- package/dist/validation.context-XTysWJ3b.mjs +117 -0
- package/dist/validation.context-XTysWJ3b.mjs.map +1 -0
- package/dist/websocket/index.d.mts +7 -14
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +2 -2
- package/dist/workers/index.d.mts +2 -2
- package/dist/workers/index.mjs +3 -2
- package/dist/workers/index.mjs.map +1 -1
- package/dist/{index-Bnpfq6uk.d.mts → zod-DvWTfRpI.d.mts} +58 -133
- package/dist/zod-DvWTfRpI.d.mts.map +1 -0
- package/dist/zod-hMa3rSHV.mjs +72 -0
- package/dist/zod-hMa3rSHV.mjs.map +1 -0
- package/package.json +20 -20
- package/dist/command-BgSlsS4M.mjs.map +0 -1
- package/dist/command-Bu-PjJrX.d.mts.map +0 -1
- package/dist/controller.decorator-DQzenvSN.mjs.map +0 -1
- package/dist/cron-manager-7Symz_TE.mjs.map +0 -1
- package/dist/cron-manager-BEsH1mjW.d.mts.map +0 -1
- package/dist/en-DSH_bhh6.mjs +0 -308
- package/dist/en-DSH_bhh6.mjs.map +0 -1
- package/dist/env-D1rcZ8_r.d.mts.map +0 -1
- package/dist/errors-BdyV5PnY.mjs +0 -1725
- package/dist/errors-BdyV5PnY.mjs.map +0 -1
- package/dist/errors-Da3Pz2X7.mjs +0 -74
- package/dist/errors-Da3Pz2X7.mjs.map +0 -1
- package/dist/events-COKixqnG.mjs.map +0 -1
- package/dist/gateway-context-CdJjpUCW.mjs.map +0 -1
- package/dist/guards-DUk_Kzst.mjs.map +0 -1
- package/dist/http-method.decorator-DXwxAfb_.mjs.map +0 -1
- package/dist/i18n.module-BBlNNlcG.mjs.map +0 -1
- package/dist/index-Bnpfq6uk.d.mts.map +0 -1
- package/dist/index-C1KvMncZ.d.mts.map +0 -1
- package/dist/index-CjaQ6_tZ.d.mts.map +0 -1
- package/dist/index-D0US0X14.d.mts.map +0 -1
- package/dist/index-DBd_2wv8.d.mts +0 -263
- package/dist/index-DBd_2wv8.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/logger-V6Ms3QnQ.mjs +0 -436
- package/dist/logger-V6Ms3QnQ.mjs.map +0 -1
- package/dist/module-Dk2qTa77.mjs +0 -860
- package/dist/module-Dk2qTa77.mjs.map +0 -1
- package/dist/openapi-tools.service-Zs-Ewv7F.mjs +0 -200
- package/dist/openapi-tools.service-Zs-Ewv7F.mjs.map +0 -1
- package/dist/openapi.service-BLgvn3hJ.d.mts.map +0 -1
- package/dist/quarry-registry-DNEej-Db.mjs +0 -688
- package/dist/quarry-registry-DNEej-Db.mjs.map +0 -1
- package/dist/queue.module-BCdCiySt.mjs.map +0 -1
- package/dist/r2-storage.provider-Co6F0ZYV.mjs.map +0 -1
- package/dist/rate-limit.decorator--o6Q6p9w.mjs.map +0 -1
- package/dist/resend.provider-M6qRLrcy.mjs.map +0 -1
- package/dist/seeder-CJAOHEIo.mjs.map +0 -1
- package/dist/setup-CefZKV_e.mjs +0 -37
- package/dist/setup-CefZKV_e.mjs.map +0 -1
- package/dist/smtp.provider-w0Ve52Xg.mjs.map +0 -1
- package/dist/storage-1zw-6Yiz.mjs.map +0 -1
- package/dist/storage-provider.interface-Bd6vA4ak.d.mts.map +0 -1
- package/dist/stratal-DeEcGgdq.mjs.map +0 -1
- package/dist/types-cySNS_lp.d.mts.map +0 -1
- package/dist/usage-generator-BUdlhnCK.mjs.map +0 -1
- package/dist/validation-DtJwAv7O.mjs +0 -248
- package/dist/validation-DtJwAv7O.mjs.map +0 -1
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
//#region src/logger/logger.tokens.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Dependency Injection Tokens for Logger Module
|
|
4
|
-
*
|
|
5
|
-
* Symbol-based tokens ensure type-safe dependency injection
|
|
6
|
-
* and prevent naming collisions.
|
|
7
|
-
*/
|
|
8
|
-
declare const LOGGER_TOKENS: {
|
|
9
|
-
/**
|
|
10
|
-
* Main logger service facade
|
|
11
|
-
*/
|
|
12
|
-
readonly LoggerService: symbol;
|
|
13
|
-
/**
|
|
14
|
-
* Log formatter (JSON or Pretty)
|
|
15
|
-
*/
|
|
16
|
-
readonly Formatter: symbol;
|
|
17
|
-
/**
|
|
18
|
-
* Array of active transports
|
|
19
|
-
*/
|
|
20
|
-
readonly Transports: symbol;
|
|
21
|
-
/**
|
|
22
|
-
* Individual transport tokens (for factory registration)
|
|
23
|
-
*/
|
|
24
|
-
readonly ConsoleTransport: symbol;
|
|
25
|
-
/**
|
|
26
|
-
* Configured log level for filtering
|
|
27
|
-
*/
|
|
28
|
-
readonly LogLevelOptions: symbol;
|
|
29
|
-
};
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region src/logger/contracts/log-level.d.ts
|
|
32
|
-
/**
|
|
33
|
-
* Log severity levels
|
|
34
|
-
* Ordered from least to most severe
|
|
35
|
-
*/
|
|
36
|
-
declare enum LogLevel {
|
|
37
|
-
DEBUG = "debug",
|
|
38
|
-
INFO = "info",
|
|
39
|
-
WARN = "warn",
|
|
40
|
-
ERROR = "error"
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Map log levels to numeric priorities (for filtering)
|
|
44
|
-
* Higher numbers = more severe = higher priority
|
|
45
|
-
*/
|
|
46
|
-
declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/logger/contracts/log-context.d.ts
|
|
49
|
-
/**
|
|
50
|
-
* Structured metadata attached to log entries
|
|
51
|
-
* Supports arbitrary key-value pairs for context enrichment
|
|
52
|
-
*/
|
|
53
|
-
type LogContext = Record<string, unknown>;
|
|
54
|
-
/**
|
|
55
|
-
* Internal context automatically added by LoggerService
|
|
56
|
-
* Contains request metadata, etc.
|
|
57
|
-
*/
|
|
58
|
-
interface InternalLogContext extends LogContext {
|
|
59
|
-
userId?: string;
|
|
60
|
-
timestamp: number;
|
|
61
|
-
}
|
|
62
|
-
//#endregion
|
|
63
|
-
//#region src/logger/contracts/log-entry.d.ts
|
|
64
|
-
/**
|
|
65
|
-
* Complete log entry structure passed to transports
|
|
66
|
-
* Combines message, level, and enriched context
|
|
67
|
-
*/
|
|
68
|
-
interface LogEntry {
|
|
69
|
-
level: LogLevel;
|
|
70
|
-
message: string;
|
|
71
|
-
context: InternalLogContext;
|
|
72
|
-
error?: {
|
|
73
|
-
message: string;
|
|
74
|
-
stack?: string;
|
|
75
|
-
name?: string;
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region src/logger/formatters/formatter.interface.d.ts
|
|
80
|
-
/**
|
|
81
|
-
* Formatter contract
|
|
82
|
-
* Transforms LogEntry into string representation for transport output
|
|
83
|
-
*/
|
|
84
|
-
interface ILogFormatter {
|
|
85
|
-
/**
|
|
86
|
-
* Format log entry into string
|
|
87
|
-
* @param entry - Complete log entry with context
|
|
88
|
-
* @returns Formatted string ready for transport
|
|
89
|
-
*/
|
|
90
|
-
format(entry: LogEntry): string;
|
|
91
|
-
}
|
|
92
|
-
//#endregion
|
|
93
|
-
//#region src/logger/transports/transport.interface.d.ts
|
|
94
|
-
/**
|
|
95
|
-
* Transport contract
|
|
96
|
-
* Handles delivery of formatted log entries to destinations
|
|
97
|
-
*/
|
|
98
|
-
interface ILogTransport {
|
|
99
|
-
/**
|
|
100
|
-
* Transport name for identification
|
|
101
|
-
*/
|
|
102
|
-
readonly name: string;
|
|
103
|
-
/**
|
|
104
|
-
* Write log entry to destination
|
|
105
|
-
* Must be async to support waitUntil pattern
|
|
106
|
-
*
|
|
107
|
-
* @param entry - Complete log entry
|
|
108
|
-
* @param formatted - Pre-formatted string from formatter
|
|
109
|
-
* @returns Promise that resolves when log is written
|
|
110
|
-
*/
|
|
111
|
-
write(entry: LogEntry, formatted: string): Promise<void>;
|
|
112
|
-
}
|
|
113
|
-
//#endregion
|
|
114
|
-
//#region src/logger/services/logger.service.d.ts
|
|
115
|
-
/**
|
|
116
|
-
* Logger Service
|
|
117
|
-
*
|
|
118
|
-
* Main logging facade.
|
|
119
|
-
*
|
|
120
|
-
* **Features:**
|
|
121
|
-
* - Async logging via ctx.waitUntil() for non-blocking performance
|
|
122
|
-
* - Multi-transport support (console, future Sentry/Cloudflare Analytics)
|
|
123
|
-
* - Configurable formatters (JSON production, Pretty development)
|
|
124
|
-
* - Log level filtering based on environment
|
|
125
|
-
*
|
|
126
|
-
* **Architecture:**
|
|
127
|
-
* - Transports and formatters injected via DI
|
|
128
|
-
*
|
|
129
|
-
* @example Basic usage
|
|
130
|
-
* ```typescript
|
|
131
|
-
* @Transient()
|
|
132
|
-
* export class UserService {
|
|
133
|
-
* constructor(
|
|
134
|
-
* @inject(LOGGER_TOKENS.LoggerService)
|
|
135
|
-
* private readonly logger: LoggerService
|
|
136
|
-
* ) {}
|
|
137
|
-
*
|
|
138
|
-
* async createUser(input: CreateUserInput) {
|
|
139
|
-
* this.logger.info('Creating user', { email: input.email })
|
|
140
|
-
* }
|
|
141
|
-
* }
|
|
142
|
-
* ```
|
|
143
|
-
*/
|
|
144
|
-
declare class LoggerService {
|
|
145
|
-
private readonly logLevel;
|
|
146
|
-
private readonly executionContext;
|
|
147
|
-
private readonly formatter;
|
|
148
|
-
private readonly transports;
|
|
149
|
-
constructor(logLevel: LogLevel, executionContext: globalThis.ExecutionContext, formatter: ILogFormatter, transports: ILogTransport[]);
|
|
150
|
-
/**
|
|
151
|
-
* Log debug message (development only)
|
|
152
|
-
*/
|
|
153
|
-
debug(message: string, context?: LogContext): void;
|
|
154
|
-
/**
|
|
155
|
-
* Log info message
|
|
156
|
-
*/
|
|
157
|
-
info(message: string, context?: LogContext): void;
|
|
158
|
-
/**
|
|
159
|
-
* Log warning message
|
|
160
|
-
*/
|
|
161
|
-
warn(message: string, context?: LogContext): void;
|
|
162
|
-
/**
|
|
163
|
-
* Log error message
|
|
164
|
-
* Accepts Error object or custom context
|
|
165
|
-
*/
|
|
166
|
-
error(message: string, contextOrError?: LogContext | Error): void;
|
|
167
|
-
/**
|
|
168
|
-
* Core logging implementation
|
|
169
|
-
* Enriches context, formats message, dispatches to transports
|
|
170
|
-
* Uses ctx.waitUntil() for async non-blocking processing
|
|
171
|
-
*/
|
|
172
|
-
private log;
|
|
173
|
-
/**
|
|
174
|
-
* Enrich log context with request info and timestamp
|
|
175
|
-
* Context enrichment can be extended by application modules
|
|
176
|
-
*/
|
|
177
|
-
private enrichContext;
|
|
178
|
-
/**
|
|
179
|
-
* Serialize Error object for transport
|
|
180
|
-
*/
|
|
181
|
-
private serializeError;
|
|
182
|
-
}
|
|
183
|
-
//#endregion
|
|
184
|
-
//#region src/logger/formatters/json-formatter.d.ts
|
|
185
|
-
/**
|
|
186
|
-
* JSON Formatter
|
|
187
|
-
*
|
|
188
|
-
* Produces structured JSON logs for production environments.
|
|
189
|
-
* Optimized for log aggregation systems (Cloudflare Analytics, Datadog, etc.)
|
|
190
|
-
*
|
|
191
|
-
* Output format:
|
|
192
|
-
* {
|
|
193
|
-
* "level": "info",
|
|
194
|
-
* "message": "User logged in",
|
|
195
|
-
* "timestamp": 1234567890,
|
|
196
|
-
* "userId": "user_456",
|
|
197
|
-
* "error": { "message": "...", "stack": "..." }
|
|
198
|
-
* }
|
|
199
|
-
*/
|
|
200
|
-
declare class JsonFormatter implements ILogFormatter {
|
|
201
|
-
format(entry: LogEntry): string;
|
|
202
|
-
}
|
|
203
|
-
//#endregion
|
|
204
|
-
//#region src/logger/formatters/pretty-formatter.d.ts
|
|
205
|
-
/**
|
|
206
|
-
* Pretty Formatter
|
|
207
|
-
*
|
|
208
|
-
* Human-readable colored output for development environments.
|
|
209
|
-
* Uses ANSI color codes for terminal output.
|
|
210
|
-
*
|
|
211
|
-
* Output format:
|
|
212
|
-
* [2024-01-15 10:30:45] INFO: User logged in
|
|
213
|
-
* userId: user_456
|
|
214
|
-
*/
|
|
215
|
-
declare class PrettyFormatter implements ILogFormatter {
|
|
216
|
-
private readonly colors;
|
|
217
|
-
private readonly reset;
|
|
218
|
-
format(entry: LogEntry): string;
|
|
219
|
-
}
|
|
220
|
-
//#endregion
|
|
221
|
-
//#region src/logger/transports/base-transport.d.ts
|
|
222
|
-
/**
|
|
223
|
-
* Base Transport
|
|
224
|
-
*
|
|
225
|
-
* Abstract base class providing shared transport logic.
|
|
226
|
-
* Reduces code duplication across transport implementations.
|
|
227
|
-
*/
|
|
228
|
-
declare abstract class BaseTransport implements ILogTransport {
|
|
229
|
-
abstract readonly name: string;
|
|
230
|
-
/**
|
|
231
|
-
* Write log entry - must be implemented by concrete transports
|
|
232
|
-
*/
|
|
233
|
-
abstract write(entry: LogEntry, formatted: string): Promise<void>;
|
|
234
|
-
/**
|
|
235
|
-
* Handle transport errors gracefully
|
|
236
|
-
* Logs to console.error as fallback to prevent log loss
|
|
237
|
-
*
|
|
238
|
-
* @param error - Error that occurred during write
|
|
239
|
-
* @param entry - Log entry that failed
|
|
240
|
-
*/
|
|
241
|
-
protected handleError(error: unknown, entry: LogEntry): void;
|
|
242
|
-
}
|
|
243
|
-
//#endregion
|
|
244
|
-
//#region src/logger/transports/console-transport.d.ts
|
|
245
|
-
/**
|
|
246
|
-
* Console Transport
|
|
247
|
-
*
|
|
248
|
-
* Writes logs to console using appropriate console methods.
|
|
249
|
-
* Maps log levels to console.debug, console.info, console.warn, console.error.
|
|
250
|
-
*
|
|
251
|
-
* Thread-safe for Cloudflare Workers environment.
|
|
252
|
-
*/
|
|
253
|
-
declare class ConsoleTransport extends BaseTransport {
|
|
254
|
-
readonly name = "console";
|
|
255
|
-
write(entry: LogEntry, formatted: string): Promise<void>;
|
|
256
|
-
/**
|
|
257
|
-
* Map log level to console method
|
|
258
|
-
*/
|
|
259
|
-
private getConsoleMethod;
|
|
260
|
-
}
|
|
261
|
-
//#endregion
|
|
262
|
-
export { LogEntry as a, LOG_LEVEL_PRIORITY as c, LoggerService as i, LogLevel as l, PrettyFormatter as n, InternalLogContext as o, JsonFormatter as r, LogContext as s, ConsoleTransport as t, LOGGER_TOKENS as u };
|
|
263
|
-
//# sourceMappingURL=index-DBd_2wv8.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DBd_2wv8.d.mts","names":[],"sources":["../src/logger/logger.tokens.ts","../src/logger/contracts/log-level.ts","../src/logger/contracts/log-context.ts","../src/logger/contracts/log-entry.ts","../src/logger/formatters/formatter.interface.ts","../src/logger/transports/transport.interface.ts","../src/logger/services/logger.service.ts","../src/logger/formatters/json-formatter.ts","../src/logger/formatters/pretty-formatter.ts","../src/logger/transports/base-transport.ts","../src/logger/transports/console-transport.ts"],"mappings":";;AAMA;;;;;cAAa,aAAA;;;;;;;;;ECFD;;;EAAA;EACV;;;EAAA;EAGK;;AAOP;EAPO;;;;;ADFP;;;aCFY,QAAA;EACV,KAAA;EACA,IAAA;EACA,IAAA;EACA,KAAA;AAAA;;;;;cAOW,kBAAA,EAAoB,MAAA,CAAO,QAAA;;;;ADTxC;;;KEFY,UAAA,GAAa,MAAA;;;;;UAMR,kBAAA,SAA2B,UAAA;EAC1C,MAAA;EACA,SAAA;AAAA;;;;;;;UCLe,QAAA;EACf,KAAA,EAAO,QAAA;EACP,OAAA;EACA,OAAA,EAAS,kBAAA;EACT,KAAA;IACE,OAAA;IACA,KAAA;IACA,IAAA;EAAA;AAAA;;;AHRJ;;;;AAAA,UIAiB,aAAA;;;;;;EAMf,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA;;;AJNhB;;;;AAAA,UKAiB,aAAA;;;;WAIN,IAAA;;;;;;AJNX;;;EIgBE,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,SAAA,WAAoB,OAAA;AAAA;;;;;;;;;;;;;;AJhB7C;;;;;;;;;;AAWA;;;;;;;;cKwBa,aAAA;EAAA,iBAGQ,QAAA;EAAA,iBAGA,gBAAA;EAAA,iBAGA,SAAA;EAAA,iBAGA,UAAA;cATA,QAAA,EAAU,QAAA,EAGV,gBAAA,EAAkB,UAAA,CAAW,gBAAA,EAG7B,SAAA,EAAW,aAAA,EAGX,UAAA,EAAY,aAAA;EJzCG;;;EI+ClC,KAAA,CAAM,OAAA,UAAiB,OAAA,GAAU,UAAA;EJ9CjC;;;EIqDA,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,UAAA;;;;EAOhC,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,UAAA;EHhET;;;;EGwEvB,KAAA,CAAM,OAAA,UAAiB,cAAA,GAAiB,UAAA,GAAa,KAAA;EHtErD;;;;;EAAA,QGwFQ,GAAA;EHnFN;;;;EAAA,QGgIM,aAAA;;AFxIV;;UEkJU,cAAA;AAAA;;;;;;;;;;;;;;;;ALpJV;;cMca,aAAA,YAAyB,aAAA;EACpC,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA;;;;;;;;;;;;;cCLH,eAAA,YAA2B,aAAA;EAAA,iBACrB,MAAA;EAAA,iBAOA,KAAA;EAEjB,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA;;;;;;;;;uBCfM,aAAA,YAAyB,aAAA;EAAA,kBAC3B,IAAA;;;;WAKT,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,SAAA,WAAoB,OAAA;;ARXtD;;;;;;YQoBY,WAAA,CAAY,KAAA,WAAgB,KAAA,EAAO,QAAA;AAAA;;;;;;;;;;;cCTlC,gBAAA,SAAyB,aAAA;EAAA,SAC3B,IAAA;EAET,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,SAAA,WAAoB,OAAA;;;ATd7C;US4BU,gBAAA;AAAA"}
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/stratal.ts"],"mappings":";;;;;;AAqBA;;;;;;;;;;;;cAAa,OAAA,aAAoB,UAAA,GAAa,UAAA;EAAA,QACpC,GAAA;EAAA,QACA,WAAA;EAAA,eAEO,YAAA;EAAA,eACA,WAAA;EAAA,eACA,iBAAA;cAEH,MAAA,EAAQ,iBAAA;EAiBd,KAAA,CAAM,OAAA,EAAS,OAAA,EAAS,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,gBAAA,GAAmB,OAAA,CAAQ,QAAA;EAMlE,KAAA,CAAM,KAAA,EAAO,YAAA,GAAe,OAAA;EAK5B,SAAA,CAAU,UAAA,EAAY,mBAAA,GAAsB,OAAA;EAAA,IAK9C,IAAA,CAAA,GAAQ,OAAA,CAAQ,OAAA;EAId,QAAA,CAAA,GAAY,OAAA;EA7C0B;;;;;;EAAA,OA2DrC,kBAAA,CAAA,GAAsB,OAAA,CAAQ,WAAA;EAAA,QAOvB,WAAA;EAAA,QAKA,UAAA;AAAA"}
|
package/dist/logger-V6Ms3QnQ.mjs
DELETED
|
@@ -1,436 +0,0 @@
|
|
|
1
|
-
import { inject, injectable } from "tsyringe";
|
|
2
|
-
//#region src/di/decorators/inject-param.decorator.ts
|
|
3
|
-
/**
|
|
4
|
-
* Metadata key for storing parameter injection information
|
|
5
|
-
*/
|
|
6
|
-
const INJECT_PARAM_METADATA_KEY = Symbol.for("stratal:inject:param");
|
|
7
|
-
/**
|
|
8
|
-
* Mark a method parameter for DI injection
|
|
9
|
-
*
|
|
10
|
-
* The parameter will be resolved from the request-scoped container
|
|
11
|
-
* when the controller method is invoked.
|
|
12
|
-
*
|
|
13
|
-
* @param token - DI token to resolve (class or symbol)
|
|
14
|
-
*
|
|
15
|
-
* @example With class token
|
|
16
|
-
* ```typescript
|
|
17
|
-
* async show(
|
|
18
|
-
* ctx: RouterContext,
|
|
19
|
-
* @InjectParam(UserService) userService: UserService
|
|
20
|
-
* ) { }
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @example With symbol token
|
|
24
|
-
* ```typescript
|
|
25
|
-
* async show(
|
|
26
|
-
* ctx: RouterContext,
|
|
27
|
-
* @InjectParam(DI_TOKENS.Cache) cache: ICacheService
|
|
28
|
-
* ) { }
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
function InjectParam(token) {
|
|
32
|
-
return (target, propertyKey, parameterIndex) => {
|
|
33
|
-
if (propertyKey === void 0) throw new Error("@InjectParam can only be used on method parameters, not constructor parameters");
|
|
34
|
-
const existingInjections = Reflect.getMetadata(INJECT_PARAM_METADATA_KEY, target, propertyKey) ?? [];
|
|
35
|
-
existingInjections.push({
|
|
36
|
-
index: parameterIndex,
|
|
37
|
-
token
|
|
38
|
-
});
|
|
39
|
-
Reflect.defineMetadata(INJECT_PARAM_METADATA_KEY, existingInjections, target, propertyKey);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get method parameter injections
|
|
44
|
-
*
|
|
45
|
-
* @param target - Controller prototype
|
|
46
|
-
* @param propertyKey - Method name
|
|
47
|
-
* @returns Array of parameter injections sorted by index
|
|
48
|
-
*/
|
|
49
|
-
function getMethodInjections(target, propertyKey) {
|
|
50
|
-
return (Reflect.getMetadata(INJECT_PARAM_METADATA_KEY, target, propertyKey) ?? []).sort((a, b) => a.index - b.index);
|
|
51
|
-
}
|
|
52
|
-
//#endregion
|
|
53
|
-
//#region src/di/decorators.ts
|
|
54
|
-
/**
|
|
55
|
-
* DI Decorators
|
|
56
|
-
*
|
|
57
|
-
* Provides decorators for dependency injection:
|
|
58
|
-
* - @Transient: Mark classes as injectable (lifecycle controlled at registration)
|
|
59
|
-
* - @InjectParam: Inject dependencies into method parameters
|
|
60
|
-
*
|
|
61
|
-
* Lifecycle (Singleton, Request, Transient) is controlled at registration time
|
|
62
|
-
* via the `scope` property in module providers or Container.register().
|
|
63
|
-
*/
|
|
64
|
-
/**
|
|
65
|
-
* Mark a class as injectable
|
|
66
|
-
*
|
|
67
|
-
* This decorator wraps tsyringe's `@injectable` decorator and optionally
|
|
68
|
-
* associates a token with the class. The actual lifecycle (Singleton, Request,
|
|
69
|
-
* Transient) is determined at registration time, not decoration time.
|
|
70
|
-
*
|
|
71
|
-
* **Lifecycle Control:**
|
|
72
|
-
* - Use `scope: Scope.Singleton` in module providers for singleton
|
|
73
|
-
* - Use `scope: Scope.Request` in module providers for request-scoped
|
|
74
|
-
* - Default is Transient (new instance per resolution)
|
|
75
|
-
*
|
|
76
|
-
* @param token - Optional DI token for service resolution
|
|
77
|
-
*
|
|
78
|
-
* @example Basic usage (no token)
|
|
79
|
-
* ```typescript
|
|
80
|
-
* @Transient()
|
|
81
|
-
* export class UserService {
|
|
82
|
-
* constructor(@inject(DI_TOKENS.Database) private db: DatabaseService) {}
|
|
83
|
-
* }
|
|
84
|
-
*
|
|
85
|
-
* // In module:
|
|
86
|
-
* @Module({
|
|
87
|
-
* providers: [UserService] // Transient by default
|
|
88
|
-
* })
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @example With token
|
|
92
|
-
* ```typescript
|
|
93
|
-
* @Transient(DI_TOKENS.ConnectionManager)
|
|
94
|
-
* export class ConnectionManager implements Disposable {
|
|
95
|
-
* // ...
|
|
96
|
-
* }
|
|
97
|
-
*
|
|
98
|
-
* // In Application.ts:
|
|
99
|
-
* container.register(DI_TOKENS.ConnectionManager, ConnectionManager, Scope.Request)
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @example Singleton via provider scope
|
|
103
|
-
* ```typescript
|
|
104
|
-
* @Transient()
|
|
105
|
-
* export class ConsumerRegistry {
|
|
106
|
-
* // ...
|
|
107
|
-
* }
|
|
108
|
-
*
|
|
109
|
-
* // In module:
|
|
110
|
-
* @Module({
|
|
111
|
-
* providers: [
|
|
112
|
-
* { provide: DI_TOKENS.ConsumerRegistry, useClass: ConsumerRegistry, scope: Scope.Singleton }
|
|
113
|
-
* ]
|
|
114
|
-
* })
|
|
115
|
-
* ```
|
|
116
|
-
*/
|
|
117
|
-
function Transient(token) {
|
|
118
|
-
return function(target) {
|
|
119
|
-
const targetConstructor = target;
|
|
120
|
-
injectable({ token })(targetConstructor);
|
|
121
|
-
return target;
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
//#endregion
|
|
125
|
-
//#region src/di/tokens.ts
|
|
126
|
-
/**
|
|
127
|
-
* Token for the Container instance
|
|
128
|
-
* Used for injecting the Container into services that need dynamic resolution
|
|
129
|
-
*/
|
|
130
|
-
const CONTAINER_TOKEN = Symbol.for("stratal:di:container");
|
|
131
|
-
const DI_TOKENS = {
|
|
132
|
-
CloudflareEnv: Symbol.for("stratal:cloudflare:env"),
|
|
133
|
-
ExecutionContext: Symbol.for("stratal:execution:context"),
|
|
134
|
-
Container: CONTAINER_TOKEN,
|
|
135
|
-
Application: Symbol.for("stratal:application"),
|
|
136
|
-
ModuleRegistry: Symbol.for("stratal:module:registry"),
|
|
137
|
-
ExceptionHandler: Symbol.for("stratal:exception:handler"),
|
|
138
|
-
Database: Symbol.for("stratal:database:service"),
|
|
139
|
-
Queue: Symbol.for("stratal:queue:manager"),
|
|
140
|
-
ConsumerRegistry: Symbol.for("stratal:consumer:registry"),
|
|
141
|
-
Cron: Symbol.for("stratal:cron:manager"),
|
|
142
|
-
EventRegistry: Symbol.for("stratal:event:registry"),
|
|
143
|
-
Quarry: Symbol.for("stratal:quarry"),
|
|
144
|
-
/**
|
|
145
|
-
* AuthContext: Use for services that need user authentication (userId).
|
|
146
|
-
*/
|
|
147
|
-
AuthContext: Symbol.for("stratal:auth:context"),
|
|
148
|
-
DurableObjectState: Symbol.for("stratal:durable:object:state"),
|
|
149
|
-
DurableObjectId: Symbol.for("stratal:durable:object:id")
|
|
150
|
-
};
|
|
151
|
-
//#endregion
|
|
152
|
-
//#region src/logger/logger.tokens.ts
|
|
153
|
-
/**
|
|
154
|
-
* Dependency Injection Tokens for Logger Module
|
|
155
|
-
*
|
|
156
|
-
* Symbol-based tokens ensure type-safe dependency injection
|
|
157
|
-
* and prevent naming collisions.
|
|
158
|
-
*/
|
|
159
|
-
const LOGGER_TOKENS = {
|
|
160
|
-
/**
|
|
161
|
-
* Main logger service facade
|
|
162
|
-
*/
|
|
163
|
-
LoggerService: Symbol.for("stratal:logger:service"),
|
|
164
|
-
/**
|
|
165
|
-
* Log formatter (JSON or Pretty)
|
|
166
|
-
*/
|
|
167
|
-
Formatter: Symbol.for("stratal:logger:formatter"),
|
|
168
|
-
/**
|
|
169
|
-
* Array of active transports
|
|
170
|
-
*/
|
|
171
|
-
Transports: Symbol.for("stratal:logger:transports"),
|
|
172
|
-
/**
|
|
173
|
-
* Individual transport tokens (for factory registration)
|
|
174
|
-
*/
|
|
175
|
-
ConsoleTransport: Symbol.for("stratal:logger:console:transport"),
|
|
176
|
-
/**
|
|
177
|
-
* Configured log level for filtering
|
|
178
|
-
*/
|
|
179
|
-
LogLevelOptions: Symbol.for("stratal:logger:log:level:options")
|
|
180
|
-
};
|
|
181
|
-
//#endregion
|
|
182
|
-
//#region src/logger/contracts/log-level.ts
|
|
183
|
-
/**
|
|
184
|
-
* Log severity levels
|
|
185
|
-
* Ordered from least to most severe
|
|
186
|
-
*/
|
|
187
|
-
let LogLevel = /* @__PURE__ */ function(LogLevel) {
|
|
188
|
-
LogLevel["DEBUG"] = "debug";
|
|
189
|
-
LogLevel["INFO"] = "info";
|
|
190
|
-
LogLevel["WARN"] = "warn";
|
|
191
|
-
LogLevel["ERROR"] = "error";
|
|
192
|
-
return LogLevel;
|
|
193
|
-
}({});
|
|
194
|
-
/**
|
|
195
|
-
* Map log levels to numeric priorities (for filtering)
|
|
196
|
-
* Higher numbers = more severe = higher priority
|
|
197
|
-
*/
|
|
198
|
-
const LOG_LEVEL_PRIORITY = {
|
|
199
|
-
["debug"]: 0,
|
|
200
|
-
["info"]: 1,
|
|
201
|
-
["warn"]: 2,
|
|
202
|
-
["error"]: 3
|
|
203
|
-
};
|
|
204
|
-
//#endregion
|
|
205
|
-
//#region \0@oxc-project+runtime@0.127.0/helpers/decorateMetadata.js
|
|
206
|
-
function __decorateMetadata(k, v) {
|
|
207
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
208
|
-
}
|
|
209
|
-
//#endregion
|
|
210
|
-
//#region \0@oxc-project+runtime@0.127.0/helpers/decorateParam.js
|
|
211
|
-
function __decorateParam(paramIndex, decorator) {
|
|
212
|
-
return function(target, key) {
|
|
213
|
-
decorator(target, key, paramIndex);
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
//#endregion
|
|
217
|
-
//#region \0@oxc-project+runtime@0.127.0/helpers/decorate.js
|
|
218
|
-
function __decorate(decorators, target, key, desc) {
|
|
219
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
220
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
221
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
222
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
223
|
-
}
|
|
224
|
-
//#endregion
|
|
225
|
-
//#region src/logger/services/logger.service.ts
|
|
226
|
-
var _ref, _ref2;
|
|
227
|
-
let LoggerService = class LoggerService {
|
|
228
|
-
constructor(logLevel, executionContext, formatter, transports) {
|
|
229
|
-
this.logLevel = logLevel;
|
|
230
|
-
this.executionContext = executionContext;
|
|
231
|
-
this.formatter = formatter;
|
|
232
|
-
this.transports = transports;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Log debug message (development only)
|
|
236
|
-
*/
|
|
237
|
-
debug(message, context) {
|
|
238
|
-
this.log("debug", message, context);
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Log info message
|
|
242
|
-
*/
|
|
243
|
-
info(message, context) {
|
|
244
|
-
this.log("info", message, context);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Log warning message
|
|
248
|
-
*/
|
|
249
|
-
warn(message, context) {
|
|
250
|
-
this.log("warn", message, context);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Log error message
|
|
254
|
-
* Accepts Error object or custom context
|
|
255
|
-
*/
|
|
256
|
-
error(message, contextOrError) {
|
|
257
|
-
let context;
|
|
258
|
-
let error;
|
|
259
|
-
if (contextOrError instanceof Error) error = contextOrError;
|
|
260
|
-
else context = contextOrError;
|
|
261
|
-
this.log("error", message, context, error);
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Core logging implementation
|
|
265
|
-
* Enriches context, formats message, dispatches to transports
|
|
266
|
-
* Uses ctx.waitUntil() for async non-blocking processing
|
|
267
|
-
*/
|
|
268
|
-
log(level, message, userContext, error) {
|
|
269
|
-
if (LOG_LEVEL_PRIORITY[level] < LOG_LEVEL_PRIORITY[this.logLevel]) return;
|
|
270
|
-
const entry = {
|
|
271
|
-
level,
|
|
272
|
-
message,
|
|
273
|
-
context: this.enrichContext(userContext ?? {}),
|
|
274
|
-
error: error ? this.serializeError(error) : void 0
|
|
275
|
-
};
|
|
276
|
-
const formatted = this.formatter.format(entry);
|
|
277
|
-
const writePromises = this.transports.map((transport) => transport.write(entry, formatted).catch((err) => {
|
|
278
|
-
console.error(`Transport ${transport.name} failed:`, err);
|
|
279
|
-
}));
|
|
280
|
-
const allWrites = Promise.all(writePromises);
|
|
281
|
-
try {
|
|
282
|
-
this.executionContext.waitUntil(allWrites);
|
|
283
|
-
} catch (error) {
|
|
284
|
-
if (!(error instanceof Error) || !error.message.includes("global scope")) throw error;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Enrich log context with request info and timestamp
|
|
289
|
-
* Context enrichment can be extended by application modules
|
|
290
|
-
*/
|
|
291
|
-
enrichContext(userContext) {
|
|
292
|
-
return {
|
|
293
|
-
...userContext,
|
|
294
|
-
timestamp: Date.now()
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Serialize Error object for transport
|
|
299
|
-
*/
|
|
300
|
-
serializeError(error) {
|
|
301
|
-
return {
|
|
302
|
-
message: error.message,
|
|
303
|
-
stack: error.stack,
|
|
304
|
-
name: error.name
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
};
|
|
308
|
-
LoggerService = __decorate([
|
|
309
|
-
Transient(),
|
|
310
|
-
__decorateParam(0, inject(LOGGER_TOKENS.LogLevelOptions)),
|
|
311
|
-
__decorateParam(1, inject(DI_TOKENS.ExecutionContext)),
|
|
312
|
-
__decorateParam(2, inject(LOGGER_TOKENS.Formatter)),
|
|
313
|
-
__decorateParam(3, inject(LOGGER_TOKENS.Transports)),
|
|
314
|
-
__decorateMetadata("design:paramtypes", [
|
|
315
|
-
typeof (_ref = typeof LogLevel !== "undefined" && LogLevel) === "function" ? _ref : Object,
|
|
316
|
-
typeof (_ref2 = typeof globalThis !== "undefined" && globalThis.ExecutionContext) === "function" ? _ref2 : Object,
|
|
317
|
-
Object,
|
|
318
|
-
Array
|
|
319
|
-
])
|
|
320
|
-
], LoggerService);
|
|
321
|
-
//#endregion
|
|
322
|
-
//#region src/logger/formatters/json-formatter.ts
|
|
323
|
-
/**
|
|
324
|
-
* JSON Formatter
|
|
325
|
-
*
|
|
326
|
-
* Produces structured JSON logs for production environments.
|
|
327
|
-
* Optimized for log aggregation systems (Cloudflare Analytics, Datadog, etc.)
|
|
328
|
-
*
|
|
329
|
-
* Output format:
|
|
330
|
-
* {
|
|
331
|
-
* "level": "info",
|
|
332
|
-
* "message": "User logged in",
|
|
333
|
-
* "timestamp": 1234567890,
|
|
334
|
-
* "userId": "user_456",
|
|
335
|
-
* "error": { "message": "...", "stack": "..." }
|
|
336
|
-
* }
|
|
337
|
-
*/
|
|
338
|
-
var JsonFormatter = class {
|
|
339
|
-
format(entry) {
|
|
340
|
-
const output = {
|
|
341
|
-
level: entry.level,
|
|
342
|
-
message: entry.message,
|
|
343
|
-
...entry.context,
|
|
344
|
-
...entry.error && { error: entry.error }
|
|
345
|
-
};
|
|
346
|
-
return JSON.stringify(output);
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
//#endregion
|
|
350
|
-
//#region src/logger/formatters/pretty-formatter.ts
|
|
351
|
-
/**
|
|
352
|
-
* Pretty Formatter
|
|
353
|
-
*
|
|
354
|
-
* Human-readable colored output for development environments.
|
|
355
|
-
* Uses ANSI color codes for terminal output.
|
|
356
|
-
*
|
|
357
|
-
* Output format:
|
|
358
|
-
* [2024-01-15 10:30:45] INFO: User logged in
|
|
359
|
-
* userId: user_456
|
|
360
|
-
*/
|
|
361
|
-
var PrettyFormatter = class {
|
|
362
|
-
colors = {
|
|
363
|
-
["debug"]: "\x1B[36m",
|
|
364
|
-
["info"]: "\x1B[32m",
|
|
365
|
-
["warn"]: "\x1B[33m",
|
|
366
|
-
["error"]: "\x1B[31m"
|
|
367
|
-
};
|
|
368
|
-
reset = "\x1B[0m";
|
|
369
|
-
format(entry) {
|
|
370
|
-
let output = `${this.colors[entry.level]}[${new Date(entry.context.timestamp).toISOString()}] ${entry.level.toUpperCase().padEnd(5)}${this.reset}: ${entry.message}`;
|
|
371
|
-
const { timestamp: _, ...contextWithoutTimestamp } = entry.context;
|
|
372
|
-
const contextEntries = Object.entries(contextWithoutTimestamp);
|
|
373
|
-
if (contextEntries.length > 0) {
|
|
374
|
-
output += "\n";
|
|
375
|
-
contextEntries.forEach(([key, value]) => {
|
|
376
|
-
output += ` ${key}: ${JSON.stringify(value)}\n`;
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
if (entry.error?.stack) output += `\n${entry.error.stack}\n`;
|
|
380
|
-
return output.trimEnd();
|
|
381
|
-
}
|
|
382
|
-
};
|
|
383
|
-
//#endregion
|
|
384
|
-
//#region src/logger/transports/base-transport.ts
|
|
385
|
-
/**
|
|
386
|
-
* Base Transport
|
|
387
|
-
*
|
|
388
|
-
* Abstract base class providing shared transport logic.
|
|
389
|
-
* Reduces code duplication across transport implementations.
|
|
390
|
-
*/
|
|
391
|
-
var BaseTransport = class {
|
|
392
|
-
/**
|
|
393
|
-
* Handle transport errors gracefully
|
|
394
|
-
* Logs to console.error as fallback to prevent log loss
|
|
395
|
-
*
|
|
396
|
-
* @param error - Error that occurred during write
|
|
397
|
-
* @param entry - Log entry that failed
|
|
398
|
-
*/
|
|
399
|
-
handleError(error, entry) {
|
|
400
|
-
console.error(`[${this.name}] Failed to write log:`, {
|
|
401
|
-
error: error instanceof Error ? error.message : String(error),
|
|
402
|
-
logMessage: entry.message,
|
|
403
|
-
level: entry.level
|
|
404
|
-
});
|
|
405
|
-
}
|
|
406
|
-
};
|
|
407
|
-
//#endregion
|
|
408
|
-
//#region src/logger/transports/console-transport.ts
|
|
409
|
-
let ConsoleTransport = class ConsoleTransport extends BaseTransport {
|
|
410
|
-
name = "console";
|
|
411
|
-
write(entry, formatted) {
|
|
412
|
-
try {
|
|
413
|
-
this.getConsoleMethod(entry.level)(formatted);
|
|
414
|
-
} catch (error) {
|
|
415
|
-
this.handleError(error, entry);
|
|
416
|
-
}
|
|
417
|
-
return Promise.resolve();
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Map log level to console method
|
|
421
|
-
*/
|
|
422
|
-
getConsoleMethod(level) {
|
|
423
|
-
switch (level) {
|
|
424
|
-
case "debug": return console.debug;
|
|
425
|
-
case "info": return console.info;
|
|
426
|
-
case "warn": return console.warn;
|
|
427
|
-
case "error": return console.error;
|
|
428
|
-
default: return console.log;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
};
|
|
432
|
-
ConsoleTransport = __decorate([Transient(LOGGER_TOKENS.ConsoleTransport)], ConsoleTransport);
|
|
433
|
-
//#endregion
|
|
434
|
-
export { __decorate as a, LOG_LEVEL_PRIORITY as c, CONTAINER_TOKEN as d, DI_TOKENS as f, getMethodInjections as g, InjectParam as h, LoggerService as i, LogLevel as l, INJECT_PARAM_METADATA_KEY as m, PrettyFormatter as n, __decorateParam as o, Transient as p, JsonFormatter as r, __decorateMetadata as s, ConsoleTransport as t, LOGGER_TOKENS as u };
|
|
435
|
-
|
|
436
|
-
//# sourceMappingURL=logger-V6Ms3QnQ.mjs.map
|