@powerhousedao/reactor 6.0.0-dev.3 → 6.0.0-dev.30
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.
- package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
- package/dist/src/cache/document-meta-cache.js +4 -4
- package/dist/src/cache/document-meta-cache.js.map +1 -1
- package/dist/src/cache/kysely-operation-index.d.ts +3 -1
- package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
- package/dist/src/cache/kysely-operation-index.js +31 -4
- package/dist/src/cache/kysely-operation-index.js.map +1 -1
- package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
- package/dist/src/cache/kysely-write-cache.js +11 -11
- package/dist/src/cache/kysely-write-cache.js.map +1 -1
- package/dist/src/cache/operation-index-types.d.ts +3 -1
- package/dist/src/cache/operation-index-types.d.ts.map +1 -1
- package/dist/src/cache/operation-index-types.js.map +1 -1
- package/dist/src/client/reactor-client.d.ts +10 -8
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +37 -23
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +15 -6
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/client/types.js.map +1 -1
- package/dist/src/core/reactor-builder.d.ts +3 -0
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +51 -11
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/reactor-client-builder.d.ts +3 -2
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-client-builder.js +13 -4
- package/dist/src/core/reactor-client-builder.js.map +1 -1
- package/dist/src/core/reactor.d.ts +17 -78
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +109 -556
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +32 -24
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +6 -1
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +22 -6
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/events/types.d.ts +26 -8
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +7 -5
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +21 -8
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +24 -9
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
- package/dist/src/job-tracker/in-memory-job-tracker.js +18 -18
- package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
- package/dist/src/job-tracker/interfaces.d.ts +3 -1
- package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
- package/dist/src/logging/console.d.ts +1 -22
- package/dist/src/logging/console.d.ts.map +1 -1
- package/dist/src/logging/console.js +1 -107
- package/dist/src/logging/console.js.map +1 -1
- package/dist/src/logging/types.d.ts +1 -11
- package/dist/src/logging/types.d.ts.map +1 -1
- package/dist/src/processors/utils.d.ts.map +1 -1
- package/dist/src/processors/utils.js +2 -1
- package/dist/src/processors/utils.js.map +1 -1
- package/dist/src/read-models/base-read-model.js +4 -4
- package/dist/src/read-models/base-read-model.js.map +1 -1
- package/dist/src/read-models/coordinator.d.ts +2 -2
- package/dist/src/read-models/coordinator.d.ts.map +1 -1
- package/dist/src/read-models/coordinator.js +8 -8
- package/dist/src/read-models/coordinator.js.map +1 -1
- package/dist/src/read-models/document-view.d.ts +5 -2
- package/dist/src/read-models/document-view.d.ts.map +1 -1
- package/dist/src/read-models/document-view.js +130 -48
- package/dist/src/read-models/document-view.js.map +1 -1
- package/dist/src/shared/awaiter.d.ts +2 -2
- package/dist/src/shared/awaiter.d.ts.map +1 -1
- package/dist/src/shared/awaiter.js +11 -11
- package/dist/src/shared/awaiter.js.map +1 -1
- package/dist/src/shared/collect-all-pages.d.ts +7 -0
- package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
- package/dist/src/shared/collect-all-pages.js +17 -0
- package/dist/src/shared/collect-all-pages.js.map +1 -0
- package/dist/src/shared/drive-url.d.ts +15 -0
- package/dist/src/shared/drive-url.d.ts.map +1 -0
- package/dist/src/shared/drive-url.js +17 -0
- package/dist/src/shared/drive-url.js.map +1 -0
- package/dist/src/shared/factories.d.ts +6 -2
- package/dist/src/shared/factories.d.ts.map +1 -1
- package/dist/src/shared/factories.js +10 -2
- package/dist/src/shared/factories.js.map +1 -1
- package/dist/src/shared/types.d.ts +17 -4
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js +4 -4
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/signer/passthrough-signer.d.ts +1 -1
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
- package/dist/src/signer/passthrough-signer.js +1 -3
- package/dist/src/signer/passthrough-signer.js.map +1 -1
- package/dist/src/storage/interfaces.d.ts +52 -94
- package/dist/src/storage/interfaces.d.ts.map +1 -1
- package/dist/src/storage/interfaces.js.map +1 -1
- package/dist/src/storage/kysely/document-indexer.d.ts +6 -6
- package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
- package/dist/src/storage/kysely/document-indexer.js +123 -52
- package/dist/src/storage/kysely/document-indexer.js.map +1 -1
- package/dist/src/storage/kysely/store.d.ts +4 -3
- package/dist/src/storage/kysely/store.d.ts.map +1 -1
- package/dist/src/storage/kysely/store.js +52 -21
- package/dist/src/storage/kysely/store.js.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +1 -1
- package/dist/src/subs/subscription-notification-read-model.js +1 -1
- package/dist/src/sync/channels/composite-channel-factory.d.ts +9 -3
- package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -1
- package/dist/src/sync/channels/composite-channel-factory.js +16 -12
- package/dist/src/sync/channels/composite-channel-factory.js.map +1 -1
- package/dist/src/sync/channels/gql-channel-factory.d.ts +9 -3
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel-factory.js +14 -10
- package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
- package/dist/src/sync/channels/gql-channel.d.ts +13 -12
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel.js +45 -33
- package/dist/src/sync/channels/gql-channel.js.map +1 -1
- package/dist/src/sync/channels/index.d.ts +2 -0
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +2 -0
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/channels/interval-poll-timer.d.ts +18 -0
- package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
- package/dist/src/sync/channels/interval-poll-timer.js +43 -0
- package/dist/src/sync/channels/interval-poll-timer.js.map +1 -0
- package/dist/src/sync/channels/poll-timer.d.ts +14 -0
- package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
- package/dist/src/sync/channels/poll-timer.js +2 -0
- package/dist/src/sync/channels/poll-timer.js.map +1 -0
- package/dist/src/sync/channels/utils.d.ts.map +1 -1
- package/dist/src/sync/channels/utils.js +2 -2
- package/dist/src/sync/channels/utils.js.map +1 -1
- package/dist/src/sync/index.d.ts +3 -3
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +2 -2
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/interfaces.d.ts +14 -2
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/sync-awaiter.d.ts +34 -0
- package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
- package/dist/src/sync/sync-awaiter.js +124 -0
- package/dist/src/sync/sync-awaiter.js.map +1 -0
- package/dist/src/sync/sync-manager.d.ts +6 -2
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +95 -15
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/sync-operation.d.ts +2 -1
- package/dist/src/sync/sync-operation.d.ts.map +1 -1
- package/dist/src/sync/sync-operation.js +3 -1
- package/dist/src/sync/sync-operation.js.map +1 -1
- package/dist/src/sync/types.d.ts +71 -1
- package/dist/src/sync/types.d.ts.map +1 -1
- package/dist/src/sync/types.js +10 -0
- package/dist/src/sync/types.js.map +1 -1
- package/dist/src/utils/reshuffle.d.ts +15 -5
- package/dist/src/utils/reshuffle.d.ts.map +1 -1
- package/dist/src/utils/reshuffle.js +29 -6
- package/dist/src/utils/reshuffle.js.map +1 -1
- package/package.json +6 -7
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
- package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
- package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IPollTimer } from "./poll-timer.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default poll timer using setTimeout.
|
|
4
|
+
* Waits for delegate completion before scheduling next tick.
|
|
5
|
+
*/
|
|
6
|
+
export declare class IntervalPollTimer implements IPollTimer {
|
|
7
|
+
private readonly intervalMs;
|
|
8
|
+
private delegate;
|
|
9
|
+
private timer;
|
|
10
|
+
private running;
|
|
11
|
+
constructor(intervalMs: number);
|
|
12
|
+
setDelegate(delegate: () => Promise<void>): void;
|
|
13
|
+
start(): void;
|
|
14
|
+
stop(): void;
|
|
15
|
+
private tick;
|
|
16
|
+
private scheduleNext;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=interval-poll-timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-poll-timer.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/interval-poll-timer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAKtC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,OAAO,CAAU;gBAEI,UAAU,EAAE,MAAM;IAI/C,WAAW,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhD,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default poll timer using setTimeout.
|
|
3
|
+
* Waits for delegate completion before scheduling next tick.
|
|
4
|
+
*/
|
|
5
|
+
export class IntervalPollTimer {
|
|
6
|
+
intervalMs;
|
|
7
|
+
delegate;
|
|
8
|
+
timer;
|
|
9
|
+
running;
|
|
10
|
+
constructor(intervalMs) {
|
|
11
|
+
this.intervalMs = intervalMs;
|
|
12
|
+
this.running = false;
|
|
13
|
+
}
|
|
14
|
+
setDelegate(delegate) {
|
|
15
|
+
this.delegate = delegate;
|
|
16
|
+
}
|
|
17
|
+
start() {
|
|
18
|
+
this.running = true;
|
|
19
|
+
this.tick();
|
|
20
|
+
}
|
|
21
|
+
stop() {
|
|
22
|
+
this.running = false;
|
|
23
|
+
if (this.timer) {
|
|
24
|
+
clearTimeout(this.timer);
|
|
25
|
+
this.timer = undefined;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
tick() {
|
|
29
|
+
if (!this.delegate || !this.running)
|
|
30
|
+
return;
|
|
31
|
+
void this.delegate()
|
|
32
|
+
.then(() => this.scheduleNext())
|
|
33
|
+
.catch(() => {
|
|
34
|
+
// Delegate errors are not propagated; timer stops on error
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
scheduleNext() {
|
|
38
|
+
if (!this.running)
|
|
39
|
+
return;
|
|
40
|
+
this.timer = setTimeout(() => this.tick(), this.intervalMs);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=interval-poll-timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-poll-timer.js","sourceRoot":"","sources":["../../../../src/sync/channels/interval-poll-timer.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAKC;IAJrB,QAAQ,CAAoC;IAC5C,KAAK,CAA6B;IAClC,OAAO,CAAU;IAEzB,YAA6B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,QAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC5C,KAAK,IAAI,CAAC,QAAQ,EAAE;aACjB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;aAC/B,KAAK,CAAC,GAAG,EAAE;YACV,2DAA2D;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer that controls when polling occurs.
|
|
3
|
+
* GqlChannel registers a delegate; the timer invokes it when appropriate.
|
|
4
|
+
* The delegate returns a Promise; timer waits for completion before scheduling next tick.
|
|
5
|
+
*/
|
|
6
|
+
export type IPollTimer = {
|
|
7
|
+
/** Register the delegate to be called on each tick. Returns Promise that timer awaits. */
|
|
8
|
+
setDelegate: (delegate: () => Promise<void>) => void;
|
|
9
|
+
/** Start the timer (begins calling delegate periodically) */
|
|
10
|
+
start: () => void;
|
|
11
|
+
/** Stop the timer */
|
|
12
|
+
stop: () => void;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=poll-timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll-timer.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/poll-timer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,0FAA0F;IAC1F,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAErD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,qBAAqB;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll-timer.js","sourceRoot":"","sources":["../../../../src/sync/channels/poll-timer.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsDhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsDhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,CA4Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAsBjB"}
|
|
@@ -68,7 +68,7 @@ export function envelopeToSyncOperation(envelope, remoteName) {
|
|
|
68
68
|
...new Set(deserializedOperations.map((op) => op.context.scope)),
|
|
69
69
|
];
|
|
70
70
|
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`;
|
|
71
|
-
return new SyncOperation(syncOpId, remoteName, documentId, scopes, branch, deserializedOperations);
|
|
71
|
+
return new SyncOperation(syncOpId, "", remoteName, documentId, scopes, branch, deserializedOperations);
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* Converts a SyncEnvelope containing operations into multiple SyncOperations.
|
|
@@ -90,7 +90,7 @@ export function envelopesToSyncOperations(envelope, remoteName) {
|
|
|
90
90
|
const batches = batchOperationsByDocument(deserializedOps);
|
|
91
91
|
return batches.map((batch) => {
|
|
92
92
|
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`;
|
|
93
|
-
return new SyncOperation(syncOpId, remoteName, batch.documentId, [batch.scope], batch.branch, batch.operations);
|
|
93
|
+
return new SyncOperation(syncOpId, "", remoteName, batch.documentId, [batch.scope], batch.branch, batch.operations);
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/sync/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export type { IChannel, IChannelFactory, ISyncManager, Remote, } from "./interfaces.js";
|
|
2
2
|
export type { ShutdownStatus } from "../shared/types.js";
|
|
3
|
-
export type { ChannelConfig, ChannelHealth, SyncOperationErrorType, RemoteFilter, RemoteOptions, RemoteRecord, RemoteCursor, RemoteStatus, SyncEnvelope, SyncEnvelopeType, ChannelMeta, } from "./types.js";
|
|
4
|
-
export { ChannelErrorSource, SyncOperationStatus } from "./types.js";
|
|
3
|
+
export type { ChannelConfig, ChannelHealth, JwtHandler, SyncOperationErrorType, RemoteFilter, RemoteOptions, RemoteRecord, RemoteCursor, RemoteStatus, SyncEnvelope, SyncEnvelopeType, ChannelMeta, SyncPendingEvent, SyncSucceededEvent, SyncFailedEvent, SyncResult, SyncResultStatus, SyncResultError, } from "./types.js";
|
|
4
|
+
export { ChannelErrorSource, SyncEventTypes, SyncOperationStatus, } from "./types.js";
|
|
5
5
|
export { SyncOperation, SyncOperationAggregateError, } from "./sync-operation.js";
|
|
6
6
|
export { Mailbox, type MailboxItem } from "./mailbox.js";
|
|
7
7
|
export { ChannelError, PollingChannelError } from "./errors.js";
|
|
8
|
-
export { PollingChannel, GqlChannelFactory, CompositeChannelFactory, } from "./channels/index.js";
|
|
8
|
+
export { PollingChannel, GqlChannel, GqlChannelFactory, CompositeChannelFactory, type GqlChannelConfig, type IPollTimer, } from "./channels/index.js";
|
|
9
9
|
export { SyncManager } from "./sync-manager.js";
|
|
10
10
|
export { SyncBuilder } from "./sync-builder.js";
|
|
11
11
|
export { createIdleHealth, filterOperations } from "./utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,YAAY,EACV,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,YAAY,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/src/sync/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ChannelErrorSource, SyncOperationStatus } from "./types.js";
|
|
1
|
+
export { ChannelErrorSource, SyncEventTypes, SyncOperationStatus, } from "./types.js";
|
|
2
2
|
export { SyncOperation, SyncOperationAggregateError, } from "./sync-operation.js";
|
|
3
3
|
export { Mailbox } from "./mailbox.js";
|
|
4
4
|
export { ChannelError, PollingChannelError } from "./errors.js";
|
|
5
|
-
export { PollingChannel, GqlChannelFactory, CompositeChannelFactory, } from "./channels/index.js";
|
|
5
|
+
export { PollingChannel, GqlChannel, GqlChannelFactory, CompositeChannelFactory, } from "./channels/index.js";
|
|
6
6
|
export { SyncManager } from "./sync-manager.js";
|
|
7
7
|
export { SyncBuilder } from "./sync-builder.js";
|
|
8
8
|
export { createIdleHealth, filterOperations } from "./utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sync/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sync/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,uBAAuB,GAGxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -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
5
|
import type { Mailbox } from "./mailbox.js";
|
|
5
|
-
import type { ChannelConfig, RemoteFilter, RemoteOptions } from "./types.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
|
*
|
|
@@ -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,
|
|
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,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,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,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;;;;;;;;;;;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"}
|
|
@@ -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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"}
|
|
@@ -5,7 +5,7 @@ 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;
|
|
@@ -16,6 +16,8 @@ export declare class SyncManager implements ISyncManager {
|
|
|
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?;
|
|
21
23
|
loadJobs: Map<string, JobInfo>;
|
|
@@ -28,10 +30,12 @@ export declare class SyncManager implements ISyncManager {
|
|
|
28
30
|
private backfillOutbox;
|
|
29
31
|
remove(name: string): Promise<void>;
|
|
30
32
|
list(): Remote[];
|
|
33
|
+
waitForSync(jobId: string, signal?: AbortSignal): Promise<SyncResult>;
|
|
31
34
|
private wireChannelCallbacks;
|
|
32
|
-
private
|
|
35
|
+
private handleWriteReady;
|
|
33
36
|
private handleInboxJob;
|
|
34
37
|
private handleOutboxJob;
|
|
35
38
|
private applyInboxJob;
|
|
39
|
+
private markSyncOpCompleted;
|
|
36
40
|
}
|
|
37
41
|
//# 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;
|
|
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;AAEzD,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;AAG7E,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EAKb,UAAU,EAEX,MAAM,YAAY,CAAC;AAsBpB,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,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,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;IAkBf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8C9B,QAAQ,IAAI,cAAc;IA6B1B,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,aAA4C,EACrD,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC;YAwEJ,cAAc;IA6DtB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,IAAI,IAAI,MAAM,EAAE;IAIhB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,gBAAgB;IAwExB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;YAUT,aAAa;IAuD3B,OAAO,CAAC,mBAAmB;CAyC5B"}
|