@powerhousedao/reactor 6.0.0-dev.4 → 6.0.0-dev.40

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 (227) hide show
  1. package/dist/src/cache/collection-membership-cache.d.ts +13 -0
  2. package/dist/src/cache/collection-membership-cache.d.ts.map +1 -0
  3. package/dist/src/cache/collection-membership-cache.js +33 -0
  4. package/dist/src/cache/collection-membership-cache.js.map +1 -0
  5. package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
  6. package/dist/src/cache/document-meta-cache.js +4 -4
  7. package/dist/src/cache/document-meta-cache.js.map +1 -1
  8. package/dist/src/cache/kysely-operation-index.d.ts +5 -1
  9. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  10. package/dist/src/cache/kysely-operation-index.js +96 -6
  11. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  12. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  13. package/dist/src/cache/kysely-write-cache.js +11 -11
  14. package/dist/src/cache/kysely-write-cache.js.map +1 -1
  15. package/dist/src/cache/operation-index-types.d.ts +13 -1
  16. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  17. package/dist/src/cache/operation-index-types.js.map +1 -1
  18. package/dist/src/client/reactor-client.d.ts +13 -10
  19. package/dist/src/client/reactor-client.d.ts.map +1 -1
  20. package/dist/src/client/reactor-client.js +133 -42
  21. package/dist/src/client/reactor-client.js.map +1 -1
  22. package/dist/src/client/types.d.ts +25 -6
  23. package/dist/src/client/types.d.ts.map +1 -1
  24. package/dist/src/client/types.js.map +1 -1
  25. package/dist/src/core/reactor-builder.d.ts +11 -7
  26. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  27. package/dist/src/core/reactor-builder.js +61 -22
  28. package/dist/src/core/reactor-builder.js.map +1 -1
  29. package/dist/src/core/reactor-client-builder.d.ts +5 -4
  30. package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
  31. package/dist/src/core/reactor-client-builder.js +14 -5
  32. package/dist/src/core/reactor-client-builder.js.map +1 -1
  33. package/dist/src/core/reactor.d.ts +20 -80
  34. package/dist/src/core/reactor.d.ts.map +1 -1
  35. package/dist/src/core/reactor.js +234 -575
  36. package/dist/src/core/reactor.js.map +1 -1
  37. package/dist/src/core/types.d.ts +63 -28
  38. package/dist/src/core/types.d.ts.map +1 -1
  39. package/dist/src/core/utils.d.ts +37 -2
  40. package/dist/src/core/utils.d.ts.map +1 -1
  41. package/dist/src/core/utils.js +57 -8
  42. package/dist/src/core/utils.js.map +1 -1
  43. package/dist/src/events/types.d.ts +35 -10
  44. package/dist/src/events/types.d.ts.map +1 -1
  45. package/dist/src/events/types.js +7 -5
  46. package/dist/src/events/types.js.map +1 -1
  47. package/dist/src/executor/document-action-handler.d.ts +37 -0
  48. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  49. package/dist/src/executor/document-action-handler.js +349 -0
  50. package/dist/src/executor/document-action-handler.js.map +1 -0
  51. package/dist/src/executor/signature-verifier.d.ts +9 -0
  52. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  53. package/dist/src/executor/signature-verifier.js +70 -0
  54. package/dist/src/executor/signature-verifier.js.map +1 -0
  55. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  56. package/dist/src/executor/simple-job-executor-manager.js +20 -10
  57. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  58. package/dist/src/executor/simple-job-executor.d.ts +6 -46
  59. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  60. package/dist/src/executor/simple-job-executor.js +64 -565
  61. package/dist/src/executor/simple-job-executor.js.map +1 -1
  62. package/dist/src/executor/types.d.ts +0 -2
  63. package/dist/src/executor/types.d.ts.map +1 -1
  64. package/dist/src/executor/types.js.map +1 -1
  65. package/dist/src/executor/util.d.ts +11 -1
  66. package/dist/src/executor/util.d.ts.map +1 -1
  67. package/dist/src/executor/util.js +47 -1
  68. package/dist/src/executor/util.js.map +1 -1
  69. package/dist/src/index.d.ts +10 -7
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +6 -4
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
  74. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  75. package/dist/src/job-tracker/in-memory-job-tracker.js +20 -18
  76. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
  77. package/dist/src/job-tracker/interfaces.d.ts +3 -1
  78. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  79. package/dist/src/logging/console.d.ts +1 -22
  80. package/dist/src/logging/console.d.ts.map +1 -1
  81. package/dist/src/logging/console.js +1 -107
  82. package/dist/src/logging/console.js.map +1 -1
  83. package/dist/src/logging/types.d.ts +1 -11
  84. package/dist/src/logging/types.d.ts.map +1 -1
  85. package/dist/src/processors/index.d.ts.map +1 -1
  86. package/dist/src/processors/relational/relational-db-processor.d.ts +47 -0
  87. package/dist/src/processors/relational/relational-db-processor.d.ts.map +1 -0
  88. package/dist/src/processors/relational/relational-db-processor.js +45 -0
  89. package/dist/src/processors/relational/relational-db-processor.js.map +1 -0
  90. package/dist/src/processors/relational/types.d.ts +27 -0
  91. package/dist/src/processors/relational/types.d.ts.map +1 -0
  92. package/dist/src/processors/relational/types.js +2 -0
  93. package/dist/src/processors/relational/types.js.map +1 -0
  94. package/dist/src/processors/relational/utils.d.ts +29 -0
  95. package/dist/src/processors/relational/utils.d.ts.map +1 -0
  96. package/dist/src/processors/relational/utils.js +67 -0
  97. package/dist/src/processors/relational/utils.js.map +1 -0
  98. package/dist/src/processors/types.d.ts +10 -2
  99. package/dist/src/processors/types.d.ts.map +1 -1
  100. package/dist/src/processors/utils.d.ts.map +1 -1
  101. package/dist/src/processors/utils.js +2 -1
  102. package/dist/src/processors/utils.js.map +1 -1
  103. package/dist/src/queue/queue.d.ts +25 -0
  104. package/dist/src/queue/queue.d.ts.map +1 -1
  105. package/dist/src/queue/queue.js +56 -0
  106. package/dist/src/queue/queue.js.map +1 -1
  107. package/dist/src/queue/types.d.ts +3 -3
  108. package/dist/src/queue/types.d.ts.map +1 -1
  109. package/dist/src/read-models/base-read-model.js +4 -4
  110. package/dist/src/read-models/base-read-model.js.map +1 -1
  111. package/dist/src/read-models/coordinator.d.ts +2 -2
  112. package/dist/src/read-models/coordinator.d.ts.map +1 -1
  113. package/dist/src/read-models/coordinator.js +8 -8
  114. package/dist/src/read-models/coordinator.js.map +1 -1
  115. package/dist/src/read-models/document-view.d.ts +5 -2
  116. package/dist/src/read-models/document-view.d.ts.map +1 -1
  117. package/dist/src/read-models/document-view.js +130 -48
  118. package/dist/src/read-models/document-view.js.map +1 -1
  119. package/dist/src/shared/awaiter.d.ts +2 -2
  120. package/dist/src/shared/awaiter.d.ts.map +1 -1
  121. package/dist/src/shared/awaiter.js +11 -11
  122. package/dist/src/shared/awaiter.js.map +1 -1
  123. package/dist/src/shared/collect-all-pages.d.ts +7 -0
  124. package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
  125. package/dist/src/shared/collect-all-pages.js +17 -0
  126. package/dist/src/shared/collect-all-pages.js.map +1 -0
  127. package/dist/src/shared/drive-url.d.ts +15 -0
  128. package/dist/src/shared/drive-url.d.ts.map +1 -0
  129. package/dist/src/shared/drive-url.js +17 -0
  130. package/dist/src/shared/drive-url.js.map +1 -0
  131. package/dist/src/shared/factories.d.ts +6 -2
  132. package/dist/src/shared/factories.d.ts.map +1 -1
  133. package/dist/src/shared/factories.js +10 -2
  134. package/dist/src/shared/factories.js.map +1 -1
  135. package/dist/src/shared/types.d.ts +32 -6
  136. package/dist/src/shared/types.d.ts.map +1 -1
  137. package/dist/src/shared/types.js +4 -4
  138. package/dist/src/shared/types.js.map +1 -1
  139. package/dist/src/signer/passthrough-signer.d.ts +1 -1
  140. package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
  141. package/dist/src/signer/passthrough-signer.js +1 -3
  142. package/dist/src/signer/passthrough-signer.js.map +1 -1
  143. package/dist/src/storage/interfaces.d.ts +52 -94
  144. package/dist/src/storage/interfaces.d.ts.map +1 -1
  145. package/dist/src/storage/interfaces.js.map +1 -1
  146. package/dist/src/storage/kysely/document-indexer.d.ts +6 -6
  147. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  148. package/dist/src/storage/kysely/document-indexer.js +123 -52
  149. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  150. package/dist/src/storage/kysely/store.d.ts +4 -3
  151. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  152. package/dist/src/storage/kysely/store.js +52 -21
  153. package/dist/src/storage/kysely/store.js.map +1 -1
  154. package/dist/src/storage/kysely/sync-remote-storage.js +1 -1
  155. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
  156. package/dist/src/subs/subscription-notification-read-model.d.ts +1 -1
  157. package/dist/src/subs/subscription-notification-read-model.js +1 -1
  158. package/dist/src/sync/buffered-mailbox.d.ts +30 -0
  159. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
  160. package/dist/src/sync/buffered-mailbox.js +136 -0
  161. package/dist/src/sync/buffered-mailbox.js.map +1 -0
  162. package/dist/src/sync/channels/composite-channel-factory.d.ts +9 -3
  163. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -1
  164. package/dist/src/sync/channels/composite-channel-factory.js +16 -12
  165. package/dist/src/sync/channels/composite-channel-factory.js.map +1 -1
  166. package/dist/src/sync/channels/gql-channel-factory.d.ts +9 -3
  167. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -1
  168. package/dist/src/sync/channels/gql-channel-factory.js +14 -10
  169. package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
  170. package/dist/src/sync/channels/gql-channel.d.ts +22 -18
  171. package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
  172. package/dist/src/sync/channels/gql-channel.js +128 -64
  173. package/dist/src/sync/channels/gql-channel.js.map +1 -1
  174. package/dist/src/sync/channels/index.d.ts +2 -0
  175. package/dist/src/sync/channels/index.d.ts.map +1 -1
  176. package/dist/src/sync/channels/index.js +2 -0
  177. package/dist/src/sync/channels/index.js.map +1 -1
  178. package/dist/src/sync/channels/interval-poll-timer.d.ts +24 -0
  179. package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
  180. package/dist/src/sync/channels/interval-poll-timer.js +69 -0
  181. package/dist/src/sync/channels/interval-poll-timer.js.map +1 -0
  182. package/dist/src/sync/channels/poll-timer.d.ts +14 -0
  183. package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
  184. package/dist/src/sync/channels/poll-timer.js +2 -0
  185. package/dist/src/sync/channels/poll-timer.js.map +1 -0
  186. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  187. package/dist/src/sync/channels/utils.js +2 -2
  188. package/dist/src/sync/channels/utils.js.map +1 -1
  189. package/dist/src/sync/index.d.ts +6 -4
  190. package/dist/src/sync/index.d.ts.map +1 -1
  191. package/dist/src/sync/index.js +4 -3
  192. package/dist/src/sync/index.js.map +1 -1
  193. package/dist/src/sync/interfaces.d.ts +18 -6
  194. package/dist/src/sync/interfaces.d.ts.map +1 -1
  195. package/dist/src/sync/mailbox.d.ts +21 -3
  196. package/dist/src/sync/mailbox.d.ts.map +1 -1
  197. package/dist/src/sync/mailbox.js +55 -2
  198. package/dist/src/sync/mailbox.js.map +1 -1
  199. package/dist/src/sync/sync-awaiter.d.ts +34 -0
  200. package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
  201. package/dist/src/sync/sync-awaiter.js +124 -0
  202. package/dist/src/sync/sync-awaiter.js.map +1 -0
  203. package/dist/src/sync/sync-manager.d.ts +19 -5
  204. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  205. package/dist/src/sync/sync-manager.js +318 -33
  206. package/dist/src/sync/sync-manager.js.map +1 -1
  207. package/dist/src/sync/sync-operation.d.ts +3 -1
  208. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  209. package/dist/src/sync/sync-operation.js +5 -1
  210. package/dist/src/sync/sync-operation.js.map +1 -1
  211. package/dist/src/sync/types.d.ts +73 -1
  212. package/dist/src/sync/types.d.ts.map +1 -1
  213. package/dist/src/sync/types.js +10 -0
  214. package/dist/src/sync/types.js.map +1 -1
  215. package/dist/src/sync/utils.d.ts +11 -0
  216. package/dist/src/sync/utils.d.ts.map +1 -1
  217. package/dist/src/sync/utils.js +17 -0
  218. package/dist/src/sync/utils.js.map +1 -1
  219. package/dist/src/utils/reshuffle.d.ts +15 -5
  220. package/dist/src/utils/reshuffle.d.ts.map +1 -1
  221. package/dist/src/utils/reshuffle.js +29 -6
  222. package/dist/src/utils/reshuffle.js.map +1 -1
  223. package/package.json +8 -10
  224. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  225. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  226. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  227. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
