@spfn/core 0.1.0-alpha.82 → 0.1.0-alpha.84
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.d.ts +5 -0
- package/dist/codegen/index.js +21 -145
- 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/events/index.d.ts +183 -0
- package/dist/events/index.js +77 -0
- package/dist/events/index.js.map +1 -0
- package/dist/index.js +174 -180
- 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 +174 -180
- package/dist/server/index.js.map +1 -1
- package/package.json +7 -4
package/dist/db/index.d.ts
CHANGED
|
@@ -189,6 +189,7 @@ declare function setDatabase(write: PostgresJsDatabase<Record<string, unknown>>
|
|
|
189
189
|
* - DB_MONITORING_ENABLED (enable query monitoring, default: true in dev, false in prod)
|
|
190
190
|
* - DB_MONITORING_SLOW_THRESHOLD (slow query threshold in ms, default: 1000)
|
|
191
191
|
* - DB_MONITORING_LOG_QUERIES (log actual SQL queries, default: false)
|
|
192
|
+
* - DB_DEBUG_TRACE (enable detailed getDatabase() call tracing with caller info, default: false)
|
|
192
193
|
*
|
|
193
194
|
* Configuration priority:
|
|
194
195
|
* 1. options parameter (ServerConfig)
|
package/dist/db/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
2
|
-
import
|
|
3
|
-
import { existsSync, mkdirSync, accessSync, constants, writeFileSync, unlinkSync, createWriteStream, statSync, readdirSync, renameSync, readFileSync } from 'fs';
|
|
2
|
+
import { existsSync, mkdirSync, createWriteStream, statSync, readdirSync, renameSync, unlinkSync, accessSync, constants, writeFileSync, readFileSync } from 'fs';
|
|
4
3
|
import { join, dirname, basename } from 'path';
|
|
5
4
|
import { config } from 'dotenv';
|
|
6
5
|
import postgres from 'postgres';
|
|
@@ -11,71 +10,6 @@ import { createMiddleware } from 'hono/factory';
|
|
|
11
10
|
import { eq, and } from 'drizzle-orm';
|
|
12
11
|
|
|
13
12
|
// src/db/manager/factory.ts
|
|
14
|
-
var PinoAdapter = class _PinoAdapter {
|
|
15
|
-
logger;
|
|
16
|
-
constructor(config) {
|
|
17
|
-
const isDevelopment = process.env.NODE_ENV === "development";
|
|
18
|
-
const transport = isDevelopment ? {
|
|
19
|
-
target: "pino-pretty",
|
|
20
|
-
options: {
|
|
21
|
-
colorize: true,
|
|
22
|
-
translateTime: "HH:MM:ss.l",
|
|
23
|
-
ignore: "pid,hostname",
|
|
24
|
-
singleLine: false,
|
|
25
|
-
messageFormat: "{module} {msg}",
|
|
26
|
-
errorLikeObjectKeys: ["err", "error"]
|
|
27
|
-
}
|
|
28
|
-
} : void 0;
|
|
29
|
-
try {
|
|
30
|
-
this.logger = pino({
|
|
31
|
-
level: config.level,
|
|
32
|
-
// 기본 필드
|
|
33
|
-
base: config.module ? { module: config.module } : void 0,
|
|
34
|
-
// Transport (pretty print in development if available)
|
|
35
|
-
transport
|
|
36
|
-
});
|
|
37
|
-
} catch (error) {
|
|
38
|
-
this.logger = pino({
|
|
39
|
-
level: config.level,
|
|
40
|
-
base: config.module ? { module: config.module } : void 0
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
child(module) {
|
|
45
|
-
const childLogger = new _PinoAdapter({ level: this.logger.level, module });
|
|
46
|
-
childLogger.logger = this.logger.child({ module });
|
|
47
|
-
return childLogger;
|
|
48
|
-
}
|
|
49
|
-
debug(message, context) {
|
|
50
|
-
this.logger.debug(context || {}, message);
|
|
51
|
-
}
|
|
52
|
-
info(message, context) {
|
|
53
|
-
this.logger.info(context || {}, message);
|
|
54
|
-
}
|
|
55
|
-
warn(message, errorOrContext, context) {
|
|
56
|
-
if (errorOrContext instanceof Error) {
|
|
57
|
-
this.logger.warn({ err: errorOrContext, ...context }, message);
|
|
58
|
-
} else {
|
|
59
|
-
this.logger.warn(errorOrContext || {}, message);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
error(message, errorOrContext, context) {
|
|
63
|
-
if (errorOrContext instanceof Error) {
|
|
64
|
-
this.logger.error({ err: errorOrContext, ...context }, message);
|
|
65
|
-
} else {
|
|
66
|
-
this.logger.error(errorOrContext || {}, message);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
fatal(message, errorOrContext, context) {
|
|
70
|
-
if (errorOrContext instanceof Error) {
|
|
71
|
-
this.logger.fatal({ err: errorOrContext, ...context }, message);
|
|
72
|
-
} else {
|
|
73
|
-
this.logger.fatal(errorOrContext || {}, message);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async close() {
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
13
|
|
|
80
14
|
// src/logger/types.ts
|
|
81
15
|
var LOG_LEVEL_PRIORITY = {
|
|
@@ -716,7 +650,7 @@ function validateConfig() {
|
|
|
716
650
|
}
|
|
717
651
|
}
|
|
718
652
|
|
|
719
|
-
// src/logger/
|
|
653
|
+
// src/logger/factory.ts
|
|
720
654
|
function initializeTransports() {
|
|
721
655
|
const transports = [];
|
|
722
656
|
const consoleConfig = getConsoleConfig();
|
|
@@ -727,74 +661,12 @@ function initializeTransports() {
|
|
|
727
661
|
}
|
|
728
662
|
return transports;
|
|
729
663
|
}
|
|
730
|
-
var CustomAdapter = class _CustomAdapter {
|
|
731
|
-
logger;
|
|
732
|
-
constructor(config) {
|
|
733
|
-
this.logger = new Logger({
|
|
734
|
-
level: config.level,
|
|
735
|
-
module: config.module,
|
|
736
|
-
transports: initializeTransports()
|
|
737
|
-
});
|
|
738
|
-
}
|
|
739
|
-
child(module) {
|
|
740
|
-
const adapter = new _CustomAdapter({ level: this.logger.level, module });
|
|
741
|
-
adapter.logger = this.logger.child(module);
|
|
742
|
-
return adapter;
|
|
743
|
-
}
|
|
744
|
-
debug(message, context) {
|
|
745
|
-
this.logger.debug(message, context);
|
|
746
|
-
}
|
|
747
|
-
info(message, context) {
|
|
748
|
-
this.logger.info(message, context);
|
|
749
|
-
}
|
|
750
|
-
warn(message, errorOrContext, context) {
|
|
751
|
-
if (errorOrContext instanceof Error) {
|
|
752
|
-
this.logger.warn(message, errorOrContext, context);
|
|
753
|
-
} else {
|
|
754
|
-
this.logger.warn(message, errorOrContext);
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
error(message, errorOrContext, context) {
|
|
758
|
-
if (errorOrContext instanceof Error) {
|
|
759
|
-
this.logger.error(message, errorOrContext, context);
|
|
760
|
-
} else {
|
|
761
|
-
this.logger.error(message, errorOrContext);
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
fatal(message, errorOrContext, context) {
|
|
765
|
-
if (errorOrContext instanceof Error) {
|
|
766
|
-
this.logger.fatal(message, errorOrContext, context);
|
|
767
|
-
} else {
|
|
768
|
-
this.logger.fatal(message, errorOrContext);
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
async close() {
|
|
772
|
-
await this.logger.close();
|
|
773
|
-
}
|
|
774
|
-
};
|
|
775
|
-
|
|
776
|
-
// src/logger/adapter-factory.ts
|
|
777
|
-
function createAdapter(type) {
|
|
778
|
-
const level = getDefaultLogLevel();
|
|
779
|
-
switch (type) {
|
|
780
|
-
case "pino":
|
|
781
|
-
return new PinoAdapter({ level });
|
|
782
|
-
case "custom":
|
|
783
|
-
return new CustomAdapter({ level });
|
|
784
|
-
default:
|
|
785
|
-
return new PinoAdapter({ level });
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
function getAdapterType() {
|
|
789
|
-
const adapterEnv = process.env.LOGGER_ADAPTER;
|
|
790
|
-
if (adapterEnv === "custom" || adapterEnv === "pino") {
|
|
791
|
-
return adapterEnv;
|
|
792
|
-
}
|
|
793
|
-
return "pino";
|
|
794
|
-
}
|
|
795
664
|
function initializeLogger() {
|
|
796
665
|
validateConfig();
|
|
797
|
-
return
|
|
666
|
+
return new Logger({
|
|
667
|
+
level: getDefaultLogLevel(),
|
|
668
|
+
transports: initializeTransports()
|
|
669
|
+
});
|
|
798
670
|
}
|
|
799
671
|
var logger = initializeLogger();
|
|
800
672
|
|
|
@@ -1494,10 +1366,44 @@ function stopHealthCheck() {
|
|
|
1494
1366
|
|
|
1495
1367
|
// src/db/manager/manager.ts
|
|
1496
1368
|
var dbLogger4 = logger.child("database");
|
|
1369
|
+
function getCallerInfo() {
|
|
1370
|
+
try {
|
|
1371
|
+
const stack = new Error().stack;
|
|
1372
|
+
if (!stack) return void 0;
|
|
1373
|
+
const lines = stack.split("\n");
|
|
1374
|
+
for (let i = 3; i < lines.length; i++) {
|
|
1375
|
+
const line = lines[i];
|
|
1376
|
+
if (!line.includes("node_modules") && !line.includes("/db/manager/")) {
|
|
1377
|
+
const match = line.match(/\((.+):(\d+):(\d+)\)/) || line.match(/at (.+):(\d+):(\d+)/);
|
|
1378
|
+
if (match) {
|
|
1379
|
+
const fullPath = match[1];
|
|
1380
|
+
const parts = fullPath.split("/");
|
|
1381
|
+
const srcIndex = parts.lastIndexOf("src");
|
|
1382
|
+
if (srcIndex !== -1) {
|
|
1383
|
+
const relativePath = parts.slice(srcIndex).join("/");
|
|
1384
|
+
return `${relativePath}:${match[2]}`;
|
|
1385
|
+
}
|
|
1386
|
+
return `${fullPath}:${match[2]}`;
|
|
1387
|
+
}
|
|
1388
|
+
break;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
} catch {
|
|
1392
|
+
}
|
|
1393
|
+
return void 0;
|
|
1394
|
+
}
|
|
1497
1395
|
function getDatabase(type) {
|
|
1498
1396
|
const writeInst = getWriteInstance();
|
|
1499
1397
|
const readInst = getReadInstance();
|
|
1500
|
-
|
|
1398
|
+
if (process.env.DB_DEBUG_TRACE === "true") {
|
|
1399
|
+
const caller = getCallerInfo();
|
|
1400
|
+
dbLogger4.debug("getDatabase() called", {
|
|
1401
|
+
type: type || "write",
|
|
1402
|
+
hasWrite: !!writeInst,
|
|
1403
|
+
hasRead: !!readInst,
|
|
1404
|
+
caller
|
|
1405
|
+
});
|
|
1406
|
+
}
|
|
1501
1407
|
if (type === "read") {
|
|
1502
1408
|
return readInst ?? writeInst;
|
|
1503
1409
|
}
|