dataflux 1.9.2 → 1.9.3

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.
@@ -83,6 +83,8 @@ var _propagateChange = /*#__PURE__*/new WeakMap();
83
83
 
84
84
  var _subscribeToObjects = /*#__PURE__*/new WeakMap();
85
85
 
86
+ var _merge = /*#__PURE__*/new WeakMap();
87
+
86
88
  var _propagateInsertChange = /*#__PURE__*/new WeakSet();
87
89
 
88
90
  var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
@@ -288,8 +290,56 @@ var ObserverStore = /*#__PURE__*/function (_PersistentStore) {
288
290
  }
289
291
  });
290
292
 
293
+ _defineProperty(_assertThisInitialized(_this), "refresh", function (type) {
294
+ var refreshByType = function refreshByType(type) {
295
+ _this.pubSub.publish("refresh", {
296
+ status: "start",
297
+ model: type
298
+ });
299
+
300
+ return _this.refreshObjectByType(type).then(function (_ref4) {
301
+ var _ref5 = _slicedToArray(_ref4, 3),
302
+ inserted = _ref5[0],
303
+ updated = _ref5[1],
304
+ deleted = _ref5[2];
305
+
306
+ var item = _this.models[type];
307
+ return Promise.all([_classPrivateMethodGet(_assertThisInitialized(_this), _propagateInsertChange, _propagateInsertChange2).call(_assertThisInitialized(_this), type, inserted), _classPrivateFieldGet(_assertThisInitialized(_this), _propagateChange).call(_assertThisInitialized(_this), updated), _classPrivateFieldGet(_assertThisInitialized(_this), _propagateChange).call(_assertThisInitialized(_this), deleted)]).then(function () {
308
+ _this.pubSub.publish("refresh", {
309
+ status: "end",
310
+ model: type
311
+ });
312
+
313
+ return item.promise;
314
+ });
315
+ });
316
+ };
317
+
318
+ if (type) {
319
+ return refreshByType(type);
320
+ } else {
321
+ return Promise.all(Object.keys(_this.models).map(refreshByType));
322
+ }
323
+ });
324
+
325
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _merge, {
326
+ writable: true,
327
+ value: function value(originalObject, newObject) {
328
+ for (var key in newObject) {
329
+ originalObject[key] = newObject[key];
330
+ }
331
+
332
+ originalObject.update();
333
+ }
334
+ });
335
+
291
336
  _this._subscribed = {};
292
337
  _this._multipleSubscribed = {};
338
+
339
+ if (options.autoRefresh && typeof options.autoRefresh === "number") {
340
+ setInterval(_this.refresh, options.autoRefresh);
341
+ }
342
+
293
343
  return _this;
294
344
  }
295
345
 
@@ -362,9 +412,9 @@ function _propagateInsertChange2(type, newObjects) {
362
412
  }
363
413
 
364
414
  var possibleSubs = Object.values(uniqueSubs);
