dataflux 1.7.0 → 1.7.4

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 CHANGED
@@ -20,7 +20,7 @@ npm install dataflux
20
20
 
21
21
  Using jsDelivr CDN:
22
22
  ```html
23
- <script src="https://cdn.jsdelivr.net/npm/dataflux/dist/index.js"></script>
23
+ <script src="https://cdn.jsdelivr.net/npm/dataflux/dist/dataflux.min.js"></script>
24
24
  ```
25
25
 
26
26
  ## Examples
@@ -31,7 +31,7 @@ Consider the following hypothetical store/model declaration common to all the ex
31
31
 
32
32
  ```js
33
33
  // Content of your store.js
34
- import {Store, Model} from "dataflux";
34
+ const {Store, Model} = require("dataflux");
35
35
 
36
36
  // We create a new Store
37
37
  const store = new Store();
@@ -182,7 +182,7 @@ const callback = ({book, author}) => {
182
182
  // Objects are ready
183
183
  };
184
184
 
185
- const subKey = store.multipleSubscribe(requests, callback); // Subscribe
185
+ const subKey = store.multipleSubscribe(subscriptions, callback); // Subscribe
186
186
 
187
187
  store.unsubscribe(subKey); // Unsubscribe
188
188
  ```
@@ -205,8 +205,8 @@ class MyComponent extends React.Component {
205
205
  // Get all books with a price < 20
206
206
  store.findAll("book", "books", this, ({price}) => price < 20);
207
207
  // An attribute "books" will be added/updated in the
208
- // state (the rest of the state remains unchanged) every time
209
- // a book in our selection is inserted/deleted/edited.
208
+ // state every time a book in our selection is inserted/deleted/edited,
209
+ // the rest of the state remains unchanged.
210
210
 
211
211
  // findAll is a syntactic sugar for:
212
212
  // const callback = (books) => {this.setState({...this.state, books})};
@@ -392,10 +392,14 @@ To create a factory, you must declare a model as follows:
392
392
  ```js
393
393
  const author = new Model("author", {
394
394
  lazyLoad: true, // It MUST be lazyLoaded
395
- retrieve: ({params}) => { // The retrieve function now takes some parameters
396
-
397
- // You can return a URL or directly one or more JSON objects
398
- return `https://api.example.net/authors/${params.id}`;
395
+ retrieve: (params) => { // The retrieve function now takes some parameters
396
+
397
+ if (params) {
398
+ // You can return a URL or directly one or more JSON objects
399
+ return `https://api.example.net/authors/${params.id}`
400
+ } else {
401
+ return Promise.resolve([]); // It's important to handle the base case where params is null
402
+ }
399
403
  }
400
404
  });
401
405
 
