dataflux 1.7.3 → 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/dist/Model.js CHANGED
@@ -7,8 +7,6 @@ exports["default"] = void 0;
7
7
 
8
8
  var _modelHooksUtils = require("./modelHooksUtils");
9
9
 
10
- var _batchPromises = _interopRequireDefault(require("batch-promises"));
11
-
12
10
  var _axios2 = _interopRequireDefault(require("axios"));
13
11
 
14
12
  var _BasicObj = require("./BasicObj");
@@ -95,22 +93,29 @@ var _addRelationByFilter = /*#__PURE__*/new WeakMap();
95
93
 
96
94
  var _removeHiddenFields = /*#__PURE__*/new WeakMap();
97
95
 
98
- var _bulkOperation = /*#__PURE__*/new WeakMap();
99
-
100
96
  var _toArray = /*#__PURE__*/new WeakMap();
101
97
 
102
98
  var _unWrap = /*#__PURE__*/new WeakMap();
103
99
 
104
100
  var _insertObjects = /*#__PURE__*/new WeakMap();
105
101
 
102
+ var _assignId = /*#__PURE__*/new WeakMap();
103
+
106
104
  var _updateObjects = /*#__PURE__*/new WeakMap();
107
105
 
108
106
  var _deleteObjects = /*#__PURE__*/new WeakMap();
109
107
 
108
+ var _hanldeApiError = /*#__PURE__*/new WeakMap();
109
+
110
+ var _cleanApiError = /*#__PURE__*/new WeakMap();
111
+
112
+ var _removeFromStoreSilentlyAfterFailure = /*#__PURE__*/new WeakMap();
113
+
110
114
  var Model = /*#__PURE__*/_createClass(function Model(name) {
111
115
  var _this = this,
112
116
  _options$deep,
113
- _options$parseMoment;
117
+ _options$parseMoment,
118
+ _options$validate;
114
119
 
115
120
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
116
121
 
@@ -178,6 +183,31 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
178
183
  value: void 0
179
184
  });
180
185
 
186
+ _defineProperty(this, "validateObjectAttribute", function (object, key) {
187
+ var validate = _this.options.validate;
188
+
189
+ if (validate && validate[key]) {
190
+ try {
191
+ validate[key](object);
192
+ object.setError(false, key);
193
+ } catch (error) {
194
+ object.setError(error.message, key);
195
+ }
196
+ }
197
+ });
198
+
199
+ _defineProperty(this, "isObjectValid", function (object) {
200
+ for (var key in object) {
201
+ if (typeof object[key] !== "function") {
202
+ if (object.getError(key)) {
203
+ return false;
204
+ }
205
+ }
206
+ }
207
+
208
+ return true;
209
+ });
210
+
181
211
  _defineProperty(this, "getStore", function () {
182
212
  return _classPrivateFieldGet(_this, _store);
183
213
  });
