@spfn/core 0.1.0-alpha.82 → 0.1.0-alpha.83
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/dist/cache/index.js +6 -136
- package/dist/cache/index.js.map +1 -1
- package/dist/codegen/generators/index.js +6 -134
- package/dist/codegen/generators/index.js.map +1 -1
- package/dist/codegen/index.js +6 -134
- package/dist/codegen/index.js.map +1 -1
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.js +41 -135
- package/dist/db/index.js.map +1 -1
- package/dist/env/index.js +6 -134
- package/dist/env/index.js.map +1 -1
- package/dist/index.js +160 -178
- package/dist/index.js.map +1 -1
- package/dist/logger/index.d.ts +90 -34
- package/dist/logger/index.js +7 -137
- package/dist/logger/index.js.map +1 -1
- package/dist/middleware/index.js +22 -138
- package/dist/middleware/index.js.map +1 -1
- package/dist/route/index.js +12 -152
- package/dist/route/index.js.map +1 -1
- package/dist/server/index.d.ts +110 -4
- package/dist/server/index.js +160 -178
- package/dist/server/index.js.map +1 -1
- package/package.json +2 -4
package/dist/logger/index.d.ts
CHANGED
|
@@ -19,76 +19,132 @@
|
|
|
19
19
|
* debug < info < warn < error < fatal
|
|
20
20
|
*/
|
|
21
21
|
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
22
|
+
/**
|
|
23
|
+
* 로그 메타데이터
|
|
24
|
+
*/
|
|
25
|
+
interface LogMetadata {
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
level: LogLevel;
|
|
28
|
+
message: string;
|
|
29
|
+
module?: string;
|
|
30
|
+
error?: Error;
|
|
31
|
+
context?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Transport 인터페이스
|
|
35
|
+
* 모든 Transport는 이 인터페이스를 구현해야 함
|
|
36
|
+
*/
|
|
37
|
+
interface Transport {
|
|
38
|
+
/**
|
|
39
|
+
* Transport 이름
|
|
40
|
+
*/
|
|
41
|
+
name: string;
|
|
42
|
+
/**
|
|
43
|
+
* 최소 로그 레벨 (이 레벨 이상만 처리)
|
|
44
|
+
*/
|
|
45
|
+
level: LogLevel;
|
|
46
|
+
/**
|
|
47
|
+
* 활성화 여부
|
|
48
|
+
*/
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 로그 처리 함수
|
|
52
|
+
*/
|
|
53
|
+
log(metadata: LogMetadata): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Transport 종료 (리소스 정리)
|
|
56
|
+
*/
|
|
57
|
+
close?(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Logger 설정
|
|
61
|
+
*/
|
|
62
|
+
interface LoggerConfig {
|
|
63
|
+
/**
|
|
64
|
+
* 기본 로그 레벨
|
|
65
|
+
*/
|
|
66
|
+
level: LogLevel;
|
|
67
|
+
/**
|
|
68
|
+
* 모듈명 (context)
|
|
69
|
+
*/
|
|
70
|
+
module?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Transport 리스트
|
|
73
|
+
*/
|
|
74
|
+
transports: Transport[];
|
|
75
|
+
}
|
|
22
76
|
|
|
23
77
|
/**
|
|
24
|
-
* Logger
|
|
78
|
+
* Logger Class
|
|
25
79
|
*
|
|
26
|
-
*
|
|
27
|
-
* Pino, Winston, Custom 등 다양한 구현체로 교체 가능
|
|
28
|
-
*
|
|
29
|
-
* ✅ 구현 완료:
|
|
30
|
-
* - LoggerAdapter 인터페이스 정의
|
|
31
|
-
* - Child logger 지원
|
|
32
|
-
* - Error + Context 지원
|
|
33
|
-
*
|
|
34
|
-
* 💡 향후 고려사항:
|
|
35
|
-
* - Winston Adapter
|
|
36
|
-
* - Bunyan Adapter
|
|
37
|
-
*
|
|
38
|
-
* 🔗 관련 파일:
|
|
39
|
-
* - src/logger/adapters/pino.ts (Pino 구현)
|
|
40
|
-
* - src/logger/adapters/custom.ts (Custom 구현)
|
|
41
|
-
* - src/logger/index.ts (Adapter 선택)
|
|
80
|
+
* Central logging class with multiple transports, child loggers, and sensitive data masking.
|
|
42
81
|
*/
|
|
43
82
|
|
|
44
83
|
/**
|
|
45
|
-
* Logger
|
|
46
|
-
*
|
|
47
|
-
* 모든 Logger 구현체는 이 인터페이스를 구현해야 함
|
|
84
|
+
* Logger class
|
|
48
85
|
*/
|
|
49
|
-
|
|
86
|
+
declare class Logger {
|
|
87
|
+
private readonly config;
|
|
88
|
+
private readonly module?;
|
|
89
|
+
constructor(config: LoggerConfig);
|
|
90
|
+
/**
|
|
91
|
+
* Get current log level
|
|
92
|
+
*/
|
|
93
|
+
get level(): LogLevel;
|
|
50
94
|
/**
|
|
51
|
-
*
|
|
95
|
+
* Create child logger (per module)
|
|
52
96
|
*/
|
|
53
|
-
child(module: string):
|
|
97
|
+
child(module: string): Logger;
|
|
54
98
|
/**
|
|
55
|
-
* Debug
|
|
99
|
+
* Debug log
|
|
56
100
|
*/
|
|
57
101
|
debug(message: string, context?: Record<string, unknown>): void;
|
|
58
102
|
/**
|
|
59
|
-
* Info
|
|
103
|
+
* Info log
|
|
60
104
|
*/
|
|
61
105
|
info(message: string, context?: Record<string, unknown>): void;
|
|
62
106
|
/**
|
|
63
|
-
* Warn
|
|
107
|
+
* Warn log
|
|
64
108
|
*/
|
|
65
109
|
warn(message: string, context?: Record<string, unknown>): void;
|
|
66
110
|
warn(message: string, error: Error, context?: Record<string, unknown>): void;
|
|
67
111
|
/**
|
|
68
|
-
* Error
|
|
112
|
+
* Error log
|
|
69
113
|
*/
|
|
70
114
|
error(message: string, context?: Record<string, unknown>): void;
|
|
71
115
|
error(message: string, error: Error, context?: Record<string, unknown>): void;
|
|
72
116
|
/**
|
|
73
|
-
* Fatal
|
|
117
|
+
* Fatal log
|
|
74
118
|
*/
|
|
75
119
|
fatal(message: string, context?: Record<string, unknown>): void;
|
|
76
120
|
fatal(message: string, error: Error, context?: Record<string, unknown>): void;
|
|
77
121
|
/**
|
|
78
|
-
*
|
|
122
|
+
* Log processing (internal)
|
|
79
123
|
*/
|
|
80
|
-
|
|
124
|
+
private log;
|
|
125
|
+
/**
|
|
126
|
+
* Process Transports
|
|
127
|
+
*/
|
|
128
|
+
private processTransports;
|
|
129
|
+
/**
|
|
130
|
+
* Transport log (error-safe)
|
|
131
|
+
*/
|
|
132
|
+
private safeTransportLog;
|
|
133
|
+
/**
|
|
134
|
+
* Close all Transports
|
|
135
|
+
*/
|
|
136
|
+
close(): Promise<void>;
|
|
81
137
|
}
|
|
82
138
|
|
|
83
139
|
/**
|
|
84
|
-
* Logger
|
|
140
|
+
* Logger Factory
|
|
85
141
|
*
|
|
86
|
-
*
|
|
142
|
+
* Creates and initializes the logger instance with configured transports
|
|
87
143
|
*/
|
|
88
144
|
|
|
89
145
|
/**
|
|
90
146
|
* Singleton Logger instance
|
|
91
147
|
*/
|
|
92
|
-
declare const logger:
|
|
148
|
+
declare const logger: Logger;
|
|
93
149
|
|
|
94
|
-
export { type LogLevel, type
|
|
150
|
+
export { type LogLevel, Logger, type Transport, logger };
|
package/dist/logger/index.js
CHANGED
|
@@ -1,74 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { existsSync, mkdirSync, accessSync, constants, writeFileSync, unlinkSync, createWriteStream, statSync, readdirSync, renameSync } from 'fs';
|
|
1
|
+
import { existsSync, mkdirSync, createWriteStream, statSync, readdirSync, renameSync, unlinkSync, accessSync, constants, writeFileSync } from 'fs';
|
|
3
2
|
import { join } from 'path';
|
|
4
3
|
|
|
5
|
-
// src/logger/adapters/pino.ts
|
|
6
|
-
var PinoAdapter = class _PinoAdapter {
|
|
7
|
-
logger;
|
|
8
|
-
constructor(config) {
|
|
9
|
-
const isDevelopment = process.env.NODE_ENV === "development";
|
|
10
|
-
const transport = isDevelopment ? {
|
|
11
|
-
target: "pino-pretty",
|
|
12
|
-
options: {
|
|
13
|
-
colorize: true,
|
|
14
|
-
translateTime: "HH:MM:ss.l",
|
|
15
|
-
ignore: "pid,hostname",
|
|
16
|
-
singleLine: false,
|
|
17
|
-
messageFormat: "{module} {msg}",
|
|
18
|
-
errorLikeObjectKeys: ["err", "error"]
|
|
19
|
-
}
|
|
20
|
-
} : void 0;
|
|
21
|
-
try {
|
|
22
|
-
this.logger = pino({
|
|
23
|
-
level: config.level,
|
|
24
|
-
// 기본 필드
|
|
25
|
-
base: config.module ? { module: config.module } : void 0,
|
|
26
|
-
// Transport (pretty print in development if available)
|
|
27
|
-
transport
|
|
28
|
-
});
|
|
29
|
-
} catch (error) {
|
|
30
|
-
this.logger = pino({
|
|
31
|
-
level: config.level,
|
|
32
|
-
base: config.module ? { module: config.module } : void 0
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
child(module) {
|
|
37
|
-
const childLogger = new _PinoAdapter({ level: this.logger.level, module });
|
|
38
|
-
childLogger.logger = this.logger.child({ module });
|
|
39
|
-
return childLogger;
|
|
40
|
-
}
|
|
41
|
-
debug(message, context) {
|
|
42
|
-
this.logger.debug(context || {}, message);
|
|
43
|
-
}
|
|
44
|
-
info(message, context) {
|
|
45
|
-
this.logger.info(context || {}, message);
|
|
46
|
-
}
|
|
47
|
-
warn(message, errorOrContext, context) {
|
|
48
|
-
if (errorOrContext instanceof Error) {
|
|
49
|
-
this.logger.warn({ err: errorOrContext, ...context }, message);
|
|
50
|
-
} else {
|
|
51
|
-
this.logger.warn(errorOrContext || {}, message);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
error(message, errorOrContext, context) {
|
|
55
|
-
if (errorOrContext instanceof Error) {
|
|
56
|
-
this.logger.error({ err: errorOrContext, ...context }, message);
|
|
57
|
-
} else {
|
|
58
|
-
this.logger.error(errorOrContext || {}, message);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
fatal(message, errorOrContext, context) {
|
|
62
|
-
if (errorOrContext instanceof Error) {
|
|
63
|
-
this.logger.fatal({ err: errorOrContext, ...context }, message);
|
|
64
|
-
} else {
|
|
65
|
-
this.logger.fatal(errorOrContext || {}, message);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async close() {
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
4
|
// src/logger/types.ts
|
|
73
5
|
var LOG_LEVEL_PRIORITY = {
|
|
74
6
|
debug: 0,
|
|
@@ -708,7 +640,7 @@ function validateConfig() {
|
|
|
708
640
|
}
|
|
709
641
|
}
|
|
710
642
|
|
|
711
|
-
// src/logger/
|
|
643
|
+
// src/logger/factory.ts
|
|
712
644
|
function initializeTransports() {
|
|
713
645
|
const transports = [];
|
|
714
646
|
const consoleConfig = getConsoleConfig();
|
|
@@ -719,77 +651,15 @@ function initializeTransports() {
|
|
|
719
651
|
}
|
|
720
652
|
return transports;
|
|
721
653
|
}
|
|
722
|
-
var CustomAdapter = class _CustomAdapter {
|
|
723
|
-
logger;
|
|
724
|
-
constructor(config) {
|
|
725
|
-
this.logger = new Logger({
|
|
726
|
-
level: config.level,
|
|
727
|
-
module: config.module,
|
|
728
|
-
transports: initializeTransports()
|
|
729
|
-
});
|
|
730
|
-
}
|
|
731
|
-
child(module) {
|
|
732
|
-
const adapter = new _CustomAdapter({ level: this.logger.level, module });
|
|
733
|
-
adapter.logger = this.logger.child(module);
|
|
734
|
-
return adapter;
|
|
735
|
-
}
|
|
736
|
-
debug(message, context) {
|
|
737
|
-
this.logger.debug(message, context);
|
|
738
|
-
}
|
|
739
|
-
info(message, context) {
|
|
740
|
-
this.logger.info(message, context);
|
|
741
|
-
}
|
|
742
|
-
warn(message, errorOrContext, context) {
|
|
743
|
-
if (errorOrContext instanceof Error) {
|
|
744
|
-
this.logger.warn(message, errorOrContext, context);
|
|
745
|
-
} else {
|
|
746
|
-
this.logger.warn(message, errorOrContext);
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
error(message, errorOrContext, context) {
|
|
750
|
-
if (errorOrContext instanceof Error) {
|
|
751
|
-
this.logger.error(message, errorOrContext, context);
|
|
752
|
-
} else {
|
|
753
|
-
this.logger.error(message, errorOrContext);
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
fatal(message, errorOrContext, context) {
|
|
757
|
-
if (errorOrContext instanceof Error) {
|
|
758
|
-
this.logger.fatal(message, errorOrContext, context);
|
|
759
|
-
} else {
|
|
760
|
-
this.logger.fatal(message, errorOrContext);
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
async close() {
|
|
764
|
-
await this.logger.close();
|
|
765
|
-
}
|
|
766
|
-
};
|
|
767
|
-
|
|
768
|
-
// src/logger/adapter-factory.ts
|
|
769
|
-
function createAdapter(type) {
|
|
770
|
-
const level = getDefaultLogLevel();
|
|
771
|
-
switch (type) {
|
|
772
|
-
case "pino":
|
|
773
|
-
return new PinoAdapter({ level });
|
|
774
|
-
case "custom":
|
|
775
|
-
return new CustomAdapter({ level });
|
|
776
|
-
default:
|
|
777
|
-
return new PinoAdapter({ level });
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
function getAdapterType() {
|
|
781
|
-
const adapterEnv = process.env.LOGGER_ADAPTER;
|
|
782
|
-
if (adapterEnv === "custom" || adapterEnv === "pino") {
|
|
783
|
-
return adapterEnv;
|
|
784
|
-
}
|
|
785
|
-
return "pino";
|
|
786
|
-
}
|
|
787
654
|
function initializeLogger() {
|
|
788
655
|
validateConfig();
|
|
789
|
-
return
|
|
656
|
+
return new Logger({
|
|
657
|
+
level: getDefaultLogLevel(),
|
|
658
|
+
transports: initializeTransports()
|
|
659
|
+
});
|
|
790
660
|
}
|
|
791
661
|
var logger = initializeLogger();
|
|
792
662
|
|
|
793
|
-
export { logger };
|
|
663
|
+
export { Logger, logger };
|
|
794
664
|
//# sourceMappingURL=index.js.map
|
|
795
665
|
//# sourceMappingURL=index.js.map
|