@@ -1,8 +1,9 @@
1
+ import type { IOperationIndex } from "../cache/operation-index-types.js";
1
2
  import type { ShutdownStatus } from "../shared/types.js";
2
3
  import type { ISyncCursorStorage } from "../storage/interfaces.js";
3
4
  import type { SyncOperation } from "./sync-operation.js";
4
- import type { Mailbox } from "./mailbox.js";
5
- import type { ChannelConfig, RemoteFilter, RemoteOptions } from "./types.js";
5
+ import type { IMailbox } from "./mailbox.js";
6
+ import type { ChannelConfig, RemoteFilter, RemoteOptions, SyncResult } from "./types.js";
6
7
  /**
7
8
  * Represents a bidirectional synchronization channel between two reactor instances.
8
9
  *
@@ -22,17 +23,17 @@ export interface IChannel {
22
23
  * Mailbox containing sync operations received from the remote that need to be applied locally.
23
24
  * Consumers should register callbacks via onAdded to process incoming sync operations.
24
25
  */
25
- inbox: Mailbox<SyncOperation>;
26
+ inbox: IMailbox<SyncOperation>;
26
27
  /**
27
28
  * Mailbox containing sync operations that need to be sent to the remote.
28
29
  * The channel is responsible for transporting these sync operations and handling ACKs.
29
30
  */
