@vlian/framework 1.2.37 → 1.2.39

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 (156) hide show
  1. package/dist/analytics.umd.js +1 -1
  2. package/dist/core/Test.cjs +2 -2
  3. package/dist/core/Test.cjs.map +1 -1
  4. package/dist/core/Test.js +1 -1
  5. package/dist/core/Test.js.map +1 -1
  6. package/dist/core/config/ConfigLoader.cjs +7 -7
  7. package/dist/core/config/ConfigLoader.cjs.map +1 -1
  8. package/dist/core/config/ConfigLoader.js +1 -1
  9. package/dist/core/config/ConfigLoader.js.map +1 -1
  10. package/dist/core/error/ErrorBoundary.cjs +6 -6
  11. package/dist/core/error/ErrorBoundary.cjs.map +1 -1
  12. package/dist/core/error/ErrorBoundary.d.ts +1 -1
  13. package/dist/core/error/ErrorBoundary.js +2 -2
  14. package/dist/core/error/ErrorBoundary.js.map +1 -1
  15. package/dist/core/error/ErrorHandler.cjs +19 -19
  16. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  17. package/dist/core/error/ErrorHandler.d.ts +1 -1
  18. package/dist/core/error/ErrorHandler.js +2 -2
  19. package/dist/core/error/ErrorHandler.js.map +1 -1
  20. package/dist/core/event/AppEventBus.cjs +5 -5
  21. package/dist/core/event/AppEventBus.cjs.map +1 -1
  22. package/dist/core/event/AppEventBus.js +1 -1
  23. package/dist/core/event/AppEventBus.js.map +1 -1
  24. package/dist/core/initialization/InitializationErrorThrower.cjs.map +1 -1
  25. package/dist/core/initialization/InitializationErrorThrower.js.map +1 -1
  26. package/dist/core/initialization/initialization.cjs +3 -3
  27. package/dist/core/initialization/initialization.cjs.map +1 -1
  28. package/dist/core/initialization/initialization.d.ts +1 -1
  29. package/dist/core/initialization/initialization.js +1 -1
  30. package/dist/core/initialization/initialization.js.map +1 -1
  31. package/dist/core/initialization/initializationErrorState.cjs +2 -2
  32. package/dist/core/initialization/initializationErrorState.cjs.map +1 -1
  33. package/dist/core/initialization/initializationErrorState.d.ts +1 -1
  34. package/dist/core/initialization/initializationErrorState.js +1 -1
  35. package/dist/core/initialization/initializationErrorState.js.map +1 -1
  36. package/dist/core/kernel/defaultAdapters.cjs +14 -13
  37. package/dist/core/kernel/defaultAdapters.cjs.map +1 -1
  38. package/dist/core/kernel/defaultAdapters.js +2 -1
  39. package/dist/core/kernel/defaultAdapters.js.map +1 -1
  40. package/dist/core/kernel/types.d.ts +1 -1
  41. package/dist/core/kernel/types.js.map +1 -1
  42. package/dist/core/router/RouterManager.cjs +9 -9
  43. package/dist/core/router/RouterManager.cjs.map +1 -1
  44. package/dist/core/router/RouterManager.js +1 -1
  45. package/dist/core/router/RouterManager.js.map +1 -1
  46. package/dist/core/router/adapter/AdapterManager.cjs +10 -10
  47. package/dist/core/router/adapter/AdapterManager.cjs.map +1 -1
  48. package/dist/core/router/adapter/AdapterManager.js +1 -1
  49. package/dist/core/router/adapter/AdapterManager.js.map +1 -1
  50. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +4 -4
  51. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
  52. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -1
  53. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
  54. package/dist/core/router/dynamic/DynamicRouteManager.cjs +8 -8
  55. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +1 -1
  56. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -1
  57. package/dist/core/router/dynamic/DynamicRouteManager.js.map +1 -1
  58. package/dist/core/router/errors/RouterError.cjs.map +1 -1
  59. package/dist/core/router/errors/RouterError.d.ts +4 -3
  60. package/dist/core/router/errors/RouterError.js.map +1 -1
  61. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +8 -8
  62. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +1 -1
  63. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -1
  64. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +1 -1
  65. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +11 -11
  66. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
  67. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -1
  68. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
  69. package/dist/core/router/middleware/auth.cjs +4 -4
  70. package/dist/core/router/middleware/auth.cjs.map +1 -1
  71. package/dist/core/router/middleware/auth.js +1 -1
  72. package/dist/core/router/middleware/auth.js.map +1 -1
  73. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -1
  74. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  75. package/dist/core/router/monitoring/RouterMonitoring.js +1 -1
  76. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  77. package/dist/core/router/navigation/RouterNavigation.cjs +7 -7
  78. package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
  79. package/dist/core/router/navigation/RouterNavigation.js +1 -1
  80. package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
  81. package/dist/core/router/performance/RouteCache.cjs +7 -7
  82. package/dist/core/router/performance/RouteCache.cjs.map +1 -1
  83. package/dist/core/router/performance/RouteCache.js +1 -1
  84. package/dist/core/router/performance/RouteCache.js.map +1 -1
  85. package/dist/core/router/performance/RoutePreloader.cjs +6 -6
  86. package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
  87. package/dist/core/router/performance/RoutePreloader.js +1 -1
  88. package/dist/core/router/performance/RoutePreloader.js.map +1 -1
  89. package/dist/core/router/plugin/RouterPluginManager.cjs +8 -8
  90. package/dist/core/router/plugin/RouterPluginManager.cjs.map +1 -1
  91. package/dist/core/router/plugin/RouterPluginManager.js +1 -1
  92. package/dist/core/router/plugin/RouterPluginManager.js.map +1 -1
  93. package/dist/core/router/utils/adapters/react-router/transform.cjs +2 -2
  94. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  95. package/dist/core/router/utils/adapters/react-router/transform.js +1 -1
  96. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  97. package/dist/core/router/utils/transform.cjs +13 -12
  98. package/dist/core/router/utils/transform.cjs.map +1 -1
  99. package/dist/core/router/utils/transform.js +2 -1
  100. package/dist/core/router/utils/transform.js.map +1 -1
  101. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -2
  102. package/dist/core/router/validation/RouterConfigValidator.cjs.map +1 -1
  103. package/dist/core/router/validation/RouterConfigValidator.js +1 -1
  104. package/dist/core/router/validation/RouterConfigValidator.js.map +1 -1
  105. package/dist/core/router/version/RouteVersionManager.cjs +6 -6
  106. package/dist/core/router/version/RouteVersionManager.cjs.map +1 -1
  107. package/dist/core/router/version/RouteVersionManager.js +1 -1
  108. package/dist/core/router/version/RouteVersionManager.js.map +1 -1
  109. package/dist/core/splash/SplashScreen.cjs +4 -4
  110. package/dist/core/splash/SplashScreen.cjs.map +1 -1
  111. package/dist/core/splash/SplashScreen.js +1 -1
  112. package/dist/core/splash/SplashScreen.js.map +1 -1
  113. package/dist/core/startup/initializeServices.cjs +14 -14
  114. package/dist/core/startup/initializeServices.cjs.map +1 -1
  115. package/dist/core/startup/initializeServices.d.ts +1 -1
  116. package/dist/core/startup/initializeServices.js +2 -2
  117. package/dist/core/startup/initializeServices.js.map +1 -1
  118. package/dist/core/startup/renderApp.cjs +2 -2
  119. package/dist/core/startup/renderApp.cjs.map +1 -1
  120. package/dist/core/startup/renderApp.js +1 -1
  121. package/dist/core/startup/renderApp.js.map +1 -1
  122. package/dist/core/startup/startApp.cjs +22 -22
  123. package/dist/core/startup/startApp.cjs.map +1 -1
  124. package/dist/core/startup/startApp.js +2 -2
  125. package/dist/core/startup/startApp.js.map +1 -1
  126. package/dist/core/types.d.ts +2 -2
  127. package/dist/core/types.js.map +1 -1
  128. package/dist/index.cjs +0 -112
  129. package/dist/index.cjs.map +1 -1
  130. package/dist/index.d.ts +0 -4
  131. package/dist/index.js +0 -8
  132. package/dist/index.js.map +1 -1
  133. package/dist/index.umd.js +1389 -1486
  134. package/dist/index.umd.js.map +1 -1
  135. package/dist/kernel/constants.cjs +2 -2
  136. package/dist/kernel/constants.cjs.map +1 -1
  137. package/dist/kernel/constants.js +1 -1
  138. package/dist/kernel/constants.js.map +1 -1
  139. package/dist/kernel/manager/loggerManager.cjs +10 -10
  140. package/dist/kernel/manager/loggerManager.cjs.map +1 -1
  141. package/dist/kernel/manager/loggerManager.d.ts +1 -1
  142. package/dist/kernel/manager/loggerManager.js +1 -1
  143. package/dist/kernel/manager/loggerManager.js.map +1 -1
  144. package/dist/kernel/types.d.ts +1 -1
  145. package/dist/kernel/types.js.map +1 -1
  146. package/dist/library/storage/encryption.cjs +12 -13
  147. package/dist/library/storage/encryption.cjs.map +1 -1
  148. package/dist/library/storage/encryption.js +1 -2
  149. package/dist/library/storage/encryption.js.map +1 -1
  150. package/dist/state.umd.js +1 -1
  151. package/dist/utils/errors.cjs +71 -15
  152. package/dist/utils/errors.cjs.map +1 -1
  153. package/dist/utils/errors.d.ts +30 -1
  154. package/dist/utils/errors.js +16 -1
  155. package/dist/utils/errors.js.map +1 -1
  156. package/package.json +1 -1
