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 +13 -9
- package/dist/BasicObj.js +3 -1
- package/dist/Model.js +48 -14
- package/dist/dataflux.min.js +2 -0
- package/dist/dataflux.min.js.map +1 -0
- package/dist/modelHooksUtils.js +18 -2
- package/package.json +10 -5
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/
|
|
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
|
-
|
|
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(
|
|
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
|
|
209
|
-
//
|
|
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: (
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|