document-drive 1.29.4-dev.4 → 1.29.4-dev.5
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 +1 -1
|
@@ -5,11 +5,16 @@ import { childLogger } from "#utils/logger";
|
|
|
5
5
|
import { generateUUID } from "#utils/misc";
|
|
6
6
|
import { gql } from "graphql-request";
|
|
7
7
|
const MAX_REVISIONS_PER_ACK = 100;
|
|
8
|
+
// lazily create the static logger so the logging system has time to read
|
|
9
|
+
// configuration values for setting log level
|
|
10
|
+
let _staticLogger;
|
|
11
|
+
const staticLogger = () => {
|
|
12
|
+
if (!_staticLogger) {
|
|
13
|
+
_staticLogger = childLogger(["PullResponderTransmitter", "static"]);
|
|
14
|
+
}
|
|
15
|
+
return _staticLogger;
|
|
16
|
+
};
|
|
8
17
|
export class PullResponderTransmitter {
|
|
9
|
-
static staticLogger = childLogger([
|
|
10
|
-
"PullResponderTransmitter",
|
|
11
|
-
"static",
|
|
12
|
-
]);
|
|
13
18
|
logger = childLogger([
|
|
14
19
|
"PullResponderTransmitter",
|
|
15
20
|
Math.floor(Math.random() * 999).toString(),
|
|
@@ -59,16 +64,22 @@ export class PullResponderTransmitter {
|
|
|
59
64
|
}
|
|
60
65
|
return success;
|
|
61
66
|
}
|
|
62
|
-
static async registerPullResponder(driveId, url, filter) {
|
|
63
|
-
|
|
67
|
+
static async registerPullResponder(driveId, url, filter, listenerId) {
|
|
68
|
+
staticLogger().verbose(`registerPullResponder(url: ${url})`, filter);
|
|
64
69
|
// graphql request to switchboard
|
|
65
70
|
const result = await requestGraphql(url, gql `
|
|
66
|
-
mutation registerPullResponderListener(
|
|
67
|
-
|
|
71
|
+
mutation registerPullResponderListener(
|
|
72
|
+
$filter: InputListenerFilter!
|
|
73
|
+
$listenerId: String
|
|
74
|
+
) {
|
|
75
|
+
registerPullResponderListener(
|
|
76
|
+
filter: $filter
|
|
77
|
+
listenerId: $listenerId
|
|
78
|
+
) {
|
|
68
79
|
listenerId
|
|
69
80
|
}
|
|
70
81
|
}
|
|
71
|
-
`, { filter });
|
|
82
|
+
`, { filter, listenerId });
|
|
72
83
|
const error = result.errors?.at(0);
|
|
73
84
|
if (error) {
|
|
74
85
|
throw error;
|
|
@@ -79,7 +90,7 @@ export class PullResponderTransmitter {
|
|
|
79
90
|
return result.registerPullResponderListener.listenerId;
|
|
80
91
|
}
|
|
81
92
|
static async pullStrands(driveId, url, listenerId, options) {
|
|
82
|
-
|
|
93
|
+
staticLogger().verbose(`[SYNC DEBUG] PullResponderTransmitter.pullStrands called for drive: ${driveId}, url: ${url}, listener: ${listenerId}, options: ${JSON.stringify(options || {})}`);
|
|
83
94
|
const result = await requestGraphql(url, gql `
|
|
84
95
|
query strands($listenerId: ID!) {
|
|
85
96
|
system {
|
|
@@ -119,11 +130,11 @@ export class PullResponderTransmitter {
|
|
|
119
130
|
`, { listenerId });
|
|
120
131
|
const error = result.errors?.at(0);
|
|
121
132
|
if (error) {
|
|
122
|
-
|
|
133
|
+
staticLogger().verbose(`[SYNC DEBUG] Error pulling strands for drive: ${driveId}, listener: ${listenerId}, error: ${JSON.stringify(error)}`);
|
|
123
134
|
throw error;
|
|
124
135
|
}
|
|
125
136
|
if (!result.system) {
|
|
126
|
-
|
|
137
|
+
staticLogger().verbose(`[SYNC DEBUG] No system data returned when pulling strands for drive: ${driveId}, listener: ${listenerId}`);
|
|
127
138
|
return [];
|
|
128
139
|
}
|
|
129
140
|
const strands = result.system.sync.strands.map((s) => ({
|
|
@@ -133,21 +144,21 @@ export class PullResponderTransmitter {
|
|
|
133
144
|
input: JSON.parse(o.input),
|
|
134
145
|
})),
|
|
135
146
|
}));
|
|
136
|
-
|
|
147
|
+
staticLogger().verbose(`[SYNC DEBUG] PullResponderTransmitter.pullStrands returning ${strands.length} strands for drive: ${driveId}, listener: ${listenerId}`);
|
|
137
148
|
if (strands.length > 0) {
|
|
138
|
-
|
|
149
|
+
staticLogger().verbose(`[SYNC DEBUG] Strands being returned: ${strands.map((s) => `${s.documentId}:${s.scope}`).join(", ")}`);
|
|
139
150
|
}
|
|
140
151
|
return strands;
|
|
141
152
|
}
|
|
142
153
|
static async acknowledgeStrands(url, listenerId, revisions) {
|
|
143
|
-
|
|
154
|
+
staticLogger().verbose(`acknowledgeStrands(url: ${url}, listener: ${listenerId})`, revisions);
|
|
144
155
|
// split revisions into chunks
|
|
145
156
|
const chunks = [];
|
|
146
157
|
for (let i = 0; i < revisions.length; i += MAX_REVISIONS_PER_ACK) {
|
|
147
158
|
chunks.push(revisions.slice(i, i + MAX_REVISIONS_PER_ACK));
|
|
148
159
|
}
|
|
149
160
|
if (chunks.length > 1) {
|
|
150
|
-
|
|
161
|
+
staticLogger().verbose(`Breaking strand acknowledgement into ${chunks.length} chunks...`);
|
|
151
162
|
}
|
|
152
163
|
// order does not matter, we can send out requests in parallel
|
|
153
164
|
const results = await Promise.allSettled(chunks.map(async (chunk) => {
|
|
@@ -182,13 +193,14 @@ export class PullResponderTransmitter {
|
|
|
182
193
|
* Because of this, `onError` _may be called multiple times_.
|
|
183
194
|
*/
|
|
184
195
|
static async executePull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge) {
|
|
185
|
-
|
|
186
|
-
|
|
196
|
+
staticLogger().verbose(`executePull(driveId: ${driveId}), trigger:`, trigger);
|
|
197
|
+
staticLogger().info(`[SYNC DEBUG] PullResponderTransmitter.executePull starting for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
187
198
|
const { url } = trigger.data;
|
|
188
199
|
let strands;
|
|
189
200
|
let error;
|
|
201
|
+
const listenerId = trigger.data.listenerId;
|
|
190
202
|
try {
|
|
191
|
-
strands = await PullResponderTransmitter.pullStrands(driveId, url,
|
|
203
|
+
strands = await PullResponderTransmitter.pullStrands(driveId, url, listenerId);
|
|
192
204
|
}
|
|
193
205
|
catch (e) {
|
|
194
206
|
error = e;
|
|
@@ -196,18 +208,16 @@ export class PullResponderTransmitter {
|
|
|
196
208
|
const errors = graphqlError.response?.errors ?? [];
|
|
197
209
|
for (const err of errors) {
|
|
198
210
|
if (err.message === "Listener not found") {
|
|
199
|
-
|
|
200
|
-
// register a new pull responder
|
|
201
|
-
|
|
202
|
-
// update the trigger with the new listenerId
|
|
203
|
-
trigger.data.listenerId = listenerId;
|
|
211
|
+
staticLogger().verbose(`[SYNC DEBUG] Auto-registering pull responder for drive: ${driveId}`);
|
|
212
|
+
// register a new pull responder with this id
|
|
213
|
+
await PullResponderTransmitter.registerPullResponder(trigger.driveId, url, trigger.filter, listenerId);
|
|
204
214
|
// try again
|
|
205
215
|
try {
|
|
206
216
|
strands = await PullResponderTransmitter.pullStrands(driveId, url, listenerId);
|
|
207
|
-
|
|
217
|
+
staticLogger().verbose(`Successfully auto-registered and pulled strands for drive: ${driveId}, listenerId: ${listenerId}`);
|
|
208
218
|
}
|
|
209
219
|
catch (error) {
|
|
210
|
-
|
|
220
|
+
staticLogger().error(`Could not resolve 'Listener not found' error by registering a new pull responder for drive: ${driveId}, listenerId: ${listenerId}: ${error}`);
|
|
211
221
|
onError(error);
|
|
212
222
|
return;
|
|
213
223
|
}
|
|
@@ -216,24 +226,24 @@ export class PullResponderTransmitter {
|
|
|
216
226
|
}
|
|
217
227
|
}
|
|
218
228
|
if (!strands) {
|
|
219
|
-
|
|
229
|
+
staticLogger().error(`Error pulling strands for drive, and could not auto-register: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
220
230
|
onError(error);
|
|
221
231
|
return;
|
|
222
232
|
}
|
|
223
233
|
// if there are no new strands then do nothing
|
|
224
234
|
if (!strands.length) {
|
|
225
|
-
|
|
235
|
+
staticLogger().verbose(`[SYNC DEBUG] No strands returned in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
226
236
|
try {
|
|
227
237
|
onRevisions?.([]);
|
|
228
238
|
}
|
|
229
239
|
catch (error) {
|
|
230
|
-
|
|
240
|
+
staticLogger().error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
231
241
|
// pass the error to the caller
|
|
232
242
|
onError(error);
|
|
233
243
|
}
|
|
234
244
|
return;
|
|
235
245
|
}
|
|
236
|
-
|
|
246
|
+
staticLogger().verbose(`[SYNC DEBUG] Processing ${strands.length} strands in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
237
247
|
const listenerRevisions = [];
|
|
238
248
|
// todo: evaluate whether or not we can process strands in parallel
|
|
239
249
|
for (const strand of strands) {
|
|
@@ -242,7 +252,7 @@ export class PullResponderTransmitter {
|
|
|
242
252
|
scope: strand.scope,
|
|
243
253
|
branch: strand.branch,
|
|
244
254
|
}));
|
|
245
|
-
|
|
255
|
+
staticLogger().verbose(`[SYNC DEBUG] Processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations`);
|
|
246
256
|
let error = undefined;
|
|
247
257
|
try {
|
|
248
258
|
const result = await onStrandUpdate(strand, {
|
|
@@ -254,7 +264,7 @@ export class PullResponderTransmitter {
|
|
|
254
264
|
}
|
|
255
265
|
}
|
|
256
266
|
catch (e) {
|
|
257
|
-
|
|
267
|
+
staticLogger().error(`Error processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations: ${e}`);
|
|
258
268
|
error = e;
|
|
259
269
|
onError(error);
|
|
260
270
|
// continue
|
|
@@ -273,17 +283,17 @@ export class PullResponderTransmitter {
|
|
|
273
283
|
error,
|
|
274
284
|
});
|
|
275
285
|
}
|
|
276
|
-
|
|
286
|
+
staticLogger().verbose("Processed strands...");
|
|
277
287
|
// do not let a listener kill the pull loop
|
|
278
288
|
try {
|
|
279
289
|
onRevisions?.(listenerRevisions);
|
|
280
290
|
}
|
|
281
291
|
catch (error) {
|
|
282
|
-
|
|
292
|
+
staticLogger().error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
283
293
|
// pass the error to the caller
|
|
284
294
|
onError(error);
|
|
285
295
|
}
|
|
286
|
-
|
|
296
|
+
staticLogger().verbose(`[SYNC DEBUG] Acknowledging ${listenerRevisions.length} strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
287
297
|
let success = false;
|
|
288
298
|
try {
|
|
289
299
|
await PullResponderTransmitter.acknowledgeStrands(url, trigger.data.listenerId, listenerRevisions.map((revision) => {
|
|
@@ -293,28 +303,28 @@ export class PullResponderTransmitter {
|
|
|
293
303
|
success = true;
|
|
294
304
|
}
|
|
295
305
|
catch (error) {
|
|
296
|
-
|
|
306
|
+
staticLogger().error(`Error acknowledging strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
297
307
|
// pass the error to the caller
|
|
298
308
|
onError(error);
|
|
299
309
|
}
|
|
300
310
|
if (success) {
|
|
301
|
-
|
|
311
|
+
staticLogger().verbose(`[SYNC DEBUG] Successfully acknowledged strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
302
312
|
}
|
|
303
313
|
else {
|
|
304
|
-
|
|
314
|
+
staticLogger().error("Failed to acknowledge strands");
|
|
305
315
|
}
|
|
306
316
|
// let this throw separately
|
|
307
317
|
try {
|
|
308
318
|
onAcknowledge?.(success);
|
|
309
319
|
}
|
|
310
320
|
catch (error) {
|
|
311
|
-
|
|
321
|
+
staticLogger().error(`Error calling onAcknowledge for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
312
322
|
// pass the error to the caller
|
|
313
323
|
onError(error);
|
|
314
324
|
}
|
|
315
325
|
}
|
|
316
326
|
static setupPull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge) {
|
|
317
|
-
|
|
327
|
+
staticLogger().verbose(`[SYNC DEBUG] PullResponderTransmitter.setupPull initiated for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
318
328
|
const { interval } = trigger.data;
|
|
319
329
|
let loopInterval = PULL_DRIVE_INTERVAL;
|
|
320
330
|
if (interval) {
|
|
@@ -328,25 +338,25 @@ export class PullResponderTransmitter {
|
|
|
328
338
|
// ignore invalid interval
|
|
329
339
|
}
|
|
330
340
|
}
|
|
331
|
-
|
|
341
|
+
staticLogger().verbose(`[SYNC DEBUG] Pull interval set to ${loopInterval}ms for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
332
342
|
let isCancelled = false;
|
|
333
343
|
let timeout;
|
|
334
344
|
const executeLoop = async () => {
|
|
335
345
|
while (!isCancelled) {
|
|
336
|
-
|
|
346
|
+
staticLogger().verbose(`[SYNC DEBUG] Starting pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
337
347
|
await this.executePull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge);
|
|
338
|
-
|
|
348
|
+
staticLogger().verbose(`[SYNC DEBUG] Completed pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}, waiting ${loopInterval}ms for next cycle`);
|
|
339
349
|
await new Promise((resolve) => {
|
|
340
|
-
|
|
350
|
+
staticLogger().verbose(`Scheduling next pull in ${loopInterval} ms`);
|
|
341
351
|
timeout = setTimeout(resolve, loopInterval);
|
|
342
352
|
});
|
|
343
353
|
}
|
|
344
354
|
};
|
|
345
355
|
executeLoop().catch((error) => {
|
|
346
|
-
|
|
356
|
+
staticLogger().error(`Error in executeLoop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
347
357
|
});
|
|
348
358
|
return () => {
|
|
349
|
-
|
|
359
|
+
staticLogger().verbose(`[SYNC DEBUG] Cancelling pull loop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
350
360
|
isCancelled = true;
|
|
351
361
|
if (timeout !== undefined) {
|
|
352
362
|
clearTimeout(timeout);
|
|
@@ -354,7 +364,7 @@ export class PullResponderTransmitter {
|
|
|
354
364
|
};
|
|
355
365
|
}
|
|
356
366
|
static async createPullResponderTrigger(driveId, url, options) {
|
|
357
|
-
|
|
367
|
+
staticLogger().verbose(`createPullResponderTrigger(drive: ${driveId}, url: ${url})`);
|
|
358
368
|
const { pullFilter, pullInterval } = options;
|
|
359
369
|
const filter = pullFilter ?? {
|
|
360
370
|
documentId: ["*"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,uBAAuB;IAM1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IARhC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,MAAM,CAA2C;gBAGtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EACtB,oBAAoB,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,aAAa,YAAA;IAGzC,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmB3B,+BAA+B,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,wBAAwB,EAAE,GACzC,OAAO,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,uBAAuB;IAM1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IARhC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,MAAM,CAA2C;gBAGtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EACtB,oBAAoB,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,aAAa,YAAA;IAGzC,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmB3B,+BAA+B,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,wBAAwB,EAAE,GACzC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoC3B,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAmEhC,4BAA4B,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IA4B1C,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAyBrC,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC;YAoFf,QAAQ;YAiBR,WAAW;IAgBzB,OAAO,CAAC,cAAc;IAuBtB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE;IAItD,OAAO,CAAC,sBAAsB;IAU9B,yBAAyB,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAoB3E,aAAa,CACX,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,gCAAgC;IAWhD,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAiDP,OAAO,CAAC,cAAc;IAyBhB,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAejB"}
|
|
@@ -25,13 +25,21 @@ export default class SynchronizationManager {
|
|
|
25
25
|
const drive = await this.getDrive(driveId);
|
|
26
26
|
const revisions = await this.storage.getSynchronizationUnitsRevision(syncUnitsQuery);
|
|
27
27
|
this.logger.verbose(`getSynchronizationUnitsRevision: ${JSON.stringify(revisions)}`);
|
|
28
|
-
|
|
28
|
+
const synchronizationUnits = syncUnitsQuery.map((s) => ({
|
|
29
29
|
...s,
|
|
30
30
|
lastUpdated: drive.created,
|
|
31
|
-
revision:
|
|
32
|
-
r.scope === s.scope &&
|
|
33
|
-
r.branch === s.branch)?.revision ?? -1,
|
|
31
|
+
revision: -1,
|
|
34
32
|
}));
|
|
33
|
+
for (const revision of revisions) {
|
|
34
|
+
const syncUnit = synchronizationUnits.find((s) => revision.documentId === s.documentId &&
|
|
35
|
+
revision.scope === s.scope &&
|
|
36
|
+
revision.branch === s.branch);
|
|
37
|
+
if (syncUnit) {
|
|
38
|
+
syncUnit.revision = revision.revision;
|
|
39
|
+
syncUnit.lastUpdated = revision.lastUpdated;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return synchronizationUnits;
|
|
35
43
|
}
|
|
36
44
|
async getSynchronizationUnitsIds(driveId, documentId, scope, branch, documentType) {
|
|
37
45
|
const drive = await this.getDrive(driveId);
|
|
@@ -48,7 +56,7 @@ export default class SynchronizationManager {
|
|
|
48
56
|
documentType.includes("powerhouse/document-drive") ||
|
|
49
57
|
documentType.includes("*"))) {
|
|
50
58
|
nodes.unshift({
|
|
51
|
-
id:
|
|
59
|
+
id: driveId,
|
|
52
60
|
documentType: "powerhouse/document-drive",
|
|
53
61
|
synchronizationUnits: [
|
|
54
62
|
{
|
|
@@ -22,6 +22,6 @@ export declare class ConsoleLogger implements ILogger {
|
|
|
22
22
|
export declare const logger: ILogger;
|
|
23
23
|
export declare const setErrorHandler: (handler: LoggerErrorHandler) => void;
|
|
24
24
|
export declare const setLogLevel: (level: LogLevel | "env") => void;
|
|
25
|
-
export declare const childLogger: (tags: string[]) =>
|
|
25
|
+
export declare const childLogger: (tags: string[]) => ILogger;
|
|
26
26
|
export {};
|
|
27
27
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,OAAO,GAAG,IAAI,CACxB,OAAO,EACP,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAC5C,GAAG;IACF,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC;IACxB,YAAY,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE7C,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAW1D,qBAAa,aAAc,YAAW,OAAO;;gBAK/B,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,kBAAkB;IAa9D,IAAI,KAAK,IAAI,QAAQ,GAAG,KAAK,CAE5B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,EAEhC;IAED,IAAI,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAEjD;IAED,IAAI,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EAEvD;IAoBD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ7B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAW5B;AASD,eAAO,MAAM,MAAM,EAAE,OAAwB,CAAC;AAE9C,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,SAG1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,GAAG,KAAK,SAGlD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,OAAO,GAAG,IAAI,CACxB,OAAO,EACP,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAC5C,GAAG;IACF,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC;IACxB,YAAY,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE7C,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAW1D,qBAAa,aAAc,YAAW,OAAO;;gBAK/B,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,kBAAkB;IAa9D,IAAI,KAAK,IAAI,QAAQ,GAAG,KAAK,CAE5B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,EAEhC;IAED,IAAI,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAEjD;IAED,IAAI,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EAEvD;IAoBD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ7B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAW5B;AASD,eAAO,MAAM,MAAM,EAAE,OAAwB,CAAC;AAE9C,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,SAG1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,GAAG,KAAK,SAGlD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,KAAG,OAK5C,CAAC"}
|