@@ -22,7 +22,7 @@ _export(exports, {
22
22
  return DEFAULT_THEME;
23
23
  }
24
24
  });
25
- const _utils = require("../utils");
25
+ const _logger = require("@vlian/logger");
26
26
  const DEFAULT_INSTANCE_ID = 'default';
27
27
  const DEFAULT_THEME = {
28
28
  mode: 'light'
@@ -32,7 +32,7 @@ const DEFAULT_I18N = {
32
32
  };
33
33
  const DEFAULT_CONFIG = {
34
34
  logger: {
35
- level: _utils.LogLevel.INFO,
35
+ level: _logger.LogLevel.INFO,
36
36
  persistence: {
37
37
  enabled: true,
38
38
  storage: 'localStorage',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kernel/constants.ts"],"sourcesContent":["import { LogLevel } from '../utils';\nimport type { I18nSnapshot, KernelConfig, ThemeSnapshot } from './types';\n\nexport const DEFAULT_INSTANCE_ID = 'default';\nexport const DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nexport const DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nexport const DEFAULT_CONFIG: KernelConfig = {\n logger: {\n level: LogLevel.INFO,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:logger-level' },\n },\n cache: {\n enabled: true,\n storageOptions: {\n prefix: 'vlian',\n defaultExpire: 24 * 60 * 60 * 1000,\n },\n },\n theme: {\n initial: DEFAULT_THEME,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:theme' },\n },\n i18n: {\n initial: DEFAULT_I18N,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:i18n' },\n },\n};\n"],"names":["DEFAULT_CONFIG","DEFAULT_I18N","DEFAULT_INSTANCE_ID","DEFAULT_THEME","mode","locale","logger","level","LogLevel","INFO","persistence","enabled","storage","key","cache","storageOptions","prefix","defaultExpire","theme","initial","i18n"],"mappings":";;;;;;;;;;;QAOaA;eAAAA;;QAFAC;eAAAA;;QAFAC;eAAAA;;QACAC;eAAAA;;;uBAJY;AAGlB,MAAMD,sBAAsB;AAC5B,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ;AACrD,MAAMH,eAA6B;IAAEI,QAAQ;AAAQ;AAErD,MAAML,iBAA+B;IAC1CM,QAAQ;QACNC,OAAOC,eAAQ,CAACC,IAAI;QACpBC,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAA4B;IAC1F;IACAC,OAAO;QACLH,SAAS;QACTI,gBAAgB;YACdC,QAAQ;YACRC,eAAe,KAAK,KAAK,KAAK;QAChC;IACF;IACAC,OAAO;QACLC,SAAShB;QACTO,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAqB;IACnF;IACAO,MAAM;QACJD,SAASlB;QACTS,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAoB;IAClF;AACF"}
1
+ {"version":3,"sources":["../../src/kernel/constants.ts"],"sourcesContent":["import { LogLevel } from '@vlian/logger';\nimport type { I18nSnapshot, KernelConfig, ThemeSnapshot } from './types';\n\nexport const DEFAULT_INSTANCE_ID = 'default';\nexport const DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nexport const DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nexport const DEFAULT_CONFIG: KernelConfig = {\n logger: {\n level: LogLevel.INFO,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:logger-level' },\n },\n cache: {\n enabled: true,\n storageOptions: {\n prefix: 'vlian',\n defaultExpire: 24 * 60 * 60 * 1000,\n },\n },\n theme: {\n initial: DEFAULT_THEME,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:theme' },\n },\n i18n: {\n initial: DEFAULT_I18N,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:i18n' },\n },\n};\n"],"names":["DEFAULT_CONFIG","DEFAULT_I18N","DEFAULT_INSTANCE_ID","DEFAULT_THEME","mode","locale","logger","level","LogLevel","INFO","persistence","enabled","storage","key","cache","storageOptions","prefix","defaultExpire","theme","initial","i18n"],"mappings":";;;;;;;;;;;QAOaA;eAAAA;;QAFAC;eAAAA;;QAFAC;eAAAA;;QACAC;eAAAA;;;wBAJY;AAGlB,MAAMD,sBAAsB;AAC5B,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ;AACrD,MAAMH,eAA6B;IAAEI,QAAQ;AAAQ;AAErD,MAAML,iBAA+B;IAC1CM,QAAQ;QACNC,OAAOC,gBAAQ,CAACC,IAAI;QACpBC,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAA4B;IAC1F;IACAC,OAAO;QACLH,SAAS;QACTI,gBAAgB;YACdC,QAAQ;YACRC,eAAe,KAAK,KAAK,KAAK;QAChC;IACF;IACAC,OAAO;QACLC,SAAShB;QACTO,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAqB;IACnF;IACAO,MAAM;QACJD,SAASlB;QACTS,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAoB;IAClF;AACF"}
@@ -1,4 +1,4 @@
1
- import { LogLevel } from "../utils";
1
+ import { LogLevel } from "@vlian/logger";
2
2
  export const DEFAULT_INSTANCE_ID = 'default';
3
3
  export const DEFAULT_THEME = {
4
4
  mode: 'light'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kernel/constants.ts"],"sourcesContent":["import { LogLevel } from '../utils';\nimport type { I18nSnapshot, KernelConfig, ThemeSnapshot } from './types';\n\nexport const DEFAULT_INSTANCE_ID = 'default';\nexport const DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nexport const DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nexport const DEFAULT_CONFIG: KernelConfig = {\n logger: {\n level: LogLevel.INFO,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:logger-level' },\n },\n cache: {\n enabled: true,\n storageOptions: {\n prefix: 'vlian',\n defaultExpire: 24 * 60 * 60 * 1000,\n },\n },\n theme: {\n initial: DEFAULT_THEME,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:theme' },\n },\n i18n: {\n initial: DEFAULT_I18N,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:i18n' },\n },\n};\n"],"names":["LogLevel","DEFAULT_INSTANCE_ID","DEFAULT_THEME","mode","DEFAULT_I18N","locale","DEFAULT_CONFIG","logger","level","INFO","persistence","enabled","storage","key","cache","storageOptions","prefix","defaultExpire","theme","initial","i18n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,WAAW;AAGpC,OAAO,MAAMC,sBAAsB,UAAU;AAC7C,OAAO,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ,EAAE;AAC9D,OAAO,MAAMC,eAA6B;IAAEC,QAAQ;AAAQ,EAAE;AAE9D,OAAO,MAAMC,iBAA+B;IAC1CC,QAAQ;QACNC,OAAOR,SAASS,IAAI;QACpBC,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAA4B;IAC1F;IACAC,OAAO;QACLH,SAAS;QACTI,gBAAgB;YACdC,QAAQ;YACRC,eAAe,KAAK,KAAK,KAAK;QAChC;IACF;IACAC,OAAO;QACLC,SAASjB;QACTQ,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAqB;IACnF;IACAO,MAAM;QACJD,SAASf;QACTM,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAoB;IAClF;AACF,EAAE"}
1
+ {"version":3,"sources":["../../src/kernel/constants.ts"],"sourcesContent":["import { LogLevel } from '@vlian/logger';\nimport type { I18nSnapshot, KernelConfig, ThemeSnapshot } from './types';\n\nexport const DEFAULT_INSTANCE_ID = 'default';\nexport const DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nexport const DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nexport const DEFAULT_CONFIG: KernelConfig = {\n logger: {\n level: LogLevel.INFO,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:logger-level' },\n },\n cache: {\n enabled: true,\n storageOptions: {\n prefix: 'vlian',\n defaultExpire: 24 * 60 * 60 * 1000,\n },\n },\n theme: {\n initial: DEFAULT_THEME,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:theme' },\n },\n i18n: {\n initial: DEFAULT_I18N,\n persistence: { enabled: true, storage: 'localStorage', key: 'vlian:kernel:i18n' },\n },\n};\n"],"names":["LogLevel","DEFAULT_INSTANCE_ID","DEFAULT_THEME","mode","DEFAULT_I18N","locale","DEFAULT_CONFIG","logger","level","INFO","persistence","enabled","storage","key","cache","storageOptions","prefix","defaultExpire","theme","initial","i18n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAgB;AAGzC,OAAO,MAAMC,sBAAsB,UAAU;AAC7C,OAAO,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ,EAAE;AAC9D,OAAO,MAAMC,eAA6B;IAAEC,QAAQ;AAAQ,EAAE;AAE9D,OAAO,MAAMC,iBAA+B;IAC1CC,QAAQ;QACNC,OAAOR,SAASS,IAAI;QACpBC,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAA4B;IAC1F;IACAC,OAAO;QACLH,SAAS;QACTI,gBAAgB;YACdC,QAAQ;YACRC,eAAe,KAAK,KAAK,KAAK;QAChC;IACF;IACAC,OAAO;QACLC,SAASjB;QACTQ,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAqB;IACnF;IACAO,MAAM;QACJD,SAASf;QACTM,aAAa;YAAEC,SAAS;YAAMC,SAAS;YAAgBC,KAAK;QAAoB;IAClF;AACF,EAAE"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "LoggerManager", {
8
8
  return LoggerManager;
9
9
  }
10
10
  });
11
- const _utils = require("../../utils");
11
+ const _logger = require("@vlian/logger");
12
12
  const _constants = require("../constants");
13
13
  const _persistence = require("./persistence");
14
14
  function _define_property(obj, key, value) {
@@ -30,13 +30,13 @@ function normalizeLogLevel(value, fallback) {
30
30
  }
31
31
  switch(value.toUpperCase()){
32
32
  case 'DEBUG':
33
- return _utils.LogLevel.DEBUG;
33
+ return _logger.LogLevel.DEBUG;
34
34
  case 'INFO':
35
- return _utils.LogLevel.INFO;
35
+ return _logger.LogLevel.INFO;
36
36
  case 'WARN':
37
- return _utils.LogLevel.WARN;
37
+ return _logger.LogLevel.WARN;
38
38
  case 'ERROR':
39
- return _utils.LogLevel.ERROR;
39
+ return _logger.LogLevel.ERROR;
40
40
  default:
41
41
  return fallback;
42
42
  }
@@ -45,15 +45,15 @@ let LoggerManager = class LoggerManager {
45
45
  async initialize(context) {
46
46
  this.config = context.config.logger;
47
47
  const persisted = await (0, _persistence.readPersistedValue)(this.config.persistence);
48
- this.level = normalizeLogLevel(persisted, this.config.level ?? _utils.LogLevel.INFO);
49
- _utils.logger.setLevel(this.level);
48
+ this.level = normalizeLogLevel(persisted, this.config.level ?? _logger.LogLevel.INFO);
49
+ _logger.logger.setLevel(this.level);
50
50
  }
51
51
  debug(message, payload) {
52
- _utils.logger.debug(message, payload);
52
+ _logger.logger.debug(message, payload);
53
53
  }
54
54
  async setLevel(level) {
55
55
  this.level = level;
56
- _utils.logger.setLevel(level);
56
+ _logger.logger.setLevel(level);
57
57
  await (0, _persistence.writePersistedValue)(this.config.persistence, String(level));
58
58
  }
59
59
  getSnapshot() {
@@ -62,7 +62,7 @@ let LoggerManager = class LoggerManager {
62
62
  };
63
63
  }
64
64
  constructor(){
65
- _define_property(this, "level", _utils.LogLevel.INFO);
65
+ _define_property(this, "level", _logger.LogLevel.INFO);
66
66
  _define_property(this, "config", _constants.DEFAULT_CONFIG.logger);
67
67
  }
68
68
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/kernel/manager/loggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '../../utils';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../types';\nimport { DEFAULT_CONFIG } from '../constants';\nimport { readPersistedValue, writePersistedValue } from './persistence';\n\nfunction normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel {\n if (!value || typeof value !== 'string') {\n return fallback;\n }\n\n switch (value.toUpperCase()) {\n case 'DEBUG':\n return LogLevel.DEBUG;\n case 'INFO':\n return LogLevel.INFO;\n case 'WARN':\n return LogLevel.WARN;\n case 'ERROR':\n return LogLevel.ERROR;\n default:\n return fallback;\n }\n}\n\nexport class LoggerManager implements KernelManager<{ level: LogLevel }> {\n private level: LogLevel = LogLevel.INFO;\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n const persisted = await readPersistedValue(this.config.persistence);\n this.level = normalizeLogLevel(persisted, this.config.level ?? LogLevel.INFO);\n logger.setLevel(this.level);\n }\n\n public debug(message: string, payload?: unknown): void {\n logger.debug(message, payload);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.level = level;\n logger.setLevel(level);\n await writePersistedValue(this.config.persistence, String(level));\n }\n\n public getSnapshot(): { level: LogLevel } {\n return { level: this.level };\n }\n}\n"],"names":["LoggerManager","normalizeLogLevel","value","fallback","toUpperCase","LogLevel","DEBUG","INFO","WARN","ERROR","initialize","context","config","logger","persisted","readPersistedValue","persistence","level","setLevel","debug","message","payload","writePersistedValue","String","getSnapshot","DEFAULT_CONFIG"],"mappings":";;;;+BAwBaA;;;eAAAA;;;uBAxBoB;2BAEF;6BACyB;;;;;;;;;;;;;;AAExD,SAASC,kBAAkBC,KAAc,EAAEC,QAAkB;IAC3D,IAAI,CAACD,SAAS,OAAOA,UAAU,UAAU;QACvC,OAAOC;IACT;IAEA,OAAQD,MAAME,WAAW;QACvB,KAAK;YACH,OAAOC,eAAQ,CAACC,KAAK;QACvB,KAAK;YACH,OAAOD,eAAQ,CAACE,IAAI;QACtB,KAAK;YACH,OAAOF,eAAQ,CAACG,IAAI;QACtB,KAAK;YACH,OAAOH,eAAQ,CAACI,KAAK;QACvB;YACE,OAAON;IACX;AACF;AAEO,IAAA,AAAMH,gBAAN,MAAMA;IAIX,MAAaU,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAACC,MAAM;QACnC,MAAMC,YAAY,MAAMC,IAAAA,+BAAkB,EAAC,IAAI,CAACH,MAAM,CAACI,WAAW;QAClE,IAAI,CAACC,KAAK,GAAGhB,kBAAkBa,WAAW,IAAI,CAACF,MAAM,CAACK,KAAK,IAAIZ,eAAQ,CAACE,IAAI;QAC5EM,aAAM,CAACK,QAAQ,CAAC,IAAI,CAACD,KAAK;IAC5B;IAEOE,MAAMC,OAAe,EAAEC,OAAiB,EAAQ;QACrDR,aAAM,CAACM,KAAK,CAACC,SAASC;IACxB;IAEA,MAAaH,SAASD,KAAe,EAAiB;QACpD,IAAI,CAACA,KAAK,GAAGA;QACbJ,aAAM,CAACK,QAAQ,CAACD;QAChB,MAAMK,IAAAA,gCAAmB,EAAC,IAAI,CAACV,MAAM,CAACI,WAAW,EAAEO,OAAON;IAC5D;IAEOO,cAAmC;QACxC,OAAO;YAAEP,OAAO,IAAI,CAACA,KAAK;QAAC;IAC7B;;QAtBA,uBAAQA,SAAkBZ,eAAQ,CAACE,IAAI;QACvC,uBAAQK,UAAiCa,yBAAc,CAACZ,MAAM;;AAsBhE"}
1
+ {"version":3,"sources":["../../../src/kernel/manager/loggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../types';\nimport { DEFAULT_CONFIG } from '../constants';\nimport { readPersistedValue, writePersistedValue } from './persistence';\n\nfunction normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel {\n if (!value || typeof value !== 'string') {\n return fallback;\n }\n\n switch (value.toUpperCase()) {\n case 'DEBUG':\n return LogLevel.DEBUG;\n case 'INFO':\n return LogLevel.INFO;\n case 'WARN':\n return LogLevel.WARN;\n case 'ERROR':\n return LogLevel.ERROR;\n default:\n return fallback;\n }\n}\n\nexport class LoggerManager implements KernelManager<{ level: LogLevel }> {\n private level: LogLevel = LogLevel.INFO;\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n const persisted = await readPersistedValue(this.config.persistence);\n this.level = normalizeLogLevel(persisted, this.config.level ?? LogLevel.INFO);\n logger.setLevel(this.level);\n }\n\n public debug(message: string, payload?: unknown): void {\n logger.debug(message, payload);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.level = level;\n logger.setLevel(level);\n await writePersistedValue(this.config.persistence, String(level));\n }\n\n public getSnapshot(): { level: LogLevel } {\n return { level: this.level };\n }\n}\n"],"names":["LoggerManager","normalizeLogLevel","value","fallback","toUpperCase","LogLevel","DEBUG","INFO","WARN","ERROR","initialize","context","config","logger","persisted","readPersistedValue","persistence","level","setLevel","debug","message","payload","writePersistedValue","String","getSnapshot","DEFAULT_CONFIG"],"mappings":";;;;+BAwBaA;;;eAAAA;;;wBAxBoB;2BAEF;6BACyB;;;;;;;;;;;;;;AAExD,SAASC,kBAAkBC,KAAc,EAAEC,QAAkB;IAC3D,IAAI,CAACD,SAAS,OAAOA,UAAU,UAAU;QACvC,OAAOC;IACT;IAEA,OAAQD,MAAME,WAAW;QACvB,KAAK;YACH,OAAOC,gBAAQ,CAACC,KAAK;QACvB,KAAK;YACH,OAAOD,gBAAQ,CAACE,IAAI;QACtB,KAAK;YACH,OAAOF,gBAAQ,CAACG,IAAI;QACtB,KAAK;YACH,OAAOH,gBAAQ,CAACI,KAAK;QACvB;YACE,OAAON;IACX;AACF;AAEO,IAAA,AAAMH,gBAAN,MAAMA;IAIX,MAAaU,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAACC,MAAM;QACnC,MAAMC,YAAY,MAAMC,IAAAA,+BAAkB,EAAC,IAAI,CAACH,MAAM,CAACI,WAAW;QAClE,IAAI,CAACC,KAAK,GAAGhB,kBAAkBa,WAAW,IAAI,CAACF,MAAM,CAACK,KAAK,IAAIZ,gBAAQ,CAACE,IAAI;QAC5EM,cAAM,CAACK,QAAQ,CAAC,IAAI,CAACD,KAAK;IAC5B;IAEOE,MAAMC,OAAe,EAAEC,OAAiB,EAAQ;QACrDR,cAAM,CAACM,KAAK,CAACC,SAASC;IACxB;IAEA,MAAaH,SAASD,KAAe,EAAiB;QACpD,IAAI,CAACA,KAAK,GAAGA;QACbJ,cAAM,CAACK,QAAQ,CAACD;QAChB,MAAMK,IAAAA,gCAAmB,EAAC,IAAI,CAACV,MAAM,CAACI,WAAW,EAAEO,OAAON;IAC5D;IAEOO,cAAmC;QACxC,OAAO;YAAEP,OAAO,IAAI,CAACA,KAAK;QAAC;IAC7B;;QAtBA,uBAAQA,SAAkBZ,gBAAQ,CAACE,IAAI;QACvC,uBAAQK,UAAiCa,yBAAc,CAACZ,MAAM;;AAsBhE"}
@@ -1,4 +1,4 @@
1
- import { LogLevel } from '../../utils';
1
+ import { LogLevel } from '@vlian/logger';
2
2
  import type { KernelManager, KernelManagerContext } from '../types';
3
3
  export declare class LoggerManager implements KernelManager<{
4
4
  level: LogLevel;
@@ -11,7 +11,7 @@ function _define_property(obj, key, value) {
11
11
  }
12
12
  return obj;
13
13
  }
14
- import { logger, LogLevel } from "../../utils";
14
+ import { logger, LogLevel } from "@vlian/logger";
15
15
  import { DEFAULT_CONFIG } from "../constants";
16
16
  import { readPersistedValue, writePersistedValue } from "./persistence";
17
17
  function normalizeLogLevel(value, fallback) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/kernel/manager/loggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '../../utils';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../types';\nimport { DEFAULT_CONFIG } from '../constants';\nimport { readPersistedValue, writePersistedValue } from './persistence';\n\nfunction normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel {\n if (!value || typeof value !== 'string') {\n return fallback;\n }\n\n switch (value.toUpperCase()) {\n case 'DEBUG':\n return LogLevel.DEBUG;\n case 'INFO':\n return LogLevel.INFO;\n case 'WARN':\n return LogLevel.WARN;\n case 'ERROR':\n return LogLevel.ERROR;\n default:\n return fallback;\n }\n}\n\nexport class LoggerManager implements KernelManager<{ level: LogLevel }> {\n private level: LogLevel = LogLevel.INFO;\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n const persisted = await readPersistedValue(this.config.persistence);\n this.level = normalizeLogLevel(persisted, this.config.level ?? LogLevel.INFO);\n logger.setLevel(this.level);\n }\n\n public debug(message: string, payload?: unknown): void {\n logger.debug(message, payload);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.level = level;\n logger.setLevel(level);\n await writePersistedValue(this.config.persistence, String(level));\n }\n\n public getSnapshot(): { level: LogLevel } {\n return { level: this.level };\n }\n}\n"],"names":["logger","LogLevel","DEFAULT_CONFIG","readPersistedValue","writePersistedValue","normalizeLogLevel","value","fallback","toUpperCase","DEBUG","INFO","WARN","ERROR","LoggerManager","initialize","context","config","persisted","persistence","level","setLevel","debug","message","payload","String","getSnapshot"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,cAAc;AAE/C,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,kBAAkB,EAAEC,mBAAmB,QAAQ,gBAAgB;AAExE,SAASC,kBAAkBC,KAAc,EAAEC,QAAkB;IAC3D,IAAI,CAACD,SAAS,OAAOA,UAAU,UAAU;QACvC,OAAOC;IACT;IAEA,OAAQD,MAAME,WAAW;QACvB,KAAK;YACH,OAAOP,SAASQ,KAAK;QACvB,KAAK;YACH,OAAOR,SAASS,IAAI;QACtB,KAAK;YACH,OAAOT,SAASU,IAAI;QACtB,KAAK;YACH,OAAOV,SAASW,KAAK;QACvB;YACE,OAAOL;IACX;AACF;AAEA,OAAO,MAAMM;IAIX,MAAaC,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAAChB,MAAM;QACnC,MAAMiB,YAAY,MAAMd,mBAAmB,IAAI,CAACa,MAAM,CAACE,WAAW;QAClE,IAAI,CAACC,KAAK,GAAGd,kBAAkBY,WAAW,IAAI,CAACD,MAAM,CAACG,KAAK,IAAIlB,SAASS,IAAI;QAC5EV,OAAOoB,QAAQ,CAAC,IAAI,CAACD,KAAK;IAC5B;IAEOE,MAAMC,OAAe,EAAEC,OAAiB,EAAQ;QACrDvB,OAAOqB,KAAK,CAACC,SAASC;IACxB;IAEA,MAAaH,SAASD,KAAe,EAAiB;QACpD,IAAI,CAACA,KAAK,GAAGA;QACbnB,OAAOoB,QAAQ,CAACD;QAChB,MAAMf,oBAAoB,IAAI,CAACY,MAAM,CAACE,WAAW,EAAEM,OAAOL;IAC5D;IAEOM,cAAmC;QACxC,OAAO;YAAEN,OAAO,IAAI,CAACA,KAAK;QAAC;IAC7B;;QAtBA,uBAAQA,SAAkBlB,SAASS,IAAI;QACvC,uBAAQM,UAAiCd,eAAeF,MAAM;;AAsBhE"}
1
+ {"version":3,"sources":["../../../src/kernel/manager/loggerManager.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport type { KernelConfig, KernelManager, KernelManagerContext } from '../types';\nimport { DEFAULT_CONFIG } from '../constants';\nimport { readPersistedValue, writePersistedValue } from './persistence';\n\nfunction normalizeLogLevel(value: unknown, fallback: LogLevel): LogLevel {\n if (!value || typeof value !== 'string') {\n return fallback;\n }\n\n switch (value.toUpperCase()) {\n case 'DEBUG':\n return LogLevel.DEBUG;\n case 'INFO':\n return LogLevel.INFO;\n case 'WARN':\n return LogLevel.WARN;\n case 'ERROR':\n return LogLevel.ERROR;\n default:\n return fallback;\n }\n}\n\nexport class LoggerManager implements KernelManager<{ level: LogLevel }> {\n private level: LogLevel = LogLevel.INFO;\n private config: KernelConfig['logger'] = DEFAULT_CONFIG.logger;\n\n public async initialize(context: KernelManagerContext): Promise<void> {\n this.config = context.config.logger;\n const persisted = await readPersistedValue(this.config.persistence);\n this.level = normalizeLogLevel(persisted, this.config.level ?? LogLevel.INFO);\n logger.setLevel(this.level);\n }\n\n public debug(message: string, payload?: unknown): void {\n logger.debug(message, payload);\n }\n\n public async setLevel(level: LogLevel): Promise<void> {\n this.level = level;\n logger.setLevel(level);\n await writePersistedValue(this.config.persistence, String(level));\n }\n\n public getSnapshot(): { level: LogLevel } {\n return { level: this.level };\n }\n}\n"],"names":["logger","LogLevel","DEFAULT_CONFIG","readPersistedValue","writePersistedValue","normalizeLogLevel","value","fallback","toUpperCase","DEBUG","INFO","WARN","ERROR","LoggerManager","initialize","context","config","persisted","persistence","level","setLevel","debug","message","payload","String","getSnapshot"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,gBAAgB;AAEjD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,kBAAkB,EAAEC,mBAAmB,QAAQ,gBAAgB;AAExE,SAASC,kBAAkBC,KAAc,EAAEC,QAAkB;IAC3D,IAAI,CAACD,SAAS,OAAOA,UAAU,UAAU;QACvC,OAAOC;IACT;IAEA,OAAQD,MAAME,WAAW;QACvB,KAAK;YACH,OAAOP,SAASQ,KAAK;QACvB,KAAK;YACH,OAAOR,SAASS,IAAI;QACtB,KAAK;YACH,OAAOT,SAASU,IAAI;QACtB,KAAK;YACH,OAAOV,SAASW,KAAK;QACvB;YACE,OAAOL;IACX;AACF;AAEA,OAAO,MAAMM;IAIX,MAAaC,WAAWC,OAA6B,EAAiB;QACpE,IAAI,CAACC,MAAM,GAAGD,QAAQC,MAAM,CAAChB,MAAM;QACnC,MAAMiB,YAAY,MAAMd,mBAAmB,IAAI,CAACa,MAAM,CAACE,WAAW;QAClE,IAAI,CAACC,KAAK,GAAGd,kBAAkBY,WAAW,IAAI,CAACD,MAAM,CAACG,KAAK,IAAIlB,SAASS,IAAI;QAC5EV,OAAOoB,QAAQ,CAAC,IAAI,CAACD,KAAK;IAC5B;IAEOE,MAAMC,OAAe,EAAEC,OAAiB,EAAQ;QACrDvB,OAAOqB,KAAK,CAACC,SAASC;IACxB;IAEA,MAAaH,SAASD,KAAe,EAAiB;QACpD,IAAI,CAACA,KAAK,GAAGA;QACbnB,OAAOoB,QAAQ,CAACD;QAChB,MAAMf,oBAAoB,IAAI,CAACY,MAAM,CAACE,WAAW,EAAEM,OAAOL;IAC5D;IAEOM,cAAmC;QACxC,OAAO;YAAEN,OAAO,IAAI,CAACA,KAAK;QAAC;IAC7B;;QAtBA,uBAAQA,SAAkBlB,SAASS,IAAI;QACvC,uBAAQM,UAAiCd,eAAeF,MAAM;;AAsBhE"}
@@ -1,4 +1,4 @@
1
- import type { LogLevel } from '../utils';
1
+ import type { LogLevel } from '@vlian/logger';
2
2
  import type { LangType } from '../library/locale/types';
3
3
  import type { StartOptions as CoreStartOptions } from '../core/types';
4
4
  import type { StorageOptions } from '../types';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kernel/types.ts"],"sourcesContent":["import type { LogLevel } from '../utils';\nimport type { LangType } from '../library/locale/types';\nimport type { StartOptions as CoreStartOptions } from '../core/types';\nimport type { StorageOptions } from '../types';\n\nexport type KernelInstanceId = string;\nexport type KernelStorageDriver = 'localStorage' | 'sessionStorage' | 'indexedDB' | 'none';\n\nexport interface ThemeSnapshot {\n mode: 'light' | 'dark' | 'system';\n primaryColor?: string;\n tokens?: Record<string, string | number>;\n}\n\nexport interface I18nSnapshot {\n locale: LangType;\n resources?: Record<LangType, Record<string, unknown>>;\n}\n\nexport interface PersistenceOptions {\n enabled?: boolean;\n storage?: KernelStorageDriver;\n key?: string;\n}\n\nexport interface LoggerManagerConfig {\n level?: LogLevel;\n persistence?: PersistenceOptions;\n}\n\nexport interface CacheManagerConfig {\n enabled?: boolean;\n storageOptions?: Partial<StorageOptions>;\n}\n\nexport interface ThemeManagerConfig {\n initial?: ThemeSnapshot;\n persistence?: PersistenceOptions;\n}\n\nexport interface I18nManagerConfig {\n initial?: I18nSnapshot;\n persistence?: PersistenceOptions;\n}\n\nexport interface KernelConfig {\n logger: LoggerManagerConfig;\n cache: CacheManagerConfig;\n theme: ThemeManagerConfig;\n i18n: I18nManagerConfig;\n}\n\nexport interface KernelTimingMetric {\n phase: string;\n startTime: number;\n endTime: number;\n duration: number;\n}\n\nexport interface KernelManagerContext {\n instanceId: KernelInstanceId;\n config: KernelConfig;\n}\n\nexport interface KernelManager<TSnapshot = unknown> {\n initialize: (context: KernelManagerContext) => Promise<void> | void;\n getSnapshot?: () => TSnapshot;\n destroy?: () => Promise<void> | void;\n}\n\nexport interface KernelRenderContext {\n instanceId: KernelInstanceId;\n config: KernelConfig;\n}\n\nexport interface StartupHooks {\n initialize?: () => Promise<void> | void;\n}\n\nexport interface StartOptions extends CoreStartOptions {\n config?: Partial<KernelConfig>;\n configLoader?: () => Promise<Partial<KernelConfig> | void> | Partial<KernelConfig> | void;\n render?: (context: KernelRenderContext) => Promise<void> | void;\n customManagers?: Record<string, KernelManager>;\n hooks?: StartupHooks;\n}\n\nexport type KernelStartOptions = StartOptions;\n"],"names":[],"mappings":"AAuFA,WAA8C"}
1
+ {"version":3,"sources":["../../src/kernel/types.ts"],"sourcesContent":["import type { LogLevel } from '@vlian/logger';\nimport type { LangType } from '../library/locale/types';\nimport type { StartOptions as CoreStartOptions } from '../core/types';\nimport type { StorageOptions } from '../types';\n\nexport type KernelInstanceId = string;\nexport type KernelStorageDriver = 'localStorage' | 'sessionStorage' | 'indexedDB' | 'none';\n\nexport interface ThemeSnapshot {\n mode: 'light' | 'dark' | 'system';\n primaryColor?: string;\n tokens?: Record<string, string | number>;\n}\n\nexport interface I18nSnapshot {\n locale: LangType;\n resources?: Record<LangType, Record<string, unknown>>;\n}\n\nexport interface PersistenceOptions {\n enabled?: boolean;\n storage?: KernelStorageDriver;\n key?: string;\n}\n\nexport interface LoggerManagerConfig {\n level?: LogLevel;\n persistence?: PersistenceOptions;\n}\n\nexport interface CacheManagerConfig {\n enabled?: boolean;\n storageOptions?: Partial<StorageOptions>;\n}\n\nexport interface ThemeManagerConfig {\n initial?: ThemeSnapshot;\n persistence?: PersistenceOptions;\n}\n\nexport interface I18nManagerConfig {\n initial?: I18nSnapshot;\n persistence?: PersistenceOptions;\n}\n\nexport interface KernelConfig {\n logger: LoggerManagerConfig;\n cache: CacheManagerConfig;\n theme: ThemeManagerConfig;\n i18n: I18nManagerConfig;\n}\n\nexport interface KernelTimingMetric {\n phase: string;\n startTime: number;\n endTime: number;\n duration: number;\n}\n\nexport interface KernelManagerContext {\n instanceId: KernelInstanceId;\n config: KernelConfig;\n}\n\nexport interface KernelManager<TSnapshot = unknown> {\n initialize: (context: KernelManagerContext) => Promise<void> | void;\n getSnapshot?: () => TSnapshot;\n destroy?: () => Promise<void> | void;\n}\n\nexport interface KernelRenderContext {\n instanceId: KernelInstanceId;\n config: KernelConfig;\n}\n\nexport interface StartupHooks {\n initialize?: () => Promise<void> | void;\n}\n\nexport interface StartOptions extends CoreStartOptions {\n config?: Partial<KernelConfig>;\n configLoader?: () => Promise<Partial<KernelConfig> | void> | Partial<KernelConfig> | void;\n render?: (context: KernelRenderContext) => Promise<void> | void;\n customManagers?: Record<string, KernelManager>;\n hooks?: StartupHooks;\n}\n\nexport type KernelStartOptions = StartOptions;\n"],"names":[],"mappings":"AAuFA,WAA8C"}
@@ -8,14 +8,13 @@ Object.defineProperty(exports, "EncryptionUtils", {
8
8
  return EncryptionUtils;
9
9
  }
10
10
  });
11
- const _security = require("../../utils/security");
12
- const _errors = require("../../utils/errors");
11
+ const _utils = require("@vlian/utils");
13
12
  let EncryptionUtils = class EncryptionUtils {
14
13
  /**
15
14
  * 生成加密密钥
16
15
  */ static async generateKey() {
17
16
  if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
18
- throw new _errors.StorageError('加密功能需要浏览器支持 Web Crypto API');
17
+ throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
19
18
  }
20
19
  try {
21
20
  return await window.crypto.subtle.generateKey({
@@ -26,14 +25,14 @@ let EncryptionUtils = class EncryptionUtils {
26
25
  'decrypt'
27
26
  ]);
28
27
  } catch (error) {
29
- throw new _errors.StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);
28
+ throw new _utils.StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);
30
29
  }
31
30
  }
32
31
  /**
33
32
  * 使用 PBKDF2 派生密钥
34
33
  */ static async deriveKey(password, salt, iterations = 100000) {
35
34
  if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
36
- throw new _errors.StorageError('加密功能需要浏览器支持 Web Crypto API');
35
+ throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
37
36
  }
38
37
  try {
39
38
  // 导入密码
@@ -58,7 +57,7 @@ let EncryptionUtils = class EncryptionUtils {
58
57
  'decrypt'
59
58
  ]);
60
59
  } catch (error) {
61
- throw new _errors.StorageError('密钥派生失败', error instanceof Error ? error : undefined);
60
+ throw new _utils.StorageError('密钥派生失败', error instanceof Error ? error : undefined);
62
61
  }
63
62
  }
64
63
  /**
@@ -68,7 +67,7 @@ let EncryptionUtils = class EncryptionUtils {
68
67
  * 建议在生产环境中使用固定的 salt 或从安全存储中获取。
69
68
  */ static async importKey(keyString, salt) {
70
69
  if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
71
- throw new _errors.StorageError('加密功能需要浏览器支持 Web Crypto API');
70
+ throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
72
71
  }
73
72
  try {
74
73
  // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的
@@ -90,14 +89,14 @@ let EncryptionUtils = class EncryptionUtils {
90
89
  // 使用 PBKDF2 派生密钥
91
90
  return await this.deriveKey(keyString, keySalt);
92
91
  } catch (error) {
93
- throw new _errors.StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);
92
+ throw new _utils.StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);
94
93
  }
95
94
  }
96
95
  /**
97
96
  * 加密数据
98
97
  */ static async encrypt(data, key) {
99
98
  if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
100
- throw new _errors.StorageError('加密功能需要浏览器支持 Web Crypto API');
99
+ throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
101
100
  }
102
101
  try {
103
102
  const encoder = new TextEncoder();
@@ -115,14 +114,14 @@ let EncryptionUtils = class EncryptionUtils {
115
114
  // 转换为 Base64
116
115
  return btoa(String.fromCharCode(...combined));
117
116
  } catch (error) {
118
- throw new _errors.StorageError('加密数据失败', error instanceof Error ? error : undefined);
117
+ throw new _utils.StorageError('加密数据失败', error instanceof Error ? error : undefined);
119
118
  }
120
119
  }
121
120
  /**
122
121
  * 解密数据
123
122
  */ static async decrypt(encryptedData, key) {
124
123
  if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
125
- throw new _errors.StorageError('解密功能需要浏览器支持 Web Crypto API');
124
+ throw new _utils.StorageError('解密功能需要浏览器支持 Web Crypto API');
126
125
  }
127
126
  try {
128
127
  // 从 Base64 解码
@@ -137,13 +136,13 @@ let EncryptionUtils = class EncryptionUtils {
137
136
  const decoder = new TextDecoder();
138
137
  return decoder.decode(decrypted);
139
138
  } catch (error) {
140
- throw new _errors.StorageError('解密数据失败', error instanceof Error ? error : undefined);
139
+ throw new _utils.StorageError('解密数据失败', error instanceof Error ? error : undefined);
141
140
  }
142
141
  }
143
142
  /**
144
143
  * 检查字段是否需要加密
145
144
  */ static shouldEncrypt(key) {
146
- return _security.SecurityUtils.isSensitiveField(key);
145
+ return _utils.SecurityUtils.isSensitiveField(key);
147
146
  }
148
147
  };
149
148
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils } from '../../utils/security';\nimport { StorageError } from '../../utils/errors';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["EncryptionUtils","generateKey","window","crypto","subtle","StorageError","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","SecurityUtils","isSensitiveField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils, StorageError } from '@vlian/utils';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["EncryptionUtils","generateKey","window","crypto","subtle","StorageError","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","SecurityUtils","isSensitiveField"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { SecurityUtils } from "../../utils/security";
2
- import { StorageError } from "../../utils/errors";
1
+ import { SecurityUtils, StorageError } from "@vlian/utils";
3
2
  /**
4
3
  * 加密工具类
5
4
  */ export class EncryptionUtils {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils } from '../../utils/security';\nimport { StorageError } from '../../utils/errors';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["SecurityUtils","StorageError","EncryptionUtils","generateKey","window","crypto","subtle","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","isSensitiveField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils, StorageError } from '@vlian/utils';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["SecurityUtils","StorageError","EncryptionUtils","generateKey","window","crypto","subtle","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","isSensitiveField"],"mappings":"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"}
package/dist/state.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @vlian/framework v1.2.36
2
+ * @vlian/framework v1.2.38
3
3
  * Secra Framework - 一个现代化的低代码框架
4
4
  * (c) 2026 Secra Framework Contributors
5
5
  * Licensed under Apache-2.0
@@ -10,48 +10,104 @@ function _export(target, all) {
10
10
  }
11
11
  _export(exports, {
12
12
  get ConfigError () {
13
- return _utils.ConfigError;
13
+ return ConfigError;
14
14
  },
15
15
  get ErrorCode () {
16
- return _utils.ErrorCode;
16
+ return ErrorCode;
17
17
  },
18
18
  get ErrorMessages () {
19
- return _utils.ErrorMessages;
19
+ return ErrorMessages;
20
20
  },
21
21
  get ErrorSeverity () {
22
- return _utils.ErrorSeverity;
22
+ return ErrorSeverity;
23
23
  },
24
24
  get ErrorType () {
25
- return _utils.ErrorType;
25
+ return ErrorType;
26
26
  },
27
27
  get FrameworkError () {
28
- return _utils.FrameworkError;
28
+ return FrameworkError;
29
29
  },
30
30
  get InitializationError () {
31
- return _utils.InitializationError;
31
+ return InitializationError;
32
32
  },
33
33
  get NetworkError () {
34
- return _utils.NetworkError;
34
+ return NetworkError;
35
35
  },
36
36
  get SecurityError () {
37
- return _utils.SecurityError;
37
+ return SecurityError;
38
38
  },
39
39
  get StorageError () {
40
- return _utils.StorageError;
40
+ return StorageError;
41
41
  },
42
42
  get ValidationError () {
43
- return _utils.ValidationError;
43
+ return ValidationError;
44
44
  },
45
45
  get errorUtils () {
46
- return _utils.errorUtils;
46
+ return errorUtils;
47
47
  },
48
48
  get getErrorMessage () {
49
- return _utils.getErrorMessage;
49
+ return getErrorMessage;
50
50
  },
51
51
  get getUserFriendlyMessage () {
52
- return _utils.getUserFriendlyMessage;
52
+ return getUserFriendlyMessage;
53
53
  }
54
54
  });
55
- const _utils = require("@vlian/utils");
55
+ const _utils = /*#__PURE__*/ _interop_require_wildcard(require("@vlian/utils"));
56
+ function _getRequireWildcardCache(nodeInterop) {
57
+ if (typeof WeakMap !== "function") return null;
58
+ var cacheBabelInterop = new WeakMap();
59
+ var cacheNodeInterop = new WeakMap();
60
+ return (_getRequireWildcardCache = function(nodeInterop) {
61
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
62
+ })(nodeInterop);
63
+ }
64
+ function _interop_require_wildcard(obj, nodeInterop) {
65
+ if (!nodeInterop && obj && obj.__esModule) {
66
+ return obj;
67
+ }
68
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
69
+ return {
70
+ default: obj
71
+ };
72
+ }
73
+ var cache = _getRequireWildcardCache(nodeInterop);
74
+ if (cache && cache.has(obj)) {
75
+ return cache.get(obj);
76
+ }
77
+ var newObj = {
78
+ __proto__: null
79
+ };
80
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
81
+ for(var key in obj){
82
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
83
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
84
+ if (desc && (desc.get || desc.set)) {
85
+ Object.defineProperty(newObj, key, desc);
86
+ } else {
87
+ newObj[key] = obj[key];
88
+ }
89
+ }
90
+ }
91
+ newObj.default = obj;
92
+ if (cache) {
93
+ cache.set(obj, newObj);
94
+ }
95
+ return newObj;
96
+ }
97
+ const utils = _utils;
98
+ const ErrorCode = utils.ErrorCode;
99
+ const ErrorMessages = utils.ErrorMessages;
100
+ const getErrorMessage = utils.getErrorMessage;
101
+ const getUserFriendlyMessage = utils.getUserFriendlyMessage;
102
+ const ErrorType = utils.ErrorType;
103
+ const ErrorSeverity = utils.ErrorSeverity;
104
+ const FrameworkError = utils.FrameworkError;
105
+ const InitializationError = utils.InitializationError;
106
+ const ConfigError = utils.ConfigError;
107
+ const StorageError = utils.StorageError;
108
+ const NetworkError = utils.NetworkError;
109
+ const ValidationError = utils.ValidationError;
110
+ const SecurityError = utils.SecurityError;
111
+ const errorUtils = utils.errorUtils;
56
112
 
57
113
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["export {\n ErrorCode,\n ErrorMessages,\n getErrorMessage,\n getUserFriendlyMessage,\n ErrorType,\n ErrorSeverity,\n FrameworkError,\n InitializationError,\n ConfigError,\n StorageError,\n NetworkError,\n ValidationError,\n SecurityError,\n errorUtils,\n} from '@vlian/utils';\n"],"names":["ConfigError","ErrorCode","ErrorMessages","ErrorSeverity","ErrorType","FrameworkError","InitializationError","NetworkError","SecurityError","StorageError","ValidationError","errorUtils","getErrorMessage","getUserFriendlyMessage"],"mappings":";;;;;;;;;;;QASEA;eAAAA,kBAAW;;QARXC;eAAAA,gBAAS;;QACTC;eAAAA,oBAAa;;QAIbC;eAAAA,oBAAa;;QADbC;eAAAA,gBAAS;;QAETC;eAAAA,qBAAc;;QACdC;eAAAA,0BAAmB;;QAGnBC;eAAAA,mBAAY;;QAEZC;eAAAA,oBAAa;;QAHbC;eAAAA,mBAAY;;QAEZC;eAAAA,sBAAe;;QAEfC;eAAAA,iBAAU;;QAXVC;eAAAA,sBAAe;;QACfC;eAAAA,6BAAsB;;;uBAWjB"}
1
+ {"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["import * as vlianUtils from '@vlian/utils';\n\nconst utils = vlianUtils as typeof import('@vlian/utils');\n\nexport const ErrorCode = utils.ErrorCode;\nexport const ErrorMessages = utils.ErrorMessages;\nexport const getErrorMessage = utils.getErrorMessage;\nexport const getUserFriendlyMessage = utils.getUserFriendlyMessage;\nexport const ErrorType = utils.ErrorType;\nexport const ErrorSeverity = utils.ErrorSeverity;\nexport const FrameworkError = utils.FrameworkError;\nexport const InitializationError = utils.InitializationError;\nexport const ConfigError = utils.ConfigError;\nexport const StorageError = utils.StorageError;\nexport const NetworkError = utils.NetworkError;\nexport const ValidationError = utils.ValidationError;\nexport const SecurityError = utils.SecurityError;\nexport const errorUtils = utils.errorUtils;\n"],"names":["ConfigError","ErrorCode","ErrorMessages","ErrorSeverity","ErrorType","FrameworkError","InitializationError","NetworkError","SecurityError","StorageError","ValidationError","errorUtils","getErrorMessage","getUserFriendlyMessage","utils","vlianUtils"],"mappings":";;;;;;;;;;;QAYaA;eAAAA;;QARAC;eAAAA;;QACAC;eAAAA;;QAIAC;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QACAC;eAAAA;;QAGAC;eAAAA;;QAEAC;eAAAA;;QAHAC;eAAAA;;QAEAC;eAAAA;;QAEAC;eAAAA;;QAXAC;eAAAA;;QACAC;eAAAA;;;+DAPe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5B,MAAMC,QAAQC;AAEP,MAAMd,YAAYa,MAAMb,SAAS;AACjC,MAAMC,gBAAgBY,MAAMZ,aAAa;AACzC,MAAMU,kBAAkBE,MAAMF,eAAe;AAC7C,MAAMC,yBAAyBC,MAAMD,sBAAsB;AAC3D,MAAMT,YAAYU,MAAMV,SAAS;AACjC,MAAMD,gBAAgBW,MAAMX,aAAa;AACzC,MAAME,iBAAiBS,MAAMT,cAAc;AAC3C,MAAMC,sBAAsBQ,MAAMR,mBAAmB;AACrD,MAAMN,cAAcc,MAAMd,WAAW;AACrC,MAAMS,eAAeK,MAAML,YAAY;AACvC,MAAMF,eAAeO,MAAMP,YAAY;AACvC,MAAMG,kBAAkBI,MAAMJ,eAAe;AAC7C,MAAMF,gBAAgBM,MAAMN,aAAa;AACzC,MAAMG,aAAaG,MAAMH,UAAU"}
@@ -1 +1,30 @@
1
- export { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage, ErrorType, ErrorSeverity, FrameworkError, InitializationError, ConfigError, StorageError, NetworkError, ValidationError, SecurityError, errorUtils, } from '@vlian/utils';
1
+ import * as vlianUtils from '@vlian/utils';
2
+ export declare const ErrorCode: typeof vlianUtils.ErrorCode;
3
+ export declare const ErrorMessages: Record<vlianUtils.ErrorCode, string>;
4
+ export declare const getErrorMessage: typeof vlianUtils.getErrorMessage;
5
+ export declare const getUserFriendlyMessage: typeof vlianUtils.getUserFriendlyMessage;
6
+ export declare const ErrorType: typeof vlianUtils.ErrorType;
7
+ export declare const ErrorSeverity: typeof vlianUtils.ErrorSeverity;
8
+ export declare const FrameworkError: typeof vlianUtils.FrameworkError;
9
+ export declare const InitializationError: typeof vlianUtils.InitializationError;
10
+ export declare const ConfigError: typeof vlianUtils.ConfigError;
11
+ export declare const StorageError: typeof vlianUtils.StorageError;
12
+ export declare const NetworkError: typeof vlianUtils.NetworkError;
13
+ export declare const ValidationError: typeof vlianUtils.ValidationError;
14
+ export declare const SecurityError: typeof vlianUtils.SecurityError;
15
+ export declare const errorUtils: {
16
+ getSafeErrorMessage(error: unknown): string;
17
+ isRecoverable(error: unknown): boolean;
18
+ getErrorType(error: unknown): vlianUtils.ErrorType;
19
+ getErrorSeverity(error: unknown): vlianUtils.ErrorSeverity;
20
+ normalizeError(error: unknown): vlianUtils.FrameworkError;
21
+ extractErrorInfo(error: unknown): {
22
+ message: string;
23
+ type: vlianUtils.ErrorType;
24
+ severity: vlianUtils.ErrorSeverity;
25
+ code: string;
26
+ stack?: string;
27
+ };
28
+ getErrorSuggestions(error: unknown): string[];
29
+ formatErrorForDev(error: unknown): string;
30
+ };
@@ -1,3 +1,18 @@
1
- export { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage, ErrorType, ErrorSeverity, FrameworkError, InitializationError, ConfigError, StorageError, NetworkError, ValidationError, SecurityError, errorUtils } from "@vlian/utils";
1
+ import * as vlianUtils from "@vlian/utils";
2
+ const utils = vlianUtils;
3
+ export const ErrorCode = utils.ErrorCode;
4
+ export const ErrorMessages = utils.ErrorMessages;
5
+ export const getErrorMessage = utils.getErrorMessage;
6
+ export const getUserFriendlyMessage = utils.getUserFriendlyMessage;
7
+ export const ErrorType = utils.ErrorType;
8
+ export const ErrorSeverity = utils.ErrorSeverity;
9
+ export const FrameworkError = utils.FrameworkError;
10
+ export const InitializationError = utils.InitializationError;
11
+ export const ConfigError = utils.ConfigError;
12
+ export const StorageError = utils.StorageError;
13
+ export const NetworkError = utils.NetworkError;
14
+ export const ValidationError = utils.ValidationError;
15
+ export const SecurityError = utils.SecurityError;
16
+ export const errorUtils = utils.errorUtils;
2
17
 
3
18
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["export {\n ErrorCode,\n ErrorMessages,\n getErrorMessage,\n getUserFriendlyMessage,\n ErrorType,\n ErrorSeverity,\n FrameworkError,\n InitializationError,\n ConfigError,\n StorageError,\n NetworkError,\n ValidationError,\n SecurityError,\n errorUtils,\n} from '@vlian/utils';\n"],"names":["ErrorCode","ErrorMessages","getErrorMessage","getUserFriendlyMessage","ErrorType","ErrorSeverity","FrameworkError","InitializationError","ConfigError","StorageError","NetworkError","ValidationError","SecurityError","errorUtils"],"mappings":"AAAA,SACEA,SAAS,EACTC,aAAa,EACbC,eAAe,EACfC,sBAAsB,EACtBC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,mBAAmB,EACnBC,WAAW,EACXC,YAAY,EACZC,YAAY,EACZC,eAAe,EACfC,aAAa,EACbC,UAAU,QACL,eAAe"}
1
+ {"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["import * as vlianUtils from '@vlian/utils';\n\nconst utils = vlianUtils as typeof import('@vlian/utils');\n\nexport const ErrorCode = utils.ErrorCode;\nexport const ErrorMessages = utils.ErrorMessages;\nexport const getErrorMessage = utils.getErrorMessage;\nexport const getUserFriendlyMessage = utils.getUserFriendlyMessage;\nexport const ErrorType = utils.ErrorType;\nexport const ErrorSeverity = utils.ErrorSeverity;\nexport const FrameworkError = utils.FrameworkError;\nexport const InitializationError = utils.InitializationError;\nexport const ConfigError = utils.ConfigError;\nexport const StorageError = utils.StorageError;\nexport const NetworkError = utils.NetworkError;\nexport const ValidationError = utils.ValidationError;\nexport const SecurityError = utils.SecurityError;\nexport const errorUtils = utils.errorUtils;\n"],"names":["vlianUtils","utils","ErrorCode","ErrorMessages","getErrorMessage","getUserFriendlyMessage","ErrorType","ErrorSeverity","FrameworkError","InitializationError","ConfigError","StorageError","NetworkError","ValidationError","SecurityError","errorUtils"],"mappings":"AAAA,YAAYA,gBAAgB,eAAe;AAE3C,MAAMC,QAAQD;AAEd,OAAO,MAAME,YAAYD,MAAMC,SAAS,CAAC;AACzC,OAAO,MAAMC,gBAAgBF,MAAME,aAAa,CAAC;AACjD,OAAO,MAAMC,kBAAkBH,MAAMG,eAAe,CAAC;AACrD,OAAO,MAAMC,yBAAyBJ,MAAMI,sBAAsB,CAAC;AACnE,OAAO,MAAMC,YAAYL,MAAMK,SAAS,CAAC;AACzC,OAAO,MAAMC,gBAAgBN,MAAMM,aAAa,CAAC;AACjD,OAAO,MAAMC,iBAAiBP,MAAMO,cAAc,CAAC;AACnD,OAAO,MAAMC,sBAAsBR,MAAMQ,mBAAmB,CAAC;AAC7D,OAAO,MAAMC,cAAcT,MAAMS,WAAW,CAAC;AAC7C,OAAO,MAAMC,eAAeV,MAAMU,YAAY,CAAC;AAC/C,OAAO,MAAMC,eAAeX,MAAMW,YAAY,CAAC;AAC/C,OAAO,MAAMC,kBAAkBZ,MAAMY,eAAe,CAAC;AACrD,OAAO,MAAMC,gBAAgBb,MAAMa,aAAa,CAAC;AACjD,OAAO,MAAMC,aAAad,MAAMc,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vlian/framework",
3
- "version": "1.2.37",
3
+ "version": "1.2.39",
4
4
  "private": false,
5
5
  "packageManager": "pnpm@10.27.0",
6
6
  "description": "Secra Framework - 一个现代化的低代码框架",