@faapi/faapi 6.10.0 → 6.10.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.
- package/dist/cli/index.js +45 -30
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +46 -30
- package/dist/index.js.map +1 -1
- package/dist/testing.js +32 -18
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2374,51 +2374,64 @@ function assertLogLevel(value, source) {
|
|
|
2374
2374
|
);
|
|
2375
2375
|
}
|
|
2376
2376
|
}
|
|
2377
|
-
var
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2377
|
+
var LOGGING_STATE_KEY = /* @__PURE__ */ Symbol.for("faapi.logger.state");
|
|
2378
|
+
function createDefaultLoggingState() {
|
|
2379
|
+
return {
|
|
2380
|
+
level: null,
|
|
2381
|
+
consoleLevel: null,
|
|
2382
|
+
sink: null,
|
|
2383
|
+
fileSink: null,
|
|
2384
|
+
stdout: true,
|
|
2385
|
+
accessLog: true,
|
|
2386
|
+
disabled: false
|
|
2387
|
+
};
|
|
2388
|
+
}
|
|
2389
|
+
function getLoggingState() {
|
|
2390
|
+
const g = globalThis;
|
|
2391
|
+
let state2 = g[LOGGING_STATE_KEY];
|
|
2392
|
+
if (!state2) {
|
|
2393
|
+
state2 = createDefaultLoggingState();
|
|
2394
|
+
g[LOGGING_STATE_KEY] = state2;
|
|
2395
|
+
}
|
|
2396
|
+
return state2;
|
|
2397
|
+
}
|
|
2386
2398
|
function configureLogging(config) {
|
|
2399
|
+
const state2 = getLoggingState();
|
|
2387
2400
|
const objectConfig = typeof config === "object" ? config : {};
|
|
2388
2401
|
if (objectConfig.sink && objectConfig.dir) {
|
|
2389
2402
|
throw new Error(
|
|
2390
2403
|
"[faapi] config.log.sink and config.log.dir are mutually exclusive: pick one output pipeline (custom sink OR built-in file logs)."
|
|
2391
2404
|
);
|
|
2392
2405
|
}
|
|
2393
|
-
void
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2406
|
+
void state2.fileSink?.close();
|
|
2407
|
+
state2.disabled = config === false;
|
|
2408
|
+
state2.sink = objectConfig.sink ?? null;
|
|
2409
|
+
state2.accessLog = objectConfig.accessLog ?? true;
|
|
2410
|
+
state2.stdout = objectConfig.stdout ?? true;
|
|
2411
|
+
state2.fileSink = objectConfig.dir ? createFileLogSink({ dir: objectConfig.dir, splitByLevel: objectConfig.splitByLevel }) : null;
|
|
2399
2412
|
if (objectConfig.consoleLevel !== void 0) {
|
|
2400
2413
|
if (objectConfig.consoleLevel !== false) {
|
|
2401
2414
|
assertLogLevel(objectConfig.consoleLevel, "config.log.consoleLevel");
|
|
2402
2415
|
}
|
|
2403
|
-
|
|
2416
|
+
state2.consoleLevel = objectConfig.consoleLevel;
|
|
2404
2417
|
} else {
|
|
2405
|
-
|
|
2418
|
+
state2.consoleLevel = null;
|
|
2406
2419
|
}
|
|
2407
2420
|
if (objectConfig.level !== void 0) {
|
|
2408
2421
|
assertLogLevel(objectConfig.level, "config.log.level");
|
|
2409
|
-
|
|
2422
|
+
state2.level = objectConfig.level;
|
|
2410
2423
|
} else if (process.env.LOG_LEVEL !== void 0) {
|
|
2411
2424
|
assertLogLevel(process.env.LOG_LEVEL, "LOG_LEVEL env");
|
|
2412
|
-
|
|
2425
|
+
state2.level = process.env.LOG_LEVEL;
|
|
2413
2426
|
} else {
|
|
2414
|
-
|
|
2427
|
+
state2.level = null;
|
|
2415
2428
|
}
|
|
2416
2429
|
}
|
|
2417
2430
|
function pipelineThreshold() {
|
|
2418
|
-
return
|
|
2431
|
+
return getLoggingState().level ?? void 0;
|
|
2419
2432
|
}
|
|
2420
2433
|
function consoleThreshold() {
|
|
2421
|
-
return
|
|
2434
|
+
return getLoggingState().consoleLevel ?? "info";
|
|
2422
2435
|
}
|
|
2423
2436
|
function belowThreshold(level, threshold) {
|
|
2424
2437
|
return threshold !== void 0 && LEVEL_RANK[level] < LEVEL_RANK[threshold];
|
|
@@ -2438,15 +2451,16 @@ function consoleDispatch(entry) {
|
|
|
2438
2451
|
console[CONSOLE_METHOD[entry.level]](formatEntry(entry));
|
|
2439
2452
|
}
|
|
2440
2453
|
function globalDispatch(entry) {
|
|
2441
|
-
|
|
2454
|
+
const state2 = getLoggingState();
|
|
2455
|
+
if (state2.disabled) return;
|
|
2442
2456
|
const pipeThreshold = pipelineThreshold();
|
|
2443
|
-
if (
|
|
2444
|
-
if (!belowThreshold(entry.level, pipeThreshold))
|
|
2457
|
+
if (state2.sink) {
|
|
2458
|
+
if (!belowThreshold(entry.level, pipeThreshold)) state2.sink(entry);
|
|
2445
2459
|
return;
|
|
2446
2460
|
}
|
|
2447
|
-
if (
|
|
2448
|
-
if (!belowThreshold(entry.level, pipeThreshold))
|
|
2449
|
-
if (
|
|
2461
|
+
if (state2.fileSink) {
|
|
2462
|
+
if (!belowThreshold(entry.level, pipeThreshold)) state2.fileSink.write(entry);
|
|
2463
|
+
if (state2.stdout) consoleDispatch(entry);
|
|
2450
2464
|
return;
|
|
2451
2465
|
}
|
|
2452
2466
|
consoleDispatch(entry);
|
|
@@ -2455,10 +2469,12 @@ function writeLogEntry(entry) {
|
|
|
2455
2469
|
globalDispatch(entry);
|
|
2456
2470
|
}
|
|
2457
2471
|
function flushLogging() {
|
|
2458
|
-
|
|
2472
|
+
const state2 = getLoggingState();
|
|
2473
|
+
return state2.fileSink ? state2.fileSink.flush() : Promise.resolve();
|
|
2459
2474
|
}
|
|
2460
2475
|
function isAccessLogEnabled() {
|
|
2461
|
-
|
|
2476
|
+
const state2 = getLoggingState();
|
|
2477
|
+
return !state2.disabled && state2.accessLog;
|
|
2462
2478
|
}
|
|
2463
2479
|
function createLogger(scope, options) {
|
|
2464
2480
|
const baseScope = scope;
|