@aws-amplify/datastore 3.7.1-unstable.4 → 3.7.2
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/CHANGELOG.md +20 -0
- package/dist/aws-amplify-datastore.js +45 -4
- package/dist/aws-amplify-datastore.js.map +1 -1
- package/dist/aws-amplify-datastore.min.js +2 -2
- package/dist/aws-amplify-datastore.min.js.map +1 -1
- package/lib/storage/adapter/InMemoryStore.native.d.ts +1 -2
- package/lib/sync/outbox.d.ts +1 -0
- package/lib/sync/outbox.js +39 -5
- package/lib/sync/outbox.js.map +1 -1
- package/lib-esm/storage/adapter/InMemoryStore.native.d.ts +1 -2
- package/lib-esm/sync/outbox.d.ts +1 -0
- package/lib-esm/sync/outbox.js +40 -6
- package/lib-esm/sync/outbox.js.map +1 -1
- package/package.json +7 -7
- package/src/sync/outbox.ts +57 -18
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function createInMemoryStore(): import("@react-native-async-storage/async-storage").AsyncStorageStatic;
|
|
1
|
+
export declare function createInMemoryStore(): AsyncStorage;
|
package/lib/sync/outbox.d.ts
CHANGED
package/lib/sync/outbox.js
CHANGED
|
@@ -202,8 +202,7 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
202
202
|
return __generator(this, function (_a) {
|
|
203
203
|
switch (_a.label) {
|
|
204
204
|
case 0:
|
|
205
|
-
mutationEventModelDefinition = this.schema.namespaces[util_1.SYNC].models
|
|
206
|
-
.MutationEvent;
|
|
205
|
+
mutationEventModelDefinition = this.schema.namespaces[util_1.SYNC].models.MutationEvent;
|
|
207
206
|
return [4 /*yield*/, storage.query(this.MutationEvent, predicates_1.ModelPredicateCreator.createFromExisting(mutationEventModelDefinition, function (c) { return c.modelId('eq', model.id); }))];
|
|
208
207
|
case 1:
|
|
209
208
|
mutationEvents = _a.sent();
|
|
@@ -235,7 +234,7 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
235
234
|
// see https://github.com/aws-amplify/amplify-js/pull/7354 for more details
|
|
236
235
|
MutationEventOutbox.prototype.syncOutboxVersionsOnDequeue = function (storage, record, head, recordOp) {
|
|
237
236
|
return __awaiter(this, void 0, void 0, function () {
|
|
238
|
-
var _version, _lastChangedAt, _deleted, incomingData, data, __version, __lastChangedAt, __deleted, outgoingData, mutationEventModelDefinition, predicate, outdatedMutations, reconciledMutations;
|
|
237
|
+
var _version, _lastChangedAt, _deleted, _incomingData, incomingData, data, __version, __lastChangedAt, __deleted, _outgoingData, outgoingData, mutationEventModelDefinition, predicate, outdatedMutations, reconciledMutations;
|
|
239
238
|
var _this = this;
|
|
240
239
|
return __generator(this, function (_a) {
|
|
241
240
|
switch (_a.label) {
|
|
@@ -243,12 +242,14 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
243
242
|
if (head.operation !== recordOp) {
|
|
244
243
|
return [2 /*return*/];
|
|
245
244
|
}
|
|
246
|
-
_version = record._version, _lastChangedAt = record._lastChangedAt, _deleted = record._deleted,
|
|
245
|
+
_version = record._version, _lastChangedAt = record._lastChangedAt, _deleted = record._deleted, _incomingData = __rest(record, ["_version", "_lastChangedAt", "_deleted"]);
|
|
246
|
+
incomingData = this.removeTimestampFields(head.model, _incomingData);
|
|
247
247
|
data = JSON.parse(head.data);
|
|
248
248
|
if (!data) {
|
|
249
249
|
return [2 /*return*/];
|
|
250
250
|
}
|
|
251
|
-
__version = data._version, __lastChangedAt = data._lastChangedAt, __deleted = data._deleted,
|
|
251
|
+
__version = data._version, __lastChangedAt = data._lastChangedAt, __deleted = data._deleted, _outgoingData = __rest(data, ["_version", "_lastChangedAt", "_deleted"]);
|
|
252
|
+
outgoingData = this.removeTimestampFields(head.model, _outgoingData);
|
|
252
253
|
// Don't sync the version when the data in the response does not match the data
|
|
253
254
|
// in the request, i.e., when there's a handled conflict
|
|
254
255
|
if (!util_1.valuesEqual(incomingData, outgoingData, true)) {
|
|
@@ -294,6 +295,39 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
294
295
|
_deleted: _deleted }, previousData), currentData));
|
|
295
296
|
return this.modelInstanceCreator(this.MutationEvent, __assign(__assign({}, current), { data: data }));
|
|
296
297
|
};
|
|
298
|
+
/*
|
|
299
|
+
if a model is using custom timestamp fields
|
|
300
|
+
the custom field names will be stored in the model attributes
|
|
301
|
+
|
|
302
|
+
e.g.
|
|
303
|
+
"attributes": [
|
|
304
|
+
{
|
|
305
|
+
"type": "model",
|
|
306
|
+
"properties": {
|
|
307
|
+
"timestamps": {
|
|
308
|
+
"createdAt": "createdOn",
|
|
309
|
+
"updatedAt": "updatedOn"
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
*/
|
|
315
|
+
MutationEventOutbox.prototype.removeTimestampFields = function (model, record) {
|
|
316
|
+
var _a, _b;
|
|
317
|
+
var CREATED_AT_DEFAULT_KEY = 'createdAt';
|
|
318
|
+
var UPDATED_AT_DEFAULT_KEY = 'updatedAt';
|
|
319
|
+
var createdTimestampKey = CREATED_AT_DEFAULT_KEY;
|
|
320
|
+
var updatedTimestampKey = UPDATED_AT_DEFAULT_KEY;
|
|
321
|
+
var modelAttributes = (_a = this.schema.namespaces[util_1.USER].models[model].attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'model'; });
|
|
322
|
+
var timestampFieldsMap = (_b = modelAttributes === null || modelAttributes === void 0 ? void 0 : modelAttributes.properties) === null || _b === void 0 ? void 0 : _b.timestamps;
|
|
323
|
+
if (timestampFieldsMap) {
|
|
324
|
+
createdTimestampKey = timestampFieldsMap[CREATED_AT_DEFAULT_KEY];
|
|
325
|
+
updatedTimestampKey = timestampFieldsMap[UPDATED_AT_DEFAULT_KEY];
|
|
326
|
+
}
|
|
327
|
+
delete record[createdTimestampKey];
|
|
328
|
+
delete record[updatedTimestampKey];
|
|
329
|
+
return record;
|
|
330
|
+
};
|
|
297
331
|
return MutationEventOutbox;
|
|
298
332
|
}());
|
|
299
333
|
exports.MutationEventOutbox = MutationEventOutbox;
|
package/lib/sync/outbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/sync/outbox.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAsD;AAOtD,kCAKkB;AAClB,
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/sync/outbox.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAsD;AAOtD,kCAKkB;AAClB,gCAAkD;AAClD,iCAAkD;AAElD,4BAA4B;AAC5B;IAGC,6BACkB,MAAsB,EACtB,aAAwD,EACxD,oBAA0C,EAC1C,SAAiB;QAHjB,WAAM,GAAN,MAAM,CAAgB;QACtB,kBAAa,GAAb,aAAa,CAA2C;QACxD,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,cAAS,GAAT,SAAS,CAAQ;IAChC,CAAC;IAES,qCAAO,GAApB,UACC,OAAgB,EAChB,aAA4B;;;;gBAE5B,OAAO,CAAC,YAAY,CAAC,UAAM,CAAC;;;;;;gCACrB,4BAA4B,GACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gCAEhD,SAAS,GAAG,kCAAqB,CAAC,kBAAkB,CACzD,4BAA4B,EAC5B,UAAA,CAAC;oCACA,OAAA,CAAC;yCACC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;yCACpC,EAAE,CAAC,IAAI,EAAE,KAAI,CAAC,yBAAyB,CAAC;gCAF1C,CAE0C,CAC3C,CAAC;gCAEc,qBAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAA;;gCAAtD,KAAA,sBAAU,SAA4C,KAAA,EAArD,KAAK,QAAA;qCAER,CAAA,KAAK,KAAK,SAAS,CAAA,EAAnB,wBAAmB;gCACtB,qBAAM,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAA;;gCAAtD,SAAsD,CAAC;gCACvD,sBAAO;;gCAGW,oBAAoB,GAAK,aAAa,UAAlB,CAAmB;qCAEtD,CAAA,KAAK,CAAC,SAAS,KAAK,+BAAuB,CAAC,MAAM,CAAA,EAAlD,wBAAkD;qCACjD,CAAA,oBAAoB,KAAK,+BAAuB,CAAC,MAAM,CAAA,EAAvD,wBAAuD;gCAC1D,qBAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAA;;gCAA7C,SAA6C,CAAC;;;gCAMxC,WAAS,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gCAC1D,qBAAM,CAAC,CAAC,IAAI,CACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,UAAA,KAAK;wCACrC,KAAK,CAAC,IAAI,GAAG,QAAM,CAAC,IAAI,CAAC;oCAC1B,CAAC,CAAC,EACF,SAAS,EACT,IAAI,CAAC,SAAS,CACd,EAAA;;gCAND,SAMC,CAAC;;;;gCAGgB,qBAAqB,GAAK,aAAa,UAAlB,CAAmB;gCACrD,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gCACxD,MAAM,SAAe,CAAC;qCAGtB,CAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA,EAA3C,yBAA2C;gCAC9C,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gCAEpD,uBAAuB;gCACvB,qBAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAA;;gCAD7C,uBAAuB;gCACvB,SAA6C,CAAC;;;gCAG/C,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC;gCAEjC,kBAAkB;gCAClB,qBAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAA;;gCAD/C,kBAAkB;gCAClB,SAA+C,CAAC;;;;;qBAEjD,CAAC,CAAC;;;;KACH;IAEY,qCAAO,GAApB,UACC,OAAqB,EACrB,MAAwB,EACxB,QAAkC;;;;;4BAErB,qBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAA/B,IAAI,GAAG,SAAwB;6BAEjC,MAAM,EAAN,wBAAM;wBACT,qBAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;;4BAGzE,qBAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAA;;wBAA1B,SAA0B,CAAC;wBAC3B,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;wBAE3C,sBAAO,IAAI,EAAC;;;;KACZ;IAED;;;;OAIG;IACU,kCAAI,GAAjB,UAAkB,OAAsB;;;;;4BAC1B,qBAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAQ,CAAC,KAAK,CAAC,EAAA;;wBAAjE,IAAI,GAAG,SAA0D;wBAEvE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;wBAE5D,sBAAO,IAAI,EAAC;;;;KACZ;IAEY,yCAAW,GAAxB,UACC,OAAsB,EACtB,KAAQ;;;;;;wBAEF,4BAA4B,GACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;wBAE5B,qBAAM,OAAO,CAAC,KAAK,CACzC,IAAI,CAAC,aAAa,EAClB,kCAAqB,CAAC,kBAAkB,CACvC,4BAA4B,EAC5B,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAzB,CAAyB,CAC9B,CACD,EAAA;;wBANK,cAAc,GAAG,SAMtB;wBAED,sBAAO,cAAc,EAAC;;;;KACtB;IAEY,yCAAW,GAAxB,UAAyB,OAAsB;;;;;4BACvB,qBAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAAxD,cAAc,GAAG,SAAuC;wBAExD,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;wBAEjC,cAAc,CAAC,OAAO,CAAC,UAAC,EAAW;gCAAT,oBAAO;4BAAO,OAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;wBAAnB,CAAmB,CAAC,CAAC;wBAE7D,sBAAO,MAAM,EAAC;;;;KACd;IAED,qEAAqE;IACrE,yCAAyC;IACzC,2EAA2E;IAC7D,yDAA2B,GAAzC,UACC,OAAqB,EACrB,MAAuB,EACvB,IAAqB,EACrB,QAAgB;;;;;;;wBAEhB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;4BAChC,sBAAO;yBACP;wBAEO,QAAQ,GAAiD,MAAM,SAAvD,EAAE,cAAc,GAAiC,MAAM,eAAvC,EAAE,QAAQ,GAAuB,MAAM,SAA7B,EAAK,aAAa,UAAK,MAAM,EAAjE,0CAAwD,CAAF,CAAY;wBAClE,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAErE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEnC,IAAI,CAAC,IAAI,EAAE;4BACV,sBAAO;yBACP;wBAGU,SAAS,GAIhB,IAAI,SAJY,EACH,eAAe,GAG5B,IAAI,eAHwB,EACrB,SAAS,GAEhB,IAAI,SAFY,EAChB,aAAa,UACb,IAAI,EALF,0CAKL,CADgB,CACR;wBACH,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAE3E,+EAA+E;wBAC/E,wDAAwD;wBACxD,IAAI,CAAC,kBAAW,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;4BACnD,sBAAO;yBACP;wBAEK,4BAA4B,GACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;wBAEhD,SAAS,GAAG,kCAAqB,CAAC,kBAAkB,CACzD,4BAA4B,EAC5B,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAI,CAAC,yBAAyB,CAAC,EAAnE,CAAmE,CACxE,CAAC;wBAEwB,qBAAM,OAAO,CAAC,KAAK,CAC5C,IAAI,CAAC,aAAa,EAClB,SAAS,CACT,EAAA;;wBAHK,iBAAiB,GAAG,SAGzB;wBAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;4BAC9B,sBAAO;yBACP;wBAEK,mBAAmB,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAA,CAAC;4BAClD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAEnC,IAAM,OAAO,yBAAQ,OAAO,KAAE,QAAQ,UAAA,EAAE,cAAc,gBAAA,GAAE,CAAC;4BAEzD,OAAO,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,UAAA,KAAK;gCACxC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;4BACtC,CAAC,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC;wBAEH,qBAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAA;;wBAAnD,SAAmD,CAAC;wBAEpD,qBAAM,OAAO,CAAC,GAAG,CAChB,mBAAmB,CAAC,GAAG,CACtB,UAAM,CAAC;;4CAAI,qBAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAA;4CAAhD,sBAAA,SAAgD,EAAA;;qCAAA,CAC3D,CACD,EAAA;;wBAJD,SAIC,CAAC;;;;;KACF;IAEO,6CAAe,GAAvB,UACC,QAAuB,EACvB,OAAsB;QAEtB,IAAM,8BACoB,EADlB,sBAAQ,EAAE,UAAE,EAAE,kCAAc,EAAE,sBAAQ,EAAE,2EACtB,CAAC;QAE3B,IAAM,6BAMsB,EAL3B,YAAQ,EACR,uBAAmB,EACnB,mCAA+B,EAC/B,uBAAmB,EACnB,0EAC2B,CAAC;QAE7B,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,qBAC1B,EAAE,IAAA;YACF,QAAQ,UAAA;YACR,cAAc,gBAAA;YACd,QAAQ,UAAA,IACL,YAAY,GACZ,WAAW,EACb,CAAC;QAEH,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,wBAC/C,OAAO,KACV,IAAI,MAAA,IACH,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;MAgBE;IACM,mDAAqB,GAA7B,UACC,KAAa,EACb,MAAuB;;QAEvB,IAAM,sBAAsB,GAAG,WAAW,CAAC;QAC3C,IAAM,sBAAsB,GAAG,WAAW,CAAC;QAE3C,IAAI,mBAAmB,GAAG,sBAAsB,CAAC;QACjD,IAAI,mBAAmB,GAAG,sBAAsB,CAAC;QAEjD,IAAM,eAAe,SAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAI,CAAC,CAAC,MAAM,CAC1D,KAAK,CACL,CAAC,UAAU,0CAAE,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC,CAAC;QAClD,IAAM,kBAAkB,SAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,0CAAE,UAAU,CAAC;QAEnE,IAAI,kBAAkB,EAAE;YACvB,mBAAmB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;YACjE,mBAAmB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;SACjE;QAED,OAAQ,MAA8B,CAAC,mBAAmB,CAAC,CAAC;QAC5D,OAAQ,MAA8B,CAAC,mBAAmB,CAAC,CAAC;QAE5D,OAAO,MAAM,CAAC;IACf,CAAC;IACF,0BAAC;AAAD,CAAC,AAnRD,IAmRC;AAEQ,kDAAmB"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function createInMemoryStore(): import("@react-native-async-storage/async-storage").AsyncStorageStatic;
|
|
1
|
+
export declare function createInMemoryStore(): AsyncStorage;
|
package/lib-esm/sync/outbox.d.ts
CHANGED
package/lib-esm/sync/outbox.js
CHANGED
|
@@ -74,7 +74,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
74
74
|
};
|
|
75
75
|
import { ModelPredicateCreator } from '../predicates';
|
|
76
76
|
import { QueryOne, } from '../types';
|
|
77
|
-
import { SYNC, valuesEqual } from '../util';
|
|
77
|
+
import { USER, SYNC, valuesEqual } from '../util';
|
|
78
78
|
import { TransformerMutationType } from './utils';
|
|
79
79
|
// TODO: Persist deleted ids
|
|
80
80
|
var MutationEventOutbox = /** @class */ (function () {
|
|
@@ -200,8 +200,7 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
200
200
|
return __generator(this, function (_a) {
|
|
201
201
|
switch (_a.label) {
|
|
202
202
|
case 0:
|
|
203
|
-
mutationEventModelDefinition = this.schema.namespaces[SYNC].models
|
|
204
|
-
.MutationEvent;
|
|
203
|
+
mutationEventModelDefinition = this.schema.namespaces[SYNC].models.MutationEvent;
|
|
205
204
|
return [4 /*yield*/, storage.query(this.MutationEvent, ModelPredicateCreator.createFromExisting(mutationEventModelDefinition, function (c) { return c.modelId('eq', model.id); }))];
|
|
206
205
|
case 1:
|
|
207
206
|
mutationEvents = _a.sent();
|
|
@@ -233,7 +232,7 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
233
232
|
// see https://github.com/aws-amplify/amplify-js/pull/7354 for more details
|
|
234
233
|
MutationEventOutbox.prototype.syncOutboxVersionsOnDequeue = function (storage, record, head, recordOp) {
|
|
235
234
|
return __awaiter(this, void 0, void 0, function () {
|
|
236
|
-
var _version, _lastChangedAt, _deleted, incomingData, data, __version, __lastChangedAt, __deleted, outgoingData, mutationEventModelDefinition, predicate, outdatedMutations, reconciledMutations;
|
|
235
|
+
var _version, _lastChangedAt, _deleted, _incomingData, incomingData, data, __version, __lastChangedAt, __deleted, _outgoingData, outgoingData, mutationEventModelDefinition, predicate, outdatedMutations, reconciledMutations;
|
|
237
236
|
var _this = this;
|
|
238
237
|
return __generator(this, function (_a) {
|
|
239
238
|
switch (_a.label) {
|
|
@@ -241,12 +240,14 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
241
240
|
if (head.operation !== recordOp) {
|
|
242
241
|
return [2 /*return*/];
|
|
243
242
|
}
|
|
244
|
-
_version = record._version, _lastChangedAt = record._lastChangedAt, _deleted = record._deleted,
|
|
243
|
+
_version = record._version, _lastChangedAt = record._lastChangedAt, _deleted = record._deleted, _incomingData = __rest(record, ["_version", "_lastChangedAt", "_deleted"]);
|
|
244
|
+
incomingData = this.removeTimestampFields(head.model, _incomingData);
|
|
245
245
|
data = JSON.parse(head.data);
|
|
246
246
|
if (!data) {
|
|
247
247
|
return [2 /*return*/];
|
|
248
248
|
}
|
|
249
|
-
__version = data._version, __lastChangedAt = data._lastChangedAt, __deleted = data._deleted,
|
|
249
|
+
__version = data._version, __lastChangedAt = data._lastChangedAt, __deleted = data._deleted, _outgoingData = __rest(data, ["_version", "_lastChangedAt", "_deleted"]);
|
|
250
|
+
outgoingData = this.removeTimestampFields(head.model, _outgoingData);
|
|
250
251
|
// Don't sync the version when the data in the response does not match the data
|
|
251
252
|
// in the request, i.e., when there's a handled conflict
|
|
252
253
|
if (!valuesEqual(incomingData, outgoingData, true)) {
|
|
@@ -292,6 +293,39 @@ var MutationEventOutbox = /** @class */ (function () {
|
|
|
292
293
|
_deleted: _deleted }, previousData), currentData));
|
|
293
294
|
return this.modelInstanceCreator(this.MutationEvent, __assign(__assign({}, current), { data: data }));
|
|
294
295
|
};
|
|
296
|
+
/*
|
|
297
|
+
if a model is using custom timestamp fields
|
|
298
|
+
the custom field names will be stored in the model attributes
|
|
299
|
+
|
|
300
|
+
e.g.
|
|
301
|
+
"attributes": [
|
|
302
|
+
{
|
|
303
|
+
"type": "model",
|
|
304
|
+
"properties": {
|
|
305
|
+
"timestamps": {
|
|
306
|
+
"createdAt": "createdOn",
|
|
307
|
+
"updatedAt": "updatedOn"
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
]
|
|
312
|
+
*/
|
|
313
|
+
MutationEventOutbox.prototype.removeTimestampFields = function (model, record) {
|
|
314
|
+
var _a, _b;
|
|
315
|
+
var CREATED_AT_DEFAULT_KEY = 'createdAt';
|
|
316
|
+
var UPDATED_AT_DEFAULT_KEY = 'updatedAt';
|
|
317
|
+
var createdTimestampKey = CREATED_AT_DEFAULT_KEY;
|
|
318
|
+
var updatedTimestampKey = UPDATED_AT_DEFAULT_KEY;
|
|
319
|
+
var modelAttributes = (_a = this.schema.namespaces[USER].models[model].attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'model'; });
|
|
320
|
+
var timestampFieldsMap = (_b = modelAttributes === null || modelAttributes === void 0 ? void 0 : modelAttributes.properties) === null || _b === void 0 ? void 0 : _b.timestamps;
|
|
321
|
+
if (timestampFieldsMap) {
|
|
322
|
+
createdTimestampKey = timestampFieldsMap[CREATED_AT_DEFAULT_KEY];
|
|
323
|
+
updatedTimestampKey = timestampFieldsMap[UPDATED_AT_DEFAULT_KEY];
|
|
324
|
+
}
|
|
325
|
+
delete record[createdTimestampKey];
|
|
326
|
+
delete record[updatedTimestampKey];
|
|
327
|
+
return record;
|
|
328
|
+
};
|
|
295
329
|
return MutationEventOutbox;
|
|
296
330
|
}());
|
|
297
331
|
export { MutationEventOutbox };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/sync/outbox.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAOtD,OAAO,EAIN,QAAQ,GACR,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/sync/outbox.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/datastore",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"description": "AppSyncLocal support for aws-amplify",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"fake-indexeddb": "3.0.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@aws-amplify/api": "4.0.
|
|
52
|
-
"@aws-amplify/auth": "4.3.
|
|
53
|
-
"@aws-amplify/core": "4.3.
|
|
54
|
-
"@aws-amplify/pubsub": "4.2.
|
|
55
|
-
"amazon-cognito-identity-js": "5.2.
|
|
51
|
+
"@aws-amplify/api": "4.0.28",
|
|
52
|
+
"@aws-amplify/auth": "4.3.18",
|
|
53
|
+
"@aws-amplify/core": "4.3.10",
|
|
54
|
+
"@aws-amplify/pubsub": "4.2.4",
|
|
55
|
+
"amazon-cognito-identity-js": "5.2.3",
|
|
56
56
|
"idb": "5.0.6",
|
|
57
57
|
"immer": "9.0.6",
|
|
58
58
|
"ulid": "2.3.0",
|
|
@@ -111,5 +111,5 @@
|
|
|
111
111
|
"lib-esm"
|
|
112
112
|
]
|
|
113
113
|
},
|
|
114
|
-
"gitHead": "
|
|
114
|
+
"gitHead": "ab767c197e902ffdbdc909503f0024f44a0058b4"
|
|
115
115
|
}
|
package/src/sync/outbox.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
PersistentModelConstructor,
|
|
13
13
|
QueryOne,
|
|
14
14
|
} from '../types';
|
|
15
|
-
import { SYNC, valuesEqual } from '../util';
|
|
15
|
+
import { USER, SYNC, valuesEqual } from '../util';
|
|
16
16
|
import { TransformerMutationType } from './utils';
|
|
17
17
|
|
|
18
18
|
// TODO: Persist deleted ids
|
|
@@ -31,9 +31,8 @@ class MutationEventOutbox {
|
|
|
31
31
|
mutationEvent: MutationEvent
|
|
32
32
|
): Promise<void> {
|
|
33
33
|
storage.runExclusive(async s => {
|
|
34
|
-
const mutationEventModelDefinition =
|
|
35
|
-
'MutationEvent'
|
|
36
|
-
];
|
|
34
|
+
const mutationEventModelDefinition =
|
|
35
|
+
this.schema.namespaces[SYNC].models['MutationEvent'];
|
|
37
36
|
|
|
38
37
|
const predicate = ModelPredicateCreator.createFromExisting<MutationEvent>(
|
|
39
38
|
mutationEventModelDefinition,
|
|
@@ -124,8 +123,8 @@ class MutationEventOutbox {
|
|
|
124
123
|
storage: StorageFacade,
|
|
125
124
|
model: T
|
|
126
125
|
): Promise<MutationEvent[]> {
|
|
127
|
-
const mutationEventModelDefinition =
|
|
128
|
-
.MutationEvent;
|
|
126
|
+
const mutationEventModelDefinition =
|
|
127
|
+
this.schema.namespaces[SYNC].models.MutationEvent;
|
|
129
128
|
|
|
130
129
|
const mutationEvents = await storage.query(
|
|
131
130
|
this.MutationEvent,
|
|
@@ -161,7 +160,9 @@ class MutationEventOutbox {
|
|
|
161
160
|
return;
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
const { _version, _lastChangedAt, _deleted, ...
|
|
163
|
+
const { _version, _lastChangedAt, _deleted, ..._incomingData } = record;
|
|
164
|
+
const incomingData = this.removeTimestampFields(head.model, _incomingData);
|
|
165
|
+
|
|
165
166
|
const data = JSON.parse(head.data);
|
|
166
167
|
|
|
167
168
|
if (!data) {
|
|
@@ -172,8 +173,9 @@ class MutationEventOutbox {
|
|
|
172
173
|
_version: __version,
|
|
173
174
|
_lastChangedAt: __lastChangedAt,
|
|
174
175
|
_deleted: __deleted,
|
|
175
|
-
...
|
|
176
|
+
..._outgoingData
|
|
176
177
|
} = data;
|
|
178
|
+
const outgoingData = this.removeTimestampFields(head.model, _outgoingData);
|
|
177
179
|
|
|
178
180
|
// Don't sync the version when the data in the response does not match the data
|
|
179
181
|
// in the request, i.e., when there's a handled conflict
|
|
@@ -181,9 +183,8 @@ class MutationEventOutbox {
|
|
|
181
183
|
return;
|
|
182
184
|
}
|
|
183
185
|
|
|
184
|
-
const mutationEventModelDefinition =
|
|
185
|
-
'MutationEvent'
|
|
186
|
-
];
|
|
186
|
+
const mutationEventModelDefinition =
|
|
187
|
+
this.schema.namespaces[SYNC].models['MutationEvent'];
|
|
187
188
|
|
|
188
189
|
const predicate = ModelPredicateCreator.createFromExisting<MutationEvent>(
|
|
189
190
|
mutationEventModelDefinition,
|
|
@@ -222,13 +223,8 @@ class MutationEventOutbox {
|
|
|
222
223
|
previous: MutationEvent,
|
|
223
224
|
current: MutationEvent
|
|
224
225
|
): MutationEvent {
|
|
225
|
-
const {
|
|
226
|
-
|
|
227
|
-
id,
|
|
228
|
-
_lastChangedAt,
|
|
229
|
-
_deleted,
|
|
230
|
-
...previousData
|
|
231
|
-
} = JSON.parse(previous.data);
|
|
226
|
+
const { _version, id, _lastChangedAt, _deleted, ...previousData } =
|
|
227
|
+
JSON.parse(previous.data);
|
|
232
228
|
|
|
233
229
|
const {
|
|
234
230
|
id: __id,
|
|
@@ -252,6 +248,49 @@ class MutationEventOutbox {
|
|
|
252
248
|
data,
|
|
253
249
|
});
|
|
254
250
|
}
|
|
251
|
+
|
|
252
|
+
/*
|
|
253
|
+
if a model is using custom timestamp fields
|
|
254
|
+
the custom field names will be stored in the model attributes
|
|
255
|
+
|
|
256
|
+
e.g.
|
|
257
|
+
"attributes": [
|
|
258
|
+
{
|
|
259
|
+
"type": "model",
|
|
260
|
+
"properties": {
|
|
261
|
+
"timestamps": {
|
|
262
|
+
"createdAt": "createdOn",
|
|
263
|
+
"updatedAt": "updatedOn"
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
]
|
|
268
|
+
*/
|
|
269
|
+
private removeTimestampFields(
|
|
270
|
+
model: string,
|
|
271
|
+
record: PersistentModel
|
|
272
|
+
): PersistentModel {
|
|
273
|
+
const CREATED_AT_DEFAULT_KEY = 'createdAt';
|
|
274
|
+
const UPDATED_AT_DEFAULT_KEY = 'updatedAt';
|
|
275
|
+
|
|
276
|
+
let createdTimestampKey = CREATED_AT_DEFAULT_KEY;
|
|
277
|
+
let updatedTimestampKey = UPDATED_AT_DEFAULT_KEY;
|
|
278
|
+
|
|
279
|
+
const modelAttributes = this.schema.namespaces[USER].models[
|
|
280
|
+
model
|
|
281
|
+
].attributes?.find(attr => attr.type === 'model');
|
|
282
|
+
const timestampFieldsMap = modelAttributes?.properties?.timestamps;
|
|
283
|
+
|
|
284
|
+
if (timestampFieldsMap) {
|
|
285
|
+
createdTimestampKey = timestampFieldsMap[CREATED_AT_DEFAULT_KEY];
|
|
286
|
+
updatedTimestampKey = timestampFieldsMap[UPDATED_AT_DEFAULT_KEY];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
delete (record as Record<string, any>)[createdTimestampKey];
|
|
290
|
+
delete (record as Record<string, any>)[updatedTimestampKey];
|
|
291
|
+
|
|
292
|
+
return record;
|
|
293
|
+
}
|
|
255
294
|
}
|
|
256
295
|
|
|
257
296
|
export { MutationEventOutbox };
|