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.
@@ -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
- PullResponderTransmitter.staticLogger.verbose(`registerPullResponder(url: ${url})`, filter);
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($filter: InputListenerFilter!) {
67
- registerPullResponderListener(filter: $filter) {
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
- this.staticLogger.verbose(`[SYNC DEBUG] PullResponderTransmitter.pullStrands called for drive: ${driveId}, url: ${url}, listener: ${listenerId}, options: ${JSON.stringify(options || {})}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Error pulling strands for drive: ${driveId}, listener: ${listenerId}, error: ${JSON.stringify(error)}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] No system data returned when pulling strands for drive: ${driveId}, listener: ${listenerId}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] PullResponderTransmitter.pullStrands returning ${strands.length} strands for drive: ${driveId}, listener: ${listenerId}`);
147
+ staticLogger().verbose(`[SYNC DEBUG] PullResponderTransmitter.pullStrands returning ${strands.length} strands for drive: ${driveId}, listener: ${listenerId}`);
137
148
  if (strands.length > 0) {
138
- this.staticLogger.verbose(`[SYNC DEBUG] Strands being returned: ${strands.map((s) => `${s.documentId}:${s.scope}`).join(", ")}`);
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
- this.staticLogger.verbose(`acknowledgeStrands(url: ${url}, listener: ${listenerId})`, revisions);
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
- this.staticLogger.verbose(`Breaking strand acknowledgement into ${chunks.length} chunks...`);
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
- this.staticLogger.verbose(`executePull(driveId: ${driveId}), trigger:`, trigger);
186
- this.staticLogger.info(`[SYNC DEBUG] PullResponderTransmitter.executePull starting for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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, trigger.data.listenerId);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Auto-registering pull responder for drive: ${driveId}`);
200
- // register a new pull responder
201
- const listenerId = await PullResponderTransmitter.registerPullResponder(trigger.driveId, url, trigger.filter);
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
- this.staticLogger.verbose(`Successfully auto-registerd and pulled strands for drive: ${driveId}, listenerId: ${listenerId}`);
217
+ staticLogger().verbose(`Successfully auto-registered and pulled strands for drive: ${driveId}, listenerId: ${listenerId}`);
208
218
  }
209
219
  catch (error) {
210
- this.staticLogger.error(`Could not resolve 'Listener not found' error by registering a new pull responder for drive: ${driveId}, listenerId: ${listenerId}: ${error}`);
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
- this.staticLogger.error(`Error pulling strands for drive, and could not auto-register: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] No strands returned in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Processing ${strands.length} strands in pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations`);
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
- this.staticLogger.error(`Error processing strand for drive: ${strand.driveId}, document: ${strand.documentId}, scope: ${strand.scope}, with ${operations.length} operations: ${e}`);
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
- this.staticLogger.verbose("Processed strands...");
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
- this.staticLogger.error(`Error calling onRevisions for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Acknowledging ${listenerRevisions.length} strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.error(`Error acknowledging strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Successfully acknowledged strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
311
+ staticLogger().verbose(`[SYNC DEBUG] Successfully acknowledged strands for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
302
312
  }
303
313
  else {
304
- this.staticLogger.error("Failed to acknowledge strands");
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
- this.staticLogger.error(`Error calling onAcknowledge for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] PullResponderTransmitter.setupPull initiated for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Pull interval set to ${loopInterval}ms for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Starting pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.verbose(`[SYNC DEBUG] Completed pull cycle for drive: ${driveId}, listenerId: ${trigger.data.listenerId}, waiting ${loopInterval}ms for next cycle`);
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
- this.staticLogger.verbose(`Scheduling next pull in ${loopInterval} ms`);
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
- this.staticLogger.error(`Error in executeLoop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
356
+ staticLogger().error(`Error in executeLoop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}: ${error}`);
347
357
  });
348
358
  return () => {
349
- this.staticLogger.verbose(`[SYNC DEBUG] Cancelling pull loop for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
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
- this.staticLogger.verbose(`createPullResponderTrigger(drive: ${driveId}, url: ${url})`);
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;IAuB3B,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"}
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
- return syncUnitsQuery.map((s) => ({
28
+ const synchronizationUnits = syncUnitsQuery.map((s) => ({
29
29
  ...s,
30
30
  lastUpdated: drive.created,
31
- revision: revisions.find((r) => r.documentId === s.documentId &&
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: drive.state.global.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[]) => ConsoleLogger;
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,kBAKzC,CAAC"}
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"}