@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.
Files changed (154) hide show
  1. package/dist/analytics/index.cjs +1 -22
  2. package/dist/analytics.umd.js +1 -1
  3. package/dist/components/LocaleSwitch.cjs +1 -116
  4. package/dist/components/ThemeSwitch.cjs +1 -115
  5. package/dist/components/index.cjs +1 -20
  6. package/dist/components/persistence.cjs +1 -58
  7. package/dist/core/Test.cjs +1 -64
  8. package/dist/core/app/AppContext.cjs +1 -348
  9. package/dist/core/app/AppContext.types.cjs +1 -4
  10. package/dist/core/app/BasicLayout.cjs +1 -122
  11. package/dist/core/app/DefaultApp.cjs +1 -150
  12. package/dist/core/app/index.cjs +1 -41
  13. package/dist/core/config/AppConfig.cjs +1 -139
  14. package/dist/core/config/ConfigLoader.cjs +1 -323
  15. package/dist/core/config/ConfigValidator.cjs +2 -133
  16. package/dist/core/config/index.cjs +1 -28
  17. package/dist/core/dev/DevTools.cjs +1 -226
  18. package/dist/core/error/ErrorBoundary.cjs +1 -401
  19. package/dist/core/error/ErrorHandler.cjs +1 -275
  20. package/dist/core/error/index.cjs +1 -34
  21. package/dist/core/event/AppEventBus.cjs +1 -444
  22. package/dist/core/event/frameworkEvents.cjs +1 -141
  23. package/dist/core/event/hooks.cjs +1 -69
  24. package/dist/core/event/index.cjs +1 -41
  25. package/dist/core/event/types.cjs +1 -62
  26. package/dist/core/event/useEventBus.cjs +1 -25
  27. package/dist/core/index.cjs +1 -140
  28. package/dist/core/initialization/InitializationErrorThrower.cjs +1 -75
  29. package/dist/core/initialization/index.cjs +1 -26
  30. package/dist/core/initialization/initialization.cjs +1 -64
  31. package/dist/core/initialization/initializationErrorState.cjs +1 -66
  32. package/dist/core/kernel/defaultAdapters.cjs +1 -184
  33. package/dist/core/kernel/errors.cjs +1 -69
  34. package/dist/core/kernel/index.cjs +1 -20
  35. package/dist/core/kernel/startKernel.cjs +1 -200
  36. package/dist/core/kernel/types.cjs +1 -4
  37. package/dist/core/middleware.cjs +1 -73
  38. package/dist/core/plugin/PluginEventBus.cjs +1 -298
  39. package/dist/core/plugin/PluginSandbox.cjs +1 -137
  40. package/dist/core/plugin.cjs +1 -494
  41. package/dist/core/router/RouterManager.cjs +1 -286
  42. package/dist/core/router/adapter/AdapterManager.cjs +1 -235
  43. package/dist/core/router/adapter/index.cjs +1 -22
  44. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -128
  45. package/dist/core/router/adapter/react-router/index.cjs +1 -20
  46. package/dist/core/router/adapter/types.cjs +1 -6
  47. package/dist/core/router/dev/RouterDevTools.cjs +1 -260
  48. package/dist/core/router/dev/index.cjs +1 -20
  49. package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -193
  50. package/dist/core/router/dynamic/index.cjs +1 -20
  51. package/dist/core/router/errors/RouterError.cjs +1 -61
  52. package/dist/core/router/errors/index.cjs +1 -20
  53. package/dist/core/router/index.cjs +1 -36
  54. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -144
  55. package/dist/core/router/lifecycle/index.cjs +1 -20
  56. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -193
  57. package/dist/core/router/middleware/auth.cjs +1 -66
  58. package/dist/core/router/middleware/index.cjs +1 -22
  59. package/dist/core/router/middleware/types.cjs +1 -6
  60. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -227
  61. package/dist/core/router/monitoring/index.cjs +1 -20
  62. package/dist/core/router/navigation/RouterNavigation.cjs +1 -239
  63. package/dist/core/router/navigation/index.cjs +1 -20
  64. package/dist/core/router/performance/RouteCache.cjs +1 -305
  65. package/dist/core/router/performance/RoutePreloader.cjs +1 -292
  66. package/dist/core/router/performance/index.cjs +1 -21
  67. package/dist/core/router/plugin/RouterPluginManager.cjs +1 -262
  68. package/dist/core/router/plugin/index.cjs +1 -21
  69. package/dist/core/router/plugin/types.cjs +1 -39
  70. package/dist/core/router/types.cjs +1 -4
  71. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -129
  72. package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -250
  73. package/dist/core/router/utils/transform.cjs +1 -780
  74. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -83
  75. package/dist/core/router/validation/index.cjs +1 -21
  76. package/dist/core/router/validation/schema.cjs +1 -159
  77. package/dist/core/router/version/RouteVersionManager.cjs +1 -205
  78. package/dist/core/router/version/index.cjs +1 -20
  79. package/dist/core/splash/SplashScreen.cjs +1 -341
  80. package/dist/core/splash/index.cjs +1 -22
  81. package/dist/core/splash/splashScreenUtils.cjs +1 -38
  82. package/dist/core/startup/AppInstance.cjs +1 -239
  83. package/dist/core/startup/environment.cjs +1 -169
  84. package/dist/core/startup/index.cjs +1 -23
  85. package/dist/core/startup/initializeServices.cjs +1 -226
  86. package/dist/core/startup/performanceTracker.cjs +1 -179
  87. package/dist/core/startup/renderApp.cjs +1 -314
  88. package/dist/core/startup/startApp.cjs +1 -317
  89. package/dist/core/types.cjs +1 -4
  90. package/dist/index.cjs +1 -52
  91. package/dist/index.umd.cjs +1 -27
  92. package/dist/index.umd.js +1 -1
  93. package/dist/kernel/constants.cjs +1 -65
  94. package/dist/kernel/index.cjs +1 -38
  95. package/dist/kernel/kernel.cjs +1 -295
  96. package/dist/kernel/manager/cacheManager.cjs +1 -46
  97. package/dist/kernel/manager/i18n/I18nManager.cjs +1 -91
  98. package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -60
  99. package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -86
  100. package/dist/kernel/manager/i18n/index.cjs +1 -11
  101. package/dist/kernel/manager/i18nManager.cjs +1 -11
  102. package/dist/kernel/manager/index.cjs +1 -28
  103. package/dist/kernel/manager/logger/LoggerManager.cjs +1 -107
  104. package/dist/kernel/manager/logger/index.cjs +1 -11
  105. package/dist/kernel/manager/logger/logger.persistence.cjs +1 -62
  106. package/dist/kernel/manager/logger/logger.schema.cjs +1 -74
  107. package/dist/kernel/manager/loggerManager.cjs +1 -11
  108. package/dist/kernel/manager/theme/ThemeManager.cjs +1 -84
  109. package/dist/kernel/manager/theme/index.cjs +1 -11
  110. package/dist/kernel/manager/theme/theme.dom.cjs +1 -61
  111. package/dist/kernel/manager/theme/theme.persistence.cjs +1 -57
  112. package/dist/kernel/manager/theme/theme.schema.cjs +1 -122
  113. package/dist/kernel/manager/themeManager.cjs +1 -11
  114. package/dist/kernel/types.cjs +1 -4
  115. package/dist/library/index.cjs +1 -19
  116. package/dist/library/locale/index.cjs +1 -39
  117. package/dist/library/locale/langs/en-us/index.cjs +1 -32
  118. package/dist/library/locale/langs/zh-cn/index.cjs +1 -32
  119. package/dist/library/locale/types.cjs +1 -4
  120. package/dist/library/storage/cache.cjs +1 -243
  121. package/dist/library/storage/encryption.cjs +1 -147
  122. package/dist/library/storage/index.cjs +1 -124
  123. package/dist/state/StateManager.cjs +1 -166
  124. package/dist/state/adapters/AdapterFactory.cjs +1 -89
  125. package/dist/state/adapters/DefaultAdapter.cjs +1 -75
  126. package/dist/state/adapters/ReduxAdapter.cjs +1 -443
  127. package/dist/state/adapters/ZustandAdapter.cjs +1 -69
  128. package/dist/state/adapters/index.cjs +1 -44
  129. package/dist/state/adapters/types.cjs +1 -20
  130. package/dist/state/core/DerivedStateInstance.cjs +1 -174
  131. package/dist/state/core/StateInstance.cjs +1 -170
  132. package/dist/state/core/StateRegistry.cjs +1 -110
  133. package/dist/state/core/StateScope.cjs +1 -137
  134. package/dist/state/core/index.cjs +1 -30
  135. package/dist/state/index.cjs +1 -30
  136. package/dist/state/types.cjs +1 -12
  137. package/dist/state.umd.js +1 -1
  138. package/dist/types.cjs +1 -4
  139. package/dist/utils/analytics.cjs +1 -217
  140. package/dist/utils/configSecurity.cjs +3 -182
  141. package/dist/utils/csrf.cjs +1 -18
  142. package/dist/utils/errors/ErrorCodes.cjs +1 -25
  143. package/dist/utils/errors.cjs +1 -111
  144. package/dist/utils/index.cjs +1 -135
  145. package/dist/utils/logger.cjs +1 -25
  146. package/dist/utils/logger.types.cjs +1 -11
  147. package/dist/utils/monitoring.cjs +1 -18
  148. package/dist/utils/performance.cjs +1 -22
  149. package/dist/utils/resourceLoader.cjs +1 -22
  150. package/dist/utils/runtimeSecurity.cjs +1 -11
  151. package/dist/utils/security.cjs +1 -19
  152. package/dist/utils/traceId.cjs +1 -37
  153. package/dist/utils/validation.cjs +1 -19
  154. package/package.json +7 -3
