@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.
Files changed (272) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +172 -0
  3. package/dist/index.js +1852 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.min.js +1082 -0
  6. package/dist/index.min.js.map +1 -0
  7. package/es/core/async-action.d.ts +95 -0
  8. package/es/core/async-action.d.ts.map +1 -0
  9. package/es/core/async-action.js +116 -0
  10. package/es/core/async-action.js.map +1 -0
  11. package/es/core/base-store.d.ts +85 -0
  12. package/es/core/base-store.d.ts.map +1 -0
  13. package/es/core/base-store.js +185 -0
  14. package/es/core/base-store.js.map +1 -0
  15. package/es/core/batch-manager.d.ts +46 -0
  16. package/es/core/batch-manager.d.ts.map +1 -0
  17. package/es/core/batch-manager.js +64 -0
  18. package/es/core/batch-manager.js.map +1 -0
  19. package/es/core/create-store.d.ts +66 -0
  20. package/es/core/create-store.d.ts.map +1 -0
  21. package/es/core/create-store.js +29 -0
  22. package/es/core/create-store.js.map +1 -0
  23. package/es/core/event-bus.d.ts +34 -0
  24. package/es/core/event-bus.d.ts.map +1 -0
  25. package/es/core/event-bus.js +71 -0
  26. package/es/core/event-bus.js.map +1 -0
  27. package/es/core/index.d.ts +14 -0
  28. package/es/core/index.d.ts.map +1 -0
  29. package/es/core/index.js +17 -0
  30. package/es/core/pub-sub.d.ts +41 -0
  31. package/es/core/pub-sub.d.ts.map +1 -0
  32. package/es/core/pub-sub.js +71 -0
  33. package/es/core/pub-sub.js.map +1 -0
  34. package/es/engine/index.d.ts +10 -0
  35. package/es/engine/index.d.ts.map +1 -0
  36. package/es/engine/index.js +12 -0
  37. package/es/engine/plugin.d.ts +20 -0
  38. package/es/engine/plugin.d.ts.map +1 -0
  39. package/es/engine/plugin.js +153 -0
  40. package/es/engine/plugin.js.map +1 -0
  41. package/es/engine/types.d.ts +81 -0
  42. package/es/engine/types.d.ts.map +1 -0
  43. package/es/engine/types.js +10 -0
  44. package/es/errors/index.d.ts +208 -0
  45. package/es/errors/index.d.ts.map +1 -0
  46. package/es/errors/index.js +217 -0
  47. package/es/errors/index.js.map +1 -0
  48. package/es/index.d.ts +27 -0
  49. package/es/index.d.ts.map +1 -0
  50. package/es/index.js +34 -0
  51. package/es/index.js.map +1 -0
  52. package/es/middleware/index.d.ts +13 -0
  53. package/es/middleware/index.d.ts.map +1 -0
  54. package/es/middleware/index.js +16 -0
  55. package/es/middleware/logger.d.ts +67 -0
  56. package/es/middleware/logger.d.ts.map +1 -0
  57. package/es/middleware/logger.js +136 -0
  58. package/es/middleware/logger.js.map +1 -0
  59. package/es/middleware/middleware-manager.d.ts +40 -0
  60. package/es/middleware/middleware-manager.d.ts.map +1 -0
  61. package/es/middleware/middleware-manager.js +79 -0
  62. package/es/middleware/middleware-manager.js.map +1 -0
  63. package/es/middleware/persist.d.ts +34 -0
  64. package/es/middleware/persist.d.ts.map +1 -0
  65. package/es/middleware/persist.js +102 -0
  66. package/es/middleware/persist.js.map +1 -0
  67. package/es/middleware/time-travel.d.ts +30 -0
  68. package/es/middleware/time-travel.d.ts.map +1 -0
  69. package/es/middleware/time-travel.js +151 -0
  70. package/es/middleware/time-travel.js.map +1 -0
  71. package/es/middleware/validation.d.ts +100 -0
  72. package/es/middleware/validation.d.ts.map +1 -0
  73. package/es/middleware/validation.js +74 -0
  74. package/es/middleware/validation.js.map +1 -0
  75. package/es/plugins/define-plugin.d.ts +74 -0
  76. package/es/plugins/define-plugin.d.ts.map +1 -0
  77. package/es/plugins/define-plugin.js +52 -0
  78. package/es/plugins/define-plugin.js.map +1 -0
  79. package/es/plugins/index.d.ts +8 -0
  80. package/es/plugins/index.d.ts.map +1 -0
  81. package/es/plugins/index.js +13 -0
  82. package/es/plugins/plugin-manager.d.ts +35 -0
  83. package/es/plugins/plugin-manager.d.ts.map +1 -0
  84. package/es/plugins/plugin-manager.js +77 -0
  85. package/es/plugins/plugin-manager.js.map +1 -0
  86. package/es/types/index.d.ts +12 -0
  87. package/es/types/index.d.ts.map +1 -0
  88. package/es/types/index.js +10 -0
  89. package/es/types/middleware.d.ts +172 -0
  90. package/es/types/middleware.d.ts.map +1 -0
  91. package/es/types/middleware.js +10 -0
  92. package/es/types/plugin.d.ts +136 -0
  93. package/es/types/plugin.d.ts.map +1 -0
  94. package/es/types/plugin.js +10 -0
  95. package/es/types/store.d.ts +198 -0
  96. package/es/types/store.d.ts.map +1 -0
  97. package/es/types/store.js +10 -0
  98. package/es/types/subscription.d.ts +158 -0
  99. package/es/types/subscription.d.ts.map +1 -0
  100. package/es/types/subscription.js +10 -0
  101. package/es/types/utility.d.ts +312 -0
  102. package/es/types/utility.d.ts.map +1 -0
  103. package/es/types/utility.js +10 -0
  104. package/es/utils/debounce-throttle.d.ts +86 -0
  105. package/es/utils/debounce-throttle.d.ts.map +1 -0
  106. package/es/utils/debounce-throttle.js +86 -0
  107. package/es/utils/debounce-throttle.js.map +1 -0
  108. package/es/utils/deep-clone.d.ts +143 -0
  109. package/es/utils/deep-clone.d.ts.map +1 -0
  110. package/es/utils/deep-clone.js +193 -0
  111. package/es/utils/deep-clone.js.map +1 -0
  112. package/es/utils/index.d.ts +13 -0
  113. package/es/utils/index.d.ts.map +1 -0
  114. package/es/utils/index.js +14 -0
  115. package/es/utils/selector.d.ts +213 -0
  116. package/es/utils/selector.d.ts.map +1 -0
  117. package/es/utils/selector.js +151 -0
  118. package/es/utils/selector.js.map +1 -0
  119. package/esm/core/async-action.d.ts +95 -0
  120. package/esm/core/async-action.js +116 -0
  121. package/esm/core/async-action.js.map +1 -0
  122. package/esm/core/base-store.d.ts +85 -0
  123. package/esm/core/base-store.js +185 -0
  124. package/esm/core/base-store.js.map +1 -0
  125. package/esm/core/batch-manager.d.ts +46 -0
  126. package/esm/core/batch-manager.js +64 -0
  127. package/esm/core/batch-manager.js.map +1 -0
  128. package/esm/core/create-store.d.ts +66 -0
  129. package/esm/core/create-store.js +29 -0
  130. package/esm/core/create-store.js.map +1 -0
  131. package/esm/core/event-bus.d.ts +34 -0
  132. package/esm/core/event-bus.js +71 -0
  133. package/esm/core/event-bus.js.map +1 -0
  134. package/esm/core/index.d.ts +14 -0
  135. package/esm/core/index.js +17 -0
  136. package/esm/core/pub-sub.d.ts +41 -0
  137. package/esm/core/pub-sub.js +71 -0
  138. package/esm/core/pub-sub.js.map +1 -0
  139. package/esm/engine/index.d.ts +10 -0
  140. package/esm/engine/index.js +12 -0
  141. package/esm/engine/plugin.d.ts +20 -0
  142. package/esm/engine/plugin.js +153 -0
  143. package/esm/engine/plugin.js.map +1 -0
  144. package/esm/engine/types.d.ts +81 -0
  145. package/esm/errors/index.d.ts +208 -0
  146. package/esm/errors/index.js +217 -0
  147. package/esm/errors/index.js.map +1 -0
  148. package/esm/index.d.ts +27 -0
  149. package/esm/index.js +36 -0
  150. package/esm/index.js.map +1 -0
  151. package/esm/middleware/index.d.ts +13 -0
  152. package/esm/middleware/logger.d.ts +67 -0
  153. package/esm/middleware/logger.js +119 -0
  154. package/esm/middleware/logger.js.map +1 -0
  155. package/esm/middleware/middleware-manager.d.ts +40 -0
  156. package/esm/middleware/middleware-manager.js +79 -0
  157. package/esm/middleware/middleware-manager.js.map +1 -0
  158. package/esm/middleware/persist.d.ts +34 -0
  159. package/esm/middleware/persist.js +102 -0
  160. package/esm/middleware/persist.js.map +1 -0
  161. package/esm/middleware/time-travel.d.ts +30 -0
  162. package/esm/middleware/time-travel.js +151 -0
  163. package/esm/middleware/time-travel.js.map +1 -0
  164. package/esm/middleware/validation.d.ts +100 -0
  165. package/esm/middleware/validation.js +74 -0
  166. package/esm/middleware/validation.js.map +1 -0
  167. package/esm/plugins/define-plugin.d.ts +74 -0
  168. package/esm/plugins/define-plugin.js +52 -0
  169. package/esm/plugins/define-plugin.js.map +1 -0
  170. package/esm/plugins/index.d.ts +8 -0
  171. package/esm/plugins/plugin-manager.d.ts +35 -0
  172. package/esm/plugins/plugin-manager.js +77 -0
  173. package/esm/plugins/plugin-manager.js.map +1 -0
  174. package/esm/types/index.d.ts +12 -0
  175. package/esm/types/middleware.d.ts +172 -0
  176. package/esm/types/plugin.d.ts +136 -0
  177. package/esm/types/store.d.ts +198 -0
  178. package/esm/types/subscription.d.ts +158 -0
  179. package/esm/types/utility.d.ts +312 -0
  180. package/esm/utils/debounce-throttle.d.ts +86 -0
  181. package/esm/utils/debounce-throttle.js +86 -0
  182. package/esm/utils/debounce-throttle.js.map +1 -0
  183. package/esm/utils/deep-clone.d.ts +143 -0
  184. package/esm/utils/deep-clone.js +193 -0
  185. package/esm/utils/deep-clone.js.map +1 -0
  186. package/esm/utils/index.d.ts +13 -0
  187. package/esm/utils/selector.d.ts +213 -0
  188. package/esm/utils/selector.js +151 -0
  189. package/esm/utils/selector.js.map +1 -0
  190. package/lib/core/async-action.cjs +118 -0
  191. package/lib/core/async-action.cjs.map +1 -0
  192. package/lib/core/async-action.d.ts +95 -0
  193. package/lib/core/base-store.cjs +187 -0
  194. package/lib/core/base-store.cjs.map +1 -0
  195. package/lib/core/base-store.d.ts +85 -0
  196. package/lib/core/batch-manager.cjs +69 -0
  197. package/lib/core/batch-manager.cjs.map +1 -0
  198. package/lib/core/batch-manager.d.ts +46 -0
  199. package/lib/core/create-store.cjs +31 -0
  200. package/lib/core/create-store.cjs.map +1 -0
  201. package/lib/core/create-store.d.ts +66 -0
  202. package/lib/core/event-bus.cjs +74 -0
  203. package/lib/core/event-bus.cjs.map +1 -0
  204. package/lib/core/event-bus.d.ts +34 -0
  205. package/lib/core/index.cjs +29 -0
  206. package/lib/core/index.d.ts +14 -0
  207. package/lib/core/pub-sub.cjs +74 -0
  208. package/lib/core/pub-sub.cjs.map +1 -0
  209. package/lib/core/pub-sub.d.ts +41 -0
  210. package/lib/engine/index.cjs +16 -0
  211. package/lib/engine/index.d.ts +10 -0
  212. package/lib/engine/plugin.cjs +157 -0
  213. package/lib/engine/plugin.cjs.map +1 -0
  214. package/lib/engine/plugin.d.ts +20 -0
  215. package/lib/engine/types.cjs +12 -0
  216. package/lib/engine/types.d.ts +81 -0
  217. package/lib/errors/index.cjs +233 -0
  218. package/lib/errors/index.cjs.map +1 -0
  219. package/lib/errors/index.d.ts +208 -0
  220. package/lib/index.cjs +101 -0
  221. package/lib/index.cjs.map +1 -0
  222. package/lib/index.d.ts +27 -0
  223. package/lib/middleware/index.cjs +28 -0
  224. package/lib/middleware/index.d.ts +13 -0
  225. package/lib/middleware/logger.cjs +140 -0
  226. package/lib/middleware/logger.cjs.map +1 -0
  227. package/lib/middleware/logger.d.ts +67 -0
  228. package/lib/middleware/middleware-manager.cjs +83 -0
  229. package/lib/middleware/middleware-manager.cjs.map +1 -0
  230. package/lib/middleware/middleware-manager.d.ts +40 -0
  231. package/lib/middleware/persist.cjs +105 -0
  232. package/lib/middleware/persist.cjs.map +1 -0
  233. package/lib/middleware/persist.d.ts +34 -0
  234. package/lib/middleware/time-travel.cjs +154 -0
  235. package/lib/middleware/time-travel.cjs.map +1 -0
  236. package/lib/middleware/time-travel.d.ts +30 -0
  237. package/lib/middleware/validation.cjs +76 -0
  238. package/lib/middleware/validation.cjs.map +1 -0
  239. package/lib/middleware/validation.d.ts +100 -0
  240. package/lib/package.json +3 -0
  241. package/lib/plugins/define-plugin.cjs +56 -0
  242. package/lib/plugins/define-plugin.cjs.map +1 -0
  243. package/lib/plugins/define-plugin.d.ts +74 -0
  244. package/lib/plugins/index.cjs +20 -0
  245. package/lib/plugins/index.d.ts +8 -0
  246. package/lib/plugins/plugin-manager.cjs +81 -0
  247. package/lib/plugins/plugin-manager.cjs.map +1 -0
  248. package/lib/plugins/plugin-manager.d.ts +35 -0
  249. package/lib/types/index.cjs +12 -0
  250. package/lib/types/index.d.ts +12 -0
  251. package/lib/types/middleware.cjs +12 -0
  252. package/lib/types/middleware.d.ts +172 -0
  253. package/lib/types/plugin.cjs +12 -0
  254. package/lib/types/plugin.d.ts +136 -0
  255. package/lib/types/store.cjs +12 -0
  256. package/lib/types/store.d.ts +198 -0
  257. package/lib/types/subscription.cjs +12 -0
  258. package/lib/types/subscription.d.ts +158 -0
  259. package/lib/types/utility.cjs +12 -0
  260. package/lib/types/utility.d.ts +312 -0
  261. package/lib/utils/debounce-throttle.cjs +89 -0
  262. package/lib/utils/debounce-throttle.cjs.map +1 -0
  263. package/lib/utils/debounce-throttle.d.ts +86 -0
  264. package/lib/utils/deep-clone.cjs +202 -0
  265. package/lib/utils/deep-clone.cjs.map +1 -0
  266. package/lib/utils/deep-clone.d.ts +143 -0
  267. package/lib/utils/index.cjs +34 -0
  268. package/lib/utils/index.d.ts +13 -0
  269. package/lib/utils/selector.cjs +161 -0
  270. package/lib/utils/selector.cjs.map +1 -0
  271. package/lib/utils/selector.d.ts +213 -0
  272. package/package.json +155 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 (2026-06-11)