30
- outbox: Mailbox<SyncOperation>;
31
+ outbox: IMailbox<SyncOperation>;
31
32
  /**
32
33
  * Mailbox containing sync operations that failed and cannot be retried.
33
34
  * These sync operations require manual intervention or should be logged for debugging.
34
35
  */
35
- deadLetter: Mailbox<SyncOperation>;
36
+ deadLetter: IMailbox<SyncOperation>;
36
37
  /**
37
38
  * Initializes the channel asynchronously.
38
39
  * For remote channels, this typically involves registering the channel on the remote server.
@@ -67,9 +68,10 @@ export interface IChannelFactory {
67
68
  * @param cursorStorage - Storage for persisting synchronization cursors
68
69
  * @param collectionId - Collection ID to synchronize
69
70
  * @param filter - Filter to apply to operations
71
+ * @param operationIndex - Operation index for querying timestamps
70
72
  * @returns A new channel instance
71
73
  */
72
- instance(remoteId: string, remoteName: string, config: ChannelConfig, cursorStorage: ISyncCursorStorage, collectionId: string, filter: RemoteFilter): IChannel;
74
+ instance(remoteId: string, remoteName: string, config: ChannelConfig, cursorStorage: ISyncCursorStorage, collectionId: string, filter: RemoteFilter, operationIndex: IOperationIndex): IChannel;
73
75
  }