365
- (0, _batchPromises["default"])(10, possibleSubs, function (_ref4) {
366
- var callback = _ref4.callback,
367
- filterFunction = _ref4.filterFunction;
415
+ (0, _batchPromises["default"])(10, possibleSubs, function (_ref6) {
416
+ var callback = _ref6.callback,
417
+ filterFunction = _ref6.filterFunction;
368
418
  var objectsToSubscribe = filterFunction ? newObjects.filter(filterFunction) : newObjects;
369
419
 
370
420
  if (objectsToSubscribe.length) {
package/dist/Store.js CHANGED
@@ -43,8 +43,6 @@ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(
43
43
 
44
44
  var objectStatuses = ["new", "old", "mock", "deleted"];
45
45
 
46
- var _refreshObjectByType = /*#__PURE__*/new WeakMap();
47
-
48
46
  var _merge = /*#__PURE__*/new WeakMap();
49
47
 
50
48
  var _error = /*#__PURE__*/new WeakSet();
@@ -55,7 +53,7 @@ var _deleteByFilter = /*#__PURE__*/new WeakSet();
55
53
 
56
54
  var _getPromise = /*#__PURE__*/new WeakSet();
57
55
 
58
- var _insertObject = /*#__PURE__*/new WeakSet();
56
+ var _insertObject = /*#__PURE__*/new WeakMap();
59
57
 
60
58
  var _loadObjects = /*#__PURE__*/new WeakSet();
61
59
 
@@ -71,8 +69,6 @@ var Store = /*#__PURE__*/function () {
71
69
 
72
70
  _classPrivateMethodInitSpec(this, _loadObjects);
73
71
 
74
- _classPrivateMethodInitSpec(this, _insertObject);
75
-
76
72
  _classPrivateMethodInitSpec(this, _getPromise);
77
73
 
78
74
  _classPrivateMethodInitSpec(this, _deleteByFilter);
@@ -83,80 +79,80 @@ var Store = /*#__PURE__*/function () {
83
79
  return Object.keys(_this.models);
84
80
  });
85
81
 
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
- });
82
+ _defineProperty(this, "refreshObjectByType", function (type) {
83
+ return _classPrivateMethodGet(_this, _getPromise, _getPromise2).call(_this, type).then(function () {
84
+ var item = _this.models[type];
85
+ var inserted = [];
86
+ var deleted = [];
87
+ var updated = [];
88
+ item.promise = item.model.retrieveAll()["catch"](function () {
89
+ var objects = Object.values(_this.models[type].storedObjects);
90
+ var list = [];
91
+ return (0, _batchPromises["default"])(4, objects, function (object) {
92
+ return item.model.factory(object.object).then(function (items) {
93
+ list = list.concat(items);
94
+ });
95
+ }).then(function () {
96
+ return list;
97
+ });
98
+ }).then(function (objects) {
99
+ var _iterator = _createForOfIteratorHelper(objects),
100
+ _step;
93
101
 
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];
102
+ try {
103
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
104
+ var object = _step.value;
105
+ var wrapper = new _Obj["default"](object, item.model);
99
106
 
100
- _this.pubSub.publish("refresh", {
101
- status: "start",
102
- model: type
103
- });
107
+ var _id = wrapper.getId();
104
108
 
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
- }
109
+ var currentObject = item === null || item === void 0 ? void 0 : item.storedObjects[_id];
110
+
111
+ if (currentObject) {
112
+ currentObject.deleted = false;
113
+ var newFingerprint = wrapper.getFingerprint();
114
+ var oldFingerprint = currentObject.fingerprint;
115
+
116
+ if (oldFingerprint !== newFingerprint) {
117
+ // Nothing to do otherwise
118
+ if (_this.hasChanged(type, currentObject.object)) {// Was the object edited locally?
119
+ // Nothing for now
120
+ } else {
121
+ // Update with the new object
122
+ _classPrivateFieldGet(_this, _merge).call(_this, currentObject.object, wrapper.toJSON());
123
+
124
+ currentObject.fingerprint = newFingerprint;
125
+ updated.push(currentObject.object);
141
126
  }
142
- } else {
143
- _classPrivateMethodGet(_this, _insertObject, _insertObject2).call(_this, type, object, "old");
144
127
  }
128
+ } else {
129
+ var newObject = _classPrivateFieldGet(_this, _insertObject).call(_this, type, object, "old");
130
+
131
+ item.storedObjects[newObject.getId()].deleted = false;
132
+ inserted.push(newObject);
145
133
  }
146
- } catch (err) {
147
- _iterator.e(err);
148
- } finally {
149
- _iterator.f();
150
134
  }
135
+ } catch (err) {
136
+ _iterator.e(err);
137
+ } finally {
138
+ _iterator.f();
139
+ }
151
140
 
152
- _this.pubSub.publish("refresh", {
153
- status: "end",
154
- model: type
155
- });
156
- });
157
- return item.promise;
141
+ for (var id in item === null || item === void 0 ? void 0 : item.storedObjects) {
142
+ var obj = item.storedObjects[id];
143
+
144
+ if (obj.deleted === undefined) {
145
+ deleted.push(obj.object);
146
+ delete item.storedObjects[id];
147
+ } else {
148
+ delete obj.deleted;
149
+ }
150
+ }
151
+
152
+ return [inserted, updated, deleted];
158
153
  });
159
- }
154
+ return item.promise;
155
+ });
160
156
  });
161
157
 
162
158
  _classPrivateFieldInitSpec(this, _merge, {
@@ -164,9 +160,8 @@ var Store = /*#__PURE__*/function () {
164
160
  value: function value(originalObject, newObject) {
165
161
  for (var key in newObject) {
166
162
  originalObject[key] = newObject[key];
167
- }
163
+ } // originalObject.update();
168
164
 
169
- originalObject.update();
170
165
  }
171
166
  });
172
167
 
@@ -183,6 +178,41 @@ var Store = /*#__PURE__*/function () {
183
178
  }
184
179
  });
185
180
 
