@vlian/framework 1.2.54 → 1.2.56
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/analytics.umd.js +1 -1
- package/dist/core/initialization/initialization.cjs.map +1 -1
- package/dist/core/initialization/initialization.js +3 -3
- package/dist/core/initialization/initialization.js.map +1 -1
- package/dist/core/router/validation/RouterConfigValidator.d.ts +2 -2
- package/dist/core/router/validation/schema.d.ts +3 -3
- package/dist/index.umd.js +497 -281
- package/dist/index.umd.js.map +1 -1
- package/dist/kernel/manager/i18n/I18nManager.cjs +93 -0
- package/dist/kernel/manager/i18n/I18nManager.cjs.map +1 -0
- package/dist/kernel/manager/i18n/I18nManager.d.ts +15 -0
- package/dist/kernel/manager/i18n/I18nManager.js +83 -0
- package/dist/kernel/manager/i18n/I18nManager.js.map +1 -0
- package/dist/kernel/manager/i18n/i18n.persistence.cjs +59 -0
- package/dist/kernel/manager/i18n/i18n.persistence.cjs.map +1 -0
- package/dist/kernel/manager/i18n/i18n.persistence.d.ts +5 -0
- package/dist/kernel/manager/i18n/i18n.persistence.js +38 -0
- package/dist/kernel/manager/i18n/i18n.persistence.js.map +1 -0
- package/dist/kernel/manager/i18n/i18n.schema.cjs +88 -0
- package/dist/kernel/manager/i18n/i18n.schema.cjs.map +1 -0
- package/dist/kernel/manager/i18n/i18n.schema.d.ts +6 -0
- package/dist/kernel/manager/i18n/i18n.schema.js +64 -0
- package/dist/kernel/manager/i18n/i18n.schema.js.map +1 -0
- package/dist/kernel/manager/i18n/index.cjs +13 -0
- package/dist/kernel/manager/i18n/index.cjs.map +1 -0
- package/dist/kernel/manager/i18n/index.d.ts +1 -0
- package/dist/kernel/manager/i18n/index.js +3 -0
- package/dist/kernel/manager/i18n/index.js.map +1 -0
- package/dist/kernel/manager/i18nManager.cjs +2 -77
- package/dist/kernel/manager/i18nManager.cjs.map +1 -1
- package/dist/kernel/manager/i18nManager.d.ts +1 -13
- package/dist/kernel/manager/i18nManager.js +1 -76
- package/dist/kernel/manager/i18nManager.js.map +1 -1
- package/dist/kernel/manager/logger/LoggerManager.cjs +109 -0
- package/dist/kernel/manager/logger/LoggerManager.cjs.map +1 -0
- package/dist/kernel/manager/logger/LoggerManager.d.ts +21 -0
- package/dist/kernel/manager/logger/LoggerManager.js +99 -0
- package/dist/kernel/manager/logger/LoggerManager.js.map +1 -0
- package/dist/kernel/manager/logger/index.cjs +13 -0
- package/dist/kernel/manager/logger/index.cjs.map +1 -0
- package/dist/kernel/manager/logger/index.d.ts +1 -0
- package/dist/kernel/manager/logger/index.js +3 -0
- package/dist/kernel/manager/logger/index.js.map +1 -0
- package/dist/kernel/manager/logger/logger.persistence.cjs +64 -0
- package/dist/kernel/manager/logger/logger.persistence.cjs.map +1 -0
- package/dist/kernel/manager/logger/logger.persistence.d.ts +6 -0
- package/dist/kernel/manager/logger/logger.persistence.js +43 -0
- package/dist/kernel/manager/logger/logger.persistence.js.map +1 -0
- package/dist/kernel/manager/logger/logger.schema.cjs +76 -0
- package/dist/kernel/manager/logger/logger.schema.cjs.map +1 -0
- package/dist/kernel/manager/logger/logger.schema.d.ts +8 -0
- package/dist/kernel/manager/logger/logger.schema.js +55 -0
- package/dist/kernel/manager/logger/logger.schema.js.map +1 -0
- package/dist/kernel/manager/loggerManager.cjs +2 -103
- package/dist/kernel/manager/loggerManager.cjs.map +1 -1
- package/dist/kernel/manager/loggerManager.d.ts +1 -18
- package/dist/kernel/manager/loggerManager.js +1 -102
- package/dist/kernel/manager/loggerManager.js.map +1 -1
- package/dist/kernel/manager/theme/ThemeManager.cjs +86 -0
- package/dist/kernel/manager/theme/ThemeManager.cjs.map +1 -0
- package/dist/kernel/manager/theme/ThemeManager.d.ts +16 -0
- package/dist/kernel/manager/theme/ThemeManager.js +76 -0
- package/dist/kernel/manager/theme/ThemeManager.js.map +1 -0
- package/dist/kernel/manager/theme/index.cjs +13 -0
- package/dist/kernel/manager/theme/index.cjs.map +1 -0
- package/dist/kernel/manager/theme/index.d.ts +1 -0
- package/dist/kernel/manager/theme/index.js +3 -0
- package/dist/kernel/manager/theme/index.js.map +1 -0
- package/dist/kernel/manager/theme/theme.dom.cjs +63 -0
- package/dist/kernel/manager/theme/theme.dom.cjs.map +1 -0
- package/dist/kernel/manager/theme/theme.dom.d.ts +3 -0
- package/dist/kernel/manager/theme/theme.dom.js +45 -0
- package/dist/kernel/manager/theme/theme.dom.js.map +1 -0
- package/dist/kernel/manager/theme/theme.persistence.cjs +59 -0
- package/dist/kernel/manager/theme/theme.persistence.cjs.map +1 -0
- package/dist/kernel/manager/theme/theme.persistence.d.ts +5 -0
- package/dist/kernel/manager/theme/theme.persistence.js +38 -0
- package/dist/kernel/manager/theme/theme.persistence.js.map +1 -0
- package/dist/kernel/manager/theme/theme.schema.cjs +124 -0
- package/dist/kernel/manager/theme/theme.schema.cjs.map +1 -0
- package/dist/kernel/manager/theme/theme.schema.d.ts +7 -0
- package/dist/kernel/manager/theme/theme.schema.js +97 -0
- package/dist/kernel/manager/theme/theme.schema.js.map +1 -0
- package/dist/kernel/manager/themeManager.cjs +2 -95
- package/dist/kernel/manager/themeManager.cjs.map +1 -1
- package/dist/kernel/manager/themeManager.d.ts +1 -15
- package/dist/kernel/manager/themeManager.js +1 -94
- package/dist/kernel/manager/themeManager.js.map +1 -1
- package/dist/kernel/types.d.ts +3 -3
- package/dist/kernel/types.js.map +1 -1
- package/dist/library/locale/index.cjs +8 -34
- package/dist/library/locale/index.cjs.map +1 -1
- package/dist/library/locale/index.d.ts +4 -4
- package/dist/library/locale/index.js +5 -34
- package/dist/library/locale/index.js.map +1 -1
- package/dist/state.umd.js +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/kernel/manager/i18nManager.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/kernel/manager/i18nManager.ts"],"sourcesContent":["export { I18nManager } from './i18n';\n"],"names":["I18nManager"],"mappings":";;;;+BAASA;;;eAAAA,iBAAW;;;sBAAQ"}
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
type I18nListener = (next: I18nSnapshot, prev: I18nSnapshot) => void;
|
|
3
|
-
export declare class I18nManager implements KernelManager<I18nSnapshot> {
|
|
4
|
-
private snapshot;
|
|
5
|
-
private config;
|
|
6
|
-
private listeners;
|
|
7
|
-
initialize(context: KernelManagerContext): Promise<void>;
|
|
8
|
-
getSnapshot(): I18nSnapshot;
|
|
9
|
-
subscribe(listener: I18nListener): () => void;
|
|
10
|
-
private emit;
|
|
11
|
-
setLocale(locale: I18nSnapshot['locale']): Promise<void>;
|
|
12
|
-
}
|
|
13
|
-
export {};
|
|
1
|
+
export { I18nManager } from './i18n';
|
|
@@ -1,78 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
if (key in obj) {
|
|
3
|
-
Object.defineProperty(obj, key, {
|
|
4
|
-
value: value,
|
|
5
|
-
enumerable: true,
|
|
6
|
-
configurable: true,
|
|
7
|
-
writable: true
|
|
8
|
-
});
|
|
9
|
-
} else {
|
|
10
|
-
obj[key] = value;
|
|
11
|
-
}
|
|
12
|
-
return obj;
|
|
13
|
-
}
|
|
14
|
-
import { setupI18n, setLang } from "../../library";
|
|
15
|
-
import { DEFAULT_CONFIG, DEFAULT_I18N } from "../constants";
|
|
16
|
-
import { readPersistedValue, writePersistedValue } from "./persistence";
|
|
17
|
-
export class I18nManager {
|
|
18
|
-
async initialize(context) {
|
|
19
|
-
this.config = context.config.i18n;
|
|
20
|
-
this.snapshot = {
|
|
21
|
-
...DEFAULT_I18N,
|
|
22
|
-
...this.config.initial || {}
|
|
23
|
-
};
|
|
24
|
-
const persisted = await readPersistedValue(this.config.persistence);
|
|
25
|
-
if (persisted !== null) {
|
|
26
|
-
try {
|
|
27
|
-
const parsed = JSON.parse(persisted);
|
|
28
|
-
this.snapshot = {
|
|
29
|
-
...this.snapshot,
|
|
30
|
-
...parsed
|
|
31
|
-
};
|
|
32
|
-
} catch {
|
|
33
|
-
// ignore parse errors
|
|
34
|
-
}
|
|
35
|
-
} else {
|
|
36
|
-
await writePersistedValue(this.config.persistence, JSON.stringify(this.snapshot));
|
|
37
|
-
}
|
|
38
|
-
await setupI18n(this.snapshot.resources || {});
|
|
39
|
-
setLang(this.snapshot.locale);
|
|
40
|
-
}
|
|
41
|
-
getSnapshot() {
|
|
42
|
-
return {
|
|
43
|
-
...this.snapshot
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
subscribe(listener) {
|
|
47
|
-
this.listeners.add(listener);
|
|
48
|
-
return ()=>{
|
|
49
|
-
this.listeners.delete(listener);
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
emit(next, prev) {
|
|
53
|
-
this.listeners.forEach((listener)=>{
|
|
54
|
-
listener({
|
|
55
|
-
...next
|
|
56
|
-
}, {
|
|
57
|
-
...prev
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
async setLocale(locale) {
|
|
62
|
-
const prev = this.snapshot;
|
|
63
|
-
this.snapshot = {
|
|
64
|
-
...this.snapshot,
|
|
65
|
-
locale
|
|
66
|
-
};
|
|
67
|
-
setLang(locale);
|
|
68
|
-
await writePersistedValue(this.config.persistence, JSON.stringify(this.snapshot));
|
|
69
|
-
this.emit(this.snapshot, prev);
|
|
70
|
-
}
|
|
71
|
-
constructor(){
|
|
72
|
-
_define_property(this, "snapshot", DEFAULT_I18N);
|
|
73
|
-
_define_property(this, "config", DEFAULT_CONFIG.i18n);
|
|
74
|
-
_define_property(this, "listeners", new Set());
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
export { I18nManager } from "./i18n";
|
|
77
2
|
|
|
78
3
|
//# sourceMappingURL=i18nManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/kernel/manager/i18nManager.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/kernel/manager/i18nManager.ts"],"sourcesContent":["export { I18nManager } from './i18n';\n"],"names":["I18nManager"],"mappings":"AAAA,SAASA,WAAW,QAAQ,SAAS"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "LoggerManager", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return LoggerManager;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _logger = require("@vlian/logger");
|
|
12
|
+
const _constants = require("../../constants");
|
|
13
|
+
const _loggerschema = require("./logger.schema");
|
|
14
|
+
const _loggerpersistence = require("./logger.persistence");
|
|
15
|
+
function _define_property(obj, key, value) {
|
|
16
|
+
if (key in obj) {
|
|
17
|
+
Object.defineProperty(obj, key, {
|
|
18
|
+
value: value,
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true
|
|
22
|
+
});
|
|
23
|
+
} else {
|
|
24
|
+
obj[key] = value;
|
|
25
|
+
}
|
|
26
|
+
return obj;
|
|
27
|
+
}
|
|
28
|
+
let LoggerManager = class LoggerManager {
|
|
29
|
+
async initialize(context) {
|
|
30
|
+
this.config = context.config.logger;
|
|
31
|
+
this.cacheManager = context.cacheManager;
|
|
32
|
+
const initialSnapshot = (0, _loggerschema.normalizeLoggerSnapshot)({
|
|
33
|
+
level: this.config.level
|
|
34
|
+
}, {
|
|
35
|
+
level: _logger.LogLevel.INFO
|
|
36
|
+
});
|
|
37
|
+
this.snapshot = await (0, _loggerpersistence.loadLoggerFromCache)(this.cacheManager, this.config.persistence, initialSnapshot);
|
|
38
|
+
_logger.logger.setLevel(this.snapshot.level);
|
|
39
|
+
this.initialized = true;
|
|
40
|
+
}
|
|
41
|
+
subscribe(listener) {
|
|
42
|
+
this.listeners.add(listener);
|
|
43
|
+
return ()=>{
|
|
44
|
+
this.listeners.delete(listener);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
debug(...args) {
|
|
48
|
+
_logger.logger.debug(...args);
|
|
49
|
+
}
|
|
50
|
+
info(...args) {
|
|
51
|
+
_logger.logger.info(...args);
|
|
52
|
+
}
|
|
53
|
+
warn(...args) {
|
|
54
|
+
_logger.logger.warn(...args);
|
|
55
|
+
}
|
|
56
|
+
error(...args) {
|
|
57
|
+
_logger.logger.error(...args);
|
|
58
|
+
}
|
|
59
|
+
async setLevel(level) {
|
|
60
|
+
this.ensureInitialized();
|
|
61
|
+
const prevSnapshot = this.snapshot;
|
|
62
|
+
const nextSnapshot = (0, _loggerschema.normalizeLoggerSnapshot)({
|
|
63
|
+
level
|
|
64
|
+
}, prevSnapshot);
|
|
65
|
+
if ((0, _loggerschema.isLoggerEqual)(prevSnapshot, nextSnapshot)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.snapshot = nextSnapshot;
|
|
69
|
+
_logger.logger.setLevel(this.snapshot.level);
|
|
70
|
+
if (this.cacheManager) {
|
|
71
|
+
await (0, _loggerpersistence.saveLoggerToCache)(this.cacheManager, this.config.persistence, this.snapshot);
|
|
72
|
+
}
|
|
73
|
+
this.emit(this.snapshot, prevSnapshot);
|
|
74
|
+
}
|
|
75
|
+
getSnapshot() {
|
|
76
|
+
return {
|
|
77
|
+
...this.snapshot
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
ensureInitialized() {
|
|
81
|
+
if (!this.initialized) {
|
|
82
|
+
throw new Error('LoggerManager must be initialized before use.');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
emit(next, prev) {
|
|
86
|
+
for (const listener of this.listeners){
|
|
87
|
+
try {
|
|
88
|
+
listener({
|
|
89
|
+
...next
|
|
90
|
+
}, {
|
|
91
|
+
...prev
|
|
92
|
+
});
|
|
93
|
+
} catch {
|
|
94
|
+
// Keep notifying remaining listeners even if one fails.
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
constructor(){
|
|
99
|
+
_define_property(this, "snapshot", {
|
|
100
|
+
level: _logger.LogLevel.INFO
|
|
101
|
+
});
|
|
102
|
+
_define_property(this, "config", _constants.DEFAULT_CONFIG.logger);
|
|
103
|
+
_define_property(this, "listeners", new Set());
|
|
104
|
+
_define_property(this, "cacheManager", null);
|
|
105
|
+
_define_property(this, "initialized", false);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=LoggerManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/LoggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport type { Logger } from '@vlian/logger';\nimport type { StorageInstance } from '@vlian/utils';\nimport { DEFAULT_CONFIG } from '../../constants';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../../types';\nimport {\n isLoggerEqual,\n normalizeLoggerSnapshot,\n type LoggerListener,\n type LoggerSnapshot,\n} from './logger.schema';\nimport { loadLoggerFromCache, saveLoggerToCache } from './logger.persistence';\n\nexport class LoggerManager implements KernelManager<LoggerSnapshot> {\n private snapshot: LoggerSnapshot = { level: LogLevel.INFO };\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n private listeners = new Set<LoggerListener>();\n private cacheManager: StorageInstance | null = null;\n private initialized = false;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n this.cacheManager = context.cacheManager;\n\n const initialSnapshot = normalizeLoggerSnapshot(\n { level: this.config.level },\n { level: LogLevel.INFO }\n );\n\n this.snapshot = await loadLoggerFromCache(this.cacheManager, this.config.persistence, initialSnapshot);\n logger.setLevel(this.snapshot.level);\n this.initialized = true;\n }\n\n public subscribe(listener: LoggerListener): () => void {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n public debug(...args: Parameters<Logger['debug']>): void {\n logger.debug(...args);\n }\n\n public info(...args: Parameters<Logger['info']>): void {\n logger.info(...args);\n }\n\n public warn(...args: Parameters<Logger['warn']>): void {\n logger.warn(...args);\n }\n\n public error(...args: Parameters<Logger['error']>): void {\n logger.error(...args);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.ensureInitialized();\n\n const prevSnapshot = this.snapshot;\n const nextSnapshot = normalizeLoggerSnapshot({ level }, prevSnapshot);\n\n if (isLoggerEqual(prevSnapshot, nextSnapshot)) {\n return;\n }\n\n this.snapshot = nextSnapshot;\n logger.setLevel(this.snapshot.level);\n\n if (this.cacheManager) {\n await saveLoggerToCache(this.cacheManager, this.config.persistence, this.snapshot);\n }\n\n this.emit(this.snapshot, prevSnapshot);\n }\n\n public getSnapshot(): LoggerSnapshot {\n return { ...this.snapshot };\n }\n\n private ensureInitialized(): void {\n if (!this.initialized) {\n throw new Error('LoggerManager must be initialized before use.');\n }\n }\n\n private emit(next: LoggerSnapshot, prev: LoggerSnapshot): void {\n for (const listener of this.listeners) {\n try {\n listener({ ...next }, { ...prev });\n } catch {\n // Keep notifying remaining listeners even if one fails.\n }\n }\n }\n}\n"],"names":["LoggerManager","initialize","context","config","logger","cacheManager","initialSnapshot","normalizeLoggerSnapshot","level","LogLevel","INFO","snapshot","loadLoggerFromCache","persistence","setLevel","initialized","subscribe","listener","listeners","add","delete","debug","args","info","warn","error","ensureInitialized","prevSnapshot","nextSnapshot","isLoggerEqual","saveLoggerToCache","emit","getSnapshot","Error","next","prev","DEFAULT_CONFIG","Set"],"mappings":";;;;+BAaaA;;;eAAAA;;;wBAboB;2BAGF;8BAOxB;mCACgD;;;;;;;;;;;;;;AAEhD,IAAA,AAAMA,gBAAN,MAAMA;IAOX,MAAaC,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAACC,MAAM;QACnC,IAAI,CAACC,YAAY,GAAGH,QAAQG,YAAY;QAExC,MAAMC,kBAAkBC,IAAAA,qCAAuB,EAC7C;YAAEC,OAAO,IAAI,CAACL,MAAM,CAACK,KAAK;QAAC,GAC3B;YAAEA,OAAOC,gBAAQ,CAACC,IAAI;QAAC;QAGzB,IAAI,CAACC,QAAQ,GAAG,MAAMC,IAAAA,sCAAmB,EAAC,IAAI,CAACP,YAAY,EAAE,IAAI,CAACF,MAAM,CAACU,WAAW,EAAEP;QACtFF,cAAM,CAACU,QAAQ,CAAC,IAAI,CAACH,QAAQ,CAACH,KAAK;QACnC,IAAI,CAACO,WAAW,GAAG;IACrB;IAEOC,UAAUC,QAAwB,EAAc;QACrD,IAAI,CAACC,SAAS,CAACC,GAAG,CAACF;QAEnB,OAAO;YACL,IAAI,CAACC,SAAS,CAACE,MAAM,CAACH;QACxB;IACF;IAEOI,MAAM,GAAGC,IAAiC,EAAQ;QACvDlB,cAAM,CAACiB,KAAK,IAAIC;IAClB;IAEOC,KAAK,GAAGD,IAAgC,EAAQ;QACrDlB,cAAM,CAACmB,IAAI,IAAID;IACjB;IAEOE,KAAK,GAAGF,IAAgC,EAAQ;QACrDlB,cAAM,CAACoB,IAAI,IAAIF;IACjB;IAEOG,MAAM,GAAGH,IAAiC,EAAQ;QACvDlB,cAAM,CAACqB,KAAK,IAAIH;IAClB;IAEA,MAAaR,SAASN,KAAe,EAAiB;QACpD,IAAI,CAACkB,iBAAiB;QAEtB,MAAMC,eAAe,IAAI,CAAChB,QAAQ;QAClC,MAAMiB,eAAerB,IAAAA,qCAAuB,EAAC;YAAEC;QAAM,GAAGmB;QAExD,IAAIE,IAAAA,2BAAa,EAACF,cAAcC,eAAe;YAC7C;QACF;QAEA,IAAI,CAACjB,QAAQ,GAAGiB;QAChBxB,cAAM,CAACU,QAAQ,CAAC,IAAI,CAACH,QAAQ,CAACH,KAAK;QAEnC,IAAI,IAAI,CAACH,YAAY,EAAE;YACrB,MAAMyB,IAAAA,oCAAiB,EAAC,IAAI,CAACzB,YAAY,EAAE,IAAI,CAACF,MAAM,CAACU,WAAW,EAAE,IAAI,CAACF,QAAQ;QACnF;QAEA,IAAI,CAACoB,IAAI,CAAC,IAAI,CAACpB,QAAQ,EAAEgB;IAC3B;IAEOK,cAA8B;QACnC,OAAO;YAAE,GAAG,IAAI,CAACrB,QAAQ;QAAC;IAC5B;IAEQe,oBAA0B;QAChC,IAAI,CAAC,IAAI,CAACX,WAAW,EAAE;YACrB,MAAM,IAAIkB,MAAM;QAClB;IACF;IAEQF,KAAKG,IAAoB,EAAEC,IAAoB,EAAQ;QAC7D,KAAK,MAAMlB,YAAY,IAAI,CAACC,SAAS,CAAE;YACrC,IAAI;gBACFD,SAAS;oBAAE,GAAGiB,IAAI;gBAAC,GAAG;oBAAE,GAAGC,IAAI;gBAAC;YAClC,EAAE,OAAM;YACN,wDAAwD;YAC1D;QACF;IACF;;QAlFA,uBAAQxB,YAA2B;YAAEH,OAAOC,gBAAQ,CAACC,IAAI;QAAC;QAC1D,uBAAQP,UAAiCiC,yBAAc,CAAChC,MAAM;QAC9D,uBAAQc,aAAY,IAAImB;QACxB,uBAAQhC,gBAAuC;QAC/C,uBAAQU,eAAc;;AA+ExB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LogLevel } from '@vlian/logger';
|
|
2
|
+
import type { Logger } from '@vlian/logger';
|
|
3
|
+
import type { KernelManager, KernelManagerContext } from '../../types';
|
|
4
|
+
import { type LoggerListener, type LoggerSnapshot } from './logger.schema';
|
|
5
|
+
export declare class LoggerManager implements KernelManager<LoggerSnapshot> {
|
|
6
|
+
private snapshot;
|
|
7
|
+
private config;
|
|
8
|
+
private listeners;
|
|
9
|
+
private cacheManager;
|
|
10
|
+
private initialized;
|
|
11
|
+
initialize(context: KernelManagerContext): Promise<void>;
|
|
12
|
+
subscribe(listener: LoggerListener): () => void;
|
|
13
|
+
debug(...args: Parameters<Logger['debug']>): void;
|
|
14
|
+
info(...args: Parameters<Logger['info']>): void;
|
|
15
|
+
warn(...args: Parameters<Logger['warn']>): void;
|
|
16
|
+
error(...args: Parameters<Logger['error']>): void;
|
|
17
|
+
setLevel(level: LogLevel): Promise<void>;
|
|
18
|
+
getSnapshot(): LoggerSnapshot;
|
|
19
|
+
private ensureInitialized;
|
|
20
|
+
private emit;
|
|
21
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
import { logger, LogLevel } from "@vlian/logger";
|
|
15
|
+
import { DEFAULT_CONFIG } from "../../constants";
|
|
16
|
+
import { isLoggerEqual, normalizeLoggerSnapshot } from "./logger.schema";
|
|
17
|
+
import { loadLoggerFromCache, saveLoggerToCache } from "./logger.persistence";
|
|
18
|
+
export class LoggerManager {
|
|
19
|
+
async initialize(context) {
|
|
20
|
+
this.config = context.config.logger;
|
|
21
|
+
this.cacheManager = context.cacheManager;
|
|
22
|
+
const initialSnapshot = normalizeLoggerSnapshot({
|
|
23
|
+
level: this.config.level
|
|
24
|
+
}, {
|
|
25
|
+
level: LogLevel.INFO
|
|
26
|
+
});
|
|
27
|
+
this.snapshot = await loadLoggerFromCache(this.cacheManager, this.config.persistence, initialSnapshot);
|
|
28
|
+
logger.setLevel(this.snapshot.level);
|
|
29
|
+
this.initialized = true;
|
|
30
|
+
}
|
|
31
|
+
subscribe(listener) {
|
|
32
|
+
this.listeners.add(listener);
|
|
33
|
+
return ()=>{
|
|
34
|
+
this.listeners.delete(listener);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
debug(...args) {
|
|
38
|
+
logger.debug(...args);
|
|
39
|
+
}
|
|
40
|
+
info(...args) {
|
|
41
|
+
logger.info(...args);
|
|
42
|
+
}
|
|
43
|
+
warn(...args) {
|
|
44
|
+
logger.warn(...args);
|
|
45
|
+
}
|
|
46
|
+
error(...args) {
|
|
47
|
+
logger.error(...args);
|
|
48
|
+
}
|
|
49
|
+
async setLevel(level) {
|
|
50
|
+
this.ensureInitialized();
|
|
51
|
+
const prevSnapshot = this.snapshot;
|
|
52
|
+
const nextSnapshot = normalizeLoggerSnapshot({
|
|
53
|
+
level
|
|
54
|
+
}, prevSnapshot);
|
|
55
|
+
if (isLoggerEqual(prevSnapshot, nextSnapshot)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.snapshot = nextSnapshot;
|
|
59
|
+
logger.setLevel(this.snapshot.level);
|
|
60
|
+
if (this.cacheManager) {
|
|
61
|
+
await saveLoggerToCache(this.cacheManager, this.config.persistence, this.snapshot);
|
|
62
|
+
}
|
|
63
|
+
this.emit(this.snapshot, prevSnapshot);
|
|
64
|
+
}
|
|
65
|
+
getSnapshot() {
|
|
66
|
+
return {
|
|
67
|
+
...this.snapshot
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
ensureInitialized() {
|
|
71
|
+
if (!this.initialized) {
|
|
72
|
+
throw new Error('LoggerManager must be initialized before use.');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
emit(next, prev) {
|
|
76
|
+
for (const listener of this.listeners){
|
|
77
|
+
try {
|
|
78
|
+
listener({
|
|
79
|
+
...next
|
|
80
|
+
}, {
|
|
81
|
+
...prev
|
|
82
|
+
});
|
|
83
|
+
} catch {
|
|
84
|
+
// Keep notifying remaining listeners even if one fails.
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
constructor(){
|
|
89
|
+
_define_property(this, "snapshot", {
|
|
90
|
+
level: LogLevel.INFO
|
|
91
|
+
});
|
|
92
|
+
_define_property(this, "config", DEFAULT_CONFIG.logger);
|
|
93
|
+
_define_property(this, "listeners", new Set());
|
|
94
|
+
_define_property(this, "cacheManager", null);
|
|
95
|
+
_define_property(this, "initialized", false);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=LoggerManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/LoggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport type { Logger } from '@vlian/logger';\nimport type { StorageInstance } from '@vlian/utils';\nimport { DEFAULT_CONFIG } from '../../constants';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../../types';\nimport {\n isLoggerEqual,\n normalizeLoggerSnapshot,\n type LoggerListener,\n type LoggerSnapshot,\n} from './logger.schema';\nimport { loadLoggerFromCache, saveLoggerToCache } from './logger.persistence';\n\nexport class LoggerManager implements KernelManager<LoggerSnapshot> {\n private snapshot: LoggerSnapshot = { level: LogLevel.INFO };\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n private listeners = new Set<LoggerListener>();\n private cacheManager: StorageInstance | null = null;\n private initialized = false;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n this.cacheManager = context.cacheManager;\n\n const initialSnapshot = normalizeLoggerSnapshot(\n { level: this.config.level },\n { level: LogLevel.INFO }\n );\n\n this.snapshot = await loadLoggerFromCache(this.cacheManager, this.config.persistence, initialSnapshot);\n logger.setLevel(this.snapshot.level);\n this.initialized = true;\n }\n\n public subscribe(listener: LoggerListener): () => void {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n public debug(...args: Parameters<Logger['debug']>): void {\n logger.debug(...args);\n }\n\n public info(...args: Parameters<Logger['info']>): void {\n logger.info(...args);\n }\n\n public warn(...args: Parameters<Logger['warn']>): void {\n logger.warn(...args);\n }\n\n public error(...args: Parameters<Logger['error']>): void {\n logger.error(...args);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.ensureInitialized();\n\n const prevSnapshot = this.snapshot;\n const nextSnapshot = normalizeLoggerSnapshot({ level }, prevSnapshot);\n\n if (isLoggerEqual(prevSnapshot, nextSnapshot)) {\n return;\n }\n\n this.snapshot = nextSnapshot;\n logger.setLevel(this.snapshot.level);\n\n if (this.cacheManager) {\n await saveLoggerToCache(this.cacheManager, this.config.persistence, this.snapshot);\n }\n\n this.emit(this.snapshot, prevSnapshot);\n }\n\n public getSnapshot(): LoggerSnapshot {\n return { ...this.snapshot };\n }\n\n private ensureInitialized(): void {\n if (!this.initialized) {\n throw new Error('LoggerManager must be initialized before use.');\n }\n }\n\n private emit(next: LoggerSnapshot, prev: LoggerSnapshot): void {\n for (const listener of this.listeners) {\n try {\n listener({ ...next }, { ...prev });\n } catch {\n // Keep notifying remaining listeners even if one fails.\n }\n }\n }\n}\n"],"names":["logger","LogLevel","DEFAULT_CONFIG","isLoggerEqual","normalizeLoggerSnapshot","loadLoggerFromCache","saveLoggerToCache","LoggerManager","initialize","context","config","cacheManager","initialSnapshot","level","INFO","snapshot","persistence","setLevel","initialized","subscribe","listener","listeners","add","delete","debug","args","info","warn","error","ensureInitialized","prevSnapshot","nextSnapshot","emit","getSnapshot","Error","next","prev","Set"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,gBAAgB;AAGjD,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,SACEC,aAAa,EACbC,uBAAuB,QAGlB,kBAAkB;AACzB,SAASC,mBAAmB,EAAEC,iBAAiB,QAAQ,uBAAuB;AAE9E,OAAO,MAAMC;IAOX,MAAaC,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAACV,MAAM;QACnC,IAAI,CAACW,YAAY,GAAGF,QAAQE,YAAY;QAExC,MAAMC,kBAAkBR,wBACtB;YAAES,OAAO,IAAI,CAACH,MAAM,CAACG,KAAK;QAAC,GAC3B;YAAEA,OAAOZ,SAASa,IAAI;QAAC;QAGzB,IAAI,CAACC,QAAQ,GAAG,MAAMV,oBAAoB,IAAI,CAACM,YAAY,EAAE,IAAI,CAACD,MAAM,CAACM,WAAW,EAAEJ;QACtFZ,OAAOiB,QAAQ,CAAC,IAAI,CAACF,QAAQ,CAACF,KAAK;QACnC,IAAI,CAACK,WAAW,GAAG;IACrB;IAEOC,UAAUC,QAAwB,EAAc;QACrD,IAAI,CAACC,SAAS,CAACC,GAAG,CAACF;QAEnB,OAAO;YACL,IAAI,CAACC,SAAS,CAACE,MAAM,CAACH;QACxB;IACF;IAEOI,MAAM,GAAGC,IAAiC,EAAQ;QACvDzB,OAAOwB,KAAK,IAAIC;IAClB;IAEOC,KAAK,GAAGD,IAAgC,EAAQ;QACrDzB,OAAO0B,IAAI,IAAID;IACjB;IAEOE,KAAK,GAAGF,IAAgC,EAAQ;QACrDzB,OAAO2B,IAAI,IAAIF;IACjB;IAEOG,MAAM,GAAGH,IAAiC,EAAQ;QACvDzB,OAAO4B,KAAK,IAAIH;IAClB;IAEA,MAAaR,SAASJ,KAAe,EAAiB;QACpD,IAAI,CAACgB,iBAAiB;QAEtB,MAAMC,eAAe,IAAI,CAACf,QAAQ;QAClC,MAAMgB,eAAe3B,wBAAwB;YAAES;QAAM,GAAGiB;QAExD,IAAI3B,cAAc2B,cAAcC,eAAe;YAC7C;QACF;QAEA,IAAI,CAAChB,QAAQ,GAAGgB;QAChB/B,OAAOiB,QAAQ,CAAC,IAAI,CAACF,QAAQ,CAACF,KAAK;QAEnC,IAAI,IAAI,CAACF,YAAY,EAAE;YACrB,MAAML,kBAAkB,IAAI,CAACK,YAAY,EAAE,IAAI,CAACD,MAAM,CAACM,WAAW,EAAE,IAAI,CAACD,QAAQ;QACnF;QAEA,IAAI,CAACiB,IAAI,CAAC,IAAI,CAACjB,QAAQ,EAAEe;IAC3B;IAEOG,cAA8B;QACnC,OAAO;YAAE,GAAG,IAAI,CAAClB,QAAQ;QAAC;IAC5B;IAEQc,oBAA0B;QAChC,IAAI,CAAC,IAAI,CAACX,WAAW,EAAE;YACrB,MAAM,IAAIgB,MAAM;QAClB;IACF;IAEQF,KAAKG,IAAoB,EAAEC,IAAoB,EAAQ;QAC7D,KAAK,MAAMhB,YAAY,IAAI,CAACC,SAAS,CAAE;YACrC,IAAI;gBACFD,SAAS;oBAAE,GAAGe,IAAI;gBAAC,GAAG;oBAAE,GAAGC,IAAI;gBAAC;YAClC,EAAE,OAAM;YACN,wDAAwD;YAC1D;QACF;IACF;;QAlFA,uBAAQrB,YAA2B;YAAEF,OAAOZ,SAASa,IAAI;QAAC;QAC1D,uBAAQJ,UAAiCR,eAAeF,MAAM;QAC9D,uBAAQqB,aAAY,IAAIgB;QACxB,uBAAQ1B,gBAAuC;QAC/C,uBAAQO,eAAc;;AA+ExB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "LoggerManager", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _LoggerManager.LoggerManager;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _LoggerManager = require("./LoggerManager");
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/index.ts"],"sourcesContent":["export { LoggerManager } from './LoggerManager';\n"],"names":["LoggerManager"],"mappings":";;;;+BAASA;;;eAAAA,4BAAa;;;+BAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LoggerManager } from './LoggerManager';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/index.ts"],"sourcesContent":["export { LoggerManager } from './LoggerManager';\n"],"names":["LoggerManager"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get DEFAULT_LOGGER_CACHE_KEY () {
|
|
13
|
+
return DEFAULT_LOGGER_CACHE_KEY;
|
|
14
|
+
},
|
|
15
|
+
get loadLoggerFromCache () {
|
|
16
|
+
return loadLoggerFromCache;
|
|
17
|
+
},
|
|
18
|
+
get saveLoggerToCache () {
|
|
19
|
+
return saveLoggerToCache;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _loggerschema = require("./logger.schema");
|
|
23
|
+
const DEFAULT_LOGGER_CACHE_KEY = 'vlian:kernel:logger-level';
|
|
24
|
+
function resolvePersistenceContext(persistence) {
|
|
25
|
+
if (persistence?.enabled !== true) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
key: persistence.key || DEFAULT_LOGGER_CACHE_KEY
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async function loadLoggerFromCache(cacheManager, persistence, fallback) {
|
|
33
|
+
const persistenceContext = resolvePersistenceContext(persistence);
|
|
34
|
+
if (!persistenceContext) {
|
|
35
|
+
return {
|
|
36
|
+
...fallback
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const cached = await cacheManager.get(persistenceContext.key, {
|
|
41
|
+
defaultValue: fallback
|
|
42
|
+
});
|
|
43
|
+
return (0, _loggerschema.normalizeLoggerSnapshot)(cached, fallback);
|
|
44
|
+
} catch {
|
|
45
|
+
return {
|
|
46
|
+
...fallback
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function saveLoggerToCache(cacheManager, persistence, snapshot) {
|
|
51
|
+
const persistenceContext = resolvePersistenceContext(persistence);
|
|
52
|
+
if (!persistenceContext) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
await cacheManager.set(persistenceContext.key, {
|
|
57
|
+
...snapshot
|
|
58
|
+
});
|
|
59
|
+
} catch {
|
|
60
|
+
// Ignore persistence failures and keep logger updates in memory.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=logger.persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/logger.persistence.ts"],"sourcesContent":["import type { StorageInstance } from '@vlian/utils';\nimport type { PersistenceOptions } from '../../types';\nimport { normalizeLoggerSnapshot, type LoggerSnapshot } from './logger.schema';\n\nexport const DEFAULT_LOGGER_CACHE_KEY = 'vlian:kernel:logger-level';\n\ntype ResolvedPersistenceContext = {\n key: string;\n};\n\nfunction resolvePersistenceContext(\n persistence: PersistenceOptions | undefined\n): ResolvedPersistenceContext | null {\n if (persistence?.enabled !== true) {\n return null;\n }\n\n return {\n key: persistence.key || DEFAULT_LOGGER_CACHE_KEY,\n };\n}\n\nexport async function loadLoggerFromCache(\n cacheManager: StorageInstance,\n persistence: PersistenceOptions | undefined,\n fallback: LoggerSnapshot\n): Promise<LoggerSnapshot> {\n const persistenceContext = resolvePersistenceContext(persistence);\n\n if (!persistenceContext) {\n return { ...fallback };\n }\n\n try {\n const cached = await cacheManager.get<LoggerSnapshot | string | number>(persistenceContext.key, {\n defaultValue: fallback,\n });\n return normalizeLoggerSnapshot(cached, fallback);\n } catch {\n return { ...fallback };\n }\n}\n\nexport async function saveLoggerToCache(\n cacheManager: StorageInstance,\n persistence: PersistenceOptions | undefined,\n snapshot: LoggerSnapshot\n): Promise<void> {\n const persistenceContext = resolvePersistenceContext(persistence);\n\n if (!persistenceContext) {\n return;\n }\n\n try {\n await cacheManager.set(persistenceContext.key, { ...snapshot });\n } catch {\n // Ignore persistence failures and keep logger updates in memory.\n }\n}\n"],"names":["DEFAULT_LOGGER_CACHE_KEY","loadLoggerFromCache","saveLoggerToCache","resolvePersistenceContext","persistence","enabled","key","cacheManager","fallback","persistenceContext","cached","get","defaultValue","normalizeLoggerSnapshot","snapshot","set"],"mappings":";;;;;;;;;;;QAIaA;eAAAA;;QAkBSC;eAAAA;;QAqBAC;eAAAA;;;8BAzCuC;AAEtD,MAAMF,2BAA2B;AAMxC,SAASG,0BACPC,WAA2C;IAE3C,IAAIA,aAAaC,YAAY,MAAM;QACjC,OAAO;IACT;IAEA,OAAO;QACLC,KAAKF,YAAYE,GAAG,IAAIN;IAC1B;AACF;AAEO,eAAeC,oBACpBM,YAA6B,EAC7BH,WAA2C,EAC3CI,QAAwB;IAExB,MAAMC,qBAAqBN,0BAA0BC;IAErD,IAAI,CAACK,oBAAoB;QACvB,OAAO;YAAE,GAAGD,QAAQ;QAAC;IACvB;IAEA,IAAI;QACF,MAAME,SAAS,MAAMH,aAAaI,GAAG,CAAmCF,mBAAmBH,GAAG,EAAE;YAC9FM,cAAcJ;QAChB;QACA,OAAOK,IAAAA,qCAAuB,EAACH,QAAQF;IACzC,EAAE,OAAM;QACN,OAAO;YAAE,GAAGA,QAAQ;QAAC;IACvB;AACF;AAEO,eAAeN,kBACpBK,YAA6B,EAC7BH,WAA2C,EAC3CU,QAAwB;IAExB,MAAML,qBAAqBN,0BAA0BC;IAErD,IAAI,CAACK,oBAAoB;QACvB;IACF;IAEA,IAAI;QACF,MAAMF,aAAaQ,GAAG,CAACN,mBAAmBH,GAAG,EAAE;YAAE,GAAGQ,QAAQ;QAAC;IAC/D,EAAE,OAAM;IACN,iEAAiE;IACnE;AACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { StorageInstance } from '@vlian/utils';
|
|
2
|
+
import type { PersistenceOptions } from '../../types';
|
|
3
|
+
import { type LoggerSnapshot } from './logger.schema';
|
|
4
|
+
export declare const DEFAULT_LOGGER_CACHE_KEY = "vlian:kernel:logger-level";
|
|
5
|
+
export declare function loadLoggerFromCache(cacheManager: StorageInstance, persistence: PersistenceOptions | undefined, fallback: LoggerSnapshot): Promise<LoggerSnapshot>;
|
|
6
|
+
export declare function saveLoggerToCache(cacheManager: StorageInstance, persistence: PersistenceOptions | undefined, snapshot: LoggerSnapshot): Promise<void>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { normalizeLoggerSnapshot } from "./logger.schema";
|
|
2
|
+
export const DEFAULT_LOGGER_CACHE_KEY = 'vlian:kernel:logger-level';
|
|
3
|
+
function resolvePersistenceContext(persistence) {
|
|
4
|
+
if (persistence?.enabled !== true) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
key: persistence.key || DEFAULT_LOGGER_CACHE_KEY
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export async function loadLoggerFromCache(cacheManager, persistence, fallback) {
|
|
12
|
+
const persistenceContext = resolvePersistenceContext(persistence);
|
|
13
|
+
if (!persistenceContext) {
|
|
14
|
+
return {
|
|
15
|
+
...fallback
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const cached = await cacheManager.get(persistenceContext.key, {
|
|
20
|
+
defaultValue: fallback
|
|
21
|
+
});
|
|
22
|
+
return normalizeLoggerSnapshot(cached, fallback);
|
|
23
|
+
} catch {
|
|
24
|
+
return {
|
|
25
|
+
...fallback
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function saveLoggerToCache(cacheManager, persistence, snapshot) {
|
|
30
|
+
const persistenceContext = resolvePersistenceContext(persistence);
|
|
31
|
+
if (!persistenceContext) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
await cacheManager.set(persistenceContext.key, {
|
|
36
|
+
...snapshot
|
|
37
|
+
});
|
|
38
|
+
} catch {
|
|
39
|
+
// Ignore persistence failures and keep logger updates in memory.
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=logger.persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/logger.persistence.ts"],"sourcesContent":["import type { StorageInstance } from '@vlian/utils';\nimport type { PersistenceOptions } from '../../types';\nimport { normalizeLoggerSnapshot, type LoggerSnapshot } from './logger.schema';\n\nexport const DEFAULT_LOGGER_CACHE_KEY = 'vlian:kernel:logger-level';\n\ntype ResolvedPersistenceContext = {\n key: string;\n};\n\nfunction resolvePersistenceContext(\n persistence: PersistenceOptions | undefined\n): ResolvedPersistenceContext | null {\n if (persistence?.enabled !== true) {\n return null;\n }\n\n return {\n key: persistence.key || DEFAULT_LOGGER_CACHE_KEY,\n };\n}\n\nexport async function loadLoggerFromCache(\n cacheManager: StorageInstance,\n persistence: PersistenceOptions | undefined,\n fallback: LoggerSnapshot\n): Promise<LoggerSnapshot> {\n const persistenceContext = resolvePersistenceContext(persistence);\n\n if (!persistenceContext) {\n return { ...fallback };\n }\n\n try {\n const cached = await cacheManager.get<LoggerSnapshot | string | number>(persistenceContext.key, {\n defaultValue: fallback,\n });\n return normalizeLoggerSnapshot(cached, fallback);\n } catch {\n return { ...fallback };\n }\n}\n\nexport async function saveLoggerToCache(\n cacheManager: StorageInstance,\n persistence: PersistenceOptions | undefined,\n snapshot: LoggerSnapshot\n): Promise<void> {\n const persistenceContext = resolvePersistenceContext(persistence);\n\n if (!persistenceContext) {\n return;\n }\n\n try {\n await cacheManager.set(persistenceContext.key, { ...snapshot });\n } catch {\n // Ignore persistence failures and keep logger updates in memory.\n }\n}\n"],"names":["normalizeLoggerSnapshot","DEFAULT_LOGGER_CACHE_KEY","resolvePersistenceContext","persistence","enabled","key","loadLoggerFromCache","cacheManager","fallback","persistenceContext","cached","get","defaultValue","saveLoggerToCache","snapshot","set"],"mappings":"AAEA,SAASA,uBAAuB,QAA6B,kBAAkB;AAE/E,OAAO,MAAMC,2BAA2B,4BAA4B;AAMpE,SAASC,0BACPC,WAA2C;IAE3C,IAAIA,aAAaC,YAAY,MAAM;QACjC,OAAO;IACT;IAEA,OAAO;QACLC,KAAKF,YAAYE,GAAG,IAAIJ;IAC1B;AACF;AAEA,OAAO,eAAeK,oBACpBC,YAA6B,EAC7BJ,WAA2C,EAC3CK,QAAwB;IAExB,MAAMC,qBAAqBP,0BAA0BC;IAErD,IAAI,CAACM,oBAAoB;QACvB,OAAO;YAAE,GAAGD,QAAQ;QAAC;IACvB;IAEA,IAAI;QACF,MAAME,SAAS,MAAMH,aAAaI,GAAG,CAAmCF,mBAAmBJ,GAAG,EAAE;YAC9FO,cAAcJ;QAChB;QACA,OAAOR,wBAAwBU,QAAQF;IACzC,EAAE,OAAM;QACN,OAAO;YAAE,GAAGA,QAAQ;QAAC;IACvB;AACF;AAEA,OAAO,eAAeK,kBACpBN,YAA6B,EAC7BJ,WAA2C,EAC3CW,QAAwB;IAExB,MAAML,qBAAqBP,0BAA0BC;IAErD,IAAI,CAACM,oBAAoB;QACvB;IACF;IAEA,IAAI;QACF,MAAMF,aAAaQ,GAAG,CAACN,mBAAmBJ,GAAG,EAAE;YAAE,GAAGS,QAAQ;QAAC;IAC/D,EAAE,OAAM;IACN,iEAAiE;IACnE;AACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get isLoggerEqual () {
|
|
13
|
+
return isLoggerEqual;
|
|
14
|
+
},
|
|
15
|
+
get normalizeLogLevel () {
|
|
16
|
+
return normalizeLogLevel;
|
|
17
|
+
},
|
|
18
|
+
get normalizeLoggerSnapshot () {
|
|
19
|
+
return normalizeLoggerSnapshot;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _logger = require("@vlian/logger");
|
|
23
|
+
function normalizeLogLevel(value, fallback) {
|
|
24
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
25
|
+
switch(value){
|
|
26
|
+
case _logger.LogLevel.DEBUG:
|
|
27
|
+
case _logger.LogLevel.INFO:
|
|
28
|
+
case _logger.LogLevel.WARN:
|
|
29
|
+
case _logger.LogLevel.ERROR:
|
|
30
|
+
case _logger.LogLevel.NONE:
|
|
31
|
+
return value;
|
|
32
|
+
default:
|
|
33
|
+
return fallback;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (typeof value !== 'string') {
|
|
37
|
+
return fallback;
|
|
38
|
+
}
|
|
39
|
+
const normalized = value.trim();
|
|
40
|
+
if (!normalized) {
|
|
41
|
+
return fallback;
|
|
42
|
+
}
|
|
43
|
+
if (/^\d+$/.test(normalized)) {
|
|
44
|
+
return normalizeLogLevel(Number(normalized), fallback);
|
|
45
|
+
}
|
|
46
|
+
switch(normalized.toUpperCase()){
|
|
47
|
+
case 'DEBUG':
|
|
48
|
+
return _logger.LogLevel.DEBUG;
|
|
49
|
+
case 'INFO':
|
|
50
|
+
return _logger.LogLevel.INFO;
|
|
51
|
+
case 'WARN':
|
|
52
|
+
return _logger.LogLevel.WARN;
|
|
53
|
+
case 'ERROR':
|
|
54
|
+
return _logger.LogLevel.ERROR;
|
|
55
|
+
case 'NONE':
|
|
56
|
+
return _logger.LogLevel.NONE;
|
|
57
|
+
default:
|
|
58
|
+
return fallback;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function normalizeLoggerSnapshot(value, fallback) {
|
|
62
|
+
if (typeof value === 'number' || typeof value === 'string') {
|
|
63
|
+
return {
|
|
64
|
+
level: normalizeLogLevel(value, fallback.level)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const source = value && typeof value === 'object' ? value : {};
|
|
68
|
+
return {
|
|
69
|
+
level: normalizeLogLevel(source.level, fallback.level)
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function isLoggerEqual(left, right) {
|
|
73
|
+
return left.level === right.level;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=logger.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/kernel/manager/logger/logger.schema.ts"],"sourcesContent":["import { LogLevel } from '@vlian/logger';\n\nexport type LoggerSnapshot = {\n level: LogLevel;\n};\n\nexport type LoggerListener = (next: LoggerSnapshot, prev: LoggerSnapshot) => void;\n\nexport function normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel {\n if (typeof value === 'number' && Number.isInteger(value)) {\n switch (value) {\n case LogLevel.DEBUG:\n case LogLevel.INFO:\n case LogLevel.WARN:\n case LogLevel.ERROR:\n case LogLevel.NONE:\n return value;\n default:\n return fallback;\n }\n }\n\n if (typeof value !== 'string') {\n return fallback;\n }\n\n const normalized = value.trim();\n if (!normalized) {\n return fallback;\n }\n\n if (/^\\d+$/.test(normalized)) {\n return normalizeLogLevel(Number(normalized), fallback);\n }\n\n switch (normalized.toUpperCase()) {\n case 'DEBUG':\n return LogLevel.DEBUG;\n case 'INFO':\n return LogLevel.INFO;\n case 'WARN':\n return LogLevel.WARN;\n case 'ERROR':\n return LogLevel.ERROR;\n case 'NONE':\n return LogLevel.NONE;\n default:\n return fallback;\n }\n}\n\nexport function normalizeLoggerSnapshot(\n value: unknown,\n fallback: LoggerSnapshot\n): LoggerSnapshot {\n if (typeof value === 'number' || typeof value === 'string') {\n return {\n level: normalizeLogLevel(value, fallback.level),\n };\n }\n\n const source = value && typeof value === 'object' ? (value as Partial<LoggerSnapshot>) : {};\n\n return {\n level: normalizeLogLevel(source.level, fallback.level),\n };\n}\n\nexport function isLoggerEqual(left: LoggerSnapshot, right: LoggerSnapshot): boolean {\n return left.level === right.level;\n}\n"],"names":["isLoggerEqual","normalizeLogLevel","normalizeLoggerSnapshot","value","fallback","Number","isInteger","LogLevel","DEBUG","INFO","WARN","ERROR","NONE","normalized","trim","test","toUpperCase","level","source","left","right"],"mappings":";;;;;;;;;;;QAoEgBA;eAAAA;;QA5DAC;eAAAA;;QA2CAC;eAAAA;;;wBAnDS;AAQlB,SAASD,kBAAkBE,KAAc,EAAEC,QAAkB;IAClE,IAAI,OAAOD,UAAU,YAAYE,OAAOC,SAAS,CAACH,QAAQ;QACxD,OAAQA;YACN,KAAKI,gBAAQ,CAACC,KAAK;YACnB,KAAKD,gBAAQ,CAACE,IAAI;YAClB,KAAKF,gBAAQ,CAACG,IAAI;YAClB,KAAKH,gBAAQ,CAACI,KAAK;YACnB,KAAKJ,gBAAQ,CAACK,IAAI;gBAChB,OAAOT;YACT;gBACE,OAAOC;QACX;IACF;IAEA,IAAI,OAAOD,UAAU,UAAU;QAC7B,OAAOC;IACT;IAEA,MAAMS,aAAaV,MAAMW,IAAI;IAC7B,IAAI,CAACD,YAAY;QACf,OAAOT;IACT;IAEA,IAAI,QAAQW,IAAI,CAACF,aAAa;QAC5B,OAAOZ,kBAAkBI,OAAOQ,aAAaT;IAC/C;IAEA,OAAQS,WAAWG,WAAW;QAC5B,KAAK;YACH,OAAOT,gBAAQ,CAACC,KAAK;QACvB,KAAK;YACH,OAAOD,gBAAQ,CAACE,IAAI;QACtB,KAAK;YACH,OAAOF,gBAAQ,CAACG,IAAI;QACtB,KAAK;YACH,OAAOH,gBAAQ,CAACI,KAAK;QACvB,KAAK;YACH,OAAOJ,gBAAQ,CAACK,IAAI;QACtB;YACE,OAAOR;IACX;AACF;AAEO,SAASF,wBACdC,KAAc,EACdC,QAAwB;IAExB,IAAI,OAAOD,UAAU,YAAY,OAAOA,UAAU,UAAU;QAC1D,OAAO;YACLc,OAAOhB,kBAAkBE,OAAOC,SAASa,KAAK;QAChD;IACF;IAEA,MAAMC,SAASf,SAAS,OAAOA,UAAU,WAAYA,QAAoC,CAAC;IAE1F,OAAO;QACLc,OAAOhB,kBAAkBiB,OAAOD,KAAK,EAAEb,SAASa,KAAK;IACvD;AACF;AAEO,SAASjB,cAAcmB,IAAoB,EAAEC,KAAqB;IACvE,OAAOD,KAAKF,KAAK,KAAKG,MAAMH,KAAK;AACnC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LogLevel } from '@vlian/logger';
|
|
2
|
+
export type LoggerSnapshot = {
|
|
3
|
+
level: LogLevel;
|
|
4
|
+
};
|
|
5
|
+
export type LoggerListener = (next: LoggerSnapshot, prev: LoggerSnapshot) => void;
|
|
6
|
+
export declare function normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel;
|
|
7
|
+
export declare function normalizeLoggerSnapshot(value: unknown, fallback: LoggerSnapshot): LoggerSnapshot;
|
|
8
|
+
export declare function isLoggerEqual(left: LoggerSnapshot, right: LoggerSnapshot): boolean;
|