@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,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中间件系统类型定义
|
|
3
|
+
*
|
|
4
|
+
* @module types/middleware
|
|
5
|
+
*/
|
|
6
|
+
import type { StateTree, StoreId } from './store';
|
|
7
|
+
/**
|
|
8
|
+
* 中间件上下文
|
|
9
|
+
* @template S - 状态类型
|
|
10
|
+
*/
|
|
11
|
+
export interface MiddlewareContext<S extends StateTree = StateTree> {
|
|
12
|
+
/** Store ID */
|
|
13
|
+
storeId: StoreId;
|
|
14
|
+
/** 当前状态 */
|
|
15
|
+
state: S;
|
|
16
|
+
/** 操作类型 */
|
|
17
|
+
type: MiddlewareActionType;
|
|
18
|
+
/** 操作数据 */
|
|
19
|
+
payload?: unknown;
|
|
20
|
+
/** 元数据 */
|
|
21
|
+
meta?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 中间件操作类型
|
|
25
|
+
*/
|
|
26
|
+
export type MiddlewareActionType = 'state:init' | 'state:patch' | 'state:reset' | 'action:before' | 'action:after' | 'action:error';
|
|
27
|
+
/**
|
|
28
|
+
* 中间件函数类型
|
|
29
|
+
* @template S - 状态类型
|
|
30
|
+
*/
|
|
31
|
+
export type MiddlewareFunction<S extends StateTree = StateTree> = (context: MiddlewareContext<S>, next: () => void | Promise<void>) => void | Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 中间件接口
|
|
34
|
+
* @template S - 状态类型
|
|
35
|
+
*/
|
|
36
|
+
export interface Middleware<S extends StateTree = StateTree> {
|
|
37
|
+
/** 中间件名称 */
|
|
38
|
+
readonly name: string;
|
|
39
|
+
/** 中间件优先级(数字越小越先执行) */
|
|
40
|
+
readonly priority?: number;
|
|
41
|
+
/** 中间件处理函数 */
|
|
42
|
+
handler: MiddlewareFunction<S>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 中间件管理器接口
|
|
46
|
+
*/
|
|
47
|
+
export interface MiddlewareManager {
|
|
48
|
+
/**
|
|
49
|
+
* 添加中间件
|
|
50
|
+
* @param middleware - 中间件实例
|
|
51
|
+
*/
|
|
52
|
+
use: (middleware: Middleware) => void;
|
|
53
|
+
/**
|
|
54
|
+
* 移除中间件
|
|
55
|
+
* @param name - 中间件名称
|
|
56
|
+
*/
|
|
57
|
+
remove: (name: string) => void;
|
|
58
|
+
/**
|
|
59
|
+
* 获取中间件
|
|
60
|
+
* @param name - 中间件名称
|
|
61
|
+
*/
|
|
62
|
+
get: (name: string) => Middleware | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* 是否存在中间件
|
|
65
|
+
* @param name - 中间件名称
|
|
66
|
+
*/
|
|
67
|
+
has: (name: string) => boolean;
|
|
68
|
+
/**
|
|
69
|
+
* 执行中间件链
|
|
70
|
+
* @param context - 上下文
|
|
71
|
+
*/
|
|
72
|
+
execute: (context: MiddlewareContext) => Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* 获取所有中间件
|
|
75
|
+
*/
|
|
76
|
+
getAll: () => Middleware[];
|
|
77
|
+
/**
|
|
78
|
+
* 清空所有中间件
|
|
79
|
+
*/
|
|
80
|
+
clear: () => void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 日志中间件选项
|
|
84
|
+
*/
|
|
85
|
+
export interface LoggerMiddlewareOptions {
|
|
86
|
+
/** 是否记录状态变化 */
|
|
87
|
+
logState?: boolean;
|
|
88
|
+
/** 是否记录 action */
|
|
89
|
+
logAction?: boolean;
|
|
90
|
+
/** 是否折叠日志 */
|
|
91
|
+
collapsed?: boolean;
|
|
92
|
+
/** 是否显示时间戳 */
|
|
93
|
+
timestamp?: boolean;
|
|
94
|
+
/** 日志级别 */
|
|
95
|
+
level?: 'log' | 'info' | 'warn' | 'debug';
|
|
96
|
+
/** 自定义日志器 */
|
|
97
|
+
logger?: {
|
|
98
|
+
log: (...args: unknown[]) => void;
|
|
99
|
+
info: (...args: unknown[]) => void;
|
|
100
|
+
warn: (...args: unknown[]) => void;
|
|
101
|
+
debug: (...args: unknown[]) => void;
|
|
102
|
+
error?: (...args: unknown[]) => void;
|
|
103
|
+
group?: (...args: unknown[]) => void;
|
|
104
|
+
groupCollapsed?: (...args: unknown[]) => void;
|
|
105
|
+
groupEnd?: () => void;
|
|
106
|
+
};
|
|
107
|
+
/** 自定义过滤器 */
|
|
108
|
+
filter?: (context: MiddlewareContext) => boolean;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 持久化中间件选项
|
|
112
|
+
*/
|
|
113
|
+
export interface PersistMiddlewareOptions {
|
|
114
|
+
/** 存储键名前缀 */
|
|
115
|
+
keyPrefix?: string;
|
|
116
|
+
/** 存储类型 */
|
|
117
|
+
storage?: 'localStorage' | 'sessionStorage';
|
|
118
|
+
/** 要持久化的 Store ID 列表(空则全部持久化) */
|
|
119
|
+
stores?: StoreId[];
|
|
120
|
+
/** 要持久化的状态路径 */
|
|
121
|
+
paths?: Record<StoreId, string[]>;
|
|
122
|
+
/** 序列化函数 */
|
|
123
|
+
serialize?: (value: unknown) => string;
|
|
124
|
+
/** 反序列化函数 */
|
|
125
|
+
deserialize?: (value: string) => unknown;
|
|
126
|
+
/** 防抖延迟(毫秒) */
|
|
127
|
+
debounce?: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 时间旅行中间件选项
|
|
131
|
+
*/
|
|
132
|
+
export interface TimeTravelMiddlewareOptions {
|
|
133
|
+
/** 最大历史记录数 */
|
|
134
|
+
maxHistory?: number;
|
|
135
|
+
/** 是否启用 */
|
|
136
|
+
enabled?: boolean;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 时间旅行控制器
|
|
140
|
+
*/
|
|
141
|
+
export interface TimeTravelController {
|
|
142
|
+
/** 撤销 */
|
|
143
|
+
undo: () => void;
|
|
144
|
+
/** 重做 */
|
|
145
|
+
redo: () => void;
|
|
146
|
+
/** 跳转到指定历史 */
|
|
147
|
+
goto: (index: number) => void;
|
|
148
|
+
/** 获取历史记录 */
|
|
149
|
+
getHistory: () => StateSnapshot[];
|
|
150
|
+
/** 当前历史索引 */
|
|
151
|
+
getCurrentIndex: () => number;
|
|
152
|
+
/** 是否可撤销 */
|
|
153
|
+
canUndo: () => boolean;
|
|
154
|
+
/** 是否可重做 */
|
|
155
|
+
canRedo: () => boolean;
|
|
156
|
+
/** 清空历史 */
|
|
157
|
+
clear: () => void;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 状态快照
|
|
161
|
+
*/
|
|
162
|
+
export interface StateSnapshot {
|
|
163
|
+
/** 快照时间 */
|
|
164
|
+
timestamp: number;
|
|
165
|
+
/** 状态数据 */
|
|
166
|
+
state: StateTree;
|
|
167
|
+
/** 操作类型 */
|
|
168
|
+
type: MiddlewareActionType;
|
|
169
|
+
/** Store ID */
|
|
170
|
+
storeId: StoreId;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/types/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 插件系统类型定义
|
|
3
|
+
*
|
|
4
|
+
* @module types/plugin
|
|
5
|
+
*/
|
|
6
|
+
import type { StateTree, StoreId } from './store';
|
|
7
|
+
/**
|
|
8
|
+
* 插件上下文
|
|
9
|
+
*/
|
|
10
|
+
export interface PluginContext {
|
|
11
|
+
/** Store 管理器实例 */
|
|
12
|
+
storeManager: StoreManagerLike;
|
|
13
|
+
/** 当前 Store ID */
|
|
14
|
+
storeId: StoreId;
|
|
15
|
+
/** 当前 Store 实例 */
|
|
16
|
+
store: unknown;
|
|
17
|
+
/** 插件配置选项 */
|
|
18
|
+
options: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Store 管理器接口(简化版)
|
|
22
|
+
*/
|
|
23
|
+
export interface StoreManagerLike {
|
|
24
|
+
/** 获取 Store */
|
|
25
|
+
getStore: (id: StoreId) => unknown;
|
|
26
|
+
/** 是否存在 Store */
|
|
27
|
+
hasStore: (id: StoreId) => boolean;
|
|
28
|
+
/** 获取所有 Store ID */
|
|
29
|
+
getStoreIds: () => StoreId[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 插件接口
|
|
33
|
+
* @template Options - 插件选项类型
|
|
34
|
+
*/
|
|
35
|
+
export interface StorePlugin<Options = Record<string, unknown>> {
|
|
36
|
+
/** 插件名称 */
|
|
37
|
+
readonly name: string;
|
|
38
|
+
/** 插件版本 */
|
|
39
|
+
readonly version?: string;
|
|
40
|
+
/** 插件描述 */
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
/**
|
|
43
|
+
* 安装插件
|
|
44
|
+
* @param context - 插件上下文
|
|
45
|
+
* @param options - 插件选项
|
|
46
|
+
*/
|
|
47
|
+
install: (context: PluginContext, options?: Options) => void | Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* 卸载插件
|
|
50
|
+
* @param context - 插件上下文
|
|
51
|
+
*/
|
|
52
|
+
uninstall?: (context: PluginContext) => void | Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Store 创建时的钩子
|
|
55
|
+
* @param store - Store 实例
|
|
56
|
+
*/
|
|
57
|
+
onStoreCreated?: (store: unknown) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Store 销毁时的钩子
|
|
60
|
+
* @param store - Store 实例
|
|
61
|
+
*/
|
|
62
|
+
onStoreDisposed?: (store: unknown) => void;
|
|
63
|
+
/**
|
|
64
|
+
* 状态变化时的钩子
|
|
65
|
+
* @param storeId - Store ID
|
|
66
|
+
* @param state - 新状态
|
|
67
|
+
* @param oldState - 旧状态
|
|
68
|
+
*/
|
|
69
|
+
onStateChange?: <S extends StateTree>(storeId: StoreId, state: S, oldState: S) => void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 插件工厂函数类型
|
|
73
|
+
* @template Options - 插件选项类型
|
|
74
|
+
*/
|
|
75
|
+
export type PluginFactory<Options = Record<string, unknown>> = (options?: Options) => StorePlugin<Options>;
|
|
76
|
+
/**
|
|
77
|
+
* 定义插件选项
|
|
78
|
+
* @template Options - 插件选项类型
|
|
79
|
+
*/
|
|
80
|
+
export interface DefinePluginOptions<Options = Record<string, unknown>> {
|
|
81
|
+
/** 插件名称 */
|
|
82
|
+
name: string;
|
|
83
|
+
/** 插件版本 */
|
|
84
|
+
version?: string;
|
|
85
|
+
/** 插件描述 */
|
|
86
|
+
description?: string;
|
|
87
|
+
/** 安装函数 */
|
|
88
|
+
install: StorePlugin<Options>['install'];
|
|
89
|
+
/** 卸载函数 */
|
|
90
|
+
uninstall?: StorePlugin<Options>['uninstall'];
|
|
91
|
+
/** Store 创建钩子 */
|
|
92
|
+
onStoreCreated?: StorePlugin<Options>['onStoreCreated'];
|
|
93
|
+
/** Store 销毁钩子 */
|
|
94
|
+
onStoreDisposed?: StorePlugin<Options>['onStoreDisposed'];
|
|
95
|
+
/** 状态变化钩子 */
|
|
96
|
+
onStateChange?: StorePlugin<Options>['onStateChange'];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 插件管理器接口
|
|
100
|
+
*/
|
|
101
|
+
export interface PluginManager {
|
|
102
|
+
/**
|
|
103
|
+
* 注册插件
|
|
104
|
+
* @param plugin - 插件实例
|
|
105
|
+
* @param options - 插件选项
|
|
106
|
+
*/
|
|
107
|
+
use: <Options>(plugin: StorePlugin<Options>, options?: Options) => void;
|
|
108
|
+
/**
|
|
109
|
+
* 移除插件
|
|
110
|
+
* @param name - 插件名称
|
|
111
|
+
*/
|
|
112
|
+
remove: (name: string) => void;
|
|
113
|
+
/**
|
|
114
|
+
* 获取插件
|
|
115
|
+
* @param name - 插件名称
|
|
116
|
+
*/
|
|
117
|
+
get: (name: string) => StorePlugin | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* 是否已注册插件
|
|
120
|
+
* @param name - 插件名称
|
|
121
|
+
*/
|
|
122
|
+
has: (name: string) => boolean;
|
|
123
|
+
/**
|
|
124
|
+
* 获取所有插件
|
|
125
|
+
*/
|
|
126
|
+
getAll: () => Map<string, StorePlugin>;
|
|
127
|
+
/**
|
|
128
|
+
* 获取插件数量
|
|
129
|
+
*/
|
|
130
|
+
size: () => number;
|
|
131
|
+
/**
|
|
132
|
+
* 清空所有插件
|
|
133
|
+
*/
|
|
134
|
+
clear: () => void;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store 核心类型定义
|
|
3
|
+
*
|
|
4
|
+
* @module types/store
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 状态对象类型
|
|
8
|
+
*/
|
|
9
|
+
export type StateTree = Record<string | number | symbol, unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* Store ID 类型
|
|
12
|
+
*/
|
|
13
|
+
export type StoreId = string;
|
|
14
|
+
/**
|
|
15
|
+
* Getter 函数类型
|
|
16
|
+
* @template S - 状态类型
|
|
17
|
+
* @template R - 返回值类型
|
|
18
|
+
*/
|
|
19
|
+
export type StoreGetter<S extends StateTree, R> = (state: S) => R;
|
|
20
|
+
/**
|
|
21
|
+
* Getter 集合类型
|
|
22
|
+
* @template S - 状态类型
|
|
23
|
+
*/
|
|
24
|
+
export type StoreGetters<S extends StateTree> = Record<string, StoreGetter<S, unknown>>;
|
|
25
|
+
/**
|
|
26
|
+
* Action 函数类型
|
|
27
|
+
*
|
|
28
|
+
* 允许 action 通过 `this` 访问当前 Store 实例;未使用 `this` 的普通函数依旧兼容。
|
|
29
|
+
*/
|
|
30
|
+
export type StoreAction = (...args: unknown[]) => unknown;
|
|
31
|
+
/**
|
|
32
|
+
* Action 集合类型
|
|
33
|
+
*/
|
|
34
|
+
export type StoreActions = Record<string, StoreAction>;
|
|
35
|
+
/**
|
|
36
|
+
* Store 定义选项
|
|
37
|
+
* @template Id - Store ID 类型
|
|
38
|
+
* @template S - 状态类型
|
|
39
|
+
* @template G - Getters 类型
|
|
40
|
+
* @template A - Actions 类型
|
|
41
|
+
*/
|
|
42
|
+
export interface StoreDefinition<Id extends StoreId = StoreId, S extends StateTree = StateTree, G extends StoreGetters<S> = StoreGetters<S>, A extends StoreActions = StoreActions> {
|
|
43
|
+
/** Store 唯一标识 */
|
|
44
|
+
id: Id;
|
|
45
|
+
/** 初始状态工厂函数 */
|
|
46
|
+
state: () => S;
|
|
47
|
+
/** Getters 定义 */
|
|
48
|
+
getters?: G;
|
|
49
|
+
/** Actions 定义 */
|
|
50
|
+
actions?: A;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Store 实例接口
|
|
54
|
+
* @template Id - Store ID 类型
|
|
55
|
+
* @template S - 状态类型
|
|
56
|
+
* @template G - Getters 类型
|
|
57
|
+
* @template A - Actions 类型
|
|
58
|
+
*/
|
|
59
|
+
export interface StoreInstance<Id extends StoreId = StoreId, S extends StateTree = StateTree, G extends StoreGetters<S> = StoreGetters<S>, A extends StoreActions = StoreActions> {
|
|
60
|
+
/** Store 唯一标识 */
|
|
61
|
+
$id: Id;
|
|
62
|
+
/** 当前状态 */
|
|
63
|
+
$state: S;
|
|
64
|
+
/** Getter 计算结果 */
|
|
65
|
+
getters: {
|
|
66
|
+
[K in keyof G]: ReturnType<G[K]>;
|
|
67
|
+
};
|
|
68
|
+
/** Action 方法集合 */
|
|
69
|
+
actions: A;
|
|
70
|
+
/**
|
|
71
|
+
* 重置状态到初始值
|
|
72
|
+
*/
|
|
73
|
+
$reset: () => void;
|
|
74
|
+
/**
|
|
75
|
+
* 批量更新状态
|
|
76
|
+
* @param partialState - 部分状态或更新函数
|
|
77
|
+
*/
|
|
78
|
+
$patch: (partialState: Partial<S> | ((state: S) => void)) => void;
|
|
79
|
+
/**
|
|
80
|
+
* 订阅状态变化
|
|
81
|
+
* @param callback - 回调函数
|
|
82
|
+
* @param options - 订阅选项
|
|
83
|
+
* @returns 取消订阅函数
|
|
84
|
+
*/
|
|
85
|
+
$subscribe: (callback: StateSubscriber<S>, options?: SubscribeOptions) => () => void;
|
|
86
|
+
/**
|
|
87
|
+
* 订阅 action 调用
|
|
88
|
+
* @param callback - 回调函数
|
|
89
|
+
* @returns 取消订阅函数
|
|
90
|
+
*/
|
|
91
|
+
$onAction: (callback: ActionSubscriber<A>) => () => void;
|
|
92
|
+
/**
|
|
93
|
+
* 销毁 store
|
|
94
|
+
*/
|
|
95
|
+
$dispose: () => void;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 状态变化订阅器
|
|
99
|
+
* @template S - 状态类型
|
|
100
|
+
*/
|
|
101
|
+
export type StateSubscriber<S extends StateTree> = (mutation: StateMutation<S>, state: S) => void;
|
|
102
|
+
/**
|
|
103
|
+
* 状态变化信息
|
|
104
|
+
* @template S - 状态类型
|
|
105
|
+
*/
|
|
106
|
+
export interface StateMutation<S extends StateTree> {
|
|
107
|
+
/** 变化类型 */
|
|
108
|
+
type: 'direct' | 'patch object' | 'patch function';
|
|
109
|
+
/** Store ID */
|
|
110
|
+
storeId: StoreId;
|
|
111
|
+
/** 变化的键路径 */
|
|
112
|
+
events?: string[];
|
|
113
|
+
/** 变化前的状态快照 */
|
|
114
|
+
oldState?: Partial<S>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 订阅选项
|
|
118
|
+
*/
|
|
119
|
+
export interface SubscribeOptions {
|
|
120
|
+
/** 是否立即执行一次 */
|
|
121
|
+
immediate?: boolean;
|
|
122
|
+
/** 是否深度监听 */
|
|
123
|
+
deep?: boolean;
|
|
124
|
+
/** 是否在组件卸载后继续监听 */
|
|
125
|
+
detached?: boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Action 订阅器
|
|
129
|
+
* @template A - Actions 类型
|
|
130
|
+
*/
|
|
131
|
+
export type ActionSubscriber<A extends StoreActions> = (context: ActionContext<A>) => void;
|
|
132
|
+
/**
|
|
133
|
+
* Action 上下文
|
|
134
|
+
* @template A - Actions 类型
|
|
135
|
+
*/
|
|
136
|
+
export interface ActionContext<A extends StoreActions> {
|
|
137
|
+
/** Action 名称 */
|
|
138
|
+
name: keyof A;
|
|
139
|
+
/** Store ID */
|
|
140
|
+
storeId: StoreId;
|
|
141
|
+
/** 调用参数 */
|
|
142
|
+
args: unknown[];
|
|
143
|
+
/** 执行后回调,异步 action 会在 Promise resolve 后触发 */
|
|
144
|
+
after: (callback: (result: unknown) => void | Promise<void>) => void;
|
|
145
|
+
/** 错误回调,异步 action 会在 Promise reject 后触发 */
|
|
146
|
+
onError: (callback: (error: unknown) => void | Promise<void>) => void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Store 配置选项
|
|
150
|
+
*/
|
|
151
|
+
export interface StoreOptions {
|
|
152
|
+
/** 是否启用严格模式(只能通过 action 修改状态) */
|
|
153
|
+
strict?: boolean;
|
|
154
|
+
/** 是否启用开发工具 */
|
|
155
|
+
devtools?: boolean;
|
|
156
|
+
/** 是否启用持久化 */
|
|
157
|
+
persist?: boolean;
|
|
158
|
+
/** 持久化配置 */
|
|
159
|
+
persistOptions?: PersistOptions;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 持久化选项
|
|
163
|
+
*/
|
|
164
|
+
export interface PersistOptions {
|
|
165
|
+
/** 存储键名 */
|
|
166
|
+
key?: string;
|
|
167
|
+
/** 存储类型 */
|
|
168
|
+
storage?: 'localStorage' | 'sessionStorage' | 'custom';
|
|
169
|
+
/** 自定义存储适配器 */
|
|
170
|
+
customStorage?: StorageAdapter;
|
|
171
|
+
/** 要持久化的路径 */
|
|
172
|
+
paths?: string[];
|
|
173
|
+
/** 序列化函数 */
|
|
174
|
+
serializer?: {
|
|
175
|
+
serialize: (value: unknown) => string;
|
|
176
|
+
deserialize: (value: string) => unknown;
|
|
177
|
+
};
|
|
178
|
+
/** 恢复前回调 */
|
|
179
|
+
beforeRestore?: (context: {
|
|
180
|
+
store: unknown;
|
|
181
|
+
}) => void;
|
|
182
|
+
/** 恢复后回调 */
|
|
183
|
+
afterRestore?: (context: {
|
|
184
|
+
store: unknown;
|
|
185
|
+
}) => void;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* 存储适配器接口
|
|
189
|
+
*/
|
|
190
|
+
export interface StorageAdapter {
|
|
191
|
+
/** 获取数据 */
|
|
192
|
+
getItem: (key: string) => string | null | Promise<string | null>;
|
|
193
|
+
/** 设置数据 */
|
|
194
|
+
setItem: (key: string, value: string) => void | Promise<void>;
|
|
195
|
+
/** 删除数据 */
|
|
196
|
+
removeItem: (key: string) => void | Promise<void>;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/types/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
/*! End of @composy/store-core | Powered by @composy/builder */
|