document-drive 1.29.4-dev.4 → 1.29.5-dev.0
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/server/base-server.d.ts +1 -0
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +94 -52
- package/dist/src/server/listener/listener-manager.d.ts +1 -1
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
- package/dist/src/server/listener/listener-manager.js +3 -4
- package/dist/src/server/listener/transmitter/pull-responder.d.ts +1 -2
- package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.js +57 -47
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/server/sync-manager.js +13 -5
- package/dist/src/utils/logger.d.ts +1 -1
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -8,6 +8,7 @@ import { type ICache } from "../cache/types.js";
|
|
|
8
8
|
import { OperationError, type SynchronizationUnitNotFoundError } from "./error.js";
|
|
9
9
|
import { type AddOperationOptions, type Constructor, type CreateDocumentInput, type DocumentDriveServerOptions, type DriveEvents, type DriveInput, type DriveOperationResult, type GetDocumentOptions, type GetStrandsOptions, type IBaseDocumentDriveServer, type IEventEmitter, type IListenerManager, type IOperationResult, type ISynchronizationManager, type Mixin, type OperationUpdate, type RemoteDriveAccessLevel, type RemoteDriveOptions, type SignalResult, type SyncStatus, type SyncUnitStatusObject, type SynchronizationUnit, type SynchronizationUnitQuery } from "./types.js";
|
|
10
10
|
export declare class BaseDocumentDriveServer implements IBaseDocumentDriveServer, IDefaultDrivesManager {
|
|
11
|
+
private logger;
|
|
11
12
|
private documentModelModules;
|
|
12
13
|
private storage;
|
|
13
14
|
private documentStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { isActionJob, isOperationJob, } from "#queue/types";
|
|
|
4
4
|
import { ReadModeServer } from "#read-mode/server";
|
|
5
5
|
import { DefaultDrivesManager, } from "#utils/default-drives-manager";
|
|
6
6
|
import { requestPublicDrive } from "#utils/graphql";
|
|
7
|
-
import { logger } from "#utils/logger";
|
|
8
7
|
import { generateUUID, isDocumentDrive, runAsapAsync } from "#utils/misc";
|
|
9
8
|
import { RunAsap } from "#utils/run-asap";
|
|
9
|
+
import { childLogger, } from "document-drive";
|
|
10
10
|
import { attachBranch, garbageCollect, garbageCollectDocumentOperations, groupOperationsByScope, merge, precedes, removeExistingOperations, replayDocument, reshuffleByTimestamp, skipHeaderOperations, sortOperations, } from "document-model";
|
|
11
11
|
import { ClientError } from "graphql-request";
|
|
12
12
|
import { ConflictOperationError, DriveAlreadyExistsError, OperationError, } from "./error.js";
|
|
@@ -15,6 +15,7 @@ import { SwitchboardPushTransmitter } from "./listener/transmitter/switchboard-p
|
|
|
15
15
|
import { DefaultListenerManagerOptions, } from "./types.js";
|
|
16
16
|
import { filterOperationsByRevision, isAtRevision } from "./utils.js";
|
|
17
17
|
export class BaseDocumentDriveServer {
|
|
18
|
+
logger = childLogger(["BaseDocumentDriveServer"]);
|
|
18
19
|
// external dependencies
|
|
19
20
|
documentModelModules;
|
|
20
21
|
storage;
|
|
@@ -95,20 +96,20 @@ export class BaseDocumentDriveServer {
|
|
|
95
96
|
async _initialize() {
|
|
96
97
|
await this.listenerManager.initialize(this.handleListenerError);
|
|
97
98
|
await this.queueManager.init(this.queueDelegate, (error) => {
|
|
98
|
-
logger.error(`Error initializing queue manager`, error);
|
|
99
|
+
this.logger.error(`Error initializing queue manager`, error);
|
|
99
100
|
errors.push(error);
|
|
100
101
|
});
|
|
101
102
|
try {
|
|
102
103
|
await this.defaultDrivesManager.removeOldremoteDrives();
|
|
103
104
|
}
|
|
104
105
|
catch (error) {
|
|
105
|
-
logger.error(error);
|
|
106
|
+
this.logger.error(error);
|
|
106
107
|
}
|
|
107
108
|
const errors = [];
|
|
108
109
|
const drives = await this.getDrives();
|
|
109
110
|
for (const drive of drives) {
|
|
110
111
|
await this._initializeDrive(drive).catch((error) => {
|
|
111
|
-
logger.error(`Error initializing drive ${drive}`, error);
|
|
112
|
+
this.logger.error(`Error initializing drive ${drive}`, error);
|
|
112
113
|
errors.push(error);
|
|
113
114
|
});
|
|
114
115
|
}
|
|
@@ -138,7 +139,7 @@ export class BaseDocumentDriveServer {
|
|
|
138
139
|
return source.type === "local" ? "push" : "pull";
|
|
139
140
|
}
|
|
140
141
|
handleListenerError(error, driveId, listener) {
|
|
141
|
-
logger.error(`Listener ${listener.listener.label ?? listener.listener.listenerId} error:`, error);
|
|
142
|
+
this.logger.error(`Listener ${listener.listener.label ?? listener.listener.listenerId} error:`, error);
|
|
142
143
|
const status = error instanceof OperationError ? error.status : "ERROR";
|
|
143
144
|
this.synchronizationManager.updateSyncStatus(driveId, { push: status }, error);
|
|
144
145
|
}
|
|
@@ -209,10 +210,10 @@ export class BaseDocumentDriveServer {
|
|
|
209
210
|
for (const revision of syncUnitRevisions) {
|
|
210
211
|
this.listenerManager
|
|
211
212
|
.updateListenerRevision(pushListener.listenerId, driveId, revision.syncId, revision.revision)
|
|
212
|
-
.catch(logger.error);
|
|
213
|
+
.catch(this.logger.error);
|
|
213
214
|
}
|
|
214
215
|
})
|
|
215
|
-
.catch(logger.error);
|
|
216
|
+
.catch(this.logger.error);
|
|
216
217
|
}
|
|
217
218
|
}
|
|
218
219
|
});
|
|
@@ -236,19 +237,19 @@ export class BaseDocumentDriveServer {
|
|
|
236
237
|
}
|
|
237
238
|
async _initializeDrive(driveId) {
|
|
238
239
|
const drive = await this.getDrive(driveId);
|
|
239
|
-
logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.state.global.slug}"`);
|
|
240
|
+
this.logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.state.global.slug}"`);
|
|
240
241
|
await this.synchronizationManager.initializeDriveSyncStatus(driveId, drive);
|
|
241
242
|
if (this.shouldSyncRemoteDrive(drive)) {
|
|
242
|
-
logger.verbose(`[SYNC DEBUG] Starting sync for remote drive ${driveId}`);
|
|
243
|
+
this.logger.verbose(`[SYNC DEBUG] Starting sync for remote drive ${driveId}`);
|
|
243
244
|
await this.startSyncRemoteDrive(driveId);
|
|
244
245
|
}
|
|
245
246
|
// add switchboard push listeners
|
|
246
|
-
logger.verbose(`[SYNC DEBUG] Processing ${drive.state.local.listeners.length} listeners for drive ${driveId}`);
|
|
247
|
+
this.logger.verbose(`[SYNC DEBUG] Processing ${drive.state.local.listeners.length} listeners for drive ${driveId}`);
|
|
247
248
|
for (const zodListener of drive.state.local.listeners) {
|
|
248
249
|
if (zodListener.callInfo?.transmitterType === "SwitchboardPush") {
|
|
249
|
-
logger.verbose(`[SYNC DEBUG] Setting up SwitchboardPush listener ${zodListener.listenerId} for drive ${driveId}`);
|
|
250
|
+
this.logger.verbose(`[SYNC DEBUG] Setting up SwitchboardPush listener ${zodListener.listenerId} for drive ${driveId}`);
|
|
250
251
|
const transmitter = new SwitchboardPushTransmitter(zodListener.callInfo?.data ?? "");
|
|
251
|
-
logger.verbose(`[SYNC DEBUG] Created SwitchboardPush transmitter with URL: ${zodListener.callInfo?.data || "none"}`);
|
|
252
|
+
this.logger.verbose(`[SYNC DEBUG] Created SwitchboardPush transmitter with URL: ${zodListener.callInfo?.data || "none"}`);
|
|
252
253
|
await this.listenerManager
|
|
253
254
|
.setListener(driveId, {
|
|
254
255
|
block: zodListener.block,
|
|
@@ -266,11 +267,30 @@ export class BaseDocumentDriveServer {
|
|
|
266
267
|
transmitter,
|
|
267
268
|
})
|
|
268
269
|
.then(() => {
|
|
269
|
-
logger.verbose(`[SYNC DEBUG] Successfully set up listener ${zodListener.listenerId} for drive ${driveId}`);
|
|
270
|
+
this.logger.verbose(`[SYNC DEBUG] Successfully set up listener ${zodListener.listenerId} for drive ${driveId}`);
|
|
270
271
|
});
|
|
271
272
|
}
|
|
273
|
+
else if (zodListener.callInfo?.transmitterType === "PullResponder") {
|
|
274
|
+
this.logger.verbose(`[SYNC DEBUG] Setting up PullResponder listener ${zodListener.listenerId} for drive ${driveId}`);
|
|
275
|
+
const pullResponderListener = {
|
|
276
|
+
driveId,
|
|
277
|
+
listenerId: zodListener.listenerId,
|
|
278
|
+
block: false,
|
|
279
|
+
filter: zodListener.filter,
|
|
280
|
+
system: false,
|
|
281
|
+
label: `PullResponder #${zodListener.listenerId}`,
|
|
282
|
+
callInfo: {
|
|
283
|
+
data: "",
|
|
284
|
+
name: "PullResponder",
|
|
285
|
+
transmitterType: "PullResponder",
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
const pullResponder = new PullResponderTransmitter(pullResponderListener, this.listenerManager);
|
|
289
|
+
pullResponderListener.transmitter = pullResponder;
|
|
290
|
+
await this.listenerManager.setListener(driveId, pullResponderListener);
|
|
291
|
+
}
|
|
272
292
|
else {
|
|
273
|
-
logger.error(`Skipping listener ${zodListener.listenerId} with unsupported type ${zodListener.callInfo?.transmitterType || "unknown"}`);
|
|
293
|
+
this.logger.error(`Skipping listener ${zodListener.listenerId} with unsupported type ${zodListener.callInfo?.transmitterType || "unknown"}`);
|
|
274
294
|
}
|
|
275
295
|
}
|
|
276
296
|
}
|
|
@@ -370,7 +390,7 @@ export class BaseDocumentDriveServer {
|
|
|
370
390
|
}
|
|
371
391
|
}
|
|
372
392
|
catch (e) {
|
|
373
|
-
logger.error("Error getting drive from cache", e);
|
|
393
|
+
this.logger.error("Error getting drive from cache", e);
|
|
374
394
|
}
|
|
375
395
|
const driveStorage = document ?? (await this.storage.getDrive(driveId));
|
|
376
396
|
const result = this._buildDocument(driveStorage, options);
|
|
@@ -379,7 +399,7 @@ export class BaseDocumentDriveServer {
|
|
|
379
399
|
}
|
|
380
400
|
else {
|
|
381
401
|
if (!options?.revisions) {
|
|
382
|
-
this.cache.setDrive(driveId, result).catch(logger.error);
|
|
402
|
+
this.cache.setDrive(driveId, result).catch(this.logger.error);
|
|
383
403
|
}
|
|
384
404
|
return result;
|
|
385
405
|
}
|
|
@@ -392,7 +412,7 @@ export class BaseDocumentDriveServer {
|
|
|
392
412
|
}
|
|
393
413
|
}
|
|
394
414
|
catch (e) {
|
|
395
|
-
logger.error("Error getting drive from cache", e);
|
|
415
|
+
this.logger.error("Error getting drive from cache", e);
|
|
396
416
|
}
|
|
397
417
|
const driveStorage = await this.storage.getDriveBySlug(slug);
|
|
398
418
|
const document = this._buildDocument(driveStorage, options);
|
|
@@ -400,7 +420,7 @@ export class BaseDocumentDriveServer {
|
|
|
400
420
|
throw new Error(`Document with slug ${slug} is not a Document Drive`);
|
|
401
421
|
}
|
|
402
422
|
else {
|
|
403
|
-
this.cache.setDriveBySlug(slug, document).catch(logger.error);
|
|
423
|
+
this.cache.setDriveBySlug(slug, document).catch(this.logger.error);
|
|
404
424
|
return document;
|
|
405
425
|
}
|
|
406
426
|
}
|
|
@@ -413,13 +433,13 @@ export class BaseDocumentDriveServer {
|
|
|
413
433
|
}
|
|
414
434
|
}
|
|
415
435
|
catch (e) {
|
|
416
|
-
logger.error("Error getting document from cache", e);
|
|
436
|
+
this.logger.error("Error getting document from cache", e);
|
|
417
437
|
}
|
|
418
438
|
const documentStorage = cachedDocument ??
|
|
419
439
|
(await this.storage.getDocument(driveId, documentId));
|
|
420
440
|
const document = this._buildDocument(documentStorage, options);
|
|
421
441
|
if (!options?.revisions) {
|
|
422
|
-
this.cache.setDocument(documentId, document).catch(logger.error);
|
|
442
|
+
this.cache.setDocument(documentId, document).catch(this.logger.error);
|
|
423
443
|
}
|
|
424
444
|
return document;
|
|
425
445
|
}
|
|
@@ -486,7 +506,7 @@ export class BaseDocumentDriveServer {
|
|
|
486
506
|
await this.listenerManager.removeSyncUnits(driveId, syncUnits);
|
|
487
507
|
}
|
|
488
508
|
catch (error) {
|
|
489
|
-
logger.warn("Error deleting document", error);
|
|
509
|
+
this.logger.warn("Error deleting document", error);
|
|
490
510
|
}
|
|
491
511
|
await this.cache.deleteDocument(documentId);
|
|
492
512
|
return this.storage.deleteDocument(driveId, documentId);
|
|
@@ -702,34 +722,38 @@ export class BaseDocumentDriveServer {
|
|
|
702
722
|
if (result) {
|
|
703
723
|
return result;
|
|
704
724
|
}
|
|
725
|
+
// add listeners first
|
|
726
|
+
let jobId;
|
|
727
|
+
const promise = new Promise((resolve, reject) => {
|
|
728
|
+
const unsubscribe = this.queueManager.on("jobCompleted", (job, result) => {
|
|
729
|
+
if (job.jobId === jobId) {
|
|
730
|
+
unsubscribe();
|
|
731
|
+
unsubscribeError();
|
|
732
|
+
resolve(result);
|
|
733
|
+
}
|
|
734
|
+
});
|
|
735
|
+
const unsubscribeError = this.queueManager.on("jobFailed", (job, error) => {
|
|
736
|
+
if (job.jobId === jobId) {
|
|
737
|
+
unsubscribe();
|
|
738
|
+
unsubscribeError();
|
|
739
|
+
reject(error);
|
|
740
|
+
}
|
|
741
|
+
});
|
|
742
|
+
});
|
|
743
|
+
// now queue the job
|
|
705
744
|
try {
|
|
706
|
-
|
|
745
|
+
jobId = await this.queueManager.addJob({
|
|
707
746
|
driveId: driveId,
|
|
708
747
|
documentId: documentId,
|
|
709
748
|
operations,
|
|
710
749
|
options,
|
|
711
750
|
});
|
|
712
|
-
return new Promise((resolve, reject) => {
|
|
713
|
-
const unsubscribe = this.queueManager.on("jobCompleted", (job, result) => {
|
|
714
|
-
if (job.jobId === jobId) {
|
|
715
|
-
unsubscribe();
|
|
716
|
-
unsubscribeError();
|
|
717
|
-
resolve(result);
|
|
718
|
-
}
|
|
719
|
-
});
|
|
720
|
-
const unsubscribeError = this.queueManager.on("jobFailed", (job, error) => {
|
|
721
|
-
if (job.jobId === jobId) {
|
|
722
|
-
unsubscribe();
|
|
723
|
-
unsubscribeError();
|
|
724
|
-
reject(error);
|
|
725
|
-
}
|
|
726
|
-
});
|
|
727
|
-
});
|
|
728
751
|
}
|
|
729
752
|
catch (error) {
|
|
730
|
-
logger.error("Error adding job", error);
|
|
753
|
+
this.logger.error("Error adding job", error);
|
|
731
754
|
throw error;
|
|
732
755
|
}
|
|
756
|
+
return promise;
|
|
733
757
|
}
|
|
734
758
|
async queueAction(driveId, documentId, action, options) {
|
|
735
759
|
return this.queueActions(driveId, documentId, [action], options);
|
|
@@ -760,7 +784,7 @@ export class BaseDocumentDriveServer {
|
|
|
760
784
|
});
|
|
761
785
|
}
|
|
762
786
|
catch (error) {
|
|
763
|
-
logger.error("Error adding job", error);
|
|
787
|
+
this.logger.error("Error adding job", error);
|
|
764
788
|
throw error;
|
|
765
789
|
}
|
|
766
790
|
}
|
|
@@ -792,7 +816,7 @@ export class BaseDocumentDriveServer {
|
|
|
792
816
|
});
|
|
793
817
|
}
|
|
794
818
|
catch (error) {
|
|
795
|
-
logger.error("Error adding drive job", error);
|
|
819
|
+
this.logger.error("Error adding drive job", error);
|
|
796
820
|
throw error;
|
|
797
821
|
}
|
|
798
822
|
}
|
|
@@ -810,7 +834,7 @@ export class BaseDocumentDriveServer {
|
|
|
810
834
|
await this._addOperations(driveId, documentId, async (documentStorage) => {
|
|
811
835
|
const result = await this._processOperations(driveId, documentId, documentStorage, operations);
|
|
812
836
|
if (!result.document) {
|
|
813
|
-
logger.error("Invalid document");
|
|
837
|
+
this.logger.error("Invalid document");
|
|
814
838
|
throw result.error ?? new Error("Invalid document");
|
|
815
839
|
}
|
|
816
840
|
document = result.document;
|
|
@@ -824,7 +848,7 @@ export class BaseDocumentDriveServer {
|
|
|
824
848
|
};
|
|
825
849
|
});
|
|
826
850
|
if (document) {
|
|
827
|
-
this.cache.setDocument(documentId, document).catch(logger.error);
|
|
851
|
+
this.cache.setDocument(documentId, document).catch(this.logger.error);
|
|
828
852
|
}
|
|
829
853
|
// gets all the different scopes and branches combinations from the operations
|
|
830
854
|
const { scopes, branches } = operationsApplied.reduce((acc, operation) => {
|
|
@@ -871,7 +895,7 @@ export class BaseDocumentDriveServer {
|
|
|
871
895
|
}
|
|
872
896
|
})
|
|
873
897
|
.catch((error) => {
|
|
874
|
-
logger.error("Non handled error updating sync revision", error);
|
|
898
|
+
this.logger.error("Non handled error updating sync revision", error);
|
|
875
899
|
this.synchronizationManager.updateSyncStatus(driveId, {
|
|
876
900
|
[operationSource]: "ERROR",
|
|
877
901
|
}, error);
|
|
@@ -987,7 +1011,7 @@ export class BaseDocumentDriveServer {
|
|
|
987
1011
|
});
|
|
988
1012
|
}
|
|
989
1013
|
catch (error) {
|
|
990
|
-
logger.error("Error adding drive job", error);
|
|
1014
|
+
this.logger.error("Error adding drive job", error);
|
|
991
1015
|
throw error;
|
|
992
1016
|
}
|
|
993
1017
|
}
|
|
@@ -1016,7 +1040,7 @@ export class BaseDocumentDriveServer {
|
|
|
1016
1040
|
if (!document || !isDocumentDrive(document)) {
|
|
1017
1041
|
throw error ?? new Error("Invalid Document Drive document");
|
|
1018
1042
|
}
|
|
1019
|
-
this.cache.setDrive(driveId, document).catch(logger.error);
|
|
1043
|
+
this.cache.setDrive(driveId, document).catch(this.logger.error);
|
|
1020
1044
|
// update listener cache
|
|
1021
1045
|
const lastOperation = operationsApplied
|
|
1022
1046
|
.filter((op) => op.scope === "global")
|
|
@@ -1059,7 +1083,7 @@ export class BaseDocumentDriveServer {
|
|
|
1059
1083
|
}
|
|
1060
1084
|
})
|
|
1061
1085
|
.catch((error) => {
|
|
1062
|
-
logger.error("Non handled error updating sync revision", error);
|
|
1086
|
+
this.logger.error("Non handled error updating sync revision", error);
|
|
1063
1087
|
this.synchronizationManager.updateSyncStatus(driveId, {
|
|
1064
1088
|
[operationSource]: "ERROR",
|
|
1065
1089
|
}, error);
|
|
@@ -1167,11 +1191,29 @@ export class BaseDocumentDriveServer {
|
|
|
1167
1191
|
scope: strand.scope,
|
|
1168
1192
|
branch: strand.branch,
|
|
1169
1193
|
}));
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1194
|
+
let result;
|
|
1195
|
+
if (strand.documentId) {
|
|
1196
|
+
try {
|
|
1197
|
+
result = await this.queueOperations(strand.driveId, strand.documentId, operations, {
|
|
1198
|
+
source,
|
|
1199
|
+
});
|
|
1200
|
+
}
|
|
1201
|
+
catch (error) {
|
|
1202
|
+
this.logger.error("Error queueing operations", error);
|
|
1203
|
+
throw error;
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
else {
|
|
1207
|
+
try {
|
|
1208
|
+
result = await this.queueDriveOperations(strand.driveId, operations, {
|
|
1209
|
+
source,
|
|
1210
|
+
});
|
|
1211
|
+
}
|
|
1212
|
+
catch (error) {
|
|
1213
|
+
this.logger.error("Error queueing operations", error);
|
|
1214
|
+
throw error;
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1175
1217
|
if (result.status === "ERROR") {
|
|
1176
1218
|
const syncUnits = strand.documentId !== ""
|
|
1177
1219
|
? (await this.getSynchronizationUnitsIds(strand.driveId, [strand.documentId], [strand.scope], [strand.branch])).map((s) => s.syncId)
|
|
@@ -2,7 +2,7 @@ import { type StrandUpdateSource } from "#server/listener/transmitter/types";
|
|
|
2
2
|
import { type DriveUpdateErrorHandler, type GetStrandsOptions, type IListenerManager, type ISynchronizationManager, type Listener, type ListenerManagerOptions, type ListenerState, type ListenerUpdate, type StrandUpdate, type SynchronizationUnit, type SynchronizationUnitQuery } from "#server/types";
|
|
3
3
|
export declare class ListenerManager implements IListenerManager {
|
|
4
4
|
static LISTENER_UPDATE_DELAY: number;
|
|
5
|
-
protected logger: import("
|
|
5
|
+
protected logger: import("document-drive").ILogger;
|
|
6
6
|
protected syncManager: ISynchronizationManager;
|
|
7
7
|
protected options: ListenerManagerOptions;
|
|
8
8
|
protected listenerStateByDriveId: Map<string, Map<string, ListenerState>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-manager.d.ts","sourceRoot":"","sources":["../../../../src/server/listener/listener-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAEL,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"listener-manager.d.ts","sourceRoot":"","sources":["../../../../src/server/listener/listener-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAEL,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AAKvB,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,MAAM,CAAC,qBAAqB,SAAO;IAEnC,SAAS,CAAC,MAAM,mCAGb;IAEH,SAAS,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC/C,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAG1C,SAAS,CAAC,sBAAsB,0CAG5B;gBAGF,WAAW,EAAE,uBAAuB,EACpC,OAAO,GAAE,sBAAsD;IAQ3D,UAAU,CAAC,OAAO,EAAE,uBAAuB;IAcjD,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAI3B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IA+B/C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAWlD,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,GAC/C,OAAO,CAAC,IAAI,CAAC;IAaV,8BAA8B,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,mBAAmB,EAAE,EAChC,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,EAC1E,SAAS,UAAQ;IA2Cb,sBAAsB,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAuBhB,aAAa,sEAOO,KAAK,WAAW,MAAM,YAAY,aAAa,KAAK,IAAI,+EAJ1E;YAEY,cAAc;IA8N5B,OAAO,CAAC,YAAY;IAsBpB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAexD,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAehC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,UAAU,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAuH1B,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAepD,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa;CAU/B"}
|
|
@@ -2,7 +2,6 @@ import { OperationError } from "#server/error";
|
|
|
2
2
|
import { DefaultListenerManagerOptions, } from "#server/types";
|
|
3
3
|
import { childLogger } from "document-drive";
|
|
4
4
|
import { debounce } from "./util.js";
|
|
5
|
-
const ENABLE_SYNC_DEBUG = false;
|
|
6
5
|
export class ListenerManager {
|
|
7
6
|
static LISTENER_UPDATE_DELAY = 250;
|
|
8
7
|
logger = childLogger([
|
|
@@ -136,11 +135,11 @@ export class ListenerManager {
|
|
|
136
135
|
throw new Error("Maximum retries exhausted.");
|
|
137
136
|
}
|
|
138
137
|
const listenerUpdates = [];
|
|
139
|
-
for (const [driveId,
|
|
140
|
-
for (const [listenerId, listenerState] of
|
|
138
|
+
for (const [driveId, listenerStateById] of this.listenerStateByDriveId) {
|
|
139
|
+
for (const [listenerId, listenerState] of listenerStateById) {
|
|
141
140
|
const transmitter = listenerState.listener.transmitter;
|
|
142
141
|
if (!transmitter?.transmit) {
|
|
143
|
-
|
|
142
|
+
// transmit is optional, so we can skip listeners that don't have a transmitter
|
|
144
143
|
continue;
|
|
145
144
|
}
|
|
146
145
|
const syncUnits = await this.getListenerSyncUnits(driveId, listenerId);
|
|
@@ -19,7 +19,6 @@ export interface IPullResponderTransmitter extends ITransmitter {
|
|
|
19
19
|
getStrands(options?: GetStrandsOptions): Promise<StrandUpdate[]>;
|
|
20
20
|
}
|
|
21
21
|
export declare class PullResponderTransmitter implements IPullResponderTransmitter {
|
|
22
|
-
private static staticLogger;
|
|
23
22
|
private logger;
|
|
24
23
|
private listener;
|
|
25
24
|
private manager;
|
|
@@ -27,7 +26,7 @@ export declare class PullResponderTransmitter implements IPullResponderTransmitt
|
|
|
27
26
|
getStrands(options?: GetStrandsOptions): Promise<StrandUpdate[]>;
|
|
28
27
|
disconnect(): Promise<void>;
|
|
29
28
|
processAcknowledge(driveId: string, listenerId: string, revisions: ListenerRevision[]): Promise<boolean>;
|
|
30
|
-
static registerPullResponder(driveId: string, url: string, filter: ListenerFilter): Promise<Listener["listenerId"]>;
|
|
29
|
+
static registerPullResponder(driveId: string, url: string, filter: ListenerFilter, listenerId?: string): Promise<Listener["listenerId"]>;
|
|
31
30
|
static pullStrands(driveId: string, url: string, listenerId: string, options?: GetStrandsOptions): Promise<StrandUpdate[]>;
|
|
32
31
|
static acknowledgeStrands(url: string, listenerId: string, revisions: ListenerRevision[]): Promise<void>;
|
|
33
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-responder.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/pull-responder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG;IACpE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,OAAO,EAAE,mBAAmB,EAAE,CAAC;SAChC,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG;IACnE,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,yBAA0B,SAAQ,YAAY;IAC7D,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAClE;
|
|
1
|
+
{"version":3,"file":"pull-responder.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/pull-responder.ts"],"names":[],"mappings":"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"}
|