dataflux 1.8.0 → 1.9.0
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/README.md +125 -24
- package/dist/BasicObj.js +53 -6
- package/dist/Model.js +144 -29
- package/dist/ObserverStore.js +18 -6
- package/dist/PersistentStore.js +22 -7
- package/dist/Store.js +202 -64
- package/dist/dataflux.min.js +1 -1
- package/dist/dataflux.min.js.map +1 -1
- package/dist/modelHooksUtils.js +19 -13
- package/package.json +1 -1
package/dist/ObserverStore.js
CHANGED
|
@@ -311,6 +311,18 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
|
|
|
311
311
|
});
|
|
312
312
|
}
|
|
313
313
|
}, {
|
|
314
|
+
key: "mock",
|
|
315
|
+
value: function mock(type, objects) {
|
|
316
|
+
var _this3 = this;
|
|
317
|
+
|
|
318
|
+
objects = Array.isArray(objects) ? objects : [objects];
|
|
319
|
+
return _get(_getPrototypeOf(ObserverStore.prototype), "mock", this).call(this, type, objects).then(function (objects) {
|
|
320
|
+
_classPrivateMethodGet(_this3, _propagateInsertChange, _propagateInsertChange2).call(_this3, type, objects);
|
|
321
|
+
|
|
322
|
+
return objects;
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
}, {
|
|
314
326
|
key: "delete",
|
|
315
327
|
value: function _delete(typeOrObjects, filterFunction) {
|
|
316
328
|
return _get(_getPrototypeOf(ObserverStore.prototype), "delete", this).call(this, typeOrObjects, filterFunction).then(_classPrivateFieldGet(this, _propagateChange));
|
|
@@ -321,12 +333,12 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
|
|
|
321
333
|
}(_PersistentStore2["default"]);
|
|
322
334
|
|
|
323
335
|
function _propagateInsertChange2(type, newObjects) {
|
|
324
|
-
var
|
|
336
|
+
var _this4 = this;
|
|
325
337
|
|
|
326
338
|
return (_classPrivateFieldGet(this, _unsubPromises).length ? Promise.all(_classPrivateFieldGet(this, _unsubPromises)) : Promise.resolve()).then(function () {
|
|
327
|
-
if (
|
|
339
|
+
if (_this4._subscribed[type]) {
|
|
328
340
|
var uniqueSubs = {};
|
|
329
|
-
var objects = Object.values(
|
|
341
|
+
var objects = Object.values(_this4._subscribed[type]);
|
|
330
342
|
|
|
331
343
|
for (var _i2 = 0, _objects = objects; _i2 < _objects.length; _i2++) {
|
|
332
344
|
var object = _objects[_i2];
|
|
@@ -357,7 +369,7 @@ function _propagateInsertChange2(type, newObjects) {
|
|
|
357
369
|
|
|
358
370
|
if (objectsToSubscribe.length) {
|
|
359
371
|
// Check if the new objects matter
|
|
360
|
-
return
|
|
372
|
+
return _this4.find(type, filterFunction).then(function (data) {
|
|
361
373
|
var subKey;
|
|
362
374
|
|
|
363
375
|
var _iterator6 = _createForOfIteratorHelper(data),
|
|
@@ -367,7 +379,7 @@ function _propagateInsertChange2(type, newObjects) {
|
|
|
367
379
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
368
380
|
var d = _step6.value;
|
|
369
381
|
|
|
370
|
-
var item =
|
|
382
|
+
var item = _this4._subscribed[d.getModel().getType()][d.getId()];
|
|
371
383
|
|
|
372
384
|
subKey = item ? item.subKey : null;
|
|
373
385
|
if (subKey) break;
|
|
@@ -378,7 +390,7 @@ function _propagateInsertChange2(type, newObjects) {
|
|
|
378
390
|
_iterator6.f();
|
|
379
391
|
}
|
|
380
392
|
|
|
381
|
-
_classPrivateFieldGet(
|
|
393
|
+
_classPrivateFieldGet(_this4, _subscribeToObjects).call(_this4, type, objectsToSubscribe, {
|
|
382
394
|
callback: callback,
|
|
383
395
|
filterFunction: filterFunction,
|
|
384
396
|
subKey: subKey
|
package/dist/PersistentStore.js
CHANGED
|
@@ -105,32 +105,42 @@ var PersistentStore = /*#__PURE__*/function (_Store) {
|
|
|
105
105
|
var inserted = _ref2.inserted,
|
|
106
106
|
updated = _ref2.updated,
|
|
107
107
|
deleted = _ref2.deleted;
|
|
108
|
-
var model = _this.models[type].model; //
|
|
108
|
+
var model = _this.models[type].model; // Validate objects
|
|
109
|
+
|
|
110
|
+
var correctInserted = inserted.filter(function (object) {
|
|
111
|
+
return model.isObjectValid(object.object);
|
|
112
|
+
});
|
|
113
|
+
var correctUpdated = updated.filter(function (object) {
|
|
114
|
+
return model.isObjectValid(object.object);
|
|
115
|
+
});
|
|
116
|
+
var correctDeleted = deleted.filter(function (object) {
|
|
117
|
+
return model.isObjectValid(object.object);
|
|
118
|
+
}); // Operations order:
|
|
109
119
|
// 1) insert
|
|
110
120
|
// 2) update
|
|
111
121
|
// 3) delete
|
|
112
122
|
|
|
113
|
-
return model.insertObjects(
|
|
123
|
+
return model.insertObjects(correctInserted.map(function (i) {
|
|
114
124
|
return i.object;
|
|
115
125
|
})).then(function () {
|
|
116
126
|
return _this.applyDiff({
|
|
117
|
-
inserted:
|
|
127
|
+
inserted: correctInserted
|
|
118
128
|
}, type);
|
|
119
129
|
}).then(function () {
|
|
120
|
-
return model.updateObjects(
|
|
130
|
+
return model.updateObjects(correctUpdated.map(function (i) {
|
|
121
131
|
return i.object;
|
|
122
132
|
}));
|
|
123
133
|
}).then(function () {
|
|
124
134
|
return _this.applyDiff({
|
|
125
|
-
updated:
|
|
135
|
+
updated: correctUpdated
|
|
126
136
|
}, type);
|
|
127
137
|
}).then(function () {
|
|
128
|
-
return model.deleteObjects(
|
|
138
|
+
return model.deleteObjects(correctDeleted.map(function (i) {
|
|
129
139
|
return i.object;
|
|
130
140
|
}));
|
|
131
141
|
}).then(function () {
|
|
132
142
|
return _this.applyDiff({
|
|
133
|
-
deleted:
|
|
143
|
+
deleted: correctDeleted
|
|
134
144
|
}, type);
|
|
135
145
|
});
|
|
136
146
|
});
|
|
@@ -186,6 +196,11 @@ var PersistentStore = /*#__PURE__*/function (_Store) {
|
|
|
186
196
|
return data;
|
|
187
197
|
});
|
|
188
198
|
}
|
|
199
|
+
}, {
|
|
200
|
+
key: "mock",
|
|
201
|
+
value: function mock(type, objects) {
|
|
202
|
+
return _get(_getPrototypeOf(PersistentStore.prototype), "mock", this).call(this, type, objects);
|
|
203
|
+
}
|
|
189
204
|
}, {
|
|
190
205
|
key: "delete",
|
|
191
206
|
value: function _delete(typeOrObjects, filterFunction) {
|
package/dist/Store.js
CHANGED
|
@@ -9,6 +9,8 @@ var _Obj = _interopRequireDefault(require("./Obj"));
|
|
|
9
9
|
|
|
10
10
|
var _PubSub = _interopRequireDefault(require("./PubSub"));
|
|
11
11
|
|
|
12
|
+
var _batchPromises = _interopRequireDefault(require("batch-promises"));
|
|
13
|
+
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
15
|
|
|
14
16
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
@@ -23,10 +25,10 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
|
23
25
|
|
|
24
26
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
25
27
|
|
|
26
|
-
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
27
|
-
|
|
28
28
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
|
29
29
|
|
|
30
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
31
|
+
|
|
30
32
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
31
33
|
|
|
32
34
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -39,6 +41,12 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
|
|
|
39
41
|
|
|
40
42
|
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
|
41
43
|
|
|
44
|
+
var objectStatuses = ["new", "old", "mock", "deleted"];
|
|
45
|
+
|
|
46
|
+
var _refreshObjectByType = /*#__PURE__*/new WeakMap();
|
|
47
|
+
|
|
48
|
+
var _merge = /*#__PURE__*/new WeakMap();
|
|
49
|
+
|
|
42
50
|
var _error = /*#__PURE__*/new WeakSet();
|
|
43
51
|
|
|
44
52
|
var _deleteByObject = /*#__PURE__*/new WeakMap();
|
|
@@ -53,7 +61,9 @@ var _loadObjects = /*#__PURE__*/new WeakSet();
|
|
|
53
61
|
|
|
54
62
|
var Store = /*#__PURE__*/function () {
|
|
55
63
|
function Store() {
|
|
56
|
-
var _this = this
|
|
64
|
+
var _this = this,
|
|
65
|
+
_options$autoSave,
|
|
66
|
+
_options$lazyLoad;
|
|
57
67
|
|
|
58
68
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
59
69
|
|
|
@@ -73,6 +83,93 @@ var Store = /*#__PURE__*/function () {
|
|
|
73
83
|
return Object.keys(_this.models);
|
|
74
84
|
});
|
|
75
85
|
|
|
86
|
+
_defineProperty(this, "refresh", function (type) {
|
|
87
|
+
if (type) {
|
|
88
|
+
return _classPrivateFieldGet(_this, _refreshObjectByType).call(_this, type);
|
|
89
|
+
} else {
|
|
90
|
+
return Promise.all(Object.keys(_this.models).map(_classPrivateFieldGet(_this, _refreshObjectByType)));
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
_classPrivateFieldInitSpec(this, _refreshObjectByType, {
|
|
95
|
+
writable: true,
|
|
96
|
+
value: function value(type) {
|
|
97
|
+
return _classPrivateMethodGet(_this, _getPromise, _getPromise2).call(_this, type).then(function () {
|
|
98
|
+
var item = _this.models[type];
|
|
99
|
+
|
|
100
|
+
_this.pubSub.publish("refresh", {
|
|
101
|
+
status: "start",
|
|
102
|
+
model: type
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
item.promise = item.model.retrieveAll()["catch"](function () {
|
|
106
|
+
var objects = Object.values(_this.models[type].storedObjects);
|
|
107
|
+
var list = [];
|
|
108
|
+
return (0, _batchPromises["default"])(4, objects, function (object) {
|
|
109
|
+
return item.model.factory(object.object).then(function (items) {
|
|
110
|
+
list = list.concat(items);
|
|
111
|
+
});
|
|
112
|
+
}).then(function () {
|
|
113
|
+
return list;
|
|
114
|
+
});
|
|
115
|
+
}).then(function (objects) {
|
|
116
|
+
var _iterator = _createForOfIteratorHelper(objects),
|
|
117
|
+
_step;
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
121
|
+
var object = _step.value;
|
|
122
|
+
var wrapper = new _Obj["default"](object, item.model);
|
|
123
|
+
var id = wrapper.getId();
|
|
124
|
+
var currentObject = item === null || item === void 0 ? void 0 : item.storedObjects[id]; // console.log("currentObject", item);
|
|
125
|
+
|
|
126
|
+
if (currentObject) {
|
|
127
|
+
var newFingerprint = wrapper.getFingerprint();
|
|
128
|
+
var oldFingerprint = currentObject.fingerprint;
|
|
129
|
+
|
|
130
|
+
if (oldFingerprint !== newFingerprint) {
|
|
131
|
+
// Nothing to do otherwise
|
|
132
|
+
if (_this.hasChanged(type, currentObject.object)) {// Was the object edited locally?
|
|
133
|
+
// Nothing for now
|
|
134
|
+
} else {
|
|
135
|
+
// Update with the new object
|
|
136
|
+
// console.log("merge", wrapper);
|
|
137
|
+
_classPrivateFieldGet(_this, _merge).call(_this, _this.models[type].storedObjects[id].object, wrapper.toJSON());
|
|
138
|
+
|
|
139
|
+
_this.models[type].storedObjects[id].fingerprint = newFingerprint;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
_classPrivateMethodGet(_this, _insertObject, _insertObject2).call(_this, type, object, "old");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
} catch (err) {
|
|
147
|
+
_iterator.e(err);
|
|
148
|
+
} finally {
|
|
149
|
+
_iterator.f();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
_this.pubSub.publish("refresh", {
|
|
153
|
+
status: "end",
|
|
154
|
+
model: type
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
return item.promise;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
_classPrivateFieldInitSpec(this, _merge, {
|
|
163
|
+
writable: true,
|
|
164
|
+
value: function value(originalObject, newObject) {
|
|
165
|
+
for (var key in newObject) {
|
|
166
|
+
originalObject[key] = newObject[key];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
originalObject.update();
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
76
173
|
_classPrivateFieldInitSpec(this, _deleteByObject, {
|
|
77
174
|
writable: true,
|
|
78
175
|
value: function value(object) {
|
|
@@ -87,12 +184,17 @@ var Store = /*#__PURE__*/function () {
|
|
|
87
184
|
});
|
|
88
185
|
|
|
89
186
|
this.options = {
|
|
90
|
-
autoSave: options.autoSave !==
|
|
187
|
+
autoSave: (_options$autoSave = options.autoSave) !== null && _options$autoSave !== void 0 ? _options$autoSave : true,
|
|
91
188
|
saveDelay: options.saveDelay || 1000,
|
|
92
|
-
lazyLoad: options.lazyLoad
|
|
189
|
+
lazyLoad: (_options$lazyLoad = options.lazyLoad) !== null && _options$lazyLoad !== void 0 ? _options$lazyLoad : false,
|
|
190
|
+
autoRefresh: options.autoRefresh === true ? 120000 : options.autoRefresh
|
|
93
191
|
};
|
|
94
192
|
this.models = {};
|
|
95
193
|
this.pubSub = new _PubSub["default"]();
|
|
194
|
+
|
|
195
|
+
if (this.options.autoRefresh && typeof this.options.autoRefresh === "number") {
|
|
196
|
+
setInterval(this.refresh, this.options.autoRefresh);
|
|
197
|
+
}
|
|
96
198
|
}
|
|
97
199
|
|
|
98
200
|
_createClass(Store, [{
|
|
@@ -172,18 +274,29 @@ var Store = /*#__PURE__*/function () {
|
|
|
172
274
|
|
|
173
275
|
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
174
276
|
return objects.map(function (object) {
|
|
175
|
-
return _classPrivateMethodGet(_this3, _insertObject, _insertObject2).call(_this3, type, object,
|
|
277
|
+
return _classPrivateMethodGet(_this3, _insertObject, _insertObject2).call(_this3, type, object, "new");
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}, {
|
|
282
|
+
key: "mock",
|
|
283
|
+
value: function mock(type, objects) {
|
|
284
|
+
var _this4 = this;
|
|
285
|
+
|
|
286
|
+
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
287
|
+
return objects.map(function (object) {
|
|
288
|
+
return _classPrivateMethodGet(_this4, _insertObject, _insertObject2).call(_this4, type, object, "mock");
|
|
176
289
|
});
|
|
177
290
|
});
|
|
178
291
|
}
|
|
179
292
|
}, {
|
|
180
293
|
key: "get",
|
|
181
294
|
value: function get(type, id) {
|
|
182
|
-
var
|
|
295
|
+
var _this5 = this;
|
|
183
296
|
|
|
184
297
|
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
185
298
|
try {
|
|
186
|
-
return
|
|
299
|
+
return _this5.models[type].storedObjects[id].object;
|
|
187
300
|
} catch (error) {
|
|
188
301
|
return Promise.reject("Object not found");
|
|
189
302
|
}
|
|
@@ -192,17 +305,17 @@ var Store = /*#__PURE__*/function () {
|
|
|
192
305
|
}, {
|
|
193
306
|
key: "find",
|
|
194
307
|
value: function find(type, filterFunction) {
|
|
195
|
-
var
|
|
308
|
+
var _this6 = this;
|
|
196
309
|
|
|
197
310
|
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
198
|
-
var all = Object.values(
|
|
311
|
+
var all = Object.values(_this6.models[type].storedObjects).filter(function (i) {
|
|
199
312
|
return i.status !== "deleted";
|
|
200
313
|
}).map(function (i) {
|
|
201
314
|
return i.object;
|
|
202
315
|
});
|
|
203
316
|
return filterFunction ? all.filter(filterFunction) : all;
|
|
204
317
|
})["catch"](function (error) {
|
|
205
|
-
|
|
318
|
+
_this6.pubSub.publish("error", error);
|
|
206
319
|
|
|
207
320
|
return Promise.reject(error);
|
|
208
321
|
});
|
|
@@ -210,7 +323,7 @@ var Store = /*#__PURE__*/function () {
|
|
|
210
323
|
}, {
|
|
211
324
|
key: "applyDiff",
|
|
212
325
|
value: function applyDiff(_ref, type) {
|
|
213
|
-
var
|
|
326
|
+
var _this7 = this;
|
|
214
327
|
|
|
215
328
|
var _ref$inserted = _ref.inserted,
|
|
216
329
|
inserted = _ref$inserted === void 0 ? [] : _ref$inserted,
|
|
@@ -220,41 +333,48 @@ var Store = /*#__PURE__*/function () {
|
|
|
220
333
|
deleted = _ref$deleted === void 0 ? [] : _ref$deleted;
|
|
221
334
|
return new Promise(function (resolve, reject) {
|
|
222
335
|
try {
|
|
223
|
-
var
|
|
224
|
-
|
|
336
|
+
var _iterator2 = _createForOfIteratorHelper(inserted.concat(updated)),
|
|
337
|
+
_step2;
|
|
225
338
|
|
|
226
339
|
try {
|
|
227
|
-
for (
|
|
228
|
-
var object =
|
|
340
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
341
|
+
var object = _step2.value;
|
|
342
|
+
type = type || object.object.getModel().getType();
|
|
343
|
+
var newId = object.object.getId();
|
|
344
|
+
var oldId = object.id;
|
|
345
|
+
var item = _this7.models[type].storedObjects[object.id];
|
|
229
346
|
|
|
230
|
-
|
|
347
|
+
if (newId !== oldId) {
|
|
348
|
+
_this7.models[type].storedObjects[newId] = item;
|
|
349
|
+
delete _this7.models[type].storedObjects[object.id];
|
|
350
|
+
}
|
|
231
351
|
|
|
232
352
|
item.fingerprint = object.object.getFingerprint();
|
|
233
353
|
item.status = "old";
|
|
234
354
|
}
|
|
235
355
|
} catch (err) {
|
|
236
|
-
|
|
356
|
+
_iterator2.e(err);
|
|
237
357
|
} finally {
|
|
238
|
-
|
|
358
|
+
_iterator2.f();
|
|
239
359
|
}
|
|
240
360
|
|
|
241
|
-
var
|
|
242
|
-
|
|
361
|
+
var _iterator3 = _createForOfIteratorHelper(deleted),
|
|
362
|
+
_step3;
|
|
243
363
|
|
|
244
364
|
try {
|
|
245
|
-
for (
|
|
246
|
-
var _object =
|
|
247
|
-
delete
|
|
365
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
366
|
+
var _object = _step3.value;
|
|
367
|
+
delete _this7.models[type || _object.object.getModel().getType()].storedObjects[_object.id];
|
|
248
368
|
}
|
|
249
369
|
} catch (err) {
|
|
250
|
-
|
|
370
|
+
_iterator3.e(err);
|
|
251
371
|
} finally {
|
|
252
|
-
|
|
372
|
+
_iterator3.f();
|
|
253
373
|
}
|
|
254
374
|
|
|
255
375
|
resolve();
|
|
256
376
|
} catch (error) {
|
|
257
|
-
|
|
377
|
+
reject(error);
|
|
258
378
|
}
|
|
259
379
|
});
|
|
260
380
|
}
|
|
@@ -272,10 +392,10 @@ var Store = /*#__PURE__*/function () {
|
|
|
272
392
|
}, {
|
|
273
393
|
key: "getDiff",
|
|
274
394
|
value: function getDiff(type) {
|
|
275
|
-
var
|
|
395
|
+
var _this8 = this;
|
|
276
396
|
|
|
277
397
|
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
278
|
-
var objects = Object.values(
|
|
398
|
+
var objects = Object.values(_this8.models[type].storedObjects);
|
|
279
399
|
var inserted = [];
|
|
280
400
|
var updated = [];
|
|
281
401
|
var deleted = [];
|
|
@@ -287,9 +407,10 @@ var Store = /*#__PURE__*/function () {
|
|
|
287
407
|
inserted.push(object);
|
|
288
408
|
} else if (object.status === "deleted") {
|
|
289
409
|
deleted.push(object);
|
|
290
|
-
} else if (
|
|
410
|
+
} else if (object.status === "old" && _this8.hasChanged(type, object.object)) {
|
|
291
411
|
updated.push(object);
|
|
292
|
-
}
|
|
412
|
+
} // Nothing for mock objects
|
|
413
|
+
|
|
293
414
|
}
|
|
294
415
|
|
|
295
416
|
return {
|
|
@@ -302,34 +423,35 @@ var Store = /*#__PURE__*/function () {
|
|
|
302
423
|
}, {
|
|
303
424
|
key: "factory",
|
|
304
425
|
value: function factory(type, params) {
|
|
305
|
-
var
|
|
426
|
+
var _this9 = this;
|
|
306
427
|
|
|
307
428
|
var item = this.models[type];
|
|
308
429
|
this.pubSub.publish("loading", {
|
|
309
430
|
status: "start",
|
|
310
431
|
model: type
|
|
311
432
|
});
|
|
312
|
-
|
|
313
|
-
var
|
|
314
|
-
|
|
433
|
+
item.promise = item.model.factory(params).then(function (items) {
|
|
434
|
+
var _iterator4 = _createForOfIteratorHelper(items),
|
|
435
|
+
_step4;
|
|
315
436
|
|
|
316
437
|
try {
|
|
317
|
-
for (
|
|
318
|
-
var _item =
|
|
438
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
439
|
+
var _item = _step4.value;
|
|
319
440
|
|
|
320
|
-
_classPrivateMethodGet(
|
|
441
|
+
_classPrivateMethodGet(_this9, _insertObject, _insertObject2).call(_this9, type, _item, "old");
|
|
321
442
|
}
|
|
322
443
|
} catch (err) {
|
|
323
|
-
|
|
444
|
+
_iterator4.e(err);
|
|
324
445
|
} finally {
|
|
325
|
-
|
|
446
|
+
_iterator4.f();
|
|
326
447
|
}
|
|
327
448
|
|
|
328
|
-
|
|
449
|
+
_this9.pubSub.publish("loading", {
|
|
329
450
|
status: "end",
|
|
330
451
|
model: type
|
|
331
452
|
});
|
|
332
453
|
});
|
|
454
|
+
return item.promise;
|
|
333
455
|
}
|
|
334
456
|
}]);
|
|
335
457
|
|
|
@@ -345,25 +467,25 @@ function _error2(error) {
|
|
|
345
467
|
}
|
|
346
468
|
|
|
347
469
|
function _deleteByFilter2(type, filterFunction) {
|
|
348
|
-
var
|
|
470
|
+
var _this10 = this;
|
|
349
471
|
|
|
350
472
|
return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
|
|
351
|
-
var deleted = Object.values(
|
|
473
|
+
var deleted = Object.values(_this10.models[type].storedObjects).filter(function (i) {
|
|
352
474
|
return filterFunction(i.object);
|
|
353
475
|
});
|
|
354
476
|
|
|
355
|
-
var
|
|
356
|
-
|
|
477
|
+
var _iterator5 = _createForOfIteratorHelper(deleted),
|
|
478
|
+
_step5;
|
|
357
479
|
|
|
358
480
|
try {
|
|
359
|
-
for (
|
|
360
|
-
var object =
|
|
481
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
482
|
+
var object = _step5.value;
|
|
361
483
|
object.status = "deleted";
|
|
362
484
|
}
|
|
363
485
|
} catch (err) {
|
|
364
|
-
|
|
486
|
+
_iterator5.e(err);
|
|
365
487
|
} finally {
|
|
366
|
-
|
|
488
|
+
_iterator5.f();
|
|
367
489
|
}
|
|
368
490
|
|
|
369
491
|
return deleted.map(function (i) {
|
|
@@ -373,7 +495,7 @@ function _deleteByFilter2(type, filterFunction) {
|
|
|
373
495
|
}
|
|
374
496
|
|
|
375
497
|
function _getPromise2(type) {
|
|
376
|
-
var
|
|
498
|
+
var _this11 = this;
|
|
377
499
|
|
|
378
500
|
if (!this.models[type]) {
|
|
379
501
|
return Promise.reject("The model doesn't exist");
|
|
@@ -381,15 +503,16 @@ function _getPromise2(type) {
|
|
|
381
503
|
return Promise.reject("The model is not loaded");
|
|
382
504
|
} else if (!this.models[type].promise && this.options.lazyLoad) {
|
|
383
505
|
return _classPrivateMethodGet(this, _loadObjects, _loadObjects2).call(this, type).then(function () {
|
|
384
|
-
return
|
|
506
|
+
return _this11.models[type].promise;
|
|
385
507
|
});
|
|
386
508
|
} else {
|
|
387
509
|
return this.models[type].promise;
|
|
388
510
|
}
|
|
389
511
|
}
|
|
390
512
|
|
|
391
|
-
function _insertObject2(type, item) {
|
|
392
|
-
var
|
|
513
|
+
function _insertObject2(type, item, status) {
|
|
514
|
+
var _this12 = this;
|
|
515
|
+
|
|
393
516
|
var model = this.models[type].model;
|
|
394
517
|
var wrapper = new _Obj["default"](item, model);
|
|
395
518
|
var id = wrapper.getId();
|
|
@@ -398,42 +521,57 @@ function _insertObject2(type, item) {
|
|
|
398
521
|
throw new Error("The IDs provided for the model ".concat(type, " are not unique"));
|
|
399
522
|
}
|
|
400
523
|
|
|
524
|
+
if (!objectStatuses.includes(status)) {
|
|
525
|
+
throw new Error("The provided status is not valid");
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
if (status === "mock") {
|
|
529
|
+
wrapper.insert = function () {
|
|
530
|
+
_this12.models[type].storedObjects[id].status = "new";
|
|
531
|
+
|
|
532
|
+
_this12.update([wrapper]);
|
|
533
|
+
|
|
534
|
+
delete wrapper.insert;
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
|
|
401
538
|
this.models[type].storedObjects[id] = {
|
|
402
539
|
id: id,
|
|
403
540
|
fingerprint: wrapper.getFingerprint(),
|
|
404
541
|
object: wrapper,
|
|
405
|
-
status:
|
|
542
|
+
status: status
|
|
406
543
|
};
|
|
407
544
|
return wrapper;
|
|
408
545
|
}
|
|
409
546
|
|
|
410
547
|
function _loadObjects2(type) {
|
|
411
|
-
var
|
|
548
|
+
var _this13 = this;
|
|
412
549
|
|
|
413
550
|
var item = this.models[type];
|
|
414
551
|
this.pubSub.publish("loading", {
|
|
415
552
|
status: "start",
|
|
416
553
|
model: type
|
|
417
554
|
});
|
|
418
|
-
|
|
419
|
-
var
|
|
420
|
-
|
|
555
|
+
item.promise = item.model.retrieveAll().then(function (items) {
|
|
556
|
+
var _iterator6 = _createForOfIteratorHelper(items),
|
|
557
|
+
_step6;
|
|
421
558
|
|
|
422
559
|
try {
|
|
423
|
-
for (
|
|
424
|
-
var _item2 =
|
|
560
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
561
|
+
var _item2 = _step6.value;
|
|
425
562
|
|
|
426
|
-
_classPrivateMethodGet(
|
|
563
|
+
_classPrivateMethodGet(_this13, _insertObject, _insertObject2).call(_this13, type, _item2, "old");
|
|
427
564
|
}
|
|
428
565
|
} catch (err) {
|
|
429
|
-
|
|
566
|
+
_iterator6.e(err);
|
|
430
567
|
} finally {
|
|
431
|
-
|
|
568
|
+
_iterator6.f();
|
|
432
569
|
}
|
|
433
570
|
|
|
434
|
-
|
|
571
|
+
_this13.pubSub.publish("loading", {
|
|
435
572
|
status: "end",
|
|
436
573
|
model: type
|
|
437
574
|
});
|
|
438
575
|
});
|
|
576
|
+
return item.promise;
|
|
439
577
|
}
|