package/dist/BasicObj.js CHANGED
@@ -48,7 +48,9 @@ function setValues(values, model, SubObj, parent, context) {
48
48
  context[key] = mmnt.isValid() ? mmnt : value;
49
49
  } else if (model.options.deep && value != null && _typeof(value) === "object" && !Array.isArray(value)) {
50
50
  context[key] = new SubObj(parent, key, value, model);
51
- } else if (model.options.deep && value != null && Array.isArray(value)) {
51
+ } else if (model.options.deep && value != null && Array.isArray(value) && !value.some(function (str) {
52
+ return ["string", "number"].includes(_typeof(str));
53
+ })) {
52
54
  context[key] = value.map(function (i) {
53
55
  return new SubObj(parent, key, i, model);
54
56
  });
package/dist/Model.js CHANGED
@@ -17,8 +17,6 @@ var _SubObj = _interopRequireDefault(require("./SubObj"));
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
19
 
20
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
21
-
22
20
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
21
 
24
22
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -31,6 +29,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
31
29
 
32
30
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
31
 
32
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
33
+
34
34
  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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
35
35
 
36
36
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -99,6 +99,8 @@ var _bulkOperation = /*#__PURE__*/new WeakMap();
99
99
 
100
100
  var _toArray = /*#__PURE__*/new WeakMap();
101
101
 
102
+ var _unWrap = /*#__PURE__*/new WeakMap();
103
+
102
104
  var _insertObjects = /*#__PURE__*/new WeakMap();
103
105
 
104
106
  var _updateObjects = /*#__PURE__*/new WeakMap();
@@ -193,7 +195,8 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
193
195
  return _this.getStore().whenSaved(_this.getType())["catch"](function (e) {
194
196
  throw new Error("You cannot perform load() on an unsaved object.");
195
197
  }).then(function () {
196
- var res = _classPrivateFieldGet(_this, _loadFunction).call(_this, obj.toJSON());
198
+ var res = _classPrivateFieldGet(_this, _loadFunction).call(_this, obj.toJSON()); // toJSON to avoid side effects;
199
+
197
200
 
198
201
  if (typeof res === "string") {
199
202
  return _classPrivateFieldGet(_this, _axios).call(_this, {
@@ -260,13 +263,11 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
260
263
 
261
264
  _defineProperty(this, "retrieveAll", function () {
262
265
  return (0, _modelHooksUtils.executeHook)("retrieve", _classPrivateFieldGet(_this, _retrieveHook), null, _classPrivateFieldGet(_this, _axios)).then(function (data) {
263
- if (Array.isArray(data)) {
264
- return data;
265
- } else {
266
+ if (!Array.isArray(data)) {
266
267
  _classPrivateFieldSet(_this, _singleItemQuery, true);
267
-
268
- return [data];
269
268
  }
269
+
270
+ return _classPrivateFieldGet(_this, _toArray).call(_this, data);
270
271
  });
271
272
  });
272
273
 
@@ -286,7 +287,13 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
286
287
  if (!_this.options.lazyLoad) {
287
288
  return Promise.reject("Factory can be used only on a model declared with lazyLoad: true");
288
289
  } else {
289
- return (0, _modelHooksUtils.executeHook)("retrieve", _classPrivateFieldGet(_this, _retrieveHook), params, _classPrivateFieldGet(_this, _axios));
290
+ return (0, _modelHooksUtils.executeHook)("retrieve", _classPrivateFieldGet(_this, _retrieveHook), params, _classPrivateFieldGet(_this, _axios)).then(function (data) {
291
+ if (!Array.isArray(data)) {
292
+ _classPrivateFieldSet(_this, _singleItemQuery, true);
293
+ }
294
+
295
+ return _classPrivateFieldGet(_this, _toArray).call(_this, data);
296
+ });
290
297
  }
291
298
  });
292
299
 
@@ -351,9 +358,36 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
351
358
  writable: true,
352
359
  value: function value(data) {
353
360
  if (Array.isArray(data)) {
354
- return data;
361
+ if (data.every(function (str) {
362
+ return ["string", "number"].includes(_typeof(str));
363
+ })) {
364
+ return [{
365
+ value: data
366
+ }];
367
+ } else {
368
+ return data;
369
+ }
355
370
  } else {
356
- return [data];
371
+ if (["string", "number"].includes(_typeof(data))) {
372
+ return [{
373
+ value: data
374
+ }];
375
+ } else {
376
+ return [data];
377
+ }
378
+ }
379
+ }
380
+ });
381
+
382
+ _classPrivateFieldInitSpec(this, _unWrap, {
383
+ writable: true,
384
+ value: function value(data) {
385
+ if (data.value != null && Object.keys(data).length === 1) {
386
+ return data.value;
387
+ } else if (Array.isArray(data) && data.length === 1 && data[0].value != null && Object.keys(data[0]).length === 1) {
388
+ return data[0].value;
389
+ } else {
390
+ return data;
357
391
  }
358
392
  }
359
393
  });
@@ -361,21 +395,21 @@ var Model = /*#__PURE__*/_createClass(function Model(name) {
361
395
  _classPrivateFieldInitSpec(this, _insertObjects, {
362
396
  writable: true,
363
397
  value: function value(data) {
364
- return (0, _modelHooksUtils.executeHook)("insert", _classPrivateFieldGet(_this, _insertHook), data, _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
398
+ return (0, _modelHooksUtils.executeHook)("insert", _classPrivateFieldGet(_this, _insertHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
365
399
  }
366
400
  });
367
401
 
368
402
  _classPrivateFieldInitSpec(this, _updateObjects, {
369
403
  writable: true,
370
404
  value: function value(data) {
371
- return (0, _modelHooksUtils.executeHook)("update", _classPrivateFieldGet(_this, _updateHook), data, _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
405
+ return (0, _modelHooksUtils.executeHook)("update", _classPrivateFieldGet(_this, _updateHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
372
406
  }
373
407
  });
374
408
 
375
409
  _classPrivateFieldInitSpec(this, _deleteObjects, {
376
410
  writable: true,
377
411
  value: function value(data) {
378
- return (0, _modelHooksUtils.executeHook)("delete", _classPrivateFieldGet(_this, _deleteHook), data, _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
412
+ return (0, _modelHooksUtils.executeHook)("delete", _classPrivateFieldGet(_this, _deleteHook), _classPrivateFieldGet(_this, _unWrap).call(_this, data), _classPrivateFieldGet(_this, _axios)).then(_classPrivateFieldGet(_this, _toArray));
379
413
  }
380
414
  });
381
415