document-drive 1.29.4-dev.3 → 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 +61 -50
- package/dist/src/server/listener/transmitter/types.d.ts +1 -1
- package/dist/src/server/listener/transmitter/types.d.ts.map +1 -1
- 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 +3 -3
|
@@ -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,31 +193,31 @@ 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;
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
trigger.data.listenerId = listenerId;
|
|
207
|
+
const graphqlError = error;
|
|
208
|
+
const errors = graphqlError.response?.errors ?? [];
|
|
209
|
+
for (const err of errors) {
|
|
210
|
+
if (err.message === "Listener not found") {
|
|
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);
|
|
203
214
|
// try again
|
|
204
215
|
try {
|
|
205
216
|
strands = await PullResponderTransmitter.pullStrands(driveId, url, listenerId);
|
|
206
|
-
|
|
217
|
+
staticLogger().verbose(`Successfully auto-registered and pulled strands for drive: ${driveId}, listenerId: ${listenerId}`);
|
|
207
218
|
}
|
|
208
219
|
catch (error) {
|
|
209
|
-
|
|
220
|
+
staticLogger().error(`Could not resolve 'Listener not found' error by registering a new pull responder for drive: ${driveId}, listenerId: ${listenerId}: ${error}`);
|
|
210
221
|
onError(error);
|
|
211
222
|
return;
|
|
212
223
|
}
|
|
@@ -215,24 +226,24 @@ export class PullResponderTransmitter {
|
|
|
215
226
|
}
|
|
216
227
|
}
|
|
217
228
|
if (!strands) {
|
|
218
|
-
|
|
229
|
+
staticLogger().error(`Error pulling strands for drive, and could not auto-register: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
219
230
|
onError(error);
|
|
220
231
|
return;
|
|
221
232
|
}
|
|
222
233
|
// if there are no new strands then do nothing
|
|
223
234
|
if (!strands.length) {
|
|
224
|
-
|
|
235
|
+
staticLogger().verbose(`[SYNC DEBUG] No strands returned in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
225
236
|
try {
|
|
226
237
|
onRevisions?.([]);
|
|
227
238
|
}
|
|
228
239
|
catch (error) {
|
|
229
|
-
|
|
240
|
+
staticLogger().error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
230
241
|
// pass the error to the caller
|
|
231
242
|
onError(error);
|
|
232
243
|
}
|
|
233
244
|
return;
|
|
234
245
|
}
|
|
235
|
-
|
|
246
|
+
staticLogger().verbose(`[SYNC DEBUG] Processing ${strands.length} strands in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
236
247
|
const listenerRevisions = [];
|
|
237
248
|
// todo: evaluate whether or not we can process strands in parallel
|
|
238
249
|
for (const strand of strands) {
|
|
@@ -241,7 +252,7 @@ export class PullResponderTransmitter {
|
|
|
241
252
|
scope: strand.scope,
|
|
242
253
|
branch: strand.branch,
|
|
243
254
|
}));
|
|
244
|
-
|
|
255
|
+
staticLogger().verbose(`[SYNC DEBUG] Processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations`);
|
|
245
256
|
let error = undefined;
|
|
246
257
|
try {
|
|
247
258
|
const result = await onStrandUpdate(strand, {
|
|
@@ -253,7 +264,7 @@ export class PullResponderTransmitter {
|
|
|
253
264
|
}
|
|
254
265
|
}
|
|
255
266
|
catch (e) {
|
|
256
|
-
|
|
267
|
+
staticLogger().error(`Error processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations: ${e}`);
|
|
257
268
|
error = e;
|
|
258
269
|
onError(error);
|
|
259
270
|
// continue
|
|
@@ -272,17 +283,17 @@ export class PullResponderTransmitter {
|
|
|
272
283
|
error,
|
|
273
284
|
});
|
|
274
285
|
}
|
|
275
|
-
|
|
286
|
+
staticLogger().verbose("Processed strands...");
|
|
276
287
|
// do not let a listener kill the pull loop
|
|
277
288
|
try {
|
|
278
289
|
onRevisions?.(listenerRevisions);
|
|
279
290
|
}
|
|
280
291
|
catch (error) {
|
|
281
|
-
|
|
292
|
+
staticLogger().error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
282
293
|
// pass the error to the caller
|
|
283
294
|
onError(error);
|
|
284
295
|
}
|
|
285
|
-
|
|
296
|
+
staticLogger().verbose(`[SYNC DEBUG] Acknowledging ${listenerRevisions.length} strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
286
297
|
let success = false;
|
|
287
298
|
try {
|
|
288
299
|
await PullResponderTransmitter.acknowledgeStrands(url, trigger.data.listenerId, listenerRevisions.map((revision) => {
|
|
@@ -292,28 +303,28 @@ export class PullResponderTransmitter {
|
|
|
292
303
|
success = true;
|
|
293
304
|
}
|
|
294
305
|
catch (error) {
|
|
295
|
-
|
|
306
|
+
staticLogger().error(`Error acknowledging strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
296
307
|
// pass the error to the caller
|
|
297
308
|
onError(error);
|
|
298
309
|
}
|
|
299
310
|
if (success) {
|
|
300
|
-
|
|
311
|
+
staticLogger().verbose(`[SYNC DEBUG] Successfully acknowledged strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
301
312
|
}
|
|
302
313
|
else {
|
|
303
|
-
|
|
314
|
+
staticLogger().error("Failed to acknowledge strands");
|
|
304
315
|
}
|
|
305
316
|
// let this throw separately
|
|
306
317
|
try {
|
|
307
318
|
onAcknowledge?.(success);
|
|
308
319
|
}
|
|
309
320
|
catch (error) {
|
|
310
|
-
|
|
321
|
+
staticLogger().error(`Error calling onAcknowledge for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
311
322
|
// pass the error to the caller
|
|
312
323
|
onError(error);
|
|
313
324
|
}
|
|
314
325
|
}
|
|
315
326
|
static setupPull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge) {
|
|
316
|
-
|
|
327
|
+
staticLogger().verbose(`[SYNC DEBUG] PullResponderTransmitter.setupPull initiated for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
317
328
|
const { interval } = trigger.data;
|
|
318
329
|
let loopInterval = PULL_DRIVE_INTERVAL;
|
|
319
330
|
if (interval) {
|
|
@@ -327,25 +338,25 @@ export class PullResponderTransmitter {
|
|
|
327
338
|
// ignore invalid interval
|
|
328
339
|
}
|
|
329
340
|
}
|
|
330
|
-
|
|
341
|
+
staticLogger().verbose(`[SYNC DEBUG] Pull interval set to ${loopInterval}ms for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
331
342
|
let isCancelled = false;
|
|
332
343
|
let timeout;
|
|
333
344
|
const executeLoop = async () => {
|
|
334
345
|
while (!isCancelled) {
|
|
335
|
-
|
|
346
|
+
staticLogger().verbose(`[SYNC DEBUG] Starting pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
336
347
|
await this.executePull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge);
|
|
337
|
-
|
|
348
|
+
staticLogger().verbose(`[SYNC DEBUG] Completed pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}, waiting ${loopInterval}ms for next cycle`);
|
|
338
349
|
await new Promise((resolve) => {
|
|
339
|
-
|
|
350
|
+
staticLogger().verbose(`Scheduling next pull in ${loopInterval} ms`);
|
|
340
351
|
timeout = setTimeout(resolve, loopInterval);
|
|
341
352
|
});
|
|
342
353
|
}
|
|
343
354
|
};
|
|
344
355
|
executeLoop().catch((error) => {
|
|
345
|
-
|
|
356
|
+
staticLogger().error(`Error in executeLoop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
|
|
346
357
|
});
|
|
347
358
|
return () => {
|
|
348
|
-
|
|
359
|
+
staticLogger().verbose(`[SYNC DEBUG] Cancelling pull loop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
349
360
|
isCancelled = true;
|
|
350
361
|
if (timeout !== undefined) {
|
|
351
362
|
clearTimeout(timeout);
|
|
@@ -353,7 +364,7 @@ export class PullResponderTransmitter {
|
|
|
353
364
|
};
|
|
354
365
|
}
|
|
355
366
|
static async createPullResponderTrigger(driveId, url, options) {
|
|
356
|
-
|
|
367
|
+
staticLogger().verbose(`createPullResponderTrigger(drive: ${driveId}, url: ${url})`);
|
|
357
368
|
const { pullFilter, pullInterval } = options;
|
|
358
369
|
const filter = pullFilter ?? {
|
|
359
370
|
documentId: ["*"],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ListenerFilter, type PullResponderTriggerData, type Trigger } from "#drive-document-model/gen/types";
|
|
1
|
+
import { type ListenerFilter, type PullResponderTriggerData, type Trigger } from "#drive-document-model/gen/types";
|
|
2
2
|
import { type ListenerRevision, type StrandUpdate } from "#server/types";
|
|
3
3
|
export type StrandUpdateSource = {
|
|
4
4
|
type: "local";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,OAAO,EACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CACP,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AACD,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D,OAAO,IAAI,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC"}
|
|
@@ -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"}
|