@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,17 @@
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 "./pub-sub.js";
11
+ import { createAsyncAction } from "./async-action.js";
12
+ import { createEventBus, globalEventBus } from "./event-bus.js";
13
+ import { BaseStore } from "./base-store.js";
14
+ import { batch, createBatchManager, getGlobalBatchManager, setGlobalBatchManager } from "./batch-manager.js";
15
+ import { createStore } from "./create-store.js";
16
+ export { BaseStore, batch, createAsyncAction, createBatchManager, createEventBus, createPubSub, createPubSubWithValue, createStore, getGlobalBatchManager, globalEventBus, setGlobalBatchManager };
17
+ /*! End of @composy/store-core | Powered by @composy/builder */
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 发布订阅模式实现
3
+ *
4
+ * @module core/pub-sub
5
+ */
6
+ import type { PubSub } from '../types';
7
+ /**
8
+ * 创建发布订阅管理器
9
+ *
10
+ * @template T - 数据类型
11
+ * @returns 发布订阅管理器实例
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const pubsub = createPubSub<number>()
16
+ *
17
+ * // 订阅
18
+ * const unsubscribe = pubsub.subscribe((value, oldValue) => {
19
+ * console.log(`值从 ${oldValue} 变为 ${value}`)
20
+ * })
21
+ *
22
+ * // 发布
23
+ * pubsub.publish(1, 0)
24
+ *
25
+ * // 取消订阅
26
+ * unsubscribe()
27
+ * ```
28
+ */
29
+ export declare function createPubSub<T = unknown>(): PubSub<T>;
30
+ /**
31
+ * 创建带立即执行的发布订阅管理器
32
+ *
33
+ * @template T - 数据类型
34
+ * @param initialValue - 初始值
35
+ * @returns 发布订阅管理器实例
36
+ */
37
+ export declare function createPubSubWithValue<T>(initialValue: T): PubSub<T> & {
38
+ getValue: () => T;
39
+ setValue: (value: T) => void;
40
+ };
41
+ //# sourceMappingURL=pub-sub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pub-sub.d.ts","sourceRoot":"","sources":["../../src/core/pub-sub.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAgD,MAAM,UAAU,CAAA;AAYpF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAwDrD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG;IACrE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CAC7B,CAkCA"}
@@ -0,0 +1,71 @@
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/core/pub-sub.ts
11
+ function createPubSub() {
12
+ const subscribers = /* @__PURE__ */ new Set();
13
+ const subscribe = (callback, options = {}) => {
14
+ const info = {
15
+ callback,
16
+ options
17
+ };
18
+ subscribers.add(info);
19
+ return () => {
20
+ subscribers.delete(info);
21
+ };
22
+ };
23
+ const publish = (value, oldValue) => {
24
+ subscribers.forEach((info) => {
25
+ try {
26
+ info.callback(value, oldValue);
27
+ } catch (error) {
28
+ console.error("[PubSub] 订阅回调执行出错:", error);
29
+ }
30
+ });
31
+ };
32
+ const clear = () => {
33
+ subscribers.clear();
34
+ };
35
+ const size = () => {
36
+ return subscribers.size;
37
+ };
38
+ return {
39
+ subscribe,
40
+ publish,
41
+ clear,
42
+ size
43
+ };
44
+ }
45
+ function createPubSubWithValue(initialValue) {
46
+ let currentValue = initialValue;
47
+ const pubsub = createPubSub();
48
+ const getValue = () => currentValue;
49
+ const setValue = (value) => {
50
+ const oldValue = currentValue;
51
+ currentValue = value;
52
+ pubsub.publish(value, oldValue);
53
+ };
54
+ const subscribe = (callback, options = {}) => {
55
+ const unsubscribe = pubsub.subscribe(callback, options);
56
+ if (options.immediate) callback(currentValue);
57
+ return unsubscribe;
58
+ };
59
+ return {
60
+ subscribe,
61
+ publish: pubsub.publish,
62
+ clear: pubsub.clear,
63
+ size: pubsub.size,
64
+ getValue,
65
+ setValue
66
+ };
67
+ }
68
+ //#endregion
69
+ export { createPubSub, createPubSubWithValue };
70
+ /*! End of @composy/store-core | Powered by @composy/builder */
71
+ //# sourceMappingURL=pub-sub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pub-sub.js","names":[],"sources":["../../src/core/pub-sub.ts"],"sourcesContent":["/**\n * 发布订阅模式实现\n *\n * @module core/pub-sub\n */\n\nimport type { PubSub, Subscriber, SubscriptionOptions, Unsubscribe } from '../types'\n\n/**\n * 订阅者信息\n */\ninterface SubscriberInfo<T> {\n /** 回调函数 */\n callback: Subscriber<T>\n /** 订阅选项 */\n options: SubscriptionOptions\n}\n\n/**\n * 创建发布订阅管理器\n *\n * @template T - 数据类型\n * @returns 发布订阅管理器实例\n *\n * @example\n * ```typescript\n * const pubsub = createPubSub<number>()\n *\n * // 订阅\n * const unsubscribe = pubsub.subscribe((value, oldValue) => {\n * console.log(`值从 ${oldValue} 变为 ${value}`)\n * })\n *\n * // 发布\n * pubsub.publish(1, 0)\n *\n * // 取消订阅\n * unsubscribe()\n * ```\n */\nexport function createPubSub<T = unknown>(): PubSub<T> {\n /** 订阅者列表 */\n const subscribers = new Set<SubscriberInfo<T>>()\n\n /**\n * 订阅\n */\n const subscribe = (\n callback: Subscriber<T>,\n options: SubscriptionOptions = {},\n ): Unsubscribe => {\n const info: SubscriberInfo<T> = {\n callback,\n options,\n }\n subscribers.add(info)\n\n return () => {\n subscribers.delete(info)\n }\n }\n\n /**\n * 发布\n */\n const publish = (value: T, oldValue?: T): void => {\n subscribers.forEach((info) => {\n try {\n info.callback(value, oldValue)\n }\n catch (error) {\n console.error('[PubSub] 订阅回调执行出错:', error)\n }\n })\n }\n\n /**\n * 清空所有订阅\n */\n const clear = (): void => {\n subscribers.clear()\n }\n\n /**\n * 获取订阅者数量\n */\n const size = (): number => {\n return subscribers.size\n }\n\n return {\n subscribe,\n publish,\n clear,\n size,\n }\n}\n\n/**\n * 创建带立即执行的发布订阅管理器\n *\n * @template T - 数据类型\n * @param initialValue - 初始值\n * @returns 发布订阅管理器实例\n */\nexport function createPubSubWithValue<T>(initialValue: T): PubSub<T> & {\n getValue: () => T\n setValue: (value: T) => void\n} {\n let currentValue = initialValue\n const pubsub = createPubSub<T>()\n\n const getValue = (): T => currentValue\n\n const setValue = (value: T): void => {\n const oldValue = currentValue\n currentValue = value\n pubsub.publish(value, oldValue)\n }\n\n const subscribe = (\n callback: Subscriber<T>,\n options: SubscriptionOptions = {},\n ): Unsubscribe => {\n const unsubscribe = pubsub.subscribe(callback, options)\n\n // 立即执行\n if (options.immediate) {\n callback(currentValue)\n }\n\n return unsubscribe\n }\n\n return {\n subscribe,\n publish: pubsub.publish,\n clear: pubsub.clear,\n size: pubsub.size,\n getValue,\n setValue,\n }\n}\n\n"],"mappings":";;;;;;;;;;AAwCO,SAAS,eAAuC;CAErD,MAAM,8BAAc,IAAI,IAAuB;CAK/C,MAAM,aACJ,UACA,UAA+B,CAAC,MAChB;EAChB,MAAM,OAA0B;GAC9B;GACA;EACF;EACA,YAAY,IAAI,IAAI;EAEpB,aAAa;GACX,YAAY,OAAO,IAAI;EACzB;CACF;CAKA,MAAM,WAAW,OAAU,aAAuB;EAChD,YAAY,SAAS,SAAS;GAC5B,IAAI;IACF,KAAK,SAAS,OAAO,QAAQ;GAC/B,SACO,OAAO;IACZ,QAAQ,MAAM,sBAAsB,KAAK;GAC3C;EACF,CAAC;CACH;CAKA,MAAM,cAAoB;EACxB,YAAY,MAAM;CACpB;CAKA,MAAM,aAAqB;EACzB,OAAO,YAAY;CACrB;CAEA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AASO,SAAS,sBAAyB,cAGvC;CACA,IAAI,eAAe;CACnB,MAAM,SAAS,aAAgB;CAE/B,MAAM,iBAAoB;CAE1B,MAAM,YAAY,UAAmB;EACnC,MAAM,WAAW;EACjB,eAAe;EACf,OAAO,QAAQ,OAAO,QAAQ;CAChC;CAEA,MAAM,aACJ,UACA,UAA+B,CAAC,MAChB;EAChB,MAAM,cAAc,OAAO,UAAU,UAAU,OAAO;EAGtD,IAAI,QAAQ,WACV,SAAS,YAAY;EAGvB,OAAO;CACT;CAEA,OAAO;EACL;EACA,SAAS,OAAO;EAChB,OAAO,OAAO;EACd,MAAM,OAAO;EACb;EACA;CACF;AACF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @module store/engine
3
+ *
4
+ * Store 引擎桥接层的统一导出,提供将 Store 能力集成到 LDesign Engine 的工厂函数、
5
+ * 事件键和状态键。包含引擎 API、容器、事件总线等兼容接口类型,
6
+ * 供 Vue/React 等适配层复用。
7
+ */
8
+ export { createStoreEngineBridge, storeEventKeys, storeStateKeys, } from './plugin';
9
+ export type { StoreEngineApi, StoreEngineApiLike, StoreEngineBridge, StoreEngineBridgeOptions, StoreEngineContainerLike, StoreEngineEventsLike, StoreEngineLike, StoreEngineLoggerLike, StoreEnginePluginContextLike, StoreEnginePluginOptions, StoreEngineRegisteredApi, StoreEngineStateLike, StoreRuntimeLike, } from './types';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,GACf,MAAM,UAAU,CAAA;AAEjB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,SAAS,CAAA"}
@@ -0,0 +1,12 @@
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 { createStoreEngineBridge, storeEventKeys, storeStateKeys } from "./plugin.js";
11
+ export { createStoreEngineBridge, storeEventKeys, storeStateKeys };
12
+ /*! End of @composy/store-core | Powered by @composy/builder */
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @composy/store-core Engine 桥接能力
3
+ *
4
+ * Core 负责 engine 生命周期、state/API 同步和事件派发;框架适配层只提供 runtime 创建与 App 挂载。
5
+ * @module engine/plugin
6
+ */
7
+ import type { StoreEngineBridge, StoreEngineBridgeOptions, StoreRuntimeLike } from './types';
8
+ export declare const storeStateKeys: {
9
+ readonly BUS: "store:bus";
10
+ readonly PINIA: "store:pinia";
11
+ readonly API: "store:api";
12
+ readonly REGISTRY: "store:registry";
13
+ readonly RUNTIME: "store:runtime";
14
+ };
15
+ export declare const storeEventKeys: {
16
+ readonly INSTALLED: "store:installed";
17
+ readonly UNINSTALLED: "store:uninstalled";
18
+ };
19
+ export declare function createStoreEngineBridge<Runtime extends StoreRuntimeLike>(options: StoreEngineBridgeOptions<Runtime>): StoreEngineBridge;
20
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/engine/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EAIxB,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAGhB,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAA;AAEV,eAAO,MAAM,cAAc;;;CAGjB,CAAA;AAgHV,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,gBAAgB,EACtE,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACzC,iBAAiB,CA2HnB"}
@@ -0,0 +1,153 @@
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 { globalEventBus } from "../core/event-bus.js";
11
+ //#region src/engine/plugin.ts
12
+ const storeStateKeys = {
13
+ BUS: "store:bus",
14
+ PINIA: "store:pinia",
15
+ API: "store:api",
16
+ REGISTRY: "store:registry",
17
+ RUNTIME: "store:runtime"
18
+ };
19
+ const storeEventKeys = {
20
+ INSTALLED: "store:installed",
21
+ UNINSTALLED: "store:uninstalled"
22
+ };
23
+ function resolveEngine(context) {
24
+ const value = context;
25
+ if (value && typeof value === "object" && "engine" in value) return value.engine ?? {};
26
+ return value ?? {};
27
+ }
28
+ function resolvePluginContext(context) {
29
+ return context && typeof context === "object" ? context : void 0;
30
+ }
31
+ function resolveDefaultApp(engine, context, payload) {
32
+ const payloadObject = payload;
33
+ return payloadObject?.app ?? payloadObject?.framework?.app ?? engine.getApp?.() ?? context?.framework?.app;
34
+ }
35
+ function createRegisteredApi(name, version, runtime) {
36
+ return {
37
+ name,
38
+ version,
39
+ pinia: runtime.pinia,
40
+ getStore: runtime.storeAPI.getStore,
41
+ hasStore: runtime.storeAPI.hasStore,
42
+ getStoreIds: runtime.storeAPI.getStoreIds,
43
+ resetAll: runtime.storeAPI.resetAll
44
+ };
45
+ }
46
+ function registerEngineApi(engine, name, version, runtime) {
47
+ if (!engine.api?.register) return;
48
+ const api = createRegisteredApi(name, version, runtime);
49
+ engine.api.unregister?.(name);
50
+ if (engine.api.register.length >= 2) {
51
+ engine.api.register(name, api);
52
+ return;
53
+ }
54
+ engine.api.register(api);
55
+ }
56
+ function syncEngineState(engine, name, options, runtime) {
57
+ engine.state?.set?.(storeStateKeys.RUNTIME, runtime);
58
+ engine.state?.set?.(storeStateKeys.PINIA, runtime.pinia);
59
+ engine.state?.set?.(storeStateKeys.API, runtime.storeAPI);
60
+ engine.state?.set?.(storeStateKeys.REGISTRY, runtime.registry);
61
+ engine.state?.set?.(storeStateKeys.BUS, globalEventBus);
62
+ engine.state?.set?.(`plugins.${name}`, runtime.storeAPI);
63
+ engine.state?.set?.(`plugins.${name}.config`, options);
64
+ }
65
+ function clearEngineState(engine, name) {
66
+ engine.state?.delete?.(storeStateKeys.RUNTIME);
67
+ engine.state?.delete?.(storeStateKeys.PINIA);
68
+ engine.state?.delete?.(storeStateKeys.API);
69
+ engine.state?.delete?.(storeStateKeys.REGISTRY);
70
+ engine.state?.delete?.(storeStateKeys.BUS);
71
+ engine.state?.delete?.(`plugins.${name}`);
72
+ engine.state?.delete?.(`plugins.${name}.config`);
73
+ }
74
+ function registerContainerServices(context, runtime) {
75
+ if (!context?.container?.singleton) return;
76
+ try {
77
+ context.container.singleton("pinia", runtime.pinia);
78
+ context.container.singleton("storeAPI", runtime.storeAPI);
79
+ context.container.singleton("storeRegistry", runtime.registry);
80
+ context.container.singleton("storeRuntime", runtime);
81
+ } catch {}
82
+ }
83
+ function createStoreEngineBridge(options) {
84
+ const { createRuntime, debug = false, name = "store", onRuntimeChange, version = "1.0.0" } = options;
85
+ let activeEngine = {};
86
+ let activeContext;
87
+ let runtime = null;
88
+ let runtimeOwner = null;
89
+ const bindRuntime = (nextRuntime, owner) => {
90
+ const previousRuntime = runtime;
91
+ const previousOwner = runtimeOwner;
92
+ runtime = nextRuntime;
93
+ runtimeOwner = owner;
94
+ onRuntimeChange?.(nextRuntime);
95
+ syncEngineState(activeEngine, name, options, nextRuntime);
96
+ registerEngineApi(activeEngine, name, version, nextRuntime);
97
+ registerContainerServices(activeContext, nextRuntime);
98
+ if (previousRuntime && previousRuntime !== nextRuntime && previousOwner === "engine") previousRuntime.dispose?.();
99
+ return nextRuntime;
100
+ };
101
+ const ensureRuntime = () => {
102
+ if (runtime && runtimeOwner === "engine") return runtime;
103
+ return createRuntime();
104
+ };
105
+ const attachToApp = (app) => {
106
+ const installedRuntime = options.getRuntimeFromApp?.(app);
107
+ if (installedRuntime) return bindRuntime(installedRuntime, "external");
108
+ const nextRuntime = ensureRuntime();
109
+ const mountedRuntime = options.attachToApp ? options.attachToApp(app, nextRuntime) : nextRuntime;
110
+ return bindRuntime(mountedRuntime, mountedRuntime === nextRuntime ? "engine" : "external");
111
+ };
112
+ const install = async (context) => {
113
+ activeEngine = resolveEngine(context);
114
+ activeContext = resolvePluginContext(context);
115
+ const app = options.resolveApp ? options.resolveApp(activeEngine, activeContext ?? {}, void 0) : resolveDefaultApp(activeEngine, activeContext);
116
+ if (app && (!options.isApp || options.isApp(app))) attachToApp(app);
117
+ else {
118
+ bindRuntime(ensureRuntime(), "engine");
119
+ activeEngine.events?.once?.("app:created", (payload) => {
120
+ const createdApp = options.resolveApp ? options.resolveApp(activeEngine, activeContext ?? {}, payload) : resolveDefaultApp(activeEngine, activeContext, payload);
121
+ if (createdApp && (!options.isApp || options.isApp(createdApp))) attachToApp(createdApp);
122
+ });
123
+ }
124
+ await activeEngine.events?.emit?.(storeEventKeys.INSTALLED, {
125
+ name,
126
+ version,
127
+ pinia: runtime?.pinia,
128
+ storeAPI: runtime?.storeAPI
129
+ });
130
+ if (debug) activeEngine.logger?.info?.("[StoreEngineBridge] installed");
131
+ };
132
+ const uninstall = async (context) => {
133
+ const engine = context ? resolveEngine(context) : activeEngine;
134
+ engine.api?.unregister?.(name);
135
+ clearEngineState(engine, name);
136
+ await engine.events?.emit?.(storeEventKeys.UNINSTALLED, { name });
137
+ if (runtime && runtimeOwner === "engine") runtime.dispose?.();
138
+ runtime = null;
139
+ runtimeOwner = null;
140
+ onRuntimeChange?.(null);
141
+ if (debug) engine.logger?.info?.("[StoreEngineBridge] uninstalled");
142
+ };
143
+ return {
144
+ attachToApp,
145
+ getRuntime: () => runtime,
146
+ install,
147
+ uninstall
148
+ };
149
+ }
150
+ //#endregion
151
+ export { createStoreEngineBridge, storeEventKeys, storeStateKeys };
152
+ /*! End of @composy/store-core | Powered by @composy/builder */
153
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","names":[],"sources":["../../src/engine/plugin.ts"],"sourcesContent":["/**\n * @composy/store-core Engine 桥接能力\n *\n * Core 负责 engine 生命周期、state/API 同步和事件派发;框架适配层只提供 runtime 创建与 App 挂载。\n * @module engine/plugin\n */\n\nimport type {\n StoreEngineBridge,\n StoreEngineBridgeOptions,\n StoreEngineLike,\n StoreEnginePluginContextLike,\n StoreEngineRegisteredApi,\n StoreRuntimeLike,\n} from './types'\nimport { globalEventBus } from '../core/event-bus'\n\nexport const storeStateKeys = {\n BUS: 'store:bus' as const,\n PINIA: 'store:pinia' as const,\n API: 'store:api' as const,\n REGISTRY: 'store:registry' as const,\n RUNTIME: 'store:runtime' as const,\n} as const\n\nexport const storeEventKeys = {\n INSTALLED: 'store:installed' as const,\n UNINSTALLED: 'store:uninstalled' as const,\n} as const\n\ntype RuntimeOwner = 'engine' | 'external'\n\nfunction resolveEngine(context: unknown): StoreEngineLike {\n const value = context as StoreEnginePluginContextLike | StoreEngineLike | null | undefined\n if (value && typeof value === 'object' && 'engine' in value) {\n return value.engine ?? {}\n }\n\n return (value ?? {}) as StoreEngineLike\n}\n\nfunction resolvePluginContext(context: unknown): StoreEnginePluginContextLike | undefined {\n return context && typeof context === 'object'\n ? context as StoreEnginePluginContextLike\n : undefined\n}\n\nfunction resolveDefaultApp(\n engine: StoreEngineLike,\n context: StoreEnginePluginContextLike | undefined,\n payload?: unknown,\n): unknown {\n const payloadObject = payload as { app?: unknown; framework?: { app?: unknown } } | undefined\n return payloadObject?.app\n ?? payloadObject?.framework?.app\n ?? engine.getApp?.()\n ?? context?.framework?.app\n}\n\nfunction createRegisteredApi(\n name: string,\n version: string,\n runtime: StoreRuntimeLike,\n): StoreEngineRegisteredApi {\n return {\n name,\n version,\n pinia: runtime.pinia,\n getStore: runtime.storeAPI.getStore,\n hasStore: runtime.storeAPI.hasStore,\n getStoreIds: runtime.storeAPI.getStoreIds,\n resetAll: runtime.storeAPI.resetAll,\n }\n}\n\nfunction registerEngineApi(\n engine: StoreEngineLike,\n name: string,\n version: string,\n runtime: StoreRuntimeLike,\n): void {\n if (!engine.api?.register) {\n return\n }\n\n const api = createRegisteredApi(name, version, runtime)\n engine.api.unregister?.(name)\n\n if (engine.api.register.length >= 2) {\n ;(engine.api.register as (name: string, api: StoreEngineRegisteredApi) => void)(name, api)\n return\n }\n\n ;(engine.api.register as (api: StoreEngineRegisteredApi) => void)(api)\n}\n\nfunction syncEngineState<Runtime extends StoreRuntimeLike>(\n engine: StoreEngineLike,\n name: string,\n options: StoreEngineBridgeOptions<Runtime>,\n runtime: Runtime,\n): void {\n engine.state?.set?.(storeStateKeys.RUNTIME, runtime)\n engine.state?.set?.(storeStateKeys.PINIA, runtime.pinia)\n engine.state?.set?.(storeStateKeys.API, runtime.storeAPI)\n engine.state?.set?.(storeStateKeys.REGISTRY, runtime.registry)\n engine.state?.set?.(storeStateKeys.BUS, globalEventBus)\n engine.state?.set?.(`plugins.${name}`, runtime.storeAPI)\n engine.state?.set?.(`plugins.${name}.config`, options)\n}\n\nfunction clearEngineState(engine: StoreEngineLike, name: string): void {\n engine.state?.delete?.(storeStateKeys.RUNTIME)\n engine.state?.delete?.(storeStateKeys.PINIA)\n engine.state?.delete?.(storeStateKeys.API)\n engine.state?.delete?.(storeStateKeys.REGISTRY)\n engine.state?.delete?.(storeStateKeys.BUS)\n engine.state?.delete?.(`plugins.${name}`)\n engine.state?.delete?.(`plugins.${name}.config`)\n}\n\nfunction registerContainerServices(\n context: StoreEnginePluginContextLike | undefined,\n runtime: StoreRuntimeLike,\n): void {\n if (!context?.container?.singleton) {\n return\n }\n\n try {\n context.container.singleton('pinia', runtime.pinia)\n context.container.singleton('storeAPI', runtime.storeAPI)\n context.container.singleton('storeRegistry', runtime.registry)\n context.container.singleton('storeRuntime', runtime)\n }\n catch {\n // 同一个 engine 重复安装时可能已存在单例,保持幂等即可。\n }\n}\n\nexport function createStoreEngineBridge<Runtime extends StoreRuntimeLike>(\n options: StoreEngineBridgeOptions<Runtime>,\n): StoreEngineBridge {\n const {\n createRuntime,\n debug = false,\n name = 'store',\n onRuntimeChange,\n version = '1.0.0',\n } = options\n\n let activeEngine: StoreEngineLike = {}\n let activeContext: StoreEnginePluginContextLike | undefined\n let runtime: Runtime | null = null\n let runtimeOwner: RuntimeOwner | null = null\n\n const bindRuntime = (\n nextRuntime: Runtime,\n owner: RuntimeOwner,\n ): Runtime => {\n const previousRuntime = runtime\n const previousOwner = runtimeOwner\n\n runtime = nextRuntime\n runtimeOwner = owner\n onRuntimeChange?.(nextRuntime)\n\n syncEngineState(activeEngine, name, options, nextRuntime)\n registerEngineApi(activeEngine, name, version, nextRuntime)\n registerContainerServices(activeContext, nextRuntime)\n\n if (\n previousRuntime\n && previousRuntime !== nextRuntime\n && previousOwner === 'engine'\n ) {\n previousRuntime.dispose?.()\n }\n\n return nextRuntime\n }\n\n const ensureRuntime = (): Runtime => {\n if (runtime && runtimeOwner === 'engine') {\n return runtime\n }\n\n return createRuntime()\n }\n\n const attachToApp = (app: unknown): Runtime => {\n const installedRuntime = options.getRuntimeFromApp?.(app)\n if (installedRuntime) {\n return bindRuntime(installedRuntime, 'external')\n }\n\n const nextRuntime = ensureRuntime()\n const mountedRuntime = options.attachToApp\n ? options.attachToApp(app, nextRuntime)\n : nextRuntime\n const owner: RuntimeOwner = mountedRuntime === nextRuntime ? 'engine' : 'external'\n return bindRuntime(mountedRuntime, owner)\n }\n\n const install = async (context: unknown): Promise<void> => {\n activeEngine = resolveEngine(context)\n activeContext = resolvePluginContext(context)\n\n const app = options.resolveApp\n ? options.resolveApp(activeEngine, activeContext ?? {}, undefined)\n : resolveDefaultApp(activeEngine, activeContext)\n\n if (app && (!options.isApp || options.isApp(app))) {\n attachToApp(app)\n }\n else {\n bindRuntime(ensureRuntime(), 'engine')\n activeEngine.events?.once?.('app:created', (payload?: unknown) => {\n const createdApp = options.resolveApp\n ? options.resolveApp(activeEngine, activeContext ?? {}, payload)\n : resolveDefaultApp(activeEngine, activeContext, payload)\n if (createdApp && (!options.isApp || options.isApp(createdApp))) {\n attachToApp(createdApp)\n }\n })\n }\n\n await activeEngine.events?.emit?.(storeEventKeys.INSTALLED, {\n name,\n version,\n pinia: runtime?.pinia,\n storeAPI: runtime?.storeAPI,\n })\n\n if (debug) {\n activeEngine.logger?.info?.('[StoreEngineBridge] installed')\n }\n }\n\n const uninstall = async (context?: unknown): Promise<void> => {\n const engine = context ? resolveEngine(context) : activeEngine\n\n engine.api?.unregister?.(name)\n clearEngineState(engine, name)\n await engine.events?.emit?.(storeEventKeys.UNINSTALLED, { name })\n\n if (runtime && runtimeOwner === 'engine') {\n runtime.dispose?.()\n }\n\n runtime = null\n runtimeOwner = null\n onRuntimeChange?.(null)\n\n if (debug) {\n engine.logger?.info?.('[StoreEngineBridge] uninstalled')\n }\n }\n\n return {\n attachToApp,\n getRuntime: () => runtime,\n install,\n uninstall,\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Store Engine 集成类型
3
+ *
4
+ * 这里仅描述框架无关的 engine 契约;Vue/React 等适配层负责提供真实 runtime。
5
+ * @module engine/types
6
+ */
7
+ import type { EventBus, StoreId } from '../types';
8
+ export interface StoreRuntimeLike {
9
+ pinia?: unknown;
10
+ registry?: unknown;
11
+ storeAPI: StoreEngineApi;
12
+ dispose?: () => void;
13
+ }
14
+ export interface StoreEngineApi {
15
+ pinia?: unknown;
16
+ getStore: <T = unknown>(id: StoreId) => T | undefined;
17
+ hasStore: (id: StoreId) => boolean;
18
+ getStoreIds: () => StoreId[];
19
+ resetAll: () => void;
20
+ }
21
+ export interface StoreEngineApiLike {
22
+ register?: ((api: StoreEngineRegisteredApi) => void) | ((name: string, api: StoreEngineRegisteredApi) => void);
23
+ unregister?: (name: string) => void;
24
+ }
25
+ export interface StoreEngineEventsLike {
26
+ emit?: (event: string, payload: unknown) => void | Promise<void>;
27
+ once?: (event: string, listener: (payload?: unknown) => void | Promise<void>) => void;
28
+ }
29
+ export interface StoreEngineStateLike {
30
+ delete?: (key: string) => void;
31
+ set?: (key: string, value: unknown) => void;
32
+ }
33
+ export interface StoreEngineLoggerLike {
34
+ info?: (...args: unknown[]) => void;
35
+ }
36
+ export interface StoreEngineContainerLike {
37
+ has?: (identifier: string | symbol) => boolean;
38
+ resolve?: <T = unknown>(identifier: string | symbol) => T;
39
+ singleton?: (identifier: string | symbol, implementation: unknown) => void;
40
+ }
41
+ export interface StoreEngineLike {
42
+ api?: StoreEngineApiLike;
43
+ container?: StoreEngineContainerLike;
44
+ events?: StoreEngineEventsLike;
45
+ getApp?: () => unknown;
46
+ logger?: StoreEngineLoggerLike;
47
+ state?: StoreEngineStateLike;
48
+ }
49
+ export interface StoreEnginePluginContextLike {
50
+ container?: StoreEngineContainerLike;
51
+ engine?: StoreEngineLike;
52
+ framework?: {
53
+ app?: unknown;
54
+ };
55
+ }
56
+ export interface StoreEngineRegisteredApi extends StoreEngineApi {
57
+ name: string;
58
+ version: string;
59
+ }
60
+ export interface StoreEnginePluginOptions {
61
+ debug?: boolean;
62
+ dependencies?: string[];
63
+ name?: string;
64
+ version?: string;
65
+ }
66
+ export interface StoreEngineBridgeOptions<Runtime extends StoreRuntimeLike = StoreRuntimeLike> extends StoreEnginePluginOptions {
67
+ createRuntime: () => Runtime;
68
+ attachToApp?: (app: unknown, runtime: Runtime) => Runtime;
69
+ getRuntimeFromApp?: (app: unknown) => Runtime | null | undefined;
70
+ isApp?: (value: unknown) => boolean;
71
+ onRuntimeChange?: (runtime: Runtime | null) => void;
72
+ resolveApp?: (engine: StoreEngineLike, context: StoreEnginePluginContextLike, payload?: unknown) => unknown;
73
+ }
74
+ export interface StoreEngineBridge {
75
+ attachToApp: (app: unknown) => StoreRuntimeLike;
76
+ getRuntime: () => StoreRuntimeLike | null;
77
+ install: (context: unknown) => Promise<void>;
78
+ uninstall: (context?: unknown) => Promise<void>;
79
+ }
80
+ export type { EventBus };
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.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 */