@vlian/framework 1.2.59 → 1.2.60
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/index.cjs +1 -22
- package/dist/analytics.umd.js +1 -1
- package/dist/components/LocaleSwitch.cjs +1 -116
- package/dist/components/ThemeSwitch.cjs +1 -115
- package/dist/components/index.cjs +1 -20
- package/dist/components/persistence.cjs +1 -58
- package/dist/core/Test.cjs +1 -64
- package/dist/core/app/AppContext.cjs +1 -348
- package/dist/core/app/AppContext.types.cjs +1 -4
- package/dist/core/app/BasicLayout.cjs +1 -122
- package/dist/core/app/DefaultApp.cjs +1 -150
- package/dist/core/app/index.cjs +1 -41
- package/dist/core/config/AppConfig.cjs +1 -139
- package/dist/core/config/ConfigLoader.cjs +1 -323
- package/dist/core/config/ConfigValidator.cjs +2 -133
- package/dist/core/config/index.cjs +1 -28
- package/dist/core/dev/DevTools.cjs +1 -226
- package/dist/core/error/ErrorBoundary.cjs +1 -401
- package/dist/core/error/ErrorHandler.cjs +1 -275
- package/dist/core/error/index.cjs +1 -34
- package/dist/core/event/AppEventBus.cjs +1 -444
- package/dist/core/event/frameworkEvents.cjs +1 -141
- package/dist/core/event/hooks.cjs +1 -69
- package/dist/core/event/index.cjs +1 -41
- package/dist/core/event/types.cjs +1 -62
- package/dist/core/event/useEventBus.cjs +1 -25
- package/dist/core/index.cjs +1 -140
- package/dist/core/initialization/InitializationErrorThrower.cjs +1 -75
- package/dist/core/initialization/index.cjs +1 -26
- package/dist/core/initialization/initialization.cjs +1 -64
- package/dist/core/initialization/initializationErrorState.cjs +1 -66
- package/dist/core/kernel/defaultAdapters.cjs +1 -184
- package/dist/core/kernel/errors.cjs +1 -69
- package/dist/core/kernel/index.cjs +1 -20
- package/dist/core/kernel/startKernel.cjs +1 -200
- package/dist/core/kernel/types.cjs +1 -4
- package/dist/core/middleware.cjs +1 -73
- package/dist/core/plugin/PluginEventBus.cjs +1 -298
- package/dist/core/plugin/PluginSandbox.cjs +1 -137
- package/dist/core/plugin.cjs +1 -494
- package/dist/core/router/RouterManager.cjs +1 -286
- package/dist/core/router/adapter/AdapterManager.cjs +1 -235
- package/dist/core/router/adapter/index.cjs +1 -22
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -128
- package/dist/core/router/adapter/react-router/index.cjs +1 -20
- package/dist/core/router/adapter/types.cjs +1 -6
- package/dist/core/router/dev/RouterDevTools.cjs +1 -260
- package/dist/core/router/dev/index.cjs +1 -20
- package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -193
- package/dist/core/router/dynamic/index.cjs +1 -20
- package/dist/core/router/errors/RouterError.cjs +1 -61
- package/dist/core/router/errors/index.cjs +1 -20
- package/dist/core/router/index.cjs +1 -36
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -144
- package/dist/core/router/lifecycle/index.cjs +1 -20
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -193
- package/dist/core/router/middleware/auth.cjs +1 -66
- package/dist/core/router/middleware/index.cjs +1 -22
- package/dist/core/router/middleware/types.cjs +1 -6
- package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -227
- package/dist/core/router/monitoring/index.cjs +1 -20
- package/dist/core/router/navigation/RouterNavigation.cjs +1 -239
- package/dist/core/router/navigation/index.cjs +1 -20
- package/dist/core/router/performance/RouteCache.cjs +1 -305
- package/dist/core/router/performance/RoutePreloader.cjs +1 -292
- package/dist/core/router/performance/index.cjs +1 -21
- package/dist/core/router/plugin/RouterPluginManager.cjs +1 -262
- package/dist/core/router/plugin/index.cjs +1 -21
- package/dist/core/router/plugin/types.cjs +1 -39
- package/dist/core/router/types.cjs +1 -4
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -129
- package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -250
- package/dist/core/router/utils/transform.cjs +1 -780
- package/dist/core/router/validation/RouterConfigValidator.cjs +2 -83
- package/dist/core/router/validation/index.cjs +1 -21
- package/dist/core/router/validation/schema.cjs +1 -159
- package/dist/core/router/version/RouteVersionManager.cjs +1 -205
- package/dist/core/router/version/index.cjs +1 -20
- package/dist/core/splash/SplashScreen.cjs +1 -341
- package/dist/core/splash/index.cjs +1 -22
- package/dist/core/splash/splashScreenUtils.cjs +1 -38
- package/dist/core/startup/AppInstance.cjs +1 -239
- package/dist/core/startup/environment.cjs +1 -169
- package/dist/core/startup/index.cjs +1 -23
- package/dist/core/startup/initializeServices.cjs +1 -226
- package/dist/core/startup/performanceTracker.cjs +1 -179
- package/dist/core/startup/renderApp.cjs +1 -314
- package/dist/core/startup/startApp.cjs +1 -317
- package/dist/core/types.cjs +1 -4
- package/dist/index.cjs +1 -52
- package/dist/index.umd.cjs +1 -27
- package/dist/index.umd.js +1 -1
- package/dist/kernel/constants.cjs +1 -65
- package/dist/kernel/index.cjs +1 -38
- package/dist/kernel/kernel.cjs +1 -295
- package/dist/kernel/manager/cacheManager.cjs +1 -46
- package/dist/kernel/manager/i18n/I18nManager.cjs +1 -91
- package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -60
- package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -86
- package/dist/kernel/manager/i18n/index.cjs +1 -11
- package/dist/kernel/manager/i18nManager.cjs +1 -11
- package/dist/kernel/manager/index.cjs +1 -28
- package/dist/kernel/manager/logger/LoggerManager.cjs +1 -107
- package/dist/kernel/manager/logger/index.cjs +1 -11
- package/dist/kernel/manager/logger/logger.persistence.cjs +1 -62
- package/dist/kernel/manager/logger/logger.schema.cjs +1 -74
- package/dist/kernel/manager/loggerManager.cjs +1 -11
- package/dist/kernel/manager/theme/ThemeManager.cjs +1 -84
- package/dist/kernel/manager/theme/index.cjs +1 -11
- package/dist/kernel/manager/theme/theme.dom.cjs +1 -61
- package/dist/kernel/manager/theme/theme.persistence.cjs +1 -57
- package/dist/kernel/manager/theme/theme.schema.cjs +1 -122
- package/dist/kernel/manager/themeManager.cjs +1 -11
- package/dist/kernel/types.cjs +1 -4
- package/dist/library/index.cjs +1 -19
- package/dist/library/locale/index.cjs +1 -39
- package/dist/library/locale/langs/en-us/index.cjs +1 -32
- package/dist/library/locale/langs/zh-cn/index.cjs +1 -32
- package/dist/library/locale/types.cjs +1 -4
- package/dist/library/storage/cache.cjs +1 -243
- package/dist/library/storage/encryption.cjs +1 -147
- package/dist/library/storage/index.cjs +1 -124
- package/dist/state/StateManager.cjs +1 -166
- package/dist/state/adapters/AdapterFactory.cjs +1 -89
- package/dist/state/adapters/DefaultAdapter.cjs +1 -75
- package/dist/state/adapters/ReduxAdapter.cjs +1 -443
- package/dist/state/adapters/ZustandAdapter.cjs +1 -69
- package/dist/state/adapters/index.cjs +1 -44
- package/dist/state/adapters/types.cjs +1 -20
- package/dist/state/core/DerivedStateInstance.cjs +1 -174
- package/dist/state/core/StateInstance.cjs +1 -170
- package/dist/state/core/StateRegistry.cjs +1 -110
- package/dist/state/core/StateScope.cjs +1 -137
- package/dist/state/core/index.cjs +1 -30
- package/dist/state/index.cjs +1 -30
- package/dist/state/types.cjs +1 -12
- package/dist/state.umd.js +1 -1
- package/dist/types.cjs +1 -4
- package/dist/utils/analytics.cjs +1 -217
- package/dist/utils/configSecurity.cjs +3 -182
- package/dist/utils/csrf.cjs +1 -18
- package/dist/utils/errors/ErrorCodes.cjs +1 -25
- package/dist/utils/errors.cjs +1 -111
- package/dist/utils/index.cjs +1 -135
- package/dist/utils/logger.cjs +1 -25
- package/dist/utils/logger.types.cjs +1 -11
- package/dist/utils/monitoring.cjs +1 -18
- package/dist/utils/performance.cjs +1 -22
- package/dist/utils/resourceLoader.cjs +1 -22
- package/dist/utils/runtimeSecurity.cjs +1 -11
- package/dist/utils/security.cjs +1 -19
- package/dist/utils/traceId.cjs +1 -37
- package/dist/utils/validation.cjs +1 -19
- package/package.json +7 -3
package/dist/index.cjs
CHANGED
|
@@ -1,52 +1 @@
|
|
|
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 $t () {
|
|
13
|
-
return _library.$t;
|
|
14
|
-
},
|
|
15
|
-
get Kernel () {
|
|
16
|
-
return _kernel.Kernel;
|
|
17
|
-
},
|
|
18
|
-
get getKernel () {
|
|
19
|
-
return _kernel.getKernel;
|
|
20
|
-
},
|
|
21
|
-
get kernelStartApp () {
|
|
22
|
-
return _kernel.kernelStartApp;
|
|
23
|
-
},
|
|
24
|
-
get setLang () {
|
|
25
|
-
return _library.setLang;
|
|
26
|
-
},
|
|
27
|
-
get setupI18n () {
|
|
28
|
-
return _library.setupI18n;
|
|
29
|
-
},
|
|
30
|
-
get startup () {
|
|
31
|
-
return _kernel.startup;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
const _library = require("./library");
|
|
35
|
-
_export_star(require("./core"), exports);
|
|
36
|
-
_export_star(require("./utils"), exports);
|
|
37
|
-
_export_star(require("./state"), exports);
|
|
38
|
-
_export_star(require("./components"), exports);
|
|
39
|
-
const _kernel = require("./kernel");
|
|
40
|
-
function _export_star(from, to) {
|
|
41
|
-
Object.keys(from).forEach(function(k) {
|
|
42
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
43
|
-
Object.defineProperty(to, k, {
|
|
44
|
-
enumerable: true,
|
|
45
|
-
get: function() {
|
|
46
|
-
return from[k];
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
return from;
|
|
52
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get $t(){return _library.$t},get Kernel(){return _kernel.Kernel},get getKernel(){return _kernel.getKernel},get kernelStartApp(){return _kernel.kernelStartApp},get setLang(){return _library.setLang},get setupI18n(){return _library.setupI18n},get startup(){return _kernel.startup}});const _library=require("./library");_export_star(require("./core"),exports);_export_star(require("./utils"),exports);_export_star(require("./state"),exports);_export_star(require("./components"),exports);const _kernel=require("./kernel");function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,27 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* UMD 入口文件
|
|
3
|
-
*
|
|
4
|
-
* 此文件用于构建 UMD 格式的包,在浏览器环境中会将框架暴露为 window.vlianFramework
|
|
5
|
-
* Rollup 会自动处理 UMD 格式的导出,此文件只需要重新导出所有内容
|
|
6
|
-
*/ // 重新导出所有内容
|
|
7
|
-
"use strict";
|
|
8
|
-
Object.defineProperty(exports, "__esModule", {
|
|
9
|
-
value: true
|
|
10
|
-
});
|
|
11
|
-
_export_star(require("./index"), exports);
|
|
12
|
-
function _export_star(from, to) {
|
|
13
|
-
Object.keys(from).forEach(function(k) {
|
|
14
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
15
|
-
Object.defineProperty(to, k, {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function() {
|
|
18
|
-
return from[k];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return from;
|
|
24
|
-
}
|
|
25
|
-
// 在浏览器环境中,Rollup 会将 UMD 格式的导出自动赋值给全局变量
|
|
26
|
-
// 全局变量名称在 rollup.config.js 中配置为 'vlianFramework'
|
|
27
|
-
// 因此最终会通过 window.vlianFramework 访问
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./index"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,65 +1 @@
|
|
|
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_CONFIG () {
|
|
13
|
-
return DEFAULT_CONFIG;
|
|
14
|
-
},
|
|
15
|
-
get DEFAULT_I18N () {
|
|
16
|
-
return DEFAULT_I18N;
|
|
17
|
-
},
|
|
18
|
-
get DEFAULT_INSTANCE_ID () {
|
|
19
|
-
return DEFAULT_INSTANCE_ID;
|
|
20
|
-
},
|
|
21
|
-
get DEFAULT_THEME () {
|
|
22
|
-
return DEFAULT_THEME;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
const _logger = require("@vlian/logger");
|
|
26
|
-
const DEFAULT_INSTANCE_ID = 'default';
|
|
27
|
-
const DEFAULT_THEME = {
|
|
28
|
-
mode: 'light'
|
|
29
|
-
};
|
|
30
|
-
const DEFAULT_I18N = {
|
|
31
|
-
locale: 'zh-CN'
|
|
32
|
-
};
|
|
33
|
-
const DEFAULT_CONFIG = {
|
|
34
|
-
logger: {
|
|
35
|
-
level: _logger.LogLevel.INFO,
|
|
36
|
-
persistence: {
|
|
37
|
-
enabled: true,
|
|
38
|
-
storage: 'localStorage',
|
|
39
|
-
key: 'vlian:kernel:logger-level'
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
cache: {
|
|
43
|
-
enabled: true,
|
|
44
|
-
storageOptions: {
|
|
45
|
-
prefix: 'vlian',
|
|
46
|
-
defaultExpire: 24 * 60 * 60 * 1000
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
theme: {
|
|
50
|
-
initial: DEFAULT_THEME,
|
|
51
|
-
persistence: {
|
|
52
|
-
enabled: true,
|
|
53
|
-
storage: 'localStorage',
|
|
54
|
-
key: 'vlian:kernel:theme'
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
i18n: {
|
|
58
|
-
initial: DEFAULT_I18N,
|
|
59
|
-
persistence: {
|
|
60
|
-
enabled: true,
|
|
61
|
-
storage: 'localStorage',
|
|
62
|
-
key: 'vlian:kernel:i18n'
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get DEFAULT_CONFIG(){return DEFAULT_CONFIG},get DEFAULT_I18N(){return DEFAULT_I18N},get DEFAULT_INSTANCE_ID(){return DEFAULT_INSTANCE_ID},get DEFAULT_THEME(){return DEFAULT_THEME}});const _logger=require("@vlian/logger");const DEFAULT_INSTANCE_ID="default";const DEFAULT_THEME={mode:"light"};const DEFAULT_I18N={locale:"zh-CN"};const DEFAULT_CONFIG={logger:{level:_logger.LogLevel.INFO,persistence:{enabled:true,storage:"localStorage",key:"vlian:kernel:logger-level"}},cache:{enabled:true,storageOptions:{prefix:"vlian",defaultExpire:24*60*60*1e3}},theme:{initial:DEFAULT_THEME,persistence:{enabled:true,storage:"localStorage",key:"vlian:kernel:theme"}},i18n:{initial:DEFAULT_I18N,persistence:{enabled:true,storage:"localStorage",key:"vlian:kernel:i18n"}}};
|
package/dist/kernel/index.cjs
CHANGED
|
@@ -1,38 +1 @@
|
|
|
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 CacheManager () {
|
|
13
|
-
return _manager.CacheManager;
|
|
14
|
-
},
|
|
15
|
-
get I18nManager () {
|
|
16
|
-
return _manager.I18nManager;
|
|
17
|
-
},
|
|
18
|
-
get Kernel () {
|
|
19
|
-
return _kernel.Kernel;
|
|
20
|
-
},
|
|
21
|
-
get LoggerManager () {
|
|
22
|
-
return _manager.LoggerManager;
|
|
23
|
-
},
|
|
24
|
-
get ThemeManager () {
|
|
25
|
-
return _manager.ThemeManager;
|
|
26
|
-
},
|
|
27
|
-
get getKernel () {
|
|
28
|
-
return _kernel.getKernel;
|
|
29
|
-
},
|
|
30
|
-
get kernelStartApp () {
|
|
31
|
-
return _kernel.kernelStartApp;
|
|
32
|
-
},
|
|
33
|
-
get startup () {
|
|
34
|
-
return _kernel.startup;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const _kernel = require("./kernel");
|
|
38
|
-
const _manager = require("./manager");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get CacheManager(){return _manager.CacheManager},get I18nManager(){return _manager.I18nManager},get Kernel(){return _kernel.Kernel},get LoggerManager(){return _manager.LoggerManager},get ThemeManager(){return _manager.ThemeManager},get getKernel(){return _kernel.getKernel},get kernelStartApp(){return _kernel.kernelStartApp},get startup(){return _kernel.startup}});const _kernel=require("./kernel");const _manager=require("./manager");
|
package/dist/kernel/kernel.cjs
CHANGED
|
@@ -1,295 +1 @@
|
|
|
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 Kernel () {
|
|
13
|
-
return Kernel;
|
|
14
|
-
},
|
|
15
|
-
get getKernel () {
|
|
16
|
-
return getKernel;
|
|
17
|
-
},
|
|
18
|
-
get kernelStartApp () {
|
|
19
|
-
return kernelStartApp;
|
|
20
|
-
},
|
|
21
|
-
get startup () {
|
|
22
|
-
return startup;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
const _constants = require("./constants");
|
|
26
|
-
const _loggerManager = require("./manager/loggerManager");
|
|
27
|
-
const _cacheManager = require("./manager/cacheManager");
|
|
28
|
-
const _themeManager = require("./manager/themeManager");
|
|
29
|
-
const _i18nManager = require("./manager/i18nManager");
|
|
30
|
-
function _define_property(obj, key, value) {
|
|
31
|
-
if (key in obj) {
|
|
32
|
-
Object.defineProperty(obj, key, {
|
|
33
|
-
value: value,
|
|
34
|
-
enumerable: true,
|
|
35
|
-
configurable: true,
|
|
36
|
-
writable: true
|
|
37
|
-
});
|
|
38
|
-
} else {
|
|
39
|
-
obj[key] = value;
|
|
40
|
-
}
|
|
41
|
-
return obj;
|
|
42
|
-
}
|
|
43
|
-
function now() {
|
|
44
|
-
return typeof performance !== 'undefined' ? performance.now() : Date.now();
|
|
45
|
-
}
|
|
46
|
-
function isRecord(value) {
|
|
47
|
-
return typeof value === 'object' && value !== null;
|
|
48
|
-
}
|
|
49
|
-
let Kernel = class Kernel {
|
|
50
|
-
static getInstance(instanceId = _constants.DEFAULT_INSTANCE_ID) {
|
|
51
|
-
const existing = Kernel.instances.get(instanceId);
|
|
52
|
-
if (existing) {
|
|
53
|
-
return existing;
|
|
54
|
-
}
|
|
55
|
-
const created = new Kernel(instanceId);
|
|
56
|
-
Kernel.instances.set(instanceId, created);
|
|
57
|
-
return created;
|
|
58
|
-
}
|
|
59
|
-
getId() {
|
|
60
|
-
return this.instanceId;
|
|
61
|
-
}
|
|
62
|
-
getConfig() {
|
|
63
|
-
return this.config;
|
|
64
|
-
}
|
|
65
|
-
getMetrics() {
|
|
66
|
-
return [
|
|
67
|
-
...this.metrics
|
|
68
|
-
];
|
|
69
|
-
}
|
|
70
|
-
getLoggerManager() {
|
|
71
|
-
return this.loggerManager;
|
|
72
|
-
}
|
|
73
|
-
getCacheManager() {
|
|
74
|
-
return this.cacheManager;
|
|
75
|
-
}
|
|
76
|
-
getThemeManager() {
|
|
77
|
-
return this.themeManager;
|
|
78
|
-
}
|
|
79
|
-
getI18nManager() {
|
|
80
|
-
return this.i18nManager;
|
|
81
|
-
}
|
|
82
|
-
getManager(name) {
|
|
83
|
-
return this.managers.get(name);
|
|
84
|
-
}
|
|
85
|
-
registerManager(name, manager) {
|
|
86
|
-
if (this.managers.has(name)) {
|
|
87
|
-
throw new Error(`Kernel manager "${name}" 已存在`);
|
|
88
|
-
}
|
|
89
|
-
this.managers.set(name, manager);
|
|
90
|
-
}
|
|
91
|
-
async startup(options = {}) {
|
|
92
|
-
if (this.started) {
|
|
93
|
-
this.logDebug('kernel.startup.skip.already-started', {
|
|
94
|
-
instanceId: this.instanceId
|
|
95
|
-
});
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
if (this.startupPromise) {
|
|
99
|
-
return this.startupPromise;
|
|
100
|
-
}
|
|
101
|
-
this.startupPromise = this.bootstrap(options).finally(()=>{
|
|
102
|
-
this.startupPromise = null;
|
|
103
|
-
});
|
|
104
|
-
return this.startupPromise;
|
|
105
|
-
}
|
|
106
|
-
async bootstrap(options) {
|
|
107
|
-
await this.measurePhase('startup.begin', async ()=>{
|
|
108
|
-
this.logDebug('kernel.startup.begin', {
|
|
109
|
-
instanceId: this.instanceId
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
await this.measurePhase('config.load', async ()=>{
|
|
113
|
-
this.config = await this.resolveConfig(options);
|
|
114
|
-
});
|
|
115
|
-
await this.measurePhase('manager.register.custom', async ()=>{
|
|
116
|
-
if (options.customManagers) {
|
|
117
|
-
Object.entries(options.customManagers).forEach(([name, manager])=>{
|
|
118
|
-
if (!this.managers.has(name)) {
|
|
119
|
-
this.managers.set(name, manager);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
await this.measurePhase('manager.initialize.default', async ()=>{
|
|
125
|
-
await this.initializeManager('cache');
|
|
126
|
-
await Promise.all([
|
|
127
|
-
this.initializeManager('logger'),
|
|
128
|
-
this.initializeManager('theme'),
|
|
129
|
-
this.initializeManager('i18n')
|
|
130
|
-
]);
|
|
131
|
-
});
|
|
132
|
-
await this.measurePhase('manager.initialize.custom', async ()=>{
|
|
133
|
-
const customManagerNames = [
|
|
134
|
-
...this.managers.keys()
|
|
135
|
-
].filter((name)=>name !== 'logger' && name !== 'cache' && name !== 'theme' && name !== 'i18n');
|
|
136
|
-
for (const name of customManagerNames){
|
|
137
|
-
await this.initializeManager(name);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
await this.measurePhase('hooks.initialize', async ()=>{
|
|
141
|
-
await options.hooks?.initialize?.();
|
|
142
|
-
await options.lifecycle?.initialization?.();
|
|
143
|
-
});
|
|
144
|
-
await this.measurePhase('render.custom', async ()=>{
|
|
145
|
-
if (options.render) {
|
|
146
|
-
await options.render({
|
|
147
|
-
instanceId: this.instanceId,
|
|
148
|
-
config: this.config
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
this.started = true;
|
|
153
|
-
this.logDebug('kernel.startup.end', {
|
|
154
|
-
instanceId: this.instanceId,
|
|
155
|
-
metrics: this.metrics
|
|
156
|
-
});
|
|
157
|
-
return this;
|
|
158
|
-
}
|
|
159
|
-
async resolveConfig(options) {
|
|
160
|
-
let loaded = {};
|
|
161
|
-
if (options.configLoader) {
|
|
162
|
-
const loaderResult = await options.configLoader();
|
|
163
|
-
loaded = loaderResult || {};
|
|
164
|
-
}
|
|
165
|
-
const loadedThemeInitial = loaded.theme?.initial || {};
|
|
166
|
-
const loadedI18nInitial = loaded.i18n?.initial || {};
|
|
167
|
-
const optionTheme = options.theme || {};
|
|
168
|
-
const optionLocale = options.locale;
|
|
169
|
-
return {
|
|
170
|
-
logger: {
|
|
171
|
-
..._constants.DEFAULT_CONFIG.logger,
|
|
172
|
-
...loaded.logger,
|
|
173
|
-
...options.config?.logger || {},
|
|
174
|
-
level: options.loggerLevel ?? options.config?.logger?.level ?? loaded.logger?.level
|
|
175
|
-
},
|
|
176
|
-
cache: {
|
|
177
|
-
..._constants.DEFAULT_CONFIG.cache,
|
|
178
|
-
...loaded.cache,
|
|
179
|
-
...options.config?.cache || {},
|
|
180
|
-
storageOptions: {
|
|
181
|
-
..._constants.DEFAULT_CONFIG.cache.storageOptions,
|
|
182
|
-
...loaded.cache?.storageOptions || {},
|
|
183
|
-
...options.config?.cache?.storageOptions || {},
|
|
184
|
-
...options.storageOptions || {}
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
theme: {
|
|
188
|
-
..._constants.DEFAULT_CONFIG.theme,
|
|
189
|
-
...loaded.theme,
|
|
190
|
-
...options.config?.theme || {},
|
|
191
|
-
initial: {
|
|
192
|
-
..._constants.DEFAULT_THEME,
|
|
193
|
-
...loadedThemeInitial,
|
|
194
|
-
...options.config?.theme?.initial || {},
|
|
195
|
-
...isRecord(optionTheme) ? optionTheme : {}
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
i18n: {
|
|
199
|
-
..._constants.DEFAULT_CONFIG.i18n,
|
|
200
|
-
...loaded.i18n,
|
|
201
|
-
...options.config?.i18n || {},
|
|
202
|
-
initial: {
|
|
203
|
-
..._constants.DEFAULT_I18N,
|
|
204
|
-
...loadedI18nInitial,
|
|
205
|
-
...options.config?.i18n?.initial || {},
|
|
206
|
-
resources: isRecord(optionLocale) ? optionLocale : loadedI18nInitial.resources ?? options.config?.i18n?.initial?.resources
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
async initializeManager(name) {
|
|
212
|
-
if (this.initializedManagers.has(name)) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const existingPromise = this.managerInitPromises.get(name);
|
|
216
|
-
if (existingPromise) {
|
|
217
|
-
await existingPromise;
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const manager = this.managers.get(name);
|
|
221
|
-
if (!manager) {
|
|
222
|
-
throw new Error(`Kernel manager "${name}" 不存在`);
|
|
223
|
-
}
|
|
224
|
-
const context = {
|
|
225
|
-
instanceId: this.instanceId,
|
|
226
|
-
config: this.config,
|
|
227
|
-
cacheManager: this.cacheManager.cache
|
|
228
|
-
};
|
|
229
|
-
const initPromise = (async ()=>{
|
|
230
|
-
await manager.initialize(context);
|
|
231
|
-
this.initializedManagers.add(name);
|
|
232
|
-
this.logDebug('kernel.manager.initialized', {
|
|
233
|
-
name,
|
|
234
|
-
instanceId: this.instanceId
|
|
235
|
-
});
|
|
236
|
-
})();
|
|
237
|
-
this.managerInitPromises.set(name, initPromise);
|
|
238
|
-
try {
|
|
239
|
-
await initPromise;
|
|
240
|
-
} finally{
|
|
241
|
-
this.managerInitPromises.delete(name);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
async measurePhase(phase, task) {
|
|
245
|
-
const startTime = now();
|
|
246
|
-
this.logDebug('kernel.phase.start', {
|
|
247
|
-
phase,
|
|
248
|
-
startTime,
|
|
249
|
-
instanceId: this.instanceId
|
|
250
|
-
});
|
|
251
|
-
await task();
|
|
252
|
-
const endTime = now();
|
|
253
|
-
const metric = {
|
|
254
|
-
phase,
|
|
255
|
-
startTime,
|
|
256
|
-
endTime,
|
|
257
|
-
duration: endTime - startTime
|
|
258
|
-
};
|
|
259
|
-
this.metrics.push(metric);
|
|
260
|
-
this.logDebug('kernel.phase.end', metric);
|
|
261
|
-
}
|
|
262
|
-
logDebug(message, payload) {
|
|
263
|
-
this.loggerManager.debug(message, payload);
|
|
264
|
-
}
|
|
265
|
-
constructor(instanceId){
|
|
266
|
-
_define_property(this, "instanceId", void 0);
|
|
267
|
-
_define_property(this, "metrics", []);
|
|
268
|
-
_define_property(this, "managers", new Map());
|
|
269
|
-
_define_property(this, "managerInitPromises", new Map());
|
|
270
|
-
_define_property(this, "initializedManagers", new Set());
|
|
271
|
-
_define_property(this, "loggerManager", new _loggerManager.LoggerManager());
|
|
272
|
-
_define_property(this, "cacheManager", new _cacheManager.CacheManager());
|
|
273
|
-
_define_property(this, "themeManager", new _themeManager.ThemeManager());
|
|
274
|
-
_define_property(this, "i18nManager", new _i18nManager.I18nManager());
|
|
275
|
-
_define_property(this, "config", _constants.DEFAULT_CONFIG);
|
|
276
|
-
_define_property(this, "startupPromise", null);
|
|
277
|
-
_define_property(this, "started", false);
|
|
278
|
-
this.instanceId = instanceId;
|
|
279
|
-
this.managers.set('logger', this.loggerManager);
|
|
280
|
-
this.managers.set('cache', this.cacheManager);
|
|
281
|
-
this.managers.set('theme', this.themeManager);
|
|
282
|
-
this.managers.set('i18n', this.i18nManager);
|
|
283
|
-
}
|
|
284
|
-
};
|
|
285
|
-
_define_property(Kernel, "instances", new Map());
|
|
286
|
-
async function startup(options = {}, instanceId = _constants.DEFAULT_INSTANCE_ID) {
|
|
287
|
-
const kernel = Kernel.getInstance(instanceId);
|
|
288
|
-
return kernel.startup(options);
|
|
289
|
-
}
|
|
290
|
-
function getKernel(instanceId = _constants.DEFAULT_INSTANCE_ID) {
|
|
291
|
-
return Kernel.getInstance(instanceId);
|
|
292
|
-
}
|
|
293
|
-
async function kernelStartApp(options = {}, instanceId = _constants.DEFAULT_INSTANCE_ID) {
|
|
294
|
-
return startup(options, instanceId);
|
|
295
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get Kernel(){return Kernel},get getKernel(){return getKernel},get kernelStartApp(){return kernelStartApp},get startup(){return startup}});const _constants=require("./constants");const _loggerManager=require("./manager/loggerManager");const _cacheManager=require("./manager/cacheManager");const _themeManager=require("./manager/themeManager");const _i18nManager=require("./manager/i18nManager");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function now(){return typeof performance!=="undefined"?performance.now():Date.now()}function isRecord(value){return typeof value==="object"&&value!==null}let Kernel=class Kernel{static getInstance(instanceId=_constants.DEFAULT_INSTANCE_ID){const existing=Kernel.instances.get(instanceId);if(existing){return existing}const created=new Kernel(instanceId);Kernel.instances.set(instanceId,created);return created}getId(){return this.instanceId}getConfig(){return this.config}getMetrics(){return[...this.metrics]}getLoggerManager(){return this.loggerManager}getCacheManager(){return this.cacheManager}getThemeManager(){return this.themeManager}getI18nManager(){return this.i18nManager}getManager(name){return this.managers.get(name)}registerManager(name,manager){if(this.managers.has(name)){throw new Error(`Kernel manager "${name}" 已存在`)}this.managers.set(name,manager)}async startup(options={}){if(this.started){this.logDebug("kernel.startup.skip.already-started",{instanceId:this.instanceId});return this}if(this.startupPromise){return this.startupPromise}this.startupPromise=this.bootstrap(options).finally(()=>{this.startupPromise=null});return this.startupPromise}async bootstrap(options){await this.measurePhase("startup.begin",async()=>{this.logDebug("kernel.startup.begin",{instanceId:this.instanceId})});await this.measurePhase("config.load",async()=>{this.config=await this.resolveConfig(options)});await this.measurePhase("manager.register.custom",async()=>{if(options.customManagers){Object.entries(options.customManagers).forEach(([name,manager])=>{if(!this.managers.has(name)){this.managers.set(name,manager)}})}});await this.measurePhase("manager.initialize.default",async()=>{await this.initializeManager("cache");await Promise.all([this.initializeManager("logger"),this.initializeManager("theme"),this.initializeManager("i18n")])});await this.measurePhase("manager.initialize.custom",async()=>{const customManagerNames=[...this.managers.keys()].filter(name=>name!=="logger"&&name!=="cache"&&name!=="theme"&&name!=="i18n");for(const name of customManagerNames){await this.initializeManager(name)}});await this.measurePhase("hooks.initialize",async()=>{await options.hooks?.initialize?.();await options.lifecycle?.initialization?.()});await this.measurePhase("render.custom",async()=>{if(options.render){await options.render({instanceId:this.instanceId,config:this.config})}});this.started=true;this.logDebug("kernel.startup.end",{instanceId:this.instanceId,metrics:this.metrics});return this}async resolveConfig(options){let loaded={};if(options.configLoader){const loaderResult=await options.configLoader();loaded=loaderResult||{}}const loadedThemeInitial=loaded.theme?.initial||{};const loadedI18nInitial=loaded.i18n?.initial||{};const optionTheme=options.theme||{};const optionLocale=options.locale;return{logger:{..._constants.DEFAULT_CONFIG.logger,...loaded.logger,...options.config?.logger||{},level:options.loggerLevel??options.config?.logger?.level??loaded.logger?.level},cache:{..._constants.DEFAULT_CONFIG.cache,...loaded.cache,...options.config?.cache||{},storageOptions:{..._constants.DEFAULT_CONFIG.cache.storageOptions,...loaded.cache?.storageOptions||{},...options.config?.cache?.storageOptions||{},...options.storageOptions||{}}},theme:{..._constants.DEFAULT_CONFIG.theme,...loaded.theme,...options.config?.theme||{},initial:{..._constants.DEFAULT_THEME,...loadedThemeInitial,...options.config?.theme?.initial||{},...isRecord(optionTheme)?optionTheme:{}}},i18n:{..._constants.DEFAULT_CONFIG.i18n,...loaded.i18n,...options.config?.i18n||{},initial:{..._constants.DEFAULT_I18N,...loadedI18nInitial,...options.config?.i18n?.initial||{},resources:isRecord(optionLocale)?optionLocale:loadedI18nInitial.resources??options.config?.i18n?.initial?.resources}}}}async initializeManager(name){if(this.initializedManagers.has(name)){return}const existingPromise=this.managerInitPromises.get(name);if(existingPromise){await existingPromise;return}const manager=this.managers.get(name);if(!manager){throw new Error(`Kernel manager "${name}" 不存在`)}const context={instanceId:this.instanceId,config:this.config,cacheManager:this.cacheManager.cache};const initPromise=(async()=>{await manager.initialize(context);this.initializedManagers.add(name);this.logDebug("kernel.manager.initialized",{name,instanceId:this.instanceId})})();this.managerInitPromises.set(name,initPromise);try{await initPromise}finally{this.managerInitPromises.delete(name)}}async measurePhase(phase,task){const startTime=now();this.logDebug("kernel.phase.start",{phase,startTime,instanceId:this.instanceId});await task();const endTime=now();const metric={phase,startTime,endTime,duration:endTime-startTime};this.metrics.push(metric);this.logDebug("kernel.phase.end",metric)}logDebug(message,payload){this.loggerManager.debug(message,payload)}constructor(instanceId){_define_property(this,"instanceId",void 0);_define_property(this,"metrics",[]);_define_property(this,"managers",new Map);_define_property(this,"managerInitPromises",new Map);_define_property(this,"initializedManagers",new Set);_define_property(this,"loggerManager",new _loggerManager.LoggerManager);_define_property(this,"cacheManager",new _cacheManager.CacheManager);_define_property(this,"themeManager",new _themeManager.ThemeManager);_define_property(this,"i18nManager",new _i18nManager.I18nManager);_define_property(this,"config",_constants.DEFAULT_CONFIG);_define_property(this,"startupPromise",null);_define_property(this,"started",false);this.instanceId=instanceId;this.managers.set("logger",this.loggerManager);this.managers.set("cache",this.cacheManager);this.managers.set("theme",this.themeManager);this.managers.set("i18n",this.i18nManager)}};_define_property(Kernel,"instances",new Map);async function startup(options={},instanceId=_constants.DEFAULT_INSTANCE_ID){const kernel=Kernel.getInstance(instanceId);return kernel.startup(options)}function getKernel(instanceId=_constants.DEFAULT_INSTANCE_ID){return Kernel.getInstance(instanceId)}async function kernelStartApp(options={},instanceId=_constants.DEFAULT_INSTANCE_ID){return startup(options,instanceId)}
|
|
@@ -1,46 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CacheManager", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return CacheManager;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _constants = require("../constants");
|
|
12
|
-
const _utils = require("@vlian/utils");
|
|
13
|
-
function _define_property(obj, key, value) {
|
|
14
|
-
if (key in obj) {
|
|
15
|
-
Object.defineProperty(obj, key, {
|
|
16
|
-
value: value,
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true
|
|
20
|
-
});
|
|
21
|
-
} else {
|
|
22
|
-
obj[key] = value;
|
|
23
|
-
}
|
|
24
|
-
return obj;
|
|
25
|
-
}
|
|
26
|
-
let CacheManager = class CacheManager {
|
|
27
|
-
initialize(context) {
|
|
28
|
-
this.snapshot = context.config.cache;
|
|
29
|
-
this.cacheIn = (0, _utils.createStorage)({
|
|
30
|
-
type: this.snapshot.storageOptions?.type || 'local',
|
|
31
|
-
prefix: this.snapshot.storageOptions?.prefix || 'vlian',
|
|
32
|
-
defaultExpire: this.snapshot.storageOptions?.defaultExpire || 24 * 60 * 60 * 1000,
|
|
33
|
-
dbName: this.snapshot.storageOptions?.tableName
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
get cache() {
|
|
37
|
-
return this.cacheIn;
|
|
38
|
-
}
|
|
39
|
-
getSnapshot() {
|
|
40
|
-
return this.snapshot;
|
|
41
|
-
}
|
|
42
|
-
constructor(){
|
|
43
|
-
_define_property(this, "snapshot", _constants.DEFAULT_CONFIG.cache);
|
|
44
|
-
_define_property(this, "cacheIn", void 0);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"CacheManager",{enumerable:true,get:function(){return CacheManager}});const _constants=require("../constants");const _utils=require("@vlian/utils");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let CacheManager=class CacheManager{initialize(context){this.snapshot=context.config.cache;this.cacheIn=(0,_utils.createStorage)({type:this.snapshot.storageOptions?.type||"local",prefix:this.snapshot.storageOptions?.prefix||"vlian",defaultExpire:this.snapshot.storageOptions?.defaultExpire||24*60*60*1e3,dbName:this.snapshot.storageOptions?.tableName})}get cache(){return this.cacheIn}getSnapshot(){return this.snapshot}constructor(){_define_property(this,"snapshot",_constants.DEFAULT_CONFIG.cache);_define_property(this,"cacheIn",void 0)}};
|
|
@@ -1,91 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "I18nManager", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return I18nManager;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _library = require("../../../library");
|
|
12
|
-
const _constants = require("../../constants");
|
|
13
|
-
const _i18npersistence = require("./i18n.persistence");
|
|
14
|
-
const _i18nschema = require("./i18n.schema");
|
|
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 I18nManager = class I18nManager {
|
|
29
|
-
async initialize(context) {
|
|
30
|
-
this.config = context.config.i18n;
|
|
31
|
-
this.cacheManager = context.cacheManager;
|
|
32
|
-
const initialSnapshot = (0, _i18nschema.normalizeI18nSnapshot)(this.config.initial || {}, _constants.DEFAULT_I18N);
|
|
33
|
-
this.snapshot = await (0, _i18npersistence.loadI18nFromCache)(this.cacheManager, this.config.persistence, initialSnapshot);
|
|
34
|
-
await (0, _library.setupI18n)({
|
|
35
|
-
interpolation: {
|
|
36
|
-
escapeValue: false
|
|
37
|
-
},
|
|
38
|
-
lng: this.snapshot.locale || "zh-CN",
|
|
39
|
-
resources: this.snapshot.resources
|
|
40
|
-
});
|
|
41
|
-
await (0, _library.setLang)(this.snapshot.locale);
|
|
42
|
-
this.initialized = true;
|
|
43
|
-
}
|
|
44
|
-
getSnapshot() {
|
|
45
|
-
return (0, _i18nschema.cloneI18nSnapshot)(this.snapshot);
|
|
46
|
-
}
|
|
47
|
-
subscribe(listener) {
|
|
48
|
-
this.listeners.add(listener);
|
|
49
|
-
return ()=>{
|
|
50
|
-
this.listeners.delete(listener);
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
async setLocale(locale) {
|
|
54
|
-
this.ensureInitialized();
|
|
55
|
-
const prevSnapshot = this.snapshot;
|
|
56
|
-
const nextSnapshot = (0, _i18nschema.mergeI18nSnapshot)(prevSnapshot, {
|
|
57
|
-
locale
|
|
58
|
-
});
|
|
59
|
-
if ((0, _i18nschema.isI18nEqual)(prevSnapshot, nextSnapshot)) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
this.snapshot = nextSnapshot;
|
|
63
|
-
// set lang
|
|
64
|
-
await (0, _library.setLang)(this.snapshot.locale);
|
|
65
|
-
if (this.cacheManager) {
|
|
66
|
-
await (0, _i18npersistence.saveI18nToCache)(this.cacheManager, this.config.persistence, this.snapshot);
|
|
67
|
-
}
|
|
68
|
-
this.emit(this.snapshot, prevSnapshot);
|
|
69
|
-
}
|
|
70
|
-
ensureInitialized() {
|
|
71
|
-
if (!this.initialized) {
|
|
72
|
-
throw new Error('I18nManager must be initialized before use.');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
emit(next, prev) {
|
|
76
|
-
for (const listener of this.listeners){
|
|
77
|
-
try {
|
|
78
|
-
listener((0, _i18nschema.cloneI18nSnapshot)(next), (0, _i18nschema.cloneI18nSnapshot)(prev));
|
|
79
|
-
} catch {
|
|
80
|
-
// Keep notifying remaining listeners even if one fails.
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
constructor(){
|
|
85
|
-
_define_property(this, "snapshot", (0, _i18nschema.cloneI18nSnapshot)(_constants.DEFAULT_I18N));
|
|
86
|
-
_define_property(this, "config", _constants.DEFAULT_CONFIG.i18n);
|
|
87
|
-
_define_property(this, "listeners", new Set());
|
|
88
|
-
_define_property(this, "cacheManager", null);
|
|
89
|
-
_define_property(this, "initialized", false);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"I18nManager",{enumerable:true,get:function(){return I18nManager}});const _library=require("../../../library");const _constants=require("../../constants");const _i18npersistence=require("./i18n.persistence");const _i18nschema=require("./i18n.schema");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let I18nManager=class I18nManager{async initialize(context){this.config=context.config.i18n;this.cacheManager=context.cacheManager;const initialSnapshot=(0,_i18nschema.normalizeI18nSnapshot)(this.config.initial||{},_constants.DEFAULT_I18N);this.snapshot=await (0,_i18npersistence.loadI18nFromCache)(this.cacheManager,this.config.persistence,initialSnapshot);await (0,_library.setupI18n)({interpolation:{escapeValue:false},lng:this.snapshot.locale||"zh-CN",resources:this.snapshot.resources});await (0,_library.setLang)(this.snapshot.locale);this.initialized=true}getSnapshot(){return(0,_i18nschema.cloneI18nSnapshot)(this.snapshot)}subscribe(listener){this.listeners.add(listener);return()=>{this.listeners.delete(listener)}}async setLocale(locale){this.ensureInitialized();const prevSnapshot=this.snapshot;const nextSnapshot=(0,_i18nschema.mergeI18nSnapshot)(prevSnapshot,{locale});if((0,_i18nschema.isI18nEqual)(prevSnapshot,nextSnapshot)){return}this.snapshot=nextSnapshot;await (0,_library.setLang)(this.snapshot.locale);if(this.cacheManager){await (0,_i18npersistence.saveI18nToCache)(this.cacheManager,this.config.persistence,this.snapshot)}this.emit(this.snapshot,prevSnapshot)}ensureInitialized(){if(!this.initialized){throw new Error("I18nManager must be initialized before use.")}}emit(next,prev){for(const listener of this.listeners){try{listener((0,_i18nschema.cloneI18nSnapshot)(next),(0,_i18nschema.cloneI18nSnapshot)(prev))}catch{}}}constructor(){_define_property(this,"snapshot",(0,_i18nschema.cloneI18nSnapshot)(_constants.DEFAULT_I18N));_define_property(this,"config",_constants.DEFAULT_CONFIG.i18n);_define_property(this,"listeners",new Set);_define_property(this,"cacheManager",null);_define_property(this,"initialized",false)}};
|