@powerhousedao/reactor 6.0.0-dev.42 → 6.0.0-dev.44

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 (148) hide show
  1. package/dist/src/cache/kysely-operation-index.d.ts +2 -1
  2. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  3. package/dist/src/cache/kysely-operation-index.js +7 -2
  4. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  5. package/dist/src/cache/operation-index-types.d.ts +4 -2
  6. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  7. package/dist/src/cache/operation-index-types.js.map +1 -1
  8. package/dist/src/core/types.d.ts +1 -1
  9. package/dist/src/core/types.d.ts.map +1 -1
  10. package/dist/src/events/types.d.ts +1 -1
  11. package/dist/src/events/types.d.ts.map +1 -1
  12. package/dist/src/executor/document-action-handler.d.ts +1 -1
  13. package/dist/src/executor/document-action-handler.d.ts.map +1 -1
  14. package/dist/src/executor/document-action-handler.js +16 -11
  15. package/dist/src/executor/document-action-handler.js.map +1 -1
  16. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  17. package/dist/src/executor/simple-job-executor.js +32 -19
  18. package/dist/src/executor/simple-job-executor.js.map +1 -1
  19. package/dist/src/executor/types.d.ts +1 -1
  20. package/dist/src/executor/types.d.ts.map +1 -1
  21. package/dist/src/executor/util.d.ts +1 -1
  22. package/dist/src/executor/util.d.ts.map +1 -1
  23. package/dist/src/executor/util.js.map +1 -1
  24. package/dist/src/index.d.ts +6 -7
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +2 -3
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/processors/index.d.ts +1 -1
  29. package/dist/src/processors/index.d.ts.map +1 -1
  30. package/dist/src/processors/processor-manager.d.ts +2 -2
  31. package/dist/src/processors/processor-manager.d.ts.map +1 -1
  32. package/dist/src/processors/processor-manager.js.map +1 -1
  33. package/dist/src/processors/relational/types.d.ts +1 -26
  34. package/dist/src/processors/relational/types.d.ts.map +1 -1
  35. package/dist/src/processors/relational/types.js +1 -1
  36. package/dist/src/processors/relational/types.js.map +1 -1
  37. package/dist/src/processors/relational/utils.d.ts +1 -28
  38. package/dist/src/processors/relational/utils.d.ts.map +1 -1
  39. package/dist/src/processors/relational/utils.js +1 -66
  40. package/dist/src/processors/relational/utils.js.map +1 -1
  41. package/dist/src/processors/utils.d.ts +2 -2
  42. package/dist/src/processors/utils.d.ts.map +1 -1
  43. package/dist/src/read-models/base-read-model.d.ts +1 -1
  44. package/dist/src/read-models/base-read-model.d.ts.map +1 -1
  45. package/dist/src/read-models/document-view.d.ts +2 -2
  46. package/dist/src/read-models/document-view.d.ts.map +1 -1
  47. package/dist/src/read-models/document-view.js.map +1 -1
  48. package/dist/src/read-models/interfaces.d.ts +1 -1
  49. package/dist/src/read-models/interfaces.d.ts.map +1 -1
  50. package/dist/src/storage/interfaces.d.ts +4 -14
  51. package/dist/src/storage/interfaces.d.ts.map +1 -1
  52. package/dist/src/storage/interfaces.js.map +1 -1
  53. package/dist/src/storage/kysely/document-indexer.d.ts +2 -1
  54. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  55. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  56. package/dist/src/storage/kysely/store.d.ts +2 -2
  57. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  58. package/dist/src/storage/kysely/store.js.map +1 -1
  59. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +1 -1
  60. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -1
  61. package/dist/src/storage/kysely/sync-cursor-storage.js +6 -2
  62. package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
  63. package/dist/src/storage/kysely/types.d.ts +2 -0
  64. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  65. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +3 -0
  66. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +1 -0
  67. package/dist/src/storage/migrations/011_add_cursor_type_column.js +29 -0
  68. package/dist/src/storage/migrations/011_add_cursor_type_column.js.map +1 -0
  69. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +3 -0
  70. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +1 -0
  71. package/dist/src/storage/migrations/012_add_source_remote_column.js +7 -0
  72. package/dist/src/storage/migrations/012_add_source_remote_column.js.map +1 -0
  73. package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
  74. package/dist/src/storage/migrations/migrator.js +4 -0
  75. package/dist/src/storage/migrations/migrator.js.map +1 -1
  76. package/dist/src/subs/subscription-notification-read-model.d.ts +2 -1
  77. package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -1
  78. package/dist/src/subs/subscription-notification-read-model.js.map +1 -1
  79. package/dist/src/sync/batch-aggregator.d.ts +25 -0
  80. package/dist/src/sync/batch-aggregator.d.ts.map +1 -0
  81. package/dist/src/sync/batch-aggregator.js +94 -0
  82. package/dist/src/sync/batch-aggregator.js.map +1 -0
  83. package/dist/src/sync/buffered-mailbox.d.ts +14 -8
  84. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -1
  85. package/dist/src/sync/buffered-mailbox.js +34 -6
  86. package/dist/src/sync/buffered-mailbox.js.map +1 -1
  87. package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -6
  88. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -1
  89. package/dist/src/sync/channels/composite-channel-factory.js +4 -10
  90. package/dist/src/sync/channels/composite-channel-factory.js.map +1 -1
  91. package/dist/src/sync/channels/gql-channel-factory.js +2 -2
  92. package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
  93. package/dist/src/sync/channels/{gql-channel.d.ts → gql-req-channel.d.ts} +8 -27
  94. package/dist/src/sync/channels/gql-req-channel.d.ts.map +1 -0
  95. package/dist/src/sync/channels/{gql-channel.js → gql-req-channel.js} +142 -182
  96. package/dist/src/sync/channels/gql-req-channel.js.map +1 -0
  97. package/dist/src/sync/channels/gql-res-channel.d.ts +25 -0
  98. package/dist/src/sync/channels/gql-res-channel.d.ts.map +1 -0
  99. package/dist/src/sync/channels/gql-res-channel.js +79 -0
  100. package/dist/src/sync/channels/gql-res-channel.js.map +1 -0
  101. package/dist/src/sync/channels/index.d.ts +5 -5
  102. package/dist/src/sync/channels/index.d.ts.map +1 -1
  103. package/dist/src/sync/channels/index.js +5 -5
  104. package/dist/src/sync/channels/index.js.map +1 -1
  105. package/dist/src/sync/channels/utils.d.ts +15 -1
  106. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  107. package/dist/src/sync/channels/utils.js +66 -2
  108. package/dist/src/sync/channels/utils.js.map +1 -1
  109. package/dist/src/sync/index.d.ts +6 -6
  110. package/dist/src/sync/index.d.ts.map +1 -1
  111. package/dist/src/sync/index.js +5 -5
  112. package/dist/src/sync/index.js.map +1 -1
  113. package/dist/src/sync/interfaces.d.ts +4 -18
  114. package/dist/src/sync/interfaces.d.ts.map +1 -1
  115. package/dist/src/sync/mailbox.d.ts +39 -18
  116. package/dist/src/sync/mailbox.d.ts.map +1 -1
  117. package/dist/src/sync/mailbox.js +50 -20
  118. package/dist/src/sync/mailbox.js.map +1 -1
  119. package/dist/src/sync/sync-manager.d.ts +5 -13
  120. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  121. package/dist/src/sync/sync-manager.js +91 -275
  122. package/dist/src/sync/sync-manager.js.map +1 -1
  123. package/dist/src/sync/sync-operation.d.ts +1 -1
  124. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  125. package/dist/src/sync/sync-operation.js +3 -0
  126. package/dist/src/sync/sync-operation.js.map +1 -1
  127. package/dist/src/sync/types.d.ts +2 -1
  128. package/dist/src/sync/types.d.ts.map +1 -1
  129. package/dist/src/sync/types.js.map +1 -1
  130. package/dist/src/sync/utils.d.ts +19 -3
  131. package/dist/src/sync/utils.d.ts.map +1 -1
  132. package/dist/src/sync/utils.js +120 -1
  133. package/dist/src/sync/utils.js.map +1 -1
  134. package/package.json +5 -4
  135. package/dist/src/processors/relational/relational-db-processor.d.ts +0 -47
  136. package/dist/src/processors/relational/relational-db-processor.d.ts.map +0 -1
  137. package/dist/src/processors/relational/relational-db-processor.js +0 -45
  138. package/dist/src/processors/relational/relational-db-processor.js.map +0 -1
  139. package/dist/src/processors/types.d.ts +0 -71
  140. package/dist/src/processors/types.d.ts.map +0 -1
  141. package/dist/src/processors/types.js +0 -2
  142. package/dist/src/processors/types.js.map +0 -1
  143. package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
  144. package/dist/src/sync/channels/gql-channel.js.map +0 -1
  145. package/dist/src/sync/channels/polling-channel.d.ts +0 -39
  146. package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
  147. package/dist/src/sync/channels/polling-channel.js +0 -72
  148. package/dist/src/sync/channels/polling-channel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sync/types.ts"],"names":[],"mappings":"AAwCA,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,oEAAY,CAAA;IACZ,qFAAoB,CAAA;IACpB,qFAAoB,CAAA;IACpB,mEAAW,CAAA;IACX,+DAAS,CAAA;AACX,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAqCD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,KAAK;IACnB,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,KAAK;CACV,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sync/types.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,oEAAY,CAAA;IACZ,qFAAoB,CAAA;IACpB,qFAAoB,CAAA;IACpB,mEAAW,CAAA;IACX,+DAAS,CAAA;AACX,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAqCD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,KAAK;IACnB,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,KAAK;CACV,CAAC"}
