@powerhousedao/reactor 5.1.0-staging.0 → 5.2.0-dev.1
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/actions/index.d.ts +24 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +76 -0
- package/dist/src/actions/index.js.map +1 -0
- package/dist/src/cache/document-meta-cache-types.d.ts +114 -0
- package/dist/src/cache/document-meta-cache-types.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache-types.js +2 -0
- package/dist/src/cache/document-meta-cache-types.js.map +1 -0
- package/dist/src/cache/document-meta-cache.d.ts +30 -0
- package/dist/src/cache/document-meta-cache.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache.js +128 -0
- package/dist/src/cache/document-meta-cache.js.map +1 -0
- package/dist/src/cache/kysely-operation-index.d.ts +4 -2
- package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
- package/dist/src/cache/kysely-operation-index.js +67 -24
- 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 +3 -2
- package/dist/src/cache/kysely-write-cache.js.map +1 -1
- package/dist/src/cache/operation-index-types.d.ts +4 -3
- 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 +16 -4
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +122 -5
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +22 -3
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.d.ts +10 -9
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +73 -17
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/reactor-client-builder.d.ts +10 -1
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-client-builder.js +16 -1
- package/dist/src/core/reactor-client-builder.js.map +1 -1
- package/dist/src/core/reactor.d.ts +11 -10
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +78 -91
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +22 -7
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +1 -2
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +2 -2
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/events/types.d.ts +1 -0
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +3 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +10 -7
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +17 -3
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +329 -221
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/executor/types.d.ts +2 -0
- 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 +14 -5
- package/dist/src/executor/util.d.ts.map +1 -1
- package/dist/src/executor/util.js +36 -9
- package/dist/src/executor/util.js.map +1 -1
- package/dist/src/index.d.ts +12 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/console.d.ts +11 -1
- package/dist/src/logging/console.d.ts.map +1 -1
- package/dist/src/logging/console.js +45 -14
- package/dist/src/logging/console.js.map +1 -1
- package/dist/src/logging/types.d.ts +1 -0
- package/dist/src/logging/types.d.ts.map +1 -1
- package/dist/src/processors/index.d.ts +3 -0
- package/dist/src/processors/index.d.ts.map +1 -0
- package/dist/src/processors/index.js +2 -0
- package/dist/src/processors/index.js.map +1 -0
- package/dist/src/processors/processor-manager.d.ts +38 -0
- package/dist/src/processors/processor-manager.d.ts.map +1 -0
- package/dist/src/processors/processor-manager.js +165 -0
- package/dist/src/processors/processor-manager.js.map +1 -0
- package/dist/src/processors/types.d.ts +63 -0
- package/dist/src/processors/types.d.ts.map +1 -0
- package/dist/src/processors/types.js +2 -0
- package/dist/src/processors/types.js.map +1 -0
- package/dist/src/processors/utils.d.ts +10 -0
- package/dist/src/processors/utils.d.ts.map +1 -0
- package/dist/src/processors/utils.js +58 -0
- package/dist/src/processors/utils.js.map +1 -0
- package/dist/src/queue/types.d.ts +2 -0
- 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 +60 -0
- package/dist/src/read-models/base-read-model.d.ts.map +1 -0
- package/dist/src/read-models/base-read-model.js +143 -0
- package/dist/src/read-models/base-read-model.js.map +1 -0
- package/dist/src/read-models/coordinator.d.ts +3 -2
- package/dist/src/read-models/coordinator.d.ts.map +1 -1
- package/dist/src/read-models/coordinator.js +12 -13
- package/dist/src/read-models/coordinator.js.map +1 -1
- package/dist/src/read-models/document-view.d.ts +6 -7
- package/dist/src/read-models/document-view.d.ts.map +1 -1
- package/dist/src/read-models/document-view.js +18 -81
- package/dist/src/read-models/document-view.js.map +1 -1
- package/dist/src/read-models/types.d.ts +2 -1
- package/dist/src/read-models/types.d.ts.map +1 -1
- package/dist/src/registry/implementation.d.ts +42 -34
- package/dist/src/registry/implementation.d.ts.map +1 -1
- package/dist/src/registry/implementation.js +168 -48
- package/dist/src/registry/implementation.js.map +1 -1
- package/dist/src/registry/interfaces.d.ts +69 -8
- package/dist/src/registry/interfaces.d.ts.map +1 -1
- package/dist/src/shared/errors.d.ts +16 -0
- package/dist/src/shared/errors.d.ts.map +1 -1
- package/dist/src/shared/errors.js +28 -0
- package/dist/src/shared/errors.js.map +1 -1
- package/dist/src/shared/types.d.ts +4 -0
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/signer/passthrough-signer.d.ts +9 -3
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
- package/dist/src/signer/passthrough-signer.js +13 -0
- package/dist/src/signer/passthrough-signer.js.map +1 -1
- package/dist/src/signer/types.d.ts +2 -22
- package/dist/src/signer/types.d.ts.map +1 -1
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts +33 -0
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +1 -0
- package/dist/src/storage/consistency-aware-legacy-storage.js +65 -0
- package/dist/src/storage/consistency-aware-legacy-storage.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +94 -1
- package/dist/src/storage/interfaces.d.ts.map +1 -1
- package/dist/src/storage/interfaces.js +2 -2
- package/dist/src/storage/interfaces.js.map +1 -1
- package/dist/src/storage/kysely/store.d.ts +1 -0
- package/dist/src/storage/kysely/store.d.ts.map +1 -1
- package/dist/src/storage/kysely/store.js +41 -4
- package/dist/src/storage/kysely/store.js.map +1 -1
- package/dist/src/storage/kysely/sync-cursor-storage.js +2 -2
- package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js +8 -8
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
- package/dist/src/storage/kysely/types.d.ts +6 -6
- package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -1
- package/dist/src/storage/migrations/001_create_operation_table.js +2 -1
- package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.js +2 -1
- package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -1
- package/dist/src/storage/migrations/009_create_operation_index_tables.js +1 -1
- package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +1 -1
- package/dist/src/storage/migrations/010_create_sync_tables.js +5 -5
- package/dist/src/storage/migrations/010_create_sync_tables.js.map +1 -1
- package/dist/src/storage/migrations/migrator.d.ts +3 -2
- package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
- package/dist/src/storage/migrations/migrator.js +29 -6
- package/dist/src/storage/migrations/migrator.js.map +1 -1
- package/dist/src/storage/txn.d.ts.map +1 -1
- package/dist/src/storage/txn.js +2 -3
- package/dist/src/storage/txn.js.map +1 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +17 -0
- package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -0
- package/dist/src/subs/subscription-notification-read-model.js +62 -0
- package/dist/src/subs/subscription-notification-read-model.js.map +1 -0
- package/dist/src/sync/channels/composite-channel-factory.d.ts +30 -0
- package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/composite-channel-factory.js +87 -0
- package/dist/src/sync/channels/composite-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-channel-factory.d.ts +5 -2
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel-factory.js +8 -2
- package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
- package/dist/src/sync/channels/gql-channel.d.ts +28 -1
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel.js +150 -22
- package/dist/src/sync/channels/gql-channel.js.map +1 -1
- package/dist/src/sync/channels/index.d.ts +2 -1
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +2 -1
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/channels/polling-channel.d.ts +39 -0
- package/dist/src/sync/channels/polling-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/polling-channel.js +72 -0
- package/dist/src/sync/channels/polling-channel.js.map +1 -0
- package/dist/src/sync/channels/utils.d.ts +17 -2
- package/dist/src/sync/channels/utils.d.ts.map +1 -1
- package/dist/src/sync/channels/utils.js +76 -6
- package/dist/src/sync/channels/utils.js.map +1 -1
- package/dist/src/sync/errors.d.ts +1 -1
- package/dist/src/sync/errors.d.ts.map +1 -1
- package/dist/src/sync/errors.js +2 -2
- package/dist/src/sync/errors.js.map +1 -1
- package/dist/src/sync/index.d.ts +2 -2
- 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 +16 -1
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.d.ts +3 -2
- package/dist/src/sync/sync-builder.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.js +4 -4
- package/dist/src/sync/sync-builder.js.map +1 -1
- package/dist/src/sync/sync-manager.d.ts +4 -1
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +65 -8
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/utils.d.ts +19 -0
- package/dist/src/sync/utils.d.ts.map +1 -1
- package/dist/src/sync/utils.js +44 -0
- package/dist/src/sync/utils.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/sync/channels/internal-channel.d.ts +0 -57
- package/dist/src/sync/channels/internal-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/internal-channel.js +0 -106
- package/dist/src/sync/channels/internal-channel.js.map +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ChannelError } from "../errors.js";
|
|
2
2
|
import { Mailbox } from "../mailbox.js";
|
|
3
3
|
import { ChannelErrorSource } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { envelopesToSyncOperations } from "./utils.js";
|
|
5
5
|
/**
|
|
6
6
|
* GraphQL-based synchronization channel for network communication between reactors.
|
|
7
7
|
*/
|
|
8
8
|
export class GqlChannel {
|
|
9
|
+
logger;
|
|
9
10
|
inbox;
|
|
10
11
|
outbox;
|
|
11
12
|
deadLetter;
|
|
@@ -18,18 +19,21 @@ export class GqlChannel {
|
|
|
18
19
|
failureCount;
|
|
19
20
|
lastSuccessUtcMs;
|
|
20
21
|
lastFailureUtcMs;
|
|
21
|
-
constructor(channelId, remoteName, cursorStorage, config) {
|
|
22
|
+
constructor(logger, channelId, remoteName, cursorStorage, config) {
|
|
23
|
+
this.logger = logger;
|
|
22
24
|
this.channelId = channelId;
|
|
23
25
|
this.remoteName = remoteName;
|
|
24
26
|
this.cursorStorage = cursorStorage;
|
|
25
27
|
this.config = {
|
|
26
28
|
url: config.url,
|
|
27
29
|
authToken: config.authToken,
|
|
28
|
-
pollIntervalMs: config.pollIntervalMs ??
|
|
30
|
+
pollIntervalMs: config.pollIntervalMs ?? 10000,
|
|
29
31
|
retryBaseDelayMs: config.retryBaseDelayMs ?? 1000,
|
|
30
32
|
retryMaxDelayMs: config.retryMaxDelayMs ?? 300000,
|
|
31
33
|
maxFailures: config.maxFailures ?? 5,
|
|
32
34
|
fetchFn: config.fetchFn,
|
|
35
|
+
collectionId: config.collectionId,
|
|
36
|
+
filter: config.filter,
|
|
33
37
|
};
|
|
34
38
|
this.isShutdown = false;
|
|
35
39
|
this.failureCount = 0;
|
|
@@ -39,8 +43,6 @@ export class GqlChannel {
|
|
|
39
43
|
this.outbox.onAdded((syncOp) => {
|
|
40
44
|
this.handleOutboxAdded(syncOp);
|
|
41
45
|
});
|
|
42
|
-
// Start polling
|
|
43
|
-
this.startPolling();
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* Shuts down the channel and prevents further operations.
|
|
@@ -52,6 +54,13 @@ export class GqlChannel {
|
|
|
52
54
|
this.pollTimer = undefined;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Initializes the channel by registering it on the remote server and starting polling.
|
|
59
|
+
*/
|
|
60
|
+
async init() {
|
|
61
|
+
await this.touchRemoteChannel();
|
|
62
|
+
this.startPolling();
|
|
63
|
+
}
|
|
55
64
|
/**
|
|
56
65
|
* Starts the polling loop to fetch operations from the remote.
|
|
57
66
|
*/
|
|
@@ -59,11 +68,11 @@ export class GqlChannel {
|
|
|
59
68
|
if (this.isShutdown) {
|
|
60
69
|
return;
|
|
61
70
|
}
|
|
62
|
-
this.
|
|
63
|
-
|
|
71
|
+
void this.poll().then(() => {
|
|
72
|
+
this.pollTimer = setTimeout(() => {
|
|
64
73
|
this.startPolling(); // Schedule next poll
|
|
65
|
-
});
|
|
66
|
-
}
|
|
74
|
+
}, this.config.pollIntervalMs);
|
|
75
|
+
});
|
|
67
76
|
}
|
|
68
77
|
/**
|
|
69
78
|
* Polls the remote for new sync envelopes.
|
|
@@ -92,11 +101,26 @@ export class GqlChannel {
|
|
|
92
101
|
this.handlePollError(error);
|
|
93
102
|
return;
|
|
94
103
|
}
|
|
104
|
+
let maxCursorOrdinal = cursorOrdinal;
|
|
95
105
|
for (const envelope of envelopes) {
|
|
96
|
-
if (envelope.type === "operations" && envelope.operations) {
|
|
97
|
-
const
|
|
98
|
-
syncOp
|
|
99
|
-
|
|
106
|
+
if (envelope.type.toLowerCase() === "operations" && envelope.operations) {
|
|
107
|
+
const syncOps = envelopesToSyncOperations(envelope, this.remoteName);
|
|
108
|
+
for (const syncOp of syncOps) {
|
|
109
|
+
syncOp.transported();
|
|
110
|
+
this.inbox.add(syncOp);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (envelope.cursor && envelope.cursor.cursorOrdinal > maxCursorOrdinal) {
|
|
114
|
+
maxCursorOrdinal = envelope.cursor.cursorOrdinal;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (maxCursorOrdinal > cursorOrdinal) {
|
|
118
|
+
try {
|
|
119
|
+
await this.updateCursor(maxCursorOrdinal);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.handlePollError(error);
|
|
123
|
+
return;
|
|
100
124
|
}
|
|
101
125
|
}
|
|
102
126
|
this.lastSuccessUtcMs = Date.now();
|
|
@@ -106,15 +130,43 @@ export class GqlChannel {
|
|
|
106
130
|
* Handles polling errors with exponential backoff.
|
|
107
131
|
*/
|
|
108
132
|
handlePollError(error) {
|
|
133
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
134
|
+
if (err.message.includes("Channel not found")) {
|
|
135
|
+
this.recoverFromChannelNotFound();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
109
138
|
this.failureCount++;
|
|
110
139
|
this.lastFailureUtcMs = Date.now();
|
|
111
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
112
140
|
const channelError = new ChannelError(ChannelErrorSource.Inbox, err);
|
|
113
|
-
|
|
141
|
+
this.logger.error("GqlChannel poll error (@FailureCount/@MaxFailures): @Error", this.failureCount, this.config.maxFailures, channelError);
|
|
114
142
|
if (this.failureCount >= this.config.maxFailures) {
|
|
115
|
-
|
|
143
|
+
this.logger.error("GqlChannel @ChannelId exceeded failure threshold, stopping polls", this.channelId);
|
|
116
144
|
}
|
|
117
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Recovers from a "Channel not found" error by re-registering and restarting polling.
|
|
148
|
+
*/
|
|
149
|
+
recoverFromChannelNotFound() {
|
|
150
|
+
this.logger.info("GqlChannel @ChannelId not found on remote, re-registering...", this.channelId);
|
|
151
|
+
if (this.pollTimer) {
|
|
152
|
+
clearTimeout(this.pollTimer);
|
|
153
|
+
this.pollTimer = undefined;
|
|
154
|
+
}
|
|
155
|
+
void this.touchRemoteChannel()
|
|
156
|
+
.then(() => {
|
|
157
|
+
this.logger.info("GqlChannel @ChannelId re-registered successfully", this.channelId);
|
|
158
|
+
this.failureCount = 0;
|
|
159
|
+
this.startPolling();
|
|
160
|
+
})
|
|
161
|
+
.catch((recoveryError) => {
|
|
162
|
+
this.logger.error("GqlChannel @ChannelId failed to re-register: @Error", this.channelId, recoveryError);
|
|
163
|
+
this.failureCount++;
|
|
164
|
+
this.lastFailureUtcMs = Date.now();
|
|
165
|
+
this.pollTimer = setTimeout(() => {
|
|
166
|
+
this.startPolling();
|
|
167
|
+
}, this.config.pollIntervalMs);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
118
170
|
/**
|
|
119
171
|
* Queries the remote GraphQL endpoint for sync envelopes.
|
|
120
172
|
*/
|
|
@@ -133,16 +185,41 @@ export class GqlChannel {
|
|
|
133
185
|
hash
|
|
134
186
|
skip
|
|
135
187
|
error
|
|
136
|
-
resultingState
|
|
137
188
|
id
|
|
138
|
-
action
|
|
189
|
+
action {
|
|
190
|
+
id
|
|
191
|
+
type
|
|
192
|
+
timestampUtcMs
|
|
193
|
+
input
|
|
194
|
+
scope
|
|
195
|
+
attachments {
|
|
196
|
+
data
|
|
197
|
+
mimeType
|
|
198
|
+
hash
|
|
199
|
+
extension
|
|
200
|
+
fileName
|
|
201
|
+
}
|
|
202
|
+
context {
|
|
203
|
+
signer {
|
|
204
|
+
user {
|
|
205
|
+
address
|
|
206
|
+
networkId
|
|
207
|
+
chainId
|
|
208
|
+
}
|
|
209
|
+
app {
|
|
210
|
+
name
|
|
211
|
+
key
|
|
212
|
+
}
|
|
213
|
+
signatures
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
139
217
|
}
|
|
140
218
|
context {
|
|
141
219
|
documentId
|
|
142
220
|
documentType
|
|
143
221
|
scope
|
|
144
222
|
branch
|
|
145
|
-
resultingState
|
|
146
223
|
}
|
|
147
224
|
}
|
|
148
225
|
cursor {
|
|
@@ -160,6 +237,29 @@ export class GqlChannel {
|
|
|
160
237
|
const response = await this.executeGraphQL(query, variables);
|
|
161
238
|
return response.pollSyncEnvelopes;
|
|
162
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Registers or updates this channel on the remote server via GraphQL mutation.
|
|
242
|
+
*/
|
|
243
|
+
async touchRemoteChannel() {
|
|
244
|
+
const mutation = `
|
|
245
|
+
mutation TouchChannel($input: TouchChannelInput!) {
|
|
246
|
+
touchChannel(input: $input)
|
|
247
|
+
}
|
|
248
|
+
`;
|
|
249
|
+
const variables = {
|
|
250
|
+
input: {
|
|
251
|
+
id: this.channelId,
|
|
252
|
+
name: this.channelId,
|
|
253
|
+
collectionId: this.config.collectionId,
|
|
254
|
+
filter: {
|
|
255
|
+
documentId: this.config.filter.documentId,
|
|
256
|
+
scope: this.config.filter.scope,
|
|
257
|
+
branch: this.config.filter.branch,
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
await this.executeGraphQL(mutation, variables);
|
|
262
|
+
}
|
|
163
263
|
/**
|
|
164
264
|
* Handles sync operations added to the outbox by sending them to the remote.
|
|
165
265
|
*/
|
|
@@ -181,6 +281,7 @@ export class GqlChannel {
|
|
|
181
281
|
*/
|
|
182
282
|
async pushSyncOperation(syncOp) {
|
|
183
283
|
syncOp.started();
|
|
284
|
+
this.logger.debug("[PUSH]: @Operations", syncOp.operations.map((op) => `(${op.context.documentId}, ${op.context.branch}, ${op.context.scope}, ${op.operation.index})`));
|
|
184
285
|
const envelope = {
|
|
185
286
|
type: "operations",
|
|
186
287
|
channelMeta: { id: this.channelId },
|
|
@@ -201,6 +302,10 @@ export class GqlChannel {
|
|
|
201
302
|
}
|
|
202
303
|
/**
|
|
203
304
|
* Serializes a SyncEnvelope for GraphQL transport.
|
|
305
|
+
*
|
|
306
|
+
* Signatures are serialized as comma-separated strings since GraphQL schema
|
|
307
|
+
* defines them as [String!]!. Extra context fields (resultingState, ordinal)
|
|
308
|
+
* are stripped since they are not defined in OperationContextInput.
|
|
204
309
|
*/
|
|
205
310
|
serializeEnvelope(envelope) {
|
|
206
311
|
return {
|
|
@@ -213,15 +318,38 @@ export class GqlChannel {
|
|
|
213
318
|
hash: opWithContext.operation.hash,
|
|
214
319
|
skip: opWithContext.operation.skip,
|
|
215
320
|
error: opWithContext.operation.error,
|
|
216
|
-
resultingState: opWithContext.operation.resultingState,
|
|
217
321
|
id: opWithContext.operation.id,
|
|
218
|
-
action: opWithContext.operation.action,
|
|
322
|
+
action: this.serializeAction(opWithContext.operation.action),
|
|
323
|
+
},
|
|
324
|
+
context: {
|
|
325
|
+
documentId: opWithContext.context.documentId,
|
|
326
|
+
documentType: opWithContext.context.documentType,
|
|
327
|
+
scope: opWithContext.context.scope,
|
|
328
|
+
branch: opWithContext.context.branch,
|
|
219
329
|
},
|
|
220
|
-
context: opWithContext.context,
|
|
221
330
|
})),
|
|
222
331
|
cursor: envelope.cursor,
|
|
223
332
|
};
|
|
224
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Serializes an action for GraphQL transport, converting signature tuples to strings.
|
|
336
|
+
*/
|
|
337
|
+
serializeAction(action) {
|
|
338
|
+
const signer = action.context?.signer;
|
|
339
|
+
if (!signer?.signatures) {
|
|
340
|
+
return action;
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
...action,
|
|
344
|
+
context: {
|
|
345
|
+
...action.context,
|
|
346
|
+
signer: {
|
|
347
|
+
...signer,
|
|
348
|
+
signatures: signer.signatures.map((sig) => Array.isArray(sig) ? sig.join(", ") : sig),
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
}
|
|
225
353
|
/**
|
|
226
354
|
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
227
355
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAsBrD;;GAEG;AACH,MAAM,OAAO,UAAU;IACZ,KAAK,CAAyB;IAC9B,MAAM,CAAyB;IAC/B,UAAU,CAAyB;IAE3B,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,aAAa,CAAqB;IAClC,MAAM,CAAmB;IAClC,UAAU,CAAU;IACpB,SAAS,CAAkB;IAC3B,YAAY,CAAS;IACrB,gBAAgB,CAAU;IAC1B,gBAAgB,CAAU;IAElC,YACE,SAAiB,EACjB,UAAkB,EAClB,aAAiC,EACjC,MAAwB;QAExB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACjD,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,MAAM;YACjD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,qBAAqB;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAY,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAE3C,IAAI,SAAS,CAAC;QACd,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClE,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAc;QACpC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnC,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAErE,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAC1E,YAAY,CACb,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAY,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CACX,cAAc,IAAI,CAAC,SAAS,6CAA6C,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAC7B,aAAqB;QAErB,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCb,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAEvC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErB,OAAO,QAAQ,CAAC,iBAAiB,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAqB;QAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,sEAAsE;QACtE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAqB;QACnD,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;QAEF,MAAM,QAAQ,GAAG;;;;KAIhB,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;SAC3C,CAAC;QAEF,MAAM,IAAI,CAAC,cAAc,CACvB,QAAQ,EACR,SAAS,CACV,CAAC;QAEF,qEAAqE;QACrE,gDAAgD;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAsB;QAC9C,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBACvD,SAAS,EAAE;oBACT,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK;oBACpC,cAAc,EAAE,aAAa,CAAC,SAAS,CAAC,cAAc;oBACtD,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI;oBAClC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI;oBAClC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK;oBACpC,cAAc,EAAE,aAAa,CAAC,SAAS,CAAC,cAAc;oBACtD,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE;oBAC9B,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;iBACvC;gBACD,OAAO,EAAE,aAAa,CAAC,OAAO;aAC/B,CAAC,CAAC;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,KAAa,EACb,SAAmC;QAEnC,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAC7C,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxC,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,SAAS;iBACV,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAG9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,aAAqB;QACtC,MAAM,MAAM,GAAiB;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa;YACb,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;SAC9B,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,SAAS;QAMP,OAAO;YACL,KAAK,EACH,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAY;gBAC3C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC;oBACrB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,MAAM;YACd,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"gql-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PollingChannel } from "./polling-channel.js";
|
|
2
2
|
export { GqlChannel, type GqlChannelConfig } from "./gql-channel.js";
|
|
3
3
|
export { GqlChannelFactory } from "./gql-channel-factory.js";
|
|
4
|
+
export { CompositeChannelFactory } from "./composite-channel-factory.js";
|
|
4
5
|
export { envelopeToSyncOperation } from "./utils.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PollingChannel } from "./polling-channel.js";
|
|
2
2
|
export { GqlChannel } from "./gql-channel.js";
|
|
3
3
|
export { GqlChannelFactory } from "./gql-channel-factory.js";
|
|
4
|
+
export { CompositeChannelFactory } from "./composite-channel-factory.js";
|
|
4
5
|
export { envelopeToSyncOperation } from "./utils.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sync/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sync/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
2
|
+
import type { IChannel } from "../interfaces.js";
|
|
3
|
+
import type { SyncOperation } from "../sync-operation.js";
|
|
4
|
+
import { Mailbox } from "../mailbox.js";
|
|
5
|
+
import type { SyncEnvelope } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Channel for cursor-based polling by external clients.
|
|
8
|
+
*
|
|
9
|
+
* PollingChannel does NOT auto-remove operations from the outbox.
|
|
10
|
+
* Operations remain until explicitly acknowledged via cursor
|
|
11
|
+
* advancement through updateCursor().
|
|
12
|
+
*/
|
|
13
|
+
export declare class PollingChannel implements IChannel {
|
|
14
|
+
readonly inbox: Mailbox<SyncOperation>;
|
|
15
|
+
readonly outbox: Mailbox<SyncOperation>;
|
|
16
|
+
readonly deadLetter: Mailbox<SyncOperation>;
|
|
17
|
+
private readonly channelId;
|
|
18
|
+
private readonly remoteName;
|
|
19
|
+
private readonly cursorStorage;
|
|
20
|
+
private isShutdown;
|
|
21
|
+
constructor(channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage);
|
|
22
|
+
shutdown(): void;
|
|
23
|
+
init(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Receives a sync envelope from a peer channel.
|
|
26
|
+
*
|
|
27
|
+
* @param envelope - The sync envelope to receive
|
|
28
|
+
* @throws {PollingChannelError} If channel is shutdown
|
|
29
|
+
*/
|
|
30
|
+
receive(envelope: SyncEnvelope): void;
|
|
31
|
+
/**
|
|
32
|
+
* Advances the cursor and removes acknowledged operations from outbox.
|
|
33
|
+
* Operations with ordinal <= cursorOrdinal are considered acknowledged.
|
|
34
|
+
*
|
|
35
|
+
* @param cursorOrdinal - The last processed ordinal (exclusive)
|
|
36
|
+
*/
|
|
37
|
+
updateCursor(cursorOrdinal: number): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=polling-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/polling-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9D;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAU;gBAG1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB;IAYnC,QAAQ,IAAI,IAAI;IAIV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAgBrC;;;;;OAKG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { PollingChannelError } from "../errors.js";
|
|
2
|
+
import { Mailbox } from "../mailbox.js";
|
|
3
|
+
import { envelopesToSyncOperations } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Channel for cursor-based polling by external clients.
|
|
6
|
+
*
|
|
7
|
+
* PollingChannel does NOT auto-remove operations from the outbox.
|
|
8
|
+
* Operations remain until explicitly acknowledged via cursor
|
|
9
|
+
* advancement through updateCursor().
|
|
10
|
+
*/
|
|
11
|
+
export class PollingChannel {
|
|
12
|
+
inbox;
|
|
13
|
+
outbox;
|
|
14
|
+
deadLetter;
|
|
15
|
+
channelId;
|
|
16
|
+
remoteName;
|
|
17
|
+
cursorStorage;
|
|
18
|
+
isShutdown;
|
|
19
|
+
constructor(channelId, remoteName, cursorStorage) {
|
|
20
|
+
this.channelId = channelId;
|
|
21
|
+
this.remoteName = remoteName;
|
|
22
|
+
this.cursorStorage = cursorStorage;
|
|
23
|
+
this.isShutdown = false;
|
|
24
|
+
this.inbox = new Mailbox();
|
|
25
|
+
this.outbox = new Mailbox();
|
|
26
|
+
this.deadLetter = new Mailbox();
|
|
27
|
+
}
|
|
28
|
+
shutdown() {
|
|
29
|
+
this.isShutdown = true;
|
|
30
|
+
}
|
|
31
|
+
async init() { }
|
|
32
|
+
/**
|
|
33
|
+
* Receives a sync envelope from a peer channel.
|
|
34
|
+
*
|
|
35
|
+
* @param envelope - The sync envelope to receive
|
|
36
|
+
* @throws {PollingChannelError} If channel is shutdown
|
|
37
|
+
*/
|
|
38
|
+
receive(envelope) {
|
|
39
|
+
if (this.isShutdown) {
|
|
40
|
+
throw new PollingChannelError(`Channel ${this.channelId} is shutdown and cannot receive envelopes`);
|
|
41
|
+
}
|
|
42
|
+
if (envelope.type === "operations" && envelope.operations) {
|
|
43
|
+
const syncOps = envelopesToSyncOperations(envelope, this.remoteName);
|
|
44
|
+
for (const syncOp of syncOps) {
|
|
45
|
+
syncOp.transported();
|
|
46
|
+
this.inbox.add(syncOp);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Advances the cursor and removes acknowledged operations from outbox.
|
|
52
|
+
* Operations with ordinal <= cursorOrdinal are considered acknowledged.
|
|
53
|
+
*
|
|
54
|
+
* @param cursorOrdinal - The last processed ordinal (exclusive)
|
|
55
|
+
*/
|
|
56
|
+
async updateCursor(cursorOrdinal) {
|
|
57
|
+
const cursor = {
|
|
58
|
+
remoteName: this.remoteName,
|
|
59
|
+
cursorOrdinal,
|
|
60
|
+
lastSyncedAtUtcMs: Date.now(),
|
|
61
|
+
};
|
|
62
|
+
await this.cursorStorage.upsert(cursor);
|
|
63
|
+
for (const op of this.outbox.items) {
|
|
64
|
+
const maxOrdinal = Math.max(...op.operations.map((o) => o.context.ordinal));
|
|
65
|
+
if (maxOrdinal <= cursorOrdinal) {
|
|
66
|
+
op.executed();
|
|
67
|
+
this.outbox.remove(op);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=polling-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/polling-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IAChB,KAAK,CAAyB;IAC9B,MAAM,CAAyB;IAC/B,UAAU,CAAyB;IAE3B,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,aAAa,CAAqB;IAC3C,UAAU,CAAU;IAE5B,YACE,SAAiB,EACjB,UAAkB,EAClB,aAAiC;QAEjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,KAAmB,CAAC;IAE9B;;;;;OAKG;IACH,OAAO,CAAC,QAAsB;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAC3B,WAAW,IAAI,CAAC,SAAS,2CAA2C,CACrE,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,aAAqB;QACtC,MAAM,MAAM,GAAiB;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa;YACb,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;SAC9B,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAC/C,CAAC;YACF,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -4,12 +4,27 @@ import type { SyncEnvelope } from "../types.js";
|
|
|
4
4
|
* Converts a SyncEnvelope containing operations into a SyncOperation.
|
|
5
5
|
*
|
|
6
6
|
* Extracts the necessary metadata from the envelope's operations to create
|
|
7
|
-
* a sync operation that can be processed by the receiving channel.
|
|
7
|
+
* a sync operation that can be processed by the receiving channel. Also
|
|
8
|
+
* deserializes any signatures from comma-separated strings back to tuples,
|
|
9
|
+
* as GraphQL transport serializes Signature tuples for compatibility.
|
|
8
10
|
*
|
|
9
11
|
* @param envelope - The sync envelope containing operations
|
|
10
12
|
* @param remoteName - The name of the remote this sync operation is associated with
|
|
11
|
-
* @returns A new SyncOperation containing the envelope's operations
|
|
13
|
+
* @returns A new SyncOperation containing the envelope's operations with deserialized signatures
|
|
12
14
|
* @throws Error if envelope has no operations or operations array is empty
|
|
13
15
|
*/
|
|
14
16
|
export declare function envelopeToSyncOperation(envelope: SyncEnvelope, remoteName: string): SyncOperation;
|
|
17
|
+
/**
|
|
18
|
+
* Converts a SyncEnvelope containing operations into multiple SyncOperations.
|
|
19
|
+
*
|
|
20
|
+
* This function batches operations by documentId, preserving cross-document ordering.
|
|
21
|
+
* For operations [a1, a2, a3, b1, b2, a4], it returns:
|
|
22
|
+
* - SyncOperation 1: [a1, a2, a3] for doc-a
|
|
23
|
+
* - SyncOperation 2: [b1, b2] for doc-b
|
|
24
|
+
* - SyncOperation 3: [a4] for doc-a
|
|
25
|
+
*
|
|
26
|
+
* This ensures operations are grouped for efficient processing while maintaining
|
|
27
|
+
* causality across documents.
|
|
28
|
+
*/
|
|
29
|
+
export declare function envelopesToSyncOperations(envelope: SyncEnvelope, remoteName: string): SyncOperation[];
|
|
15
30
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"
|
|
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,CA2Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAqBjB"}
|
|
@@ -1,26 +1,96 @@
|
|
|
1
1
|
import { SyncOperation } from "../sync-operation.js";
|
|
2
|
+
import { batchOperationsByDocument } from "../utils.js";
|
|
2
3
|
let syncOpCounter = 0;
|
|
4
|
+
/**
|
|
5
|
+
* Deserializes a signature from a comma-separated string back to a tuple.
|
|
6
|
+
*
|
|
7
|
+
* GraphQL serializes Signature tuples as comma-separated strings for transport.
|
|
8
|
+
* This function converts them back to the expected [string, string, string, string, string] format.
|
|
9
|
+
*/
|
|
10
|
+
function deserializeSignature(sig) {
|
|
11
|
+
if (Array.isArray(sig)) {
|
|
12
|
+
return sig;
|
|
13
|
+
}
|
|
14
|
+
return sig.split(", ");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Deserializes signatures in an operation's signer context from strings back to tuples.
|
|
18
|
+
*
|
|
19
|
+
* When operations are transported via GraphQL, signatures are serialized as comma-separated
|
|
20
|
+
* strings. This function restores them to the Signature tuple format required for verification.
|
|
21
|
+
*/
|
|
22
|
+
function deserializeOperationSignatures(opWithContext) {
|
|
23
|
+
const signer = opWithContext.operation.action.context?.signer;
|
|
24
|
+
if (!signer?.signatures || signer.signatures.length === 0) {
|
|
25
|
+
return opWithContext;
|
|
26
|
+
}
|
|
27
|
+
const deserializedSignatures = signer.signatures.map(deserializeSignature);
|
|
28
|
+
const deserializedOperation = {
|
|
29
|
+
...opWithContext.operation,
|
|
30
|
+
action: {
|
|
31
|
+
...opWithContext.operation.action,
|
|
32
|
+
context: {
|
|
33
|
+
...opWithContext.operation.action.context,
|
|
34
|
+
signer: {
|
|
35
|
+
...signer,
|
|
36
|
+
signatures: deserializedSignatures,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
...opWithContext,
|
|
43
|
+
operation: deserializedOperation,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
3
46
|
/**
|
|
4
47
|
* Converts a SyncEnvelope containing operations into a SyncOperation.
|
|
5
48
|
*
|
|
6
49
|
* Extracts the necessary metadata from the envelope's operations to create
|
|
7
|
-
* a sync operation that can be processed by the receiving channel.
|
|
50
|
+
* a sync operation that can be processed by the receiving channel. Also
|
|
51
|
+
* deserializes any signatures from comma-separated strings back to tuples,
|
|
52
|
+
* as GraphQL transport serializes Signature tuples for compatibility.
|
|
8
53
|
*
|
|
9
54
|
* @param envelope - The sync envelope containing operations
|
|
10
55
|
* @param remoteName - The name of the remote this sync operation is associated with
|
|
11
|
-
* @returns A new SyncOperation containing the envelope's operations
|
|
56
|
+
* @returns A new SyncOperation containing the envelope's operations with deserialized signatures
|
|
12
57
|
* @throws Error if envelope has no operations or operations array is empty
|
|
13
58
|
*/
|
|
14
59
|
export function envelopeToSyncOperation(envelope, remoteName) {
|
|
15
60
|
if (!envelope.operations || envelope.operations.length === 0) {
|
|
16
61
|
throw new Error("Cannot create SyncOperation from envelope without operations");
|
|
17
62
|
}
|
|
18
|
-
const
|
|
19
|
-
const firstOp =
|
|
63
|
+
const deserializedOperations = envelope.operations.map(deserializeOperationSignatures);
|
|
64
|
+
const firstOp = deserializedOperations[0];
|
|
20
65
|
const documentId = firstOp.context.documentId;
|
|
21
66
|
const branch = firstOp.context.branch;
|
|
22
|
-
const scopes = [
|
|
67
|
+
const scopes = [
|
|
68
|
+
...new Set(deserializedOperations.map((op) => op.context.scope)),
|
|
69
|
+
];
|
|
23
70
|
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`;
|
|
24
|
-
return new SyncOperation(syncOpId, remoteName, documentId, scopes, branch,
|
|
71
|
+
return new SyncOperation(syncOpId, remoteName, documentId, scopes, branch, deserializedOperations);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Converts a SyncEnvelope containing operations into multiple SyncOperations.
|
|
75
|
+
*
|
|
76
|
+
* This function batches operations by documentId, preserving cross-document ordering.
|
|
77
|
+
* For operations [a1, a2, a3, b1, b2, a4], it returns:
|
|
78
|
+
* - SyncOperation 1: [a1, a2, a3] for doc-a
|
|
79
|
+
* - SyncOperation 2: [b1, b2] for doc-b
|
|
80
|
+
* - SyncOperation 3: [a4] for doc-a
|
|
81
|
+
*
|
|
82
|
+
* This ensures operations are grouped for efficient processing while maintaining
|
|
83
|
+
* causality across documents.
|
|
84
|
+
*/
|
|
85
|
+
export function envelopesToSyncOperations(envelope, remoteName) {
|
|
86
|
+
if (!envelope.operations || envelope.operations.length === 0) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
const deserializedOps = envelope.operations.map(deserializeOperationSignatures);
|
|
90
|
+
const batches = batchOperationsByDocument(deserializedOps);
|
|
91
|
+
return batches.map((batch) => {
|
|
92
|
+
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`;
|
|
93
|
+
return new SyncOperation(syncOpId, remoteName, batch.documentId, [batch.scope], batch.branch, batch.operations);
|
|
94
|
+
});
|
|
25
95
|
}
|
|
26
96
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,qBAAa,
|
|
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,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/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class PollingChannelError extends Error {
|
|
2
2
|
constructor(message) {
|
|
3
3
|
super(message);
|
|
4
|
-
this.name = "
|
|
4
|
+
this.name = "PollingChannelError";
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
export class ChannelError extends Error {
|