@powerhousedao/reactor 4.1.0-dev.11 → 4.1.0-dev.111

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 (302) hide show
  1. package/dist/src/cache/buffer/ring-buffer.d.ts +37 -0
  2. package/dist/src/cache/buffer/ring-buffer.d.ts.map +1 -0
  3. package/dist/src/cache/buffer/ring-buffer.js +69 -0
  4. package/dist/src/cache/buffer/ring-buffer.js.map +1 -0
  5. package/dist/src/cache/index.d.ts +3 -0
  6. package/dist/src/cache/index.d.ts.map +1 -0
  7. package/dist/src/cache/index.js +2 -0
  8. package/dist/src/cache/index.js.map +1 -0
  9. package/dist/src/cache/kysely-operation-index.d.ts +13 -0
  10. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -0
  11. package/dist/src/cache/kysely-operation-index.js +152 -0
  12. package/dist/src/cache/kysely-operation-index.js.map +1 -0
  13. package/dist/src/cache/kysely-write-cache.d.ts +134 -0
  14. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -0
  15. package/dist/src/cache/kysely-write-cache.js +375 -0
  16. package/dist/src/cache/kysely-write-cache.js.map +1 -0
  17. package/dist/src/cache/lru/lru-tracker.d.ts +15 -0
  18. package/dist/src/cache/lru/lru-tracker.d.ts.map +1 -0
  19. package/dist/src/cache/lru/lru-tracker.js +96 -0
  20. package/dist/src/cache/lru/lru-tracker.js.map +1 -0
  21. package/dist/src/cache/operation-index-types.d.ts +46 -0
  22. package/dist/src/cache/operation-index-types.d.ts.map +1 -0
  23. package/dist/src/cache/operation-index-types.js +4 -0
  24. package/dist/src/cache/operation-index-types.js.map +1 -0
  25. package/dist/src/cache/write/interfaces.d.ts +83 -0
  26. package/dist/src/cache/write/interfaces.d.ts.map +1 -0
  27. package/dist/src/cache/write/interfaces.js +2 -0
  28. package/dist/src/cache/write/interfaces.js.map +1 -0
  29. package/dist/src/cache/write-cache-types.d.ts +42 -0
  30. package/dist/src/cache/write-cache-types.d.ts.map +1 -0
  31. package/dist/src/cache/write-cache-types.js +2 -0
  32. package/dist/src/cache/write-cache-types.js.map +1 -0
  33. package/dist/src/client/reactor-client.d.ts +103 -0
  34. package/dist/src/client/reactor-client.d.ts.map +1 -0
  35. package/dist/src/client/reactor-client.js +184 -0
  36. package/dist/src/client/reactor-client.js.map +1 -0
  37. package/dist/src/client/types.d.ts +213 -0
  38. package/dist/src/client/types.d.ts.map +1 -0
  39. package/dist/src/client/types.js +14 -0
  40. package/dist/src/client/types.js.map +1 -0
  41. package/dist/src/core/builder.d.ts +20 -0
  42. package/dist/src/core/builder.d.ts.map +1 -0
  43. package/dist/src/core/builder.js +47 -0
  44. package/dist/src/core/builder.js.map +1 -0
  45. package/dist/src/core/reactor-builder.d.ts +32 -0
  46. package/dist/src/core/reactor-builder.d.ts.map +1 -0
  47. package/dist/src/core/reactor-builder.js +122 -0
  48. package/dist/src/core/reactor-builder.js.map +1 -0
  49. package/dist/src/core/reactor.d.ts +107 -0
  50. package/dist/src/core/reactor.d.ts.map +1 -0
  51. package/dist/src/core/reactor.js +989 -0
  52. package/dist/src/core/reactor.js.map +1 -0
  53. package/dist/src/core/types.d.ts +178 -0
  54. package/dist/src/core/types.d.ts.map +1 -0
  55. package/dist/src/core/types.js +2 -0
  56. package/dist/src/core/types.js.map +1 -0
  57. package/dist/src/core/utils.d.ts +55 -0
  58. package/dist/src/core/utils.d.ts.map +1 -0
  59. package/dist/src/core/utils.js +150 -0
  60. package/dist/src/core/utils.js.map +1 -0
  61. package/dist/src/events/event-bus.d.ts +3 -3
  62. package/dist/src/events/event-bus.d.ts.map +1 -1
  63. package/dist/src/events/event-bus.js.map +1 -1
  64. package/dist/src/events/interfaces.d.ts +1 -1
  65. package/dist/src/events/interfaces.d.ts.map +1 -1
  66. package/dist/src/events/types.d.ts +15 -1
  67. package/dist/src/events/types.d.ts.map +1 -1
  68. package/dist/src/events/types.js +6 -0
  69. package/dist/src/events/types.js.map +1 -1
  70. package/dist/src/executor/interfaces.d.ts +31 -54
  71. package/dist/src/executor/interfaces.d.ts.map +1 -1
  72. package/dist/src/executor/simple-job-executor-manager.d.ts +32 -0
  73. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
  74. package/dist/src/executor/simple-job-executor-manager.js +214 -0
  75. package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
  76. package/dist/src/executor/simple-job-executor.d.ts +62 -0
  77. package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
  78. package/dist/src/executor/simple-job-executor.js +685 -0
  79. package/dist/src/executor/simple-job-executor.js.map +1 -0
  80. package/dist/src/executor/types.d.ts +32 -8
  81. package/dist/src/executor/types.d.ts.map +1 -1
  82. package/dist/src/executor/types.js.map +1 -1
  83. package/dist/src/executor/util.d.ts +65 -0
  84. package/dist/src/executor/util.d.ts.map +1 -0
  85. package/dist/src/executor/util.js +154 -0
  86. package/dist/src/executor/util.js.map +1 -0
  87. package/dist/src/index.d.ts +33 -3
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +40 -2
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +16 -0
  92. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -0
  93. package/dist/src/job-tracker/in-memory-job-tracker.js +84 -0
  94. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -0
  95. package/dist/src/job-tracker/index.d.ts +3 -0
  96. package/dist/src/job-tracker/index.d.ts.map +1 -0
  97. package/dist/src/job-tracker/index.js +2 -0
  98. package/dist/src/job-tracker/index.js.map +1 -0
  99. package/dist/src/job-tracker/interfaces.d.ts +42 -0
  100. package/dist/src/job-tracker/interfaces.d.ts.map +1 -0
  101. package/dist/src/job-tracker/interfaces.js +2 -0
  102. package/dist/src/job-tracker/interfaces.js.map +1 -0
  103. package/dist/src/queue/interfaces.d.ts +46 -5
  104. package/dist/src/queue/interfaces.d.ts.map +1 -1
  105. package/dist/src/queue/job-execution-handle.d.ts +25 -0
  106. package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
  107. package/dist/src/queue/job-execution-handle.js +62 -0
  108. package/dist/src/queue/job-execution-handle.js.map +1 -0
  109. package/dist/src/queue/queue.d.ts +56 -5
  110. package/dist/src/queue/queue.d.ts.map +1 -1
  111. package/dist/src/queue/queue.js +284 -36
  112. package/dist/src/queue/queue.js.map +1 -1
  113. package/dist/src/queue/types.d.ts +38 -5
  114. package/dist/src/queue/types.d.ts.map +1 -1
  115. package/dist/src/queue/types.js +12 -0
  116. package/dist/src/queue/types.js.map +1 -1
  117. package/dist/src/read-models/coordinator.d.ts +38 -0
  118. package/dist/src/read-models/coordinator.d.ts.map +1 -0
  119. package/dist/src/read-models/coordinator.js +62 -0
  120. package/dist/src/read-models/coordinator.js.map +1 -0
  121. package/dist/src/read-models/document-view.d.ts +24 -0
  122. package/dist/src/read-models/document-view.d.ts.map +1 -0
  123. package/dist/src/read-models/document-view.js +368 -0
  124. package/dist/src/read-models/document-view.js.map +1 -0
  125. package/dist/src/read-models/interfaces.d.ts +29 -0
  126. package/dist/src/read-models/interfaces.d.ts.map +1 -0
  127. package/dist/src/read-models/interfaces.js +2 -0
  128. package/dist/src/read-models/interfaces.js.map +1 -0
  129. package/dist/src/read-models/types.d.ts +46 -0
  130. package/dist/src/read-models/types.d.ts.map +1 -0
  131. package/dist/src/read-models/types.js +2 -0
  132. package/dist/src/read-models/types.js.map +1 -0
  133. package/dist/src/registry/implementation.d.ts +62 -0
  134. package/dist/src/registry/implementation.d.ts.map +1 -0
  135. package/dist/src/registry/implementation.js +96 -0
  136. package/dist/src/registry/implementation.js.map +1 -0
  137. package/dist/src/registry/index.d.ts +3 -0
  138. package/dist/src/registry/index.d.ts.map +1 -0
  139. package/dist/src/registry/index.js +2 -0
  140. package/dist/src/registry/index.js.map +1 -0
  141. package/dist/src/registry/interfaces.d.ts +39 -0
  142. package/dist/src/registry/interfaces.d.ts.map +1 -0
  143. package/dist/src/registry/interfaces.js +2 -0
  144. package/dist/src/registry/interfaces.js.map +1 -0
  145. package/dist/src/shared/awaiter.d.ts +32 -0
  146. package/dist/src/shared/awaiter.d.ts.map +1 -0
  147. package/dist/src/shared/awaiter.js +132 -0
  148. package/dist/src/shared/awaiter.js.map +1 -0
  149. package/dist/src/shared/consistency-tracker.d.ts +48 -0
  150. package/dist/src/shared/consistency-tracker.d.ts.map +1 -0
  151. package/dist/src/shared/consistency-tracker.js +123 -0
  152. package/dist/src/shared/consistency-tracker.js.map +1 -0
  153. package/dist/src/shared/errors.d.ts +17 -0
  154. package/dist/src/shared/errors.d.ts.map +1 -0
  155. package/dist/src/shared/errors.js +33 -0
  156. package/dist/src/shared/errors.js.map +1 -0
  157. package/dist/src/shared/factories.d.ts +16 -0
  158. package/dist/src/shared/factories.d.ts.map +1 -0
  159. package/dist/src/shared/factories.js +33 -0
  160. package/dist/src/shared/factories.js.map +1 -0
  161. package/dist/src/shared/types.d.ts +126 -20
  162. package/dist/src/shared/types.d.ts.map +1 -1
  163. package/dist/src/shared/types.js +35 -1
  164. package/dist/src/shared/types.js.map +1 -1
  165. package/dist/src/shared/utils.d.ts +3 -0
  166. package/dist/src/shared/utils.d.ts.map +1 -0
  167. package/dist/src/shared/utils.js +8 -0
  168. package/dist/src/shared/utils.js.map +1 -0
  169. package/dist/src/signer/passthrough-signer.d.ts +6 -0
  170. package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
  171. package/dist/src/signer/passthrough-signer.js +6 -0
  172. package/dist/src/signer/passthrough-signer.js.map +1 -0
  173. package/dist/src/signer/types.d.ts +15 -0
  174. package/dist/src/signer/types.d.ts.map +1 -0
  175. package/dist/src/signer/types.js +2 -0
  176. package/dist/src/signer/types.js.map +1 -0
  177. package/dist/src/storage/interfaces.d.ts +267 -0
  178. package/dist/src/storage/interfaces.d.ts.map +1 -0
  179. package/dist/src/storage/interfaces.js +19 -0
  180. package/dist/src/storage/interfaces.js.map +1 -0
  181. package/dist/src/storage/kysely/document-indexer.d.ts +28 -0
  182. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -0
  183. package/dist/src/storage/kysely/document-indexer.js +350 -0
  184. package/dist/src/storage/kysely/document-indexer.js.map +1 -0
  185. package/dist/src/storage/kysely/keyframe-store.d.ts +15 -0
  186. package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -0
  187. package/dist/src/storage/kysely/keyframe-store.js +64 -0
  188. package/dist/src/storage/kysely/keyframe-store.js.map +1 -0
  189. package/dist/src/storage/kysely/store.d.ts +15 -0
  190. package/dist/src/storage/kysely/store.d.ts.map +1 -0
  191. package/dist/src/storage/kysely/store.js +196 -0
  192. package/dist/src/storage/kysely/store.js.map +1 -0
  193. package/dist/src/storage/kysely/types.d.ts +98 -0
  194. package/dist/src/storage/kysely/types.d.ts.map +1 -0
  195. package/dist/src/storage/kysely/types.js +2 -0
  196. package/dist/src/storage/kysely/types.js.map +1 -0
  197. package/dist/src/storage/migrations/001_create_operation_table.d.ts +3 -0
  198. package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -0
  199. package/dist/src/storage/migrations/001_create_operation_table.js +40 -0
  200. package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -0
  201. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +3 -0
  202. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +1 -0
  203. package/dist/src/storage/migrations/002_create_keyframe_table.js +27 -0
  204. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +1 -0
  205. package/dist/src/storage/migrations/003_create_document_table.d.ts +3 -0
  206. package/dist/src/storage/migrations/003_create_document_table.d.ts.map +1 -0
  207. package/dist/src/storage/migrations/003_create_document_table.js +10 -0
  208. package/dist/src/storage/migrations/003_create_document_table.js.map +1 -0
  209. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +3 -0
  210. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +1 -0
  211. package/dist/src/storage/migrations/004_create_document_relationship_table.js +35 -0
  212. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +1 -0
  213. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +3 -0
  214. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +1 -0
  215. package/dist/src/storage/migrations/005_create_indexer_state_table.js +10 -0
  216. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +1 -0
  217. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +3 -0
  218. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +1 -0
  219. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +49 -0
  220. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +1 -0
  221. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +3 -0
  222. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +1 -0
  223. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +24 -0
  224. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +1 -0
  225. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +3 -0
  226. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -0
  227. package/dist/src/storage/migrations/008_create_view_state_table.js +9 -0
  228. package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -0
  229. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +3 -0
  230. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +1 -0
  231. package/dist/src/storage/migrations/009_create_operation_index_tables.js +43 -0
  232. package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +1 -0
  233. package/dist/src/storage/migrations/index.d.ts +3 -0
  234. package/dist/src/storage/migrations/index.d.ts.map +1 -0
  235. package/dist/src/storage/migrations/index.js +3 -0
  236. package/dist/src/storage/migrations/index.js.map +1 -0
  237. package/dist/src/storage/migrations/migrator.d.ts +5 -0
  238. package/dist/src/storage/migrations/migrator.d.ts.map +1 -0
  239. package/dist/src/storage/migrations/migrator.js +53 -0
  240. package/dist/src/storage/migrations/migrator.js.map +1 -0
  241. package/dist/src/storage/migrations/run-migrations.d.ts +2 -0
  242. package/dist/src/storage/migrations/run-migrations.d.ts.map +1 -0
  243. package/dist/src/storage/migrations/run-migrations.js +58 -0
  244. package/dist/src/storage/migrations/run-migrations.js.map +1 -0
  245. package/dist/src/storage/migrations/types.d.ts +9 -0
  246. package/dist/src/storage/migrations/types.d.ts.map +1 -0
  247. package/dist/src/storage/migrations/types.js +2 -0
  248. package/dist/src/storage/migrations/types.js.map +1 -0
  249. package/dist/src/storage/txn.d.ts +15 -0
  250. package/dist/src/storage/txn.d.ts.map +1 -0
  251. package/dist/src/storage/txn.js +43 -0
  252. package/dist/src/storage/txn.js.map +1 -0
  253. package/dist/src/subs/default-error-handler.d.ts +13 -0
  254. package/dist/src/subs/default-error-handler.d.ts.map +1 -0
  255. package/dist/src/subs/default-error-handler.js +27 -0
  256. package/dist/src/subs/default-error-handler.js.map +1 -0
  257. package/dist/src/subs/react-subscription-manager.d.ts +45 -0
  258. package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
  259. package/dist/src/subs/react-subscription-manager.js +185 -0
  260. package/dist/src/subs/react-subscription-manager.js.map +1 -0
  261. package/dist/src/subs/types.d.ts +64 -0
  262. package/dist/src/subs/types.d.ts.map +1 -0
  263. package/dist/src/subs/types.js +2 -0
  264. package/dist/src/subs/types.js.map +1 -0
  265. package/dist/src/utils/reshuffle.d.ts +30 -0
  266. package/dist/src/utils/reshuffle.d.ts.map +1 -0
  267. package/dist/src/utils/reshuffle.js +47 -0
  268. package/dist/src/utils/reshuffle.js.map +1 -0
  269. package/package.json +21 -7
  270. package/dist/bench/end-to-end-flow.bench.d.ts +0 -2
  271. package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
  272. package/dist/bench/end-to-end-flow.bench.js +0 -256
  273. package/dist/bench/end-to-end-flow.bench.js.map +0 -1
  274. package/dist/bench/event-bus.bench.d.ts +0 -2
  275. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  276. package/dist/bench/event-bus.bench.js +0 -238
  277. package/dist/bench/event-bus.bench.js.map +0 -1
  278. package/dist/bench/queue-only.bench.d.ts +0 -2
  279. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  280. package/dist/bench/queue-only.bench.js +0 -40
  281. package/dist/bench/queue-only.bench.js.map +0 -1
  282. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  283. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  284. package/dist/bench/reactor-throughput.bench.js +0 -137
  285. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  286. package/dist/src/executor/job-executor.d.ts +0 -62
  287. package/dist/src/executor/job-executor.d.ts.map +0 -1
  288. package/dist/src/executor/job-executor.js +0 -325
  289. package/dist/src/executor/job-executor.js.map +0 -1
  290. package/dist/test/event-bus.test.d.ts +0 -2
  291. package/dist/test/event-bus.test.d.ts.map +0 -1
  292. package/dist/test/event-bus.test.js +0 -532
  293. package/dist/test/event-bus.test.js.map +0 -1
  294. package/dist/test/job-executor.test.d.ts +0 -2
  295. package/dist/test/job-executor.test.d.ts.map +0 -1
  296. package/dist/test/job-executor.test.js +0 -581
  297. package/dist/test/job-executor.test.js.map +0 -1
  298. package/dist/test/queue.test.d.ts +0 -2
  299. package/dist/test/queue.test.d.ts.map +0 -1
  300. package/dist/test/queue.test.js +0 -396
  301. package/dist/test/queue.test.js.map +0 -1
  302. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,238 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- // Event types for testing