@@ -195,7 +225,8 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
195
225
  return _this.getStore().whenSaved(_this.getType())["catch"](function (e) {
196
226
  throw new Error("You cannot perform load() on an unsaved object.");
197
227
  }).then(function () {
198
- var res = _classPrivateFieldGet(_this, _loadFunction).call(_this, obj.toJSON());
228
+ var res = _classPrivateFieldGet(_this, _loadFunction).call(_this, obj.toJSON()); // toJSON to avoid side effects;
229
+
199
230
 
200
231
  if (typeof res === "string") {
201
232
  return _classPrivateFieldGet(_this, _axios).call(_this, {
@@ -271,15 +302,15 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
271
302
  });
272
303
 
273
304
  _defineProperty(this, "insertObjects", function (objects) {
274
- return objects.length ? _classPrivateFieldGet(_this, _bulkOperation).call(_this, objects, _classPrivateFieldGet(_this, _insertObjects)) : Promise.resolve();
305
+ return objects.length ? _classPrivateFieldGet(_this, _insertObjects).call(_this, objects) : Promise.resolve();
275
306
  });
276
307
 
277
308
  _defineProperty(this, "updateObjects", function (objects) {
278
- return objects.length ? _classPrivateFieldGet(_this, _bulkOperation).call(_this, objects, _classPrivateFieldGet(_this, _updateObjects)) : Promise.resolve();
309
+ return objects.length ? _classPrivateFieldGet(_this, _updateObjects).call(_this, objects) : Promise.resolve();
279
310
  });
280
311
 
281
312
  _defineProperty(this, "deleteObjects", function (objects) {
282
- return objects.length ? _classPrivateFieldGet(_this, _bulkOperation).call(_this, objects, _classPrivateFieldGet(_this, _deleteObjects)) : Promise.resolve();
313
+ return objects.length ? _classPrivateFieldGet(_this, _deleteObjects).call(_this, objects) : Promise.resolve();
283
314
  });
284
315
 
285
316
  _defineProperty(this, "factory", function (params) {
@@ -338,26 +369,11 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
338
369
  }
339
370
  });
340
371
 
341
- _classPrivateFieldInitSpec(this, _bulkOperation, {
342
- writable: true,
343
- value: function value(objects, action) {
344
- if (_classPrivateFieldGet(_this, _singleItemQuery)) {
345
- return (0, _batchPromises["default"])(_classPrivateFieldGet(_this, _batchSize), objects.map(function (i) {
346
- return _classPrivateFieldGet(_this, _removeHiddenFields).call(_this, i.toJSON());
347
- }), action);
348
- } else {
349
- return action(objects.map(function (i) {
350
- return _classPrivateFieldGet(_this, _removeHiddenFields).call(_this, i.toJSON());
351
- }));
352
- }
353
- }
354
- });
355
-
356
372
  _classPrivateFieldInitSpec(this, _toArray, {
357
373
  writable: true,
358
374
  value: function value(data) {
359
375
  if (Array.isArray(data)) {
360
- if (data.every(function (str) {
376
+ if (data.length && data.every(function (str) {
361
377
  return ["string", "number"].includes(_typeof(str));
362
378
  })) {
363
379
  return [{
@@ -380,7 +396,11 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
380
396
 
381
397
  _classPrivateFieldInitSpec(this, _unWrap, {
382
398
  writable: true,
383
- value: function value(data) {
399
+ value: function value(objects) {
400
+ var data = Object.values(objects).map(function (object) {
401
+ return _classPrivateFieldGet(_this, _removeHiddenFields).call(_this, object.toJSON());
402
+ });
403
+
384
404
  if (data.value != null && Object.keys(data).length === 1) {
385
405
  return data.value;
386
406
  } else if (Array.isArray(data) && data.length === 1 && data[0].value != null && Object.keys(data[0]).length === 1) {
@@ -393,22 +413,109 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
393
413
 
394
414
  _classPrivateFieldInitSpec(this, _insertObjects, {
395
415
  writable: true,
396
- value: function value(data) {
397
- return (0, _modelHooksUtils.executeHook)("insert", _classPrivateFieldGet(_this, _insertHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
416
+ value: function value(objects) {
417
+ var operation = "insert";
418
+ return (0, _modelHooksUtils.executeHook)(operation, _classPrivateFieldGet(_this, _insertHook), _classPrivateFieldGet(_this, _unWrap).call(_this, objects), _classPrivateFieldGet(_this, _axios)).then(function (data) {
419
+ if (data) _classPrivateFieldGet(_this, _assignId).call(_this, data, objects);
420
+
421
+ _classPrivateFieldGet(_this, _cleanApiError).call(_this, objects);
422
+
423
+ return data;
424
+ }).then(_classPrivateFieldGet(_this, _toArray))["catch"](function (error) {
425
+ _classPrivateFieldGet(_this, _removeFromStoreSilentlyAfterFailure).call(_this, objects);
426
+
427
+ return _classPrivateFieldGet(_this, _hanldeApiError).call(_this, error, objects, operation);
428
+ });
429
+ }
430
+ });
431
+
432
+ _classPrivateFieldInitSpec(this, _assignId, {
433
+ writable: true,
434
+ value: function value(data, objects) {
435
+ if (data.length === 1) {
436
+ var newId = data[0].id;
437
+ objects[0].setId(newId);
438
+ delete objects[0].setId;
439
+ }
398
440
  }
399
441
  });
400
442
 
401
443
  _classPrivateFieldInitSpec(this, _updateObjects, {
402
444
  writable: true,
403
- value: function value(data) {
404
- return (0, _modelHooksUtils.executeHook)("update", _classPrivateFieldGet(_this, _updateHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
445
+ value: function value(objects) {
446
+ var operation = "update";
447
+ return (0, _modelHooksUtils.executeHook)(operation, _classPrivateFieldGet(_this, _updateHook), _classPrivateFieldGet(_this, _unWrap).call(_this, objects), _classPrivateFieldGet(_this, _axios)).then(function (data) {
448
+ _classPrivateFieldGet(_this, _cleanApiError).call(_this, objects);
449
+
450
+ return data;
451
+ }).then(_classPrivateFieldGet(_this, _toArray))["catch"](function (error) {
452
+ return _classPrivateFieldGet(_this, _hanldeApiError).call(_this, error, objects, operation);
453
+ });
405
454
  }
406
455
  });
407
456
 
408
457
  _classPrivateFieldInitSpec(this, _deleteObjects, {
409
458
  writable: true,
410
- value: function value(data) {
411
- return (0, _modelHooksUtils.executeHook)("delete", _classPrivateFieldGet(_this, _deleteHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
459
+ value: function value(objects) {
460
+ var operation = "delete";
461
+ return (0, _modelHooksUtils.executeHook)(operation, _classPrivateFieldGet(_this, _deleteHook), _classPrivateFieldGet(_this, _unWrap).call(_this, objects), _classPrivateFieldGet(_this, _axios)).then(function (data) {
462
+ _classPrivateFieldGet(_this, _cleanApiError).call(_this, objects);
463
+
464
+ return data;
465
+ }).then(_classPrivateFieldGet(_this, _toArray))["catch"](function (error) {
466
+ return _classPrivateFieldGet(_this, _hanldeApiError).call(_this, error, objects, operation);
467
+ });
468
+ }
469
+ });
470
+
471
+ _classPrivateFieldInitSpec(this, _hanldeApiError, {
472
+ writable: true,
473
+ value: function value(error, objects, operation) {
474
+ var _error$response$data, _error3, _error3$response, _ref, _error$message, _error4, _error5;
475
+
476
+ error = (_error$response$data = (_error3 = error) === null || _error3 === void 0 ? void 0 : (_error3$response = _error3.response) === null || _error3$response === void 0 ? void 0 : _error3$response.data) !== null && _error$response$data !== void 0 ? _error$response$data : error;
477
+ var targets = objects.map(function (object) {
478
+ return object.getId();
479
+ }); // Set errors
480
+
481
+ var strError = (_ref = (_error$message = (_error4 = error) === null || _error4 === void 0 ? void 0 : _error4.message) !== null && _error$message !== void 0 ? _error$message : (_error5 = error) === null || _error5 === void 0 ? void 0 : _error5.error) !== null && _ref !== void 0 ? _ref : error;
482
+ Object.values(objects).map(function (object) {
483
+ return object.setError(strError);
484
+ });
485
+ return Promise.reject(_objectSpread(_objectSpread({}, error), {}, {
486
+ targets: targets,
487
+ operation: operation
488
+ }));
489
+ }
490
+ });
491
+
492
+ _classPrivateFieldInitSpec(this, _cleanApiError, {
493
+ writable: true,
494
+ value: function value(objects) {
495
+ Object.values(objects).map(function (object) {
496
+ return object.setError(false);
497
+ });
498
+ }
499
+ });
500
+
501
+ _classPrivateFieldInitSpec(this, _removeFromStoreSilentlyAfterFailure, {
502
+ writable: true,
503
+ value: function value(objects) {
504
+ var _iterator2 = _createForOfIteratorHelper(objects.map(function (object) {
505
+ return object.getId();
506
+ })),
507
+ _step2;
508
+
509
+ try {
510
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
511
+ var target = _step2.value;
512
+ delete _this.getStore().models[_this.getType()].storedObjects[target];
513
+ }
514
+ } catch (err) {
515
+ _iterator2.e(err);
516
+ } finally {
517
+ _iterator2.f();
518
+ }
412
519
  }
413
520
  });
414
521
 
@@ -417,7 +524,8 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
417
524
  this.options = _objectSpread(_objectSpread({}, options), {}, {
418
525
  deep: (_options$deep = options.deep) !== null && _options$deep !== void 0 ? _options$deep : true,
419
526
  parseMoment: (_options$parseMoment = options.parseMoment) !== null && _options$parseMoment !== void 0 ? _options$parseMoment : false,
420
- lazyLoad: options.lazyLoad
527
+ lazyLoad: options.lazyLoad,
528
+ validate: (_options$validate = options.validate) !== null && _options$validate !== void 0 ? _options$validate : {}
421
529
  });
422
530
 
423
531
  _classPrivateFieldSet(this, _store, null);
@@ -438,12 +546,12 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
438
546
  throw new Error("The load option must be a function");
439
547
  }
440
548
 
441
- var _ref = _typeof(options) === "object" ? (0, _modelHooksUtils.getHooksFromOptions)(options) : (0, _modelHooksUtils.getHooksFromUrl)(options),
442
- _ref2 = _slicedToArray(_ref, 4),
443
- retrieveHook = _ref2[0],
444
- insertHook = _ref2[1],
445
- updateHook = _ref2[2],
446
- deleteHook = _ref2[3];
549
+ var _ref2 = _typeof(options) === "object" ? (0, _modelHooksUtils.getHooksFromOptions)(options) : (0, _modelHooksUtils.getHooksFromUrl)(options),
550
+ _ref3 = _slicedToArray(_ref2, 4),
551
+ retrieveHook = _ref3[0],
552
+ insertHook = _ref3[1],
553
+ updateHook = _ref3[2],
554
+ deleteHook = _ref3[3];
447
555
 
448
556
  _classPrivateFieldSet(this, _retrieveHook, retrieveHook);
449
557
 
@@ -55,20 +55,28 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
55
55
 
56
56
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
57
57
 
58
+ 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; }
59
+
58
60
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
59
61
 
60
62
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
61
63
 
62
- 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; }
63
-
64
64
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
65
65
 
66
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
67
+
68
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
69
+
66
70
  function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
67
71
 
68
72
  function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
69
73
 
70
74
  function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
71
75
 
76
+ var _queryPromises = /*#__PURE__*/new WeakMap();
77
+
78
+ var _unsubPromises = /*#__PURE__*/new WeakMap();
79
+
72
80
  var _getUniqueSubs = /*#__PURE__*/new WeakMap();
73
81
 
74
82
  var _propagateChange = /*#__PURE__*/new WeakMap();
@@ -91,8 +99,19 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
91
99
 
92
100
  _classPrivateMethodInitSpec(_assertThisInitialized(_this), _propagateInsertChange);
93
101
 
102
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _queryPromises, {
103
+ writable: true,
104
+ value: []
105
+ });
106
+
107
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _unsubPromises, {
108
+ writable: true,
109
+ value: []
110
+ });
111
+
94
112
  _defineProperty(_assertThisInitialized(_this), "multipleSubscribe", function (subscriptions, callback) {
95
113
  var dataPayload = {};
114
+ var subKey = (0, _uuid.v4)();
96
115
 
97
116
  var areAllDone = function areAllDone() {
98
117
  return subscriptions.map(function (_ref) {
@@ -105,7 +124,7 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
105
124
  });
106
125
  };
107
126
 
108
- return Promise.all(subscriptions.map(function (sub) {
127
+ Promise.all(subscriptions.map(function (sub) {
109
128
  var _sub = _slicedToArray(sub, 2),
110
129
  name = _sub[0],
111
130
  _sub$ = _sub[1],
@@ -118,62 +137,67 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
118
137
 
119
138
  return _this.subscribe(name, wrappedCallback, filterFunction);
120
139
  })).then(function (subKeys) {
121
- var subKey = (0, _uuid.v4)();
122
140
  _this._multipleSubscribed[subKey] = subKeys;
123
141
  return subKey;
124
142
  });
143
+ return subKey;
125
144
  });
126
145
 
127
146
  _defineProperty(_assertThisInitialized(_this), "subscribe", function (type, callback, filterFunction) {
128
- var subKey = (0, _uuid.v4)();
147
+ var _this$_subscribed, _this$_subscribed$typ;
129
148
 
130
- if (!_this._subscribed[type]) {
131
- _this._subscribed[type] = {};
132
- }
149
+ var subKey = (0, _uuid.v4)();
150
+ (_this$_subscribed$typ = (_this$_subscribed = _this._subscribed)[type]) !== null && _this$_subscribed$typ !== void 0 ? _this$_subscribed$typ : _this$_subscribed[type] = {};
133
151
 
134
- _this.find(type, filterFunction).then(function (data) {
152
+ var prom = _this.find(type, filterFunction).then(function (data) {
135
153
  _classPrivateFieldGet(_assertThisInitialized(_this), _subscribeToObjects).call(_assertThisInitialized(_this), type, data, {
136
154
  callback: callback,
137
155
  filterFunction: filterFunction,
138
156
  subKey: subKey
139
157
  });
140
158
 
141
- return callback(data);
159
+ callback(data);
142
160
  });
143
161
 
162
+ _classPrivateFieldGet(_assertThisInitialized(_this), _queryPromises).push(prom);
163
+
144
164
  return subKey;
145
165
  });
146
166
 
147
167
  _defineProperty(_assertThisInitialized(_this), "unsubscribe", function (key) {
148
- if (_this._multipleSubscribed[key]) {
149
- var _iterator = _createForOfIteratorHelper(_this._multipleSubscribed[key]),
150
- _step;
151
-
152
- try {
153
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
154
- var sub = _step.value;
168
+ if (_classPrivateFieldGet(_assertThisInitialized(_this), _queryPromises).length) {
169
+ _classPrivateFieldSet(_assertThisInitialized(_this), _unsubPromises, Promise.all(_classPrivateFieldGet(_assertThisInitialized(_this), _queryPromises)).then(function () {
170
+ if (_this._multipleSubscribed[key]) {
171
+ var _iterator = _createForOfIteratorHelper(_this._multipleSubscribed[key]),
172
+ _step;
155
173
 
156
- _this.unsubscribe(sub);
157
- }
158
- } catch (err) {
159
- _iterator.e(err);
160
- } finally {
161
- _iterator.f();
162
- }
174
+ try {
175
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
176
+ var sub = _step.value;
163
177
 
164
- delete _this._multipleSubscribed[key];
165
- } else {
166
- for (var type in _this._subscribed) {
167
- for (var id in _this._subscribed[type]) {
168
- _this._subscribed[type][id] = _this._subscribed[type][id].filter(function (i) {
169
- return i.subKey !== key;
170
- });
178
+ _this.unsubscribe(sub);
179
+ }
180
+ } catch (err) {
181
+ _iterator.e(err);
182
+ } finally {
183
+ _iterator.f();
184
+ }
171
185
 
172
- if (_this._subscribed[type][id].length === 0) {
173
- delete _this._subscribed[type][id];
186
+ delete _this._multipleSubscribed[key];
187
+ } else {
188
+ for (var type in _this._subscribed) {
189
+ for (var id in _this._subscribed[type]) {
190
+ _this._subscribed[type][id] = _this._subscribed[type][id].filter(function (i) {
191
+ return i.subKey !== key;
192
+ });
193
+
194
+ if (_this._subscribed[type][id].length === 0) {
195
+ delete _this._subscribed[type][id];
196
+ }
197
+ }
174
198
  }
175
199
  }
176
- }
200
+ }));
177
201
  }
178
202
  });
179
203
 
@@ -197,8 +221,10 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
197
221
 
198
222
  try {
199
223
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
224
+ var _sub$subKey, _out$_sub$subKey;
225
+
200
226
  var sub = _step3.value;
201
- out[sub.subKey] = out[sub.subKey] || sub;
227
+ (_out$_sub$subKey = out[_sub$subKey = sub.subKey]) !== null && _out$_sub$subKey !== void 0 ? _out$_sub$subKey : out[_sub$subKey] = sub;
202
228
  }
203
229
  } catch (err) {
204
230
  _iterator3.e(err);
@@ -220,20 +246,21 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
220
246
  writable: true,
221
247
  value: function value() {
222
248
  var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
249
+ return (_classPrivateFieldGet(_assertThisInitialized(_this), _unsubPromises).length ? Promise.all(_classPrivateFieldGet(_assertThisInitialized(_this), _unsubPromises)) : Promise.resolve()).then(function () {
250
+ if (objects.length) {
251
+ var type = objects[0].getModel().getType();
223
252
 
224
- if (objects.length) {
225
- var type = objects[0].getModel().getType();
226
-
227
- var uniqueSubs = _classPrivateFieldGet(_assertThisInitialized(_this), _getUniqueSubs).call(_assertThisInitialized(_this), objects, type);
253
+ var uniqueSubs = _classPrivateFieldGet(_assertThisInitialized(_this), _getUniqueSubs).call(_assertThisInitialized(_this), objects, type);
228
254
 
229
- (0, _batchPromises["default"])(10, uniqueSubs, function (_ref3) {
230
- var callback = _ref3.callback,
231
- filterFunction = _ref3.filterFunction;
232
- return _this.find(type, filterFunction).then(callback);
233
- });
234
- }
255
+ (0, _batchPromises["default"])(10, uniqueSubs, function (_ref3) {
256
+ var callback = _ref3.callback,
257
+ filterFunction = _ref3.filterFunction;
258
+ return _this.find(type, filterFunction).then(callback);
259
+ });
260
+ }
235
261
 
236
- return objects;
262
+ return objects;
263
+ });
237
264
  }
238
265
  });
239
266
 
@@ -245,12 +272,11 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
245
272
 
246
273
  try {
247
274
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
275
+ var _this$_subscribed$typ2, _this$_subscribed$typ3;
276
+
248
277
  var object = _step4.value;
249
278
  var id = object.getId();
250
-
251
- if (!_this._subscribed[type][id]) {
252
- _this._subscribed[type][id] = [];
253
- }
279
+ (_this$_subscribed$typ3 = (_this$_subscribed$typ2 = _this._subscribed[type])[id]) !== null && _this$_subscribed$typ3 !== void 0 ? _this$_subscribed$typ3 : _this$_subscribed$typ2[id] = [];
254
280
 
255
281
  _this._subscribed[type][id].push(item);
256
282
  }
@@ -285,6 +311,18 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
285
311
  });
286
312
  }
287
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
+ }, {
288
326
  key: "delete",
289
327
  value: function _delete(typeOrObjects, filterFunction) {
290
328
  return _get(_getPrototypeOf(ObserverStore.prototype), "delete", this).call(this, typeOrObjects, filterFunction).then(_classPrivateFieldGet(this, _propagateChange));
@@ -295,73 +333,75 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
295
333
  }(_PersistentStore2["default"]);
296
334
 
297
335
  function _propagateInsertChange2(type, newObjects) {
298
- var _this3 = this;
336
+ var _this4 = this;
299
337
 
300
- if (this._subscribed[type]) {
301
- var uniqueSubs = {};
302
- var objects = Object.values(this._subscribed[type]);
338
+ return (_classPrivateFieldGet(this, _unsubPromises).length ? Promise.all(_classPrivateFieldGet(this, _unsubPromises)) : Promise.resolve()).then(function () {
339
+ if (_this4._subscribed[type]) {
340
+ var uniqueSubs = {};
341
+ var objects = Object.values(_this4._subscribed[type]);
303
342
 
304
- for (var _i2 = 0, _objects = objects; _i2 < _objects.length; _i2++) {
305
- var object = _objects[_i2];
343
+ for (var _i2 = 0, _objects = objects; _i2 < _objects.length; _i2++) {
344
+ var object = _objects[_i2];
306
345
 
307
- var _iterator5 = _createForOfIteratorHelper(object),
308
- _step5;
346
+ var _iterator5 = _createForOfIteratorHelper(object),
347
+ _step5;
309
348
 
310
- try {
311
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
312
- var sub = _step5.value;
349
+ try {
350
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
351
+ var sub = _step5.value;
313
352
 
314
- if (!uniqueSubs[sub.subKey]) {
315
- uniqueSubs[sub.subKey] = sub;
353
+ if (!uniqueSubs[sub.subKey]) {
354
+ uniqueSubs[sub.subKey] = sub;
355
+ }
316
356
  }
357
+ } catch (err) {
358
+ _iterator5.e(err);
359
+ } finally {
360
+ _iterator5.f();
317
361
  }
318
- } catch (err) {
319
- _iterator5.e(err);
320
- } finally {
321
- _iterator5.f();
322
362
  }
323
- }
324
363
 
325
- var possibleSubs = Object.values(uniqueSubs);
326
- (0, _batchPromises["default"])(10, possibleSubs, function (_ref4) {
327
- var callback = _ref4.callback,
328
- filterFunction = _ref4.filterFunction;
329
- var objectsToSubscribe = filterFunction ? newObjects.filter(filterFunction) : newObjects;
364
+ var possibleSubs = Object.values(uniqueSubs);
365
+ (0, _batchPromises["default"])(10, possibleSubs, function (_ref4) {
366
+ var callback = _ref4.callback,
367
+ filterFunction = _ref4.filterFunction;
368
+ var objectsToSubscribe = filterFunction ? newObjects.filter(filterFunction) : newObjects;
330
369
 
331
- if (objectsToSubscribe.length) {
332
- // Check if the new objects matter
333
- return _this3.find(type, filterFunction).then(function (data) {
334
- var subKey;
370
+ if (objectsToSubscribe.length) {
371
+ // Check if the new objects matter
372
+ return _this4.find(type, filterFunction).then(function (data) {
373
+ var subKey;
335
374
 
336
- var _iterator6 = _createForOfIteratorHelper(data),
337
- _step6;
375
+ var _iterator6 = _createForOfIteratorHelper(data),
376
+ _step6;
338
377
 
339
- try {
340
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
341
- var d = _step6.value;
378
+ try {
379
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
380
+ var d = _step6.value;
342
381
 
343
- var item = _this3._subscribed[d.getModel().getType()][d.getId()];
382
+ var item = _this4._subscribed[d.getModel().getType()][d.getId()];
344
383
 
345
- subKey = item ? item.subKey : null;
346
- if (subKey) break;
384
+ subKey = item ? item.subKey : null;
385
+ if (subKey) break;
386
+ }
387
+ } catch (err) {
388
+ _iterator6.e(err);
389
+ } finally {
390
+ _iterator6.f();
347
391
  }
348
- } catch (err) {
349
- _iterator6.e(err);
350
- } finally {
351
- _iterator6.f();
352
- }
353
392
 
354
- _classPrivateFieldGet(_this3, _subscribeToObjects).call(_this3, type, objectsToSubscribe, {
355
- callback: callback,
356
- filterFunction: filterFunction,
357
- subKey: subKey
358
- });
393
+ _classPrivateFieldGet(_this4, _subscribeToObjects).call(_this4, type, objectsToSubscribe, {
394
+ callback: callback,
395
+ filterFunction: filterFunction,
396
+ subKey: subKey
397
+ });
359
398
 
360
- return data;
361
- }).then(callback);
362
- }
363
- });
364
- }
399
+ return data;
400
+ }).then(callback);
401
+ }
402
+ });
403
+ }
404
+ });
365
405
  }
366
406
 
367
407
  var _default = ObserverStore;