@composy/store-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/README.md +172 -0
- package/dist/index.js +1852 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +1082 -0
- package/dist/index.min.js.map +1 -0
- package/es/core/async-action.d.ts +95 -0
- package/es/core/async-action.d.ts.map +1 -0
- package/es/core/async-action.js +116 -0
- package/es/core/async-action.js.map +1 -0
- package/es/core/base-store.d.ts +85 -0
- package/es/core/base-store.d.ts.map +1 -0
- package/es/core/base-store.js +185 -0
- package/es/core/base-store.js.map +1 -0
- package/es/core/batch-manager.d.ts +46 -0
- package/es/core/batch-manager.d.ts.map +1 -0
- package/es/core/batch-manager.js +64 -0
- package/es/core/batch-manager.js.map +1 -0
- package/es/core/create-store.d.ts +66 -0
- package/es/core/create-store.d.ts.map +1 -0
- package/es/core/create-store.js +29 -0
- package/es/core/create-store.js.map +1 -0
- package/es/core/event-bus.d.ts +34 -0
- package/es/core/event-bus.d.ts.map +1 -0
- package/es/core/event-bus.js +71 -0
- package/es/core/event-bus.js.map +1 -0
- package/es/core/index.d.ts +14 -0
- package/es/core/index.d.ts.map +1 -0
- package/es/core/index.js +17 -0
- package/es/core/pub-sub.d.ts +41 -0
- package/es/core/pub-sub.d.ts.map +1 -0
- package/es/core/pub-sub.js +71 -0
- package/es/core/pub-sub.js.map +1 -0
- package/es/engine/index.d.ts +10 -0
- package/es/engine/index.d.ts.map +1 -0
- package/es/engine/index.js +12 -0
- package/es/engine/plugin.d.ts +20 -0
- package/es/engine/plugin.d.ts.map +1 -0
- package/es/engine/plugin.js +153 -0
- package/es/engine/plugin.js.map +1 -0
- package/es/engine/types.d.ts +81 -0
- package/es/engine/types.d.ts.map +1 -0
- package/es/engine/types.js +10 -0
- package/es/errors/index.d.ts +208 -0
- package/es/errors/index.d.ts.map +1 -0
- package/es/errors/index.js +217 -0
- package/es/errors/index.js.map +1 -0
- package/es/index.d.ts +27 -0
- package/es/index.d.ts.map +1 -0
- package/es/index.js +34 -0
- package/es/index.js.map +1 -0
- package/es/middleware/index.d.ts +13 -0
- package/es/middleware/index.d.ts.map +1 -0
- package/es/middleware/index.js +16 -0
- package/es/middleware/logger.d.ts +67 -0
- package/es/middleware/logger.d.ts.map +1 -0
- package/es/middleware/logger.js +136 -0
- package/es/middleware/logger.js.map +1 -0
- package/es/middleware/middleware-manager.d.ts +40 -0
- package/es/middleware/middleware-manager.d.ts.map +1 -0
- package/es/middleware/middleware-manager.js +79 -0
- package/es/middleware/middleware-manager.js.map +1 -0
- package/es/middleware/persist.d.ts +34 -0
- package/es/middleware/persist.d.ts.map +1 -0
- package/es/middleware/persist.js +102 -0
- package/es/middleware/persist.js.map +1 -0
- package/es/middleware/time-travel.d.ts +30 -0
- package/es/middleware/time-travel.d.ts.map +1 -0
- package/es/middleware/time-travel.js +151 -0
- package/es/middleware/time-travel.js.map +1 -0
- package/es/middleware/validation.d.ts +100 -0
- package/es/middleware/validation.d.ts.map +1 -0
- package/es/middleware/validation.js +74 -0
- package/es/middleware/validation.js.map +1 -0
- package/es/plugins/define-plugin.d.ts +74 -0
- package/es/plugins/define-plugin.d.ts.map +1 -0
- package/es/plugins/define-plugin.js +52 -0
- package/es/plugins/define-plugin.js.map +1 -0
- package/es/plugins/index.d.ts +8 -0
- package/es/plugins/index.d.ts.map +1 -0
- package/es/plugins/index.js +13 -0
- package/es/plugins/plugin-manager.d.ts +35 -0
- package/es/plugins/plugin-manager.d.ts.map +1 -0
- package/es/plugins/plugin-manager.js +77 -0
- package/es/plugins/plugin-manager.js.map +1 -0
- package/es/types/index.d.ts +12 -0
- package/es/types/index.d.ts.map +1 -0
- package/es/types/index.js +10 -0
- package/es/types/middleware.d.ts +172 -0
- package/es/types/middleware.d.ts.map +1 -0
- package/es/types/middleware.js +10 -0
- package/es/types/plugin.d.ts +136 -0
- package/es/types/plugin.d.ts.map +1 -0
- package/es/types/plugin.js +10 -0
- package/es/types/store.d.ts +198 -0
- package/es/types/store.d.ts.map +1 -0
- package/es/types/store.js +10 -0
- package/es/types/subscription.d.ts +158 -0
- package/es/types/subscription.d.ts.map +1 -0
- package/es/types/subscription.js +10 -0
- package/es/types/utility.d.ts +312 -0
- package/es/types/utility.d.ts.map +1 -0
- package/es/types/utility.js +10 -0
- package/es/utils/debounce-throttle.d.ts +86 -0
- package/es/utils/debounce-throttle.d.ts.map +1 -0
- package/es/utils/debounce-throttle.js +86 -0
- package/es/utils/debounce-throttle.js.map +1 -0
- package/es/utils/deep-clone.d.ts +143 -0
- package/es/utils/deep-clone.d.ts.map +1 -0
- package/es/utils/deep-clone.js +193 -0
- package/es/utils/deep-clone.js.map +1 -0
- package/es/utils/index.d.ts +13 -0
- package/es/utils/index.d.ts.map +1 -0
- package/es/utils/index.js +14 -0
- package/es/utils/selector.d.ts +213 -0
- package/es/utils/selector.d.ts.map +1 -0
- package/es/utils/selector.js +151 -0
- package/es/utils/selector.js.map +1 -0
- package/esm/core/async-action.d.ts +95 -0
- package/esm/core/async-action.js +116 -0
- package/esm/core/async-action.js.map +1 -0
- package/esm/core/base-store.d.ts +85 -0
- package/esm/core/base-store.js +185 -0
- package/esm/core/base-store.js.map +1 -0
- package/esm/core/batch-manager.d.ts +46 -0
- package/esm/core/batch-manager.js +64 -0
- package/esm/core/batch-manager.js.map +1 -0
- package/esm/core/create-store.d.ts +66 -0
- package/esm/core/create-store.js +29 -0
- package/esm/core/create-store.js.map +1 -0
- package/esm/core/event-bus.d.ts +34 -0
- package/esm/core/event-bus.js +71 -0
- package/esm/core/event-bus.js.map +1 -0
- package/esm/core/index.d.ts +14 -0
- package/esm/core/index.js +17 -0
- package/esm/core/pub-sub.d.ts +41 -0
- package/esm/core/pub-sub.js +71 -0
- package/esm/core/pub-sub.js.map +1 -0
- package/esm/engine/index.d.ts +10 -0
- package/esm/engine/index.js +12 -0
- package/esm/engine/plugin.d.ts +20 -0
- package/esm/engine/plugin.js +153 -0
- package/esm/engine/plugin.js.map +1 -0
- package/esm/engine/types.d.ts +81 -0
- package/esm/errors/index.d.ts +208 -0
- package/esm/errors/index.js +217 -0
- package/esm/errors/index.js.map +1 -0
- package/esm/index.d.ts +27 -0
- package/esm/index.js +36 -0
- package/esm/index.js.map +1 -0
- package/esm/middleware/index.d.ts +13 -0
- package/esm/middleware/logger.d.ts +67 -0
- package/esm/middleware/logger.js +119 -0
- package/esm/middleware/logger.js.map +1 -0
- package/esm/middleware/middleware-manager.d.ts +40 -0
- package/esm/middleware/middleware-manager.js +79 -0
- package/esm/middleware/middleware-manager.js.map +1 -0
- package/esm/middleware/persist.d.ts +34 -0
- package/esm/middleware/persist.js +102 -0
- package/esm/middleware/persist.js.map +1 -0
- package/esm/middleware/time-travel.d.ts +30 -0
- package/esm/middleware/time-travel.js +151 -0
- package/esm/middleware/time-travel.js.map +1 -0
- package/esm/middleware/validation.d.ts +100 -0
- package/esm/middleware/validation.js +74 -0
- package/esm/middleware/validation.js.map +1 -0
- package/esm/plugins/define-plugin.d.ts +74 -0
- package/esm/plugins/define-plugin.js +52 -0
- package/esm/plugins/define-plugin.js.map +1 -0
- package/esm/plugins/index.d.ts +8 -0
- package/esm/plugins/plugin-manager.d.ts +35 -0
- package/esm/plugins/plugin-manager.js +77 -0
- package/esm/plugins/plugin-manager.js.map +1 -0
- package/esm/types/index.d.ts +12 -0
- package/esm/types/middleware.d.ts +172 -0
- package/esm/types/plugin.d.ts +136 -0
- package/esm/types/store.d.ts +198 -0
- package/esm/types/subscription.d.ts +158 -0
- package/esm/types/utility.d.ts +312 -0
- package/esm/utils/debounce-throttle.d.ts +86 -0
- package/esm/utils/debounce-throttle.js +86 -0
- package/esm/utils/debounce-throttle.js.map +1 -0
- package/esm/utils/deep-clone.d.ts +143 -0
- package/esm/utils/deep-clone.js +193 -0
- package/esm/utils/deep-clone.js.map +1 -0
- package/esm/utils/index.d.ts +13 -0
- package/esm/utils/selector.d.ts +213 -0
- package/esm/utils/selector.js +151 -0
- package/esm/utils/selector.js.map +1 -0
- package/lib/core/async-action.cjs +118 -0
- package/lib/core/async-action.cjs.map +1 -0
- package/lib/core/async-action.d.ts +95 -0
- package/lib/core/base-store.cjs +187 -0
- package/lib/core/base-store.cjs.map +1 -0
- package/lib/core/base-store.d.ts +85 -0
- package/lib/core/batch-manager.cjs +69 -0
- package/lib/core/batch-manager.cjs.map +1 -0
- package/lib/core/batch-manager.d.ts +46 -0
- package/lib/core/create-store.cjs +31 -0
- package/lib/core/create-store.cjs.map +1 -0
- package/lib/core/create-store.d.ts +66 -0
- package/lib/core/event-bus.cjs +74 -0
- package/lib/core/event-bus.cjs.map +1 -0
- package/lib/core/event-bus.d.ts +34 -0
- package/lib/core/index.cjs +29 -0
- package/lib/core/index.d.ts +14 -0
- package/lib/core/pub-sub.cjs +74 -0
- package/lib/core/pub-sub.cjs.map +1 -0
- package/lib/core/pub-sub.d.ts +41 -0
- package/lib/engine/index.cjs +16 -0
- package/lib/engine/index.d.ts +10 -0
- package/lib/engine/plugin.cjs +157 -0
- package/lib/engine/plugin.cjs.map +1 -0
- package/lib/engine/plugin.d.ts +20 -0
- package/lib/engine/types.cjs +12 -0
- package/lib/engine/types.d.ts +81 -0
- package/lib/errors/index.cjs +233 -0
- package/lib/errors/index.cjs.map +1 -0
- package/lib/errors/index.d.ts +208 -0
- package/lib/index.cjs +101 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.d.ts +27 -0
- package/lib/middleware/index.cjs +28 -0
- package/lib/middleware/index.d.ts +13 -0
- package/lib/middleware/logger.cjs +140 -0
- package/lib/middleware/logger.cjs.map +1 -0
- package/lib/middleware/logger.d.ts +67 -0
- package/lib/middleware/middleware-manager.cjs +83 -0
- package/lib/middleware/middleware-manager.cjs.map +1 -0
- package/lib/middleware/middleware-manager.d.ts +40 -0
- package/lib/middleware/persist.cjs +105 -0
- package/lib/middleware/persist.cjs.map +1 -0
- package/lib/middleware/persist.d.ts +34 -0
- package/lib/middleware/time-travel.cjs +154 -0
- package/lib/middleware/time-travel.cjs.map +1 -0
- package/lib/middleware/time-travel.d.ts +30 -0
- package/lib/middleware/validation.cjs +76 -0
- package/lib/middleware/validation.cjs.map +1 -0
- package/lib/middleware/validation.d.ts +100 -0
- package/lib/package.json +3 -0
- package/lib/plugins/define-plugin.cjs +56 -0
- package/lib/plugins/define-plugin.cjs.map +1 -0
- package/lib/plugins/define-plugin.d.ts +74 -0
- package/lib/plugins/index.cjs +20 -0
- package/lib/plugins/index.d.ts +8 -0
- package/lib/plugins/plugin-manager.cjs +81 -0
- package/lib/plugins/plugin-manager.cjs.map +1 -0
- package/lib/plugins/plugin-manager.d.ts +35 -0
- package/lib/types/index.cjs +12 -0
- package/lib/types/index.d.ts +12 -0
- package/lib/types/middleware.cjs +12 -0
- package/lib/types/middleware.d.ts +172 -0
- package/lib/types/plugin.cjs +12 -0
- package/lib/types/plugin.d.ts +136 -0
- package/lib/types/store.cjs +12 -0
- package/lib/types/store.d.ts +198 -0
- package/lib/types/subscription.cjs +12 -0
- package/lib/types/subscription.d.ts +158 -0
- package/lib/types/utility.cjs +12 -0
- package/lib/types/utility.d.ts +312 -0
- package/lib/utils/debounce-throttle.cjs +89 -0
- package/lib/utils/debounce-throttle.cjs.map +1 -0
- package/lib/utils/debounce-throttle.d.ts +86 -0
- package/lib/utils/deep-clone.cjs +202 -0
- package/lib/utils/deep-clone.cjs.map +1 -0
- package/lib/utils/deep-clone.d.ts +143 -0
- package/lib/utils/index.cjs +34 -0
- package/lib/utils/index.d.ts +13 -0
- package/lib/utils/selector.cjs +161 -0
- package/lib/utils/selector.cjs.map +1 -0
- package/lib/utils/selector.d.ts +213 -0
- package/package.json +155 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 自定义错误类
|
|
3
|
+
*
|
|
4
|
+
* 提供统一的错误处理模式
|
|
5
|
+
* @module errors
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Store 错误代码
|
|
9
|
+
*/
|
|
10
|
+
export declare enum StoreErrorCode {
|
|
11
|
+
/** Store 已销毁 */
|
|
12
|
+
STORE_DISPOSED = "STORE_DISPOSED",
|
|
13
|
+
/** Store 不存在 */
|
|
14
|
+
STORE_NOT_FOUND = "STORE_NOT_FOUND",
|
|
15
|
+
/** Store 已存在 */
|
|
16
|
+
STORE_ALREADY_EXISTS = "STORE_ALREADY_EXISTS",
|
|
17
|
+
/** 无效的状态 */
|
|
18
|
+
INVALID_STATE = "INVALID_STATE",
|
|
19
|
+
/** 无效的 Action */
|
|
20
|
+
INVALID_ACTION = "INVALID_ACTION",
|
|
21
|
+
/** 序列化错误 */
|
|
22
|
+
SERIALIZATION_ERROR = "SERIALIZATION_ERROR",
|
|
23
|
+
/** 反序列化错误 */
|
|
24
|
+
DESERIALIZATION_ERROR = "DESERIALIZATION_ERROR",
|
|
25
|
+
/** 存储错误 */
|
|
26
|
+
STORAGE_ERROR = "STORAGE_ERROR",
|
|
27
|
+
/** 插件错误 */
|
|
28
|
+
PLUGIN_ERROR = "PLUGIN_ERROR",
|
|
29
|
+
/** 中间件错误 */
|
|
30
|
+
MIDDLEWARE_ERROR = "MIDDLEWARE_ERROR",
|
|
31
|
+
/** 订阅错误 */
|
|
32
|
+
SUBSCRIPTION_ERROR = "SUBSCRIPTION_ERROR",
|
|
33
|
+
/** 超时错误 */
|
|
34
|
+
TIMEOUT_ERROR = "TIMEOUT_ERROR",
|
|
35
|
+
/** 未知错误 */
|
|
36
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR"
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 错误严重级别
|
|
40
|
+
*/
|
|
41
|
+
export declare enum ErrorSeverity {
|
|
42
|
+
/** 警告 - 不影响功能,但需要注意 */
|
|
43
|
+
WARNING = "warning",
|
|
44
|
+
/** 错误 - 影响部分功能 */
|
|
45
|
+
ERROR = "error",
|
|
46
|
+
/** 致命 - 导致系统无法正常运行 */
|
|
47
|
+
FATAL = "fatal"
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Store 错误上下文
|
|
51
|
+
*/
|
|
52
|
+
export interface StoreErrorContext {
|
|
53
|
+
/** Store ID */
|
|
54
|
+
storeId?: string;
|
|
55
|
+
/** Action 名称 */
|
|
56
|
+
action?: string;
|
|
57
|
+
/** 插件名称 */
|
|
58
|
+
plugin?: string;
|
|
59
|
+
/** 中间件名称 */
|
|
60
|
+
middleware?: string;
|
|
61
|
+
/** 额外数据 */
|
|
62
|
+
data?: unknown;
|
|
63
|
+
/** 时间戳 */
|
|
64
|
+
timestamp?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Store 基础错误类
|
|
68
|
+
*
|
|
69
|
+
* 所有 Store 相关错误的基类
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* try {
|
|
74
|
+
* store.someAction()
|
|
75
|
+
* } catch (error) {
|
|
76
|
+
* if (error instanceof StoreError) {
|
|
77
|
+
* console.log('Store error:', error.code, error.message)
|
|
78
|
+
* console.log('Context:', error.context)
|
|
79
|
+
* }
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare class StoreError extends Error {
|
|
84
|
+
/** 错误代码 */
|
|
85
|
+
readonly code: StoreErrorCode;
|
|
86
|
+
/** 错误上下文 */
|
|
87
|
+
readonly context: StoreErrorContext;
|
|
88
|
+
/** 错误严重级别 */
|
|
89
|
+
readonly severity: ErrorSeverity;
|
|
90
|
+
/** 原始错误 */
|
|
91
|
+
readonly cause?: Error;
|
|
92
|
+
/**
|
|
93
|
+
* 创建 Store 错误
|
|
94
|
+
*
|
|
95
|
+
* @param message - 错误消息
|
|
96
|
+
* @param code - 错误代码
|
|
97
|
+
* @param context - 错误上下文
|
|
98
|
+
* @param severity - 错误严重级别
|
|
99
|
+
* @param cause - 原始错误
|
|
100
|
+
*/
|
|
101
|
+
constructor(message: string, code?: StoreErrorCode, context?: StoreErrorContext, severity?: ErrorSeverity, cause?: Error);
|
|
102
|
+
/**
|
|
103
|
+
* 转换为 JSON
|
|
104
|
+
*/
|
|
105
|
+
toJSON(): Record<string, unknown>;
|
|
106
|
+
/**
|
|
107
|
+
* 格式化错误信息
|
|
108
|
+
*/
|
|
109
|
+
format(): string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Store 销毁错误
|
|
113
|
+
*
|
|
114
|
+
* 当尝试操作已销毁的 Store 时抛出
|
|
115
|
+
*/
|
|
116
|
+
export declare class StoreDisposedError extends StoreError {
|
|
117
|
+
constructor(storeId: string, action?: string);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Store 不存在错误
|
|
121
|
+
*/
|
|
122
|
+
export declare class StoreNotFoundError extends StoreError {
|
|
123
|
+
constructor(storeId: string);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Store 已存在错误
|
|
127
|
+
*/
|
|
128
|
+
export declare class StoreAlreadyExistsError extends StoreError {
|
|
129
|
+
constructor(storeId: string);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 无效状态错误
|
|
133
|
+
*/
|
|
134
|
+
export declare class InvalidStateError extends StoreError {
|
|
135
|
+
constructor(message: string, storeId?: string, data?: unknown);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 序列化错误
|
|
139
|
+
*/
|
|
140
|
+
export declare class SerializationError extends StoreError {
|
|
141
|
+
constructor(message: string, cause?: Error, storeId?: string);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 反序列化错误
|
|
145
|
+
*/
|
|
146
|
+
export declare class DeserializationError extends StoreError {
|
|
147
|
+
constructor(message: string, cause?: Error, storeId?: string);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 存储错误
|
|
151
|
+
*/
|
|
152
|
+
export declare class StorageError extends StoreError {
|
|
153
|
+
constructor(message: string, cause?: Error, storeId?: string);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 插件错误
|
|
157
|
+
*/
|
|
158
|
+
export declare class PluginError extends StoreError {
|
|
159
|
+
constructor(message: string, pluginName: string, cause?: Error);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 中间件错误
|
|
163
|
+
*/
|
|
164
|
+
export declare class MiddlewareError extends StoreError {
|
|
165
|
+
constructor(message: string, middlewareName: string, cause?: Error);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 订阅错误
|
|
169
|
+
*/
|
|
170
|
+
export declare class SubscriptionError extends StoreError {
|
|
171
|
+
constructor(message: string, cause?: Error, storeId?: string);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* 超时错误
|
|
175
|
+
*/
|
|
176
|
+
export declare class TimeoutError extends StoreError {
|
|
177
|
+
constructor(message: string, storeId?: string, action?: string);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 错误处理工具
|
|
181
|
+
*/
|
|
182
|
+
export declare const errorUtils: {
|
|
183
|
+
/**
|
|
184
|
+
* 判断是否为 Store 错误
|
|
185
|
+
*/
|
|
186
|
+
isStoreError(error: unknown): error is StoreError;
|
|
187
|
+
/**
|
|
188
|
+
* 判断是否为特定类型的错误
|
|
189
|
+
*/
|
|
190
|
+
isErrorCode(error: unknown, code: StoreErrorCode): boolean;
|
|
191
|
+
/**
|
|
192
|
+
* 包装错误为 Store 错误
|
|
193
|
+
*/
|
|
194
|
+
wrap(error: unknown, code?: StoreErrorCode, context?: StoreErrorContext): StoreError;
|
|
195
|
+
/**
|
|
196
|
+
* 安全执行函数,捕获并包装错误
|
|
197
|
+
*/
|
|
198
|
+
tryCatch<T>(fn: () => T | Promise<T>, code?: StoreErrorCode, context?: StoreErrorContext): Promise<T>;
|
|
199
|
+
/**
|
|
200
|
+
* 创建错误日志记录器
|
|
201
|
+
*/
|
|
202
|
+
createLogger(prefix: string): {
|
|
203
|
+
error(error: StoreError): void;
|
|
204
|
+
warn(error: StoreError): void;
|
|
205
|
+
log(error: StoreError): void;
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* ***********************************
|
|
3
|
+
* @composy/store-core v0.0.1 *
|
|
4
|
+
* Built with rollup *
|
|
5
|
+
* Build time: 2024-08-17 11:27:33 *
|
|
6
|
+
* Build mode: production *
|
|
7
|
+
* Minified: No *
|
|
8
|
+
* ***********************************
|
|
9
|
+
*/
|
|
10
|
+
//#region src/errors/index.ts
|
|
11
|
+
var StoreErrorCode = /* @__PURE__ */ ((StoreErrorCode2) => {
|
|
12
|
+
StoreErrorCode2["STORE_DISPOSED"] = "STORE_DISPOSED";
|
|
13
|
+
StoreErrorCode2["STORE_NOT_FOUND"] = "STORE_NOT_FOUND";
|
|
14
|
+
StoreErrorCode2["STORE_ALREADY_EXISTS"] = "STORE_ALREADY_EXISTS";
|
|
15
|
+
StoreErrorCode2["INVALID_STATE"] = "INVALID_STATE";
|
|
16
|
+
StoreErrorCode2["INVALID_ACTION"] = "INVALID_ACTION";
|
|
17
|
+
StoreErrorCode2["SERIALIZATION_ERROR"] = "SERIALIZATION_ERROR";
|
|
18
|
+
StoreErrorCode2["DESERIALIZATION_ERROR"] = "DESERIALIZATION_ERROR";
|
|
19
|
+
StoreErrorCode2["STORAGE_ERROR"] = "STORAGE_ERROR";
|
|
20
|
+
StoreErrorCode2["PLUGIN_ERROR"] = "PLUGIN_ERROR";
|
|
21
|
+
StoreErrorCode2["MIDDLEWARE_ERROR"] = "MIDDLEWARE_ERROR";
|
|
22
|
+
StoreErrorCode2["SUBSCRIPTION_ERROR"] = "SUBSCRIPTION_ERROR";
|
|
23
|
+
StoreErrorCode2["TIMEOUT_ERROR"] = "TIMEOUT_ERROR";
|
|
24
|
+
StoreErrorCode2["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
25
|
+
return StoreErrorCode2;
|
|
26
|
+
})(StoreErrorCode || {});
|
|
27
|
+
var ErrorSeverity = /* @__PURE__ */ ((ErrorSeverity2) => {
|
|
28
|
+
ErrorSeverity2["WARNING"] = "warning";
|
|
29
|
+
ErrorSeverity2["ERROR"] = "error";
|
|
30
|
+
ErrorSeverity2["FATAL"] = "fatal";
|
|
31
|
+
return ErrorSeverity2;
|
|
32
|
+
})(ErrorSeverity || {});
|
|
33
|
+
var StoreError = class StoreError extends Error {
|
|
34
|
+
/**
|
|
35
|
+
* 创建 Store 错误
|
|
36
|
+
*
|
|
37
|
+
* @param message - 错误消息
|
|
38
|
+
* @param code - 错误代码
|
|
39
|
+
* @param context - 错误上下文
|
|
40
|
+
* @param severity - 错误严重级别
|
|
41
|
+
* @param cause - 原始错误
|
|
42
|
+
*/
|
|
43
|
+
constructor(message, code = "UNKNOWN_ERROR", context = {}, severity = "error", cause) {
|
|
44
|
+
super(message);
|
|
45
|
+
this.name = "StoreError";
|
|
46
|
+
this.code = code;
|
|
47
|
+
this.context = {
|
|
48
|
+
...context,
|
|
49
|
+
timestamp: context.timestamp ?? Date.now()
|
|
50
|
+
};
|
|
51
|
+
this.severity = severity;
|
|
52
|
+
this.cause = cause;
|
|
53
|
+
Object.setPrototypeOf(this, StoreError.prototype);
|
|
54
|
+
if (Error.captureStackTrace) Error.captureStackTrace(this, StoreError);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 转换为 JSON
|
|
58
|
+
*/
|
|
59
|
+
toJSON() {
|
|
60
|
+
return {
|
|
61
|
+
name: this.name,
|
|
62
|
+
message: this.message,
|
|
63
|
+
code: this.code,
|
|
64
|
+
context: this.context,
|
|
65
|
+
severity: this.severity,
|
|
66
|
+
stack: this.stack
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 格式化错误信息
|
|
71
|
+
*/
|
|
72
|
+
format() {
|
|
73
|
+
const parts = [`[${this.code}] ${this.message}`];
|
|
74
|
+
if (this.context.storeId) parts.push(`Store: ${this.context.storeId}`);
|
|
75
|
+
if (this.context.action) parts.push(`Action: ${this.context.action}`);
|
|
76
|
+
return parts.join(" | ");
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var StoreDisposedError = class StoreDisposedError extends StoreError {
|
|
80
|
+
constructor(storeId, action) {
|
|
81
|
+
super(`Store "${storeId}" \u5DF2\u88AB\u9500\u6BC1\uFF0C\u65E0\u6CD5\u6267\u884C\u64CD\u4F5C${action ? `: ${action}` : ""}`, "STORE_DISPOSED", {
|
|
82
|
+
storeId,
|
|
83
|
+
action
|
|
84
|
+
}, "error");
|
|
85
|
+
this.name = "StoreDisposedError";
|
|
86
|
+
Object.setPrototypeOf(this, StoreDisposedError.prototype);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var StoreNotFoundError = class StoreNotFoundError extends StoreError {
|
|
90
|
+
constructor(storeId) {
|
|
91
|
+
super(`Store "${storeId}" \u4E0D\u5B58\u5728`, "STORE_NOT_FOUND", { storeId }, "error");
|
|
92
|
+
this.name = "StoreNotFoundError";
|
|
93
|
+
Object.setPrototypeOf(this, StoreNotFoundError.prototype);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
var StoreAlreadyExistsError = class StoreAlreadyExistsError extends StoreError {
|
|
97
|
+
constructor(storeId) {
|
|
98
|
+
super(`Store "${storeId}" \u5DF2\u5B58\u5728`, "STORE_ALREADY_EXISTS", { storeId }, "warning");
|
|
99
|
+
this.name = "StoreAlreadyExistsError";
|
|
100
|
+
Object.setPrototypeOf(this, StoreAlreadyExistsError.prototype);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var InvalidStateError = class InvalidStateError extends StoreError {
|
|
104
|
+
constructor(message, storeId, data) {
|
|
105
|
+
super(message, "INVALID_STATE", {
|
|
106
|
+
storeId,
|
|
107
|
+
data
|
|
108
|
+
}, "error");
|
|
109
|
+
this.name = "InvalidStateError";
|
|
110
|
+
Object.setPrototypeOf(this, InvalidStateError.prototype);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var SerializationError = class SerializationError extends StoreError {
|
|
114
|
+
constructor(message, cause, storeId) {
|
|
115
|
+
super(message, "SERIALIZATION_ERROR", { storeId }, "error", cause);
|
|
116
|
+
this.name = "SerializationError";
|
|
117
|
+
Object.setPrototypeOf(this, SerializationError.prototype);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
var DeserializationError = class DeserializationError extends StoreError {
|
|
121
|
+
constructor(message, cause, storeId) {
|
|
122
|
+
super(message, "DESERIALIZATION_ERROR", { storeId }, "error", cause);
|
|
123
|
+
this.name = "DeserializationError";
|
|
124
|
+
Object.setPrototypeOf(this, DeserializationError.prototype);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
var StorageError = class StorageError extends StoreError {
|
|
128
|
+
constructor(message, cause, storeId) {
|
|
129
|
+
super(message, "STORAGE_ERROR", { storeId }, "error", cause);
|
|
130
|
+
this.name = "StorageError";
|
|
131
|
+
Object.setPrototypeOf(this, StorageError.prototype);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var PluginError = class PluginError extends StoreError {
|
|
135
|
+
constructor(message, pluginName, cause) {
|
|
136
|
+
super(message, "PLUGIN_ERROR", { plugin: pluginName }, "error", cause);
|
|
137
|
+
this.name = "PluginError";
|
|
138
|
+
Object.setPrototypeOf(this, PluginError.prototype);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
var MiddlewareError = class MiddlewareError extends StoreError {
|
|
142
|
+
constructor(message, middlewareName, cause) {
|
|
143
|
+
super(message, "MIDDLEWARE_ERROR", { middleware: middlewareName }, "error", cause);
|
|
144
|
+
this.name = "MiddlewareError";
|
|
145
|
+
Object.setPrototypeOf(this, MiddlewareError.prototype);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
var SubscriptionError = class SubscriptionError extends StoreError {
|
|
149
|
+
constructor(message, cause, storeId) {
|
|
150
|
+
super(message, "SUBSCRIPTION_ERROR", { storeId }, "warning", cause);
|
|
151
|
+
this.name = "SubscriptionError";
|
|
152
|
+
Object.setPrototypeOf(this, SubscriptionError.prototype);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
var TimeoutError = class TimeoutError extends StoreError {
|
|
156
|
+
constructor(message, storeId, action) {
|
|
157
|
+
super(message, "TIMEOUT_ERROR", {
|
|
158
|
+
storeId,
|
|
159
|
+
action
|
|
160
|
+
}, "error");
|
|
161
|
+
this.name = "TimeoutError";
|
|
162
|
+
Object.setPrototypeOf(this, TimeoutError.prototype);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const errorUtils = {
|
|
166
|
+
/**
|
|
167
|
+
* 判断是否为 Store 错误
|
|
168
|
+
*/
|
|
169
|
+
isStoreError(error) {
|
|
170
|
+
return error instanceof StoreError;
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* 判断是否为特定类型的错误
|
|
174
|
+
*/
|
|
175
|
+
isErrorCode(error, code) {
|
|
176
|
+
return error instanceof StoreError && error.code === code;
|
|
177
|
+
},
|
|
178
|
+
/**
|
|
179
|
+
* 包装错误为 Store 错误
|
|
180
|
+
*/
|
|
181
|
+
wrap(error, code = "UNKNOWN_ERROR", context = {}) {
|
|
182
|
+
if (error instanceof StoreError) return error;
|
|
183
|
+
return new StoreError(error instanceof Error ? error.message : String(error), code, context, "error", error instanceof Error ? error : void 0);
|
|
184
|
+
},
|
|
185
|
+
/**
|
|
186
|
+
* 安全执行函数,捕获并包装错误
|
|
187
|
+
*/
|
|
188
|
+
async tryCatch(fn, code = "UNKNOWN_ERROR", context = {}) {
|
|
189
|
+
try {
|
|
190
|
+
return await fn();
|
|
191
|
+
} catch (error) {
|
|
192
|
+
throw errorUtils.wrap(error, code, context);
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
/**
|
|
196
|
+
* 创建错误日志记录器
|
|
197
|
+
*/
|
|
198
|
+
createLogger(prefix) {
|
|
199
|
+
return {
|
|
200
|
+
error(error) {
|
|
201
|
+
console.error(`[${prefix}]`, error.format());
|
|
202
|
+
if (error.cause) console.error(`[${prefix}] Caused by:`, error.cause);
|
|
203
|
+
},
|
|
204
|
+
warn(error) {
|
|
205
|
+
console.warn(`[${prefix}]`, error.format());
|
|
206
|
+
},
|
|
207
|
+
log(error) {
|
|
208
|
+
if (error.severity === "fatal" || error.severity === "error") this.error(error);
|
|
209
|
+
else this.warn(error);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
//#endregion
|
|
215
|
+
export { DeserializationError, ErrorSeverity, InvalidStateError, MiddlewareError, PluginError, SerializationError, StorageError, StoreAlreadyExistsError, StoreDisposedError, StoreError, StoreErrorCode, StoreNotFoundError, SubscriptionError, TimeoutError, errorUtils };
|
|
216
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|
|
217
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["StoreErrorCode","ErrorSeverity"],"sources":["../../src/errors/index.ts"],"sourcesContent":["/**\n * 自定义错误类\n *\n * 提供统一的错误处理模式\n * @module errors\n */\n\n/**\n * Store 错误代码\n */\nexport enum StoreErrorCode {\n /** Store 已销毁 */\n STORE_DISPOSED = 'STORE_DISPOSED',\n /** Store 不存在 */\n STORE_NOT_FOUND = 'STORE_NOT_FOUND',\n /** Store 已存在 */\n STORE_ALREADY_EXISTS = 'STORE_ALREADY_EXISTS',\n /** 无效的状态 */\n INVALID_STATE = 'INVALID_STATE',\n /** 无效的 Action */\n INVALID_ACTION = 'INVALID_ACTION',\n /** 序列化错误 */\n SERIALIZATION_ERROR = 'SERIALIZATION_ERROR',\n /** 反序列化错误 */\n DESERIALIZATION_ERROR = 'DESERIALIZATION_ERROR',\n /** 存储错误 */\n STORAGE_ERROR = 'STORAGE_ERROR',\n /** 插件错误 */\n PLUGIN_ERROR = 'PLUGIN_ERROR',\n /** 中间件错误 */\n MIDDLEWARE_ERROR = 'MIDDLEWARE_ERROR',\n /** 订阅错误 */\n SUBSCRIPTION_ERROR = 'SUBSCRIPTION_ERROR',\n /** 超时错误 */\n TIMEOUT_ERROR = 'TIMEOUT_ERROR',\n /** 未知错误 */\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n}\n\n/**\n * 错误严重级别\n */\nexport enum ErrorSeverity {\n /** 警告 - 不影响功能,但需要注意 */\n WARNING = 'warning',\n /** 错误 - 影响部分功能 */\n ERROR = 'error',\n /** 致命 - 导致系统无法正常运行 */\n FATAL = 'fatal',\n}\n\n/**\n * Store 错误上下文\n */\nexport interface StoreErrorContext {\n /** Store ID */\n storeId?: string\n /** Action 名称 */\n action?: string\n /** 插件名称 */\n plugin?: string\n /** 中间件名称 */\n middleware?: string\n /** 额外数据 */\n data?: unknown\n /** 时间戳 */\n timestamp?: number\n}\n\n/**\n * Store 基础错误类\n *\n * 所有 Store 相关错误的基类\n *\n * @example\n * ```typescript\n * try {\n * store.someAction()\n * } catch (error) {\n * if (error instanceof StoreError) {\n * console.log('Store error:', error.code, error.message)\n * console.log('Context:', error.context)\n * }\n * }\n * ```\n */\nexport class StoreError extends Error {\n /** 错误代码 */\n readonly code: StoreErrorCode\n\n /** 错误上下文 */\n readonly context: StoreErrorContext\n\n /** 错误严重级别 */\n readonly severity: ErrorSeverity\n\n /** 原始错误 */\n readonly cause?: Error\n\n /**\n * 创建 Store 错误\n *\n * @param message - 错误消息\n * @param code - 错误代码\n * @param context - 错误上下文\n * @param severity - 错误严重级别\n * @param cause - 原始错误\n */\n constructor(\n message: string,\n code: StoreErrorCode = StoreErrorCode.UNKNOWN_ERROR,\n context: StoreErrorContext = {},\n severity: ErrorSeverity = ErrorSeverity.ERROR,\n cause?: Error,\n ) {\n super(message)\n this.name = 'StoreError'\n this.code = code\n this.context = {\n ...context,\n timestamp: context.timestamp ?? Date.now(),\n }\n this.severity = severity\n this.cause = cause\n\n // 保持正确的原型链\n Object.setPrototypeOf(this, StoreError.prototype)\n\n // 捕获堆栈跟踪\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StoreError)\n }\n }\n\n /**\n * 转换为 JSON\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n context: this.context,\n severity: this.severity,\n stack: this.stack,\n }\n }\n\n /**\n * 格式化错误信息\n */\n format(): string {\n const parts = [`[${this.code}] ${this.message}`]\n\n if (this.context.storeId) {\n parts.push(`Store: ${this.context.storeId}`)\n }\n\n if (this.context.action) {\n parts.push(`Action: ${this.context.action}`)\n }\n\n return parts.join(' | ')\n }\n}\n\n/**\n * Store 销毁错误\n *\n * 当尝试操作已销毁的 Store 时抛出\n */\nexport class StoreDisposedError extends StoreError {\n constructor(storeId: string, action?: string) {\n super(\n `Store \"${storeId}\" 已被销毁,无法执行操作${action ? `: ${action}` : ''}`,\n StoreErrorCode.STORE_DISPOSED,\n { storeId, action },\n ErrorSeverity.ERROR,\n )\n this.name = 'StoreDisposedError'\n Object.setPrototypeOf(this, StoreDisposedError.prototype)\n }\n}\n\n/**\n * Store 不存在错误\n */\nexport class StoreNotFoundError extends StoreError {\n constructor(storeId: string) {\n super(\n `Store \"${storeId}\" 不存在`,\n StoreErrorCode.STORE_NOT_FOUND,\n { storeId },\n ErrorSeverity.ERROR,\n )\n this.name = 'StoreNotFoundError'\n Object.setPrototypeOf(this, StoreNotFoundError.prototype)\n }\n}\n\n/**\n * Store 已存在错误\n */\nexport class StoreAlreadyExistsError extends StoreError {\n constructor(storeId: string) {\n super(\n `Store \"${storeId}\" 已存在`,\n StoreErrorCode.STORE_ALREADY_EXISTS,\n { storeId },\n ErrorSeverity.WARNING,\n )\n this.name = 'StoreAlreadyExistsError'\n Object.setPrototypeOf(this, StoreAlreadyExistsError.prototype)\n }\n}\n\n/**\n * 无效状态错误\n */\nexport class InvalidStateError extends StoreError {\n constructor(message: string, storeId?: string, data?: unknown) {\n super(\n message,\n StoreErrorCode.INVALID_STATE,\n { storeId, data },\n ErrorSeverity.ERROR,\n )\n this.name = 'InvalidStateError'\n Object.setPrototypeOf(this, InvalidStateError.prototype)\n }\n}\n\n/**\n * 序列化错误\n */\nexport class SerializationError extends StoreError {\n constructor(message: string, cause?: Error, storeId?: string) {\n super(\n message,\n StoreErrorCode.SERIALIZATION_ERROR,\n { storeId },\n ErrorSeverity.ERROR,\n cause,\n )\n this.name = 'SerializationError'\n Object.setPrototypeOf(this, SerializationError.prototype)\n }\n}\n\n/**\n * 反序列化错误\n */\nexport class DeserializationError extends StoreError {\n constructor(message: string, cause?: Error, storeId?: string) {\n super(\n message,\n StoreErrorCode.DESERIALIZATION_ERROR,\n { storeId },\n ErrorSeverity.ERROR,\n cause,\n )\n this.name = 'DeserializationError'\n Object.setPrototypeOf(this, DeserializationError.prototype)\n }\n}\n\n/**\n * 存储错误\n */\nexport class StorageError extends StoreError {\n constructor(message: string, cause?: Error, storeId?: string) {\n super(\n message,\n StoreErrorCode.STORAGE_ERROR,\n { storeId },\n ErrorSeverity.ERROR,\n cause,\n )\n this.name = 'StorageError'\n Object.setPrototypeOf(this, StorageError.prototype)\n }\n}\n\n/**\n * 插件错误\n */\nexport class PluginError extends StoreError {\n constructor(message: string, pluginName: string, cause?: Error) {\n super(\n message,\n StoreErrorCode.PLUGIN_ERROR,\n { plugin: pluginName },\n ErrorSeverity.ERROR,\n cause,\n )\n this.name = 'PluginError'\n Object.setPrototypeOf(this, PluginError.prototype)\n }\n}\n\n/**\n * 中间件错误\n */\nexport class MiddlewareError extends StoreError {\n constructor(message: string, middlewareName: string, cause?: Error) {\n super(\n message,\n StoreErrorCode.MIDDLEWARE_ERROR,\n { middleware: middlewareName },\n ErrorSeverity.ERROR,\n cause,\n )\n this.name = 'MiddlewareError'\n Object.setPrototypeOf(this, MiddlewareError.prototype)\n }\n}\n\n/**\n * 订阅错误\n */\nexport class SubscriptionError extends StoreError {\n constructor(message: string, cause?: Error, storeId?: string) {\n super(\n message,\n StoreErrorCode.SUBSCRIPTION_ERROR,\n { storeId },\n ErrorSeverity.WARNING,\n cause,\n )\n this.name = 'SubscriptionError'\n Object.setPrototypeOf(this, SubscriptionError.prototype)\n }\n}\n\n/**\n * 超时错误\n */\nexport class TimeoutError extends StoreError {\n constructor(message: string, storeId?: string, action?: string) {\n super(\n message,\n StoreErrorCode.TIMEOUT_ERROR,\n { storeId, action },\n ErrorSeverity.ERROR,\n )\n this.name = 'TimeoutError'\n Object.setPrototypeOf(this, TimeoutError.prototype)\n }\n}\n\n/**\n * 错误处理工具\n */\nexport const errorUtils = {\n /**\n * 判断是否为 Store 错误\n */\n isStoreError(error: unknown): error is StoreError {\n return error instanceof StoreError\n },\n\n /**\n * 判断是否为特定类型的错误\n */\n isErrorCode(error: unknown, code: StoreErrorCode): boolean {\n return error instanceof StoreError && error.code === code\n },\n\n /**\n * 包装错误为 Store 错误\n */\n wrap(error: unknown, code: StoreErrorCode = StoreErrorCode.UNKNOWN_ERROR, context: StoreErrorContext = {}): StoreError {\n if (error instanceof StoreError) {\n return error\n }\n\n const message = error instanceof Error ? error.message : String(error)\n const cause = error instanceof Error ? error : undefined\n\n return new StoreError(message, code, context, ErrorSeverity.ERROR, cause)\n },\n\n /**\n * 安全执行函数,捕获并包装错误\n */\n async tryCatch<T>(\n fn: () => T | Promise<T>,\n code: StoreErrorCode = StoreErrorCode.UNKNOWN_ERROR,\n context: StoreErrorContext = {},\n ): Promise<T> {\n try {\n return await fn()\n }\n catch (error) {\n throw errorUtils.wrap(error, code, context)\n }\n },\n\n /**\n * 创建错误日志记录器\n */\n createLogger(prefix: string) {\n return {\n error(error: StoreError): void {\n console.error(`[${prefix}]`, error.format())\n if (error.cause) {\n console.error(`[${prefix}] Caused by:`, error.cause)\n }\n },\n\n warn(error: StoreError): void {\n console.warn(`[${prefix}]`, error.format())\n },\n\n log(error: StoreError): void {\n if (error.severity === ErrorSeverity.FATAL || error.severity === ErrorSeverity.ERROR) {\n this.error(error)\n }\n else {\n this.warn(error)\n }\n },\n }\n },\n}\n\n"],"mappings":"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"}
|
package/es/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @composy/store-core - 框架无关的状态管理核心库
|
|
3
|
+
*
|
|
4
|
+
* 主要功能模块:
|
|
5
|
+
* - 核心抽象:Store、State、Action、Getter 等核心概念
|
|
6
|
+
* - 插件系统:可扩展的插件机制
|
|
7
|
+
* - 中间件:日志、持久化、时间旅行等
|
|
8
|
+
* - 订阅发布:状态变化订阅、事件总线
|
|
9
|
+
* - 批量更新:性能优化的批量状态更新
|
|
10
|
+
* - 工具函数:深拷贝、选择器等
|
|
11
|
+
*
|
|
12
|
+
* @module @composy/store-core
|
|
13
|
+
*/
|
|
14
|
+
export { BaseStore, batch, createAsyncAction, createBatchManager, createEventBus, createPubSub, createPubSubWithValue, createStore, getGlobalBatchManager, globalEventBus, setGlobalBatchManager, } from './core';
|
|
15
|
+
export type { AsyncAction, AsyncActionOptions, AsyncActionState, CreateStoreDefinition, StoreAPI, } from './core';
|
|
16
|
+
export * from './engine';
|
|
17
|
+
export { DeserializationError, ErrorSeverity, errorUtils, InvalidStateError, MiddlewareError, PluginError, SerializationError, StorageError, StoreAlreadyExistsError, StoreDisposedError, StoreError, StoreErrorCode, StoreNotFoundError, SubscriptionError, TimeoutError, } from './errors';
|
|
18
|
+
export type { StoreErrorContext, } from './errors';
|
|
19
|
+
export { createLoggerMiddleware, createMiddlewareManager, createPersistMiddleware, createSimpleLoggerMiddleware, createTimeTravelMiddleware, createValidationMiddleware, getGlobalMiddlewareManager, restoreState, setGlobalMiddlewareManager, setRestoreCallback, } from './middleware';
|
|
20
|
+
export type { StoreValidationRules, ValidationError, ValidationMiddlewareOptions, ValidationResult, ValidationRule, } from './middleware';
|
|
21
|
+
export { composePlugins, createPluginFactory, createPluginManager, defineStorePlugin, getGlobalPluginManager, setGlobalPluginManager, } from './plugins';
|
|
22
|
+
export type { ActionContext, ActionSubscriber, BatchContext, BatchManager, DefinePluginOptions, EventBus, EventData, EventListener, EventType, LoggerMiddlewareOptions, Middleware, MiddlewareActionType, MiddlewareContext, MiddlewareFunction, MiddlewareManager, PersistMiddlewareOptions, PersistOptions, PluginContext, PluginFactory, PluginManager, PubSub, Selector, SelectorOptions, StateMutation, StateSnapshot, StateSubscriber, StateTree, StorageAdapter, StoreAction, StoreActions, StoreDefinition, StoreGetter, StoreGetters, StoreId, StoreInstance, StoreManagerLike, StoreOptions, StorePlugin, SubscribeOptions, Subscriber, SubscriptionOptions, TimeTravelController, TimeTravelMiddlewareOptions, Unsubscribe, } from './types';
|
|
23
|
+
export { combineSelectors, createCachedSelector, createMemoizedSelector, createSelector, createSelectorWithDeps, debounce, deepClone, deepEqual, deepFreeze, deepMerge, deepMergeWithOptions, deleteByPath, getByPath, hasPath, isObject, isPlainObject, setByPath, shallowClone, throttle, } from './utils';
|
|
24
|
+
export declare const version = "1.0.0";
|
|
25
|
+
export declare const name = "@composy/store-core";
|
|
26
|
+
export type { DebouncedFunction, DeepCloneOptions, DeepMergeOptions, MemoizedSelectorOptions, SelectorEqualityFn, ThrottledFunction, } from './utils';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,SAAS,EACT,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,qBAAqB,GACtB,MAAM,QAAQ,CAAA;AAEf,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,GACT,MAAM,QAAQ,CAAA;AAGf,cAAc,UAAU,CAAA;AAGxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,UAAU,CAAA;AAEjB,YAAY,EACV,iBAAiB,GAClB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,WAAW,CAAA;AAGlB,YAAY,EAEV,aAAa,EACb,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EAEZ,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EAET,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,WAAW,GACZ,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,EACb,SAAS,EACT,YAAY,EACZ,QAAQ,GACT,MAAM,SAAS,CAAA;AAGhB,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B,eAAO,MAAM,IAAI,wBAAwB,CAAA;AAEzC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,SAAS,CAAA"}
|
package/es/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* ***********************************
|
|
3
|
+
* @composy/store-core v0.0.1 *
|
|
4
|
+
* Built with rollup *
|
|
5
|
+
* Build time: 2024-08-17 11:27:33 *
|
|
6
|
+
* Build mode: production *
|
|
7
|
+
* Minified: No *
|
|
8
|
+
* ***********************************
|
|
9
|
+
*/
|
|
10
|
+
import { createPubSub, createPubSubWithValue } from "./core/pub-sub.js";
|
|
11
|
+
import { createAsyncAction } from "./core/async-action.js";
|
|
12
|
+
import { createEventBus, globalEventBus } from "./core/event-bus.js";
|
|
13
|
+
import { BaseStore } from "./core/base-store.js";
|
|
14
|
+
import { batch, createBatchManager, getGlobalBatchManager, setGlobalBatchManager } from "./core/batch-manager.js";
|
|
15
|
+
import { createStore } from "./core/create-store.js";
|
|
16
|
+
import { createStoreEngineBridge, storeEventKeys, storeStateKeys } from "./engine/plugin.js";
|
|
17
|
+
import { DeserializationError, ErrorSeverity, InvalidStateError, MiddlewareError, PluginError, SerializationError, StorageError, StoreAlreadyExistsError, StoreDisposedError, StoreError, StoreErrorCode, StoreNotFoundError, SubscriptionError, TimeoutError, errorUtils } from "./errors/index.js";
|
|
18
|
+
import { debounce, throttle } from "./utils/debounce-throttle.js";
|
|
19
|
+
import { deepClone, deepEqual, deepFreeze, deepMerge, deepMergeWithOptions, isObject, isPlainObject, shallowClone } from "./utils/deep-clone.js";
|
|
20
|
+
import { combineSelectors, createCachedSelector, createMemoizedSelector, createSelector, createSelectorWithDeps, deleteByPath, getByPath, hasPath, setByPath } from "./utils/selector.js";
|
|
21
|
+
import { createLoggerMiddleware, createSimpleLoggerMiddleware } from "./middleware/logger.js";
|
|
22
|
+
import { createMiddlewareManager, getGlobalMiddlewareManager, setGlobalMiddlewareManager } from "./middleware/middleware-manager.js";
|
|
23
|
+
import { createPersistMiddleware, restoreState } from "./middleware/persist.js";
|
|
24
|
+
import { createTimeTravelMiddleware, setRestoreCallback } from "./middleware/time-travel.js";
|
|
25
|
+
import { createValidationMiddleware } from "./middleware/validation.js";
|
|
26
|
+
import { composePlugins, createPluginFactory, defineStorePlugin } from "./plugins/define-plugin.js";
|
|
27
|
+
import { createPluginManager, getGlobalPluginManager, setGlobalPluginManager } from "./plugins/plugin-manager.js";
|
|
28
|
+
//#region src/index.ts
|
|
29
|
+
const version = "1.0.0";
|
|
30
|
+
const name = "@composy/store-core";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { BaseStore, DeserializationError, ErrorSeverity, InvalidStateError, MiddlewareError, PluginError, SerializationError, StorageError, StoreAlreadyExistsError, StoreDisposedError, StoreError, StoreErrorCode, StoreNotFoundError, SubscriptionError, TimeoutError, batch, combineSelectors, composePlugins, createAsyncAction, createBatchManager, createCachedSelector, createEventBus, createLoggerMiddleware, createMemoizedSelector, createMiddlewareManager, createPersistMiddleware, createPluginFactory, createPluginManager, createPubSub, createPubSubWithValue, createSelector, createSelectorWithDeps, createSimpleLoggerMiddleware, createStore, createStoreEngineBridge, createTimeTravelMiddleware, createValidationMiddleware, debounce, deepClone, deepEqual, deepFreeze, deepMerge, deepMergeWithOptions, defineStorePlugin, deleteByPath, errorUtils, getByPath, getGlobalBatchManager, getGlobalMiddlewareManager, getGlobalPluginManager, globalEventBus, hasPath, isObject, isPlainObject, name, restoreState, setByPath, setGlobalBatchManager, setGlobalMiddlewareManager, setGlobalPluginManager, setRestoreCallback, shallowClone, storeEventKeys, storeStateKeys, throttle, version };
|
|
33
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
package/es/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/**\n * @composy/store-core - 框架无关的状态管理核心库\n *\n * 主要功能模块:\n * - 核心抽象:Store、State、Action、Getter 等核心概念\n * - 插件系统:可扩展的插件机制\n * - 中间件:日志、持久化、时间旅行等\n * - 订阅发布:状态变化订阅、事件总线\n * - 批量更新:性能优化的批量状态更新\n * - 工具函数:深拷贝、选择器等\n *\n * @module @composy/store-core\n */\n\n// === 核心模块 ===\nexport {\n BaseStore,\n batch,\n createAsyncAction,\n createBatchManager,\n createEventBus,\n createPubSub,\n createPubSubWithValue,\n createStore,\n getGlobalBatchManager,\n globalEventBus,\n setGlobalBatchManager,\n} from './core'\n\nexport type {\n AsyncAction,\n AsyncActionOptions,\n AsyncActionState,\n CreateStoreDefinition,\n StoreAPI,\n} from './core'\n\n// Engine 插件\nexport * from './engine'\n\n// === 错误处理 ===\nexport {\n DeserializationError,\n ErrorSeverity,\n errorUtils,\n InvalidStateError,\n MiddlewareError,\n PluginError,\n SerializationError,\n StorageError,\n StoreAlreadyExistsError,\n StoreDisposedError,\n StoreError,\n StoreErrorCode,\n StoreNotFoundError,\n SubscriptionError,\n TimeoutError,\n} from './errors'\n\nexport type {\n StoreErrorContext,\n} from './errors'\n\n// === 中间件模块 ===\nexport {\n createLoggerMiddleware,\n createMiddlewareManager,\n createPersistMiddleware,\n createSimpleLoggerMiddleware,\n createTimeTravelMiddleware,\n createValidationMiddleware,\n getGlobalMiddlewareManager,\n restoreState,\n setGlobalMiddlewareManager,\n setRestoreCallback,\n} from './middleware'\n\nexport type {\n StoreValidationRules,\n ValidationError,\n ValidationMiddlewareOptions,\n ValidationResult,\n ValidationRule,\n} from './middleware'\n\n// === 插件模块 ===\nexport {\n composePlugins,\n createPluginFactory,\n createPluginManager,\n defineStorePlugin,\n getGlobalPluginManager,\n setGlobalPluginManager,\n} from './plugins'\n\n// === 类型定义 ===\nexport type {\n // Store 类型\n ActionContext,\n ActionSubscriber,\n // 订阅类型\n BatchContext,\n BatchManager,\n // 插件类型\n DefinePluginOptions,\n EventBus,\n EventData,\n EventListener,\n EventType,\n // 中间件类型\n LoggerMiddlewareOptions,\n Middleware,\n MiddlewareActionType,\n MiddlewareContext,\n MiddlewareFunction,\n MiddlewareManager,\n PersistMiddlewareOptions,\n PersistOptions,\n PluginContext,\n PluginFactory,\n PluginManager,\n PubSub,\n Selector,\n SelectorOptions,\n StateMutation,\n StateSnapshot,\n StateSubscriber,\n StateTree,\n StorageAdapter,\n StoreAction,\n StoreActions,\n StoreDefinition,\n StoreGetter,\n StoreGetters,\n StoreId,\n StoreInstance,\n StoreManagerLike,\n StoreOptions,\n StorePlugin,\n SubscribeOptions,\n Subscriber,\n SubscriptionOptions,\n TimeTravelController,\n TimeTravelMiddlewareOptions,\n Unsubscribe,\n} from './types'\n\n// === 工具函数 ===\nexport {\n combineSelectors,\n createCachedSelector,\n createMemoizedSelector,\n createSelector,\n createSelectorWithDeps,\n debounce,\n deepClone,\n deepEqual,\n deepFreeze,\n deepMerge,\n deepMergeWithOptions,\n deleteByPath,\n getByPath,\n hasPath,\n isObject,\n isPlainObject,\n setByPath,\n shallowClone,\n throttle,\n} from './utils'\n\n// === 版本信息 ===\nexport const version = '1.0.0'\nexport const name = '@composy/store-core'\n\nexport type {\n DebouncedFunction,\n DeepCloneOptions,\n DeepMergeOptions,\n MemoizedSelectorOptions,\n SelectorEqualityFn,\n ThrottledFunction,\n} from './utils'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2KO,MAAM,UAAU;AAChB,MAAM,OAAO"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中间件模块导出
|
|
3
|
+
*
|
|
4
|
+
* 提供日志、持久化、时间旅行等中间件
|
|
5
|
+
* @module middleware
|
|
6
|
+
*/
|
|
7
|
+
export { createLoggerMiddleware, createProductionLoggerMiddleware, createSimpleLoggerMiddleware, } from './logger';
|
|
8
|
+
export { createMiddlewareManager, getGlobalMiddlewareManager, setGlobalMiddlewareManager, } from './middleware-manager';
|
|
9
|
+
export { createPersistMiddleware, restoreState, } from './persist';
|
|
10
|
+
export { createTimeTravelMiddleware, setRestoreCallback, } from './time-travel';
|
|
11
|
+
export { createValidationMiddleware, } from './validation';
|
|
12
|
+
export type { StoreValidationRules, ValidationError, ValidationMiddlewareOptions, ValidationResult, ValidationRule, } from './validation';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,UAAU,CAAA;AAEjB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,uBAAuB,EACvB,YAAY,GACb,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* ***********************************
|
|
3
|
+
* @composy/store-core v0.0.1 *
|
|
4
|
+
* Built with rollup *
|
|
5
|
+
* Build time: 2024-08-17 11:27:33 *
|
|
6
|
+
* Build mode: production *
|
|
7
|
+
* Minified: No *
|
|
8
|
+
* ***********************************
|
|
9
|
+
*/
|
|
10
|
+
import { createLoggerMiddleware, createProductionLoggerMiddleware, createSimpleLoggerMiddleware } from "./logger.js";
|
|
11
|
+
import { createMiddlewareManager, getGlobalMiddlewareManager, setGlobalMiddlewareManager } from "./middleware-manager.js";
|
|
12
|
+
import { createPersistMiddleware, restoreState } from "./persist.js";
|
|
13
|
+
import { createTimeTravelMiddleware, setRestoreCallback } from "./time-travel.js";
|
|
14
|
+
import { createValidationMiddleware } from "./validation.js";
|
|
15
|
+
export { createLoggerMiddleware, createMiddlewareManager, createPersistMiddleware, createProductionLoggerMiddleware, createSimpleLoggerMiddleware, createTimeTravelMiddleware, createValidationMiddleware, getGlobalMiddlewareManager, restoreState, setGlobalMiddlewareManager, setRestoreCallback };
|
|
16
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日志中间件
|
|
3
|
+
*
|
|
4
|
+
* 提供状态变化和 Action 调用的日志记录,支持多种日志级别和格式化选项
|
|
5
|
+
* @module middleware/logger
|
|
6
|
+
*/
|
|
7
|
+
import type { LoggerMiddlewareOptions, Middleware, MiddlewareContext } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* 创建日志中间件
|
|
10
|
+
*
|
|
11
|
+
* 提供完整的状态变化和 Action 调用日志记录,支持时间戳、分组和性能计时
|
|
12
|
+
*
|
|
13
|
+
* @param options - 日志选项
|
|
14
|
+
* @returns 日志中间件
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const logger = createLoggerMiddleware({
|
|
19
|
+
* logState: true,
|
|
20
|
+
* collapsed: true,
|
|
21
|
+
* timestamp: true,
|
|
22
|
+
* filter: (context) => context.storeId !== 'internal'
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* middlewareManager.use(logger)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function createLoggerMiddleware(options?: LoggerMiddlewareOptions): Middleware;
|
|
29
|
+
/**
|
|
30
|
+
* 简单日志中间件(不使用分组,适合生产环境)
|
|
31
|
+
*
|
|
32
|
+
* @param options - 配置选项
|
|
33
|
+
* @param options.includePayload - 是否输出 payload
|
|
34
|
+
* @param options.format - 自定义日志格式化函数
|
|
35
|
+
* @param options.filter - 日志过滤器
|
|
36
|
+
* @returns 简单日志中间件
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const logger = createSimpleLoggerMiddleware({
|
|
41
|
+
* includePayload: true,
|
|
42
|
+
* format: (ctx) => `${ctx.storeId}: ${ctx.type}`
|
|
43
|
+
* })
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function createSimpleLoggerMiddleware(options?: {
|
|
47
|
+
/** 是否包含 payload */
|
|
48
|
+
includePayload?: boolean;
|
|
49
|
+
/** 自定义格式化函数 */
|
|
50
|
+
format?: (context: MiddlewareContext) => string;
|
|
51
|
+
/** 过滤器 */
|
|
52
|
+
filter?: (context: MiddlewareContext) => boolean;
|
|
53
|
+
}): Middleware;
|
|
54
|
+
/**
|
|
55
|
+
* 创建生产环境日志中间件
|
|
56
|
+
*
|
|
57
|
+
* 只记录错误和警告,不记录正常状态变化
|
|
58
|
+
*
|
|
59
|
+
* @param options - 配置选项
|
|
60
|
+
* @param options.onError - 自定义错误处理器
|
|
61
|
+
* @returns 生产环境日志中间件
|
|
62
|
+
*/
|
|
63
|
+
export declare function createProductionLoggerMiddleware(options?: {
|
|
64
|
+
/** 自定义错误处理器 */
|
|
65
|
+
onError?: (error: Error, context: MiddlewareContext) => void;
|
|
66
|
+
}): Middleware;
|
|
67
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,iBAAiB,EAAa,MAAM,UAAU,CAAA;AAwEjG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,uBAA4B,GACpC,UAAU,CA8FZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE;IACpD,mBAAmB;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe;IACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,MAAM,CAAA;IAC/C,UAAU;IACV,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAA;CAC5C,GAAG,UAAU,CA+BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,GAAE;IACxD,eAAe;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACxD,GAAG,UAAU,CAyBlB"}
|