74
76
  /**
75
77
  * Represents a configured remote with an active channel.
@@ -176,5 +178,15 @@ export interface ISyncManager {
176
178
  * @returns Array of all remotes
177
179
  */
178
180
  list(): Remote[];
181
+ /**
182
+ * Waits for sync operations for a job to complete.
183
+ * Resolves when SYNC_SUCCEEDED is emitted.
184
+ * Rejects when SYNC_FAILED is emitted.
185
+ *
186
+ * @param jobId - The job id to wait for
187
+ * @param signal - Optional abort signal
188
+ * @returns The sync result
189
+ */
190
+ waitForSync(jobId: string, signal?: AbortSignal): Promise<SyncResult>;
179
191
  }
180
192
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/sync/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9B;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;OAUG;IACH,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,kBAAkB,EACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,GACnB,QAAQ,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,QAAQ,IAAI,cAAc,CAAC;IAE3B;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,GAAG,CACD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,EACvB,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/sync/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE/B;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEhC;;;OAGG;IACH,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEpC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;OAWG;IACH,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,kBAAkB,EACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,eAAe,GAC9B,QAAQ,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,QAAQ,IAAI,cAAc,CAAC;IAE3B;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,GAAG,CACD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,EACvB,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE,CAAC;IAEjB;;;;;;;;OAQG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACvE"}
@@ -1,21 +1,39 @@
1
1
  export type MailboxItem = {
2
2
  id: string;
3
3
  };
