@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.
- package/dist/src/cache/collection-membership-cache.d.ts +13 -0
- package/dist/src/cache/collection-membership-cache.d.ts.map +1 -0
- package/dist/src/cache/collection-membership-cache.js +33 -0
- package/dist/src/cache/collection-membership-cache.js.map +1 -0
- package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
- package/dist/src/cache/document-meta-cache.js +6 -5
- package/dist/src/cache/document-meta-cache.js.map +1 -1
- package/dist/src/cache/kysely-operation-index.d.ts +6 -1
- package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
- package/dist/src/cache/kysely-operation-index.js +102 -7
- package/dist/src/cache/kysely-operation-index.js.map +1 -1
- package/dist/src/cache/kysely-write-cache.d.ts +9 -2
- package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
- package/dist/src/cache/kysely-write-cache.js +38 -15
- package/dist/src/cache/kysely-write-cache.js.map +1 -1
- package/dist/src/cache/operation-index-types.d.ts +16 -2
- 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/cache/write/interfaces.d.ts +7 -2
- package/dist/src/cache/write/interfaces.d.ts.map +1 -1
- package/dist/src/client/reactor-client.d.ts +13 -10
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +134 -43
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +25 -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 +23 -7
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +99 -24
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/reactor-client-builder.d.ts +5 -4
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-client-builder.js +14 -5
- package/dist/src/core/reactor-client-builder.js.map +1 -1
- package/dist/src/core/reactor.d.ts +20 -80
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +235 -576
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +64 -28
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +39 -3
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +63 -9
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/events/types.d.ts +35 -10
- 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/document-action-handler.d.ts +37 -0
- package/dist/src/executor/document-action-handler.d.ts.map +1 -0
- package/dist/src/executor/document-action-handler.js +356 -0
- package/dist/src/executor/document-action-handler.js.map +1 -0
- package/dist/src/executor/signature-verifier.d.ts +9 -0
- package/dist/src/executor/signature-verifier.d.ts.map +1 -0
- package/dist/src/executor/signature-verifier.js +70 -0
- package/dist/src/executor/signature-verifier.js.map +1 -0
- package/dist/src/executor/simple-job-executor-manager.d.ts +6 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +125 -13
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +6 -46
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +113 -588
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/executor/types.d.ts +1 -3
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/executor/types.js.map +1 -1
- package/dist/src/executor/util.d.ts +12 -2
- package/dist/src/executor/util.d.ts.map +1 -1
- package/dist/src/executor/util.js +47 -1
- package/dist/src/executor/util.js.map +1 -1
- package/dist/src/index.d.ts +11 -9
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -6
- 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 +20 -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/index.d.ts +1 -1
- package/dist/src/processors/index.d.ts.map +1 -1
- package/dist/src/processors/index.js.map +1 -1
- package/dist/src/processors/processor-manager.d.ts +2 -2
- package/dist/src/processors/processor-manager.d.ts.map +1 -1
- package/dist/src/processors/processor-manager.js.map +1 -1
- package/dist/src/processors/relational/types.d.ts +2 -0
- package/dist/src/processors/relational/types.d.ts.map +1 -0
- package/dist/src/processors/relational/types.js +2 -0
- package/dist/src/processors/relational/types.js.map +1 -0
- package/dist/src/processors/relational/utils.d.ts +2 -0
- package/dist/src/processors/relational/utils.d.ts.map +1 -0
- package/dist/src/processors/relational/utils.js +2 -0
- package/dist/src/processors/relational/utils.js.map +1 -0
- package/dist/src/processors/utils.d.ts +2 -2
- 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/queue/job-execution-handle.d.ts +3 -0
- package/dist/src/queue/job-execution-handle.d.ts.map +1 -1
- package/dist/src/queue/job-execution-handle.js +9 -0
- package/dist/src/queue/job-execution-handle.js.map +1 -1
- package/dist/src/queue/queue.d.ts +30 -1
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js +110 -1
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +4 -3
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/read-models/base-read-model.d.ts +1 -1
- package/dist/src/read-models/base-read-model.d.ts.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 +6 -3
- 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/read-models/interfaces.d.ts +1 -1
- package/dist/src/read-models/interfaces.d.ts.map +1 -1
- package/dist/src/registry/document-model-resolver.d.ts +29 -0
- package/dist/src/registry/document-model-resolver.d.ts.map +1 -0
- package/dist/src/registry/document-model-resolver.js +81 -0
- package/dist/src/registry/document-model-resolver.js.map +1 -0
- package/dist/src/registry/implementation.d.ts +4 -0
- package/dist/src/registry/implementation.d.ts.map +1 -1
- package/dist/src/registry/implementation.js +10 -0
- package/dist/src/registry/implementation.js.map +1 -1
- package/dist/src/registry/index.d.ts +3 -1
- package/dist/src/registry/index.d.ts.map +1 -1
- package/dist/src/registry/index.js +1 -0
- package/dist/src/registry/index.js.map +1 -1
- package/dist/src/registry/interfaces.d.ts +8 -0
- package/dist/src/registry/interfaces.d.ts.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/errors.d.ts +9 -0
- package/dist/src/shared/errors.d.ts.map +1 -1
- package/dist/src/shared/errors.js +18 -0
- package/dist/src/shared/errors.js.map +1 -1
- 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 +32 -6
- 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 +238 -124
- package/dist/src/storage/interfaces.d.ts.map +1 -1
- package/dist/src/storage/interfaces.js +10 -0
- package/dist/src/storage/interfaces.js.map +1 -1
- package/dist/src/storage/kysely/document-indexer.d.ts +8 -7
- 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 +5 -4
- 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-cursor-storage.d.ts +1 -1
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -1
- package/dist/src/storage/kysely/sync-cursor-storage.js +6 -2
- package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts +17 -0
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts.map +1 -0
- package/dist/src/storage/kysely/sync-dead-letter-storage.js +110 -0
- package/dist/src/storage/kysely/sync-dead-letter-storage.js.map +1 -0
- 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/storage/kysely/types.d.ts +22 -0
- package/dist/src/storage/kysely/types.d.ts.map +1 -1
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +3 -0
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +1 -0
- package/dist/src/storage/migrations/011_add_cursor_type_column.js +29 -0
- package/dist/src/storage/migrations/011_add_cursor_type_column.js.map +1 -0
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +3 -0
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +1 -0
- package/dist/src/storage/migrations/012_add_source_remote_column.js +7 -0
- package/dist/src/storage/migrations/012_add_source_remote_column.js.map +1 -0
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts +3 -0
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.js +24 -0
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.js.map +1 -0
- package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
- package/dist/src/storage/migrations/migrator.js +6 -0
- package/dist/src/storage/migrations/migrator.js.map +1 -1
- package/dist/src/subs/default-error-handler.d.ts.map +1 -1
- package/dist/src/subs/default-error-handler.js.map +1 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +3 -2
- package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -1
- package/dist/src/subs/subscription-notification-read-model.js +1 -1
- package/dist/src/subs/subscription-notification-read-model.js.map +1 -1
- package/dist/src/sync/batch-aggregator.d.ts +25 -0
- package/dist/src/sync/batch-aggregator.d.ts.map +1 -0
- package/dist/src/sync/batch-aggregator.js +94 -0
- package/dist/src/sync/batch-aggregator.js.map +1 -0
- package/dist/src/sync/buffered-mailbox.d.ts +36 -0
- package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
- package/dist/src/sync/buffered-mailbox.js +164 -0
- package/dist/src/sync/buffered-mailbox.js.map +1 -0
- package/dist/src/sync/channels/{gql-channel.d.ts → gql-req-channel.d.ts} +49 -42
- package/dist/src/sync/channels/gql-req-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-req-channel.js +548 -0
- package/dist/src/sync/channels/gql-req-channel.js.map +1 -0
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts +32 -0
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-request-channel-factory.js +105 -0
- package/dist/src/sync/channels/gql-request-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-res-channel.d.ts +25 -0
- package/dist/src/sync/channels/gql-res-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-res-channel.js +79 -0
- package/dist/src/sync/channels/gql-res-channel.js.map +1 -0
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts +13 -0
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-response-channel-factory.js +14 -0
- package/dist/src/sync/channels/gql-response-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/index.d.ts +6 -4
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +6 -4
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/channels/interval-poll-timer.d.ts +40 -0
- package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
- package/dist/src/sync/channels/interval-poll-timer.js +123 -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 +15 -1
- package/dist/src/sync/channels/utils.d.ts.map +1 -1
- package/dist/src/sync/channels/utils.js +67 -2
- package/dist/src/sync/channels/utils.js.map +1 -1
- package/dist/src/sync/index.d.ts +10 -6
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +7 -5
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/interfaces.d.ts +34 -21
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/mailbox.d.ts +51 -12
- package/dist/src/sync/mailbox.d.ts.map +1 -1
- package/dist/src/sync/mailbox.js +89 -6
- package/dist/src/sync/mailbox.js.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-builder.d.ts +5 -1
- package/dist/src/sync/sync-builder.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.js +14 -1
- package/dist/src/sync/sync-builder.js.map +1 -1
- package/dist/src/sync/sync-manager.d.ts +21 -8
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +274 -93
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/sync-operation.d.ts +4 -2
- package/dist/src/sync/sync-operation.d.ts.map +1 -1
- package/dist/src/sync/sync-operation.js +8 -1
- package/dist/src/sync/sync-operation.js.map +1 -1
- package/dist/src/sync/sync-status-tracker.d.ts +31 -0
- package/dist/src/sync/sync-status-tracker.d.ts.map +1 -0
- package/dist/src/sync/sync-status-tracker.js +137 -0
- package/dist/src/sync/sync-status-tracker.js.map +1 -0
- package/dist/src/sync/types.d.ts +79 -2
- package/dist/src/sync/types.d.ts.map +1 -1
- package/dist/src/sync/types.js +15 -0
- package/dist/src/sync/types.js.map +1 -1
- package/dist/src/sync/utils.d.ts +37 -2
- package/dist/src/sync/utils.d.ts.map +1 -1
- package/dist/src/sync/utils.js +205 -0
- package/dist/src/sync/utils.js.map +1 -1
- package/dist/src/utils/reshuffle.d.ts +22 -5
- package/dist/src/utils/reshuffle.d.ts.map +1 -1
- package/dist/src/utils/reshuffle.js +50 -6
- package/dist/src/utils/reshuffle.js.map +1 -1
- package/package.json +12 -15
- package/dist/src/processors/types.d.ts +0 -63
- package/dist/src/processors/types.d.ts.map +0 -1
- package/dist/src/processors/types.js +0 -2
- package/dist/src/processors/types.js.map +0 -1
- 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
- package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -30
- package/dist/src/sync/channels/composite-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/composite-channel-factory.js +0 -87
- package/dist/src/sync/channels/composite-channel-factory.js.map +0 -1
- package/dist/src/sync/channels/gql-channel-factory.d.ts +0 -25
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-channel-factory.js +0 -76
- package/dist/src/sync/channels/gql-channel-factory.js.map +0 -1
- package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-channel.js +0 -423
- package/dist/src/sync/channels/gql-channel.js.map +0 -1
- package/dist/src/sync/channels/polling-channel.d.ts +0 -39
- package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/polling-channel.js +0 -72
- 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 {
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
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
|
-
/**
|
|
14
|
-
|
|
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
|
|
30
|
+
export declare class GqlRequestChannel implements IChannel {
|
|
34
31
|
private readonly logger;
|
|
35
|
-
readonly inbox:
|
|
36
|
-
readonly outbox:
|
|
37
|
-
readonly deadLetter:
|
|
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
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
91
|
+
private attemptPush;
|
|
84
92
|
/**
|
|
85
|
-
*
|
|
93
|
+
* Schedules a retry of all current outbox items using exponential backoff.
|
|
86
94
|
*/
|
|
87
|
-
private
|
|
95
|
+
private schedulePushRetry;
|
|
88
96
|
/**
|
|
89
|
-
*
|
|
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
|
|
100
|
+
private isRecoverablePushError;
|
|
96
101
|
/**
|
|
97
|
-
*
|
|
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
|
|
105
|
+
private pushSyncOperations;
|
|
100
106
|
/**
|
|
101
|
-
*
|
|
107
|
+
* Gets the authorization header value using jwtHandler.
|
|
102
108
|
*/
|
|
103
|
-
private
|
|
109
|
+
private getAuthorizationHeader;
|
|
104
110
|
/**
|
|
105
|
-
*
|
|
111
|
+
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
106
112
|
*/
|
|
107
|
-
|
|
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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"}
|