@budibase/backend-core 3.22.3 → 3.22.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@budibase/backend-core",
3
- "version": "3.22.3",
3
+ "version": "3.22.5",
4
4
  "description": "Budibase backend core libraries used in server and worker",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -113,5 +113,5 @@
113
113
  }
114
114
  }
115
115
  },
116
- "gitHead": "77c492b4bf230227fb0df5a8d30e956fe24be73e"
116
+ "gitHead": "fc3318084a6736e7b8b1a0d9cc9a2ed38448f818"
117
117
  }
@@ -12,6 +12,9 @@ declare class Replication {
12
12
  });
13
13
  close(): Promise<void>;
14
14
  replicate(opts?: PouchDB.Replication.ReplicateOptions): Promise<PouchDB.Replication.ReplicationResult<{}>>;
15
+ resolveInconsistencies(documentIds: string[]): Promise<void>;
16
+ private haveReplicationInconsistencies;
17
+ private getRevisionNumber;
15
18
  appReplicateOpts(opts?: PouchDB.Replication.ReplicateOptions & {
16
19
  isCreation?: boolean;
17
20
  tablesToSync?: string[] | "all";
@@ -56,6 +56,44 @@ class Replication {
56
56
  });
57
57
  });
58
58
  }
59
+ // Resolves replication conflicts by treating source as the source of truth.
60
+ // For documents where target revision is higher than source, removes the target
61
+ // document and re-replicates from source to ensure source version prevails.
62
+ resolveInconsistencies(documentIds) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const inconsistentDocumentIds = [];
65
+ for (const documentId of documentIds) {
66
+ try {
67
+ const [sourceDocument, targetDocument] = yield Promise.all([
68
+ this.source.get(documentId),
69
+ this.target.get(documentId),
70
+ ]);
71
+ if (this.haveReplicationInconsistencies(sourceDocument, targetDocument)) {
72
+ yield this.target.remove({
73
+ _id: targetDocument._id,
74
+ _rev: targetDocument._rev,
75
+ });
76
+ inconsistentDocumentIds.push(sourceDocument._id);
77
+ }
78
+ }
79
+ catch (error) {
80
+ console.warn("Cannot resolve inconsistencies for document", documentId);
81
+ }
82
+ }
83
+ if (inconsistentDocumentIds.length > 0) {
84
+ yield this.replicate({ doc_ids: inconsistentDocumentIds });
85
+ }
86
+ });
87
+ }
88
+ haveReplicationInconsistencies(sourceDocument, targetDocument) {
89
+ const sourceRevisionNumber = this.getRevisionNumber(sourceDocument);
90
+ const targetRevisionNumber = this.getRevisionNumber(targetDocument);
91
+ return targetRevisionNumber > sourceRevisionNumber;
92
+ }
93
+ getRevisionNumber(document) {
94
+ var _a;
95
+ return parseInt(((_a = document._rev) === null || _a === void 0 ? void 0 : _a.split("-")[0]) || "0");
96
+ }
59
97
  appReplicateOpts(opts = {}) {
60
98
  if (typeof opts.filter === "string") {
61
99
  return opts;
@@ -1 +1 @@
1
- {"version":3,"file":"Replication.js","sourceRoot":"","sources":["../../../src/db/Replication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Replication.js","sourceRoot":"","sources":["../../../src/db/Replication.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@budibase/backend-core",
3
- "version": "3.22.3",
3
+ "version": "3.22.5",
4
4
  "description": "Budibase backend core libraries used in server and worker",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -113,5 +113,5 @@
113
113
  }
114
114
  }
115
115
  },
116
- "gitHead": "77c492b4bf230227fb0df5a8d30e956fe24be73e"
116
+ "gitHead": "fc3318084a6736e7b8b1a0d9cc9a2ed38448f818"
117
117
  }