@vlian/framework 1.2.59 → 1.2.61
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 +12 -3
|
@@ -1,184 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "resolveKernelAdapters", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return resolveKernelAdapters;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _logger = require("@vlian/logger");
|
|
12
|
-
const _monitoring = require("@vlian/monitoring");
|
|
13
|
-
const _state = require("../../state");
|
|
14
|
-
const _AppEventBus = require("../event/AppEventBus");
|
|
15
|
-
const _library = require("../../library");
|
|
16
|
-
function _define_property(obj, key, value) {
|
|
17
|
-
if (key in obj) {
|
|
18
|
-
Object.defineProperty(obj, key, {
|
|
19
|
-
value: value,
|
|
20
|
-
enumerable: true,
|
|
21
|
-
configurable: true,
|
|
22
|
-
writable: true
|
|
23
|
-
});
|
|
24
|
-
} else {
|
|
25
|
-
obj[key] = value;
|
|
26
|
-
}
|
|
27
|
-
return obj;
|
|
28
|
-
}
|
|
29
|
-
const defaultLoggerAdapter = {
|
|
30
|
-
initialize (options) {
|
|
31
|
-
if (options.loggerLevel) {
|
|
32
|
-
_logger.logger.setLevel(options.loggerLevel);
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
setLevel (level) {
|
|
36
|
-
_logger.logger.setLevel(level);
|
|
37
|
-
},
|
|
38
|
-
debug (message, ...args) {
|
|
39
|
-
_logger.logger.debug(message, ...args);
|
|
40
|
-
},
|
|
41
|
-
info (message, ...args) {
|
|
42
|
-
_logger.logger.info(message, ...args);
|
|
43
|
-
},
|
|
44
|
-
warn (message, ...args) {
|
|
45
|
-
_logger.logger.warn(message, ...args);
|
|
46
|
-
},
|
|
47
|
-
error (message, ...args) {
|
|
48
|
-
_logger.logger.error(message, ...args);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const defaultMonitoringAdapter = {
|
|
52
|
-
initialize () {
|
|
53
|
-
(0, _monitoring.initMonitoring)();
|
|
54
|
-
},
|
|
55
|
-
captureError (error, metadata) {
|
|
56
|
-
try {
|
|
57
|
-
const service = (0, _monitoring.initMonitoring)();
|
|
58
|
-
service.captureError(error, metadata);
|
|
59
|
-
} catch {
|
|
60
|
-
_logger.logger.error('监控适配器上报失败', error, metadata);
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
reportMetric (name, value, tags) {
|
|
64
|
-
_logger.logger.debug(`metric:${name}`, {
|
|
65
|
-
value,
|
|
66
|
-
tags
|
|
67
|
-
});
|
|
68
|
-
},
|
|
69
|
-
reportPhase (metric) {
|
|
70
|
-
_logger.logger.debug('kernel.phase.metric', metric);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
let DefaultStateAdapter = class DefaultStateAdapter {
|
|
74
|
-
initialize() {
|
|
75
|
-
this.instance = new _state.StateManager({
|
|
76
|
-
enableRegistry: true,
|
|
77
|
-
defaultScope: 'app'
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
getInstance() {
|
|
81
|
-
if (!this.instance) {
|
|
82
|
-
this.initialize();
|
|
83
|
-
}
|
|
84
|
-
return this.instance;
|
|
85
|
-
}
|
|
86
|
-
destroy() {
|
|
87
|
-
if (this.instance) {
|
|
88
|
-
this.instance.destroy();
|
|
89
|
-
this.instance = null;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
constructor(){
|
|
93
|
-
_define_property(this, "instance", null);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
let DefaultEventBusAdapter = class DefaultEventBusAdapter {
|
|
97
|
-
initialize(options) {
|
|
98
|
-
this.bus = new _AppEventBus.AppEventBus({
|
|
99
|
-
enableTracking: process.env.NODE_ENV === 'development',
|
|
100
|
-
maxHistorySize: 100,
|
|
101
|
-
enableValidation: false,
|
|
102
|
-
enablePerformanceMonitoring: process.env.NODE_ENV === 'development',
|
|
103
|
-
instanceId: options.instanceId
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
emit(event, payload) {
|
|
107
|
-
if (!this.bus) {
|
|
108
|
-
this.initialize({});
|
|
109
|
-
}
|
|
110
|
-
this.bus.emit(event, payload);
|
|
111
|
-
}
|
|
112
|
-
on(event, handler) {
|
|
113
|
-
if (!this.bus) {
|
|
114
|
-
this.initialize({});
|
|
115
|
-
}
|
|
116
|
-
return this.bus.on(event, handler);
|
|
117
|
-
}
|
|
118
|
-
destroy() {
|
|
119
|
-
if (this.bus) {
|
|
120
|
-
this.bus.clear();
|
|
121
|
-
this.bus = null;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
constructor(){
|
|
125
|
-
_define_property(this, "bus", null);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
const defaultI18nAdapter = {
|
|
129
|
-
initialize (snapshot) {
|
|
130
|
-
(0, _library.setupI18n)(snapshot.resources || {});
|
|
131
|
-
(0, _library.setLang)(snapshot.locale);
|
|
132
|
-
},
|
|
133
|
-
setLocale (locale) {
|
|
134
|
-
(0, _library.setLang)(locale);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
const defaultThemeAdapter = {
|
|
138
|
-
initialize (snapshot) {
|
|
139
|
-
if (typeof document === 'undefined') {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
applyThemeToDocument(snapshot);
|
|
143
|
-
},
|
|
144
|
-
apply (snapshot) {
|
|
145
|
-
if (typeof document === 'undefined') {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
applyThemeToDocument(snapshot);
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
function applyThemeToDocument(theme) {
|
|
152
|
-
const root = document.documentElement;
|
|
153
|
-
root.classList.remove('light', 'dark');
|
|
154
|
-
const resolvedMode = theme.mode === 'system' ? window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : theme.mode;
|
|
155
|
-
root.classList.add(resolvedMode);
|
|
156
|
-
if (theme.primaryColor) {
|
|
157
|
-
root.style.setProperty('--app-primary-color', theme.primaryColor);
|
|
158
|
-
}
|
|
159
|
-
if (theme.compatibility?.shadcn) {
|
|
160
|
-
Object.entries(theme.compatibility.shadcn).forEach(([key, value])=>{
|
|
161
|
-
root.style.setProperty(`--${key}`, String(value));
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const defaultErrorHandler = {
|
|
166
|
-
async handle (error) {
|
|
167
|
-
_logger.logger.error('Kernel 启动失败', error);
|
|
168
|
-
return {
|
|
169
|
-
handled: true,
|
|
170
|
-
shouldThrow: true
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
function resolveKernelAdapters(options) {
|
|
175
|
-
return {
|
|
176
|
-
logger: options.adapters?.logger || defaultLoggerAdapter,
|
|
177
|
-
monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,
|
|
178
|
-
state: options.adapters?.state || new DefaultStateAdapter(),
|
|
179
|
-
eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),
|
|
180
|
-
i18n: options.adapters?.i18n || defaultI18nAdapter,
|
|
181
|
-
theme: options.adapters?.theme || defaultThemeAdapter,
|
|
182
|
-
errorHandler: options.adapters?.errorHandler || defaultErrorHandler
|
|
183
|
-
};
|
|
184
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"resolveKernelAdapters",{enumerable:true,get:function(){return resolveKernelAdapters}});const _logger=require("@vlian/logger");const _monitoring=require("@vlian/monitoring");const _state=require("../../state");const _AppEventBus=require("../event/AppEventBus");const _library=require("../../library");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}const defaultLoggerAdapter={initialize(options){if(options.loggerLevel){_logger.logger.setLevel(options.loggerLevel)}},setLevel(level){_logger.logger.setLevel(level)},debug(message,...args){_logger.logger.debug(message,...args)},info(message,...args){_logger.logger.info(message,...args)},warn(message,...args){_logger.logger.warn(message,...args)},error(message,...args){_logger.logger.error(message,...args)}};const defaultMonitoringAdapter={initialize(){(0,_monitoring.initMonitoring)()},captureError(error,metadata){try{const service=(0,_monitoring.initMonitoring)();service.captureError(error,metadata)}catch{_logger.logger.error("监控适配器上报失败",error,metadata)}},reportMetric(name,value,tags){_logger.logger.debug(`metric:${name}`,{value,tags})},reportPhase(metric){_logger.logger.debug("kernel.phase.metric",metric)}};let DefaultStateAdapter=class DefaultStateAdapter{initialize(){this.instance=new _state.StateManager({enableRegistry:true,defaultScope:"app"})}getInstance(){if(!this.instance){this.initialize()}return this.instance}destroy(){if(this.instance){this.instance.destroy();this.instance=null}}constructor(){_define_property(this,"instance",null)}};let DefaultEventBusAdapter=class DefaultEventBusAdapter{initialize(options){this.bus=new _AppEventBus.AppEventBus({enableTracking:process.env.NODE_ENV==="development",maxHistorySize:100,enableValidation:false,enablePerformanceMonitoring:process.env.NODE_ENV==="development",instanceId:options.instanceId})}emit(event,payload){if(!this.bus){this.initialize({})}this.bus.emit(event,payload)}on(event,handler){if(!this.bus){this.initialize({})}return this.bus.on(event,handler)}destroy(){if(this.bus){this.bus.clear();this.bus=null}}constructor(){_define_property(this,"bus",null)}};const defaultI18nAdapter={initialize(snapshot){(0,_library.setupI18n)(snapshot.resources||{});(0,_library.setLang)(snapshot.locale)},setLocale(locale){(0,_library.setLang)(locale)}};const defaultThemeAdapter={initialize(snapshot){if(typeof document==="undefined"){return}applyThemeToDocument(snapshot)},apply(snapshot){if(typeof document==="undefined"){return}applyThemeToDocument(snapshot)}};function applyThemeToDocument(theme){const root=document.documentElement;root.classList.remove("light","dark");const resolvedMode=theme.mode==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":theme.mode;root.classList.add(resolvedMode);if(theme.primaryColor){root.style.setProperty("--app-primary-color",theme.primaryColor)}if(theme.compatibility?.shadcn){Object.entries(theme.compatibility.shadcn).forEach(([key,value])=>{root.style.setProperty(`--${key}`,String(value))})}}const defaultErrorHandler={async handle(error){_logger.logger.error("Kernel 启动失败",error);return{handled:true,shouldThrow:true}}};function resolveKernelAdapters(options){return{logger:options.adapters?.logger||defaultLoggerAdapter,monitoring:options.adapters?.monitoring||defaultMonitoringAdapter,state:options.adapters?.state||new DefaultStateAdapter,eventBus:options.adapters?.eventBus||new DefaultEventBusAdapter,i18n:options.adapters?.i18n||defaultI18nAdapter,theme:options.adapters?.theme||defaultThemeAdapter,errorHandler:options.adapters?.errorHandler||defaultErrorHandler}}
|
|
@@ -1,69 +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 KernelBootError () {
|
|
13
|
-
return KernelBootError;
|
|
14
|
-
},
|
|
15
|
-
get toKernelBootError () {
|
|
16
|
-
return toKernelBootError;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
function _define_property(obj, key, value) {
|
|
20
|
-
if (key in obj) {
|
|
21
|
-
Object.defineProperty(obj, key, {
|
|
22
|
-
value: value,
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
writable: true
|
|
26
|
-
});
|
|
27
|
-
} else {
|
|
28
|
-
obj[key] = value;
|
|
29
|
-
}
|
|
30
|
-
return obj;
|
|
31
|
-
}
|
|
32
|
-
function inferRetryable(error) {
|
|
33
|
-
if (error instanceof Error) {
|
|
34
|
-
const message = error.message.toLowerCase();
|
|
35
|
-
return message.includes('timeout') || message.includes('network');
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
let KernelBootError = class KernelBootError extends Error {
|
|
40
|
-
constructor(message, options){
|
|
41
|
-
super(message), _define_property(this, "code", void 0), _define_property(this, "phase", void 0), _define_property(this, "severity", void 0), _define_property(this, "retryable", void 0), _define_property(this, "traceId", void 0), _define_property(this, "cause", void 0);
|
|
42
|
-
this.name = 'KernelBootError';
|
|
43
|
-
this.code = options.code;
|
|
44
|
-
this.phase = options.phase;
|
|
45
|
-
this.traceId = options.traceId;
|
|
46
|
-
this.severity = options.severity ?? 'high';
|
|
47
|
-
this.retryable = options.retryable ?? inferRetryable(options.cause);
|
|
48
|
-
this.cause = options.cause;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
function toKernelBootError(error, phase, traceId) {
|
|
52
|
-
if (error instanceof KernelBootError) {
|
|
53
|
-
return error;
|
|
54
|
-
}
|
|
55
|
-
if (error instanceof Error) {
|
|
56
|
-
return new KernelBootError(error.message, {
|
|
57
|
-
code: 'KERNEL_BOOT_FAILURE',
|
|
58
|
-
phase,
|
|
59
|
-
traceId,
|
|
60
|
-
cause: error
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return new KernelBootError(String(error), {
|
|
64
|
-
code: 'KERNEL_BOOT_FAILURE',
|
|
65
|
-
phase,
|
|
66
|
-
traceId,
|
|
67
|
-
cause: error
|
|
68
|
-
});
|
|
69
|
-
}
|
|
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 KernelBootError(){return KernelBootError},get toKernelBootError(){return toKernelBootError}});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 inferRetryable(error){if(error instanceof Error){const message=error.message.toLowerCase();return message.includes("timeout")||message.includes("network")}return false}let KernelBootError=class KernelBootError extends Error{constructor(message,options){super(message),_define_property(this,"code",void 0),_define_property(this,"phase",void 0),_define_property(this,"severity",void 0),_define_property(this,"retryable",void 0),_define_property(this,"traceId",void 0),_define_property(this,"cause",void 0);this.name="KernelBootError";this.code=options.code;this.phase=options.phase;this.traceId=options.traceId;this.severity=options.severity??"high";this.retryable=options.retryable??inferRetryable(options.cause);this.cause=options.cause}};function toKernelBootError(error,phase,traceId){if(error instanceof KernelBootError){return error}if(error instanceof Error){return new KernelBootError(error.message,{code:"KERNEL_BOOT_FAILURE",phase,traceId,cause:error})}return new KernelBootError(String(error),{code:"KERNEL_BOOT_FAILURE",phase,traceId,cause:error})}
|
|
@@ -1,20 +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 KernelBootError () {
|
|
13
|
-
return _errors.KernelBootError;
|
|
14
|
-
},
|
|
15
|
-
get startKernel () {
|
|
16
|
-
return _startKernel.startKernel;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _startKernel = require("./startKernel");
|
|
20
|
-
const _errors = require("./errors");
|
|
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 KernelBootError(){return _errors.KernelBootError},get startKernel(){return _startKernel.startKernel}});const _startKernel=require("./startKernel");const _errors=require("./errors");
|
|
@@ -1,200 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "startKernel", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return startKernel;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _initialization = require("../initialization");
|
|
12
|
-
const _traceId = require("../../utils/traceId");
|
|
13
|
-
const _errors = require("./errors");
|
|
14
|
-
const _defaultAdapters = require("./defaultAdapters");
|
|
15
|
-
const DEFAULT_THEME = {
|
|
16
|
-
mode: 'light'
|
|
17
|
-
};
|
|
18
|
-
const DEFAULT_I18N = {
|
|
19
|
-
locale: 'zh-CN'
|
|
20
|
-
};
|
|
21
|
-
async function withOptionalTimeout(task, timeoutMs, timeoutMessage = 'Kernel phase timeout') {
|
|
22
|
-
if (!timeoutMs || timeoutMs <= 0) {
|
|
23
|
-
return task();
|
|
24
|
-
}
|
|
25
|
-
return Promise.race([
|
|
26
|
-
task(),
|
|
27
|
-
new Promise((_, reject)=>{
|
|
28
|
-
setTimeout(()=>reject(new Error(timeoutMessage)), timeoutMs);
|
|
29
|
-
})
|
|
30
|
-
]);
|
|
31
|
-
}
|
|
32
|
-
async function startKernel(options = {}) {
|
|
33
|
-
(0, _traceId.initTraceIdGenerator)('kernel');
|
|
34
|
-
const traceId = (0, _traceId.generateTraceId)();
|
|
35
|
-
(0, _traceId.setCurrentTraceId)(traceId);
|
|
36
|
-
const adapters = (0, _defaultAdapters.resolveKernelAdapters)(options);
|
|
37
|
-
const metrics = [];
|
|
38
|
-
let config = {};
|
|
39
|
-
let theme = {
|
|
40
|
-
...DEFAULT_THEME,
|
|
41
|
-
...options.theme || {}
|
|
42
|
-
};
|
|
43
|
-
let i18n = {
|
|
44
|
-
...DEFAULT_I18N,
|
|
45
|
-
...options.locale || {}
|
|
46
|
-
};
|
|
47
|
-
const emitPhaseMetric = (metric)=>{
|
|
48
|
-
metrics.push(metric);
|
|
49
|
-
adapters.monitoring.reportPhase?.(metric);
|
|
50
|
-
adapters.monitoring.reportMetric?.('kernel.phase.duration', metric.duration, {
|
|
51
|
-
phase: metric.phase
|
|
52
|
-
});
|
|
53
|
-
adapters.eventBus.emit('kernel.phase.end', metric);
|
|
54
|
-
};
|
|
55
|
-
const runPhase = async (phase, fn)=>{
|
|
56
|
-
const enabled = options.enabledPhases?.[phase];
|
|
57
|
-
if (enabled === false) {
|
|
58
|
-
adapters.eventBus.emit('kernel.phase.skipped', {
|
|
59
|
-
phase,
|
|
60
|
-
traceId
|
|
61
|
-
});
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const startTime = performance.now();
|
|
65
|
-
adapters.eventBus.emit('kernel.phase.start', {
|
|
66
|
-
phase,
|
|
67
|
-
traceId,
|
|
68
|
-
startTime
|
|
69
|
-
});
|
|
70
|
-
try {
|
|
71
|
-
await withOptionalTimeout(fn, options.performance?.phaseTimeoutMs?.[phase], `Kernel phase "${phase}" timeout`);
|
|
72
|
-
emitPhaseMetric({
|
|
73
|
-
phase,
|
|
74
|
-
startTime,
|
|
75
|
-
endTime: performance.now(),
|
|
76
|
-
duration: performance.now() - startTime
|
|
77
|
-
});
|
|
78
|
-
} catch (error) {
|
|
79
|
-
const bootError = (0, _errors.toKernelBootError)(error, phase, traceId);
|
|
80
|
-
adapters.monitoring.captureError(bootError, {
|
|
81
|
-
phase,
|
|
82
|
-
traceId
|
|
83
|
-
});
|
|
84
|
-
adapters.eventBus.emit('kernel.phase.error', bootError);
|
|
85
|
-
const result = await adapters.errorHandler.handle(bootError);
|
|
86
|
-
if (result.shouldThrow) {
|
|
87
|
-
throw bootError;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
await runPhase('prepare', async ()=>{
|
|
92
|
-
adapters.logger.initialize?.(options);
|
|
93
|
-
adapters.logger.info('Kernel 启动准备完成', {
|
|
94
|
-
traceId
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
await runPhase('services', async ()=>{
|
|
98
|
-
await Promise.all([
|
|
99
|
-
Promise.resolve(adapters.monitoring.initialize?.(options)),
|
|
100
|
-
Promise.resolve(adapters.state.initialize?.(options)),
|
|
101
|
-
Promise.resolve(adapters.eventBus.initialize?.(options))
|
|
102
|
-
]);
|
|
103
|
-
});
|
|
104
|
-
await runPhase('config', async ()=>{
|
|
105
|
-
if (options.configLoader) {
|
|
106
|
-
try {
|
|
107
|
-
config = await options.configLoader();
|
|
108
|
-
} catch (error) {
|
|
109
|
-
config = options.configFallback || {};
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
config = options.configFallback || {};
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
await runPhase('i18n', async ()=>{
|
|
116
|
-
await adapters.i18n.initialize(i18n);
|
|
117
|
-
});
|
|
118
|
-
await runPhase('theme', async ()=>{
|
|
119
|
-
await Promise.resolve(adapters.theme.initialize?.(theme));
|
|
120
|
-
await adapters.theme.apply(theme);
|
|
121
|
-
});
|
|
122
|
-
await runPhase('init', async ()=>{
|
|
123
|
-
await options.lifecycle?.beforeInitialization?.();
|
|
124
|
-
const initContext = await (0, _initialization.initialization)({
|
|
125
|
-
loggerLevel: options.loggerLevel,
|
|
126
|
-
locale: i18n.resources,
|
|
127
|
-
lifecycle: options.lifecycle
|
|
128
|
-
});
|
|
129
|
-
await options.lifecycle?.afterInitialization?.(initContext);
|
|
130
|
-
});
|
|
131
|
-
await runPhase('ready', async ()=>{
|
|
132
|
-
adapters.eventBus.emit('kernel.ready', {
|
|
133
|
-
traceId,
|
|
134
|
-
theme,
|
|
135
|
-
locale: i18n.locale,
|
|
136
|
-
config
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
if (options.enablePostReady !== false) {
|
|
140
|
-
await runPhase('postReady', async ()=>{
|
|
141
|
-
adapters.eventBus.emit('kernel.postReady', {
|
|
142
|
-
traceId
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
const setTheme = async (partial)=>{
|
|
147
|
-
theme = {
|
|
148
|
-
...theme,
|
|
149
|
-
...partial
|
|
150
|
-
};
|
|
151
|
-
await adapters.theme.apply(theme);
|
|
152
|
-
adapters.eventBus.emit('kernel.theme.changed', {
|
|
153
|
-
traceId,
|
|
154
|
-
theme
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
const setThemeMode = async (mode)=>{
|
|
158
|
-
await setTheme({
|
|
159
|
-
mode
|
|
160
|
-
});
|
|
161
|
-
};
|
|
162
|
-
const setLocale = async (locale)=>{
|
|
163
|
-
i18n = {
|
|
164
|
-
...i18n,
|
|
165
|
-
locale
|
|
166
|
-
};
|
|
167
|
-
await adapters.i18n.setLocale(locale);
|
|
168
|
-
adapters.eventBus.emit('kernel.i18n.changed', {
|
|
169
|
-
traceId,
|
|
170
|
-
locale
|
|
171
|
-
});
|
|
172
|
-
};
|
|
173
|
-
return {
|
|
174
|
-
traceId,
|
|
175
|
-
getTheme: ()=>({
|
|
176
|
-
...theme
|
|
177
|
-
}),
|
|
178
|
-
setTheme,
|
|
179
|
-
setThemeMode,
|
|
180
|
-
getI18n: ()=>({
|
|
181
|
-
...i18n
|
|
182
|
-
}),
|
|
183
|
-
setLocale,
|
|
184
|
-
getConfig: ()=>({
|
|
185
|
-
...config
|
|
186
|
-
}),
|
|
187
|
-
getStateManager: ()=>adapters.state.getInstance(),
|
|
188
|
-
getEventBus: ()=>adapters.eventBus,
|
|
189
|
-
getMetrics: ()=>[
|
|
190
|
-
...metrics
|
|
191
|
-
],
|
|
192
|
-
destroy: ()=>{
|
|
193
|
-
adapters.state.destroy?.();
|
|
194
|
-
adapters.eventBus.destroy?.();
|
|
195
|
-
adapters.eventBus.emit('kernel.destroyed', {
|
|
196
|
-
traceId
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"startKernel",{enumerable:true,get:function(){return startKernel}});const _initialization=require("../initialization");const _traceId=require("../../utils/traceId");const _errors=require("./errors");const _defaultAdapters=require("./defaultAdapters");const DEFAULT_THEME={mode:"light"};const DEFAULT_I18N={locale:"zh-CN"};async function withOptionalTimeout(task,timeoutMs,timeoutMessage="Kernel phase timeout"){if(!timeoutMs||timeoutMs<=0){return task()}return Promise.race([task(),new Promise((_,reject)=>{setTimeout(()=>reject(new Error(timeoutMessage)),timeoutMs)})])}async function startKernel(options={}){(0,_traceId.initTraceIdGenerator)("kernel");const traceId=(0,_traceId.generateTraceId)();(0,_traceId.setCurrentTraceId)(traceId);const adapters=(0,_defaultAdapters.resolveKernelAdapters)(options);const metrics=[];let config={};let theme={...DEFAULT_THEME,...options.theme||{}};let i18n={...DEFAULT_I18N,...options.locale||{}};const emitPhaseMetric=metric=>{metrics.push(metric);adapters.monitoring.reportPhase?.(metric);adapters.monitoring.reportMetric?.("kernel.phase.duration",metric.duration,{phase:metric.phase});adapters.eventBus.emit("kernel.phase.end",metric)};const runPhase=async(phase,fn)=>{const enabled=options.enabledPhases?.[phase];if(enabled===false){adapters.eventBus.emit("kernel.phase.skipped",{phase,traceId});return}const startTime=performance.now();adapters.eventBus.emit("kernel.phase.start",{phase,traceId,startTime});try{await withOptionalTimeout(fn,options.performance?.phaseTimeoutMs?.[phase],`Kernel phase "${phase}" timeout`);emitPhaseMetric({phase,startTime,endTime:performance.now(),duration:performance.now()-startTime})}catch(error){const bootError=(0,_errors.toKernelBootError)(error,phase,traceId);adapters.monitoring.captureError(bootError,{phase,traceId});adapters.eventBus.emit("kernel.phase.error",bootError);const result=await adapters.errorHandler.handle(bootError);if(result.shouldThrow){throw bootError}}};await runPhase("prepare",async()=>{adapters.logger.initialize?.(options);adapters.logger.info("Kernel 启动准备完成",{traceId})});await runPhase("services",async()=>{await Promise.all([Promise.resolve(adapters.monitoring.initialize?.(options)),Promise.resolve(adapters.state.initialize?.(options)),Promise.resolve(adapters.eventBus.initialize?.(options))])});await runPhase("config",async()=>{if(options.configLoader){try{config=await options.configLoader()}catch(error){config=options.configFallback||{}}}else{config=options.configFallback||{}}});await runPhase("i18n",async()=>{await adapters.i18n.initialize(i18n)});await runPhase("theme",async()=>{await Promise.resolve(adapters.theme.initialize?.(theme));await adapters.theme.apply(theme)});await runPhase("init",async()=>{await options.lifecycle?.beforeInitialization?.();const initContext=await (0,_initialization.initialization)({loggerLevel:options.loggerLevel,locale:i18n.resources,lifecycle:options.lifecycle});await options.lifecycle?.afterInitialization?.(initContext)});await runPhase("ready",async()=>{adapters.eventBus.emit("kernel.ready",{traceId,theme,locale:i18n.locale,config})});if(options.enablePostReady!==false){await runPhase("postReady",async()=>{adapters.eventBus.emit("kernel.postReady",{traceId})})}const setTheme=async partial=>{theme={...theme,...partial};await adapters.theme.apply(theme);adapters.eventBus.emit("kernel.theme.changed",{traceId,theme})};const setThemeMode=async mode=>{await setTheme({mode})};const setLocale=async locale=>{i18n={...i18n,locale};await adapters.i18n.setLocale(locale);adapters.eventBus.emit("kernel.i18n.changed",{traceId,locale})};return{traceId,getTheme:()=>({...theme}),setTheme,setThemeMode,getI18n:()=>({...i18n}),setLocale,getConfig:()=>({...config}),getStateManager:()=>adapters.state.getInstance(),getEventBus:()=>adapters.eventBus,getMetrics:()=>[...metrics],destroy:()=>{adapters.state.destroy?.();adapters.eventBus.destroy?.();adapters.eventBus.emit("kernel.destroyed",{traceId})}}}
|
package/dist/core/middleware.cjs
CHANGED
|
@@ -1,73 +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 MiddlewareManager () {
|
|
13
|
-
return MiddlewareManager;
|
|
14
|
-
},
|
|
15
|
-
get middlewareManager () {
|
|
16
|
-
return middlewareManager;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
function _define_property(obj, key, value) {
|
|
20
|
-
if (key in obj) {
|
|
21
|
-
Object.defineProperty(obj, key, {
|
|
22
|
-
value: value,
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
writable: true
|
|
26
|
-
});
|
|
27
|
-
} else {
|
|
28
|
-
obj[key] = value;
|
|
29
|
-
}
|
|
30
|
-
return obj;
|
|
31
|
-
}
|
|
32
|
-
let MiddlewareManager = class MiddlewareManager {
|
|
33
|
-
/**
|
|
34
|
-
* 添加中间件
|
|
35
|
-
*/ use(middleware) {
|
|
36
|
-
this.middlewares.push(middleware);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* 移除中间件
|
|
40
|
-
*/ remove(middleware) {
|
|
41
|
-
const index = this.middlewares.indexOf(middleware);
|
|
42
|
-
if (index > -1) {
|
|
43
|
-
this.middlewares.splice(index, 1);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* 清空所有中间件
|
|
48
|
-
*/ clear() {
|
|
49
|
-
this.middlewares = [];
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 执行中间件链
|
|
53
|
-
*/ async execute(options, finalHandler) {
|
|
54
|
-
let index = 0;
|
|
55
|
-
const next = async ()=>{
|
|
56
|
-
if (index >= this.middlewares.length) {
|
|
57
|
-
return finalHandler();
|
|
58
|
-
}
|
|
59
|
-
const middleware = this.middlewares[index++];
|
|
60
|
-
return middleware(options, next);
|
|
61
|
-
};
|
|
62
|
-
return next();
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* 获取中间件数量
|
|
66
|
-
*/ get count() {
|
|
67
|
-
return this.middlewares.length;
|
|
68
|
-
}
|
|
69
|
-
constructor(){
|
|
70
|
-
_define_property(this, "middlewares", []);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
const middlewareManager = new MiddlewareManager();
|
|
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 MiddlewareManager(){return MiddlewareManager},get middlewareManager(){return middlewareManager}});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 MiddlewareManager=class MiddlewareManager{use(middleware){this.middlewares.push(middleware)}remove(middleware){const index=this.middlewares.indexOf(middleware);if(index>-1){this.middlewares.splice(index,1)}}clear(){this.middlewares=[]}async execute(options,finalHandler){let index=0;const next=async()=>{if(index>=this.middlewares.length){return finalHandler()}const middleware=this.middlewares[index++];return middleware(options,next)};return next()}get count(){return this.middlewares.length}constructor(){_define_property(this,"middlewares",[])}};const middlewareManager=new MiddlewareManager;
|