@nx-ddd/logging 19.24.1

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.
@@ -0,0 +1,147 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Provider } from '@angular/core';
3
+
4
+ /**
5
+ * LoggingService interfaces
6
+ *
7
+ * Provides structured logging with different log levels and file output
8
+ */
9
+ declare enum LogLevel {
10
+ DEBUG = 0,
11
+ INFO = 1,
12
+ WARN = 2,
13
+ ERROR = 3,
14
+ FATAL = 4
15
+ }
16
+ interface LogContext {
17
+ component?: string;
18
+ sessionId?: string;
19
+ clientId?: string;
20
+ [key: string]: any;
21
+ }
22
+ interface ILoggingService {
23
+ /**
24
+ * Log debug message (for development/troubleshooting)
25
+ */
26
+ debug(message: string, context?: LogContext): void;
27
+ /**
28
+ * Log informational message
29
+ */
30
+ info(message: string, context?: LogContext): void;
31
+ /**
32
+ * Log warning message
33
+ */
34
+ warn(message: string, context?: LogContext): void;
35
+ /**
36
+ * Log error message
37
+ */
38
+ error(message: string, error?: Error, context?: LogContext): void;
39
+ /**
40
+ * Log fatal error message (application cannot continue)
41
+ */
42
+ fatal(message: string, error?: Error, context?: LogContext): void;
43
+ /**
44
+ * Set log level filter
45
+ */
46
+ setLogLevel(level: LogLevel): void;
47
+ /**
48
+ * Set component name for this logger
49
+ */
50
+ setComponent(component: string): void;
51
+ /**
52
+ * Close logger and flush buffers
53
+ */
54
+ close(): void;
55
+ }
56
+
57
+ /**
58
+ * Base Logger class for multi-provider logging system
59
+ */
60
+
61
+ declare const LOGGER: InjectionToken<BaseLogger>;
62
+ declare abstract class BaseLogger {
63
+ /**
64
+ * Main log method that all loggers must implement
65
+ */
66
+ abstract log(level: LogLevel, message: string, context?: LogContext, error?: Error): void;
67
+ /**
68
+ * Close logger and flush buffers
69
+ */
70
+ abstract close(): void;
71
+ debug(message: string, context?: LogContext): void;
72
+ info(message: string, context?: LogContext): void;
73
+ warn(message: string, context?: LogContext): void;
74
+ error(message: string, error?: Error, context?: LogContext): void;
75
+ fatal(message: string, error?: Error, context?: LogContext): void;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseLogger, never>;
77
+ static ɵprov: i0.ɵɵInjectableDeclaration<BaseLogger>;
78
+ }
79
+ declare function provideLogger(useFactory: () => BaseLogger): Provider;
80
+
81
+ /**
82
+ * LogFilter - Simple function-based log filtering
83
+ */
84
+
85
+ /**
86
+ * Log filter function type
87
+ * @param level - The log level
88
+ * @param context - Optional log context (component name, etc.)
89
+ * @returns true if the log should be output, false to suppress
90
+ */
91
+ type LogFilterFn = (level: LogLevel, context?: LogContext) => boolean;
92
+ declare const LOG_FILTER: InjectionToken<LogFilterFn>;
93
+
94
+ /**
95
+ * Provider functions for log filtering
96
+ */
97
+
98
+ /**
99
+ * Provide a log filter function
100
+ *
101
+ * @example
102
+ * // Filter by log level
103
+ * provideLogFilter((level) => level >= LogLevel.WARN)
104
+ *
105
+ * @example
106
+ * // Filter by component
107
+ * provideLogFilter((level, context) => context?.component?.startsWith('My'))
108
+ *
109
+ * @example
110
+ * // Allow all logs
111
+ * provideLogFilter(() => true)
112
+ */
113
+ declare function provideLogFilter(filter: LogFilterFn): Provider;
114
+ /**
115
+ * Configuration for log filtering
116
+ */
117
+ interface LogFilterConfig {
118
+ minLevel?: LogLevel;
119
+ componentPattern?: string;
120
+ }
121
+ /**
122
+ * Provide a log filter with explicit configuration
123
+ * @param config - Filter configuration (minLevel defaults to WARN)
124
+ */
125
+ declare function provideLogFilterWithConfig(config?: LogFilterConfig): Provider;
126
+ /**
127
+ * @deprecated Use provideLogFilterWithConfig() instead.
128
+ * This function directly accesses process.env which violates the rule
129
+ * that packages should not access environment variables directly.
130
+ *
131
+ * Migration example:
132
+ * ```typescript
133
+ * // Before (in packages)
134
+ * provideLogFilterFromEnv()
135
+ *
136
+ * // After (in application layer)
137
+ * provideLogFilterWithConfig({
138
+ * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,
139
+ * componentPattern: process.env['LOG_COMPONENTS']
140
+ * })
141
+ * ```
142
+ */
143
+ declare function provideLogFilterFromEnv(): Provider;
144
+
145
+ export { BaseLogger, LOGGER, LOG_FILTER, LogLevel, provideLogFilter, provideLogFilterFromEnv, provideLogFilterWithConfig, provideLogger };
146
+ export type { ILoggingService, LogContext, LogFilterConfig, LogFilterFn };
147
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/logging/src/lib/base/interfaces.ts","../../../../../packages/@nx-ddd/logging/src/lib/base/base.logger.ts","../../../../../packages/@nx-ddd/logging/src/lib/base/log-filter.ts","../../../../../packages/@nx-ddd/logging/src/lib/base/providers.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;;AAAA;;;;AAIG;AAEH;AACE;AACA;AACA;AACA;AACA;AACD;;;;;AAMC;AACD;;AAGC;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;;AAEJ;;AC7DD;;AAEG;;AAKH;AAEA;AAEE;;AAEG;;AAQH;;AAEG;;;;;AAgBH;AAIA;;;AAGD;AAED;;AChDA;;AAEG;;AAKH;;;;;AAKG;AACG;AAEN;;ACfA;;AAEG;;AAMH;;;;;;;;;;;;;;AAcG;AACH;AAIA;;AAEG;;;;AAIF;AAED;;;AAGG;AACH;AAaA;;;;;;;;;;;;;;;;AAgBG;AACH;;;"}
@@ -0,0 +1,26 @@
1
+ import { Provider } from '@angular/core';
2
+ import { LogLevel, BaseLogger, LogContext } from '@nx-ddd/logging/base';
3
+
4
+ /**
5
+ * ConsoleLogger implementation for multi-provider logging
6
+ */
7
+
8
+ interface ConsoleLoggerOptions {
9
+ minLevel?: LogLevel;
10
+ componentFilter?: string;
11
+ }
12
+ declare class ConsoleLogger extends BaseLogger {
13
+ private readonly minLevel;
14
+ constructor(options?: ConsoleLoggerOptions);
15
+ log(level: LogLevel, message: string, context?: LogContext, error?: Error): void;
16
+ close(): void;
17
+ }
18
+ /**
19
+ * Provide ConsoleLogger with optional configuration
20
+ * @param options - Logger options (minLevel defaults to WARN if not specified)
21
+ */
22
+ declare function provideConsoleLogger(options?: ConsoleLoggerOptions): Provider;
23
+
24
+ export { ConsoleLogger, provideConsoleLogger };
25
+ export type { ConsoleLoggerOptions };
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/logging/src/lib/console/console.logger.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;AAEG;;;;;AAQF;AAED;AACE;;AAOA;AASA;AAGD;AAED;;;AAGG;AACH;;;"}
@@ -0,0 +1,122 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injectable } from '@angular/core';
3
+
4
+ /**
5
+ * LoggingService interfaces
6
+ *
7
+ * Provides structured logging with different log levels and file output
8
+ */
9
+ var LogLevel;
10
+ (function (LogLevel) {
11
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
12
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
13
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
14
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
15
+ LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
16
+ })(LogLevel || (LogLevel = {}));
17
+
18
+ /**
19
+ * Base Logger class for multi-provider logging system
20
+ */
21
+ const LOGGER = new InjectionToken('Logger');
22
+ class BaseLogger {
23
+ // Convenience methods
24
+ debug(message, context) {
25
+ this.log(LogLevel.DEBUG, message, context);
26
+ }
27
+ info(message, context) {
28
+ this.log(LogLevel.INFO, message, context);
29
+ }
30
+ warn(message, context) {
31
+ this.log(LogLevel.WARN, message, context);
32
+ }
33
+ error(message, error, context) {
34
+ this.log(LogLevel.ERROR, message, context, error);
35
+ }
36
+ fatal(message, error, context) {
37
+ this.log(LogLevel.FATAL, message, context, error);
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger, decorators: [{
43
+ type: Injectable
44
+ }] });
45
+ function provideLogger(useFactory) {
46
+ return {
47
+ provide: LOGGER,
48
+ multi: true,
49
+ useFactory,
50
+ };
51
+ }
52
+
53
+ /**
54
+ * LogFilter - Simple function-based log filtering
55
+ */
56
+ const LOG_FILTER = new InjectionToken('LogFilter');
57
+
58
+ /**
59
+ * Provider functions for log filtering
60
+ */
61
+ /**
62
+ * Provide a log filter function
63
+ *
64
+ * @example
65
+ * // Filter by log level
66
+ * provideLogFilter((level) => level >= LogLevel.WARN)
67
+ *
68
+ * @example
69
+ * // Filter by component
70
+ * provideLogFilter((level, context) => context?.component?.startsWith('My'))
71
+ *
72
+ * @example
73
+ * // Allow all logs
74
+ * provideLogFilter(() => true)
75
+ */
76
+ function provideLogFilter(filter) {
77
+ return { provide: LOG_FILTER, useValue: filter };
78
+ }
79
+ /**
80
+ * Provide a log filter with explicit configuration
81
+ * @param config - Filter configuration (minLevel defaults to WARN)
82
+ */
83
+ function provideLogFilterWithConfig(config) {
84
+ const minLevel = config?.minLevel ?? LogLevel.WARN;
85
+ const componentRegex = config?.componentPattern ? new RegExp(config.componentPattern) : null;
86
+ return provideLogFilter((level, context) => {
87
+ if (level < minLevel)
88
+ return false;
89
+ if (componentRegex && context?.component && !componentRegex.test(context.component)) {
90
+ return false;
91
+ }
92
+ return true;
93
+ });
94
+ }
95
+ /**
96
+ * @deprecated Use provideLogFilterWithConfig() instead.
97
+ * This function directly accesses process.env which violates the rule
98
+ * that packages should not access environment variables directly.
99
+ *
100
+ * Migration example:
101
+ * ```typescript
102
+ * // Before (in packages)
103
+ * provideLogFilterFromEnv()
104
+ *
105
+ * // After (in application layer)
106
+ * provideLogFilterWithConfig({
107
+ * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,
108
+ * componentPattern: process.env['LOG_COMPONENTS']
109
+ * })
110
+ * ```
111
+ */
112
+ function provideLogFilterFromEnv() {
113
+ console.warn('[DEPRECATED] provideLogFilterFromEnv() is deprecated. Use provideLogFilterWithConfig() instead.');
114
+ return provideLogFilterWithConfig();
115
+ }
116
+
117
+ /**
118
+ * Generated bundle index. Do not edit.
119
+ */
120
+
121
+ export { BaseLogger, LOGGER, LOG_FILTER, LogLevel, provideLogFilter, provideLogFilterFromEnv, provideLogFilterWithConfig, provideLogger };
122
+ //# sourceMappingURL=nx-ddd-logging-base.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-ddd-logging-base.mjs","sources":["../tmp-esm2022/base/interfaces.js","../tmp-esm2022/base/base.logger.js","../tmp-esm2022/base/log-filter.js","../tmp-esm2022/base/providers.js","../tmp-esm2022/base/nx-ddd-logging-base.js"],"sourcesContent":["/**\n * LoggingService interfaces\n *\n * Provides structured logging with different log levels and file output\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n LogLevel[LogLevel[\"FATAL\"] = 4] = \"FATAL\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2Jhc2UvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQix5Q0FBUyxDQUFBO0lBQ1QsdUNBQVEsQ0FBQTtJQUNSLHVDQUFRLENBQUE7SUFDUix5Q0FBUyxDQUFBO0lBQ1QseUNBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxRQUFRLEtBQVIsUUFBUSxRQU1uQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTG9nZ2luZ1NlcnZpY2UgaW50ZXJmYWNlc1xuICpcbiAqIFByb3ZpZGVzIHN0cnVjdHVyZWQgbG9nZ2luZyB3aXRoIGRpZmZlcmVudCBsb2cgbGV2ZWxzIGFuZCBmaWxlIG91dHB1dFxuICovXG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgREVCVUcgPSAwLFxuICBJTkZPID0gMSxcbiAgV0FSTiA9IDIsXG4gIEVSUk9SID0gMyxcbiAgRkFUQUwgPSA0LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NvbnRleHQge1xuICBjb21wb25lbnQ/OiBzdHJpbmc7XG4gIHNlc3Npb25JZD86IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2luZ1NlcnZpY2Uge1xuICAvKipcbiAgICogTG9nIGRlYnVnIG1lc3NhZ2UgKGZvciBkZXZlbG9wbWVudC90cm91Ymxlc2hvb3RpbmcpXG4gICAqL1xuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIGluZm9ybWF0aW9uYWwgbWVzc2FnZVxuICAgKi9cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIHdhcm5pbmcgbWVzc2FnZVxuICAgKi9cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIGVycm9yIG1lc3NhZ2VcbiAgICovXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiBFcnJvciwgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBMb2cgZmF0YWwgZXJyb3IgbWVzc2FnZSAoYXBwbGljYXRpb24gY2Fubm90IGNvbnRpbnVlKVxuICAgKi9cbiAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IEVycm9yLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCBsb2cgbGV2ZWwgZmlsdGVyXG4gICAqL1xuICBzZXRMb2dMZXZlbChsZXZlbDogTG9nTGV2ZWwpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29tcG9uZW50IG5hbWUgZm9yIHRoaXMgbG9nZ2VyXG4gICAqL1xuICBzZXRDb21wb25lbnQoY29tcG9uZW50OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDbG9zZSBsb2dnZXIgYW5kIGZsdXNoIGJ1ZmZlcnNcbiAgICovXG4gIGNsb3NlKCk6IHZvaWQ7XG59XG4iXX0=","/**\n * Base Logger class for multi-provider logging system\n */\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { LogLevel } from './interfaces';\nimport * as i0 from \"@angular/core\";\nexport const LOGGER = new InjectionToken('Logger');\nexport class BaseLogger {\n // Convenience methods\n debug(message, context) {\n this.log(LogLevel.DEBUG, message, context);\n }\n info(message, context) {\n this.log(LogLevel.INFO, message, context);\n }\n warn(message, context) {\n this.log(LogLevel.WARN, message, context);\n }\n error(message, error, context) {\n this.log(LogLevel.ERROR, message, context, error);\n }\n fatal(message, error, context) {\n this.log(LogLevel.FATAL, message, context, error);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger, decorators: [{\n type: Injectable\n }] });\nexport function provideLogger(useFactory) {\n return {\n provide: LOGGER,\n multi: true,\n useFactory,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9iYXNlL2Jhc2UubG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLGNBQWMsQ0FBQzs7QUFFcEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFhLFFBQVEsQ0FBQyxDQUFDO0FBRy9ELE1BQU0sT0FBZ0IsVUFBVTtJQWdCOUIsc0JBQXNCO0lBQ3RCLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBb0I7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFvQjtRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLE9BQW9CO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLE9BQW9CO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO3VHQW5DbUIsVUFBVTsyR0FBVixVQUFVOzsyRkFBVixVQUFVO2tCQUQvQixVQUFVOztBQXVDWCxNQUFNLFVBQVUsYUFBYSxDQUFDLFVBQTRCO0lBQ3hELE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTTtRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIExvZ2dlciBjbGFzcyBmb3IgbXVsdGktcHJvdmlkZXIgbG9nZ2luZyBzeXN0ZW1cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0xldmVsLCBMb2dDb250ZXh0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IExPR0dFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCYXNlTG9nZ2VyPignTG9nZ2VyJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTG9nZ2VyIHtcbiAgLyoqXG4gICAqIE1haW4gbG9nIG1ldGhvZCB0aGF0IGFsbCBsb2dnZXJzIG11c3QgaW1wbGVtZW50XG4gICAqL1xuICBhYnN0cmFjdCBsb2coXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBjb250ZXh0PzogTG9nQ29udGV4dCxcbiAgICBlcnJvcj86IEVycm9yXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENsb3NlIGxvZ2dlciBhbmQgZmx1c2ggYnVmZmVyc1xuICAgKi9cbiAgYWJzdHJhY3QgY2xvc2UoKTogdm9pZDtcblxuICAvLyBDb252ZW5pZW5jZSBtZXRob2RzXG4gIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5ERUJVRywgbWVzc2FnZSwgY29udGV4dCk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5JTkZPLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLldBUk4sIG1lc3NhZ2UsIGNvbnRleHQpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IEVycm9yLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLkVSUk9SLCBtZXNzYWdlLCBjb250ZXh0LCBlcnJvcik7XG4gIH1cblxuICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogRXJyb3IsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuRkFUQUwsIG1lc3NhZ2UsIGNvbnRleHQsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUxvZ2dlcih1c2VGYWN0b3J5OiAoKSA9PiBCYXNlTG9nZ2VyKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IExPR0dFUixcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICB1c2VGYWN0b3J5LFxuICB9O1xufVxuIl19","/**\n * LogFilter - Simple function-based log filtering\n */\nimport { InjectionToken } from '@angular/core';\nexport const LOG_FILTER = new InjectionToken('LogFilter');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2Jhc2UvbG9nLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMb2dGaWx0ZXIgLSBTaW1wbGUgZnVuY3Rpb24tYmFzZWQgbG9nIGZpbHRlcmluZ1xuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dMZXZlbCwgTG9nQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogTG9nIGZpbHRlciBmdW5jdGlvbiB0eXBlXG4gKiBAcGFyYW0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIGxvZyBjb250ZXh0IChjb21wb25lbnQgbmFtZSwgZXRjLilcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGxvZyBzaG91bGQgYmUgb3V0cHV0LCBmYWxzZSB0byBzdXBwcmVzc1xuICovXG5leHBvcnQgdHlwZSBMb2dGaWx0ZXJGbiA9IChsZXZlbDogTG9nTGV2ZWwsIGNvbnRleHQ/OiBMb2dDb250ZXh0KSA9PiBib29sZWFuO1xuXG5leHBvcnQgY29uc3QgTE9HX0ZJTFRFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2dGaWx0ZXJGbj4oJ0xvZ0ZpbHRlcicpO1xuIl19","/**\n * Provider functions for log filtering\n */\nimport { LogLevel } from './interfaces';\nimport { LOG_FILTER } from './log-filter';\n/**\n * Provide a log filter function\n *\n * @example\n * // Filter by log level\n * provideLogFilter((level) => level >= LogLevel.WARN)\n *\n * @example\n * // Filter by component\n * provideLogFilter((level, context) => context?.component?.startsWith('My'))\n *\n * @example\n * // Allow all logs\n * provideLogFilter(() => true)\n */\nexport function provideLogFilter(filter) {\n return { provide: LOG_FILTER, useValue: filter };\n}\n/**\n * Provide a log filter with explicit configuration\n * @param config - Filter configuration (minLevel defaults to WARN)\n */\nexport function provideLogFilterWithConfig(config) {\n const minLevel = config?.minLevel ?? LogLevel.WARN;\n const componentRegex = config?.componentPattern ? new RegExp(config.componentPattern) : null;\n return provideLogFilter((level, context) => {\n if (level < minLevel)\n return false;\n if (componentRegex && context?.component && !componentRegex.test(context.component)) {\n return false;\n }\n return true;\n });\n}\n/**\n * @deprecated Use provideLogFilterWithConfig() instead.\n * This function directly accesses process.env which violates the rule\n * that packages should not access environment variables directly.\n *\n * Migration example:\n * ```typescript\n * // Before (in packages)\n * provideLogFilterFromEnv()\n *\n * // After (in application layer)\n * provideLogFilterWithConfig({\n * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,\n * componentPattern: process.env['LOG_COMPONENTS']\n * })\n * ```\n */\nexport function provideLogFilterFromEnv() {\n console.warn('[DEPRECATED] provideLogFilterFromEnv() is deprecated. Use provideLogFilterWithConfig() instead.');\n return provideLogFilterWithConfig();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9sb2dnaW5nL3NyYy9saWIvYmFzZS9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFHSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxjQUFjLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBbUI7SUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ25ELENBQUM7QUFVRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBd0I7SUFDakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ25ELE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUU3RixPQUFPLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pDLElBQUksS0FBSyxHQUFHLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlHQUFpRyxDQUFDLENBQUM7SUFDaEgsT0FBTywwQkFBMEIsRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVyIGZ1bmN0aW9ucyBmb3IgbG9nIGZpbHRlcmluZ1xuICovXG5cbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dMZXZlbCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0dfRklMVEVSLCBMb2dGaWx0ZXJGbiB9IGZyb20gJy4vbG9nLWZpbHRlcic7XG5cbi8qKlxuICogUHJvdmlkZSBhIGxvZyBmaWx0ZXIgZnVuY3Rpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRmlsdGVyIGJ5IGxvZyBsZXZlbFxuICogcHJvdmlkZUxvZ0ZpbHRlcigobGV2ZWwpID0+IGxldmVsID49IExvZ0xldmVsLldBUk4pXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZpbHRlciBieSBjb21wb25lbnRcbiAqIHByb3ZpZGVMb2dGaWx0ZXIoKGxldmVsLCBjb250ZXh0KSA9PiBjb250ZXh0Py5jb21wb25lbnQ/LnN0YXJ0c1dpdGgoJ015JykpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFsbG93IGFsbCBsb2dzXG4gKiBwcm92aWRlTG9nRmlsdGVyKCgpID0+IHRydWUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTG9nRmlsdGVyKGZpbHRlcjogTG9nRmlsdGVyRm4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IExPR19GSUxURVIsIHVzZVZhbHVlOiBmaWx0ZXIgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBsb2cgZmlsdGVyaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRmlsdGVyQ29uZmlnIHtcbiAgbWluTGV2ZWw/OiBMb2dMZXZlbDtcbiAgY29tcG9uZW50UGF0dGVybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlIGEgbG9nIGZpbHRlciB3aXRoIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBjb25maWcgLSBGaWx0ZXIgY29uZmlndXJhdGlvbiAobWluTGV2ZWwgZGVmYXVsdHMgdG8gV0FSTilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVMb2dGaWx0ZXJXaXRoQ29uZmlnKGNvbmZpZz86IExvZ0ZpbHRlckNvbmZpZyk6IFByb3ZpZGVyIHtcbiAgY29uc3QgbWluTGV2ZWwgPSBjb25maWc/Lm1pbkxldmVsID8/IExvZ0xldmVsLldBUk47XG4gIGNvbnN0IGNvbXBvbmVudFJlZ2V4ID0gY29uZmlnPy5jb21wb25lbnRQYXR0ZXJuID8gbmV3IFJlZ0V4cChjb25maWcuY29tcG9uZW50UGF0dGVybikgOiBudWxsO1xuXG4gIHJldHVybiBwcm92aWRlTG9nRmlsdGVyKChsZXZlbCwgY29udGV4dCkgPT4ge1xuICAgIGlmIChsZXZlbCA8IG1pbkxldmVsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbXBvbmVudFJlZ2V4ICYmIGNvbnRleHQ/LmNvbXBvbmVudCAmJiAhY29tcG9uZW50UmVnZXgudGVzdChjb250ZXh0LmNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpIGluc3RlYWQuXG4gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHByb2Nlc3MuZW52IHdoaWNoIHZpb2xhdGVzIHRoZSBydWxlXG4gKiB0aGF0IHBhY2thZ2VzIHNob3VsZCBub3QgYWNjZXNzIGVudmlyb25tZW50IHZhcmlhYmxlcyBkaXJlY3RseS5cbiAqXG4gKiBNaWdyYXRpb24gZXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEJlZm9yZSAoaW4gcGFja2FnZXMpXG4gKiBwcm92aWRlTG9nRmlsdGVyRnJvbUVudigpXG4gKlxuICogLy8gQWZ0ZXIgKGluIGFwcGxpY2F0aW9uIGxheWVyKVxuICogcHJvdmlkZUxvZ0ZpbHRlcldpdGhDb25maWcoe1xuICogICBtaW5MZXZlbDogcHJvY2Vzcy5lbnZbJ0xPR19MRVZFTCddID8gTG9nTGV2ZWxbcHJvY2Vzcy5lbnZbJ0xPR19MRVZFTCddLnRvVXBwZXJDYXNlKCldIDogdW5kZWZpbmVkLFxuICogICBjb21wb25lbnRQYXR0ZXJuOiBwcm9jZXNzLmVudlsnTE9HX0NPTVBPTkVOVFMnXVxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUxvZ0ZpbHRlckZyb21FbnYoKTogUHJvdmlkZXIge1xuICBjb25zb2xlLndhcm4oJ1tERVBSRUNBVEVEXSBwcm92aWRlTG9nRmlsdGVyRnJvbUVudigpIGlzIGRlcHJlY2F0ZWQuIFVzZSBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpIGluc3RlYWQuJyk7XG4gIHJldHVybiBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWxvZ2dpbmctYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2Jhc2UvbngtZGRkLWxvZ2dpbmctYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACU,IAAC;AACX,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AAC7C,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;;ACZ/B;AACA;AACA;AAIY,MAAC,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ;AAC1C,MAAM,UAAU,CAAC;AACxB;AACA,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAClD,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AACjD,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AACjD,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AACzD,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AACzD,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACrK,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACxH;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,aAAa,CAAC,UAAU,EAAE;AAC1C,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,UAAU;AAClB,KAAK;AACL;;ACpCA;AACA;AACA;AAEY,MAAC,UAAU,GAAG,IAAI,cAAc,CAAC,WAAW;;ACJxD;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACpD;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,MAAM,EAAE;AACnD,IAAI,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI;AACtD,IAAI,MAAM,cAAc,GAAG,MAAM,EAAE,gBAAgB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI;AAChG,IAAI,OAAO,gBAAgB,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK;AAChD,QAAQ,IAAI,KAAK,GAAG,QAAQ;AAC5B,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7F,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,GAAG;AAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,iGAAiG,CAAC;AACnH,IAAI,OAAO,0BAA0B,EAAE;AACvC;;AC3DA;AACA;AACA;;;;"}
@@ -0,0 +1,44 @@
1
+ import { BaseLogger, LogLevel, LOGGER } from '@nx-ddd/logging/base';
2
+
3
+ /**
4
+ * ConsoleLogger implementation for multi-provider logging
5
+ */
6
+ class ConsoleLogger extends BaseLogger {
7
+ minLevel;
8
+ constructor(options) {
9
+ super();
10
+ this.minLevel = options?.minLevel ?? LogLevel.WARN;
11
+ }
12
+ log(level, message, context, error) {
13
+ // Filter by log level - only output logs at or above minLevel
14
+ if (level < this.minLevel)
15
+ return;
16
+ const args = [`[${LogLevel[level]}] ${message}`];
17
+ if (context != null)
18
+ args.push(context);
19
+ if (error != null)
20
+ args.push(error);
21
+ console.log(...args);
22
+ }
23
+ close() {
24
+ // Nothing to close for console
25
+ }
26
+ }
27
+ /**
28
+ * Provide ConsoleLogger with optional configuration
29
+ * @param options - Logger options (minLevel defaults to WARN if not specified)
30
+ */
31
+ function provideConsoleLogger(options) {
32
+ return {
33
+ provide: LOGGER,
34
+ multi: true,
35
+ useFactory: () => new ConsoleLogger(options)
36
+ };
37
+ }
38
+
39
+ /**
40
+ * Generated bundle index. Do not edit.
41
+ */
42
+
43
+ export { ConsoleLogger, provideConsoleLogger };
44
+ //# sourceMappingURL=nx-ddd-logging-console.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-ddd-logging-console.mjs","sources":["../tmp-esm2022/console/console.logger.js","../tmp-esm2022/console/nx-ddd-logging-console.js"],"sourcesContent":["/**\n * ConsoleLogger implementation for multi-provider logging\n */\nimport { BaseLogger, LogLevel, LOGGER } from '@nx-ddd/logging/base';\nexport class ConsoleLogger extends BaseLogger {\n minLevel;\n constructor(options) {\n super();\n this.minLevel = options?.minLevel ?? LogLevel.WARN;\n }\n log(level, message, context, error) {\n // Filter by log level - only output logs at or above minLevel\n if (level < this.minLevel)\n return;\n const args = [`[${LogLevel[level]}] ${message}`];\n if (context != null)\n args.push(context);\n if (error != null)\n args.push(error);\n console.log(...args);\n }\n close() {\n // Nothing to close for console\n }\n}\n/**\n * Provide ConsoleLogger with optional configuration\n * @param options - Logger options (minLevel defaults to WARN if not specified)\n */\nexport function provideConsoleLogger(options) {\n return {\n provide: LOGGER,\n multi: true,\n useFactory: () => new ConsoleLogger(options)\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9jb25zb2xlL2NvbnNvbGUubG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWMsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPaEYsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUFVO0lBQzFCLFFBQVEsQ0FBVztJQUVwQyxZQUFZLE9BQThCO1FBQ3hDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFlLEVBQUUsT0FBZSxFQUFFLE9BQW9CLEVBQUUsS0FBYTtRQUN2RSw4REFBOEQ7UUFDOUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ2xDLE1BQU0sSUFBSSxHQUFVLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLE9BQU8sSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDSCwrQkFBK0I7SUFDakMsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQThCO0lBQ2pFLE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTTtRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQztLQUM3QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uc29sZUxvZ2dlciBpbXBsZW1lbnRhdGlvbiBmb3IgbXVsdGktcHJvdmlkZXIgbG9nZ2luZ1xuICovXG5cbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlTG9nZ2VyLCBMb2dMZXZlbCwgTG9nQ29udGV4dCwgTE9HR0VSIH0gZnJvbSAnQG54LWRkZC9sb2dnaW5nL2Jhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGVMb2dnZXJPcHRpb25zIHtcbiAgbWluTGV2ZWw/OiBMb2dMZXZlbDtcbiAgY29tcG9uZW50RmlsdGVyPzogc3RyaW5nOyAgLy8gUmVnZXggcGF0dGVyblxufVxuXG5leHBvcnQgY2xhc3MgQ29uc29sZUxvZ2dlciBleHRlbmRzIEJhc2VMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IG1pbkxldmVsOiBMb2dMZXZlbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ29uc29sZUxvZ2dlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWluTGV2ZWwgPSBvcHRpb25zPy5taW5MZXZlbCA/PyBMb2dMZXZlbC5XQVJOO1xuICB9XG5cbiAgbG9nKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjb250ZXh0PzogTG9nQ29udGV4dCwgZXJyb3I/OiBFcnJvcik6IHZvaWQge1xuICAgIC8vIEZpbHRlciBieSBsb2cgbGV2ZWwgLSBvbmx5IG91dHB1dCBsb2dzIGF0IG9yIGFib3ZlIG1pbkxldmVsXG4gICAgaWYgKGxldmVsIDwgdGhpcy5taW5MZXZlbCkgcmV0dXJuO1xuICAgIGNvbnN0IGFyZ3M6IGFueVtdID0gW2BbJHtMb2dMZXZlbFtsZXZlbF19XSAke21lc3NhZ2V9YF07XG4gICAgaWYgKGNvbnRleHQgIT0gbnVsbCkgYXJncy5wdXNoKGNvbnRleHQpO1xuICAgIGlmIChlcnJvciAhPSBudWxsKSBhcmdzLnB1c2goZXJyb3IpO1xuICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgLy8gTm90aGluZyB0byBjbG9zZSBmb3IgY29uc29sZVxuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZSBDb25zb2xlTG9nZ2VyIHdpdGggb3B0aW9uYWwgY29uZmlndXJhdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBMb2dnZXIgb3B0aW9ucyAobWluTGV2ZWwgZGVmYXVsdHMgdG8gV0FSTiBpZiBub3Qgc3BlY2lmaWVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbnNvbGVMb2dnZXIob3B0aW9ucz86IENvbnNvbGVMb2dnZXJPcHRpb25zKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IExPR0dFUixcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICB1c2VGYWN0b3J5OiAoKSA9PiBuZXcgQ29uc29sZUxvZ2dlcihvcHRpb25zKVxuICB9O1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWxvZ2dpbmctY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2NvbnNvbGUvbngtZGRkLWxvZ2dpbmctY29uc29sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;AAAA;AACA;AACA;AAEO,MAAM,aAAa,SAAS,UAAU,CAAC;AAC9C,IAAI,QAAQ;AACZ,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI;AAC1D,IAAI;AACJ,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACxC;AACA,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;AACjC,YAAY;AACZ,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,OAAO,IAAI,IAAI;AAC3B,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAQ,IAAI,KAAK,IAAI,IAAI;AACzB,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC5B,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE;AAC9C,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,UAAU,EAAE,MAAM,IAAI,aAAa,CAAC,OAAO;AACnD,KAAK;AACL;;ACnCA;AACA;AACA;;;;"}
@@ -0,0 +1,106 @@
1
+ import * as fs from 'fs';
2
+ import * as os from 'os';
3
+ import { join } from 'path';
4
+ import { BaseLogger, LogLevel, LOGGER } from '@nx-ddd/logging/base';
5
+
6
+ /**
7
+ * FileLogger implementation for multi-provider logging
8
+ */
9
+ class FileLogger extends BaseLogger {
10
+ writeStream = null;
11
+ minLevel;
12
+ componentFilter;
13
+ startTime;
14
+ constructor(options) {
15
+ super();
16
+ this.minLevel = options?.minLevel ?? LogLevel.DEBUG; // Default: 全レベル記録
17
+ this.componentFilter = options?.componentFilter
18
+ ? new RegExp(options.componentFilter)
19
+ : undefined;
20
+ this.startTime = Date.now();
21
+ // Determine log file path
22
+ const logDir = options?.logDir || join(os.homedir(), '.machina', 'logs');
23
+ const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
24
+ const component = options?.component || 'app';
25
+ const logFile = options?.filePath || join(logDir, `${component}-${date}.log`);
26
+ // Create log directory
27
+ try {
28
+ const dir = options?.filePath ? join(logFile, '..') : logDir;
29
+ fs.mkdirSync(dir, { recursive: true });
30
+ }
31
+ catch (error) {
32
+ console.error(`[FileLogger] Failed to create log directory: ${error}`);
33
+ }
34
+ // Open log file
35
+ try {
36
+ this.writeStream = fs.createWriteStream(logFile, { flags: 'a' });
37
+ }
38
+ catch (error) {
39
+ console.error(`[FileLogger] Failed to open log file: ${error}`);
40
+ }
41
+ }
42
+ log(level, message, context, error) {
43
+ // Level filtering
44
+ if (level < this.minLevel)
45
+ return;
46
+ // Component filtering
47
+ if (this.componentFilter && context?.component) {
48
+ if (!this.componentFilter.test(context.component))
49
+ return;
50
+ }
51
+ if (!this.writeStream)
52
+ return;
53
+ // Format log message
54
+ const timestamp = new Date().toISOString();
55
+ const elapsed = ((Date.now() - this.startTime) / 1000).toFixed(2);
56
+ const levelStr = LogLevel[level];
57
+ const component = context?.component || 'unknown';
58
+ const contextStr = context ? JSON.stringify(context) : '';
59
+ const errorStr = error ? `\n Error: ${error.message}\n Stack: ${error.stack}` : '';
60
+ const logMessage = `[${timestamp}] [+${elapsed}s] [${levelStr}] [${component}] ${message}${contextStr ? ' ' + contextStr : ''}${errorStr}\n`;
61
+ // Write to file
62
+ this.writeStream.write(logMessage);
63
+ }
64
+ close() {
65
+ if (this.writeStream) {
66
+ this.writeStream.end();
67
+ this.writeStream = null;
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Provide FileLogger with optional configuration
73
+ * @param options - Logger options (minLevel defaults to DEBUG if not specified)
74
+ */
75
+ function provideFileLogger(options) {
76
+ return {
77
+ provide: LOGGER,
78
+ multi: true,
79
+ useFactory: () => {
80
+ const minLevel = options?.minLevel ?? LogLevel.DEBUG;
81
+ // Determine file path
82
+ let filePath;
83
+ if (options?.filePath) {
84
+ filePath = options.filePath;
85
+ }
86
+ else {
87
+ const logDir = options?.logDir || join(os.homedir(), '.machina', 'logs');
88
+ const date = new Date().toISOString().split('T')[0];
89
+ const component = options?.component || 'app';
90
+ filePath = join(logDir, `${component}-${date}.log`);
91
+ }
92
+ return new FileLogger({
93
+ filePath,
94
+ minLevel,
95
+ componentFilter: options?.componentFilter
96
+ });
97
+ }
98
+ };
99
+ }
100
+
101
+ /**
102
+ * Generated bundle index. Do not edit.
103
+ */
104
+
105
+ export { FileLogger, provideFileLogger };
106
+ //# sourceMappingURL=nx-ddd-logging-file.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-ddd-logging-file.mjs","sources":["../tmp-esm2022/file/file-logger.js","../tmp-esm2022/file/nx-ddd-logging-file.js"],"sourcesContent":["/**\n * FileLogger implementation for multi-provider logging\n */\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport { join } from 'path';\nimport { BaseLogger, LOGGER, LogLevel } from '@nx-ddd/logging/base';\nexport class FileLogger extends BaseLogger {\n writeStream = null;\n minLevel;\n componentFilter;\n startTime;\n constructor(options) {\n super();\n this.minLevel = options?.minLevel ?? LogLevel.DEBUG; // Default: 全レベル記録\n this.componentFilter = options?.componentFilter\n ? new RegExp(options.componentFilter)\n : undefined;\n this.startTime = Date.now();\n // Determine log file path\n const logDir = options?.logDir || join(os.homedir(), '.machina', 'logs');\n const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD\n const component = options?.component || 'app';\n const logFile = options?.filePath || join(logDir, `${component}-${date}.log`);\n // Create log directory\n try {\n const dir = options?.filePath ? join(logFile, '..') : logDir;\n fs.mkdirSync(dir, { recursive: true });\n }\n catch (error) {\n console.error(`[FileLogger] Failed to create log directory: ${error}`);\n }\n // Open log file\n try {\n this.writeStream = fs.createWriteStream(logFile, { flags: 'a' });\n }\n catch (error) {\n console.error(`[FileLogger] Failed to open log file: ${error}`);\n }\n }\n log(level, message, context, error) {\n // Level filtering\n if (level < this.minLevel)\n return;\n // Component filtering\n if (this.componentFilter && context?.component) {\n if (!this.componentFilter.test(context.component))\n return;\n }\n if (!this.writeStream)\n return;\n // Format log message\n const timestamp = new Date().toISOString();\n const elapsed = ((Date.now() - this.startTime) / 1000).toFixed(2);\n const levelStr = LogLevel[level];\n const component = context?.component || 'unknown';\n const contextStr = context ? JSON.stringify(context) : '';\n const errorStr = error ? `\\n Error: ${error.message}\\n Stack: ${error.stack}` : '';\n const logMessage = `[${timestamp}] [+${elapsed}s] [${levelStr}] [${component}] ${message}${contextStr ? ' ' + contextStr : ''}${errorStr}\\n`;\n // Write to file\n this.writeStream.write(logMessage);\n }\n close() {\n if (this.writeStream) {\n this.writeStream.end();\n this.writeStream = null;\n }\n }\n}\n/**\n * Provide FileLogger with optional configuration\n * @param options - Logger options (minLevel defaults to DEBUG if not specified)\n */\nexport function provideFileLogger(options) {\n return {\n provide: LOGGER,\n multi: true,\n useFactory: () => {\n const minLevel = options?.minLevel ?? LogLevel.DEBUG;\n // Determine file path\n let filePath;\n if (options?.filePath) {\n filePath = options.filePath;\n }\n else {\n const logDir = options?.logDir || join(os.homedir(), '.machina', 'logs');\n const date = new Date().toISOString().split('T')[0];\n const component = options?.component || 'app';\n filePath = join(logDir, `${component}-${date}.log`);\n }\n return new FileLogger({\n filePath,\n minLevel,\n componentFilter: options?.componentFilter\n });\n }\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9maWxlL2ZpbGUtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQVdoRixNQUFNLE9BQU8sVUFBVyxTQUFRLFVBQVU7SUFDaEMsV0FBVyxHQUF1QixJQUFJLENBQUM7SUFDdkMsUUFBUSxDQUFXO0lBQ25CLGVBQWUsQ0FBVTtJQUN6QixTQUFTLENBQVM7SUFFMUIsWUFBWSxPQUEyQjtRQUNyQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUUsa0JBQWtCO1FBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxFQUFFLGVBQWU7WUFDN0MsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDckMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTVCLDBCQUEwQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFF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LyoqXG4gKiBGaWxlTG9nZ2VyIGltcGxlbWVudGF0aW9uIGZvciBtdWx0aS1wcm92aWRlciBsb2dnaW5nXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBXcml0ZVN0cmVhbSB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IEJhc2VMb2dnZXIsIExPR0dFUiwgTG9nTGV2ZWwsIExvZ0NvbnRleHQgfSBmcm9tICdAbngtZGRkL2xvZ2dpbmcvYmFzZSc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVMb2dnZXJPcHRpb25zIHtcbiAgZmlsZVBhdGg/OiBzdHJpbmc7XG4gIGxvZ0Rpcj86IHN0cmluZztcbiAgY29tcG9uZW50Pzogc3RyaW5nOyAgLy8gVXNlZCBmb3IgZGVmYXVsdCBmaWxlbmFtZVxuICBtaW5MZXZlbD86IExvZ0xldmVsO1xuICBjb21wb25lbnRGaWx0ZXI/OiBzdHJpbmc7ICAvLyBSZWdleCBwYXR0ZXJuXG59XG5cbmV4cG9ydCBjbGFzcyBGaWxlTG9nZ2VyIGV4dGVuZHMgQmFzZUxvZ2dlciB7XG4gIHByaXZhdGUgd3JpdGVTdHJlYW06IFdyaXRlU3RyZWFtIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWluTGV2ZWw6IExvZ0xldmVsO1xuICBwcml2YXRlIGNvbXBvbmVudEZpbHRlcj86IFJlZ0V4cDtcbiAgcHJpdmF0ZSBzdGFydFRpbWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRmlsZUxvZ2dlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWluTGV2ZWwgPSBvcHRpb25zPy5taW5MZXZlbCA/PyBMb2dMZXZlbC5ERUJVRzsgIC8vIERlZmF1bHQ6IOWFqOODrOODmeODq+iomOmMslxuICAgIHRoaXMuY29tcG9uZW50RmlsdGVyID0gb3B0aW9ucz8uY29tcG9uZW50RmlsdGVyXG4gICAgICA/IG5ldyBSZWdFeHAob3B0aW9ucy5jb21wb25lbnRGaWx0ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAvLyBEZXRlcm1pbmUgbG9nIGZpbGUgcGF0aFxuICAgIGNvbnN0IGxvZ0RpciA9IG9wdGlvbnM/LmxvZ0RpciB8fCBqb2luKG9zLmhvbWVkaXIoKSwgJy5tYWNoaW5hJywgJ2xvZ3MnKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07IC8vIFlZWVktTU0tRERcbiAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zPy5jb21wb25lbnQgfHwgJ2FwcCc7XG4gICAgY29uc3QgbG9nRmlsZSA9IG9wdGlvbnM/LmZpbGVQYXRoIHx8IGpvaW4obG9nRGlyLCBgJHtjb21wb25lbnR9LSR7ZGF0ZX0ubG9nYCk7XG5cbiAgICAvLyBDcmVhdGUgbG9nIGRpcmVjdG9yeVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkaXIgPSBvcHRpb25zPy5maWxlUGF0aCA/IGpvaW4obG9nRmlsZSwgJy4uJykgOiBsb2dEaXI7XG4gICAgICBmcy5ta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgW0ZpbGVMb2dnZXJdIEZhaWxlZCB0byBjcmVhdGUgbG9nIGRpcmVjdG9yeTogJHtlcnJvcn1gKTtcbiAgICB9XG5cbiAgICAvLyBPcGVuIGxvZyBmaWxlXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMud3JpdGVTdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShsb2dGaWxlLCB7IGZsYWdzOiAnYScgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtGaWxlTG9nZ2VyXSBGYWlsZWQgdG8gb3BlbiBsb2cgZmlsZTogJHtlcnJvcn1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0LCBlcnJvcj86IEVycm9yKTogdm9pZCB7XG4gICAgLy8gTGV2ZWwgZmlsdGVyaW5nXG4gICAgaWYgKGxldmVsIDwgdGhpcy5taW5MZXZlbCkgcmV0dXJuO1xuXG4gICAgLy8gQ29tcG9uZW50IGZpbHRlcmluZ1xuICAgIGlmICh0aGlzLmNvbXBvbmVudEZpbHRlciAmJiBjb250ZXh0Py5jb21wb25lbnQpIHtcbiAgICAgIGlmICghdGhpcy5jb21wb25lbnRGaWx0ZXIudGVzdChjb250ZXh0LmNvbXBvbmVudCkpIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud3JpdGVTdHJlYW0pIHJldHVybjtcblxuICAgIC8vIEZvcm1hdCBsb2cgbWVzc2FnZVxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBlbGFwc2VkID0gKChEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUpIC8gMTAwMCkudG9GaXhlZCgyKTtcbiAgICBjb25zdCBsZXZlbFN0ciA9IExvZ0xldmVsW2xldmVsXTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBjb250ZXh0Py5jb21wb25lbnQgfHwgJ3Vua25vd24nO1xuICAgIGNvbnN0IGNvbnRleHRTdHIgPSBjb250ZXh0ID8gSlNPTi5zdHJpbmdpZnkoY29udGV4dCkgOiAnJztcbiAgICBjb25zdCBlcnJvclN0ciA9IGVycm9yID8gYFxcbiAgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG4gIFN0YWNrOiAke2Vycm9yLnN0YWNrfWAgOiAnJztcblxuICAgIGNvbnN0IGxvZ01lc3NhZ2UgPSBgWyR7dGltZXN0YW1wfV0gWyske2VsYXBzZWR9c10gWyR7bGV2ZWxTdHJ9XSBbJHtjb21wb25lbnR9XSAke21lc3NhZ2V9JHtjb250ZXh0U3RyID8gJyAnICsgY29udGV4dFN0ciA6ICcnfSR7ZXJyb3JTdHJ9XFxuYDtcblxuICAgIC8vIFdyaXRlIHRvIGZpbGVcbiAgICB0aGlzLndyaXRlU3RyZWFtLndyaXRlKGxvZ01lc3NhZ2UpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud3JpdGVTdHJlYW0pIHtcbiAgICAgIHRoaXMud3JpdGVTdHJlYW0uZW5kKCk7XG4gICAgICB0aGlzLndyaXRlU3RyZWFtID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBwcm92aWRlRmlsZUxvZ2dlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVMb2dnZXJQcm92aWRlck9wdGlvbnMge1xuICBjb21wb25lbnQ/OiBzdHJpbmc7XG4gIGxvZ0Rpcj86IHN0cmluZztcbiAgZmlsZVBhdGg/OiBzdHJpbmc7XG4gIG1pbkxldmVsPzogTG9nTGV2ZWw7XG4gIGNvbXBvbmVudEZpbHRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlIEZpbGVMb2dnZXIgd2l0aCBvcHRpb25hbCBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIExvZ2dlciBvcHRpb25zIChtaW5MZXZlbCBkZWZhdWx0cyB0byBERUJVRyBpZiBub3Qgc3BlY2lmaWVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbGVMb2dnZXIob3B0aW9ucz86IEZpbGVMb2dnZXJQcm92aWRlck9wdGlvbnMpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogTE9HR0VSLFxuICAgIG11bHRpOiB0cnVlLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbkxldmVsID0gb3B0aW9ucz8ubWluTGV2ZWwgPz8gTG9nTGV2ZWwuREVCVUc7XG5cbiAgICAgIC8vIERldGVybWluZSBmaWxlIHBhdGhcbiAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nO1xuICAgICAgaWYgKG9wdGlvbnM/LmZpbGVQYXRoKSB7XG4gICAgICAgIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxvZ0RpciA9IG9wdGlvbnM/LmxvZ0RpciB8fCBqb2luKG9zLmhvbWVkaXIoKSwgJy5tYWNoaW5hJywgJ2xvZ3MnKTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zPy5jb21wb25lbnQgfHwgJ2FwcCc7XG4gICAgICAgIGZpbGVQYXRoID0gam9pbihsb2dEaXIsIGAke2NvbXBvbmVudH0tJHtkYXRlfS5sb2dgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBGaWxlTG9nZ2VyKHtcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIG1pbkxldmVsLFxuICAgICAgICBjb21wb25lbnRGaWx0ZXI6IG9wdGlvbnM/LmNvbXBvbmVudEZpbHRlclxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWxvZ2dpbmctZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2ZpbGUvbngtZGRkLWxvZ2dpbmctZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import * as fs from 'fs';
2
+ import { BaseLogger, LogLevel, LOGGER } from '@nx-ddd/logging/base';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable } from '@angular/core';
5
+
6
+ /**
7
+ * TeeLogger - ファイルとコンソール両方にログを出力(BaseLogger継承版)
8
+ *
9
+ * BaseLoggerを継承することでLoggingServiceのmulti-providerチェーンに統合可能。
10
+ * console.logのオーバーライドを廃止し、正規のLoggingService経由でログレベルを保持する。
11
+ *
12
+ * - initialize() なし: コンソールのみ出力(ConsoleLogger と同等)
13
+ * - initialize(logFile): コンソール + ファイル出力
14
+ * - E2E 時は FileLogger を使用するため、TeeLogger は常にコンソール出力が有効
15
+ */
16
+ class TeeLogger extends BaseLogger {
17
+ logStream = null;
18
+ enableConsoleOutput = true;
19
+ initialize(logFilePath, forceConsole = false, options) {
20
+ this.logStream = fs.createWriteStream(logFilePath, { flags: 'a' });
21
+ this.enableConsoleOutput = forceConsole || !options?.isE2e;
22
+ }
23
+ log(level, message) {
24
+ const levelStr = LogLevel[level] ?? 'LOG';
25
+ if (this.enableConsoleOutput) {
26
+ const time = new Date().toTimeString().slice(0, 8);
27
+ const method = level >= LogLevel.ERROR ? console.error
28
+ : level >= LogLevel.WARN ? console.warn
29
+ : console.log;
30
+ method(`[${time}][${levelStr}] ${message}`);
31
+ }
32
+ if (this.logStream) {
33
+ const ts = new Date().toISOString();
34
+ this.logStream.write(JSON.stringify({ ts, lvl: levelStr, msg: message }) + '\n');
35
+ }
36
+ }
37
+ close() {
38
+ if (this.logStream) {
39
+ this.logStream.end();
40
+ this.logStream = null;
41
+ }
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: TeeLogger, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: TeeLogger });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: TeeLogger, decorators: [{
47
+ type: Injectable
48
+ }] });
49
+ function provideTeeLogger() {
50
+ return [
51
+ { provide: TeeLogger, useClass: TeeLogger },
52
+ { provide: LOGGER, multi: true, useExisting: TeeLogger },
53
+ ];
54
+ }
55
+
56
+ /**
57
+ * Generated bundle index. Do not edit.
58
+ */
59
+
60
+ export { TeeLogger, provideTeeLogger };
61
+ //# sourceMappingURL=nx-ddd-logging-tee.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-ddd-logging-tee.mjs","sources":["../tmp-esm2022/tee/tee.logger.js","../tmp-esm2022/tee/nx-ddd-logging-tee.js"],"sourcesContent":["import * as fs from 'fs';\nimport { BaseLogger, LOGGER, LogLevel } from '@nx-ddd/logging/base';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * TeeLogger - ファイルとコンソール両方にログを出力(BaseLogger継承版)\n *\n * BaseLoggerを継承することでLoggingServiceのmulti-providerチェーンに統合可能。\n * console.logのオーバーライドを廃止し、正規のLoggingService経由でログレベルを保持する。\n *\n * - initialize() なし: コンソールのみ出力(ConsoleLogger と同等)\n * - initialize(logFile): コンソール + ファイル出力\n * - E2E 時は FileLogger を使用するため、TeeLogger は常にコンソール出力が有効\n */\nexport class TeeLogger extends BaseLogger {\n logStream = null;\n enableConsoleOutput = true;\n initialize(logFilePath, forceConsole = false, options) {\n this.logStream = fs.createWriteStream(logFilePath, { flags: 'a' });\n this.enableConsoleOutput = forceConsole || !options?.isE2e;\n }\n log(level, message) {\n const levelStr = LogLevel[level] ?? 'LOG';\n if (this.enableConsoleOutput) {\n const time = new Date().toTimeString().slice(0, 8);\n const method = level >= LogLevel.ERROR ? console.error\n : level >= LogLevel.WARN ? console.warn\n : console.log;\n method(`[${time}][${levelStr}] ${message}`);\n }\n if (this.logStream) {\n const ts = new Date().toISOString();\n this.logStream.write(JSON.stringify({ ts, lvl: levelStr, msg: message }) + '\\n');\n }\n }\n close() {\n if (this.logStream) {\n this.logStream.end();\n this.logStream = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: TeeLogger, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: TeeLogger });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: TeeLogger, decorators: [{\n type: Injectable\n }] });\nexport function provideTeeLogger() {\n return [\n { provide: TeeLogger, useClass: TeeLogger },\n { provide: LOGGER, multi: true, useExisting: TeeLogger },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVlLmxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL3RlZS90ZWUubG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBRXJEOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxTQUFVLFNBQVEsVUFBVTtJQUMvQixTQUFTLEdBQTBCLElBQUksQ0FBQztJQUN4QyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFFbkMsVUFBVSxDQUFDLFdBQW1CLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxPQUE2QjtRQUNqRixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWUsRUFBRSxPQUFlO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFMUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUN6QyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJO29CQUN2QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMzQixNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7dUdBL0JVLFNBQVM7MkdBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFEckIsVUFBVTs7QUFtQ1gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7UUFDM0MsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUN6RCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IEJhc2VMb2dnZXIsIExPR0dFUiwgTG9nTGV2ZWwgfSBmcm9tICdAbngtZGRkL2xvZ2dpbmcvYmFzZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRlZUxvZ2dlciAtIOODleOCoeOCpOODq+OBqOOCs+ODs+OCveODvOODq+S4oeaWueOBq+ODreOCsOOCkuWHuuWKm++8iEJhc2VMb2dnZXLntpnmib/niYjvvIlcbiAqXG4gKiBCYXNlTG9nZ2Vy44KS57aZ5om/44GZ44KL44GT44Go44GnTG9nZ2luZ1NlcnZpY2Xjga5tdWx0aS1wcm92aWRlcuODgeOCp+ODvOODs+OBq+e1seWQiOWPr+iDveOAglxuICogY29uc29sZS5sb2fjga7jgqrjg7zjg5Djg7zjg6njgqTjg4njgpLlu4PmraLjgZfjgIHmraPopo/jga5Mb2dnaW5nU2VydmljZee1jOeUseOBp+ODreOCsOODrOODmeODq+OCkuS/neaMgeOBmeOCi+OAglxuICpcbiAqIC0gaW5pdGlhbGl6ZSgpIOOBquOBlzog44Kz44Oz44K944O844Or44Gu44G/5Ye65Yqb77yIQ29uc29sZUxvZ2dlciDjgajlkIznrYnvvIlcbiAqIC0gaW5pdGlhbGl6ZShsb2dGaWxlKTog44Kz44Oz44K944O844OrICsg44OV44Kh44Kk44Or5Ye65YqbXG4gKiAtIEUyRSDmmYLjga8gRmlsZUxvZ2dlciDjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgIFUZWVMb2dnZXIg44Gv5bi444Gr44Kz44Oz44K944O844Or5Ye65Yqb44GM5pyJ5Yq5XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZWVMb2dnZXIgZXh0ZW5kcyBCYXNlTG9nZ2VyIHtcbiAgcHJpdmF0ZSBsb2dTdHJlYW06IGZzLldyaXRlU3RyZWFtIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZW5hYmxlQ29uc29sZU91dHB1dCA9IHRydWU7XG5cbiAgaW5pdGlhbGl6ZShsb2dGaWxlUGF0aDogc3RyaW5nLCBmb3JjZUNvbnNvbGUgPSBmYWxzZSwgb3B0aW9ucz86IHsgaXNFMmU/OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ1N0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGxvZ0ZpbGVQYXRoLCB7IGZsYWdzOiAnYScgfSk7XG4gICAgdGhpcy5lbmFibGVDb25zb2xlT3V0cHV0ID0gZm9yY2VDb25zb2xlIHx8ICFvcHRpb25zPy5pc0UyZTtcbiAgfVxuXG4gIGxvZyhsZXZlbDogTG9nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxldmVsU3RyID0gTG9nTGV2ZWxbbGV2ZWxdID8/ICdMT0cnO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlQ29uc29sZU91dHB1dCkge1xuICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkudG9UaW1lU3RyaW5nKCkuc2xpY2UoMCwgOCk7XG4gICAgICBjb25zdCBtZXRob2QgPSBsZXZlbCA+PSBMb2dMZXZlbC5FUlJPUiA/IGNvbnNvbGUuZXJyb3JcbiAgICAgICAgICAgICAgICAgICA6IGxldmVsID49IExvZ0xldmVsLldBUk4gPyBjb25zb2xlLndhcm5cbiAgICAgICAgICAgICAgICAgICA6IGNvbnNvbGUubG9nO1xuICAgICAgbWV0aG9kKGBbJHt0aW1lfV1bJHtsZXZlbFN0cn1dICR7bWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dTdHJlYW0pIHtcbiAgICAgIGNvbnN0IHRzID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgdGhpcy5sb2dTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkoeyB0cywgbHZsOiBsZXZlbFN0ciwgbXNnOiBtZXNzYWdlIH0pICsgJ1xcbicpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvZ1N0cmVhbSkge1xuICAgICAgdGhpcy5sb2dTdHJlYW0uZW5kKCk7XG4gICAgICB0aGlzLmxvZ1N0cmVhbSA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVGVlTG9nZ2VyKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHsgcHJvdmlkZTogVGVlTG9nZ2VyLCB1c2VDbGFzczogVGVlTG9nZ2VyIH0sXG4gICAgeyBwcm92aWRlOiBMT0dHRVIsIG11bHRpOiB0cnVlLCB1c2VFeGlzdGluZzogVGVlTG9nZ2VyIH0sXG4gIF07XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWxvZ2dpbmctdGVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9sb2dnaW5nL3NyYy9saWIvdGVlL254LWRkZC1sb2dnaW5nLXRlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,SAAS,UAAU,CAAC;AAC1C,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,mBAAmB,GAAG,IAAI;AAC9B,IAAI,UAAU,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,EAAE,OAAO,EAAE;AAC3D,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI,CAAC,mBAAmB,GAAG,YAAY,IAAI,CAAC,OAAO,EAAE,KAAK;AAClE,IAAI;AACJ,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE;AACxB,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK;AACjD,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,YAAY,MAAM,MAAM,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;AAC7D,kBAAkB,KAAK,IAAI,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;AACnD,sBAAsB,OAAO,CAAC,GAAG;AACjC,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;AAC5F,QAAQ;AACR,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAChC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI;AACjC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACtK,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACvH;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,gBAAgB,GAAG;AACnC,IAAI,OAAO;AACX,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AACnD,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;AAChE,KAAK;AACL;;ACpDA;AACA;AACA;;;;"}
@@ -0,0 +1,210 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injectable, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
3
+ import { LOGGER as LOGGER$1, LOG_FILTER as LOG_FILTER$1, LogLevel as LogLevel$1 } from '@nx-ddd/logging/base';
4
+
5
+ /**
6
+ * LoggingService interfaces
7
+ *
8
+ * Provides structured logging with different log levels and file output
9
+ */
10
+ var LogLevel;
11
+ (function (LogLevel) {
12
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
13
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
14
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
15
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
16
+ LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
17
+ })(LogLevel || (LogLevel = {}));
18
+
19
+ /**
20
+ * Base Logger class for multi-provider logging system
21
+ */
22
+ const LOGGER = new InjectionToken('Logger');
23
+ class BaseLogger {
24
+ // Convenience methods
25
+ debug(message, context) {
26
+ this.log(LogLevel.DEBUG, message, context);
27
+ }
28
+ info(message, context) {
29
+ this.log(LogLevel.INFO, message, context);
30
+ }
31
+ warn(message, context) {
32
+ this.log(LogLevel.WARN, message, context);
33
+ }
34
+ error(message, error, context) {
35
+ this.log(LogLevel.ERROR, message, context, error);
36
+ }
37
+ fatal(message, error, context) {
38
+ this.log(LogLevel.FATAL, message, context, error);
39
+ }
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger });
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: BaseLogger, decorators: [{
44
+ type: Injectable
45
+ }] });
46
+ function provideLogger(useFactory) {
47
+ return {
48
+ provide: LOGGER,
49
+ multi: true,
50
+ useFactory,
51
+ };
52
+ }
53
+
54
+ /**
55
+ * LogFilter - Simple function-based log filtering
56
+ */
57
+ const LOG_FILTER = new InjectionToken('LogFilter');
58
+
59
+ /**
60
+ * Provider functions for log filtering
61
+ */
62
+ /**
63
+ * Provide a log filter function
64
+ *
65
+ * @example
66
+ * // Filter by log level
67
+ * provideLogFilter((level) => level >= LogLevel.WARN)
68
+ *
69
+ * @example
70
+ * // Filter by component
71
+ * provideLogFilter((level, context) => context?.component?.startsWith('My'))
72
+ *
73
+ * @example
74
+ * // Allow all logs
75
+ * provideLogFilter(() => true)
76
+ */
77
+ function provideLogFilter(filter) {
78
+ return { provide: LOG_FILTER, useValue: filter };
79
+ }
80
+ /**
81
+ * Provide a log filter with explicit configuration
82
+ * @param config - Filter configuration (minLevel defaults to WARN)
83
+ */
84
+ function provideLogFilterWithConfig(config) {
85
+ const minLevel = config?.minLevel ?? LogLevel.WARN;
86
+ const componentRegex = config?.componentPattern ? new RegExp(config.componentPattern) : null;
87
+ return provideLogFilter((level, context) => {
88
+ if (level < minLevel)
89
+ return false;
90
+ if (componentRegex && context?.component && !componentRegex.test(context.component)) {
91
+ return false;
92
+ }
93
+ return true;
94
+ });
95
+ }
96
+ /**
97
+ * @deprecated Use provideLogFilterWithConfig() instead.
98
+ * This function directly accesses process.env which violates the rule
99
+ * that packages should not access environment variables directly.
100
+ *
101
+ * Migration example:
102
+ * ```typescript
103
+ * // Before (in packages)
104
+ * provideLogFilterFromEnv()
105
+ *
106
+ * // After (in application layer)
107
+ * provideLogFilterWithConfig({
108
+ * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,
109
+ * componentPattern: process.env['LOG_COMPONENTS']
110
+ * })
111
+ * ```
112
+ */
113
+ function provideLogFilterFromEnv() {
114
+ console.warn('[DEPRECATED] provideLogFilterFromEnv() is deprecated. Use provideLogFilterWithConfig() instead.');
115
+ return provideLogFilterWithConfig();
116
+ }
117
+
118
+ const LOGGING_SERVICE = new InjectionToken('LoggingService');
119
+ class LoggingService {
120
+ loggers = inject(LOGGER$1, { optional: true }) ?? [];
121
+ filter = inject(LOG_FILTER$1, { optional: true });
122
+ getLogger(name) {
123
+ const format = (...args) => {
124
+ return args.map(arg => {
125
+ if (typeof arg === 'string')
126
+ return arg;
127
+ if (arg === undefined)
128
+ return 'undefined';
129
+ if (arg === null)
130
+ return 'null';
131
+ const serialized = JSON.stringify(arg);
132
+ return serialized !== undefined ? serialized : String(arg);
133
+ }).join(' ');
134
+ };
135
+ return {
136
+ log: (...args) => this.log(LogLevel$1.DEBUG, format(`[${name}]`, ...args)),
137
+ debug: (...args) => this.log(LogLevel$1.DEBUG, format(`[${name}]`, ...args)),
138
+ info: (...args) => this.log(LogLevel$1.INFO, format(`[${name}]`, ...args)),
139
+ warn: (...args) => this.log(LogLevel$1.WARN, format(`[${name}]`, ...args)),
140
+ error: (...args) => this.log(LogLevel$1.ERROR, format(`[${name}]`, ...args)),
141
+ };
142
+ }
143
+ log(level, message, context, error) {
144
+ // Apply filtering at service level if LogFilter is provided
145
+ if (this.filter && !this.filter(level, context))
146
+ return;
147
+ this.loggers.forEach(logger => logger.log(level, message, context, error));
148
+ }
149
+ close() {
150
+ this.loggers.forEach(logger => logger.close());
151
+ }
152
+ debug(message, context) {
153
+ this.log(LogLevel$1.DEBUG, message, context);
154
+ }
155
+ info(message, context) {
156
+ this.log(LogLevel$1.INFO, message, context);
157
+ }
158
+ warn(message, context) {
159
+ this.log(LogLevel$1.WARN, message, context);
160
+ }
161
+ error(message, error, context) {
162
+ this.log(LogLevel$1.ERROR, message, context, error);
163
+ }
164
+ fatal(message, error, context) {
165
+ this.log(LogLevel$1.FATAL, message, context, error);
166
+ }
167
+ setLogLevel(_level) {
168
+ // this.loggers.forEach(logger => logger.setLogLevel(level));
169
+ }
170
+ setComponent(_component) {
171
+ // this.loggers.forEach(logger => logger.setComponent(component));
172
+ }
173
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: LoggingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
174
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: LoggingService, providedIn: 'root' });
175
+ }
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: LoggingService, decorators: [{
177
+ type: Injectable,
178
+ args: [{ providedIn: 'root' }]
179
+ }] });
180
+
181
+ let globalLogging = null;
182
+ function setGlobalLogging(logging) {
183
+ globalLogging = logging;
184
+ }
185
+ function getGlobalLogging() {
186
+ return globalLogging;
187
+ }
188
+ function createLogger(name) {
189
+ return globalLogging;
190
+ }
191
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
192
+ const noop = () => { };
193
+ const noopLogger = { log: noop, debug: noop, info: noop, warn: noop, error: noop };
194
+ function getLogger(name) {
195
+ return globalLogging?.getLogger(name) ?? noopLogger;
196
+ }
197
+ function provideGlobalLogging() {
198
+ return makeEnvironmentProviders([
199
+ provideAppInitializer(() => {
200
+ return setGlobalLogging(inject(LoggingService));
201
+ })
202
+ ]);
203
+ }
204
+
205
+ /**
206
+ * Generated bundle index. Do not edit.
207
+ */
208
+
209
+ export { BaseLogger, LOGGER, LOGGING_SERVICE, LOG_FILTER, LogLevel, LoggingService, createLogger, getGlobalLogging, getLogger, globalLogging as logging, provideGlobalLogging, provideLogFilter, provideLogFilterFromEnv, provideLogFilterWithConfig, provideLogger, setGlobalLogging };
210
+ //# sourceMappingURL=nx-ddd-logging.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-ddd-logging.mjs","sources":["../tmp-esm2022/base/interfaces.js","../tmp-esm2022/base/base.logger.js","../tmp-esm2022/base/log-filter.js","../tmp-esm2022/base/providers.js","../tmp-esm2022/logging.service.js","../tmp-esm2022/global-logging.js","../tmp-esm2022/nx-ddd-logging.js"],"sourcesContent":["/**\n * LoggingService interfaces\n *\n * Provides structured logging with different log levels and file output\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n LogLevel[LogLevel[\"FATAL\"] = 4] = \"FATAL\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2Jhc2UvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQix5Q0FBUyxDQUFBO0lBQ1QsdUNBQVEsQ0FBQTtJQUNSLHVDQUFRLENBQUE7SUFDUix5Q0FBUyxDQUFBO0lBQ1QseUNBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxRQUFRLEtBQVIsUUFBUSxRQU1uQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTG9nZ2luZ1NlcnZpY2UgaW50ZXJmYWNlc1xuICpcbiAqIFByb3ZpZGVzIHN0cnVjdHVyZWQgbG9nZ2luZyB3aXRoIGRpZmZlcmVudCBsb2cgbGV2ZWxzIGFuZCBmaWxlIG91dHB1dFxuICovXG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgREVCVUcgPSAwLFxuICBJTkZPID0gMSxcbiAgV0FSTiA9IDIsXG4gIEVSUk9SID0gMyxcbiAgRkFUQUwgPSA0LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NvbnRleHQge1xuICBjb21wb25lbnQ/OiBzdHJpbmc7XG4gIHNlc3Npb25JZD86IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2luZ1NlcnZpY2Uge1xuICAvKipcbiAgICogTG9nIGRlYnVnIG1lc3NhZ2UgKGZvciBkZXZlbG9wbWVudC90cm91Ymxlc2hvb3RpbmcpXG4gICAqL1xuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIGluZm9ybWF0aW9uYWwgbWVzc2FnZVxuICAgKi9cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIHdhcm5pbmcgbWVzc2FnZVxuICAgKi9cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogTG9nIGVycm9yIG1lc3NhZ2VcbiAgICovXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiBFcnJvciwgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBMb2cgZmF0YWwgZXJyb3IgbWVzc2FnZSAoYXBwbGljYXRpb24gY2Fubm90IGNvbnRpbnVlKVxuICAgKi9cbiAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IEVycm9yLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCBsb2cgbGV2ZWwgZmlsdGVyXG4gICAqL1xuICBzZXRMb2dMZXZlbChsZXZlbDogTG9nTGV2ZWwpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29tcG9uZW50IG5hbWUgZm9yIHRoaXMgbG9nZ2VyXG4gICAqL1xuICBzZXRDb21wb25lbnQoY29tcG9uZW50OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDbG9zZSBsb2dnZXIgYW5kIGZsdXNoIGJ1ZmZlcnNcbiAgICovXG4gIGNsb3NlKCk6IHZvaWQ7XG59XG4iXX0=","/**\n * Base Logger class for multi-provider logging system\n */\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { LogLevel } from './interfaces';\nimport * as i0 from \"@angular/core\";\nexport const LOGGER = new InjectionToken('Logger');\nexport class BaseLogger {\n // Convenience methods\n debug(message, context) {\n this.log(LogLevel.DEBUG, message, context);\n }\n info(message, context) {\n this.log(LogLevel.INFO, message, context);\n }\n warn(message, context) {\n this.log(LogLevel.WARN, message, context);\n }\n error(message, error, context) {\n this.log(LogLevel.ERROR, message, context, error);\n }\n fatal(message, error, context) {\n this.log(LogLevel.FATAL, message, context, error);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: BaseLogger, decorators: [{\n type: Injectable\n }] });\nexport function provideLogger(useFactory) {\n return {\n provide: LOGGER,\n multi: true,\n useFactory,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9iYXNlL2Jhc2UubG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLGNBQWMsQ0FBQzs7QUFFcEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFhLFFBQVEsQ0FBQyxDQUFDO0FBRy9ELE1BQU0sT0FBZ0IsVUFBVTtJQWdCOUIsc0JBQXNCO0lBQ3RCLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBb0I7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFvQjtRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLE9BQW9CO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLE9BQW9CO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO3VHQW5DbUIsVUFBVTsyR0FBVixVQUFVOzsyRkFBVixVQUFVO2tCQUQvQixVQUFVOztBQXVDWCxNQUFNLFVBQVUsYUFBYSxDQUFDLFVBQTRCO0lBQ3hELE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTTtRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIExvZ2dlciBjbGFzcyBmb3IgbXVsdGktcHJvdmlkZXIgbG9nZ2luZyBzeXN0ZW1cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0xldmVsLCBMb2dDb250ZXh0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IExPR0dFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCYXNlTG9nZ2VyPignTG9nZ2VyJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTG9nZ2VyIHtcbiAgLyoqXG4gICAqIE1haW4gbG9nIG1ldGhvZCB0aGF0IGFsbCBsb2dnZXJzIG11c3QgaW1wbGVtZW50XG4gICAqL1xuICBhYnN0cmFjdCBsb2coXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBjb250ZXh0PzogTG9nQ29udGV4dCxcbiAgICBlcnJvcj86IEVycm9yXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENsb3NlIGxvZ2dlciBhbmQgZmx1c2ggYnVmZmVyc1xuICAgKi9cbiAgYWJzdHJhY3QgY2xvc2UoKTogdm9pZDtcblxuICAvLyBDb252ZW5pZW5jZSBtZXRob2RzXG4gIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5ERUJVRywgbWVzc2FnZSwgY29udGV4dCk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5JTkZPLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLldBUk4sIG1lc3NhZ2UsIGNvbnRleHQpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IEVycm9yLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLkVSUk9SLCBtZXNzYWdlLCBjb250ZXh0LCBlcnJvcik7XG4gIH1cblxuICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogRXJyb3IsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuRkFUQUwsIG1lc3NhZ2UsIGNvbnRleHQsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUxvZ2dlcih1c2VGYWN0b3J5OiAoKSA9PiBCYXNlTG9nZ2VyKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IExPR0dFUixcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICB1c2VGYWN0b3J5LFxuICB9O1xufVxuIl19","/**\n * LogFilter - Simple function-based log filtering\n */\nimport { InjectionToken } from '@angular/core';\nexport const LOG_FILTER = new InjectionToken('LogFilter');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvbG9nZ2luZy9zcmMvbGliL2Jhc2UvbG9nLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMb2dGaWx0ZXIgLSBTaW1wbGUgZnVuY3Rpb24tYmFzZWQgbG9nIGZpbHRlcmluZ1xuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dMZXZlbCwgTG9nQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogTG9nIGZpbHRlciBmdW5jdGlvbiB0eXBlXG4gKiBAcGFyYW0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIGxvZyBjb250ZXh0IChjb21wb25lbnQgbmFtZSwgZXRjLilcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGxvZyBzaG91bGQgYmUgb3V0cHV0LCBmYWxzZSB0byBzdXBwcmVzc1xuICovXG5leHBvcnQgdHlwZSBMb2dGaWx0ZXJGbiA9IChsZXZlbDogTG9nTGV2ZWwsIGNvbnRleHQ/OiBMb2dDb250ZXh0KSA9PiBib29sZWFuO1xuXG5leHBvcnQgY29uc3QgTE9HX0ZJTFRFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2dGaWx0ZXJGbj4oJ0xvZ0ZpbHRlcicpO1xuIl19","/**\n * Provider functions for log filtering\n */\nimport { LogLevel } from './interfaces';\nimport { LOG_FILTER } from './log-filter';\n/**\n * Provide a log filter function\n *\n * @example\n * // Filter by log level\n * provideLogFilter((level) => level >= LogLevel.WARN)\n *\n * @example\n * // Filter by component\n * provideLogFilter((level, context) => context?.component?.startsWith('My'))\n *\n * @example\n * // Allow all logs\n * provideLogFilter(() => true)\n */\nexport function provideLogFilter(filter) {\n return { provide: LOG_FILTER, useValue: filter };\n}\n/**\n * Provide a log filter with explicit configuration\n * @param config - Filter configuration (minLevel defaults to WARN)\n */\nexport function provideLogFilterWithConfig(config) {\n const minLevel = config?.minLevel ?? LogLevel.WARN;\n const componentRegex = config?.componentPattern ? new RegExp(config.componentPattern) : null;\n return provideLogFilter((level, context) => {\n if (level < minLevel)\n return false;\n if (componentRegex && context?.component && !componentRegex.test(context.component)) {\n return false;\n }\n return true;\n });\n}\n/**\n * @deprecated Use provideLogFilterWithConfig() instead.\n * This function directly accesses process.env which violates the rule\n * that packages should not access environment variables directly.\n *\n * Migration example:\n * ```typescript\n * // Before (in packages)\n * provideLogFilterFromEnv()\n *\n * // After (in application layer)\n * provideLogFilterWithConfig({\n * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,\n * componentPattern: process.env['LOG_COMPONENTS']\n * })\n * ```\n */\nexport function provideLogFilterFromEnv() {\n console.warn('[DEPRECATED] provideLogFilterFromEnv() is deprecated. Use provideLogFilterWithConfig() instead.');\n return provideLogFilterWithConfig();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9sb2dnaW5nL3NyYy9saWIvYmFzZS9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFHSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxjQUFjLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBbUI7SUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ25ELENBQUM7QUFVRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBd0I7SUFDakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ25ELE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUU3RixPQUFPLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pDLElBQUksS0FBSyxHQUFHLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlHQUFpRyxDQUFDLENBQUM7SUFDaEgsT0FBTywwQkFBMEIsRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVyIGZ1bmN0aW9ucyBmb3IgbG9nIGZpbHRlcmluZ1xuICovXG5cbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dMZXZlbCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0dfRklMVEVSLCBMb2dGaWx0ZXJGbiB9IGZyb20gJy4vbG9nLWZpbHRlcic7XG5cbi8qKlxuICogUHJvdmlkZSBhIGxvZyBmaWx0ZXIgZnVuY3Rpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRmlsdGVyIGJ5IGxvZyBsZXZlbFxuICogcHJvdmlkZUxvZ0ZpbHRlcigobGV2ZWwpID0+IGxldmVsID49IExvZ0xldmVsLldBUk4pXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZpbHRlciBieSBjb21wb25lbnRcbiAqIHByb3ZpZGVMb2dGaWx0ZXIoKGxldmVsLCBjb250ZXh0KSA9PiBjb250ZXh0Py5jb21wb25lbnQ/LnN0YXJ0c1dpdGgoJ015JykpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFsbG93IGFsbCBsb2dzXG4gKiBwcm92aWRlTG9nRmlsdGVyKCgpID0+IHRydWUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTG9nRmlsdGVyKGZpbHRlcjogTG9nRmlsdGVyRm4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IExPR19GSUxURVIsIHVzZVZhbHVlOiBmaWx0ZXIgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBsb2cgZmlsdGVyaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRmlsdGVyQ29uZmlnIHtcbiAgbWluTGV2ZWw/OiBMb2dMZXZlbDtcbiAgY29tcG9uZW50UGF0dGVybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlIGEgbG9nIGZpbHRlciB3aXRoIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBjb25maWcgLSBGaWx0ZXIgY29uZmlndXJhdGlvbiAobWluTGV2ZWwgZGVmYXVsdHMgdG8gV0FSTilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVMb2dGaWx0ZXJXaXRoQ29uZmlnKGNvbmZpZz86IExvZ0ZpbHRlckNvbmZpZyk6IFByb3ZpZGVyIHtcbiAgY29uc3QgbWluTGV2ZWwgPSBjb25maWc/Lm1pbkxldmVsID8/IExvZ0xldmVsLldBUk47XG4gIGNvbnN0IGNvbXBvbmVudFJlZ2V4ID0gY29uZmlnPy5jb21wb25lbnRQYXR0ZXJuID8gbmV3IFJlZ0V4cChjb25maWcuY29tcG9uZW50UGF0dGVybikgOiBudWxsO1xuXG4gIHJldHVybiBwcm92aWRlTG9nRmlsdGVyKChsZXZlbCwgY29udGV4dCkgPT4ge1xuICAgIGlmIChsZXZlbCA8IG1pbkxldmVsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbXBvbmVudFJlZ2V4ICYmIGNvbnRleHQ/LmNvbXBvbmVudCAmJiAhY29tcG9uZW50UmVnZXgudGVzdChjb250ZXh0LmNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpIGluc3RlYWQuXG4gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHByb2Nlc3MuZW52IHdoaWNoIHZpb2xhdGVzIHRoZSBydWxlXG4gKiB0aGF0IHBhY2thZ2VzIHNob3VsZCBub3QgYWNjZXNzIGVudmlyb25tZW50IHZhcmlhYmxlcyBkaXJlY3RseS5cbiAqXG4gKiBNaWdyYXRpb24gZXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEJlZm9yZSAoaW4gcGFja2FnZXMpXG4gKiBwcm92aWRlTG9nRmlsdGVyRnJvbUVudigpXG4gKlxuICogLy8gQWZ0ZXIgKGluIGFwcGxpY2F0aW9uIGxheWVyKVxuICogcHJvdmlkZUxvZ0ZpbHRlcldpdGhDb25maWcoe1xuICogICBtaW5MZXZlbDogcHJvY2Vzcy5lbnZbJ0xPR19MRVZFTCddID8gTG9nTGV2ZWxbcHJvY2Vzcy5lbnZbJ0xPR19MRVZFTCddLnRvVXBwZXJDYXNlKCldIDogdW5kZWZpbmVkLFxuICogICBjb21wb25lbnRQYXR0ZXJuOiBwcm9jZXNzLmVudlsnTE9HX0NPTVBPTkVOVFMnXVxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUxvZ0ZpbHRlckZyb21FbnYoKTogUHJvdmlkZXIge1xuICBjb25zb2xlLndhcm4oJ1tERVBSRUNBVEVEXSBwcm92aWRlTG9nRmlsdGVyRnJvbUVudigpIGlzIGRlcHJlY2F0ZWQuIFVzZSBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpIGluc3RlYWQuJyk7XG4gIHJldHVybiBwcm92aWRlTG9nRmlsdGVyV2l0aENvbmZpZygpO1xufVxuIl19","import { inject, Injectable, InjectionToken } from \"@angular/core\";\nimport { LOGGER, LogLevel, LOG_FILTER } from \"@nx-ddd/logging/base\";\nimport * as i0 from \"@angular/core\";\nexport const LOGGING_SERVICE = new InjectionToken('LoggingService');\nexport class LoggingService {\n loggers = inject(LOGGER, { optional: true }) ?? [];\n filter = inject(LOG_FILTER, { optional: true });\n getLogger(name) {\n const format = (...args) => {\n return args.map(arg => {\n if (typeof arg === 'string')\n return arg;\n if (arg === undefined)\n return 'undefined';\n if (arg === null)\n return 'null';\n const serialized = JSON.stringify(arg);\n return serialized !== undefined ? serialized : String(arg);\n }).join(' ');\n };\n return {\n log: (...args) => this.log(LogLevel.DEBUG, format(`[${name}]`, ...args)),\n debug: (...args) => this.log(LogLevel.DEBUG, format(`[${name}]`, ...args)),\n info: (...args) => this.log(LogLevel.INFO, format(`[${name}]`, ...args)),\n warn: (...args) => this.log(LogLevel.WARN, format(`[${name}]`, ...args)),\n error: (...args) => this.log(LogLevel.ERROR, format(`[${name}]`, ...args)),\n };\n }\n log(level, message, context, error) {\n // Apply filtering at service level if LogFilter is provided\n if (this.filter && !this.filter(level, context))\n return;\n this.loggers.forEach(logger => logger.log(level, message, context, error));\n }\n close() {\n this.loggers.forEach(logger => logger.close());\n }\n debug(message, context) {\n this.log(LogLevel.DEBUG, message, context);\n }\n info(message, context) {\n this.log(LogLevel.INFO, message, context);\n }\n warn(message, context) {\n this.log(LogLevel.WARN, message, context);\n }\n error(message, error, context) {\n this.log(LogLevel.ERROR, message, context, error);\n }\n fatal(message, error, context) {\n this.log(LogLevel.FATAL, message, context, error);\n }\n setLogLevel(_level) {\n // this.loggers.forEach(logger => logger.setLogLevel(level));\n }\n setComponent(_component) {\n // this.loggers.forEach(logger => logger.setComponent(component));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: LoggingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: LoggingService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: LoggingService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9sb2dnaW5nL3NyYy9saWIvbG9nZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQTJDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7O0FBRTFILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsZ0JBQWdCLENBQUMsQ0FBQztBQVdyRixNQUFNLE9BQU8sY0FBYztJQUNqQixPQUFPLEdBQUcsTUFBTSxDQUFlLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqRSxNQUFNLEdBQUcsTUFBTSxDQUFjLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXJFLFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxJQUF1QyxFQUFFLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7b0JBQUUsT0FBTyxHQUFHLENBQUM7Z0JBQ3hDLElBQUksR0FBRyxLQUFLLFNBQVM7b0JBQUUsT0FBTyxXQUFXLENBQUM7Z0JBQzFDLElBQUksR0FBRyxLQUFLLElBQUk7b0JBQUUsT0FBTyxNQUFNLENBQUM7Z0JBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLE9BQU8sVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN4RSxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUUsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN4RSxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBZSxFQUFFLE9BQWUsRUFBRSxPQUFvQixFQUFFLEtBQWE7UUFDdkUsNERBQTREO1FBQzVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUFFLE9BQU87UUFFeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQW9CO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBb0I7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFvQjtRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFhLEVBQUUsT0FBb0I7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFnQjtRQUMxQiw2REFBNkQ7SUFDL0QsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQjtRQUM3QixrRUFBa0U7SUFDcEUsQ0FBQzt1R0E3RFUsY0FBYzsyR0FBZCxjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCYXNlTG9nZ2VyLCBJTG9nZ2luZ1NlcnZpY2UsIExvZ0NvbnRleHQsIExPR0dFUiwgTG9nTGV2ZWwsIExPR19GSUxURVIsIExvZ0ZpbHRlckZuIH0gZnJvbSBcIkBueC1kZGQvbG9nZ2luZy9iYXNlXCI7XG5cbmV4cG9ydCBjb25zdCBMT0dHSU5HX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUxvZ2dpbmdTZXJ2aWNlPignTG9nZ2luZ1NlcnZpY2UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xuICBsb2c6ICguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBjb25zb2xlWydsb2cnXT4pID0+IHZvaWQ7XG4gIGRlYnVnOiAoLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgY29uc29sZVsnZGVidWcnXT4pID0+IHZvaWQ7XG4gIGluZm86ICguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBjb25zb2xlWydpbmZvJ10+KSA9PiB2b2lkO1xuICB3YXJuOiAoLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgY29uc29sZVsnd2FybiddPikgPT4gdm9pZDtcbiAgZXJyb3I6ICguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBjb25zb2xlWydlcnJvciddPikgPT4gdm9pZDtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2dnaW5nU2VydmljZSBpbXBsZW1lbnRzIElMb2dnaW5nU2VydmljZSB7XG4gIHByaXZhdGUgbG9nZ2VycyA9IGluamVjdDxCYXNlTG9nZ2VyW10+KExPR0dFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBbXTtcbiAgcHJpdmF0ZSBmaWx0ZXIgPSBpbmplY3Q8TG9nRmlsdGVyRm4+KExPR19GSUxURVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgZ2V0TG9nZ2VyKG5hbWU6IHN0cmluZyk6IExvZ2dlciB7XG4gICAgY29uc3QgZm9ybWF0ID0gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGNvbnNvbGVbJ2xvZyddPikgPT4ge1xuICAgICAgcmV0dXJuIGFyZ3MubWFwKGFyZyA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykgcmV0dXJuIGFyZztcbiAgICAgICAgaWYgKGFyZyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGlmIChhcmcgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBKU09OLnN0cmluZ2lmeShhcmcpO1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplZCAhPT0gdW5kZWZpbmVkID8gc2VyaWFsaXplZCA6IFN0cmluZyhhcmcpO1xuICAgICAgfSkuam9pbignICcpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9nOiAoLi4uYXJncykgPT4gdGhpcy5sb2coTG9nTGV2ZWwuREVCVUcsIGZvcm1hdChgWyR7bmFtZX1dYCwgLi4uYXJncykpLFxuICAgICAgZGVidWc6ICguLi5hcmdzKSA9PiB0aGlzLmxvZyhMb2dMZXZlbC5ERUJVRywgZm9ybWF0KGBbJHtuYW1lfV1gLCAuLi5hcmdzKSksXG4gICAgICBpbmZvOiAoLi4uYXJncykgPT4gdGhpcy5sb2coTG9nTGV2ZWwuSU5GTywgZm9ybWF0KGBbJHtuYW1lfV1gLCAuLi5hcmdzKSksXG4gICAgICB3YXJuOiAoLi4uYXJncykgPT4gdGhpcy5sb2coTG9nTGV2ZWwuV0FSTiwgZm9ybWF0KGBbJHtuYW1lfV1gLCAuLi5hcmdzKSksXG4gICAgICBlcnJvcjogKC4uLmFyZ3MpID0+IHRoaXMubG9nKExvZ0xldmVsLkVSUk9SLCBmb3JtYXQoYFske25hbWV9XWAsIC4uLmFyZ3MpKSxcbiAgICB9O1xuICB9XG5cbiAgbG9nKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjb250ZXh0PzogTG9nQ29udGV4dCwgZXJyb3I/OiBFcnJvcik6IHZvaWQge1xuICAgIC8vIEFwcGx5IGZpbHRlcmluZyBhdCBzZXJ2aWNlIGxldmVsIGlmIExvZ0ZpbHRlciBpcyBwcm92aWRlZFxuICAgIGlmICh0aGlzLmZpbHRlciAmJiAhdGhpcy5maWx0ZXIobGV2ZWwsIGNvbnRleHQpKSByZXR1cm47XG5cbiAgICB0aGlzLmxvZ2dlcnMuZm9yRWFjaChsb2dnZXIgPT4gbG9nZ2VyLmxvZyhsZXZlbCwgbWVzc2FnZSwgY29udGV4dCwgZXJyb3IpKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2Vycy5mb3JFYWNoKGxvZ2dlciA9PiBsb2dnZXIuY2xvc2UoKSk7XG4gIH1cblxuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuREVCVUcsIG1lc3NhZ2UsIGNvbnRleHQpO1xuICB9XG5cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBMb2dDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuSU5GTywgbWVzc2FnZSwgY29udGV4dCk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5XQVJOLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiBFcnJvciwgY29udGV4dD86IExvZ0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5FUlJPUiwgbWVzc2FnZSwgY29udGV4dCwgZXJyb3IpO1xuICB9XG5cbiAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IEVycm9yLCBjb250ZXh0PzogTG9nQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLkZBVEFMLCBtZXNzYWdlLCBjb250ZXh0LCBlcnJvcik7XG4gIH1cblxuICBzZXRMb2dMZXZlbChfbGV2ZWw6IExvZ0xldmVsKTogdm9pZCB7XG4gICAgLy8gdGhpcy5sb2dnZXJzLmZvckVhY2gobG9nZ2VyID0+IGxvZ2dlci5zZXRMb2dMZXZlbChsZXZlbCkpO1xuICB9XG5cbiAgc2V0Q29tcG9uZW50KF9jb21wb25lbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIHRoaXMubG9nZ2Vycy5mb3JFYWNoKGxvZ2dlciA9PiBsb2dnZXIuc2V0Q29tcG9uZW50KGNvbXBvbmVudCkpO1xuICB9XG59XG4iXX0=","import { inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { LoggingService } from './logging.service';\nlet globalLogging = null;\nexport { globalLogging as logging };\nexport function setGlobalLogging(logging) {\n globalLogging = logging;\n}\nexport function getGlobalLogging() {\n return globalLogging;\n}\nexport function createLogger(name) {\n return globalLogging;\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nconst noopLogger = { log: noop, debug: noop, info: noop, warn: noop, error: noop };\nexport function getLogger(name) {\n return globalLogging?.getLogger(name) ?? noopLogger;\n}\nexport function provideGlobalLogging() {\n return makeEnvironmentProviders([\n provideAppInitializer(() => {\n return setGlobalLogging(inject(LoggingService));\n })\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWxvZ2dpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9nbG9iYWwtbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RyxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsSUFBSSxhQUFhLEdBQTBCLElBQUksQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRXBDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUF1QjtJQUN0RCxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVM7SUFDcEMsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELGdFQUFnRTtBQUNoRSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFDdEIsTUFBTSxVQUFVLEdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUUzRixNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVk7SUFDcEMsT0FBTyxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQztBQUN0RCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN6QixPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsIHByb3ZpZGVBcHBJbml0aWFsaXplciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUxvZ2dpbmdTZXJ2aWNlIH0gZnJvbSAnQG54LWRkZC9sb2dnaW5nL2Jhc2UnO1xuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy5zZXJ2aWNlJztcblxubGV0IGdsb2JhbExvZ2dpbmc6IExvZ2dpbmdTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XG5leHBvcnQgeyBnbG9iYWxMb2dnaW5nIGFzIGxvZ2dpbmcgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEdsb2JhbExvZ2dpbmcobG9nZ2luZzogTG9nZ2luZ1NlcnZpY2UpOiB2b2lkIHtcbiAgZ2xvYmFsTG9nZ2luZyA9IGxvZ2dpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iYWxMb2dnaW5nKCk6IExvZ2dpbmdTZXJ2aWNlIHwgbnVsbCB7XG4gIHJldHVybiBnbG9iYWxMb2dnaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKG5hbWU6IGFueSk6IElMb2dnaW5nU2VydmljZSB7XG4gIHJldHVybiBnbG9iYWxMb2dnaW5nO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5jb25zdCBub29wID0gKCkgPT4ge307XG5jb25zdCBub29wTG9nZ2VyOiBMb2dnZXIgPSB7IGxvZzogbm9vcCwgZGVidWc6IG5vb3AsIGluZm86IG5vb3AsIHdhcm46IG5vb3AsIGVycm9yOiBub29wIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZTogc3RyaW5nKTogTG9nZ2VyIHtcbiAgcmV0dXJuIGdsb2JhbExvZ2dpbmc/LmdldExvZ2dlcihuYW1lKSA/PyBub29wTG9nZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUdsb2JhbExvZ2dpbmcoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlQXBwSW5pdGlhbGl6ZXIoKCkgPT4ge1xuICAgICAgcmV0dXJuIHNldEdsb2JhbExvZ2dpbmcoaW5qZWN0KExvZ2dpbmdTZXJ2aWNlKSk7XG4gICAgfSlcbiAgXSk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWxvZ2dpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2xvZ2dpbmcvc3JjL2xpYi9ueC1kZGQtbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["LOGGER","LOG_FILTER","LogLevel"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { LogLevel, BaseLogger, LogContext } from '@nx-ddd/logging/base';
2
+ import { Provider } from '@angular/core';
3
+
4
+ /**
5
+ * FileLogger implementation for multi-provider logging
6
+ */
7
+
8
+ interface FileLoggerOptions {
9
+ filePath?: string;
10
+ logDir?: string;
11
+ component?: string;
12
+ minLevel?: LogLevel;
13
+ componentFilter?: string;
14
+ }
15
+ declare class FileLogger extends BaseLogger {
16
+ private writeStream;
17
+ private minLevel;
18
+ private componentFilter?;
19
+ private startTime;
20
+ constructor(options?: FileLoggerOptions);
21
+ log(level: LogLevel, message: string, context?: LogContext, error?: Error): void;
22
+ close(): void;
23
+ }
24
+ /**
25
+ * Options for provideFileLogger
26
+ */
27
+ interface FileLoggerProviderOptions {
28
+ component?: string;
29
+ logDir?: string;
30
+ filePath?: string;
31
+ minLevel?: LogLevel;
32
+ componentFilter?: string;
33
+ }
34
+ /**
35
+ * Provide FileLogger with optional configuration
36
+ * @param options - Logger options (minLevel defaults to DEBUG if not specified)
37
+ */
38
+ declare function provideFileLogger(options?: FileLoggerProviderOptions): Provider;
39
+
40
+ export { FileLogger, provideFileLogger };
41
+ export type { FileLoggerOptions, FileLoggerProviderOptions };
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/logging/src/lib/file/file-logger.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;AAEG;;;;;;;;AAeF;AAED;;;;;;AAoCE;AAyBA;AAMD;AAED;;AAEG;;;;;;;AAOF;AAED;;;AAGG;AACH;;;"}
package/index.d.ts ADDED
@@ -0,0 +1,181 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Provider, EnvironmentProviders } from '@angular/core';
3
+ import { ILoggingService as ILoggingService$1, LogLevel as LogLevel$1, LogContext as LogContext$1 } from '@nx-ddd/logging/base';
4
+
5
+ /**
6
+ * LoggingService interfaces
7
+ *
8
+ * Provides structured logging with different log levels and file output
9
+ */
10
+ declare enum LogLevel {
11
+ DEBUG = 0,
12
+ INFO = 1,
13
+ WARN = 2,
14
+ ERROR = 3,
15
+ FATAL = 4
16
+ }
17
+ interface LogContext {
18
+ component?: string;
19
+ sessionId?: string;
20
+ clientId?: string;
21
+ [key: string]: any;
22
+ }
23
+ interface ILoggingService {
24
+ /**
25
+ * Log debug message (for development/troubleshooting)
26
+ */
27
+ debug(message: string, context?: LogContext): void;
28
+ /**
29
+ * Log informational message
30
+ */
31
+ info(message: string, context?: LogContext): void;
32
+ /**
33
+ * Log warning message
34
+ */
35
+ warn(message: string, context?: LogContext): void;
36
+ /**
37
+ * Log error message
38
+ */
39
+ error(message: string, error?: Error, context?: LogContext): void;
40
+ /**
41
+ * Log fatal error message (application cannot continue)
42
+ */
43
+ fatal(message: string, error?: Error, context?: LogContext): void;
44
+ /**
45
+ * Set log level filter
46
+ */
47
+ setLogLevel(level: LogLevel): void;
48
+ /**
49
+ * Set component name for this logger
50
+ */
51
+ setComponent(component: string): void;
52
+ /**
53
+ * Close logger and flush buffers
54
+ */
55
+ close(): void;
56
+ }
57
+
58
+ /**
59
+ * Base Logger class for multi-provider logging system
60
+ */
61
+
62
+ declare const LOGGER: InjectionToken<BaseLogger>;
63
+ declare abstract class BaseLogger {
64
+ /**
65
+ * Main log method that all loggers must implement
66
+ */
67
+ abstract log(level: LogLevel, message: string, context?: LogContext, error?: Error): void;
68
+ /**
69
+ * Close logger and flush buffers
70
+ */
71
+ abstract close(): void;
72
+ debug(message: string, context?: LogContext): void;
73
+ info(message: string, context?: LogContext): void;
74
+ warn(message: string, context?: LogContext): void;
75
+ error(message: string, error?: Error, context?: LogContext): void;
76
+ fatal(message: string, error?: Error, context?: LogContext): void;
77
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseLogger, never>;
78
+ static ɵprov: i0.ɵɵInjectableDeclaration<BaseLogger>;
79
+ }
80
+ declare function provideLogger(useFactory: () => BaseLogger): Provider;
81
+
82
+ /**
83
+ * LogFilter - Simple function-based log filtering
84
+ */
85
+
86
+ /**
87
+ * Log filter function type
88
+ * @param level - The log level
89
+ * @param context - Optional log context (component name, etc.)
90
+ * @returns true if the log should be output, false to suppress
91
+ */
92
+ type LogFilterFn = (level: LogLevel, context?: LogContext) => boolean;
93
+ declare const LOG_FILTER: InjectionToken<LogFilterFn>;
94
+
95
+ /**
96
+ * Provider functions for log filtering
97
+ */
98
+
99
+ /**
100
+ * Provide a log filter function
101
+ *
102
+ * @example
103
+ * // Filter by log level
104
+ * provideLogFilter((level) => level >= LogLevel.WARN)
105
+ *
106
+ * @example
107
+ * // Filter by component
108
+ * provideLogFilter((level, context) => context?.component?.startsWith('My'))
109
+ *
110
+ * @example
111
+ * // Allow all logs
112
+ * provideLogFilter(() => true)
113
+ */
114
+ declare function provideLogFilter(filter: LogFilterFn): Provider;
115
+ /**
116
+ * Configuration for log filtering
117
+ */
118
+ interface LogFilterConfig {
119
+ minLevel?: LogLevel;
120
+ componentPattern?: string;
121
+ }
122
+ /**
123
+ * Provide a log filter with explicit configuration
124
+ * @param config - Filter configuration (minLevel defaults to WARN)
125
+ */
126
+ declare function provideLogFilterWithConfig(config?: LogFilterConfig): Provider;
127
+ /**
128
+ * @deprecated Use provideLogFilterWithConfig() instead.
129
+ * This function directly accesses process.env which violates the rule
130
+ * that packages should not access environment variables directly.
131
+ *
132
+ * Migration example:
133
+ * ```typescript
134
+ * // Before (in packages)
135
+ * provideLogFilterFromEnv()
136
+ *
137
+ * // After (in application layer)
138
+ * provideLogFilterWithConfig({
139
+ * minLevel: process.env['LOG_LEVEL'] ? LogLevel[process.env['LOG_LEVEL'].toUpperCase()] : undefined,
140
+ * componentPattern: process.env['LOG_COMPONENTS']
141
+ * })
142
+ * ```
143
+ */
144
+ declare function provideLogFilterFromEnv(): Provider;
145
+
146
+ declare const LOGGING_SERVICE: InjectionToken<ILoggingService$1>;
147
+ interface Logger {
148
+ log: (...args: Parameters<typeof console['log']>) => void;
149
+ debug: (...args: Parameters<typeof console['debug']>) => void;
150
+ info: (...args: Parameters<typeof console['info']>) => void;
151
+ warn: (...args: Parameters<typeof console['warn']>) => void;
152
+ error: (...args: Parameters<typeof console['error']>) => void;
153
+ }
154
+ declare class LoggingService implements ILoggingService$1 {
155
+ private loggers;
156
+ private filter;
157
+ getLogger(name: string): Logger;
158
+ log(level: LogLevel$1, message: string, context?: LogContext$1, error?: Error): void;
159
+ close(): void;
160
+ debug(message: string, context?: LogContext$1): void;
161
+ info(message: string, context?: LogContext$1): void;
162
+ warn(message: string, context?: LogContext$1): void;
163
+ error(message: string, error?: Error, context?: LogContext$1): void;
164
+ fatal(message: string, error?: Error, context?: LogContext$1): void;
165
+ setLogLevel(_level: LogLevel$1): void;
166
+ setComponent(_component: string): void;
167
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoggingService, never>;
168
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoggingService>;
169
+ }
170
+
171
+ declare let globalLogging: LoggingService | null;
172
+
173
+ declare function setGlobalLogging(logging: LoggingService): void;
174
+ declare function getGlobalLogging(): LoggingService | null;
175
+ declare function createLogger(name: any): ILoggingService$1;
176
+ declare function getLogger(name: string): Logger;
177
+ declare function provideGlobalLogging(): EnvironmentProviders;
178
+
179
+ export { BaseLogger, LOGGER, LOGGING_SERVICE, LOG_FILTER, LogLevel, LoggingService, createLogger, getGlobalLogging, getLogger, globalLogging as logging, provideGlobalLogging, provideLogFilter, provideLogFilterFromEnv, provideLogFilterWithConfig, provideLogger, setGlobalLogging };
180
+ export type { ILoggingService, LogContext, LogFilterConfig, LogFilterFn, Logger };
181
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../packages/@nx-ddd/logging/src/lib/base/interfaces.ts","../../../../packages/@nx-ddd/logging/src/lib/base/base.logger.ts","../../../../packages/@nx-ddd/logging/src/lib/base/log-filter.ts","../../../../packages/@nx-ddd/logging/src/lib/base/providers.ts","../../../../packages/@nx-ddd/logging/src/lib/logging.service.ts","../../../../packages/@nx-ddd/logging/src/lib/global-logging.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAEH;AACE;AACA;AACA;AACA;AACA;AACD;;;;;AAMC;AACD;;AAGC;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;;AAEJ;;AC7DD;;AAEG;;AAKH;AAEA;AAEE;;AAEG;;AAQH;;AAEG;;;;;AAgBH;AAIA;;;AAGD;AAED;;AChDA;;AAEG;;AAKH;;;;;AAKG;AACG;AAEN;;ACfA;;AAEG;;AAMH;;;;;;;;;;;;;;AAcG;AACH;AAIA;;AAEG;;;;AAIF;AAED;;;AAGG;AACH;AAaA;;;;;;;;;;;;;;;;AAgBG;AACH;;AClEA;;AAGE;AACA;AACA;AACA;AACA;AACD;AAED;;;AAKE;AAoBA;AAOA;;;;AAgBA;AAIA;AAIA;AAIA;;;AAGD;;ACxED;;AAGA;AAIA;AAIA;AAQA;AAIA;;;"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@nx-ddd/logging",
3
+ "version": "19.24.1",
4
+ "license": "MIT",
5
+ "peerDependencies": {
6
+ "@angular/core": "19.1.4"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "module": "fesm2022/nx-ddd-logging.mjs",
12
+ "typings": "index.d.ts",
13
+ "exports": {
14
+ "./package.json": {
15
+ "default": "./package.json"
16
+ },
17
+ ".": {
18
+ "types": "./index.d.ts",
19
+ "default": "./fesm2022/nx-ddd-logging.mjs"
20
+ },
21
+ "./base": {
22
+ "types": "./base/index.d.ts",
23
+ "default": "./fesm2022/nx-ddd-logging-base.mjs"
24
+ },
25
+ "./console": {
26
+ "types": "./console/index.d.ts",
27
+ "default": "./fesm2022/nx-ddd-logging-console.mjs"
28
+ },
29
+ "./file": {
30
+ "types": "./file/index.d.ts",
31
+ "default": "./fesm2022/nx-ddd-logging-file.mjs"
32
+ },
33
+ "./tee": {
34
+ "types": "./tee/index.d.ts",
35
+ "default": "./fesm2022/nx-ddd-logging-tee.mjs"
36
+ }
37
+ },
38
+ "sideEffects": false
39
+ }
package/tee/index.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import { BaseLogger, LogLevel } from '@nx-ddd/logging/base';
2
+ import * as i0 from '@angular/core';
3
+ import { Provider } from '@angular/core';
4
+
5
+ /**
6
+ * TeeLogger - ファイルとコンソール両方にログを出力(BaseLogger継承版)
7
+ *
8
+ * BaseLoggerを継承することでLoggingServiceのmulti-providerチェーンに統合可能。
9
+ * console.logのオーバーライドを廃止し、正規のLoggingService経由でログレベルを保持する。
10
+ *
11
+ * - initialize() なし: コンソールのみ出力(ConsoleLogger と同等)
12
+ * - initialize(logFile): コンソール + ファイル出力
13
+ * - E2E 時は FileLogger を使用するため、TeeLogger は常にコンソール出力が有効
14
+ */
15
+ declare class TeeLogger extends BaseLogger {
16
+ private logStream;
17
+ private enableConsoleOutput;
18
+ initialize(logFilePath: string, forceConsole?: boolean, options?: {
19
+ isE2e?: boolean;
20
+ }): void;
21
+ log(level: LogLevel, message: string): void;
22
+ close(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<TeeLogger, never>;
24
+ static ɵprov: i0.ɵɵInjectableDeclaration<TeeLogger>;
25
+ }
26
+ declare function provideTeeLogger(): Provider[];
27
+
28
+ export { TeeLogger, provideTeeLogger };
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/logging/src/lib/tee/tee.logger.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA;;;;;;;;;AASG;AACH,cAAA,SAAA,SAAA,UAAA;;;;;AAKqF;;AAsBnF;;;AAMD;AAED,iBAAA,gBAAA,IAAA,QAAA;;;;"}