@@ -1,4 +1,8 @@
1
- import type { OperationWithContext } from "../storage/interfaces.js";
1
+ import type { OperationWithContext } from "shared/document-model";
2
+ import { type OperationIndexEntry } from "../cache/operation-index-types.js";
3
+ import type { JobWriteReadyEvent } from "../events/types.js";
4
+ import type { PreparedBatch } from "./batch-aggregator.js";
5
+ import type { IMailbox } from "./mailbox.js";
2
6
  import type { ChannelHealth, RemoteFilter } from "./types.js";
3
7
  export type OperationBatch = {
4
8
  documentId: string;
@@ -6,6 +10,14 @@ export type OperationBatch = {
6
10
  scope: string;
7
11
  operations: OperationWithContext[];
8
12
  };
13
+ /**
14
+ * Trims a mailbox using the jobIds from a batch.
15
+ */
16
+ export declare function trimMailboxFromBatch(mailbox: IMailbox, batch: PreparedBatch): void;
17
+ /**
18
+ * Trims a mailbox using the ack ordinal.
19
+ */
20
+ export declare function trimMailboxFromAckOrdinal(mailbox: IMailbox, ackOrdinal: number): void;
9
21
  /**
10
22
  * Filters operations based on a remote's filter criteria.
11
23
  *
@@ -37,11 +49,15 @@ export declare function createIdleHealth(): ChannelHealth;
37
49
  * Envelopes without operations are placed at the end.
38
50
  */
39
51
  export declare function sortEnvelopesByFirstOperationTimestamp<T extends {
40
- operations?: Array<{
52
+ operations?: ReadonlyArray<{
41
53
  operation: {
42
54
  timestampUtcMs: string;
43
55
  };
44
- }> | null;
56
+ }> | null | undefined;
45
57
  }>(envelopes: T[]): T[];
46
58
  export declare function batchOperationsByDocument(operations: OperationWithContext[]): OperationBatch[];
59
+ export declare function getMaxOrdinal(operations: OperationWithContext[]): number;
60
+ export declare function filterByCollectionMembership(operations: OperationWithContext[], collectionId: string, collectionMemberships?: Record<string, string[]>): OperationWithContext[];
61
+ export declare function toOperationWithContext(entry: OperationIndexEntry): OperationWithContext;
62
+ export declare function mergeCollectionMemberships(events: JobWriteReadyEvent[]): Record<string, string[]>;
47
63
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,oBAAoB,EAAE,EAClC,MAAM,EAAE,YAAY,GACnB,oBAAoB,EAAE,CAmBxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;;;;;;;;;;GAWG;AACH;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,CAAC,SAAS;IACR,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACtE,EACD,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAWrB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAAE,GACjC,cAAc,EAAE,CAsClB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,aAAa,GACnB,IAAI,CAuBN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,MAAM,QA0BnB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,oBAAoB,EAAE,EAClC,MAAM,EAAE,YAAY,GACnB,oBAAoB,EAAE,CAmBxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;;;;;;;;;;GAWG;AACH;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,CAAC,SAAS;IACR,UAAU,CAAC,EACP,aAAa,CAAC;QAAE,SAAS,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,GACxD,IAAI,GACJ,SAAS,CAAC;CACf,EACD,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAWrB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAAE,GACjC,cAAc,EAAE,CAsClB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAKxE;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,oBAAoB,EAAE,EAClC,YAAY,EAAE,MAAM,EACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/C,oBAAoB,EAAE,CAYxB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,CAkBtB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA2C1B"}
@@ -1,3 +1,53 @@
1
+ import { driveCollectionId, } from "../cache/operation-index-types.js";
2
+ /**
3
+ * Trims a mailbox using the jobIds from a batch.
4
+ */
5
+ export function trimMailboxFromBatch(mailbox, batch) {
6
+ const toRemove = [];
7
+ // we want to guarantee:
8
+ //
9
+ // 1. sync ops are still in the inbox when marked as executed
10
+ // 2. we remove syncops as a batch after they have been executed
11
+ for (const syncOp of batch.entries) {
12
+ for (const item of mailbox.items) {
13
+ if (syncOp.event.jobId === item.jobId) {
14
+ toRemove.push(item);
15
+ break;
16
+ }
17
+ }
18
+ }
19
+ if (toRemove.length > 0) {
20
+ for (const syncOp of toRemove) {
21
+ syncOp.executed();
22
+ }
23
+ mailbox.remove(...toRemove);
24
+ }
25
+ }
26
+ /**
27
+ * Trims a mailbox using the ack ordinal.
28
+ */
29
+ export function trimMailboxFromAckOrdinal(mailbox, ackOrdinal) {
30
+ const toRemove = [];
31
+ // we want to guarantee:
32
+ //
33
+ // 1. sync ops are still in the mailbox when marked as applied
34
+ // 2. we remove syncops as a single batch
35
+ for (const syncOp of mailbox.items) {
36
+ let maxOrdinal = 0;
37
+ for (const op of syncOp.operations) {
38
+ maxOrdinal = Math.max(maxOrdinal, op.context.ordinal);
39
+ }
40
+ if (maxOrdinal <= ackOrdinal) {
41
+ toRemove.push(syncOp);
42
+ }
43
+ }
44
+ if (toRemove.length > 0) {
45
+ for (const syncOp of toRemove) {
46
+ syncOp.executed();
47
+ }
48
+ mailbox.remove(...toRemove);
49
+ }
50
+ }
1
51
  /**
2
52
  * Filters operations based on a remote's filter criteria.
3
53
  *
@@ -57,7 +107,7 @@ export function sortEnvelopesByFirstOperationTimestamp(envelopes) {
57
107
  return 1;
58
108
  if (!bTimestamp)
59
109
  return -1;
60
- return Number(aTimestamp) - Number(bTimestamp);
110
+ return new Date(aTimestamp).getTime() - new Date(bTimestamp).getTime();
61
111
  });
62
112
  }
63
113
  export function batchOperationsByDocument(operations) {
@@ -92,4 +142,73 @@ export function batchOperationsByDocument(operations) {
92
142
  flushBatch();
93
143
  return batches;
94
144
  }
145
+ export function getMaxOrdinal(operations) {
146
+ return operations.reduce((maxOrdinal, operation) => Math.max(maxOrdinal, operation.context.ordinal), 0);
147
+ }
148
+ export function filterByCollectionMembership(operations, collectionId, collectionMemberships) {
149
+ if (!collectionMemberships) {
150
+ return [];
151
+ }
152
+ return operations.filter((op) => {
153
+ const documentId = op.context.documentId;
154
+ if (!(documentId in collectionMemberships)) {
155
+ return false;
156
+ }
157
+ return collectionMemberships[documentId].includes(collectionId);
158
+ });
159
+ }
160
+ export function toOperationWithContext(entry) {
161
+ return {
162
+ operation: {
163
+ id: entry.id,
164
+ index: entry.index,
165
+ skip: entry.skip,
166
+ hash: entry.hash,
167
+ timestampUtcMs: entry.timestampUtcMs,
168
+ action: entry.action,
169
+ },
170
+ context: {
171
+ documentId: entry.documentId,
172
+ documentType: entry.documentType,
173
+ scope: entry.scope,
174
+ branch: entry.branch,
175
+ ordinal: entry.ordinal ?? 0,
176
+ },
177
+ };
178
+ }
179
+ export function mergeCollectionMemberships(events) {
180
+ const mergedMemberships = {};
181
+ for (const event of events) {
182
+ if (event.collectionMemberships) {
183
+ for (const [docId, collections] of Object.entries(event.collectionMemberships)) {
184
+ if (!(docId in mergedMemberships)) {
185
+ mergedMemberships[docId] = [];
186
+ }
187
+ for (const c of collections) {
188
+ if (!mergedMemberships[docId].includes(c)) {
189
+ mergedMemberships[docId].push(c);
190
+ }
191
+ }
192
+ }
193
+ }
194
+ for (const op of event.operations) {
195
+ const action = op.operation.action;
196
+ if (action.type !== "ADD_RELATIONSHIP") {
197
+ continue;
198
+ }
199
+ const input = action.input;
200
+ if (!input?.sourceId || !input.targetId) {
201
+ continue;
202
+ }
203
+ const collectionId = driveCollectionId(op.context.branch, input.sourceId);
204
+ if (!(input.targetId in mergedMemberships)) {
205
+ mergedMemberships[input.targetId] = [];
206
+ }
207
+ if (!mergedMemberships[input.targetId].includes(collectionId)) {
208
+ mergedMemberships[input.targetId].push(collectionId);
209
+ }
210
+ }
211
+ }
212
+ return mergedMemberships;
213
+ }
95
214
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "6.0.0-dev.42",
3
+ "version": "6.0.0-dev.44",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
@@ -22,12 +22,13 @@
22
22
  "license": "AGPL-3.0-only",
23
23
  "dependencies": {
24
24
  "@electric-sql/pglite": "0.3.15",
25
- "@sindresorhus/fnv1a": "^3.1.0",
25
+ "@sindresorhus/fnv1a": "3.1.0",
26
26
  "kysely": "0.28.11",
27
27
  "kysely-pglite-dialect": "1.2.0",
28
28
  "uuid": "^11.0.5",
29
- "document-drive": "6.0.0-dev.42",
30
- "document-model": "6.0.0-dev.42"
29
+ "shared": "0.0.0",
30
+ "document-model": "6.0.0-dev.44",
31
+ "document-drive": "6.0.0-dev.44"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@powerhousedao/analytics-engine-core": "0.5.0",
@@ -1,47 +0,0 @@
1
- import type { IRelationalDb, IRelationalDbProcessor, IRelationalQueryBuilder, OperationWithContext, ProcessorFilter, RelationalDbProcessorClass } from "@powerhousedao/reactor";
2
- declare const IS_RELATIONAL_DB_PROCESSOR: unique symbol;
3
- /**
4
- * Base class for relational db processors that require a relational database storage.
5
- * This class abstracts database initialization, migration management, and resource cleanup,
6
- * allowing derived classes to focus on business logic.
7
- */
8
- export declare abstract class RelationalDbProcessor<TDatabaseSchema = unknown> implements IRelationalDbProcessor<TDatabaseSchema> {
9
- protected _namespace: string;
10
- protected _filter: ProcessorFilter;
11
- protected relationalDb: IRelationalDb<TDatabaseSchema>;
12
- constructor(_namespace: string, _filter: ProcessorFilter, relationalDb: IRelationalDb<TDatabaseSchema>);
13
- static [IS_RELATIONAL_DB_PROCESSOR]: boolean;
14
- /**
15
- * Returns the namespace for a given drive id.
16
- * This method can be overridden by derived classes to provide a custom namespace.
17
- */
18
- static getNamespace(driveId: string): string;
19
- static query<Schema>(this: RelationalDbProcessorClass<Schema>, driveId: string, db: IRelationalDb<any>): IRelationalQueryBuilder<Schema>;
20
- /**
21
- * Processes a list of operations with context.
22
- * Called when operations match this processor's filter.
23
- */
24
- abstract onOperations(operations: OperationWithContext[]): Promise<void>;
25
- /**
26
- * Returns the filter for the processor.
27
- * This method can be overridden by derived classes to provide a custom filter.
28
- */
29
- get filter(): ProcessorFilter;
30
- /**
31
- * Returns the namespace used by the processor.
32
- */
33
- get namespace(): string;
34
- get query(): IRelationalQueryBuilder<TDatabaseSchema>;
35
- /**
36
- * Abstract method that derived classes must implement.
37
- * This method is meant to be called on subclasses to initialize and upgrade the database.
38
- */
39
- abstract initAndUpgrade(): Promise<void>;
40
- /**
41
- * Called when the processor is disconnected.
42
- * This method is meant to be overridden by subclasses to clean up resources.
43
- */
44
- abstract onDisconnect(): Promise<void>;
45
- }
46
- export {};
47
- //# sourceMappingURL=relational-db-processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relational-db-processor.d.ts","sourceRoot":"","sources":["../../../../src/processors/relational/relational-db-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAGhC,QAAA,MAAM,0BAA0B,eAA8C,CAAC;AAE/E;;;;GAIG;AACH,8BAAsB,qBAAqB,CAAC,eAAe,GAAG,OAAO,CACnE,YAAW,sBAAsB,CAAC,eAAe,CAAC;IAGhD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,OAAO,EAAE,eAAe;IAClC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;gBAF5C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;IAGxD,MAAM,CAAC,CAAC,0BAA0B,CAAC,UAAQ;IAE3C;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C,MAAM,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,EACxC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,GACrB,uBAAuB,CAAC,MAAM,CAAC;IAIlC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAExE;;;OAGG;IACH,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAEpD;IAED;;;OAGG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CACvC"}
@@ -1,45 +0,0 @@
1
- import { relationalDbToQueryBuilder } from "./utils.js";
2
- const IS_RELATIONAL_DB_PROCESSOR = Symbol.for("ph.IS_RELATIONAL_DB_PROCESSOR");
3
- /**
4
- * Base class for relational db processors that require a relational database storage.
5
- * This class abstracts database initialization, migration management, and resource cleanup,
6
- * allowing derived classes to focus on business logic.
7
- */
8
- export class RelationalDbProcessor {
9
- _namespace;
10
- _filter;
11
- relationalDb;
12
- constructor(_namespace, _filter, relationalDb) {
13
- this._namespace = _namespace;
14
- this._filter = _filter;
15
- this.relationalDb = relationalDb;
16
- }
17
- static [IS_RELATIONAL_DB_PROCESSOR] = true;
18
- /**
19
- * Returns the namespace for a given drive id.
20
- * This method can be overridden by derived classes to provide a custom namespace.
21
- */
22
- static getNamespace(driveId) {
23
- return `${this.name}_${driveId.replaceAll("-", "_")}`;
24
- }
25
- static query(driveId, db) {
26
- return db.queryNamespace(this.getNamespace(driveId));
27
- }
28
- /**
29
- * Returns the filter for the processor.
30
- * This method can be overridden by derived classes to provide a custom filter.
31
- */
32
- get filter() {
33
- return this._filter;
34
- }
35
- /**
36
- * Returns the namespace used by the processor.
37
- */
38
- get namespace() {
39
- return this._namespace;
40
- }
41
- get query() {
42
- return relationalDbToQueryBuilder(this.relationalDb);
43
- }
44
- }
45
- //# sourceMappingURL=relational-db-processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relational-db-processor.js","sourceRoot":"","sources":["../../../../src/processors/relational/relational-db-processor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,OAAgB,qBAAqB;IAI7B;IACA;IACA;IAHZ,YACY,UAAkB,EAClB,OAAwB,EACxB,YAA4C;QAF5C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAiB;QACxB,iBAAY,GAAZ,YAAY,CAAgC;IACrD,CAAC;IAEJ,MAAM,CAAC,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,CAEV,OAAe,EACf,EAAsB;QAEtB,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAQD;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC"}
@@ -1,71 +0,0 @@
1
- import type { IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
2
- import type { IRelationalDb, OperationWithContext } from "@powerhousedao/reactor";
3
- import type { PHDocumentHeader } from "document-model";
4
- export type TempProcessorAppToBeRemoved = "connect" | "switchboard";
5
- export interface IProcessorHostModule {
6
- analyticsStore: IAnalyticsStore;
7
- relationalDb: IRelationalDb;
8
- processorApp: TempProcessorAppToBeRemoved;
9
- config?: Map<string, unknown>;
10
- }
11
- /**
12
- * Filter for matching operations to processors.
13
- * All fields are optional arrays - when provided, operations must match at least one value in each specified field.
14
- * When a field is undefined or empty, it matches all values for that field.
15
- */
16
- export type ProcessorFilter = {
17
- documentType?: string[];
18
- scope?: string[];
19
- branch?: string[];
20
- documentId?: string[];
21
- };
22
- /**
23
- * Describes an object that can process operations.
24
- */
25
- export interface IProcessor {
26
- /**
27
- * Processes a list of operations with context.
28
- * Called when operations match this processor's filter.
29
- */
30
- onOperations(operations: OperationWithContext[]): Promise<void>;
31
- /**
32
- * Called when the processor is disconnected.
33
- * Used to clean up any resources allocated during processor creation.
34
- */
35
- onDisconnect(): Promise<void>;
36
- }
37
- /**
38
- * Relates a processor to its filter configuration.
39
- */
40
- export type ProcessorRecord = {
41
- processor: IProcessor;
42
- filter: ProcessorFilter;
43
- };
44
- /**
45
- * A factory function that creates processor records for a given drive.
46
- * Called once per drive when the drive is first detected or when the factory is registered.
47
- */
48
- export type ProcessorFactory = (driveHeader: PHDocumentHeader, processorApp?: TempProcessorAppToBeRemoved) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
49
- /**
50
- * Manages processor creation and destruction based on drive operations.
51
- */
52
- export interface IProcessorManager {
53
- /**
54
- * Registers a processor factory.
55
- * Immediately creates processors for all existing drives.
56
- */
57
- registerFactory(identifier: string, factory: ProcessorFactory): Promise<void>;
58
- /**
59
- * Unregisters a processor factory and disconnects all processors it created.
60
- */
61
- unregisterFactory(identifier: string): Promise<void>;
62
- /**
63
- * Gets all registered factory identifiers.
64
- */
65
- getFactoryIdentifiers(): string[];
66
- /**
67
- * Gets all processor records for a specific drive.
68
- */
69
- getProcessorsForDrive(driveId: string): ProcessorRecord[];
70
- }
71
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,2BAA2B,CAAC;IAC1C,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,YAAY,CAAC,EAAE,2BAA2B,KACvC,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC3D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gql-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gql-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import type { ISyncCursorStorage } from "../../storage/interfaces.js";
2
- import type { IChannel } from "../interfaces.js";
3
- import type { SyncOperation } from "../sync-operation.js";
4
- import { Mailbox } from "../mailbox.js";
5
- import type { SyncEnvelope } from "../types.js";
6
- /**
7
- * Channel for cursor-based polling by external clients.
8
- *
9
- * PollingChannel does NOT auto-remove operations from the outbox.
10
- * Operations remain until explicitly acknowledged via cursor
11
- * advancement through updateCursor().
12
- */
13
- export declare class PollingChannel implements IChannel {
14
- readonly inbox: Mailbox<SyncOperation>;
15
- readonly outbox: Mailbox<SyncOperation>;
16
- readonly deadLetter: Mailbox<SyncOperation>;
17
- private readonly channelId;
18
- private readonly remoteName;
19
- private readonly cursorStorage;
20
- private isShutdown;
21
- constructor(channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage);
22
- shutdown(): void;
23
- init(): Promise<void>;
24
- /**
25
- * Receives a sync envelope from a peer channel.
26
- *
27
- * @param envelope - The sync envelope to receive
28
- * @throws {PollingChannelError} If channel is shutdown
29
- */
30
- receive(envelope: SyncEnvelope): void;
31
- /**
32
- * Advances the cursor and removes acknowledged operations from outbox.
33
- * Operations with ordinal <= cursorOrdinal are considered acknowledged.
34
- *
35
- * @param cursorOrdinal - The last processed ordinal (exclusive)
36
- */
37
- updateCursor(cursorOrdinal: number): Promise<void>;
38
- }
39
- //# sourceMappingURL=polling-channel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polling-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/polling-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9D;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAU;gBAG1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB;IAYnC,QAAQ,IAAI,IAAI;IAIV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAgBrC;;;;;OAKG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD"}
@@ -1,72 +0,0 @@
1
- import { PollingChannelError } from "../errors.js";
2
- import { Mailbox } from "../mailbox.js";
3
- import { envelopesToSyncOperations } from "./utils.js";
4
- /**
5
- * Channel for cursor-based polling by external clients.
6
- *
7
- * PollingChannel does NOT auto-remove operations from the outbox.
8
- * Operations remain until explicitly acknowledged via cursor
9
- * advancement through updateCursor().
10
- */
11
- export class PollingChannel {
12
- inbox;
13
- outbox;
14
- deadLetter;
15
- channelId;
16
- remoteName;
17
- cursorStorage;
18
- isShutdown;
19
- constructor(channelId, remoteName, cursorStorage) {
20
- this.channelId = channelId;
21
- this.remoteName = remoteName;
22
- this.cursorStorage = cursorStorage;
23
- this.isShutdown = false;
24
- this.inbox = new Mailbox();
25
- this.outbox = new Mailbox();
26
- this.deadLetter = new Mailbox();
27
- }
28
- shutdown() {
29
- this.isShutdown = true;
30
- }
31
- async init() { }
32
- /**
33
- * Receives a sync envelope from a peer channel.
34
- *
35
- * @param envelope - The sync envelope to receive
36
- * @throws {PollingChannelError} If channel is shutdown
37
- */
38
- receive(envelope) {
39
- if (this.isShutdown) {
40
- throw new PollingChannelError(`Channel ${this.channelId} is shutdown and cannot receive envelopes`);
41
- }
42
- if (envelope.type === "operations" && envelope.operations) {
43
- const syncOps = envelopesToSyncOperations(envelope, this.remoteName);
44
- for (const syncOp of syncOps) {
45
- syncOp.transported();
46
- this.inbox.add(syncOp);
47
- }
48
- }
49
- }
50
- /**
51
- * Advances the cursor and removes acknowledged operations from outbox.
52
- * Operations with ordinal <= cursorOrdinal are considered acknowledged.
53
- *
54
- * @param cursorOrdinal - The last processed ordinal (exclusive)
55
- */
56
- async updateCursor(cursorOrdinal) {
57
- const cursor = {
58
- remoteName: this.remoteName,
59
- cursorOrdinal,
60
- lastSyncedAtUtcMs: Date.now(),
61
- };
62
- await this.cursorStorage.upsert(cursor);
63
- for (const op of this.outbox.items) {
64
- const maxOrdinal = Math.max(...op.operations.map((o) => o.context.ordinal));
65
- if (maxOrdinal <= cursorOrdinal) {
66
- op.executed();
67
- this.outbox.remove(op);
68
- }
69
- }
70
- }
71
- }
72
- //# sourceMappingURL=polling-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polling-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/polling-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IAChB,KAAK,CAAyB;IAC9B,MAAM,CAAyB;IAC/B,UAAU,CAAyB;IAE3B,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,aAAa,CAAqB;IAC3C,UAAU,CAAU;IAE5B,YACE,SAAiB,EACjB,UAAkB,EAClB,aAAiC;QAEjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,KAAmB,CAAC;IAE9B;;;;;OAKG;IACH,OAAO,CAAC,QAAsB;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAC3B,WAAW,IAAI,CAAC,SAAS,2CAA2C,CACrE,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,aAAqB;QACtC,MAAM,MAAM,GAAiB;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa;YACb,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;SAC9B,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAC/C,CAAC;YACF,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}