@powerhousedao/reactor 6.0.0-dev.6 → 6.0.0-dev.61

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 (324) 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 +6 -5
  7. package/dist/src/cache/document-meta-cache.js.map +1 -1
  8. package/dist/src/cache/kysely-operation-index.d.ts +6 -1
  9. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  10. package/dist/src/cache/kysely-operation-index.js +102 -7
  11. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  12. package/dist/src/cache/kysely-write-cache.d.ts +9 -2
  13. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  14. package/dist/src/cache/kysely-write-cache.js +38 -15
  15. package/dist/src/cache/kysely-write-cache.js.map +1 -1
  16. package/dist/src/cache/operation-index-types.d.ts +16 -2
  17. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  18. package/dist/src/cache/operation-index-types.js.map +1 -1
  19. package/dist/src/cache/write/interfaces.d.ts +7 -2
  20. package/dist/src/cache/write/interfaces.d.ts.map +1 -1
  21. package/dist/src/client/reactor-client.d.ts +13 -10
  22. package/dist/src/client/reactor-client.d.ts.map +1 -1
  23. package/dist/src/client/reactor-client.js +134 -43
  24. package/dist/src/client/reactor-client.js.map +1 -1
  25. package/dist/src/client/types.d.ts +25 -6
  26. package/dist/src/client/types.d.ts.map +1 -1
  27. package/dist/src/client/types.js.map +1 -1
  28. package/dist/src/core/reactor-builder.d.ts +23 -7
  29. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  30. package/dist/src/core/reactor-builder.js +99 -24
  31. package/dist/src/core/reactor-builder.js.map +1 -1
  32. package/dist/src/core/reactor-client-builder.d.ts +5 -4
  33. package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
  34. package/dist/src/core/reactor-client-builder.js +14 -5
  35. package/dist/src/core/reactor-client-builder.js.map +1 -1
  36. package/dist/src/core/reactor.d.ts +20 -80
  37. package/dist/src/core/reactor.d.ts.map +1 -1
  38. package/dist/src/core/reactor.js +235 -576
  39. package/dist/src/core/reactor.js.map +1 -1
  40. package/dist/src/core/types.d.ts +64 -28
  41. package/dist/src/core/types.d.ts.map +1 -1
  42. package/dist/src/core/utils.d.ts +39 -3
  43. package/dist/src/core/utils.d.ts.map +1 -1
  44. package/dist/src/core/utils.js +63 -9
  45. package/dist/src/core/utils.js.map +1 -1
  46. package/dist/src/events/types.d.ts +35 -10
  47. package/dist/src/events/types.d.ts.map +1 -1
  48. package/dist/src/events/types.js +7 -5
  49. package/dist/src/events/types.js.map +1 -1
  50. package/dist/src/executor/document-action-handler.d.ts +37 -0
  51. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  52. package/dist/src/executor/document-action-handler.js +356 -0
  53. package/dist/src/executor/document-action-handler.js.map +1 -0
  54. package/dist/src/executor/signature-verifier.d.ts +9 -0
  55. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  56. package/dist/src/executor/signature-verifier.js +70 -0
  57. package/dist/src/executor/signature-verifier.js.map +1 -0
  58. package/dist/src/executor/simple-job-executor-manager.d.ts +6 -1
  59. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  60. package/dist/src/executor/simple-job-executor-manager.js +125 -13
  61. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  62. package/dist/src/executor/simple-job-executor.d.ts +6 -46
  63. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  64. package/dist/src/executor/simple-job-executor.js +113 -588
  65. package/dist/src/executor/simple-job-executor.js.map +1 -1
  66. package/dist/src/executor/types.d.ts +1 -3
  67. package/dist/src/executor/types.d.ts.map +1 -1
  68. package/dist/src/executor/types.js.map +1 -1
  69. package/dist/src/executor/util.d.ts +12 -2
  70. package/dist/src/executor/util.d.ts.map +1 -1
  71. package/dist/src/executor/util.js +47 -1
  72. package/dist/src/executor/util.js.map +1 -1
  73. package/dist/src/index.d.ts +11 -9
  74. package/dist/src/index.d.ts.map +1 -1
  75. package/dist/src/index.js +7 -6
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
  78. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  79. package/dist/src/job-tracker/in-memory-job-tracker.js +20 -18
  80. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
  81. package/dist/src/job-tracker/interfaces.d.ts +3 -1
  82. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  83. package/dist/src/logging/console.d.ts +1 -22
  84. package/dist/src/logging/console.d.ts.map +1 -1
  85. package/dist/src/logging/console.js +1 -107
  86. package/dist/src/logging/console.js.map +1 -1
  87. package/dist/src/logging/types.d.ts +1 -11
  88. package/dist/src/logging/types.d.ts.map +1 -1
  89. package/dist/src/processors/index.d.ts +1 -1
  90. package/dist/src/processors/index.d.ts.map +1 -1
  91. package/dist/src/processors/index.js.map +1 -1
  92. package/dist/src/processors/processor-manager.d.ts +2 -2
  93. package/dist/src/processors/processor-manager.d.ts.map +1 -1
  94. package/dist/src/processors/processor-manager.js.map +1 -1
  95. package/dist/src/processors/relational/types.d.ts +2 -0
  96. package/dist/src/processors/relational/types.d.ts.map +1 -0
  97. package/dist/src/processors/relational/types.js +2 -0
  98. package/dist/src/processors/relational/types.js.map +1 -0
  99. package/dist/src/processors/relational/utils.d.ts +2 -0
  100. package/dist/src/processors/relational/utils.d.ts.map +1 -0
  101. package/dist/src/processors/relational/utils.js +2 -0
  102. package/dist/src/processors/relational/utils.js.map +1 -0
  103. package/dist/src/processors/utils.d.ts +2 -2
  104. package/dist/src/processors/utils.d.ts.map +1 -1
  105. package/dist/src/processors/utils.js +2 -1
  106. package/dist/src/processors/utils.js.map +1 -1
  107. package/dist/src/queue/job-execution-handle.d.ts +3 -0
  108. package/dist/src/queue/job-execution-handle.d.ts.map +1 -1
  109. package/dist/src/queue/job-execution-handle.js +9 -0
  110. package/dist/src/queue/job-execution-handle.js.map +1 -1
  111. package/dist/src/queue/queue.d.ts +30 -1
  112. package/dist/src/queue/queue.d.ts.map +1 -1
  113. package/dist/src/queue/queue.js +110 -1
  114. package/dist/src/queue/queue.js.map +1 -1
  115. package/dist/src/queue/types.d.ts +4 -3
  116. package/dist/src/queue/types.d.ts.map +1 -1
  117. package/dist/src/queue/types.js.map +1 -1
  118. package/dist/src/read-models/base-read-model.d.ts +1 -1
  119. package/dist/src/read-models/base-read-model.d.ts.map +1 -1
  120. package/dist/src/read-models/base-read-model.js +4 -4
  121. package/dist/src/read-models/base-read-model.js.map +1 -1
  122. package/dist/src/read-models/coordinator.d.ts +2 -2
  123. package/dist/src/read-models/coordinator.d.ts.map +1 -1
  124. package/dist/src/read-models/coordinator.js +8 -8
  125. package/dist/src/read-models/coordinator.js.map +1 -1
  126. package/dist/src/read-models/document-view.d.ts +6 -3
  127. package/dist/src/read-models/document-view.d.ts.map +1 -1
  128. package/dist/src/read-models/document-view.js +130 -48
  129. package/dist/src/read-models/document-view.js.map +1 -1
  130. package/dist/src/read-models/interfaces.d.ts +1 -1
  131. package/dist/src/read-models/interfaces.d.ts.map +1 -1
  132. package/dist/src/registry/document-model-resolver.d.ts +29 -0
  133. package/dist/src/registry/document-model-resolver.d.ts.map +1 -0
  134. package/dist/src/registry/document-model-resolver.js +81 -0
  135. package/dist/src/registry/document-model-resolver.js.map +1 -0
  136. package/dist/src/registry/implementation.d.ts +4 -0
  137. package/dist/src/registry/implementation.d.ts.map +1 -1
  138. package/dist/src/registry/implementation.js +10 -0
  139. package/dist/src/registry/implementation.js.map +1 -1
  140. package/dist/src/registry/index.d.ts +3 -1
  141. package/dist/src/registry/index.d.ts.map +1 -1
  142. package/dist/src/registry/index.js +1 -0
  143. package/dist/src/registry/index.js.map +1 -1
  144. package/dist/src/registry/interfaces.d.ts +8 -0
  145. package/dist/src/registry/interfaces.d.ts.map +1 -1
  146. package/dist/src/shared/awaiter.d.ts +2 -2
  147. package/dist/src/shared/awaiter.d.ts.map +1 -1
  148. package/dist/src/shared/awaiter.js +11 -11
  149. package/dist/src/shared/awaiter.js.map +1 -1
  150. package/dist/src/shared/collect-all-pages.d.ts +7 -0
  151. package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
  152. package/dist/src/shared/collect-all-pages.js +17 -0
  153. package/dist/src/shared/collect-all-pages.js.map +1 -0
  154. package/dist/src/shared/drive-url.d.ts +15 -0
  155. package/dist/src/shared/drive-url.d.ts.map +1 -0
  156. package/dist/src/shared/drive-url.js +17 -0
  157. package/dist/src/shared/drive-url.js.map +1 -0
  158. package/dist/src/shared/errors.d.ts +9 -0
  159. package/dist/src/shared/errors.d.ts.map +1 -1
  160. package/dist/src/shared/errors.js +18 -0
  161. package/dist/src/shared/errors.js.map +1 -1
  162. package/dist/src/shared/factories.d.ts +6 -2
  163. package/dist/src/shared/factories.d.ts.map +1 -1
  164. package/dist/src/shared/factories.js +10 -2
  165. package/dist/src/shared/factories.js.map +1 -1
  166. package/dist/src/shared/types.d.ts +32 -6
  167. package/dist/src/shared/types.d.ts.map +1 -1
  168. package/dist/src/shared/types.js +4 -4
  169. package/dist/src/shared/types.js.map +1 -1
  170. package/dist/src/signer/passthrough-signer.d.ts +1 -1
  171. package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
  172. package/dist/src/signer/passthrough-signer.js +1 -3
  173. package/dist/src/signer/passthrough-signer.js.map +1 -1
  174. package/dist/src/storage/interfaces.d.ts +238 -124
  175. package/dist/src/storage/interfaces.d.ts.map +1 -1
  176. package/dist/src/storage/interfaces.js +10 -0
  177. package/dist/src/storage/interfaces.js.map +1 -1
  178. package/dist/src/storage/kysely/document-indexer.d.ts +8 -7
  179. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  180. package/dist/src/storage/kysely/document-indexer.js +123 -52
  181. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  182. package/dist/src/storage/kysely/store.d.ts +5 -4
  183. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  184. package/dist/src/storage/kysely/store.js +52 -21
  185. package/dist/src/storage/kysely/store.js.map +1 -1
  186. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +1 -1
  187. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -1
  188. package/dist/src/storage/kysely/sync-cursor-storage.js +6 -2
  189. package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
  190. package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts +17 -0
  191. package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts.map +1 -0
  192. package/dist/src/storage/kysely/sync-dead-letter-storage.js +110 -0
  193. package/dist/src/storage/kysely/sync-dead-letter-storage.js.map +1 -0
  194. package/dist/src/storage/kysely/sync-remote-storage.js +1 -1
  195. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
  196. package/dist/src/storage/kysely/types.d.ts +22 -0
  197. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  198. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +3 -0
  199. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +1 -0
  200. package/dist/src/storage/migrations/011_add_cursor_type_column.js +29 -0
  201. package/dist/src/storage/migrations/011_add_cursor_type_column.js.map +1 -0
  202. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +3 -0
  203. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +1 -0
  204. package/dist/src/storage/migrations/012_add_source_remote_column.js +7 -0
  205. package/dist/src/storage/migrations/012_add_source_remote_column.js.map +1 -0
  206. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts +3 -0
  207. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts.map +1 -0
  208. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.js +24 -0
  209. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.js.map +1 -0
  210. package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
  211. package/dist/src/storage/migrations/migrator.js +6 -0
  212. package/dist/src/storage/migrations/migrator.js.map +1 -1
  213. package/dist/src/subs/default-error-handler.d.ts.map +1 -1
  214. package/dist/src/subs/default-error-handler.js.map +1 -1
  215. package/dist/src/subs/subscription-notification-read-model.d.ts +3 -2
  216. package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -1
  217. package/dist/src/subs/subscription-notification-read-model.js +1 -1
  218. package/dist/src/subs/subscription-notification-read-model.js.map +1 -1
  219. package/dist/src/sync/batch-aggregator.d.ts +25 -0
  220. package/dist/src/sync/batch-aggregator.d.ts.map +1 -0
  221. package/dist/src/sync/batch-aggregator.js +94 -0
  222. package/dist/src/sync/batch-aggregator.js.map +1 -0
  223. package/dist/src/sync/buffered-mailbox.d.ts +36 -0
  224. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
  225. package/dist/src/sync/buffered-mailbox.js +164 -0
  226. package/dist/src/sync/buffered-mailbox.js.map +1 -0
  227. package/dist/src/sync/channels/{gql-channel.d.ts → gql-req-channel.d.ts} +49 -42
  228. package/dist/src/sync/channels/gql-req-channel.d.ts.map +1 -0
  229. package/dist/src/sync/channels/gql-req-channel.js +548 -0
  230. package/dist/src/sync/channels/gql-req-channel.js.map +1 -0
  231. package/dist/src/sync/channels/gql-request-channel-factory.d.ts +32 -0
  232. package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +1 -0
  233. package/dist/src/sync/channels/gql-request-channel-factory.js +105 -0
  234. package/dist/src/sync/channels/gql-request-channel-factory.js.map +1 -0
  235. package/dist/src/sync/channels/gql-res-channel.d.ts +25 -0
  236. package/dist/src/sync/channels/gql-res-channel.d.ts.map +1 -0
  237. package/dist/src/sync/channels/gql-res-channel.js +79 -0
  238. package/dist/src/sync/channels/gql-res-channel.js.map +1 -0
  239. package/dist/src/sync/channels/gql-response-channel-factory.d.ts +13 -0
  240. package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +1 -0
  241. package/dist/src/sync/channels/gql-response-channel-factory.js +14 -0
  242. package/dist/src/sync/channels/gql-response-channel-factory.js.map +1 -0
  243. package/dist/src/sync/channels/index.d.ts +6 -4
  244. package/dist/src/sync/channels/index.d.ts.map +1 -1
  245. package/dist/src/sync/channels/index.js +6 -4
  246. package/dist/src/sync/channels/index.js.map +1 -1
  247. package/dist/src/sync/channels/interval-poll-timer.d.ts +40 -0
  248. package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
  249. package/dist/src/sync/channels/interval-poll-timer.js +123 -0
  250. package/dist/src/sync/channels/interval-poll-timer.js.map +1 -0
  251. package/dist/src/sync/channels/poll-timer.d.ts +14 -0
  252. package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
  253. package/dist/src/sync/channels/poll-timer.js +2 -0
  254. package/dist/src/sync/channels/poll-timer.js.map +1 -0
  255. package/dist/src/sync/channels/utils.d.ts +15 -1
  256. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  257. package/dist/src/sync/channels/utils.js +67 -2
  258. package/dist/src/sync/channels/utils.js.map +1 -1
  259. package/dist/src/sync/index.d.ts +10 -6
  260. package/dist/src/sync/index.d.ts.map +1 -1
  261. package/dist/src/sync/index.js +7 -5
  262. package/dist/src/sync/index.js.map +1 -1
  263. package/dist/src/sync/interfaces.d.ts +34 -21
  264. package/dist/src/sync/interfaces.d.ts.map +1 -1
  265. package/dist/src/sync/mailbox.d.ts +51 -12
  266. package/dist/src/sync/mailbox.d.ts.map +1 -1
  267. package/dist/src/sync/mailbox.js +89 -6
  268. package/dist/src/sync/mailbox.js.map +1 -1
  269. package/dist/src/sync/sync-awaiter.d.ts +34 -0
  270. package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
  271. package/dist/src/sync/sync-awaiter.js +124 -0
  272. package/dist/src/sync/sync-awaiter.js.map +1 -0
  273. package/dist/src/sync/sync-builder.d.ts +5 -1
  274. package/dist/src/sync/sync-builder.d.ts.map +1 -1
  275. package/dist/src/sync/sync-builder.js +14 -1
  276. package/dist/src/sync/sync-builder.js.map +1 -1
  277. package/dist/src/sync/sync-manager.d.ts +21 -8
  278. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  279. package/dist/src/sync/sync-manager.js +274 -93
  280. package/dist/src/sync/sync-manager.js.map +1 -1
  281. package/dist/src/sync/sync-operation.d.ts +4 -2
  282. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  283. package/dist/src/sync/sync-operation.js +8 -1
  284. package/dist/src/sync/sync-operation.js.map +1 -1
  285. package/dist/src/sync/sync-status-tracker.d.ts +31 -0
  286. package/dist/src/sync/sync-status-tracker.d.ts.map +1 -0
  287. package/dist/src/sync/sync-status-tracker.js +137 -0
  288. package/dist/src/sync/sync-status-tracker.js.map +1 -0
  289. package/dist/src/sync/types.d.ts +79 -2
  290. package/dist/src/sync/types.d.ts.map +1 -1
  291. package/dist/src/sync/types.js +15 -0
  292. package/dist/src/sync/types.js.map +1 -1
  293. package/dist/src/sync/utils.d.ts +37 -2
  294. package/dist/src/sync/utils.d.ts.map +1 -1
  295. package/dist/src/sync/utils.js +205 -0
  296. package/dist/src/sync/utils.js.map +1 -1
  297. package/dist/src/utils/reshuffle.d.ts +22 -5
  298. package/dist/src/utils/reshuffle.d.ts.map +1 -1
  299. package/dist/src/utils/reshuffle.js +50 -6
  300. package/dist/src/utils/reshuffle.js.map +1 -1
  301. package/package.json +12 -15
  302. package/dist/src/processors/types.d.ts +0 -63
  303. package/dist/src/processors/types.d.ts.map +0 -1
  304. package/dist/src/processors/types.js +0 -2
  305. package/dist/src/processors/types.js.map +0 -1
  306. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  307. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  308. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  309. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
  310. package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -30
  311. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +0 -1
  312. package/dist/src/sync/channels/composite-channel-factory.js +0 -87
  313. package/dist/src/sync/channels/composite-channel-factory.js.map +0 -1
  314. package/dist/src/sync/channels/gql-channel-factory.d.ts +0 -25
  315. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +0 -1
  316. package/dist/src/sync/channels/gql-channel-factory.js +0 -76
  317. package/dist/src/sync/channels/gql-channel-factory.js.map +0 -1
  318. package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
  319. package/dist/src/sync/channels/gql-channel.js +0 -423
  320. package/dist/src/sync/channels/gql-channel.js.map +0 -1
  321. package/dist/src/sync/channels/polling-channel.d.ts +0 -39
  322. package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
  323. package/dist/src/sync/channels/polling-channel.js +0 -72
  324. package/dist/src/sync/channels/polling-channel.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import { type IMailbox, type MailboxCallback } from "./mailbox.js";
