@bloomneo/appkit 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +902 -0
- package/bin/appkit.js +71 -0
- package/bin/commands/generate.js +1050 -0
- package/bin/templates/backend/README.md.template +39 -0
- package/bin/templates/backend/api.http.template +0 -0
- package/bin/templates/backend/docs/APPKIT_CLI.md +507 -0
- package/bin/templates/backend/docs/APPKIT_COMMENTS_GUIDELINES.md +61 -0
- package/bin/templates/backend/docs/APPKIT_LLM_GUIDE.md +2539 -0
- package/bin/templates/backend/package.json.template +34 -0
- package/bin/templates/backend/src/api/features/welcome/welcome.http.template +29 -0
- package/bin/templates/backend/src/api/features/welcome/welcome.route.ts.template +36 -0
- package/bin/templates/backend/src/api/features/welcome/welcome.service.ts.template +88 -0
- package/bin/templates/backend/src/api/features/welcome/welcome.types.ts.template +18 -0
- package/bin/templates/backend/src/api/lib/api-router.ts.template +84 -0
- package/bin/templates/backend/src/api/server.ts.template +188 -0
- package/bin/templates/backend/tsconfig.api.json.template +24 -0
- package/bin/templates/backend/tsconfig.json.template +40 -0
- package/bin/templates/feature/feature.http.template +63 -0
- package/bin/templates/feature/feature.route.ts.template +36 -0
- package/bin/templates/feature/feature.service.ts.template +81 -0
- package/bin/templates/feature/feature.types.ts.template +23 -0
- package/bin/templates/feature-db/feature.http.template +63 -0
- package/bin/templates/feature-db/feature.model.ts.template +74 -0
- package/bin/templates/feature-db/feature.route.ts.template +58 -0
- package/bin/templates/feature-db/feature.service.ts.template +231 -0
- package/bin/templates/feature-db/feature.types.ts.template +25 -0
- package/bin/templates/feature-db/schema-addition.prisma.template +9 -0
- package/bin/templates/feature-db/seeding/README.md.template +57 -0
- package/bin/templates/feature-db/seeding/feature.seed.js.template +67 -0
- package/bin/templates/feature-user/schema-addition.prisma.template +19 -0
- package/bin/templates/feature-user/user.http.template +157 -0
- package/bin/templates/feature-user/user.model.ts.template +244 -0
- package/bin/templates/feature-user/user.route.ts.template +379 -0
- package/bin/templates/feature-user/user.seed.js.template +182 -0
- package/bin/templates/feature-user/user.service.ts.template +426 -0
- package/bin/templates/feature-user/user.types.ts.template +127 -0
- package/dist/auth/auth.d.ts +182 -0
- package/dist/auth/auth.d.ts.map +1 -0
- package/dist/auth/auth.js +477 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/auth/defaults.d.ts +104 -0
- package/dist/auth/defaults.d.ts.map +1 -0
- package/dist/auth/defaults.js +374 -0
- package/dist/auth/defaults.js.map +1 -0
- package/dist/auth/index.d.ts +70 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +94 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/cache/cache.d.ts +118 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +249 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/defaults.d.ts +63 -0
- package/dist/cache/defaults.d.ts.map +1 -0
- package/dist/cache/defaults.js +193 -0
- package/dist/cache/defaults.js.map +1 -0
- package/dist/cache/index.d.ts +101 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +203 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/strategies/memory.d.ts +138 -0
- package/dist/cache/strategies/memory.d.ts.map +1 -0
- package/dist/cache/strategies/memory.js +348 -0
- package/dist/cache/strategies/memory.js.map +1 -0
- package/dist/cache/strategies/redis.d.ts +105 -0
- package/dist/cache/strategies/redis.d.ts.map +1 -0
- package/dist/cache/strategies/redis.js +318 -0
- package/dist/cache/strategies/redis.js.map +1 -0
- package/dist/config/config.d.ts +62 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +107 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/defaults.d.ts +44 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +217 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +105 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +163 -0
- package/dist/config/index.js.map +1 -0
- package/dist/database/adapters/mongoose.d.ts +106 -0
- package/dist/database/adapters/mongoose.d.ts.map +1 -0
- package/dist/database/adapters/mongoose.js +480 -0
- package/dist/database/adapters/mongoose.js.map +1 -0
- package/dist/database/adapters/prisma.d.ts +106 -0
- package/dist/database/adapters/prisma.d.ts.map +1 -0
- package/dist/database/adapters/prisma.js +494 -0
- package/dist/database/adapters/prisma.js.map +1 -0
- package/dist/database/defaults.d.ts +87 -0
- package/dist/database/defaults.d.ts.map +1 -0
- package/dist/database/defaults.js +271 -0
- package/dist/database/defaults.js.map +1 -0
- package/dist/database/index.d.ts +137 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +490 -0
- package/dist/database/index.js.map +1 -0
- package/dist/email/defaults.d.ts +100 -0
- package/dist/email/defaults.d.ts.map +1 -0
- package/dist/email/defaults.js +400 -0
- package/dist/email/defaults.js.map +1 -0
- package/dist/email/email.d.ts +139 -0
- package/dist/email/email.d.ts.map +1 -0
- package/dist/email/email.js +316 -0
- package/dist/email/email.js.map +1 -0
- package/dist/email/index.d.ts +176 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +251 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/strategies/console.d.ts +90 -0
- package/dist/email/strategies/console.d.ts.map +1 -0
- package/dist/email/strategies/console.js +268 -0
- package/dist/email/strategies/console.js.map +1 -0
- package/dist/email/strategies/resend.d.ts +84 -0
- package/dist/email/strategies/resend.d.ts.map +1 -0
- package/dist/email/strategies/resend.js +266 -0
- package/dist/email/strategies/resend.js.map +1 -0
- package/dist/email/strategies/smtp.d.ts +77 -0
- package/dist/email/strategies/smtp.d.ts.map +1 -0
- package/dist/email/strategies/smtp.js +286 -0
- package/dist/email/strategies/smtp.js.map +1 -0
- package/dist/error/defaults.d.ts +40 -0
- package/dist/error/defaults.d.ts.map +1 -0
- package/dist/error/defaults.js +75 -0
- package/dist/error/defaults.js.map +1 -0
- package/dist/error/error.d.ts +140 -0
- package/dist/error/error.d.ts.map +1 -0
- package/dist/error/error.js +200 -0
- package/dist/error/error.js.map +1 -0
- package/dist/error/index.d.ts +145 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +145 -0
- package/dist/error/index.js.map +1 -0
- package/dist/event/defaults.d.ts +111 -0
- package/dist/event/defaults.d.ts.map +1 -0
- package/dist/event/defaults.js +378 -0
- package/dist/event/defaults.js.map +1 -0
- package/dist/event/event.d.ts +171 -0
- package/dist/event/event.d.ts.map +1 -0
- package/dist/event/event.js +391 -0
- package/dist/event/event.js.map +1 -0
- package/dist/event/index.d.ts +173 -0
- package/dist/event/index.d.ts.map +1 -0
- package/dist/event/index.js +302 -0
- package/dist/event/index.js.map +1 -0
- package/dist/event/strategies/memory.d.ts +122 -0
- package/dist/event/strategies/memory.d.ts.map +1 -0
- package/dist/event/strategies/memory.js +331 -0
- package/dist/event/strategies/memory.js.map +1 -0
- package/dist/event/strategies/redis.d.ts +115 -0
- package/dist/event/strategies/redis.d.ts.map +1 -0
- package/dist/event/strategies/redis.js +434 -0
- package/dist/event/strategies/redis.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/defaults.d.ts +67 -0
- package/dist/logger/defaults.d.ts.map +1 -0
- package/dist/logger/defaults.js +213 -0
- package/dist/logger/defaults.js.map +1 -0
- package/dist/logger/index.d.ts +84 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +101 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/logger.d.ts +165 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +843 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/transports/console.d.ts +102 -0
- package/dist/logger/transports/console.d.ts.map +1 -0
- package/dist/logger/transports/console.js +276 -0
- package/dist/logger/transports/console.js.map +1 -0
- package/dist/logger/transports/database.d.ts +153 -0
- package/dist/logger/transports/database.d.ts.map +1 -0
- package/dist/logger/transports/database.js +539 -0
- package/dist/logger/transports/database.js.map +1 -0
- package/dist/logger/transports/file.d.ts +146 -0
- package/dist/logger/transports/file.d.ts.map +1 -0
- package/dist/logger/transports/file.js +464 -0
- package/dist/logger/transports/file.js.map +1 -0
- package/dist/logger/transports/http.d.ts +128 -0
- package/dist/logger/transports/http.d.ts.map +1 -0
- package/dist/logger/transports/http.js +401 -0
- package/dist/logger/transports/http.js.map +1 -0
- package/dist/logger/transports/webhook.d.ts +152 -0
- package/dist/logger/transports/webhook.d.ts.map +1 -0
- package/dist/logger/transports/webhook.js +485 -0
- package/dist/logger/transports/webhook.js.map +1 -0
- package/dist/queue/defaults.d.ts +66 -0
- package/dist/queue/defaults.d.ts.map +1 -0
- package/dist/queue/defaults.js +205 -0
- package/dist/queue/defaults.js.map +1 -0
- package/dist/queue/index.d.ts +124 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +116 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/queue.d.ts +156 -0
- package/dist/queue/queue.d.ts.map +1 -0
- package/dist/queue/queue.js +387 -0
- package/dist/queue/queue.js.map +1 -0
- package/dist/queue/transports/database.d.ts +165 -0
- package/dist/queue/transports/database.d.ts.map +1 -0
- package/dist/queue/transports/database.js +595 -0
- package/dist/queue/transports/database.js.map +1 -0
- package/dist/queue/transports/memory.d.ts +143 -0
- package/dist/queue/transports/memory.d.ts.map +1 -0
- package/dist/queue/transports/memory.js +415 -0
- package/dist/queue/transports/memory.js.map +1 -0
- package/dist/queue/transports/redis.d.ts +203 -0
- package/dist/queue/transports/redis.d.ts.map +1 -0
- package/dist/queue/transports/redis.js +744 -0
- package/dist/queue/transports/redis.js.map +1 -0
- package/dist/security/defaults.d.ts +64 -0
- package/dist/security/defaults.d.ts.map +1 -0
- package/dist/security/defaults.js +159 -0
- package/dist/security/defaults.js.map +1 -0
- package/dist/security/index.d.ts +110 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +160 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/security.d.ts +138 -0
- package/dist/security/security.d.ts.map +1 -0
- package/dist/security/security.js +419 -0
- package/dist/security/security.js.map +1 -0
- package/dist/storage/defaults.d.ts +79 -0
- package/dist/storage/defaults.d.ts.map +1 -0
- package/dist/storage/defaults.js +358 -0
- package/dist/storage/defaults.js.map +1 -0
- package/dist/storage/index.d.ts +153 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +242 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.d.ts +151 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +439 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/storage/strategies/local.d.ts +117 -0
- package/dist/storage/strategies/local.d.ts.map +1 -0
- package/dist/storage/strategies/local.js +368 -0
- package/dist/storage/strategies/local.js.map +1 -0
- package/dist/storage/strategies/r2.d.ts +130 -0
- package/dist/storage/strategies/r2.d.ts.map +1 -0
- package/dist/storage/strategies/r2.js +470 -0
- package/dist/storage/strategies/r2.js.map +1 -0
- package/dist/storage/strategies/s3.d.ts +121 -0
- package/dist/storage/strategies/s3.d.ts.map +1 -0
- package/dist/storage/strategies/s3.js +461 -0
- package/dist/storage/strategies/s3.js.map +1 -0
- package/dist/util/defaults.d.ts +77 -0
- package/dist/util/defaults.d.ts.map +1 -0
- package/dist/util/defaults.js +193 -0
- package/dist/util/defaults.js.map +1 -0
- package/dist/util/index.d.ts +97 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +165 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/util.d.ts +145 -0
- package/dist/util/util.d.ts.map +1 -0
- package/dist/util/util.js +481 -0
- package/dist/util/util.js.map +1 -0
- package/package.json +234 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console transport with smart formatting, minimal mode support, and visual error enhancement
|
|
3
|
+
* @module @bloomneo/appkit/loggier
|
|
4
|
+
* @file src/logger/transports/console.ts
|
|
5
|
+
*
|
|
6
|
+
* @llm-rule WHEN: Need console output for development or production monitoring
|
|
7
|
+
* @llm-rule AVOID: Using console.log directly - this handles levels, colors, and formatting
|
|
8
|
+
* @llm-rule NOTE: Auto-detects production/development mode and adjusts formatting accordingly
|
|
9
|
+
* @llm-rule NOTE: Enhanced to work with visual error formatting from loggerClass.error() method
|
|
10
|
+
*/
|
|
11
|
+
import type { LogEntry, Transport } from '../logger.js';
|
|
12
|
+
import type { LoggingConfig } from '../defaults.js';
|
|
13
|
+
/**
|
|
14
|
+
* Console transport with automatic formatting and smart minimal mode
|
|
15
|
+
*/
|
|
16
|
+
export declare class ConsoleTransport implements Transport {
|
|
17
|
+
private colorize;
|
|
18
|
+
private timestamps;
|
|
19
|
+
private prettyPrint;
|
|
20
|
+
private minimal;
|
|
21
|
+
/**
|
|
22
|
+
* Creates console transport with direct environment access (like auth pattern)
|
|
23
|
+
* @llm-rule WHEN: Logger initialization - gets config from environment defaults
|
|
24
|
+
* @llm-rule AVOID: Manual configuration - environment detection handles this
|
|
25
|
+
*/
|
|
26
|
+
constructor(config: LoggingConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Write log entry to console with smart formatting
|
|
29
|
+
* @llm-rule WHEN: Outputting logs to console for development or production
|
|
30
|
+
* @llm-rule AVOID: Calling directly - logger routes entries automatically
|
|
31
|
+
* @llm-rule NOTE: Skips visual error entries since they're handled by loggerClass.error() method directly
|
|
32
|
+
*/
|
|
33
|
+
write(entry: LogEntry): void;
|
|
34
|
+
/**
|
|
35
|
+
* Check if entry should be skipped because it was already visually displayed
|
|
36
|
+
* @llm-rule WHEN: Enhanced error() method has already shown visual formatting
|
|
37
|
+
* @llm-rule AVOID: Double-displaying errors that have visual formatting
|
|
38
|
+
*/
|
|
39
|
+
private shouldSkipVisualEntry;
|
|
40
|
+
/**
|
|
41
|
+
* Format for minimal mode - clean and simple, all logs visible
|
|
42
|
+
* @llm-rule WHEN: Development mode with minimal scope for clean console
|
|
43
|
+
* @llm-rule AVOID: Adding JSON metadata - defeats purpose of minimal mode
|
|
44
|
+
* @llm-rule NOTE: Shows all logs but with clean formatting, no filtering
|
|
45
|
+
*/
|
|
46
|
+
private formatMinimal;
|
|
47
|
+
/**
|
|
48
|
+
* Format for pretty development mode - full detail with JSON structure
|
|
49
|
+
* @llm-rule WHEN: Development mode with full scope for detailed debugging
|
|
50
|
+
* @llm-rule AVOID: In production - too verbose for production logs
|
|
51
|
+
*/
|
|
52
|
+
private formatPretty;
|
|
53
|
+
/**
|
|
54
|
+
* Format for standard/production mode - structured but compact
|
|
55
|
+
* @llm-rule WHEN: Production or when structured logs needed for parsing
|
|
56
|
+
* @llm-rule AVOID: For development debugging - pretty mode is better
|
|
57
|
+
*/
|
|
58
|
+
private formatStandard;
|
|
59
|
+
/**
|
|
60
|
+
* Get level label with emoji for visual identification
|
|
61
|
+
* @llm-rule WHEN: Pretty or minimal formatting needs visual level indicators
|
|
62
|
+
* @llm-rule AVOID: In production structured logs - use level text instead
|
|
63
|
+
*/
|
|
64
|
+
private getLevelLabel;
|
|
65
|
+
/**
|
|
66
|
+
* Apply ANSI color codes for terminal output
|
|
67
|
+
* @llm-rule WHEN: Development mode or when terminal supports colors
|
|
68
|
+
* @llm-rule AVOID: In CI/CD or when colors not supported
|
|
69
|
+
*/
|
|
70
|
+
private applyColor;
|
|
71
|
+
/**
|
|
72
|
+
* Output to appropriate console method based on level
|
|
73
|
+
* @llm-rule WHEN: Final console output step
|
|
74
|
+
* @llm-rule AVOID: Always using console.log - different levels use different methods
|
|
75
|
+
*/
|
|
76
|
+
private outputToConsole;
|
|
77
|
+
/**
|
|
78
|
+
* Get numeric value for log level comparison
|
|
79
|
+
* @llm-rule WHEN: Comparing log levels for filtering
|
|
80
|
+
* @llm-rule AVOID: String comparison - numeric is more reliable
|
|
81
|
+
*/
|
|
82
|
+
private getLevelValue;
|
|
83
|
+
/**
|
|
84
|
+
* Check if this transport should log the given level
|
|
85
|
+
* @llm-rule WHEN: Logger asks if transport handles this level
|
|
86
|
+
* @llm-rule AVOID: Complex level logic - simple comparison is sufficient
|
|
87
|
+
*/
|
|
88
|
+
shouldLog(level: string, configLevel: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Flush pending logs (no-op for console - immediate output)
|
|
91
|
+
* @llm-rule WHEN: Logger cleanup or app shutdown
|
|
92
|
+
* @llm-rule AVOID: Expecting async behavior - console writes immediately
|
|
93
|
+
*/
|
|
94
|
+
flush(): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Close transport (no-op for console - no resources to cleanup)
|
|
97
|
+
* @llm-rule WHEN: Logger shutdown or transport cleanup
|
|
98
|
+
* @llm-rule AVOID: Expecting cleanup behavior - console has no resources
|
|
99
|
+
*/
|
|
100
|
+
close(): Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/logger/transports/console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,OAAO,CAAU;IAEzB;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IAQjC;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAiC5B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAsDrB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAyBpB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAOtD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console transport with smart formatting, minimal mode support, and visual error enhancement
|
|
3
|
+
* @module @bloomneo/appkit/loggier
|
|
4
|
+
* @file src/logger/transports/console.ts
|
|
5
|
+
*
|
|
6
|
+
* @llm-rule WHEN: Need console output for development or production monitoring
|
|
7
|
+
* @llm-rule AVOID: Using console.log directly - this handles levels, colors, and formatting
|
|
8
|
+
* @llm-rule NOTE: Auto-detects production/development mode and adjusts formatting accordingly
|
|
9
|
+
* @llm-rule NOTE: Enhanced to work with visual error formatting from loggerClass.error() method
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Console transport with automatic formatting and smart minimal mode
|
|
13
|
+
*/
|
|
14
|
+
export class ConsoleTransport {
|
|
15
|
+
colorize;
|
|
16
|
+
timestamps;
|
|
17
|
+
prettyPrint;
|
|
18
|
+
minimal;
|
|
19
|
+
/**
|
|
20
|
+
* Creates console transport with direct environment access (like auth pattern)
|
|
21
|
+
* @llm-rule WHEN: Logger initialization - gets config from environment defaults
|
|
22
|
+
* @llm-rule AVOID: Manual configuration - environment detection handles this
|
|
23
|
+
*/
|
|
24
|
+
constructor(config) {
|
|
25
|
+
// Direct access to config (like auth module pattern)
|
|
26
|
+
this.colorize = config.console.colorize;
|
|
27
|
+
this.timestamps = config.console.timestamps;
|
|
28
|
+
this.prettyPrint = config.console.prettyPrint;
|
|
29
|
+
this.minimal = config.minimal;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Write log entry to console with smart formatting
|
|
33
|
+
* @llm-rule WHEN: Outputting logs to console for development or production
|
|
34
|
+
* @llm-rule AVOID: Calling directly - logger routes entries automatically
|
|
35
|
+
* @llm-rule NOTE: Skips visual error entries since they're handled by loggerClass.error() method directly
|
|
36
|
+
*/
|
|
37
|
+
write(entry) {
|
|
38
|
+
try {
|
|
39
|
+
// Skip entries that have already been visually displayed by enhanced error() method
|
|
40
|
+
if (this.shouldSkipVisualEntry(entry)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Format based on mode
|
|
44
|
+
let output;
|
|
45
|
+
if (this.minimal) {
|
|
46
|
+
// Minimal: clean format, no JSON metadata, all logs visible
|
|
47
|
+
output = this.formatMinimal(entry);
|
|
48
|
+
}
|
|
49
|
+
else if (this.prettyPrint) {
|
|
50
|
+
// Full scope with pretty JSON metadata for debugging
|
|
51
|
+
output = this.formatPretty(entry);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Standard format with compact JSON for production
|
|
55
|
+
output = this.formatStandard(entry);
|
|
56
|
+
}
|
|
57
|
+
// Apply colors if enabled
|
|
58
|
+
if (this.colorize) {
|
|
59
|
+
output = this.applyColor(output, entry.level);
|
|
60
|
+
}
|
|
61
|
+
// Output to appropriate console method
|
|
62
|
+
this.outputToConsole(output, entry.level);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
// Never let logging break the application
|
|
66
|
+
console.error('Console transport error:', error.message);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if entry should be skipped because it was already visually displayed
|
|
71
|
+
* @llm-rule WHEN: Enhanced error() method has already shown visual formatting
|
|
72
|
+
* @llm-rule AVOID: Double-displaying errors that have visual formatting
|
|
73
|
+
*/
|
|
74
|
+
shouldSkipVisualEntry(entry) {
|
|
75
|
+
// Skip error entries in development that have visual formatting metadata
|
|
76
|
+
const isDevelopment = process.env.NODE_ENV === 'development';
|
|
77
|
+
const hasVisualFormatting = entry.level === 'error' &&
|
|
78
|
+
(entry.errorType === 'DISPLAY_ERROR' ||
|
|
79
|
+
entry.category ||
|
|
80
|
+
entry.feature);
|
|
81
|
+
// In development, if the enhanced error() method showed visual formatting,
|
|
82
|
+
// we can skip the regular console output to avoid duplication
|
|
83
|
+
const shouldShowVisual = isDevelopment ||
|
|
84
|
+
!this.minimal ||
|
|
85
|
+
process.env.VOILA_VISUAL_ERRORS === 'true';
|
|
86
|
+
return shouldShowVisual && hasVisualFormatting;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Format for minimal mode - clean and simple, all logs visible
|
|
90
|
+
* @llm-rule WHEN: Development mode with minimal scope for clean console
|
|
91
|
+
* @llm-rule AVOID: Adding JSON metadata - defeats purpose of minimal mode
|
|
92
|
+
* @llm-rule NOTE: Shows all logs but with clean formatting, no filtering
|
|
93
|
+
*/
|
|
94
|
+
formatMinimal(entry) {
|
|
95
|
+
const { level, message, component, error, _location, timestamp } = entry;
|
|
96
|
+
// Clean timestamp - just time, no date or timezone
|
|
97
|
+
const cleanTime = new Date(timestamp).toLocaleTimeString('en-US', {
|
|
98
|
+
hour12: false,
|
|
99
|
+
hour: '2-digit',
|
|
100
|
+
minute: '2-digit',
|
|
101
|
+
second: '2-digit'
|
|
102
|
+
});
|
|
103
|
+
// Special handling for VoilaJSX startup messages (keep them prominent)
|
|
104
|
+
if (message && (message.includes('✨') || message.includes('🚀') || message.includes('👋'))) {
|
|
105
|
+
return `${cleanTime} ${message}`;
|
|
106
|
+
}
|
|
107
|
+
// Errors and warnings get enhanced formatting
|
|
108
|
+
if (level === 'error' || level === 'warn') {
|
|
109
|
+
let formatted = `${cleanTime} ${this.getLevelLabel(level)} ${message}`;
|
|
110
|
+
// Show location for errors/warnings
|
|
111
|
+
if (_location) {
|
|
112
|
+
formatted += ` (${_location})`;
|
|
113
|
+
}
|
|
114
|
+
if (component) {
|
|
115
|
+
formatted += ` [${component}]`;
|
|
116
|
+
}
|
|
117
|
+
// Add error details if present
|
|
118
|
+
if (error) {
|
|
119
|
+
const errorMsg = typeof error === 'object' ? error.message || error : error;
|
|
120
|
+
formatted += `\n ${errorMsg}`;
|
|
121
|
+
}
|
|
122
|
+
return formatted;
|
|
123
|
+
}
|
|
124
|
+
// For info/debug logs - clean format with essential info
|
|
125
|
+
let formatted = `${cleanTime} ${message}`;
|
|
126
|
+
// Add location for debugging (shows exactly where log came from)
|
|
127
|
+
if (_location) {
|
|
128
|
+
formatted += ` (${_location})`;
|
|
129
|
+
}
|
|
130
|
+
// Add component tag for filtering/context
|
|
131
|
+
if (component) {
|
|
132
|
+
formatted += ` [${component}]`;
|
|
133
|
+
}
|
|
134
|
+
return formatted;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format for pretty development mode - full detail with JSON structure
|
|
138
|
+
* @llm-rule WHEN: Development mode with full scope for detailed debugging
|
|
139
|
+
* @llm-rule AVOID: In production - too verbose for production logs
|
|
140
|
+
*/
|
|
141
|
+
formatPretty(entry) {
|
|
142
|
+
const { timestamp, level, message, ...meta } = entry;
|
|
143
|
+
let formatted = '';
|
|
144
|
+
if (this.timestamps) {
|
|
145
|
+
formatted += `${timestamp} `;
|
|
146
|
+
}
|
|
147
|
+
formatted += `${this.getLevelLabel(level)} ${message}`;
|
|
148
|
+
// Show location in pretty format for errors
|
|
149
|
+
if (level === 'error' && entry._location) {
|
|
150
|
+
formatted += `\n 📍 ${entry._location}`;
|
|
151
|
+
}
|
|
152
|
+
// Add pretty-printed metadata if present (excluding internal fields)
|
|
153
|
+
const { _location, errorType, ...displayMeta } = meta;
|
|
154
|
+
const metaKeys = Object.keys(displayMeta);
|
|
155
|
+
if (metaKeys.length > 0) {
|
|
156
|
+
formatted += '\n' + JSON.stringify(displayMeta, null, 2);
|
|
157
|
+
}
|
|
158
|
+
return formatted;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Format for standard/production mode - structured but compact
|
|
162
|
+
* @llm-rule WHEN: Production or when structured logs needed for parsing
|
|
163
|
+
* @llm-rule AVOID: For development debugging - pretty mode is better
|
|
164
|
+
*/
|
|
165
|
+
formatStandard(entry) {
|
|
166
|
+
const { timestamp, level, message, ...meta } = entry;
|
|
167
|
+
let formatted = '';
|
|
168
|
+
if (this.timestamps) {
|
|
169
|
+
formatted += `${timestamp} `;
|
|
170
|
+
}
|
|
171
|
+
formatted += `[${level.toUpperCase()}] ${message}`;
|
|
172
|
+
// Add compact metadata if present (excluding internal fields)
|
|
173
|
+
const { _location, errorType, ...displayMeta } = meta;
|
|
174
|
+
const metaKeys = Object.keys(displayMeta);
|
|
175
|
+
if (metaKeys.length > 0) {
|
|
176
|
+
formatted += ` ${JSON.stringify(displayMeta)}`;
|
|
177
|
+
}
|
|
178
|
+
return formatted;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get level label with emoji for visual identification
|
|
182
|
+
* @llm-rule WHEN: Pretty or minimal formatting needs visual level indicators
|
|
183
|
+
* @llm-rule AVOID: In production structured logs - use level text instead
|
|
184
|
+
*/
|
|
185
|
+
getLevelLabel(level) {
|
|
186
|
+
const labels = {
|
|
187
|
+
error: '❌ ERROR',
|
|
188
|
+
warn: '⚠️ WARN',
|
|
189
|
+
info: 'ℹ️ INFO',
|
|
190
|
+
debug: '🐛 DEBUG',
|
|
191
|
+
};
|
|
192
|
+
return labels[level] || level.toUpperCase();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Apply ANSI color codes for terminal output
|
|
196
|
+
* @llm-rule WHEN: Development mode or when terminal supports colors
|
|
197
|
+
* @llm-rule AVOID: In CI/CD or when colors not supported
|
|
198
|
+
*/
|
|
199
|
+
applyColor(output, level) {
|
|
200
|
+
const colors = {
|
|
201
|
+
error: '\x1b[31m', // Red
|
|
202
|
+
warn: '\x1b[33m', // Yellow
|
|
203
|
+
info: '\x1b[36m', // Cyan
|
|
204
|
+
debug: '\x1b[90m', // Gray
|
|
205
|
+
};
|
|
206
|
+
const reset = '\x1b[0m';
|
|
207
|
+
const color = colors[level] || '';
|
|
208
|
+
return `${color}${output}${reset}`;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Output to appropriate console method based on level
|
|
212
|
+
* @llm-rule WHEN: Final console output step
|
|
213
|
+
* @llm-rule AVOID: Always using console.log - different levels use different methods
|
|
214
|
+
*/
|
|
215
|
+
outputToConsole(output, level) {
|
|
216
|
+
switch (level) {
|
|
217
|
+
case 'error':
|
|
218
|
+
console.error(output);
|
|
219
|
+
break;
|
|
220
|
+
case 'warn':
|
|
221
|
+
console.warn(output);
|
|
222
|
+
break;
|
|
223
|
+
case 'debug':
|
|
224
|
+
if (typeof console.debug === 'function') {
|
|
225
|
+
console.debug(output);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
console.log(output);
|
|
229
|
+
}
|
|
230
|
+
break;
|
|
231
|
+
default:
|
|
232
|
+
console.log(output);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get numeric value for log level comparison
|
|
237
|
+
* @llm-rule WHEN: Comparing log levels for filtering
|
|
238
|
+
* @llm-rule AVOID: String comparison - numeric is more reliable
|
|
239
|
+
*/
|
|
240
|
+
getLevelValue(level) {
|
|
241
|
+
const levels = {
|
|
242
|
+
error: 0, warn: 1, info: 2, debug: 3
|
|
243
|
+
};
|
|
244
|
+
return levels[level] || 3;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Check if this transport should log the given level
|
|
248
|
+
* @llm-rule WHEN: Logger asks if transport handles this level
|
|
249
|
+
* @llm-rule AVOID: Complex level logic - simple comparison is sufficient
|
|
250
|
+
*/
|
|
251
|
+
shouldLog(level, configLevel) {
|
|
252
|
+
const levels = {
|
|
253
|
+
error: 0, warn: 1, info: 2, debug: 3
|
|
254
|
+
};
|
|
255
|
+
return levels[level] <= levels[configLevel];
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Flush pending logs (no-op for console - immediate output)
|
|
259
|
+
* @llm-rule WHEN: Logger cleanup or app shutdown
|
|
260
|
+
* @llm-rule AVOID: Expecting async behavior - console writes immediately
|
|
261
|
+
*/
|
|
262
|
+
async flush() {
|
|
263
|
+
// Console transport writes immediately, no buffering
|
|
264
|
+
return Promise.resolve();
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Close transport (no-op for console - no resources to cleanup)
|
|
268
|
+
* @llm-rule WHEN: Logger shutdown or transport cleanup
|
|
269
|
+
* @llm-rule AVOID: Expecting cleanup behavior - console has no resources
|
|
270
|
+
*/
|
|
271
|
+
async close() {
|
|
272
|
+
// Console transport has no resources to clean up
|
|
273
|
+
return Promise.resolve();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logger/transports/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database transport with automatic connection management and batch processing
|
|
3
|
+
* @module @bloomneo/appkit/logger
|
|
4
|
+
* @file src/logger/transports/database.ts
|
|
5
|
+
*
|
|
6
|
+
* @llm-rule WHEN: Need centralized log storage with database persistence
|
|
7
|
+
* @llm-rule AVOID: Manual database setup - auto-detects from DATABASE_URL and creates tables
|
|
8
|
+
* @llm-rule NOTE: Supports PostgreSQL, MySQL, SQLite with automatic batching and retry logic
|
|
9
|
+
*/
|
|
10
|
+
import type { LogEntry, Transport } from '../logger.js';
|
|
11
|
+
import type { LoggingConfig } from '../defaults.js';
|
|
12
|
+
/**
|
|
13
|
+
* Database transport with automatic connection and table management
|
|
14
|
+
*/
|
|
15
|
+
export declare class DatabaseTransport implements Transport {
|
|
16
|
+
private url;
|
|
17
|
+
private table;
|
|
18
|
+
private batchSize;
|
|
19
|
+
private minimal;
|
|
20
|
+
private client;
|
|
21
|
+
private connected;
|
|
22
|
+
private batch;
|
|
23
|
+
private flushTimer;
|
|
24
|
+
private dbType;
|
|
25
|
+
/**
|
|
26
|
+
* Creates database transport with direct environment access (like auth pattern)
|
|
27
|
+
* @llm-rule WHEN: Logger initialization with DATABASE_URL environment variable
|
|
28
|
+
* @llm-rule AVOID: Manual database configuration - environment detection handles this
|
|
29
|
+
* @llm-rule NOTE: Auto-detects database type from URL and creates appropriate connection
|
|
30
|
+
*/
|
|
31
|
+
constructor(config: LoggingConfig);
|
|
32
|
+
/**
|
|
33
|
+
* Detect database type from connection URL
|
|
34
|
+
* @llm-rule WHEN: Determining which database client to use
|
|
35
|
+
* @llm-rule AVOID: Manual database type configuration - URL detection is automatic
|
|
36
|
+
*/
|
|
37
|
+
private detectDatabaseType;
|
|
38
|
+
/**
|
|
39
|
+
* Initialize database transport with connection and table setup
|
|
40
|
+
* @llm-rule WHEN: Transport creation - establishes connection and ensures table exists
|
|
41
|
+
* @llm-rule AVOID: Calling manually - constructor handles initialization
|
|
42
|
+
*/
|
|
43
|
+
private initialize;
|
|
44
|
+
/**
|
|
45
|
+
* Write log entry to database via batching
|
|
46
|
+
* @llm-rule WHEN: Storing logs to database for centralized logging
|
|
47
|
+
* @llm-rule AVOID: Calling directly - logger routes entries automatically
|
|
48
|
+
*/
|
|
49
|
+
write(entry: LogEntry): void;
|
|
50
|
+
/**
|
|
51
|
+
* Optimize log entry for database storage
|
|
52
|
+
* @llm-rule WHEN: Reducing database storage size and improving query performance
|
|
53
|
+
* @llm-rule AVOID: Always using full entries - minimal scope reduces storage significantly
|
|
54
|
+
*/
|
|
55
|
+
private optimizeEntry;
|
|
56
|
+
/**
|
|
57
|
+
* Filter metadata for essential correlation fields
|
|
58
|
+
* @llm-rule WHEN: Keeping database size manageable while preserving correlation data
|
|
59
|
+
* @llm-rule AVOID: Storing all metadata - focus on correlation and debugging fields
|
|
60
|
+
*/
|
|
61
|
+
private filterEssentialMeta;
|
|
62
|
+
/**
|
|
63
|
+
* Connect to database with appropriate client
|
|
64
|
+
* @llm-rule WHEN: Establishing database connection based on detected type
|
|
65
|
+
* @llm-rule AVOID: Manual connection setup - auto-detection handles client selection
|
|
66
|
+
*/
|
|
67
|
+
private connect;
|
|
68
|
+
/**
|
|
69
|
+
* Connect to PostgreSQL database
|
|
70
|
+
* @llm-rule WHEN: DATABASE_URL starts with postgres:// or postgresql://
|
|
71
|
+
* @llm-rule AVOID: Manual PostgreSQL setup - uses standard pg client
|
|
72
|
+
*/
|
|
73
|
+
private connectPostgres;
|
|
74
|
+
/**
|
|
75
|
+
* Connect to MySQL database
|
|
76
|
+
* @llm-rule WHEN: DATABASE_URL starts with mysql://
|
|
77
|
+
* @llm-rule AVOID: Manual MySQL setup - uses standard mysql2 client
|
|
78
|
+
*/
|
|
79
|
+
private connectMySQL;
|
|
80
|
+
/**
|
|
81
|
+
* Connect to SQLite database
|
|
82
|
+
* @llm-rule WHEN: DATABASE_URL starts with sqlite://
|
|
83
|
+
* @llm-rule AVOID: Manual SQLite setup - uses standard sqlite3 client
|
|
84
|
+
*/
|
|
85
|
+
private connectSQLite;
|
|
86
|
+
/**
|
|
87
|
+
* Ensure logs table exists with optimized schema
|
|
88
|
+
* @llm-rule WHEN: Database connection established - creates table if needed
|
|
89
|
+
* @llm-rule AVOID: Manual table creation - automatic schema handles different databases
|
|
90
|
+
*/
|
|
91
|
+
private ensureTableExists;
|
|
92
|
+
/**
|
|
93
|
+
* Get CREATE TABLE SQL for current database type
|
|
94
|
+
* @llm-rule WHEN: Creating logs table with database-specific optimizations
|
|
95
|
+
* @llm-rule AVOID: Generic SQL - each database has optimal data types and indexes
|
|
96
|
+
*/
|
|
97
|
+
private getCreateTableSQL;
|
|
98
|
+
/**
|
|
99
|
+
* Execute database query with error handling
|
|
100
|
+
* @llm-rule WHEN: Running SQL queries against the database
|
|
101
|
+
* @llm-rule AVOID: Direct client usage - this handles database-specific differences
|
|
102
|
+
*/
|
|
103
|
+
private executeQuery;
|
|
104
|
+
/**
|
|
105
|
+
* Setup automatic batch flushing
|
|
106
|
+
* @llm-rule WHEN: Transport initialization - ensures logs are written regularly
|
|
107
|
+
* @llm-rule AVOID: Manual flushing - automatic batching improves performance
|
|
108
|
+
*/
|
|
109
|
+
private setupBatchFlush;
|
|
110
|
+
/**
|
|
111
|
+
* Flush current batch to database
|
|
112
|
+
* @llm-rule WHEN: Batch is full or timer triggers
|
|
113
|
+
* @llm-rule AVOID: Individual inserts - batching significantly improves performance
|
|
114
|
+
*/
|
|
115
|
+
private flushBatch;
|
|
116
|
+
/**
|
|
117
|
+
* Insert batch of log entries efficiently
|
|
118
|
+
* @llm-rule WHEN: Batch flush with multiple log entries
|
|
119
|
+
* @llm-rule AVOID: Individual inserts - batch inserts are much faster
|
|
120
|
+
*/
|
|
121
|
+
private insertBatch;
|
|
122
|
+
/**
|
|
123
|
+
* Insert batch for PostgreSQL with parameter placeholders
|
|
124
|
+
*/
|
|
125
|
+
private insertBatchPostgres;
|
|
126
|
+
/**
|
|
127
|
+
* Insert batch for MySQL with question mark placeholders
|
|
128
|
+
*/
|
|
129
|
+
private insertBatchMySQL;
|
|
130
|
+
/**
|
|
131
|
+
* Insert batch for SQLite with individual statements
|
|
132
|
+
*/
|
|
133
|
+
private insertBatchSQLite;
|
|
134
|
+
/**
|
|
135
|
+
* Check if this transport should log the given level
|
|
136
|
+
* @llm-rule WHEN: Logger asks if transport handles this level
|
|
137
|
+
* @llm-rule AVOID: Complex level logic - simple comparison is sufficient
|
|
138
|
+
*/
|
|
139
|
+
shouldLog(level: string, configLevel: string): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Flush pending logs to database
|
|
142
|
+
* @llm-rule WHEN: App shutdown or ensuring logs are persisted
|
|
143
|
+
* @llm-rule AVOID: Frequent flushing - impacts performance
|
|
144
|
+
*/
|
|
145
|
+
flush(): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Close database transport and cleanup resources
|
|
148
|
+
* @llm-rule WHEN: App shutdown or logger cleanup
|
|
149
|
+
* @llm-rule AVOID: Abrupt shutdown - graceful close prevents data loss
|
|
150
|
+
*/
|
|
151
|
+
close(): Promise<void>;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/logger/transports/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IAGzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,MAAM,CAA+C;IAE7D;;;;;OAKG;gBACS,MAAM,EAAE,aAAa;IAcjC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;YACW,UAAU;IAUxB;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAiB5B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiErB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;OAIG;YACW,OAAO;IAsBrB;;;;OAIG;YACW,eAAe;IAa7B;;;;OAIG;YACW,YAAY;IAS1B;;;;OAIG;YACW,aAAa;IAiB3B;;;;OAIG;YACW,iBAAiB;IAW/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyFzB;;;;OAIG;YACW,YAAY;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;YACW,UAAU;IAkBxB;;;;OAIG;YACW,WAAW;IAsBzB;;OAEG;YACW,mBAAmB;IAiBjC;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;YACW,iBAAiB;IAa/B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAOtD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B7B"}
|