181
+ _classPrivateFieldInitSpec(this, _insertObject, {
182
+ writable: true,
183
+ value: function value(type, item, status) {
184
+ var model = _this.models[type].model;
185
+ var wrapper = new _Obj["default"](item, model);
186
+ var id = wrapper.getId();
187
+
188
+ if (_this.models[type].storedObjects[id]) {
189
+ throw new Error("The IDs provided for the model ".concat(type, " are not unique"));
190
+ }
191
+
192
+ if (!objectStatuses.includes(status)) {
193
+ throw new Error("The provided status is not valid");
194
+ }
195
+
196
+ if (status === "mock") {
197
+ wrapper.insert = function () {
198
+ _this.models[type].storedObjects[id].status = "new";
199
+
200
+ _this.update([wrapper]);
201
+
202
+ delete wrapper.insert;
203
+ };
204
+ }
205
+
206
+ _this.models[type].storedObjects[id] = {
207
+ id: id,
208
+ fingerprint: wrapper.getFingerprint(),
209
+ object: wrapper,
210
+ status: status
211
+ };
212
+ return wrapper;
213
+ }
214
+ });
215
+
186
216
  this.options = {
187
217
  autoSave: (_options$autoSave = options.autoSave) !== null && _options$autoSave !== void 0 ? _options$autoSave : true,
188
218
  saveDelay: options.saveDelay || 1000,
@@ -191,10 +221,6 @@ var Store = /*#__PURE__*/function () {
191
221
  };
192
222
  this.models = {};
193
223
  this.pubSub = new _PubSub["default"]();
194
-
195
- if (this.options.autoRefresh && typeof this.options.autoRefresh === "number") {
196
- setInterval(this.refresh, this.options.autoRefresh);
197
- }
198
224
  }
199
225
 
200
226
  _createClass(Store, [{
@@ -274,7 +300,7 @@ var Store = /*#__PURE__*/function () {
274
300
 
275
301
  return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
276
302
  return objects.map(function (object) {
277
- return _classPrivateMethodGet(_this3, _insertObject, _insertObject2).call(_this3, type, object, "new");
303
+ return _classPrivateFieldGet(_this3, _insertObject).call(_this3, type, object, "new");
278
304
  });
279
305
  });
280
306
  }
@@ -285,7 +311,7 @@ var Store = /*#__PURE__*/function () {
285
311
 
286
312
  return _classPrivateMethodGet(this, _getPromise, _getPromise2).call(this, type).then(function () {
287
313
  return objects.map(function (object) {
288
- return _classPrivateMethodGet(_this4, _insertObject, _insertObject2).call(_this4, type, object, "mock");
314
+ return _classPrivateFieldGet(_this4, _insertObject).call(_this4, type, object, "mock");
289
315
  });
290
316
  });
291
317
  }
@@ -438,7 +464,7 @@ var Store = /*#__PURE__*/function () {
438
464
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
439
465
  var _item = _step4.value;
440
466
 
441
- _classPrivateMethodGet(_this9, _insertObject, _insertObject2).call(_this9, type, _item, "old");
467
+ _classPrivateFieldGet(_this9, _insertObject).call(_this9, type, _item, "old");
442
468
  }
443
469
  } catch (err) {
444
470
  _iterator4.e(err);
@@ -510,42 +536,8 @@ function _getPromise2(type) {
510
536
  }
511
537
  }
512
538
 
513
- function _insertObject2(type, item, status) {
514
- var _this12 = this;
515
-
516
- var model = this.models[type].model;
517
- var wrapper = new _Obj["default"](item, model);
518
- var id = wrapper.getId();
519
-
520
- if (this.models[type].storedObjects[id]) {
521
- throw new Error("The IDs provided for the model ".concat(type, " are not unique"));
522
- }
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
-
538
- this.models[type].storedObjects[id] = {
539
- id: id,
540
- fingerprint: wrapper.getFingerprint(),
541
- object: wrapper,
542
- status: status
543
- };
544
- return wrapper;
545
- }
546
-
547
539
  function _loadObjects2(type) {
548
- var _this13 = this;
540
+ var _this12 = this;
549
541
 
550
542
  var item = this.models[type];
551
543
  this.pubSub.publish("loading", {
@@ -560,7 +552,7 @@ function _loadObjects2(type) {
560
552
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
561
553
  var _item2 = _step6.value;
562
554
 
563
- _classPrivateMethodGet(_this13, _insertObject, _insertObject2).call(_this13, type, _item2, "old");
555
+ _classPrivateFieldGet(_this12, _insertObject).call(_this12, type, _item2, "old");
564
556
  }
565
557
  } catch (err) {
566
558
  _iterator6.e(err);
@@ -568,7 +560,7 @@ function _loadObjects2(type) {
568
560
  _iterator6.f();
569
561
  }
570
562
 
571
- _this13.pubSub.publish("loading", {
563
+ _this12.pubSub.publish("loading", {
572
564
  status: "end",
573
565
  model: type
574
566
  });