4
+
5
+ - 初始版本发布
package/README.md ADDED
@@ -0,0 +1,172 @@
1
+ # @composy/store-core
2
+
3
+ > 🎯 框架无关的状态管理核心库 — Store、中间件、插件、PubSub、工具函数,一应俱全
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@composy/store-core.svg)](https://www.npmjs.com/package/@composy/store-core)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## ✨ 特性
9
+
10
+ - 🏗️ **Store 抽象** — BaseStore 基类 + createStore 工厂函数,灵活创建状态管理
11
+ - 🔧 **中间件系统** — Logger/持久化/时间旅行/校验中间件开箱即用
12
+ - 🔌 **插件扩展** — defineStorePlugin + createPluginManager,可扩展架构
13
+ - 📢 **事件通信** — PubSub 发布订阅 + EventBus 事件总线
14
+ - ⚡ **性能优化** — 批量更新(batch)、记忆化选择器、智能缓存
15
+ - 🧰 **工具函数** — deepClone/deepMerge/createSelector/debounce/throttle 全套
16
+ - 🧩 **Engine Bridge** — 框架无关的 engine state/API/container/events 生命周期桥接
17
+ - 📦 **TypeScript** — 完整类型定义
18
+
19
+ ## 🧭 Core-first 边界
20
+
21
+ `@composy/store-core` 是唯一的通用能力承载层。Store 生命周期、action 订阅、批处理、中间件链、时间旅行快照、engine state/API 同步和工具函数都在这里维护。
22
+
23
+ 框架适配包只能通过公开 API 复用 core:
24
+
25
+ - Vue/Pinia runtime 由 `@composy/store-vue` 创建。
26
+ - engine state/API/container/events 的绑定由 `createStoreEngineBridge()` 统一完成。
27
+ - 后续新增 React/Lit/Vanilla 适配时应复用同一个 bridge,不要再复制 engine plugin 生命周期。
28
+
29
+ ## 📦 安装
30
+
31
+ ```bash
32
+ pnpm add @composy/store-core
33
+ ```
34
+
35
+ ## 🚀 快速开始
36
+
37
+ ### createStore — 工厂函数
38
+
39
+ ```typescript
40
+ import { createStore } from '@composy/store-core'
41
+
42
+ const useCounterStore = createStore({
43
+ id: 'counter',
44
+ state: () => ({ count: 0 }),
45
+ getters: {
46
+ doubleCount: (state) => state.count * 2,
47
+ isPositive: (state) => state.count > 0,
48
+ },
49
+ actions: {
50
+ increment() { this.$patch({ count: this.$state.count + 1 }) },
51
+ decrement() { this.$patch({ count: this.$state.count - 1 }) },
52
+ reset() { this.$reset() },
53
+ },
54
+ })
55
+
56
+ const store = useCounterStore()
57
+ store.actions.increment()
58
+ console.info(store.$state.count) // 1
59
+ console.info(store.getters.doubleCount) // 2
60
+ ```
61
+
62
+ ### 中间件
63
+
64
+ ```typescript
65
+ import {
66
+ createLoggerMiddleware,
67
+ createMiddlewareManager,
68
+ createPersistMiddleware,
69
+ createTimeTravelMiddleware,
70
+ } from '@composy/store-core'
71
+
72
+ const manager = createMiddlewareManager()
73
+
74
+ // Logger — 自动记录状态变化
75
+ manager.use(createLoggerMiddleware({ logState: true }))
76
+
77
+ // 持久化 — 状态自动保存到 localStorage
78
+ manager.use(createPersistMiddleware({ storage: 'localStorage', stores: ['user'] }))
79
+
80
+ // 时间旅行 — 撤销/重做
81
+ const { middleware, controller } = createTimeTravelMiddleware({ maxHistory: 50 })
82
+ manager.use(middleware)
83
+
84
+ controller.undo() // 撤销
85
+ controller.redo() // 重做
86
+ ```
87
+
88
+ ### Engine Bridge
89
+
90
+ ```typescript
91
+ import { createStoreEngineBridge } from '@composy/store-core/engine'
92
+
93
+ const bridge = createStoreEngineBridge({
94
+ name: 'store',
95
+ version: '1.0.0',
96
+ createRuntime: () => runtime,
97
+ })
98
+
99
+ await bridge.install(engine)
100
+ ```
101
+
102
+ Bridge 会同步写入 `store:runtime`、`store:pinia`、`store:api`、`store:registry` 和 `store:bus`,并注册 engine API。
103
+
104
+ ### PubSub & EventBus
105
+
106
+ ```typescript
107
+ import { createEventBus, createPubSubWithValue } from '@composy/store-core'
108
+
109
+ // PubSub — 值订阅
110
+ const counter = createPubSubWithValue(0)
111
+ counter.subscribe((value, oldValue) => {
112
+ console.info(`${oldValue} → ${value}`)
113
+ })
114
+ counter.setValue(42)
115
+
116
+ // EventBus — 事件总线
117
+ const bus = createEventBus()
118
+ bus.on('state:changed', (data) => console.info(data))
119
+ bus.emit('state:changed', { storeId: 'counter', state: { count: 1 } })
120
+ ```
121
+
122
+ ### 工具函数
123
+
124
+ ```typescript
125
+ import {
126
+ createSelector, debounce, deepClone,
127
+ deepEqual, deepMerge,
128
+ getByPath, setByPath, throttle,
129
+ } from '@composy/store-core'
130
+
131
+ deepClone({ nested: { value: 1 } }) // 深拷贝
132
+ deepMerge({ a: 1 }, { b: 2 }, { a: 3 }) // → { a: 3, b: 2 }
133
+ deepEqual({ a: 1 }, { a: 1 }) // → true
134
+ createSelector((state: { count: number }) => state.count)
135
+ getByPath(obj, 'a.b.c') // 路径读取
136
+ setByPath(obj, 'a.b.c', 'new') // 路径设置
137
+ debounce(fn, 300) // 防抖
138
+ throttle(fn, 300) // 节流
139
+ ```
140
+
141
+ ## 📚 API 速查
142
+
143
+ | 模块 | API | 说明 |
144
+ | ------ | ------------------------------- | ------------ |
145
+ | 核心 | `BaseStore` | Store 基类 |
146
+ | 核心 | `createStore` | 工厂函数 |
147
+ | 核心 | `batch` | 批量更新 |
148
+ | 中间件 | `createLoggerMiddleware` | 日志中间件 |
149
+ | 中间件 | `createPersistMiddleware` | 持久化中间件 |
150
+ | 中间件 | `createTimeTravelMiddleware` | 时间旅行 |
151
+ | Engine | `createStoreEngineBridge` | engine 桥接 |
152
+ | 插件 | `defineStorePlugin` | 定义插件 |
153
+ | 插件 | `createPluginManager` | 插件管理器 |
154
+ | 工具 | `deepClone/deepMerge/deepEqual` | 深度操作 |
155
+ | 工具 | `getByPath/setByPath` | 路径操作 |
156
+ | 工具 | `createSelector` | 记忆化选择器 |
157
+ | 工具 | `debounce/throttle` | 防抖/节流 |
158
+
159
+ ## ✅ 验证与产物
160
+
161
+ ```bash
162
+ pnpm -C packages/store/packages/core run lint:check
163
+ pnpm -C packages/store/packages/core run type-check
164
+ pnpm -C packages/store/packages/core run test:run
165
+ pnpm -C packages/store/packages/core run build
166
+ ```
167
+
168
+ 完整构建后必须同时存在 `dist`、`es`、`esm`、`lib` 四类产物目录。
169
+
170
+ ## 📄 License
171
+
172
+ MIT © [LDesign Team](https://github.com/ldesign)