2
+ import type { SyncOperation } from "./sync-operation.js";
3
+ export declare class BufferedMailbox implements IMailbox {
4
+ private itemsMap;
5
+ private addedCallbacks;
6
+ private removedCallbacks;
7
+ private addedBuffer;
8
+ private removedBuffer;
9
+ private addedTimer;
10
+ private removedTimer;
11
+ private readonly milliseconds;
12
+ private readonly maxQueued;
13
+ private paused;
14
+ private _ack;
15
+ private _latestOrdinal;
16
+ constructor(milliseconds: number, maxQueued: number);
17
+ init(ackOrdinal: number): void;
18
+ get items(): ReadonlyArray<SyncOperation>;
19
+ get ackOrdinal(): number;
20
+ get latestOrdinal(): number;
21
+ get(id: string): SyncOperation | undefined;
22
+ add(...items: SyncOperation[]): void;
23
+ remove(...items: SyncOperation[]): void;
24
+ onAdded(callback: MailboxCallback): void;
25
+ onRemoved(callback: MailboxCallback): void;
26
+ pause(): void;
27
+ resume(): void;
28
+ isPaused(): boolean;
29
+ flush(): void;
30
+ private scheduleAddedFlush;
31
+ private scheduleRemovedFlush;
32
+ private flushAdded;
33
+ private flushRemoved;
34
+ private invokeCallbacks;
35
+ }
36
+ //# sourceMappingURL=buffered-mailbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffered-mailbox.d.ts","sourceRoot":"","sources":["../../../src/sync/buffered-mailbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,cAAc,CAAa;gBAEvB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKnD,IAAI,CAAC,UAAU,EAAE,MAAM;IAIvB,IAAI,KAAK,IAAI,aAAa,CAAC,aAAa,CAAC,CAExC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI1C,GAAG,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI;IA+BpC,MAAM,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI;IAiBvC,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAIxC,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI1C,KAAK,IAAI,IAAI;IAYb,MAAM,IAAI,IAAI;IAUd,QAAQ,IAAI,OAAO;IAInB,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,eAAe;CAmBxB"}
@@ -0,0 +1,164 @@
1
+ import { MailboxAggregateError, } from "./mailbox.js";
2
+ import { SyncOperationStatus } from "./types.js";
3
+ export class BufferedMailbox {
4
+ itemsMap = new Map();
5
+ addedCallbacks = [];
6
+ removedCallbacks = [];
7
+ addedBuffer = [];
8
+ removedBuffer = [];
9
+ addedTimer = null;
10
+ removedTimer = null;
11
+ milliseconds;
12
+ maxQueued;
13
+ paused = false;
14
+ _ack = 0;
15
+ _latestOrdinal = 0;
16
+ constructor(milliseconds, maxQueued) {
17
+ this.milliseconds = milliseconds;
18
+ this.maxQueued = maxQueued;
19
+ }
20
+ init(ackOrdinal) {
21
+ this._ack = this._latestOrdinal = ackOrdinal;
22
+ }
23
+ get items() {
24
+ return Array.from(this.itemsMap.values());
25
+ }
26
+ get ackOrdinal() {
27
+ return this._ack;
28
+ }
29
+ get latestOrdinal() {
30
+ return this._latestOrdinal;
31
+ }
32
+ get(id) {
33
+ return this.itemsMap.get(id);
34
+ }
35
+ add(...items) {
36
+ for (const item of items) {
37
+ this.itemsMap.set(item.id, item);
38
+ // update latest ordinal
39
+ for (const op of item.operations) {
40
+ this._latestOrdinal = Math.max(this._latestOrdinal, op.context.ordinal);
41
+ }
42
+ // listen for updates to the syncop status
43
+ item.on((syncOp, _, next) => {
44
+ if (next === SyncOperationStatus.Applied) {
45
+ for (const op of syncOp.operations) {
46
+ this._ack = Math.max(this._ack, op.context.ordinal);
47
+ }
48
+ }
49
+ });
50
+ }
51
+ this.addedBuffer.push(...items);
52
+ if (this.paused) {
53
+ return;
54
+ }
55
+ if (this.addedBuffer.length >= this.maxQueued) {
56
+ this.flushAdded();
57
+ }
58
+ else {
59
+ this.scheduleAddedFlush();
60
+ }
61
+ }
62
+ remove(...items) {
63
+ for (const item of items) {
64
+ this.itemsMap.delete(item.id);
65
+ }
66
+ this.removedBuffer.push(...items);
67
+ if (this.paused) {
68
+ return;
69
+ }
70
+ if (this.removedBuffer.length >= this.maxQueued) {
71
+ this.flushRemoved();
72
+ }
73
+ else {
74
+ this.scheduleRemovedFlush();
75
+ }
76
+ }
77
+ onAdded(callback) {
78
+ this.addedCallbacks.push(callback);
79
+ }
80
+ onRemoved(callback) {
81
+ this.removedCallbacks.push(callback);
82
+ }
83
+ pause() {
84
+ this.paused = true;
85
+ if (this.addedTimer !== null) {
86
+ clearTimeout(this.addedTimer);
87
+ this.addedTimer = null;
88
+ }
89
+ if (this.removedTimer !== null) {
90
+ clearTimeout(this.removedTimer);
91
+ this.removedTimer = null;
92
+ }
93
+ }
94
+ resume() {
95
+ this.paused = false;
96
+ if (this.addedBuffer.length > 0) {
97
+ this.scheduleAddedFlush();
98
+ }
99
+ if (this.removedBuffer.length > 0) {
100
+ this.scheduleRemovedFlush();
101
+ }
102
+ }
103
+ isPaused() {
104
+ return this.paused;
105
+ }
106
+ flush() {
107
+ this.flushAdded();
108
+ this.flushRemoved();
109
+ }
110
+ scheduleAddedFlush() {
111
+ if (this.addedTimer !== null) {
112
+ clearTimeout(this.addedTimer);
113
+ }
114
+ this.addedTimer = setTimeout(() => {
115
+ this.flushAdded();
116
+ }, this.milliseconds);
117
+ }
118
+ scheduleRemovedFlush() {
119
+ if (this.removedTimer !== null) {
120
+ clearTimeout(this.removedTimer);
121
+ }
122
+ this.removedTimer = setTimeout(() => {
123
+ this.flushRemoved();
124
+ }, this.milliseconds);
125
+ }
126
+ flushAdded() {
127
+ if (this.addedTimer !== null) {
128
+ clearTimeout(this.addedTimer);
129
+ this.addedTimer = null;
130
+ }
131
+ const items = this.addedBuffer;
132
+ this.addedBuffer = [];
133
+ if (items.length > 0) {
134
+ this.invokeCallbacks(this.addedCallbacks, items);
135
+ }
136
+ }
137
+ flushRemoved() {
138
+ if (this.removedTimer !== null) {
139
+ clearTimeout(this.removedTimer);
140
+ this.removedTimer = null;
141
+ }
142
+ const items = this.removedBuffer;
143
+ this.removedBuffer = [];
144
+ if (items.length > 0) {
145
+ this.invokeCallbacks(this.removedCallbacks, items);
146
+ }
147
+ }
148
+ invokeCallbacks(callbacks, items) {
149
+ const callbacksCopy = [...callbacks];
150
+ const errors = [];
151
+ for (const callback of callbacksCopy) {
152
+ try {
153
+ callback(items);
154
+ }
155
+ catch (error) {
156
+ errors.push(error instanceof Error ? error : new Error(String(error)));
157
+ }
158
+ }
159
+ if (errors.length > 0) {
160
+ throw new MailboxAggregateError(errors);
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=buffered-mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffered-mailbox.js","sourceRoot":"","sources":["../../../src/sync/buffered-mailbox.ts"],"names":[],"mappings":"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"}
@@ -1,66 +1,71 @@
1
+ import type { IOperationIndex } from "../../cache/operation-index-types.js";
1
2
  import type { ILogger } from "../../logging/types.js";
2
3
  import type { ISyncCursorStorage } from "../../storage/interfaces.js";
3
4
  import type { IChannel } from "../interfaces.js";
4
- import { Mailbox } from "../mailbox.js";
5
- import type { SyncOperation } from "../sync-operation.js";
6
- import type { RemoteFilter } from "../types.js";
5
+ import { type IMailbox } from "../mailbox.js";
6
+ import type { JwtHandler, RemoteFilter } from "../types.js";
7
+ import type { IPollTimer } from "./poll-timer.js";
7
8
  /**
8
9
  * Configuration parameters for GqlChannel
9
10
  */
10
11
  export type GqlChannelConfig = {
11
12
  /** The GraphQL endpoint URL */
12
13
  url: string;
13
- /** Authentication token for the remote */
14
- authToken?: string;
15
- /** Polling interval in milliseconds (default: 5000) */
16
- pollIntervalMs?: number;
17
- /** Base delay for exponential backoff retries in milliseconds (default: 1000) */
18
- retryBaseDelayMs?: number;
19
- /** Maximum delay for exponential backoff retries in milliseconds (default: 300000) */
20
- retryMaxDelayMs?: number;
21
- /** Maximum number of consecutive failures before marking as error (default: 5) */
22
- maxFailures?: number;
14
+ /** Dynamic JWT token handler for generating fresh tokens per-request */
15
+ jwtHandler?: JwtHandler;
23
16
  /** Custom fetch function for testing (default: global fetch) */
24
17
  fetchFn?: typeof fetch;
25
18
  /** Collection ID to synchronize */
26
19
  collectionId: string;
27
20
  /** Filter to apply to operations */
28
21
  filter: RemoteFilter;
22
+ /** Base delay in ms for exponential backoff on push retries */
23
+ retryBaseDelayMs: number;
24
+ /** Maximum delay in ms for exponential backoff on push retries */
25
+ retryMaxDelayMs: number;
29
26
  };
30
27
  /**
31
28
  * GraphQL-based synchronization channel for network communication between reactors.
32
29
  */
33
- export declare class GqlChannel implements IChannel {
30
+ export declare class GqlRequestChannel implements IChannel {
34
31
  private readonly logger;
35
- readonly inbox: Mailbox<SyncOperation>;
36
- readonly outbox: Mailbox<SyncOperation>;
37
- readonly deadLetter: Mailbox<SyncOperation>;
32
+ readonly inbox: IMailbox;
33
+ readonly outbox: IMailbox;
34
+ readonly deadLetter: IMailbox;
35
+ readonly config: GqlChannelConfig;
36
+ private readonly bufferedOutbox;
38
37
  private readonly channelId;
39
38
  private readonly remoteName;
40
39
  private readonly cursorStorage;
41
- private readonly config;
40
+ private readonly operationIndex;
41
+ private readonly pollTimer;
42
42
  private isShutdown;
43
- private pollTimer?;
44
43
  private failureCount;
45
44
  private lastSuccessUtcMs?;
46
45
  private lastFailureUtcMs?;
47
- constructor(logger: ILogger, channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage, config: GqlChannelConfig);
46
+ private lastPersistedInboxOrdinal;
47
+ private lastPersistedOutboxOrdinal;
48
+ private pushFailureCount;
49
+ private pushRetryTimer;
50
+ private pushBlocked;
51
+ constructor(logger: ILogger, channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage, config: GqlChannelConfig, operationIndex: IOperationIndex, pollTimer: IPollTimer);
48
52
  /**
49
53
  * Shuts down the channel and prevents further operations.
50
54
  */
51
- shutdown(): void;
55
+ shutdown(): Promise<void>;
52
56
  /**
53
57
  * Initializes the channel by registering it on the remote server and starting polling.
54
58
  */
55
59
  init(): Promise<void>;
56
- /**
57
- * Starts the polling loop to fetch operations from the remote.
58
- */
59
- private startPolling;
60
60
  /**
61
61
  * Polls the remote for new sync envelopes.
62
62
  */
63
63
  private poll;
64
+ /**
65
+ * Handles dead letters reported by the remote server.
66
+ * Creates local dead letter SyncOperations so the channel quiesces.
67
+ */
68
+ private handleRemoteDeadLetters;
64
69
  /**
65
70
  * Handles polling errors with exponential backoff.
66
71
  */
@@ -78,33 +83,34 @@ export declare class GqlChannel implements IChannel {
78
83
  */
79
84
  private touchRemoteChannel;
80
85
  /**
81
- * Handles sync operations added to the outbox by sending them to the remote.
86
+ * Fire-and-forget push with retry on recoverable errors.
87
+ * On success, clears push blocked state. On recoverable error, blocks
88
+ * further pushes and schedules a retry. On unrecoverable error, moves
89
+ * ops to deadLetter.
82
90
  */
83
- private handleOutboxAdded;
91
+ private attemptPush;
84
92
  /**
85
- * Pushes a sync operation to the remote via GraphQL mutation.
93
+ * Schedules a retry of all current outbox items using exponential backoff.
86
94
  */
87
- private pushSyncOperation;
95
+ private schedulePushRetry;
88
96
  /**
89
- * Serializes a SyncEnvelope for GraphQL transport.
90
- *
91
- * Signatures are serialized as comma-separated strings since GraphQL schema
92
- * defines them as [String!]!. Extra context fields (resultingState, ordinal)
93
- * are stripped since they are not defined in OperationContextInput.
97
+ * Returns true if the error is recoverable (transient network/HTTP/parse
98
+ * failure). Returns false for explicit GraphQL server rejections.
94
99
  */
95
- private serializeEnvelope;
100
+ private isRecoverablePushError;
96
101
  /**
97
- * Serializes an action for GraphQL transport, converting signature tuples to strings.
102
+ * Pushes multiple sync operations to the remote via a single GraphQL mutation.
103
+ * Creates one SyncEnvelope per SyncOperation with key/dependsOn for batch ordering.
98
104
  */
99
- private serializeAction;
105
+ private pushSyncOperations;
100
106
  /**
101
- * Executes a GraphQL query or mutation against the remote endpoint.
107
+ * Gets the authorization header value using jwtHandler.
102
108
  */
103
- private executeGraphQL;
109
+ private getAuthorizationHeader;
104
110
  /**
105
- * Updates the synchronization cursor for this channel's remote.
111
+ * Executes a GraphQL query or mutation against the remote endpoint.
106
112
  */
107
- updateCursor(cursorOrdinal: number): Promise<void>;
113
+ private executeGraphQL;
108
114
  /**
109
115
  * Gets the current health status of the channel.
110
116
  */
@@ -114,5 +120,6 @@ export declare class GqlChannel implements IChannel {
114
120
  lastFailureUtcMs?: number;
115
121
  failureCount: number;
116
122
  };
123
+ get poller(): IPollTimer;
117
124
  }
118
- //# sourceMappingURL=gql-channel.d.ts.map
125
+ //# sourceMappingURL=gql-req-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gql-req-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-req-channel.ts"],"names":[],"mappings":"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"}