4
- type MailboxCallback<T extends MailboxItem> = (item: T) => void;
4
+ export type MailboxCallback<T extends MailboxItem> = (items: T[]) => void;
5
+ export interface IMailbox<T extends MailboxItem> {
6
+ readonly items: ReadonlyArray<T>;
7
+ get(id: string): T | undefined;
8
+ add(item: T): void;
9
+ remove(item: T): void;
10
+ onAdded(callback: MailboxCallback<T>): void;
11
+ onRemoved(callback: MailboxCallback<T>): void;
12
+ pause(): void;
13
+ resume(): void;
14
+ flush(): void;
15
+ isPaused(): boolean;
16
+ }
5
17
  export declare class MailboxAggregateError extends Error {
6
18
  errors: Error[];
7
19
  constructor(errors: Error[]);
8
20
  }
9
- export declare class Mailbox<T extends MailboxItem> {
21
+ export declare class Mailbox<T extends MailboxItem> implements IMailbox<T> {
10
22
  private itemsMap;
11
23
  private addedCallbacks;
12
24
  private removedCallbacks;
25
+ private paused;
26
+ private addedBuffer;
27
+ private removedBuffer;
13
28
  get items(): ReadonlyArray<T>;
14
29
  get(id: string): T | undefined;
15
30
  add(item: T): void;
16
31
  remove(item: T): void;
17
32
  onAdded(callback: MailboxCallback<T>): void;
18
33
  onRemoved(callback: MailboxCallback<T>): void;
34
+ pause(): void;
35
+ resume(): void;
36
+ flush(): void;
37
+ isPaused(): boolean;
19
38
  }
20
- export {};
21
39
  //# sourceMappingURL=mailbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/sync/mailbox.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhE,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,EAAE,KAAK,EAAE,CAAC;gBAEJ,MAAM,EAAE,KAAK,EAAE;CAQ5B;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,WAAW;IACxC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5B;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAgBlB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAgBrB,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3C,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;CAG9C"}
1
+ {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/sync/mailbox.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAE1E,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,WAAW;IAC7C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9C,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,OAAO,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,EAAE,KAAK,EAAE,CAAC;gBAEJ,MAAM,EAAE,KAAK,EAAE;CAQ5B;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,aAAa,CAAW;IAEhC,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5B;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAoBlB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAoBrB,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3C,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAI7C,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAuCb,QAAQ,IAAI,OAAO;CAGpB"}
@@ -11,6 +11,9 @@ export class Mailbox {
11
11
  itemsMap = new Map();
12
12
  addedCallbacks = [];
13
13
  removedCallbacks = [];
14
+ paused = false;
15
+ addedBuffer = [];
16
+ removedBuffer = [];
14
17
  get items() {
15
18
  return Array.from(this.itemsMap.values());
16
19
  }
@@ -19,11 +22,15 @@ export class Mailbox {
19
22
  }
20
23
  add(item) {
21
24
  this.itemsMap.set(item.id, item);
25
+ if (this.paused) {
26
+ this.addedBuffer.push(item);
27
+ return;
28
+ }
22
29
  const callbacks = [...this.addedCallbacks];
23
30
  const errors = [];
24
31
  for (const callback of callbacks) {
25
32
  try {
26
- callback(item);
33
+ callback([item]);
27
34
  }
28
35
  catch (error) {
29
36
  errors.push(error instanceof Error ? error : new Error(String(error)));
@@ -35,11 +42,15 @@ export class Mailbox {
35
42
  }
36
43
  remove(item) {
37
44
  this.itemsMap.delete(item.id);
45
+ if (this.paused) {
46
+ this.removedBuffer.push(item);
47
+ return;
48
+ }
38
49
  const callbacks = [...this.removedCallbacks];
39
50
  const errors = [];
40
51
  for (const callback of callbacks) {
41
52
  try {
42
- callback(item);
53
+ callback([item]);
43
54
  }
44
55
  catch (error) {
45
56
  errors.push(error instanceof Error ? error : new Error(String(error)));
@@ -55,5 +66,47 @@ export class Mailbox {
55
66
  onRemoved(callback) {
56
67
  this.removedCallbacks.push(callback);
57
68
  }
69
+ pause() {
70
+ this.paused = true;
71
+ }
72
+ resume() {
73
+ this.paused = false;
74
+ this.flush();
75
+ }
76
+ flush() {
77
+ const addedItems = this.addedBuffer;
78
+ this.addedBuffer = [];
79
+ const errors = [];
80
+ if (addedItems.length > 0) {
81
+ const callbacks = [...this.addedCallbacks];
82
+ for (const callback of callbacks) {
83
+ try {
84
+ callback(addedItems);
85
+ }
86
+ catch (error) {
87
+ errors.push(error instanceof Error ? error : new Error(String(error)));
88
+ }
89
+ }
90
+ }
91
+ const removedItems = this.removedBuffer;
92
+ this.removedBuffer = [];
93
+ if (removedItems.length > 0) {
94
+ const callbacks = [...this.removedCallbacks];
95
+ for (const callback of callbacks) {
96
+ try {
97
+ callback(removedItems);
98
+ }
99
+ catch (error) {
100
+ errors.push(error instanceof Error ? error : new Error(String(error)));
101
+ }
102
+ }
103
+ }
104
+ if (errors.length > 0) {
105
+ throw new MailboxAggregateError(errors);
106
+ }
107
+ }
108
+ isPaused() {
109
+ return this.paused;
110
+ }
58
111
  }
59
112
  //# sourceMappingURL=mailbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../../src/sync/mailbox.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,CAAU;IAEhB,YAAY,MAAe;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,CACH,gCAAgC,MAAM,CAAC,MAAM,cAAc,QAAQ,EAAE,CACtE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,OAAO;IACV,QAAQ,GAAmB,IAAI,GAAG,EAAE,CAAC;IACrC,cAAc,GAAyB,EAAE,CAAC;IAC1C,gBAAgB,GAAyB,EAAE,CAAC;IAEpD,IAAI,KAAK;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,IAAO;QACT,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAA4B;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../../src/sync/mailbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { IEventBus } from "../events/interfaces.js";
2
+ import { type SyncResult } from "./types.js";
3
+ /**
4
+ * Provides a promise-based interface for waiting on sync completion.
5
+ * Subscribes to sync events at construction and tracks completed sync results
6
+ * to provide a fast path for jobs that have already synced.
7
+ */
8
+ export declare class SyncAwaiter {
9
+ private readonly eventBus;
10
+ private readonly completedResults;
11
+ private readonly pendingWaiters;
12
+ private readonly unsubscribers;
13
+ private isShutdown;
14
+ constructor(eventBus: IEventBus);
15
+ /**
16
+ * Waits for sync operations for a job to complete.
17
+ * Resolves when SYNC_SUCCEEDED is emitted.
18
+ * Rejects when SYNC_FAILED is emitted.
19
+ *
20
+ * @param jobId - The job id to wait for
21
+ * @param signal - Optional abort signal
22
+ * @returns The sync result
23
+ */
24
+ waitForSync(jobId: string, signal?: AbortSignal): Promise<SyncResult>;
25
+ /**
26
+ * Shuts down the sync awaiter. This will synchronously reject all pending waiters.
27
+ */
28
+ shutdown(): void;
29
+ private subscribeToEvents;
30
+ private handleSyncSucceeded;
31
+ private handleSyncFailed;
32
+ private resolveWaiters;
33
+ }
34
+ //# sourceMappingURL=sync-awaiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-awaiter.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-awaiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAQpB;;;;GAIG;AACH,qBAAa,WAAW;IAMV,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAS;gBAEE,QAAQ,EAAE,SAAS;IAIhD;;;;;;;;OAQG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAyCrE;;OAEG;IACH,QAAQ,IAAI,IAAI;IAgBhB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,124 @@
1
+ import { SyncEventTypes, } from "./types.js";
2
+ /**
3
+ * Provides a promise-based interface for waiting on sync completion.
4
+ * Subscribes to sync events at construction and tracks completed sync results
5
+ * to provide a fast path for jobs that have already synced.
6
+ */
7
+ export class SyncAwaiter {
8
+ eventBus;
9
+ completedResults = new Map();
10
+ pendingWaiters = new Map();
11
+ unsubscribers = [];
12
+ isShutdown = false;
13
+ constructor(eventBus) {
14
+ this.eventBus = eventBus;
15
+ this.subscribeToEvents();
16
+ }
17
+ /**
18
+ * Waits for sync operations for a job to complete.
19
+ * Resolves when SYNC_SUCCEEDED is emitted.
20
+ * Rejects when SYNC_FAILED is emitted.
21
+ *
22
+ * @param jobId - The job id to wait for
23
+ * @param signal - Optional abort signal
24
+ * @returns The sync result
25
+ */
26
+ waitForSync(jobId, signal) {
27
+ if (signal?.aborted) {
28
+ return Promise.reject(new Error("Operation aborted"));
29
+ }
30
+ if (this.isShutdown) {
31
+ return Promise.reject(new Error("SyncAwaiter is shutdown"));
32
+ }
33
+ const completedResult = this.completedResults.get(jobId);
34
+ if (completedResult) {
35
+ return Promise.resolve(completedResult);
36
+ }
37
+ return new Promise((resolve, reject) => {
38
+ const waiter = { resolve, reject, signal };
39
+ const existingWaiters = this.pendingWaiters.get(jobId) || [];
40
+ existingWaiters.push(waiter);
41
+ this.pendingWaiters.set(jobId, existingWaiters);
42
+ if (signal) {
43
+ const abortHandler = () => {
44
+ const waiters = this.pendingWaiters.get(jobId);
45
+ if (waiters) {
46
+ const index = waiters.indexOf(waiter);
47
+ if (index !== -1) {
48
+ waiters.splice(index, 1);
49
+ if (waiters.length === 0) {
50
+ this.pendingWaiters.delete(jobId);
51
+ }
52
+ waiter.reject(new Error("Operation aborted"));
53
+ }
54
+ }
55
+ };
56
+ signal.addEventListener("abort", abortHandler, { once: true });
57
+ }
58
+ });
59
+ }
60
+ /**
61
+ * Shuts down the sync awaiter. This will synchronously reject all pending waiters.
62
+ */
63
+ shutdown() {
64
+ this.isShutdown = true;
65
+ for (const unsubscribe of this.unsubscribers) {
66
+ unsubscribe();
67
+ }
68
+ this.unsubscribers.length = 0;
69
+ for (const [, waiters] of this.pendingWaiters) {
70
+ for (const waiter of waiters) {
71
+ waiter.reject(new Error("SyncAwaiter shutdown"));
72
+ }
73
+ }
74
+ this.pendingWaiters.clear();
75
+ }
76
+ subscribeToEvents() {
77
+ this.unsubscribers.push(this.eventBus.subscribe(SyncEventTypes.SYNC_SUCCEEDED, (_type, event) => {
78
+ this.handleSyncSucceeded(event);
79
+ }));
80
+ this.unsubscribers.push(this.eventBus.subscribe(SyncEventTypes.SYNC_FAILED, (_type, event) => {
81
+ this.handleSyncFailed(event);
82
+ }));
83
+ }
84
+ handleSyncSucceeded(event) {
85
+ const result = {
86
+ jobId: event.jobId,
87
+ status: "succeeded",
88
+ syncOperationCount: event.syncOperationCount,
89
+ successCount: event.syncOperationCount,
90
+ failureCount: 0,
91
+ errors: [],
92
+ };
93
+ this.completedResults.set(event.jobId, result);
94
+ this.resolveWaiters(event.jobId, result);
95
+ }
96
+ handleSyncFailed(event) {
97
+ const result = {
98
+ jobId: event.jobId,
99
+ status: "failed",
100
+ syncOperationCount: event.successCount + event.failureCount,
101
+ successCount: event.successCount,
102
+ failureCount: event.failureCount,
103
+ errors: event.errors,
104
+ };
105
+ this.completedResults.set(event.jobId, result);
106
+ this.resolveWaiters(event.jobId, result);
107
+ }
108
+ resolveWaiters(jobId, result) {
109
+ const waiters = this.pendingWaiters.get(jobId);
110
+ if (!waiters || waiters.length === 0) {
111
+ return;
112
+ }
113
+ this.pendingWaiters.delete(jobId);
114
+ for (const waiter of waiters) {
115
+ if (waiter.signal?.aborted) {
116
+ waiter.reject(new Error("Operation aborted"));
117
+ }
118
+ else {
119
+ waiter.resolve(result);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=sync-awaiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-awaiter.js","sourceRoot":"","sources":["../../../src/sync/sync-awaiter.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,29 @@
1
- import type { IOperationIndex } from "../cache/operation-index-types.js";
1
+ import { type IOperationIndex } from "../cache/operation-index-types.js";
2
2
  import type { IReactor } from "../core/types.js";
3
3
  import type { IEventBus } from "../events/interfaces.js";
4
4
  import type { ILogger } from "../logging/types.js";
5
5
  import { type JobInfo, type ShutdownStatus } from "../shared/types.js";
6
6
  import type { ISyncCursorStorage, ISyncRemoteStorage } from "../storage/interfaces.js";
7
7
  import type { IChannelFactory, ISyncManager, Remote } from "./interfaces.js";
8
- import type { ChannelConfig, RemoteFilter, RemoteOptions } from "./types.js";
8
+ import type { ChannelConfig, RemoteFilter, RemoteOptions, SyncResult } from "./types.js";
9
9
  export declare class SyncManager implements ISyncManager {
10
10
  private readonly logger;
11
11
  private readonly remoteStorage;
12
12
  private readonly cursorStorage;
13
13
  private readonly channelFactory;
14
- private readonly _operationIndex;
14
+ private readonly operationIndex;
15
15
  private readonly reactor;
16
16
  private readonly eventBus;
17
17
  private readonly remotes;
18
18
  private readonly awaiter;
19
+ private readonly syncAwaiter;
20
+ private readonly jobSyncStates;
19
21
  private isShutdown;
20
22
  private eventUnsubscribe?;
23
+ private failedEventUnsubscribe?;
24
+ private writeReadyQueue;
25
+ private processingWriteReady;
26
+ private readonly pendingBatches;
21
27
  loadJobs: Map<string, JobInfo>;
22
28
  constructor(logger: ILogger, remoteStorage: ISyncRemoteStorage, cursorStorage: ISyncCursorStorage, channelFactory: IChannelFactory, operationIndex: IOperationIndex, reactor: IReactor, eventBus: IEventBus);
23
29
  startup(): Promise<void>;
@@ -28,10 +34,18 @@ export declare class SyncManager implements ISyncManager {
28
34
  private backfillOutbox;
29
35
  remove(name: string): Promise<void>;
30
36
  list(): Remote[];
37
+ waitForSync(jobId: string, signal?: AbortSignal): Promise<SyncResult>;
31
38
  private wireChannelCallbacks;
32
- private handleOperationWritten;
33
- private handleInboxJob;
39
+ private enqueueWriteReady;
40
+ private processWriteReadyQueue;
41
+ private handleWriteReadyAsync;
42
+ private handleJobFailedForBatch;
43
+ private processCompleteBatch;
44
+ private handleInboxAdded;
34
45
  private handleOutboxJob;
35
46
  private applyInboxJob;
47
+ private applyInboxBatch;
48
+ private markSyncOpCompleted;
49
+ private filterByCollectionMembership;
36
50
  }
37
51
  //# sourceMappingURL=sync-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EAGd,MAAM,YAAY,CAAC;AAQpB,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAa;IAE/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;gBAGhD,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,kBAAkB,EACjC,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe,EAC/B,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS;IAgBf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C9B,QAAQ,IAAI,cAAc;IA2B1B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IASrB,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,GAAE,YAAwD,EAChE,OAAO,GAAE,aAAkB,EAC3B,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC;YAkEJ,cAAc;IAsDtB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,IAAI,IAAI,MAAM,EAAE;IAIhB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,sBAAsB;IAiC9B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;YAUT,aAAa;CAsD5B"}
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-manager.ts"],"names":[],"mappings":"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"}