@@ -1,57 +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_THEME_CACHE_KEY () {
13
- return DEFAULT_THEME_CACHE_KEY;
14
- },
15
- get loadThemeFromCache () {
16
- return loadThemeFromCache;
17
- },
18
- get saveThemeToCache () {
19
- return saveThemeToCache;
20
- }
21
- });
22
- const _themeschema = require("./theme.schema");
23
- const DEFAULT_THEME_CACHE_KEY = 'vlian:kernel:theme';
24
- function resolvePersistenceContext(persistence) {
25
- if (persistence?.enabled !== true) {
26
- return null;
27
- }
28
- return {
29
- key: persistence.key || DEFAULT_THEME_CACHE_KEY
30
- };
31
- }
32
- async function loadThemeFromCache(cacheManager, persistence, fallback) {
33
- const persistenceContext = resolvePersistenceContext(persistence);
34
- const safeFallback = (0, _themeschema.cloneTheme)(fallback);
35
- if (!persistenceContext) {
36
- return safeFallback;
37
- }
38
- try {
39
- const cached = await cacheManager.get(persistenceContext.key, {
40
- defaultValue: safeFallback
41
- });
42
- return (0, _themeschema.normalizeTheme)(cached, safeFallback);
43
- } catch {
44
- return safeFallback;
45
- }
46
- }
47
- async function saveThemeToCache(cacheManager, persistence, theme) {
48
- const persistenceContext = resolvePersistenceContext(persistence);
49
- if (!persistenceContext) {
50
- return;
51
- }
52
- try {
53
- await cacheManager.set(persistenceContext.key, (0, _themeschema.cloneTheme)(theme));
54
- } catch {
55
- // Ignore persistence failures and keep theme updates in memory.
56
- }
57
- }
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_THEME_CACHE_KEY(){return DEFAULT_THEME_CACHE_KEY},get loadThemeFromCache(){return loadThemeFromCache},get saveThemeToCache(){return saveThemeToCache}});const _themeschema=require("./theme.schema");const DEFAULT_THEME_CACHE_KEY="vlian:kernel:theme";function resolvePersistenceContext(persistence){if(persistence?.enabled!==true){return null}return{key:persistence.key||DEFAULT_THEME_CACHE_KEY}}async function loadThemeFromCache(cacheManager,persistence,fallback){const persistenceContext=resolvePersistenceContext(persistence);const safeFallback=(0,_themeschema.cloneTheme)(fallback);if(!persistenceContext){return safeFallback}try{const cached=await cacheManager.get(persistenceContext.key,{defaultValue:safeFallback});return(0,_themeschema.normalizeTheme)(cached,safeFallback)}catch{return safeFallback}}async function saveThemeToCache(cacheManager,persistence,theme){const persistenceContext=resolvePersistenceContext(persistence);if(!persistenceContext){return}try{await cacheManager.set(persistenceContext.key,(0,_themeschema.cloneTheme)(theme))}catch{}}
@@ -1,122 +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 cloneTheme () {
13
- return cloneTheme;
14
- },
15
- get isThemeEqual () {
16
- return isThemeEqual;
17
- },
18
- get mergeTheme () {
19
- return mergeTheme;
20
- },
21
- get normalizeTheme () {
22
- return normalizeTheme;
23
- },
24
- get sanitizeTokens () {
25
- return sanitizeTokens;
26
- }
27
- });
28
- const VALID_THEME_MODES = new Set([
29
- 'light',
30
- 'dark',
31
- 'system'
32
- ]);
33
- const TOKEN_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_-]*$/;
34
- function isPlainObject(value) {
35
- return Object.prototype.toString.call(value) === '[object Object]';
36
- }
37
- function hasOwnProperty(value, key) {
38
- return Object.prototype.hasOwnProperty.call(value, key);
39
- }
40
- function cloneTheme(theme) {
41
- return {
42
- ...theme,
43
- ...theme.tokens ? {
44
- tokens: {
45
- ...theme.tokens
46
- }
47
- } : {}
48
- };
49
- }
50
- function sanitizeTokens(tokens) {
51
- if (!isPlainObject(tokens)) {
52
- return undefined;
53
- }
54
- const sanitizedTokens = {};
55
- for (const [token, tokenValue] of Object.entries(tokens)){
56
- if (!TOKEN_NAME_PATTERN.test(token)) {
57
- continue;
58
- }
59
- if (typeof tokenValue === 'string' || typeof tokenValue === 'number') {
60
- sanitizedTokens[token] = tokenValue;
61
- }
62
- }
63
- return Object.keys(sanitizedTokens).length > 0 ? sanitizedTokens : undefined;
64
- }
65
- function normalizeTheme(value, fallback) {
66
- const source = isPlainObject(value) ? value : {};
67
- const mode = VALID_THEME_MODES.has(source.mode) ? source.mode : fallback.mode;
68
- const primaryColor = typeof source.primaryColor === 'string' && source.primaryColor.trim() ? source.primaryColor : fallback.primaryColor;
69
- const fallbackTokens = sanitizeTokens(fallback.tokens);
70
- const incomingTokens = sanitizeTokens(source.tokens);
71
- return {
72
- mode,
73
- ...primaryColor ? {
74
- primaryColor
75
- } : {},
76
- ...incomingTokens || fallbackTokens ? {
77
- tokens: {
78
- ...fallbackTokens || {},
79
- ...incomingTokens || {}
80
- }
81
- } : {}
82
- };
83
- }
84
- function mergeTheme(current, next) {
85
- const mergedTheme = {
86
- mode: hasOwnProperty(next, 'mode') && VALID_THEME_MODES.has(next.mode) ? next.mode : current.mode,
87
- ...hasOwnProperty(next, 'primaryColor') ? typeof next.primaryColor === 'string' && next.primaryColor.trim() ? {
88
- primaryColor: next.primaryColor
89
- } : {} : current.primaryColor ? {
90
- primaryColor: current.primaryColor
91
- } : {},
92
- ...hasOwnProperty(next, 'tokens') ? sanitizeTokens(next.tokens) ? {
93
- tokens: sanitizeTokens(next.tokens)
94
- } : {} : current.tokens ? {
95
- tokens: {
96
- ...current.tokens
97
- }
98
- } : {}
99
- };
100
- return normalizeTheme(mergedTheme, DEFAULT_EMPTY_THEME);
101
- }
102
- const DEFAULT_EMPTY_THEME = {
103
- mode: 'light'
104
- };
105
- function isThemeEqual(left, right) {
106
- if (left.mode !== right.mode || left.primaryColor !== right.primaryColor) {
107
- return false;
108
- }
109
- const leftTokens = left.tokens || {};
110
- const rightTokens = right.tokens || {};
111
- const leftKeys = Object.keys(leftTokens);
112
- const rightKeys = Object.keys(rightTokens);
113
- if (leftKeys.length !== rightKeys.length) {
114
- return false;
115
- }
116
- for (const key of leftKeys){
117
- if (leftTokens[key] !== rightTokens[key]) {
118
- return false;
119
- }
120
- }
121
- return true;
122
- }
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 cloneTheme(){return cloneTheme},get isThemeEqual(){return isThemeEqual},get mergeTheme(){return mergeTheme},get normalizeTheme(){return normalizeTheme},get sanitizeTokens(){return sanitizeTokens}});const VALID_THEME_MODES=new Set(["light","dark","system"]);const TOKEN_NAME_PATTERN=/^[A-Za-z_][A-Za-z0-9_-]*$/;function isPlainObject(value){return Object.prototype.toString.call(value)==="[object Object]"}function hasOwnProperty(value,key){return Object.prototype.hasOwnProperty.call(value,key)}function cloneTheme(theme){return{...theme,...theme.tokens?{tokens:{...theme.tokens}}:{}}}function sanitizeTokens(tokens){if(!isPlainObject(tokens)){return undefined}const sanitizedTokens={};for(const[token,tokenValue]of Object.entries(tokens)){if(!TOKEN_NAME_PATTERN.test(token)){continue}if(typeof tokenValue==="string"||typeof tokenValue==="number"){sanitizedTokens[token]=tokenValue}}return Object.keys(sanitizedTokens).length>0?sanitizedTokens:undefined}function normalizeTheme(value,fallback){const source=isPlainObject(value)?value:{};const mode=VALID_THEME_MODES.has(source.mode)?source.mode:fallback.mode;const primaryColor=typeof source.primaryColor==="string"&&source.primaryColor.trim()?source.primaryColor:fallback.primaryColor;const fallbackTokens=sanitizeTokens(fallback.tokens);const incomingTokens=sanitizeTokens(source.tokens);return{mode,...primaryColor?{primaryColor}:{},...incomingTokens||fallbackTokens?{tokens:{...fallbackTokens||{},...incomingTokens||{}}}:{}}}function mergeTheme(current,next){const mergedTheme={mode:hasOwnProperty(next,"mode")&&VALID_THEME_MODES.has(next.mode)?next.mode:current.mode,...hasOwnProperty(next,"primaryColor")?typeof next.primaryColor==="string"&&next.primaryColor.trim()?{primaryColor:next.primaryColor}:{}:current.primaryColor?{primaryColor:current.primaryColor}:{},...hasOwnProperty(next,"tokens")?sanitizeTokens(next.tokens)?{tokens:sanitizeTokens(next.tokens)}:{}:current.tokens?{tokens:{...current.tokens}}:{}};return normalizeTheme(mergedTheme,DEFAULT_EMPTY_THEME)}const DEFAULT_EMPTY_THEME={mode:"light"};function isThemeEqual(left,right){if(left.mode!==right.mode||left.primaryColor!==right.primaryColor){return false}const leftTokens=left.tokens||{};const rightTokens=right.tokens||{};const leftKeys=Object.keys(leftTokens);const rightKeys=Object.keys(rightTokens);if(leftKeys.length!==rightKeys.length){return false}for(const key of leftKeys){if(leftTokens[key]!==rightTokens[key]){return false}}return true}
@@ -1,11 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "ThemeManager", {
6
- enumerable: true,
7
- get: function() {
8
- return _theme.ThemeManager;
9
- }
10
- });
11
- const _theme = require("./theme");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ThemeManager",{enumerable:true,get:function(){return _theme.ThemeManager}});const _theme=require("./theme");
@@ -1,4 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});
@@ -1,19 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./locale/index"), exports);
6
- _export_star(require("./storage/index"), exports);
7
- function _export_star(from, to) {
8
- Object.keys(from).forEach(function(k) {
9
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
10
- Object.defineProperty(to, k, {
11
- enumerable: true,
12
- get: function() {
13
- return from[k];
14
- }
15
- });
16
- }
17
- });
18
- return from;
19
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./locale/index"),exports);_export_star(require("./storage/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}
@@ -1,39 +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 $t;
14
- },
15
- get reactI18nextInstance () {
16
- return reactI18nextInstance;
17
- },
18
- get setLang () {
19
- return setLang;
20
- },
21
- get setupI18n () {
22
- return setupI18n;
23
- }
24
- });
25
- const _i18next = /*#__PURE__*/ _interop_require_default(require("i18next"));
26
- const _reacti18next = require("react-i18next");
27
- function _interop_require_default(obj) {
28
- return obj && obj.__esModule ? obj : {
29
- default: obj
30
- };
31
- }
32
- const reactI18nextInstance = _i18next.default.use(_reacti18next.initReactI18next);
33
- async function setupI18n(options, callback) {
34
- await reactI18nextInstance.init(options, callback);
35
- }
36
- const $t = _i18next.default.t;
37
- async function setLang(locale, callback) {
38
- await _i18next.default.changeLanguage(locale, callback);
39
- }
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 $t},get reactI18nextInstance(){return reactI18nextInstance},get setLang(){return setLang},get setupI18n(){return setupI18n}});const _i18next=/*#__PURE__*/_interop_require_default(require("i18next"));const _reacti18next=require("react-i18next");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const reactI18nextInstance=_i18next.default.use(_reacti18next.initReactI18next);async function setupI18n(options,callback){await reactI18nextInstance.init(options,callback)}const $t=_i18next.default.t;async function setLang(locale,callback){await _i18next.default.changeLanguage(locale,callback)}
@@ -1,32 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const local = {
12
- notfound: {
13
- home: "Back to Home"
14
- },
15
- defaultApp: {
16
- title: "Welcome to Secra Framework",
17
- description: "Framework has been successfully started! Please provide your app component to get started.",
18
- quickStart: {
19
- title: "Quick Start",
20
- description: "Provide the app option in your startup configuration to render your application:",
21
- code: "import { start } from '@vlian/framework';\nimport App from './App';\n\nstart({\n app: <App />,\n});"
22
- },
23
- nextSteps: {
24
- title: "Next Steps",
25
- step1: "Create your application root component (e.g., App.tsx)",
26
- step2: "Pass the app option in your startup configuration",
27
- step3: "Start developing your application features"
28
- },
29
- footer: "Secra Framework - Modern Low-Code Frontend Application Framework"
30
- }
31
- };
32
- const _default = local;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});const local={notfound:{home:"Back to Home"},defaultApp:{title:"Welcome to Secra Framework",description:"Framework has been successfully started! Please provide your app component to get started.",quickStart:{title:"Quick Start",description:"Provide the app option in your startup configuration to render your application:",code:"import { start } from '@vlian/framework';\nimport App from './App';\n\nstart({\n app: <App />,\n});"},nextSteps:{title:"Next Steps",step1:"Create your application root component (e.g., App.tsx)",step2:"Pass the app option in your startup configuration",step3:"Start developing your application features"},footer:"Secra Framework - Modern Low-Code Frontend Application Framework"}};const _default=local;
@@ -1,32 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const local = {
12
- notfound: {
13
- home: "回到首页"
14
- },
15
- defaultApp: {
16
- title: "欢迎使用 Secra Framework",
17
- description: "框架已成功启动!请提供您的应用组件以开始使用。",
18
- quickStart: {
19
- title: "快速开始",
20
- description: "在启动配置中提供 app 选项来渲染您的应用:",
21
- code: "import { start } from '@vlian/framework';\nimport App from './App';\n\nstart({\n app: <App />,\n});"
22
- },
23
- nextSteps: {
24
- title: "下一步",
25
- step1: "创建您的应用根组件(如 App.tsx)",
26
- step2: "在启动配置中传入 app 选项",
27
- step3: "开始开发您的应用功能"
28
- },
29
- footer: "Secra Framework - 现代化的低代码前端应用框架"
30
- }
31
- };
32
- const _default = local;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});const local={notfound:{home:"回到首页"},defaultApp:{title:"欢迎使用 Secra Framework",description:"框架已成功启动!请提供您的应用组件以开始使用。",quickStart:{title:"快速开始",description:"在启动配置中提供 app 选项来渲染您的应用:",code:"import { start } from '@vlian/framework';\nimport App from './App';\n\nstart({\n app: <App />,\n});"},nextSteps:{title:"下一步",step1:"创建您的应用根组件(如 App.tsx)",step2:"在启动配置中传入 app 选项",step3:"开始开发您的应用功能"},footer:"Secra Framework - 现代化的低代码前端应用框架"}};const _default=local;
@@ -1,4 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});
@@ -1,243 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "MultiLevelCache", {
6
- enumerable: true,
7
- get: function() {
8
- return MultiLevelCache;
9
- }
10
- });
11
- function _define_property(obj, key, value) {
12
- if (key in obj) {
13
- Object.defineProperty(obj, key, {
14
- value: value,
15
- enumerable: true,
16
- configurable: true,
17
- writable: true
18
- });
19
- } else {
20
- obj[key] = value;
21
- }
22
- return obj;
23
- }
24
- let MultiLevelCache = class MultiLevelCache {
25
- /**
26
- * 将节点移到链表头部(最近使用)
27
- */ moveToHead(node) {
28
- const nodeAsUnknown = node;
29
- if (nodeAsUnknown === this.head) {
30
- return;
31
- }
32
- // 从当前位置移除
33
- if (node.prev) {
34
- node.prev.next = node.next;
35
- }
36
- if (node.next) {
37
- node.next.prev = node.prev;
38
- }
39
- if (nodeAsUnknown === this.tail) {
40
- this.tail = node.prev;
41
- }
42
- // 移到头部
43
- node.prev = null;
44
- node.next = this.head;
45
- if (this.head) {
46
- this.head.prev = nodeAsUnknown;
47
- }
48
- this.head = nodeAsUnknown;
49
- if (!this.tail) {
50
- this.tail = nodeAsUnknown;
51
- }
52
- }
53
- /**
54
- * 移除尾部节点(最久未使用)
55
- */ removeTail() {
56
- if (!this.tail) {
57
- return;
58
- }
59
- const key = this.tail.key;
60
- this.memoryCache.delete(key);
61
- if (this.tail.prev) {
62
- this.tail.prev.next = null;
63
- this.tail = this.tail.prev;
64
- } else {
65
- this.head = null;
66
- this.tail = null;
67
- }
68
- }
69
- /**
70
- * 获取缓存
71
- */ async get(key) {
72
- // 先检查内存缓存
73
- const node = this.memoryCache.get(key);
74
- if (node) {
75
- const item = node.value;
76
- if (item.expiresAt > Date.now()) {
77
- // 移到头部(最近使用)
78
- this.moveToHead(node);
79
- return item.data;
80
- } else {
81
- // 已过期,删除
82
- this.memoryCache.delete(key);
83
- if (node === this.head) {
84
- this.head = node.next;
85
- }
86
- if (node === this.tail) {
87
- this.tail = node.prev;
88
- }
89
- if (node.prev) {
90
- node.prev.next = node.next;
91
- }
92
- if (node.next) {
93
- node.next.prev = node.prev;
94
- }
95
- }
96
- }
97
- // 检查存储缓存
98
- try {
99
- const stored = await this.storage.get(key);
100
- if (stored) {
101
- const item = JSON.parse(stored);
102
- if (item.expiresAt > Date.now()) {
103
- // 更新内存缓存(使用 LRU)
104
- this.setInMemory(key, item);
105
- return item.data;
106
- } else {
107
- // 已过期,删除
108
- await this.storage.remove(key);
109
- }
110
- }
111
- } catch (error) {
112
- // 忽略解析错误
113
- }
114
- return null;
115
- }
116
- /**
117
- * 在内存中设置缓存(LRU)
118
- */ setInMemory(key, item) {
119
- let node = this.memoryCache.get(key);
120
- if (node) {
121
- // 更新现有节点
122
- node.value = item;
123
- this.moveToHead(node);
124
- } else {
125
- // 创建新节点
126
- node = {
127
- key,
128
- value: item,
129
- prev: null,
130
- next: this.head
131
- };
132
- if (this.head) {
133
- this.head.prev = node;
134
- }
135
- this.head = node;
136
- if (!this.tail) {
137
- this.tail = node;
138
- }
139
- this.memoryCache.set(key, node);
140
- // 如果超过最大大小,移除最久未使用的
141
- if (this.memoryCache.size > this.config.maxSize) {
142
- this.removeTail();
143
- }
144
- }
145
- }
146
- /**
147
- * 设置缓存
148
- */ async set(key, data, ttl) {
149
- const expiresAt = Date.now() + (ttl || this.config.defaultTTL);
150
- const item = {
151
- data,
152
- expiresAt,
153
- createdAt: Date.now()
154
- };
155
- // 更新内存缓存(使用 LRU)
156
- this.setInMemory(key, item);
157
- // 更新存储缓存
158
- try {
159
- await this.storage.set(key, item);
160
- } catch (error) {
161
- // 忽略存储错误
162
- }
163
- }
164
- /**
165
- * 删除缓存
166
- */ async delete(key) {
167
- const node = this.memoryCache.get(key);
168
- if (node) {
169
- // 从链表中移除
170
- if (node.prev) {
171
- node.prev.next = node.next;
172
- }
173
- if (node.next) {
174
- node.next.prev = node.prev;
175
- }
176
- if (node === this.head) {
177
- this.head = node.next;
178
- }
179
- if (node === this.tail) {
180
- this.tail = node.prev;
181
- }
182
- this.memoryCache.delete(key);
183
- }
184
- try {
185
- await this.storage.remove(key);
186
- } catch (error) {
187
- // 忽略删除错误
188
- }
189
- }
190
- /**
191
- * 清空缓存
192
- */ async clear() {
193
- this.memoryCache.clear();
194
- // 注意:这里不清空 storage,因为可能包含其他数据
195
- }
196
- /**
197
- * 清理过期项(优化版本:批量删除,减少 DOM 操作)
198
- */ async cleanup() {
199
- const now = Date.now();
200
- const keysToDelete = [];
201
- const nodesToRemove = [];
202
- // 批量收集需要删除的项
203
- for (const [key, node] of this.memoryCache.entries()){
204
- if (node.value.expiresAt <= now) {
205
- keysToDelete.push(key);
206
- nodesToRemove.push(node);
207
- }
208
- }
209
- // 批量删除(优化性能)
210
- if (keysToDelete.length > 0) {
211
- // 从链表中移除节点
212
- for (const node of nodesToRemove){
213
- if (node.prev) {
214
- node.prev.next = node.next;
215
- }
216
- if (node.next) {
217
- node.next.prev = node.prev;
218
- }
219
- if (node === this.head) {
220
- this.head = node.next;
221
- }
222
- if (node === this.tail) {
223
- this.tail = node.prev;
224
- }
225
- }
226
- // 批量删除 Map 中的项
227
- keysToDelete.forEach((key)=>this.memoryCache.delete(key));
228
- }
229
- // 注意:存储缓存的清理由存储系统自己处理(通过过期时间)
230
- }
231
- constructor(storage, config = {}){
232
- _define_property(this, "memoryCache", new Map());
233
- _define_property(this, "storage", void 0);
234
- _define_property(this, "config", void 0);
235
- _define_property(this, "head", null);
236
- _define_property(this, "tail", null);
237
- this.storage = storage;
238
- this.config = {
239
- defaultTTL: config.defaultTTL ?? 24 * 60 * 60 * 1000,
240
- maxSize: config.maxSize ?? 100
241
- };
242
- }
243
- };
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"MultiLevelCache",{enumerable:true,get:function(){return MultiLevelCache}});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 MultiLevelCache=class MultiLevelCache{moveToHead(node){const nodeAsUnknown=node;if(nodeAsUnknown===this.head){return}if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(nodeAsUnknown===this.tail){this.tail=node.prev}node.prev=null;node.next=this.head;if(this.head){this.head.prev=nodeAsUnknown}this.head=nodeAsUnknown;if(!this.tail){this.tail=nodeAsUnknown}}removeTail(){if(!this.tail){return}const key=this.tail.key;this.memoryCache.delete(key);if(this.tail.prev){this.tail.prev.next=null;this.tail=this.tail.prev}else{this.head=null;this.tail=null}}async get(key){const node=this.memoryCache.get(key);if(node){const item=node.value;if(item.expiresAt>Date.now()){this.moveToHead(node);return item.data}else{this.memoryCache.delete(key);if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}}}try{const stored=await this.storage.get(key);if(stored){const item=JSON.parse(stored);if(item.expiresAt>Date.now()){this.setInMemory(key,item);return item.data}else{await this.storage.remove(key)}}}catch(error){}return null}setInMemory(key,item){let node=this.memoryCache.get(key);if(node){node.value=item;this.moveToHead(node)}else{node={key,value:item,prev:null,next:this.head};if(this.head){this.head.prev=node}this.head=node;if(!this.tail){this.tail=node}this.memoryCache.set(key,node);if(this.memoryCache.size>this.config.maxSize){this.removeTail()}}}async set(key,data,ttl){const expiresAt=Date.now()+(ttl||this.config.defaultTTL);const item={data,expiresAt,createdAt:Date.now()};this.setInMemory(key,item);try{await this.storage.set(key,item)}catch(error){}}async delete(key){const node=this.memoryCache.get(key);if(node){if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}this.memoryCache.delete(key)}try{await this.storage.remove(key)}catch(error){}}async clear(){this.memoryCache.clear()}async cleanup(){const now=Date.now();const keysToDelete=[];const nodesToRemove=[];for(const[key,node]of this.memoryCache.entries()){if(node.value.expiresAt<=now){keysToDelete.push(key);nodesToRemove.push(node)}}if(keysToDelete.length>0){for(const node of nodesToRemove){if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}}keysToDelete.forEach(key=>this.memoryCache.delete(key))}}constructor(storage,config={}){_define_property(this,"memoryCache",new Map);_define_property(this,"storage",void 0);_define_property(this,"config",void 0);_define_property(this,"head",null);_define_property(this,"tail",null);this.storage=storage;this.config={defaultTTL:config.defaultTTL??24*60*60*1e3,maxSize:config.maxSize??100}}};