@powerhousedao/reactor 6.0.0-dev.105 → 6.0.0-dev.107
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/index.d.ts +4306 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9433 -0
- package/dist/index.js.map +1 -0
- package/package.json +16 -18
- package/dist/src/actions/index.d.ts +0 -24
- package/dist/src/actions/index.d.ts.map +0 -1
- package/dist/src/admin/document-integrity-service.d.ts +0 -17
- package/dist/src/admin/document-integrity-service.d.ts.map +0 -1
- package/dist/src/admin/types.d.ts +0 -30
- package/dist/src/admin/types.d.ts.map +0 -1
- package/dist/src/cache/buffer/ring-buffer.d.ts +0 -37
- package/dist/src/cache/buffer/ring-buffer.d.ts.map +0 -1
- package/dist/src/cache/collection-membership-cache.d.ts +0 -14
- package/dist/src/cache/collection-membership-cache.d.ts.map +0 -1
- package/dist/src/cache/document-meta-cache-types.d.ts +0 -114
- package/dist/src/cache/document-meta-cache-types.d.ts.map +0 -1
- package/dist/src/cache/document-meta-cache.d.ts +0 -31
- package/dist/src/cache/document-meta-cache.d.ts.map +0 -1
- package/dist/src/cache/index.d.ts +0 -3
- package/dist/src/cache/index.d.ts.map +0 -1
- package/dist/src/cache/kysely-operation-index.d.ts +0 -24
- package/dist/src/cache/kysely-operation-index.d.ts.map +0 -1
- package/dist/src/cache/kysely-write-cache.d.ts +0 -142
- package/dist/src/cache/kysely-write-cache.d.ts.map +0 -1
- package/dist/src/cache/lru/lru-tracker.d.ts +0 -15
- package/dist/src/cache/lru/lru-tracker.d.ts.map +0 -1
- package/dist/src/cache/operation-index-types.d.ts +0 -64
- package/dist/src/cache/operation-index-types.d.ts.map +0 -1
- package/dist/src/cache/write/interfaces.d.ts +0 -88
- package/dist/src/cache/write/interfaces.d.ts.map +0 -1
- package/dist/src/cache/write-cache-types.d.ts +0 -42
- package/dist/src/cache/write-cache-types.d.ts.map +0 -1
- package/dist/src/client/reactor-client.d.ts +0 -121
- package/dist/src/client/reactor-client.d.ts.map +0 -1
- package/dist/src/client/types.d.ts +0 -260
- package/dist/src/client/types.d.ts.map +0 -1
- package/dist/src/core/reactor-builder.d.ts +0 -60
- package/dist/src/core/reactor-builder.d.ts.map +0 -1
- package/dist/src/core/reactor-client-builder.d.ts +0 -53
- package/dist/src/core/reactor-client-builder.d.ts.map +0 -1
- package/dist/src/core/reactor.d.ts +0 -56
- package/dist/src/core/reactor.d.ts.map +0 -1
- package/dist/src/core/types.d.ts +0 -312
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/core/utils.d.ts +0 -95
- package/dist/src/core/utils.d.ts.map +0 -1
- package/dist/src/events/event-bus.d.ts +0 -8
- package/dist/src/events/event-bus.d.ts.map +0 -1
- package/dist/src/events/interfaces.d.ts +0 -27
- package/dist/src/events/interfaces.d.ts.map +0 -1
- package/dist/src/events/types.d.ts +0 -92
- package/dist/src/events/types.d.ts.map +0 -1
- package/dist/src/executor/document-action-handler.d.ts +0 -30
- package/dist/src/executor/document-action-handler.d.ts.map +0 -1
- package/dist/src/executor/execution-scope.d.ts +0 -44
- package/dist/src/executor/execution-scope.d.ts.map +0 -1
- package/dist/src/executor/interfaces.d.ts +0 -49
- package/dist/src/executor/interfaces.d.ts.map +0 -1
- package/dist/src/executor/signature-verifier.d.ts +0 -9
- package/dist/src/executor/signature-verifier.d.ts.map +0 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +0 -40
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +0 -1
- package/dist/src/executor/simple-job-executor.d.ts +0 -42
- package/dist/src/executor/simple-job-executor.d.ts.map +0 -1
- package/dist/src/executor/types.d.ts +0 -91
- package/dist/src/executor/types.d.ts.map +0 -1
- package/dist/src/executor/util.d.ts +0 -84
- package/dist/src/executor/util.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -56
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -20714
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts +0 -26
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +0 -1
- package/dist/src/job-tracker/index.d.ts +0 -3
- package/dist/src/job-tracker/index.d.ts.map +0 -1
- package/dist/src/job-tracker/interfaces.d.ts +0 -41
- package/dist/src/job-tracker/interfaces.d.ts.map +0 -1
- package/dist/src/logging/console.d.ts +0 -2
- package/dist/src/logging/console.d.ts.map +0 -1
- package/dist/src/logging/types.d.ts +0 -2
- package/dist/src/logging/types.d.ts.map +0 -1
- package/dist/src/processors/index.d.ts +0 -2
- package/dist/src/processors/index.d.ts.map +0 -1
- package/dist/src/processors/processor-manager.d.ts +0 -51
- package/dist/src/processors/processor-manager.d.ts.map +0 -1
- package/dist/src/processors/utils.d.ts +0 -11
- package/dist/src/processors/utils.d.ts.map +0 -1
- package/dist/src/queue/interfaces.d.ts +0 -103
- package/dist/src/queue/interfaces.d.ts.map +0 -1
- package/dist/src/queue/job-execution-handle.d.ts +0 -28
- package/dist/src/queue/job-execution-handle.d.ts.map +0 -1
- package/dist/src/queue/queue.d.ts +0 -110
- package/dist/src/queue/queue.d.ts.map +0 -1
- package/dist/src/queue/types.d.ts +0 -74
- package/dist/src/queue/types.d.ts.map +0 -1
- package/dist/src/read-models/base-read-model.d.ts +0 -62
- package/dist/src/read-models/base-read-model.d.ts.map +0 -1
- package/dist/src/read-models/coordinator.d.ts +0 -39
- package/dist/src/read-models/coordinator.d.ts.map +0 -1
- package/dist/src/read-models/document-view.d.ts +0 -27
- package/dist/src/read-models/document-view.d.ts.map +0 -1
- package/dist/src/read-models/interfaces.d.ts +0 -29
- package/dist/src/read-models/interfaces.d.ts.map +0 -1
- package/dist/src/read-models/types.d.ts +0 -63
- package/dist/src/read-models/types.d.ts.map +0 -1
- package/dist/src/registry/document-model-resolver.d.ts +0 -29
- package/dist/src/registry/document-model-resolver.d.ts.map +0 -1
- package/dist/src/registry/implementation.d.ts +0 -74
- package/dist/src/registry/implementation.d.ts.map +0 -1
- package/dist/src/registry/index.d.ts +0 -5
- package/dist/src/registry/index.d.ts.map +0 -1
- package/dist/src/registry/interfaces.d.ts +0 -108
- package/dist/src/registry/interfaces.d.ts.map +0 -1
- package/dist/src/shared/awaiter.d.ts +0 -35
- package/dist/src/shared/awaiter.d.ts.map +0 -1
- package/dist/src/shared/collect-all-pages.d.ts +0 -7
- package/dist/src/shared/collect-all-pages.d.ts.map +0 -1
- package/dist/src/shared/consistency-tracker.d.ts +0 -48
- package/dist/src/shared/consistency-tracker.d.ts.map +0 -1
- package/dist/src/shared/drive-url.d.ts +0 -15
- package/dist/src/shared/drive-url.d.ts.map +0 -1
- package/dist/src/shared/errors.d.ts +0 -50
- package/dist/src/shared/errors.d.ts.map +0 -1
- package/dist/src/shared/factories.d.ts +0 -20
- package/dist/src/shared/factories.d.ts.map +0 -1
- package/dist/src/shared/types.d.ts +0 -161
- package/dist/src/shared/types.d.ts.map +0 -1
- package/dist/src/shared/utils.d.ts +0 -3
- package/dist/src/shared/utils.d.ts.map +0 -1
- package/dist/src/signer/passthrough-signer.d.ts +0 -12
- package/dist/src/signer/passthrough-signer.d.ts.map +0 -1
- package/dist/src/signer/types.d.ts +0 -17
- package/dist/src/signer/types.d.ts.map +0 -1
- package/dist/src/storage/index.d.ts +0 -4
- package/dist/src/storage/index.d.ts.map +0 -1
- package/dist/src/storage/interfaces.d.ts +0 -574
- package/dist/src/storage/interfaces.d.ts.map +0 -1
- package/dist/src/storage/kysely/document-indexer.d.ts +0 -27
- package/dist/src/storage/kysely/document-indexer.d.ts.map +0 -1
- package/dist/src/storage/kysely/keyframe-store.d.ts +0 -24
- package/dist/src/storage/kysely/keyframe-store.d.ts.map +0 -1
- package/dist/src/storage/kysely/store.d.ts +0 -21
- package/dist/src/storage/kysely/store.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts +0 -13
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts +0 -18
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-remote-storage.d.ts +0 -13
- package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/types.d.ts +0 -157
- package/dist/src/storage/kysely/types.d.ts.map +0 -1
- package/dist/src/storage/migrations/001_create_operation_table.d.ts +0 -3
- package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +0 -3
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/003_create_document_table.d.ts +0 -3
- package/dist/src/storage/migrations/003_create_document_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +0 -3
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +0 -3
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +0 -3
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +0 -3
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts +0 -3
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +0 -3
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +0 -1
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts +0 -3
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts.map +0 -1
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +0 -3
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +0 -1
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +0 -3
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +0 -1
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts +0 -3
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts +0 -3
- package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/index.d.ts +0 -3
- package/dist/src/storage/migrations/index.d.ts.map +0 -1
- package/dist/src/storage/migrations/migrator.d.ts +0 -6
- package/dist/src/storage/migrations/migrator.d.ts.map +0 -1
- package/dist/src/storage/migrations/run-migrations.d.ts +0 -2
- package/dist/src/storage/migrations/run-migrations.d.ts.map +0 -1
- package/dist/src/storage/migrations/types.d.ts +0 -9
- package/dist/src/storage/migrations/types.d.ts.map +0 -1
- package/dist/src/storage/txn.d.ts +0 -15
- package/dist/src/storage/txn.d.ts.map +0 -1
- package/dist/src/subs/default-error-handler.d.ts +0 -13
- package/dist/src/subs/default-error-handler.d.ts.map +0 -1
- package/dist/src/subs/react-subscription-manager.d.ts +0 -45
- package/dist/src/subs/react-subscription-manager.d.ts.map +0 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +0 -18
- package/dist/src/subs/subscription-notification-read-model.d.ts.map +0 -1
- package/dist/src/subs/types.d.ts +0 -64
- package/dist/src/subs/types.d.ts.map +0 -1
- package/dist/src/sync/batch-aggregator.d.ts +0 -25
- package/dist/src/sync/batch-aggregator.d.ts.map +0 -1
- package/dist/src/sync/buffered-mailbox.d.ts +0 -37
- package/dist/src/sync/buffered-mailbox.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-req-channel.d.ts +0 -133
- package/dist/src/sync/channels/gql-req-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts +0 -32
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-res-channel.d.ts +0 -31
- package/dist/src/sync/channels/gql-res-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts +0 -13
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/index.d.ts +0 -8
- package/dist/src/sync/channels/index.d.ts.map +0 -1
- package/dist/src/sync/channels/interval-poll-timer.d.ts +0 -40
- package/dist/src/sync/channels/interval-poll-timer.d.ts.map +0 -1
- package/dist/src/sync/channels/poll-timer.d.ts +0 -14
- package/dist/src/sync/channels/poll-timer.d.ts.map +0 -1
- package/dist/src/sync/channels/utils.d.ts +0 -44
- package/dist/src/sync/channels/utils.d.ts.map +0 -1
- package/dist/src/sync/errors.d.ts +0 -16
- package/dist/src/sync/errors.d.ts.map +0 -1
- package/dist/src/sync/index.d.ts +0 -16
- package/dist/src/sync/index.d.ts.map +0 -1
- package/dist/src/sync/interfaces.d.ts +0 -203
- package/dist/src/sync/interfaces.d.ts.map +0 -1
- package/dist/src/sync/mailbox.d.ts +0 -62
- package/dist/src/sync/mailbox.d.ts.map +0 -1
- package/dist/src/sync/sync-awaiter.d.ts +0 -34
- package/dist/src/sync/sync-awaiter.d.ts.map +0 -1
- package/dist/src/sync/sync-builder.d.ts +0 -23
- package/dist/src/sync/sync-builder.d.ts.map +0 -1
- package/dist/src/sync/sync-manager.d.ts +0 -51
- package/dist/src/sync/sync-manager.d.ts.map +0 -1
- package/dist/src/sync/sync-operation.d.ts +0 -30
- package/dist/src/sync/sync-operation.d.ts.map +0 -1
- package/dist/src/sync/sync-status-tracker.d.ts +0 -31
- package/dist/src/sync/sync-status-tracker.d.ts.map +0 -1
- package/dist/src/sync/types.d.ts +0 -165
- package/dist/src/sync/types.d.ts.map +0 -1
- package/dist/src/sync/utils.d.ts +0 -71
- package/dist/src/sync/utils.d.ts.map +0 -1
- package/dist/src/utils/reshuffle.d.ts +0 -47
- package/dist/src/utils/reshuffle.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/subs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACtE;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,qBAAqB,CAAC;IACrE,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;OAOG;IACH,iBAAiB,CACf,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,EAChD,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;IAEd;;;;;;OAMG;IACH,iBAAiB,CACf,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,EACzC,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;IAEd;;;;;;;OAOG;IACH,sBAAsB,CACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EACpD,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,IAAI,CAAC;IAEd;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,sBAAsB,KAC/B,IAAI,EACT,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;CACf"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { JobFailedEvent, JobWriteReadyEvent } from "../events/types.js";
|
|
2
|
-
import type { ILogger } from "../logging/types.js";
|
|
3
|
-
export type PreparedBatch = {
|
|
4
|
-
/** Document ID -> Collection IDs that they are a part of */
|
|
5
|
-
collectionMemberships: Record<string, string[]>;
|
|
6
|
-
entries: Array<{
|
|
7
|
-
event: JobWriteReadyEvent;
|
|
8
|
-
jobDependencies: string[];
|
|
9
|
-
}>;
|
|
10
|
-
};
|
|
11
|
-
export declare class BatchAggregator {
|
|
12
|
-
private readonly logger;
|
|
13
|
-
private readonly onBatchReady;
|
|
14
|
-
private queue;
|
|
15
|
-
private processing;
|
|
16
|
-
private readonly pendingBatches;
|
|
17
|
-
constructor(logger: ILogger, onBatchReady: (batch: PreparedBatch) => Promise<void>);
|
|
18
|
-
enqueueWriteReady(event: JobWriteReadyEvent): Promise<void>;
|
|
19
|
-
handleJobFailed(event: JobFailedEvent): Promise<void>;
|
|
20
|
-
clear(): void;
|
|
21
|
-
private processQueue;
|
|
22
|
-
private handleWriteReady;
|
|
23
|
-
private prepareBatch;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=batch-aggregator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-aggregator.d.ts","sourceRoot":"","sources":["../../../src/sync/batch-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,kBAAkB,CAAC;QAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;CACJ,CAAC;AAQF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IACvE,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;gBAGrE,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC;IAMjD,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3D,KAAK,IAAI,IAAI;YAKC,YAAY;YAyBZ,gBAAgB;IA2B9B,OAAO,CAAC,YAAY;CAmBrB"}
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
-
advanceOrdinal(ordinal: number): void;
|
|
19
|
-
get items(): ReadonlyArray<SyncOperation>;
|
|
20
|
-
get ackOrdinal(): number;
|
|
21
|
-
get latestOrdinal(): number;
|
|
22
|
-
get(id: string): SyncOperation | undefined;
|
|
23
|
-
add(...items: SyncOperation[]): void;
|
|
24
|
-
remove(...items: SyncOperation[]): void;
|
|
25
|
-
onAdded(callback: MailboxCallback): void;
|
|
26
|
-
onRemoved(callback: MailboxCallback): void;
|
|
27
|
-
pause(): void;
|
|
28
|
-
resume(): void;
|
|
29
|
-
isPaused(): boolean;
|
|
30
|
-
flush(): void;
|
|
31
|
-
private scheduleAddedFlush;
|
|
32
|
-
private scheduleRemovedFlush;
|
|
33
|
-
private flushAdded;
|
|
34
|
-
private flushRemoved;
|
|
35
|
-
private invokeCallbacks;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=buffered-mailbox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC,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"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import type { IOperationIndex } from "../../cache/operation-index-types.js";
|
|
2
|
-
import type { ILogger } from "../../logging/types.js";
|
|
3
|
-
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
4
|
-
import type { ConnectionStateChangeCallback, IChannel } from "../interfaces.js";
|
|
5
|
-
import { type IMailbox } from "../mailbox.js";
|
|
6
|
-
import type { ConnectionStateSnapshot, JwtHandler, RemoteFilter } from "../types.js";
|
|
7
|
-
import type { IPollTimer } from "./poll-timer.js";
|
|
8
|
-
/**
|
|
9
|
-
* Configuration parameters for GqlChannel
|
|
10
|
-
*/
|
|
11
|
-
export type GqlChannelConfig = {
|
|
12
|
-
/** The GraphQL endpoint URL */
|
|
13
|
-
url: string;
|
|
14
|
-
/** Dynamic JWT token handler for generating fresh tokens per-request */
|
|
15
|
-
jwtHandler?: JwtHandler;
|
|
16
|
-
/** Custom fetch function for testing (default: global fetch) */
|
|
17
|
-
fetchFn?: typeof fetch;
|
|
18
|
-
/** Collection ID to synchronize */
|
|
19
|
-
collectionId: string;
|
|
20
|
-
/** Filter to apply to operations */
|
|
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;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* GraphQL-based synchronization channel for network communication between reactors.
|
|
29
|
-
*/
|
|
30
|
-
export declare class GqlRequestChannel implements IChannel {
|
|
31
|
-
private readonly logger;
|
|
32
|
-
readonly inbox: IMailbox;
|
|
33
|
-
readonly outbox: IMailbox;
|
|
34
|
-
readonly deadLetter: IMailbox;
|
|
35
|
-
readonly config: GqlChannelConfig;
|
|
36
|
-
private readonly bufferedOutbox;
|
|
37
|
-
private readonly channelId;
|
|
38
|
-
private readonly remoteName;
|
|
39
|
-
private readonly cursorStorage;
|
|
40
|
-
private readonly operationIndex;
|
|
41
|
-
private readonly pollTimer;
|
|
42
|
-
private readonly abortController;
|
|
43
|
-
private isShutdown;
|
|
44
|
-
private failureCount;
|
|
45
|
-
private lastSuccessUtcMs?;
|
|
46
|
-
private lastFailureUtcMs?;
|
|
47
|
-
private lastPersistedInboxOrdinal;
|
|
48
|
-
private lastPersistedOutboxOrdinal;
|
|
49
|
-
private pushFailureCount;
|
|
50
|
-
private pushRetryTimer;
|
|
51
|
-
private pushBlocked;
|
|
52
|
-
private isPushing;
|
|
53
|
-
private pendingDrain;
|
|
54
|
-
private connectionState;
|
|
55
|
-
private readonly connectionStateCallbacks;
|
|
56
|
-
constructor(logger: ILogger, channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage, config: GqlChannelConfig, operationIndex: IOperationIndex, pollTimer: IPollTimer);
|
|
57
|
-
/**
|
|
58
|
-
* Shuts down the channel and prevents further operations.
|
|
59
|
-
*/
|
|
60
|
-
shutdown(): Promise<void>;
|
|
61
|
-
getConnectionState(): ConnectionStateSnapshot;
|
|
62
|
-
onConnectionStateChange(callback: ConnectionStateChangeCallback): () => void;
|
|
63
|
-
/**
|
|
64
|
-
* Initializes the channel by registering it on the remote server and starting polling.
|
|
65
|
-
*/
|
|
66
|
-
init(): Promise<void>;
|
|
67
|
-
private transitionConnectionState;
|
|
68
|
-
/**
|
|
69
|
-
* Polls the remote for new sync envelopes.
|
|
70
|
-
*/
|
|
71
|
-
private poll;
|
|
72
|
-
/**
|
|
73
|
-
* Handles dead letters reported by the remote server.
|
|
74
|
-
* Creates local dead letter SyncOperations so the channel quiesces.
|
|
75
|
-
*/
|
|
76
|
-
private handleRemoteDeadLetters;
|
|
77
|
-
/**
|
|
78
|
-
* Handles polling errors with error classification.
|
|
79
|
-
* Returns true if the error was handled (caller should not rethrow).
|
|
80
|
-
*/
|
|
81
|
-
private handlePollError;
|
|
82
|
-
/**
|
|
83
|
-
* Recovers from a "Channel not found" error by re-registering and restarting polling.
|
|
84
|
-
* Self-retries with backoff instead of restarting the poll timer on failure.
|
|
85
|
-
*/
|
|
86
|
-
private recoverFromChannelNotFound;
|
|
87
|
-
/**
|
|
88
|
-
* Queries the remote GraphQL endpoint for sync envelopes.
|
|
89
|
-
*/
|
|
90
|
-
private pollSyncEnvelopes;
|
|
91
|
-
/**
|
|
92
|
-
* Registers or updates this channel on the remote server via GraphQL mutation.
|
|
93
|
-
* Returns the remote's ack ordinal so the client can trim its outbox.
|
|
94
|
-
*/
|
|
95
|
-
private touchRemoteChannel;
|
|
96
|
-
/**
|
|
97
|
-
* Fire-and-forget push with retry on recoverable errors.
|
|
98
|
-
* On success, clears push blocked state. On recoverable error, blocks
|
|
99
|
-
* further pushes and schedules a retry. On unrecoverable error, moves
|
|
100
|
-
* ops to deadLetter.
|
|
101
|
-
*/
|
|
102
|
-
private attemptPush;
|
|
103
|
-
/**
|
|
104
|
-
* Schedules a retry of all current outbox items using exponential backoff.
|
|
105
|
-
*/
|
|
106
|
-
private schedulePushRetry;
|
|
107
|
-
/**
|
|
108
|
-
* Drains pending outbox items that arrived while a push was in-flight.
|
|
109
|
-
* Server-side action.id dedup handles any overlap with the previous push.
|
|
110
|
-
*/
|
|
111
|
-
private drainOutbox;
|
|
112
|
-
/**
|
|
113
|
-
* Classifies an error as recoverable or unrecoverable based on its type.
|
|
114
|
-
* Recoverable errors are transient and worth retrying (network, 5xx, parse).
|
|
115
|
-
* Unrecoverable errors will not self-heal (auth, client errors, GraphQL rejections).
|
|
116
|
-
*/
|
|
117
|
-
private classifyError;
|
|
118
|
-
/**
|
|
119
|
-
* Pushes multiple sync operations to the remote via a single GraphQL mutation.
|
|
120
|
-
* Creates one SyncEnvelope per SyncOperation with key/dependsOn for batch ordering.
|
|
121
|
-
*/
|
|
122
|
-
private pushSyncOperations;
|
|
123
|
-
/**
|
|
124
|
-
* Gets the authorization header value using jwtHandler.
|
|
125
|
-
*/
|
|
126
|
-
private getAuthorizationHeader;
|
|
127
|
-
/**
|
|
128
|
-
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
129
|
-
*/
|
|
130
|
-
private executeGraphQL;
|
|
131
|
-
get poller(): IPollTimer;
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=gql-req-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql-req-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-req-channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { IOperationIndex } from "../../cache/operation-index-types.js";
|
|
2
|
-
import type { ILogger } from "../../logging/types.js";
|
|
3
|
-
import type { IQueue } from "../../queue/interfaces.js";
|
|
4
|
-
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
5
|
-
import type { IChannel, IChannelFactory } from "../interfaces.js";
|
|
6
|
-
import type { ChannelConfig, JwtHandler, RemoteFilter } from "../types.js";
|
|
7
|
-
/**
|
|
8
|
-
* Factory for creating GqlRequestChannel instances.
|
|
9
|
-
*
|
|
10
|
-
* Extracts GraphQL-specific configuration from ChannelConfig.parameters and
|
|
11
|
-
* instantiates GqlRequestChannel instances for network-based synchronization.
|
|
12
|
-
*
|
|
13
|
-
* The optional jwtHandler enables dynamic JWT token generation per-request,
|
|
14
|
-
* which is useful for short-lived tokens with audience-specific claims.
|
|
15
|
-
*/
|
|
16
|
-
export declare class GqlRequestChannelFactory implements IChannelFactory {
|
|
17
|
-
private readonly logger;
|
|
18
|
-
private readonly jwtHandler?;
|
|
19
|
-
private readonly queue;
|
|
20
|
-
constructor(logger: ILogger, jwtHandler: JwtHandler | undefined, queue: IQueue);
|
|
21
|
-
/**
|
|
22
|
-
* Creates a new GqlRequestChannel instance with the given configuration.
|
|
23
|
-
* See GqlChannelConfig for the expected parameters.
|
|
24
|
-
*
|
|
25
|
-
* @param config - Channel configuration including type and parameters
|
|
26
|
-
* @param cursorStorage - Storage for persisting synchronization cursors
|
|
27
|
-
* @param operationIndex - Operation index for querying timestamps
|
|
28
|
-
* @returns A new GqlRequestChannel instance
|
|
29
|
-
*/
|
|
30
|
-
instance(remoteId: string, remoteName: string, config: ChannelConfig, cursorStorage: ISyncCursorStorage, collectionId: string, filter: RemoteFilter, operationIndex: IOperationIndex): IChannel;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=gql-request-channel-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql-request-channel-factory.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-request-channel-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3E;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAG7B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,KAAK,EAAE,MAAM;IAOf;;;;;;;;OAQG;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;CAgGZ"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { ILogger } from "../../logging/types.js";
|
|
2
|
-
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
3
|
-
import type { ConnectionStateChangeCallback, IChannel } from "../interfaces.js";
|
|
4
|
-
import { Mailbox } from "../mailbox.js";
|
|
5
|
-
import type { ConnectionStateSnapshot } from "../types.js";
|
|
6
|
-
/**
|
|
7
|
-
* This class is used server-side to accumulate inbox + outbox operations.
|
|
8
|
-
*
|
|
9
|
-
* In general, the resolvers are responsible for updating mailboxes.
|
|
10
|
-
*/
|
|
11
|
-
export declare class GqlResponseChannel implements IChannel {
|
|
12
|
-
private readonly logger;
|
|
13
|
-
readonly inbox: Mailbox;
|
|
14
|
-
readonly outbox: Mailbox;
|
|
15
|
-
readonly deadLetter: Mailbox;
|
|
16
|
-
private readonly channelId;
|
|
17
|
-
private readonly remoteName;
|
|
18
|
-
private readonly cursorStorage;
|
|
19
|
-
private isShutdown;
|
|
20
|
-
private lastPersistedInboxOrdinal;
|
|
21
|
-
private lastPersistedOutboxOrdinal;
|
|
22
|
-
private connectionState;
|
|
23
|
-
private readonly connectionStateCallbacks;
|
|
24
|
-
constructor(logger: ILogger, channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage);
|
|
25
|
-
shutdown(): Promise<void>;
|
|
26
|
-
getConnectionState(): ConnectionStateSnapshot;
|
|
27
|
-
onConnectionStateChange(callback: ConnectionStateChangeCallback): () => void;
|
|
28
|
-
private transitionConnectionState;
|
|
29
|
-
init(): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=gql-res-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql-res-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-res-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAmB,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG5E;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,QAAQ;IAgB/C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B,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;IAC5B,OAAO,CAAC,yBAAyB,CAAa;IAC9C,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAC7B;gBAGO,MAAM,EAAE,OAAO,EAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB;IAyDnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,kBAAkB,IAAI,uBAAuB;IAW7C,uBAAuB,CAAC,QAAQ,EAAE,6BAA6B,GAAG,MAAM,IAAI;IAO5E,OAAO,CAAC,yBAAyB;IAgB3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { ILogger } from "../../logging/types.js";
|
|
2
|
-
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
3
|
-
import type { IChannel, IChannelFactory } from "../interfaces.js";
|
|
4
|
-
import type { ChannelConfig } from "../types.js";
|
|
5
|
-
/**
|
|
6
|
-
* Factory for creating GqlResponseChannel instances.
|
|
7
|
-
*/
|
|
8
|
-
export declare class GqlResponseChannelFactory implements IChannelFactory {
|
|
9
|
-
private readonly logger;
|
|
10
|
-
constructor(logger: ILogger);
|
|
11
|
-
instance(remoteId: string, remoteName: string, config: ChannelConfig, cursorStorage: ISyncCursorStorage): IChannel;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=gql-response-channel-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql-response-channel-factory.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-response-channel-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,MAAM,EAAE,OAAO;IAI3B,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,kBAAkB,GAChC,QAAQ;CAQZ"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { GqlRequestChannelFactory } from "./gql-request-channel-factory.js";
|
|
2
|
-
export { GqlResponseChannelFactory } from "./gql-response-channel-factory.js";
|
|
3
|
-
export { GqlRequestChannel, type GqlChannelConfig } from "./gql-req-channel.js";
|
|
4
|
-
export { GqlResponseChannel } from "./gql-res-channel.js";
|
|
5
|
-
export { IntervalPollTimer, calculateBackoffDelay, type PollTimerConfig, } from "./interval-poll-timer.js";
|
|
6
|
-
export { type IPollTimer } from "./poll-timer.js";
|
|
7
|
-
export { envelopeToSyncOperation } from "./utils.js";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { IQueue } from "../../queue/interfaces.js";
|
|
2
|
-
import type { IPollTimer } from "./poll-timer.js";
|
|
3
|
-
export type PollTimerConfig = {
|
|
4
|
-
intervalMs: number;
|
|
5
|
-
maxQueueDepth: number;
|
|
6
|
-
backpressureCheckIntervalMs: number;
|
|
7
|
-
retryBaseDelayMs: number;
|
|
8
|
-
retryMaxDelayMs: number;
|
|
9
|
-
};
|
|
10
|
-
export declare function calculateBackoffDelay(consecutiveFailures: number, retryBaseDelayMs: number, retryMaxDelayMs: number, random: number): number;
|
|
11
|
-
/**
|
|
12
|
-
* Default poll timer using setTimeout.
|
|
13
|
-
* Waits for delegate completion before scheduling next tick.
|
|
14
|
-
* Checks queue depth and defers polling when backpressure is detected.
|
|
15
|
-
*/
|
|
16
|
-
export declare class IntervalPollTimer implements IPollTimer {
|
|
17
|
-
private delegate;
|
|
18
|
-
private timer;
|
|
19
|
-
private running;
|
|
20
|
-
private paused;
|
|
21
|
-
private consecutiveFailures;
|
|
22
|
-
private readonly queue;
|
|
23
|
-
private readonly config;
|
|
24
|
-
constructor(queue: IQueue, config?: Partial<PollTimerConfig>);
|
|
25
|
-
setDelegate(delegate: () => Promise<void>): void;
|
|
26
|
-
start(): void;
|
|
27
|
-
stop(): void;
|
|
28
|
-
private tick;
|
|
29
|
-
private scheduleNext;
|
|
30
|
-
private scheduleRetry;
|
|
31
|
-
private scheduleBackpressureRecheck;
|
|
32
|
-
pause(): void;
|
|
33
|
-
resume(): void;
|
|
34
|
-
triggerNow(): void;
|
|
35
|
-
isPaused(): boolean;
|
|
36
|
-
isRunning(): boolean;
|
|
37
|
-
getIntervalMs(): number;
|
|
38
|
-
setIntervalMs(ms: number): void;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=interval-poll-timer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interval-poll-timer.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/interval-poll-timer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAUF,wBAAgB,qBAAqB,CACnC,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,MAAM,CAMR;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAQhE,WAAW,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhD,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,IAAI;IA6BZ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,2BAA2B;IAQnC,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,IAAI;IAOd,UAAU,IAAI,IAAI;IAMlB,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,MAAM;IAIvB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGhC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { Action } from "document-model";
|
|
2
|
-
import { SyncOperation } from "../sync-operation.js";
|
|
3
|
-
import { type SyncEnvelope } from "../types.js";
|
|
4
|
-
/**
|
|
5
|
-
* Serializes an action for GraphQL transport, converting signature tuples to strings.
|
|
6
|
-
*/
|
|
7
|
-
export declare function serializeAction(action: Action): unknown;
|
|
8
|
-
/**
|
|
9
|
-
* Serializes a SyncEnvelope for GraphQL transport.
|
|
10
|
-
*
|
|
11
|
-
* Signatures are serialized as comma-separated strings since GraphQL schema
|
|
12
|
-
* defines them as [String!]!. The resultingState context field is stripped
|
|
13
|
-
* since it is not defined in OperationContextInput.
|
|
14
|
-
*/
|
|
15
|
-
export declare function serializeEnvelope(envelope: SyncEnvelope): unknown;
|
|
16
|
-
/**
|
|
17
|
-
* Converts a SyncEnvelope containing operations into a SyncOperation.
|
|
18
|
-
*
|
|
19
|
-
* Extracts the necessary metadata from the envelope's operations to create
|
|
20
|
-
* a sync operation that can be processed by the receiving channel. Also
|
|
21
|
-
* deserializes any signatures from comma-separated strings back to tuples,
|
|
22
|
-
* as GraphQL transport serializes Signature tuples for compatibility.
|
|
23
|
-
*
|
|
24
|
-
* @param envelope - The sync envelope containing operations
|
|
25
|
-
* @param remoteName - The name of the remote this sync operation is associated with
|
|
26
|
-
* @returns A new SyncOperation containing the envelope's operations with deserialized signatures
|
|
27
|
-
* @throws Error if envelope has no operations or operations array is empty
|
|
28
|
-
*/
|
|
29
|
-
export declare function envelopeToSyncOperation(envelope: SyncEnvelope, remoteName: string): SyncOperation;
|
|
30
|
-
/**
|
|
31
|
-
* Converts a SyncEnvelope containing operations into multiple SyncOperations.
|
|
32
|
-
*
|
|
33
|
-
* This function batches operations by documentId, preserving cross-document ordering.
|
|
34
|
-
* For operations [a1, a2, a3, b1, b2, a4], it returns:
|
|
35
|
-
* - SyncOperation 1: [a1, a2, a3] for doc-a
|
|
36
|
-
* - SyncOperation 2: [b1, b2] for doc-b
|
|
37
|
-
* - SyncOperation 3: [a4] for doc-a
|
|
38
|
-
*
|
|
39
|
-
* This ensures operations are grouped for efficient processing while maintaining
|
|
40
|
-
* causality across documents.
|
|
41
|
-
*/
|
|
42
|
-
export declare function envelopesToSyncOperations(envelope: SyncEnvelope, remoteName: string): SyncOperation[];
|
|
43
|
-
export declare const getLatestAppliedOrdinal: (syncOps: SyncOperation[]) => number;
|
|
44
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAwB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAKrE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAkBvD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CA0BjE;AAmDD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,CA6Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAuBjB;AAED,eAAO,MAAM,uBAAuB,GAAI,SAAS,aAAa,EAAE,KAAG,MAUlE,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ChannelErrorSource } from "./types.js";
|
|
2
|
-
export type GraphQLRequestErrorCategory = "network" | "http" | "parse" | "graphql" | "missing-data";
|
|
3
|
-
export declare class GraphQLRequestError extends Error {
|
|
4
|
-
readonly statusCode: number | undefined;
|
|
5
|
-
readonly category: GraphQLRequestErrorCategory;
|
|
6
|
-
constructor(message: string, category: GraphQLRequestErrorCategory, statusCode?: number);
|
|
7
|
-
}
|
|
8
|
-
export declare class PollingChannelError extends Error {
|
|
9
|
-
constructor(message: string);
|
|
10
|
-
}
|
|
11
|
-
export declare class ChannelError extends Error {
|
|
12
|
-
source: ChannelErrorSource;
|
|
13
|
-
error: Error;
|
|
14
|
-
constructor(source: ChannelErrorSource, error: Error);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/sync/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,2BAA2B,GACnC,SAAS,GACT,MAAM,GACN,OAAO,GACP,SAAS,GACT,cAAc,CAAC;AAEnB,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;gBAG7C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,2BAA2B,EACrC,UAAU,CAAC,EAAE,MAAM;CAOtB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;gBAED,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK;CAMrD"}
|
package/dist/src/sync/index.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type { ConnectionStateChangeCallback, IChannel, IChannelFactory, ISyncManager, Remote, } from "./interfaces.js";
|
|
2
|
-
export type { ShutdownStatus } from "../shared/types.js";
|
|
3
|
-
export type { ChannelConfig, ChannelHealth, ChannelMeta, ConnectionState, ConnectionStateChangedEvent, ConnectionStateSnapshot, DeadLetterAddedEvent, JwtHandler, RemoteCursor, RemoteFilter, RemoteOptions, RemoteRecord, RemoteStatus, SyncEnvelope, SyncEnvelopeType, SyncFailedEvent, SyncOperationErrorType, SyncPendingEvent, SyncResult, SyncResultError, SyncResultStatus, SyncSucceededEvent, } from "./types.js";
|
|
4
|
-
export { ChannelErrorSource, ChannelScheme, SyncEventTypes, SyncOperationStatus, } from "./types.js";
|
|
5
|
-
export { BufferedMailbox } from "./buffered-mailbox.js";
|
|
6
|
-
export { Mailbox, type IMailbox } from "./mailbox.js";
|
|
7
|
-
export { SyncOperation, SyncOperationAggregateError, } from "./sync-operation.js";
|
|
8
|
-
export { ChannelError, PollingChannelError } from "./errors.js";
|
|
9
|
-
export { GqlRequestChannel, GqlRequestChannelFactory, GqlResponseChannel, GqlResponseChannelFactory, IntervalPollTimer, type GqlChannelConfig, type IPollTimer, } from "./channels/index.js";
|
|
10
|
-
export { SyncBuilder } from "./sync-builder.js";
|
|
11
|
-
export { SyncManager } from "./sync-manager.js";
|
|
12
|
-
export { SyncStatus, SyncStatusTracker } from "./sync-status-tracker.js";
|
|
13
|
-
export type { ISyncStatusTracker, SyncStatusChangeCallback, } from "./sync-status-tracker.js";
|
|
14
|
-
export { batchOperationsByDocument, consolidateSyncOperations, createIdleHealth, filterOperations, sortEnvelopesByFirstOperationTimestamp, trimMailboxFromAckOrdinal, } from "./utils.js";
|
|
15
|
-
export type { OperationBatch } from "./utils.js";
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,6BAA6B,EAC7B,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,WAAW,EACX,eAAe,EACf,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,aAAa,EACb,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,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;AAChD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACV,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sCAAsC,EACtC,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|