dataflux 1.7.5 → 1.9.1

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.
@@ -111,6 +111,7 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
111
111
 
112
112
  _defineProperty(_assertThisInitialized(_this), "multipleSubscribe", function (subscriptions, callback) {
113
113
  var dataPayload = {};
114
+ var subKey = (0, _uuid.v4)();
114
115
 
115
116
  var areAllDone = function areAllDone() {
116
117
  return subscriptions.map(function (_ref) {
@@ -123,7 +124,7 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
123
124
  });
124
125
  };
125
126
 
126
- return Promise.all(subscriptions.map(function (sub) {
127
+ Promise.all(subscriptions.map(function (sub) {
127
128
  var _sub = _slicedToArray(sub, 2),
128
129
  name = _sub[0],
129
130
  _sub$ = _sub[1],
@@ -136,10 +137,10 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
136
137
 
137
138
  return _this.subscribe(name, wrappedCallback, filterFunction);
138
139
  })).then(function (subKeys) {
139
- var subKey = (0, _uuid.v4)();
140
140
  _this._multipleSubscribed[subKey] = subKeys;
141
141
  return subKey;
142
142
  });
143
+ return subKey;
143
144
  });
144
145
 
145
146
  _defineProperty(_assertThisInitialized(_this), "subscribe", function (type, callback, filterFunction) {
@@ -310,6 +311,18 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
310
311
  });
311
312
  }
312
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
+ }, {
313
326
  key: "delete",
314
327
  value: function _delete(typeOrObjects, filterFunction) {
315
328
  return _get(_getPrototypeOf(ObserverStore.prototype), "delete", this).call(this, typeOrObjects, filterFunction).then(_classPrivateFieldGet(this, _propagateChange));
@@ -320,12 +333,12 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
320
333
  }(_PersistentStore2["default"]);
321
334
 
322
335
  function _propagateInsertChange2(type, newObjects) {
323
- var _this3 = this;
336
+ var _this4 = this;
324
337
 
325
338
  return (_classPrivateFieldGet(this, _unsubPromises).length ? Promise.all(_classPrivateFieldGet(this, _unsubPromises)) : Promise.resolve()).then(function () {
326
- if (_this3._subscribed[type]) {
339
+ if (_this4._subscribed[type]) {
327
340
  var uniqueSubs = {};
328
- var objects = Object.values(_this3._subscribed[type]);
341
+ var objects = Object.values(_this4._subscribed[type]);
329
342
 
330
343
  for (var _i2 = 0, _objects = objects; _i2 < _objects.length; _i2++) {
331
344
  var object = _objects[_i2];
@@ -356,7 +369,7 @@ function _propagateInsertChange2(type, newObjects) {
356
369
 
357
370
  if (objectsToSubscribe.length) {
358
371
  // Check if the new objects matter
359
- return _this3.find(type, filterFunction).then(function (data) {
372
+ return _this4.find(type, filterFunction).then(function (data) {
360
373
  var subKey;
361
374
 
362
375
  var _iterator6 = _createForOfIteratorHelper(data),
@@ -366,7 +379,7 @@ function _propagateInsertChange2(type, newObjects) {
366
379
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
367
380
  var d = _step6.value;
368
381
 
369
- var item = _this3._subscribed[d.getModel().getType()][d.getId()];
382
+ var item = _this4._subscribed[d.getModel().getType()][d.getId()];
370
383
 
371
384
  subKey = item ? item.subKey : null;
372
385
  if (subKey) break;
@@ -377,7 +390,7 @@ function _propagateInsertChange2(type, newObjects) {
377
390
  _iterator6.f();
378
391
  }
379
392
 
380
- _classPrivateFieldGet(_this3, _subscribeToObjects).call(_this3, type, objectsToSubscribe, {
393
+ _classPrivateFieldGet(_this4, _subscribeToObjects).call(_this4, type, objectsToSubscribe, {
381
394
  callback: callback,
382
395
  filterFunction: filterFunction,
383
396
  subKey: subKey
@@ -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; // Operations order:
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(inserted.map(function (i) {
123
+ return model.insertObjects(correctInserted.map(function (i) {
114
124
  return i.object;
115
125
  })).then(function () {
116
126
  return _this.applyDiff({
117
- inserted: inserted
127
+ inserted: correctInserted
118
128
  }, type);
119
129
  }).then(function () {
120
- return model.updateObjects(updated.map(function (i) {
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: updated
135
+ updated: correctUpdated
126
136
  }, type);
127
137
  }).then(function () {
128
- return model.deleteObjects(deleted.map(function (i) {
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: deleted
143
+ deleted: correctDeleted
134
144
  }, type);
135
145
  });
136
146
  });
@@ -142,17 +152,29 @@ var PersistentStore = /*#__PURE__*/function (_Store) {
142
152
  });
143
153
 
144
154
  _defineProperty(_assertThisInitialized(_this), "delayedSave", function () {
145
- if (_this.options.autoSave) {
146
- if (_this._delayedSaveTimer) {
147
- clearTimeout(_this._delayedSaveTimer);
148
- }
155
+ return new Promise(function (resolve, reject) {
156
+ if (_this.options.autoSave) {
157
+ if (_this._delayedSaveTimer) {
158
+ _this._delayedSavePromise();
149
159
 
150
- _this._delayedSaveTimer = setTimeout(_this.save, _this.options.saveDelay);
151
- }
160
+ _this._delayedSavePromise = null;
161
+ clearTimeout(_this._delayedSaveTimer);
162
+ }
163
+
164
+ _this._delayedSavePromise = resolve;
165
+ _this._delayedSaveTimer = setTimeout(function () {
166
+ resolve(_this.save());
167
+ _this._delayedSavePromise = null;
168
+ }, _this.options.saveDelay);
169
+ } else {
170
+ resolve();
171
+ }
172
+ });
152
173
  });
153
174
 
154
175
  _this._busy = false;
155
176
  _this._delayedSaveTimer = null;
177
+ _this._delayedSavePromise = null;
156
178
 
157
179
  if (typeof _this.options.autoSave === "number") {
158
180
  setInterval(function () {
@@ -181,20 +203,25 @@ var PersistentStore = /*#__PURE__*/function (_Store) {
181
203
  var _this3 = this;
182
204
 
183
205
  return _get(_getPrototypeOf(PersistentStore.prototype), "insert", this).call(this, type, objects).then(function (data) {
184
- _this3.delayedSave();
185
-
186
- return data;
206
+ return _this3.delayedSave().then(function () {
207
+ return data;
208
+ });
187
209
  });
188
210
  }
211
+ }, {
212
+ key: "mock",
213
+ value: function mock(type, objects) {
214
+ return _get(_getPrototypeOf(PersistentStore.prototype), "mock", this).call(this, type, objects);
215
+ }
189
216
  }, {
190
217
  key: "delete",
191
218
  value: function _delete(typeOrObjects, filterFunction) {
192
219
  var _this4 = this;
193
220
 
194
221
  return _get(_getPrototypeOf(PersistentStore.prototype), "delete", this).call(this, typeOrObjects, filterFunction).then(function (data) {
195
- _this4.delayedSave();
196
-
197
- return data;
222
+ return _this4.delayedSave().then(function () {
223
+ return data;
224
+ });
198
225
  });
199
226
  }
200
227
  }, {
@@ -218,11 +245,13 @@ var PersistentStore = /*#__PURE__*/function (_Store) {
218
245
  } finally {
219
246
  _iterator.f();
220
247
  }
248
+
249
+ return objects;
221
250
  } else {
222
- _this5.delayedSave();
251
+ return _this5.delayedSave().then(function () {
252
+ return objects;
253
+ });
223
254
  }
224
-
225
- return objects;
226
255
  });
227
256
  }
228
257
  }]);