4
- const EVENT_TYPE_SYNC = 1;
5
- const EVENT_TYPE_ASYNC = 2;
6
- const EVENT_TYPE_MIXED = 3;
7
- // Test data
8
- const TEST_DATA = { message: "test event", timestamp: Date.now() };
9
- /**
10
- * Creates a synchronous subscriber that performs minimal work
11
- */
12
- function createSyncSubscriber(id) {
13
- return (type, data) => {
14
- // Minimal synchronous work
15
- const result = data.timestamp + id.length;
16
- return result;
17
- };
18
- }
19
- /**
20
- * Creates an asynchronous subscriber with configurable delay
21
- */
22
- function createAsyncSubscriber(id, delayMs = 0) {
23
- return async (type, data) => {
24
- // Simulate async work
25
- if (delayMs > 0) {
26
- await new Promise((resolve) => setTimeout(resolve, delayMs));
27
- }
28
- return data.timestamp + id.length;
29
- };
30
- }
31
- /**
32
- * Creates a subscriber that randomly decides to be sync or async
33
- */
34
- function createMixedSubscriber(id, asyncProbability = 0.5) {
35
- return async (type, data) => {
36
- if (Math.random() < asyncProbability) {
37
- // Async path with minimal delay
38
- await new Promise((resolve) => setImmediate(resolve));
39
- return data.timestamp + id.length;
40
- }
41
- else {
42
- // Sync path
43
- return data.timestamp + id.length;
44
- }
45
- };
46
- }
47
- /**
48
- * Sets up an EventBus with multiple sync subscribers
49
- */
50
- function setupSyncEventBus(subscriberCount) {
51
- const eventBus = new EventBus();
52
- for (let i = 0; i < subscriberCount; i++) {
53
- eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(`sync-${i}`));
54
- }
55
- return eventBus;
56
- }
57
- /**
58
- * Sets up an EventBus with multiple async subscribers
59
- */
60
- function setupAsyncEventBus(subscriberCount, delayMs = 0) {
61
- const eventBus = new EventBus();
62
- for (let i = 0; i < subscriberCount; i++) {
63
- eventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncSubscriber(`async-${i}`, delayMs));
64
- }
65
- return eventBus;
66
- }
67
- /**
68
- * Sets up an EventBus with mixed sync/async subscribers
69
- */
70
- function setupMixedEventBus(subscriberCount, asyncProbability = 0.5) {
71
- const eventBus = new EventBus();
72
- for (let i = 0; i < subscriberCount; i++) {
73
- eventBus.subscribe(EVENT_TYPE_MIXED, createMixedSubscriber(`mixed-${i}`, asyncProbability));
74
- }
75
- return eventBus;
76
- }
77
- describe("EventBus Sync Emission Throughput", () => {
78
- const syncEventBus1 = setupSyncEventBus(1);
79
- const syncEventBus5 = setupSyncEventBus(5);
80
- const syncEventBus10 = setupSyncEventBus(10);
81
- const syncEventBus25 = setupSyncEventBus(25);
82
- const syncEventBus50 = setupSyncEventBus(50);
83
- const syncEventBus100 = setupSyncEventBus(100);
84
- bench("1 sync subscriber", async () => {
85
- await syncEventBus1.emit(EVENT_TYPE_SYNC, TEST_DATA);
86
- }, { time: 500 });
87
- bench("5 sync subscribers", async () => {
88
- await syncEventBus5.emit(EVENT_TYPE_SYNC, TEST_DATA);
89
- }, { time: 500 });
90
- bench("10 sync subscribers", async () => {
91
- await syncEventBus10.emit(EVENT_TYPE_SYNC, TEST_DATA);
92
- }, { time: 500 });
93
- bench("25 sync subscribers", async () => {
94
- await syncEventBus25.emit(EVENT_TYPE_SYNC, TEST_DATA);
95
- }, { time: 500 });
96
- bench("50 sync subscribers", async () => {
97
- await syncEventBus50.emit(EVENT_TYPE_SYNC, TEST_DATA);
98
- }, { time: 500 });
99
- bench("100 sync subscribers", async () => {
100
- await syncEventBus100.emit(EVENT_TYPE_SYNC, TEST_DATA);
101
- }, { time: 500 });
102
- });
103
- describe("EventBus Async Emission Throughput", () => {
104
- const asyncEventBus1_0ms = setupAsyncEventBus(1, 0);
105
- const asyncEventBus5_0ms = setupAsyncEventBus(5, 0);
106
- const asyncEventBus10_0ms = setupAsyncEventBus(10, 0);
107
- const asyncEventBus1_1ms = setupAsyncEventBus(1, 1);
108
- const asyncEventBus5_1ms = setupAsyncEventBus(5, 1);
109
- const asyncEventBus10_1ms = setupAsyncEventBus(10, 1);
110
- const asyncEventBus1_5ms = setupAsyncEventBus(1, 5);
111
- const asyncEventBus5_5ms = setupAsyncEventBus(5, 5);
112
- bench("1 async subscriber (0ms delay)", async () => {
113
- await asyncEventBus1_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
114
- }, { time: 500 });
115
- bench("5 async subscribers (0ms delay)", async () => {
116
- await asyncEventBus5_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
117
- }, { time: 500 });
118
- bench("10 async subscribers (0ms delay)", async () => {
119
- await asyncEventBus10_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
120
- }, { time: 500 });
121
- bench("1 async subscriber (1ms delay)", async () => {
122
- await asyncEventBus1_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
123
- }, { time: 500 });
124
- bench("5 async subscribers (1ms delay)", async () => {
125
- await asyncEventBus5_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
126
- }, { time: 500 });
127
- bench("10 async subscribers (1ms delay)", async () => {
128
- await asyncEventBus10_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
129
- }, { time: 500 });
130
- bench("1 async subscriber (5ms delay)", async () => {
131
- await asyncEventBus1_5ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
132
- }, { time: 500 });
133
- bench("5 async subscribers (5ms delay)", async () => {
134
- await asyncEventBus5_5ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
135
- }, { time: 500 });
136
- });
137
- describe("EventBus Mixed Sync/Async Emission Throughput", () => {
138
- const mixedEventBus10_10 = setupMixedEventBus(10, 0.1);
139
- const mixedEventBus10_30 = setupMixedEventBus(10, 0.3);
140
- const mixedEventBus10_50 = setupMixedEventBus(10, 0.5);
141
- const mixedEventBus10_70 = setupMixedEventBus(10, 0.7);
142
- const mixedEventBus10_90 = setupMixedEventBus(10, 0.9);
143
- const mixedEventBus25_50 = setupMixedEventBus(25, 0.5);
144
- const mixedEventBus50_50 = setupMixedEventBus(50, 0.5);
145
- bench("10 subscribers (90% sync, 10% async)", async () => {
146
- await mixedEventBus10_10.emit(EVENT_TYPE_MIXED, TEST_DATA);
147
- }, { time: 500 });
148
- bench("10 subscribers (70% sync, 30% async)", async () => {
149
- await mixedEventBus10_30.emit(EVENT_TYPE_MIXED, TEST_DATA);
150
- }, { time: 500 });
151
- bench("10 subscribers (50% sync, 50% async)", async () => {
152
- await mixedEventBus10_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
153
- }, { time: 500 });
154
- bench("10 subscribers (30% sync, 70% async)", async () => {
155
- await mixedEventBus10_70.emit(EVENT_TYPE_MIXED, TEST_DATA);
156
- }, { time: 500 });
157
- bench("10 subscribers (10% sync, 90% async)", async () => {
158
- await mixedEventBus10_90.emit(EVENT_TYPE_MIXED, TEST_DATA);
159
- }, { time: 500 });
160
- bench("25 subscribers (50% sync, 50% async)", async () => {
161
- await mixedEventBus25_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
162
- }, { time: 500 });
163
- bench("50 subscribers (50% sync, 50% async)", async () => {
164
- await mixedEventBus50_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
165
- }, { time: 500 });
166
- });
167
- describe("EventBus Subscription Management Performance", () => {
168
- bench("Subscribe and unsubscribe (single)", () => {
169
- const eventBus = new EventBus();
170
- const unsubscribe = eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber("temp"));
171
- unsubscribe();
172
- }, { time: 500 });
173
- bench("Subscribe and unsubscribe (batch of 10)", () => {
174
- const eventBus = new EventBus();
175
- const unsubscribes = [];
176
- for (let i = 0; i < 10; i++) {
177
- unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(`temp-${i}`)));
178
- }
179
- for (const unsubscribe of unsubscribes) {
180
- unsubscribe();
181
- }
182
- }, { time: 500 });
183
- bench("Subscribe and unsubscribe (batch of 100)", () => {
184
- const eventBus = new EventBus();
185
- const unsubscribes = [];
186
- for (let i = 0; i < 100; i++) {
187
- unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(`temp-${i}`)));
188
- }
189
- for (const unsubscribe of unsubscribes) {
190
- unsubscribe();
191
- }
192
- }, { time: 500 });
193
- });
194
- describe("EventBus Error Handling Performance", () => {
195
- function createErrorSubscriber(shouldError) {
196
- return (type, data) => {
197
- if (shouldError) {
198
- throw new Error("Test error");
199
- }
200
- return data.timestamp;
201
- };
202
- }
203
- function createAsyncErrorSubscriber(shouldError) {
204
- return async (type, data) => {
205
- await new Promise((resolve) => setTimeout(resolve, 1));
206
- if (shouldError) {
207
- throw new Error("Test async error");
208
- }
209
- return data.timestamp;
210
- };
211
- }
212
- // Test error aggregation performance
213
- const errorEventBus = new EventBus();
214
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(true));
215
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(true));
216
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(false));
217
- const asyncErrorEventBus = new EventBus();
218
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(true));
219
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(true));
220
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(false));
221
- bench("Error aggregation (sync)", async () => {
222
- try {
223
- await errorEventBus.emit(EVENT_TYPE_SYNC, TEST_DATA);
224
- }
225
- catch (error) {
226
- // Expected error
227
- }
228
- }, { time: 500 });
229
- bench("Error aggregation (async)", async () => {
230
- try {
231
- await asyncErrorEventBus.emit(EVENT_TYPE_ASYNC, TEST_DATA);
232
- }
233
- catch (error) {
234
- // Expected error
235
- }
236
- }, { time: 500 });
237
- });
238
- //# sourceMappingURL=event-bus.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.bench.js","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=queue-only.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue-only.bench.d.ts","sourceRoot":"","sources":["../../bench/queue-only.bench.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- import { InMemoryQueue } from "../src/queue/queue.js";
4
- // Pre-create components to avoid setup overhead
5
- const eventBus = new EventBus();
6
- const queue = new InMemoryQueue(eventBus);
7
- let jobCounter = 0;
8
- function createMinimalJob() {
9
- return {
10
- id: `job-${++jobCounter}`,
11
- documentId: "doc1",
12
- scope: "default",
13
- branch: "main",
14
- operation: {
15
- type: "CREATE",
16
- input: { data: "test" },
17
- index: 0,
18
- timestamp: "2023-01-01T00:00:00.000Z",
19
- hash: "hash-123",
20
- skip: 0,
21
- },
22
- maxRetries: 0,
23
- createdAt: "2023-01-01T00:00:00.000Z",
24
- };
25
- }
26
- describe("Queue Only Operations", () => {
27
- bench("enqueue job", async () => {
28
- const job = createMinimalJob();
29
- await queue.enqueue(job);
30
- });
31
- bench("enqueue and dequeue", async () => {
32
- const job = createMinimalJob();
33
- await queue.enqueue(job);
34
- await queue.dequeue(job.documentId, job.scope, job.branch);
35
- });
36
- bench("queue total size", async () => {
37
- await queue.totalSize();
38
- });
39
- });
40
- //# sourceMappingURL=queue-only.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue-only.bench.js","sourceRoot":"","sources":["../../bench/queue-only.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,gDAAgD;AAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAE1C,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,SAAS,gBAAgB;IACvB,OAAO;QACL,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACzB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,0BAA0B;YACrC,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,CAAC;SACR;QACD,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,0BAA0B;KACtC,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=reactor-throughput.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor-throughput.bench.d.ts","sourceRoot":"","sources":["../../bench/reactor-throughput.bench.ts"],"names":[],"mappings":""}
@@ -1,137 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- import { InMemoryJobExecutor } from "../src/executor/job-executor.js";
4
- import { InMemoryQueue } from "../src/queue/queue.js";
5
- // Pre-create shared components to avoid setup overhead
6
- const eventBus = new EventBus();
7
- const queue = new InMemoryQueue(eventBus);
8
- const executor = new InMemoryJobExecutor(eventBus, queue);
9
- // Initialize executor once
10
- await executor.start({ maxConcurrency: 5, jobTimeout: 10000 });
11
- let jobCounter = 0;
12
- function createSimpleJob() {
13
- return {
14
- id: `job-${++jobCounter}`,
15
- documentId: "doc1",
16
- scope: "default",
17
- branch: "main",
18
- operation: {
19
- type: "CREATE",
20
- input: { data: "simple data" },
21
- index: 0,
22
- timestamp: "2023-01-01T00:00:00.000Z",
23
- hash: "hash-123",
24
- skip: 0,
25
- },
26
- maxRetries: 0,
27
- createdAt: "2023-01-01T00:00:00.000Z",
28
- };
29
- }
30
- function createComplexJob() {
31
- return {
32
- id: `job-${++jobCounter}`,
33
- documentId: "doc1",
34
- scope: "default",
35
- branch: "main",
36
- operation: {
37
- type: "UPDATE",
38
- input: {
39
- data: Array.from({ length: 100 }, (_, i) => `item ${i}`),
40
- metadata: { timestamp: Date.now(), user: "test" },
41
- },
42
- index: Math.floor(Math.random() * 1000),
43
- timestamp: "2023-01-01T00:00:00.000Z",
44
- hash: "hash-456",
45
- skip: 0,
46
- },
47
- maxRetries: 0,
48
- createdAt: "2023-01-01T00:00:00.000Z",
49
- };
50
- }
51
- describe("Queue Throughput", () => {
52
- bench("enqueue simple job", async () => {
53
- const job = createSimpleJob();
54
- await queue.enqueue(job);
55
- });
56
- bench("enqueue complex job", async () => {
57
- const job = createComplexJob();
58
- await queue.enqueue(job);
59
- });
60
- bench("enqueue then dequeue", async () => {
61
- const job = createSimpleJob();
62
- await queue.enqueue(job);
63
- await queue.dequeue(job.documentId, job.scope, job.branch);
64
- });
65
- bench("dequeue next available", async () => {
66
- // Ensure there's always a job to dequeue
67
- const job = createSimpleJob();
68
- await queue.enqueue(job);
69
- await queue.dequeueNext();
70
- });
71
- bench("queue operations", async () => {
72
- await queue.totalSize();
73
- });
74
- });
75
- describe("Job Executor Throughput", () => {
76
- bench("execute simple job", async () => {
77
- const job = createSimpleJob();
78
- await executor.executeJob(job);
79
- });
80
- bench("execute complex job", async () => {
81
- const job = createComplexJob();
82
- await executor.executeJob(job);
83
- });
84
- bench("executor status check", async () => {
85
- await executor.getStatus();
86
- });
87
- bench("executor stats check", async () => {
88
- await executor.getStats();
89
- });
90
- });
91
- describe("End-to-End Throughput", () => {
92
- bench("enqueue with event emission", async () => {
93
- const job = createSimpleJob();
94
- await queue.enqueue(job); // This emits events
95
- });
96
- bench("multi-document operations", async () => {
97
- const job1 = { ...createSimpleJob(), documentId: "doc1" };
98
- const job2 = { ...createSimpleJob(), documentId: "doc2" };
99
- const job3 = { ...createSimpleJob(), documentId: "doc3" };
100
- await queue.enqueue(job1);
101
- await queue.enqueue(job2);
102
- await queue.enqueue(job3);
103
- });
104
- bench("batch job creation", async () => {
105
- const jobs = Array.from({ length: 10 }, () => createSimpleJob());
106
- for (const job of jobs) {
107
- await queue.enqueue(job);
108
- }
109
- });
110
- bench("mixed workload", async () => {
111
- const simpleJob = createSimpleJob();
112
- const complexJob = createComplexJob();
113
- await executor.executeJob(simpleJob);
114
- await executor.executeJob(complexJob);
115
- });
116
- });
117
- describe("Performance Scaling", () => {
118
- bench("5 simple jobs", async () => {
119
- const jobs = Array.from({ length: 5 }, () => createSimpleJob());
120
- for (const job of jobs) {
121
- await executor.executeJob(job);
122
- }
123
- });
124
- bench("5 complex jobs", async () => {
125
- const jobs = Array.from({ length: 5 }, () => createComplexJob());
126
- for (const job of jobs) {
127
- await executor.executeJob(job);
128
- }
129
- });
130
- bench("mixed 10 jobs", async () => {
131
- const jobs = Array.from({ length: 10 }, (_, i) => i % 2 === 0 ? createSimpleJob() : createComplexJob());
132
- for (const job of jobs) {
133
- await executor.executeJob(job);
134
- }
135
- });
136
- });
137
- //# sourceMappingURL=reactor-throughput.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor-throughput.bench.js","sourceRoot":"","sources":["../../bench/reactor-throughput.bench.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { IEventBus } from "../events/interfaces.js";
2
- import { IQueue } from "../queue/interfaces.js";
3
- import { Job } from "../queue/types.js";
4
- import { IJobExecutor } from "./interfaces.js";
5
- import { JobExecutorConfig, JobResult } from "./types.js";
6
- /**
7
- * In-memory implementation of the IJobExecutor interface.
8
- * Listens for job available events and executes jobs with concurrency control and retry logic.
9
- */
10
- export declare class InMemoryJobExecutor implements IJobExecutor {
11
- private eventBus;
12
- private queue;
13
- private isRunning;
14
- private isPaused;
15
- private config;
16
- private activeJobs;
17
- private jobAvailableUnsubscribe?;
18
- private startedAt?;
19
- private totalJobsProcessed;
20
- private totalJobsSucceeded;
21
- private totalJobsFailed;
22
- private lastJobCompletedAt?;
23
- private executionTimes;
24
- private jobPromises;
25
- private abortControllers;
26
- constructor(eventBus: IEventBus, queue: IQueue);
27
- start(config?: JobExecutorConfig): Promise<void>;
28
- stop(graceful?: boolean): Promise<void>;
29
- executeJob(job: Job): Promise<JobResult>;
30
- getStatus(): Promise<{
31
- isRunning: boolean;
32
- activeJobs: number;
33
- totalJobsProcessed: number;
34
- totalJobsSucceeded: number;
35
- totalJobsFailed: number;
36
- lastJobCompletedAt: string | undefined;
37
- uptime: number | undefined;
38
- }>;
39
- getStats(): Promise<{
40
- averageExecutionTime: number;
41
- successRate: number;
42
- jobsPerSecond: number;
43
- queueBacklog: number;
44
- }>;
45
- pause(): Promise<void>;
46
- resume(): Promise<void>;
47
- on(event: "jobStarted" | "jobCompleted" | "jobFailed" | "executorStarted" | "executorStopped", handler: (data: any) => void): () => void;
48
- private getEventType;
49
- private handleJobAvailable;
50
- private processAvailableJobs;
51
- private executeJobWithRetry;
52
- private executeJobInternal;
53
- private executeJobWithTimeout;
54
- private performJobExecution;
55
- private shouldRetryJob;
56
- private calculateRetryDelay;
57
- private sleep;
58
- }
59
- export type { IJobExecutor } from "./interfaces.js";
60
- export { JobExecutorEventTypes } from "./types.js";
61
- export type { ExecutorStartedEvent, ExecutorStoppedEvent, JobCompletedEvent, JobExecutorConfig, JobFailedEvent, JobResult, JobStartedEvent, } from "./types.js";
62
- //# sourceMappingURL=job-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/job-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,GAAG,EAGJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAIL,iBAAiB,EAGjB,SAAS,EAEV,MAAM,YAAY,CAAC;AAYpB;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAoBpD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IApBf,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAC7C,OAAO,CAAC,SAAS,CAAC,CAAO;IAGzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,cAAc,CAAgB;IAGtC,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,gBAAgB,CAAsC;gBAGpD,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,MAAM;IAGjB,KAAK,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhD,IAAI,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCpC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAIxC,SAAS;;;;;;;;;IAgBT,QAAQ;;;;;;IA2BR,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,EAAE,CACA,KAAK,EACD,YAAY,GACZ,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,iBAAiB,EACrB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAC3B,MAAM,IAAI;IAKb,OAAO,CAAC,YAAY;YAiBN,kBAAkB;YAWlB,oBAAoB;YAyBpB,mBAAmB;YAwBnB,kBAAkB;YA0FlB,qBAAqB;YA4BrB,mBAAmB;IA8BjC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,KAAK;CAGd;AAGD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,eAAe,GAChB,MAAM,YAAY,CAAC"}