dataflux 1.0.2
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/.babelrc +20 -0
- package/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/Model.js +175 -0
- package/dist/ObserverStore.js +260 -0
- package/dist/PersistentStore.js +148 -0
- package/dist/ReactStore.js +119 -0
- package/dist/Store.js +208 -0
- package/dist/StoreObject.js +96 -0
- package/dist/fingerprint.js +67 -0
- package/dist/index.js +23 -0
- package/dist/modelHooksUtils.js +78 -0
- package/package.json +90 -0
package/dist/Store.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _StoreObject = _interopRequireDefault(require("./StoreObject"));
|
|
9
|
+
|
|
10
|
+
var _fingerprint = _interopRequireDefault(require("./fingerprint"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
|
+
|
|
14
|
+
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); }
|
|
15
|
+
|
|
16
|
+
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(_e) { throw _e; }, 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(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
21
|
+
|
|
22
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
23
|
+
|
|
24
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
25
|
+
|
|
26
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
27
|
+
|
|
28
|
+
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; }
|
|
29
|
+
|
|
30
|
+
var Store = /*#__PURE__*/_createClass(function Store() {
|
|
31
|
+
var _this = this;
|
|
32
|
+
|
|
33
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
34
|
+
|
|
35
|
+
_classCallCheck(this, Store);
|
|
36
|
+
|
|
37
|
+
_defineProperty(this, "validateModel", function (model) {
|
|
38
|
+
var type = model.getType();
|
|
39
|
+
|
|
40
|
+
if (typeof type !== "string" || type === "") {
|
|
41
|
+
throw new Error("Not valid model object: type missing");
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
_defineProperty(this, "addModel", function (model) {
|
|
46
|
+
_this.validateModel(model);
|
|
47
|
+
|
|
48
|
+
var type = model.getType();
|
|
49
|
+
|
|
50
|
+
if (!_this.models[type]) {
|
|
51
|
+
_this.models[type] = {
|
|
52
|
+
model: model,
|
|
53
|
+
storedObjects: {}
|
|
54
|
+
};
|
|
55
|
+
model.store = _this;
|
|
56
|
+
|
|
57
|
+
if (!_this.options.lazyLoad) {
|
|
58
|
+
_this._loadObjects(type);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
throw new Error("The model already exists");
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
_defineProperty(this, "_getPromise", function (type) {
|
|
66
|
+
if (!_this.models[type]) {
|
|
67
|
+
return Promise.reject("The model doesn't exist");
|
|
68
|
+
} else if (!_this.models[type].promise && !_this.options.lazyLoad) {
|
|
69
|
+
return Promise.reject("The model is not loaded");
|
|
70
|
+
} else if (!_this.models[type].promise && _this.options.lazyLoad) {
|
|
71
|
+
return _this._loadObjects(type).then(function () {
|
|
72
|
+
return _this.models[type].promise;
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
return _this.models[type].promise;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
_defineProperty(this, "_insertObject", function (type, item) {
|
|
80
|
+
var markAsNew = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
81
|
+
var model = _this.models[type].model;
|
|
82
|
+
var wrapper = new _StoreObject["default"](item, model);
|
|
83
|
+
var id = wrapper.getId();
|
|
84
|
+
|
|
85
|
+
if (_this.models[type].storedObjects[id]) {
|
|
86
|
+
throw new Error("The IDs provided for the model ".concat(type, " are not unique"));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
_this.models[type].storedObjects[id] = {
|
|
90
|
+
id: id,
|
|
91
|
+
fingerprint: wrapper.getFingerprint(),
|
|
92
|
+
object: wrapper,
|
|
93
|
+
status: markAsNew ? "new" : "old"
|
|
94
|
+
};
|
|
95
|
+
return wrapper;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
_defineProperty(this, "_loadObjects", function (type) {
|
|
99
|
+
var item = _this.models[type];
|
|
100
|
+
return item.promise = item.model.retrieveAll().then(function (items) {
|
|
101
|
+
var _iterator = _createForOfIteratorHelper(items),
|
|
102
|
+
_step;
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
106
|
+
var _item = _step.value;
|
|
107
|
+
|
|
108
|
+
_this._insertObject(type, _item, false);
|
|
109
|
+
}
|
|
110
|
+
} catch (err) {
|
|
111
|
+
_iterator.e(err);
|
|
112
|
+
} finally {
|
|
113
|
+
_iterator.f();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
_defineProperty(this, "get", function (type, id) {
|
|
119
|
+
return _this._getPromise(type).then(function () {
|
|
120
|
+
try {
|
|
121
|
+
_this.models[type].storedObjects[id].object;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
return Promise.reject("Object not found");
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
_defineProperty(this, "find", function (type, filterFunction) {
|
|
129
|
+
return _this._getPromise(type).then(function () {
|
|
130
|
+
var all = Object.values(_this.models[type].storedObjects).filter(function (i) {
|
|
131
|
+
return i.status !== "deleted";
|
|
132
|
+
}).map(function (i) {
|
|
133
|
+
return i.object;
|
|
134
|
+
});
|
|
135
|
+
return filterFunction ? all.filter(filterFunction) : all;
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
_defineProperty(this, "_deleteByObject", function (object) {
|
|
140
|
+
return _this._deleteByFilter(object.getType(), function (item) {
|
|
141
|
+
return (0, _fingerprint["default"])(object) === (0, _fingerprint["default"])(item);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
_defineProperty(this, "_deleteByFilter", function (type, filterFunction) {
|
|
146
|
+
return _this._getPromise(type).then(function () {
|
|
147
|
+
var deleted = Object.values(_this.models[type].storedObjects).filter(function (i) {
|
|
148
|
+
return filterFunction(i.object);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
var _iterator2 = _createForOfIteratorHelper(deleted),
|
|
152
|
+
_step2;
|
|
153
|
+
|
|
154
|
+
try {
|
|
155
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
156
|
+
var object = _step2.value;
|
|
157
|
+
object.status = "deleted";
|
|
158
|
+
}
|
|
159
|
+
} catch (err) {
|
|
160
|
+
_iterator2.e(err);
|
|
161
|
+
} finally {
|
|
162
|
+
_iterator2.f();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
_this.trigger("delete", deleted.map(function (i) {
|
|
166
|
+
return i.object;
|
|
167
|
+
}));
|
|
168
|
+
|
|
169
|
+
return true;
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
_defineProperty(this, "delete", function (typeOrObjects, filterFunction) {
|
|
174
|
+
if (typeof typeOrObjects === "string" && typeof filterFunction === "function") {
|
|
175
|
+
return _this._deleteByFilter(typeOrObjects, filterFunction);
|
|
176
|
+
} else if (_typeof(typeOrObjects) === "object" && typeOrObjects.length) {
|
|
177
|
+
return Promise.all(typeOrObjects.map(_this._deleteByObject));
|
|
178
|
+
} else {
|
|
179
|
+
throw new Error("Invalid delete request. You have to provide a list of objects or a type and a filter function");
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
_defineProperty(this, "insert", function (type, object) {
|
|
184
|
+
return _this._getPromise(type).then(function () {
|
|
185
|
+
var newObj = _this._insertObject(type, object, true);
|
|
186
|
+
|
|
187
|
+
_this.trigger("insert", [newObj]);
|
|
188
|
+
|
|
189
|
+
return true;
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
_defineProperty(this, "update", function (objects) {
|
|
194
|
+
_this.trigger("update", objects);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
_defineProperty(this, "trigger", function (event, objects) {// Nothing here
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
this.options = {
|
|
201
|
+
autoSave: options.autoSave || 3000,
|
|
202
|
+
saveDelay: options.autoSave || 1000,
|
|
203
|
+
lazyLoad: options.lazyLoad || false
|
|
204
|
+
};
|
|
205
|
+
this.models = {};
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
exports["default"] = Store;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _fingerprint = _interopRequireDefault(require("./fingerprint"));
|
|
9
|
+
|
|
10
|
+
var _uuid = require("uuid");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
|
+
|
|
14
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
15
|
+
|
|
16
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
17
|
+
|
|
18
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
var Obj = /*#__PURE__*/_createClass(function Obj(values, model) {
|
|
23
|
+
var _this = this;
|
|
24
|
+
|
|
25
|
+
_classCallCheck(this, Obj);
|
|
26
|
+
|
|
27
|
+
_defineProperty(this, "getFingerprint", function () {
|
|
28
|
+
return (0, _fingerprint["default"])(_this.toJson());
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
_defineProperty(this, "get", function (attribute) {
|
|
32
|
+
return _this[attribute];
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
_defineProperty(this, "getRelation", function (type, filterFunction) {
|
|
36
|
+
return _this.getModel().getRelation(_this, type, filterFunction);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
_defineProperty(this, "set", function (attribute, value) {
|
|
40
|
+
if (attribute === "id") {
|
|
41
|
+
throw new Error("You cannot change the ID");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
_this[attribute] = value;
|
|
45
|
+
|
|
46
|
+
_this.getModel().getStore().update([_this]);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
_defineProperty(this, "save", function () {
|
|
50
|
+
return _this.getModel().getStore().save([_this]);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
_defineProperty(this, "destroy", function () {
|
|
54
|
+
return _this.getModel().getStore()["delete"]([_this]);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
_defineProperty(this, "toJson", function () {
|
|
58
|
+
var attrs = Object.keys(_this);
|
|
59
|
+
var out = {};
|
|
60
|
+
|
|
61
|
+
for (var _i = 0, _attrs = attrs; _i < _attrs.length; _i++) {
|
|
62
|
+
var a = _attrs[_i];
|
|
63
|
+
|
|
64
|
+
if (typeof _this[a] !== "function") {
|
|
65
|
+
out[a] = _this[a];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return out;
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
_defineProperty(this, "toString", function () {
|
|
73
|
+
return JSON.stringify(_this.toJson());
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
this.getModel = function () {
|
|
77
|
+
return model;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
Object.keys(values).forEach(function (key) {
|
|
81
|
+
_this[key] = values[key];
|
|
82
|
+
});
|
|
83
|
+
var id;
|
|
84
|
+
|
|
85
|
+
if (this.id && (typeof this.id === "string" || typeof this.id === "number")) {
|
|
86
|
+
id = this.id.toString();
|
|
87
|
+
} else {
|
|
88
|
+
id = (0, _uuid.v4)();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
this.getId = function () {
|
|
92
|
+
return id;
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
exports["default"] = Obj;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = fingerprint;
|
|
7
|
+
|
|
8
|
+
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(_e) { throw _e; }, 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(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
9
|
+
|
|
10
|
+
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); }
|
|
11
|
+
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
+
|
|
14
|
+
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); }
|
|
15
|
+
|
|
16
|
+
var md5 = require("md5");
|
|
17
|
+
|
|
18
|
+
var _getFingerprint = function _getFingerprint(object) {
|
|
19
|
+
switch (_typeof(object)) {
|
|
20
|
+
case "object":
|
|
21
|
+
return markType(object, object !== null ? getObjectFingerprint(object) : "null");
|
|
22
|
+
|
|
23
|
+
case "boolean":
|
|
24
|
+
return markType(object, object.toString());
|
|
25
|
+
|
|
26
|
+
case "function":
|
|
27
|
+
throw new Error("You cannot pass a function as data item");
|
|
28
|
+
|
|
29
|
+
case "number":
|
|
30
|
+
return markType(object, object.toString());
|
|
31
|
+
|
|
32
|
+
case "string":
|
|
33
|
+
return markType(object, object);
|
|
34
|
+
|
|
35
|
+
case "undefined":
|
|
36
|
+
return markType(object, "undefined");
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var markType = function markType(object, fingerprint) {
|
|
41
|
+
return _typeof(object) + ":" + fingerprint;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
var getObjectFingerprint = function getObjectFingerprint(value) {
|
|
45
|
+
var sortedKeys = Object.keys(value).sort();
|
|
46
|
+
var buff = "";
|
|
47
|
+
|
|
48
|
+
var _iterator = _createForOfIteratorHelper(sortedKeys),
|
|
49
|
+
_step;
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53
|
+
var key = _step.value;
|
|
54
|
+
buff += key + "<" + fingerprint(value[key]) + ">";
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_iterator.e(err);
|
|
58
|
+
} finally {
|
|
59
|
+
_iterator.f();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return buff;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
function fingerprint(object) {
|
|
66
|
+
return md5(_getFingerprint(object));
|
|
67
|
+
}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Model", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _Model["default"];
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "Store", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _ReactStore["default"];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
var _ReactStore = _interopRequireDefault(require("./ReactStore"));
|
|
20
|
+
|
|
21
|
+
var _Model = _interopRequireDefault(require("./Model"));
|
|
22
|
+
|
|
23
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getHooksFromUrl = exports.getHooksFromOptions = exports.executeHook = void 0;
|
|
7
|
+
|
|
8
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
|
|
12
|
+
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); }
|
|
13
|
+
|
|
14
|
+
var getDataStringHook = function getDataStringHook(url) {
|
|
15
|
+
var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "get";
|
|
16
|
+
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
17
|
+
return (0, _axios["default"])({
|
|
18
|
+
url: url,
|
|
19
|
+
method: method,
|
|
20
|
+
data: data,
|
|
21
|
+
reponseType: 'json'
|
|
22
|
+
}).then(function (data) {
|
|
23
|
+
return data.data;
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var createHookItem = function createHookItem(optionItem, defaultMethod, defaultUrl) {
|
|
28
|
+
if (typeof optionItem === "function") {
|
|
29
|
+
return optionItem;
|
|
30
|
+
} else {
|
|
31
|
+
return {
|
|
32
|
+
method: optionItem.method || defaultMethod,
|
|
33
|
+
url: optionItem.url || defaultUrl
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var getHooksFromOptions = function getHooksFromOptions(options) {
|
|
39
|
+
var defaultUrl = typeof options.retrieve === "function" ? null : options.retrieve.url;
|
|
40
|
+
return [createHookItem(options.retrieve, "get", defaultUrl), createHookItem(options.insert, "post", defaultUrl), createHookItem(options.update, "put", defaultUrl), createHookItem(options["delete"], "delete", defaultUrl)];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.getHooksFromOptions = getHooksFromOptions;
|
|
44
|
+
|
|
45
|
+
var getHooksFromUrl = function getHooksFromUrl(url) {
|
|
46
|
+
return [{
|
|
47
|
+
method: "get",
|
|
48
|
+
url: url
|
|
49
|
+
}, {
|
|
50
|
+
method: "post",
|
|
51
|
+
url: url
|
|
52
|
+
}, {
|
|
53
|
+
method: "put",
|
|
54
|
+
url: url
|
|
55
|
+
}, {
|
|
56
|
+
method: "delete",
|
|
57
|
+
url: url
|
|
58
|
+
}];
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.getHooksFromUrl = getHooksFromUrl;
|
|
62
|
+
|
|
63
|
+
var executeHook = function executeHook(type, hook, data) {
|
|
64
|
+
var hookType = _typeof(hook);
|
|
65
|
+
|
|
66
|
+
switch (hookType) {
|
|
67
|
+
case "object":
|
|
68
|
+
return getDataStringHook(hook.url, hook.method, data);
|
|
69
|
+
|
|
70
|
+
case "function":
|
|
71
|
+
return hook(data);
|
|
72
|
+
|
|
73
|
+
default:
|
|
74
|
+
return Promise.reject("The ".concat(type, " hook must be a URL or a function returning a promise"));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.executeHook = executeHook;
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dataflux",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "DataFlux, automatically interfaces with your REST APIs to create a 2-way-synced local data store. Transparently manages data propagation in the React state.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": "dist/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"babel": "node_modules/.bin/babel",
|
|
9
|
+
"test": "./node_modules/.bin/mocha tests --require @babel/register",
|
|
10
|
+
"compile": "rm -rf dist/ && ./node_modules/.bin/babel src -d dist",
|
|
11
|
+
"release": "dotenv release-it"
|
|
12
|
+
},
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "Massimo Candela",
|
|
15
|
+
"url": "https://massimocandela.com"
|
|
16
|
+
},
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/massimocandela/dataflux.git"
|
|
21
|
+
},
|
|
22
|
+
"release-it": {
|
|
23
|
+
"hooks": {
|
|
24
|
+
"before:init": [
|
|
25
|
+
"npm ci"
|
|
26
|
+
],
|
|
27
|
+
"after:bump": [
|
|
28
|
+
"npm run compile",
|
|
29
|
+
"git add dist/"
|
|
30
|
+
],
|
|
31
|
+
"after:release": [
|
|
32
|
+
"echo Successfully released ${name} v${version} to ${repo.repository}.",
|
|
33
|
+
"rm -r dist/"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"git": {
|
|
37
|
+
"changelog": "git log --pretty=format:\"* %s (%h)\" ${from}...${to}",
|
|
38
|
+
"requireCleanWorkingDir": true,
|
|
39
|
+
"requireBranch": "main",
|
|
40
|
+
"requireUpstream": true,
|
|
41
|
+
"requireCommits": false,
|
|
42
|
+
"addUntrackedFiles": false,
|
|
43
|
+
"commit": true,
|
|
44
|
+
"commitMessage": "Release v${version}",
|
|
45
|
+
"commitArgs": [],
|
|
46
|
+
"tag": true,
|
|
47
|
+
"tagName": null,
|
|
48
|
+
"tagAnnotation": "Release v${version}",
|
|
49
|
+
"tagArgs": [],
|
|
50
|
+
"push": true,
|
|
51
|
+
"pushArgs": [
|
|
52
|
+
"--follow-tags"
|
|
53
|
+
],
|
|
54
|
+
"pushRepo": ""
|
|
55
|
+
},
|
|
56
|
+
"gitlab": {
|
|
57
|
+
"release": false
|
|
58
|
+
},
|
|
59
|
+
"npm": {
|
|
60
|
+
"publish": true
|
|
61
|
+
},
|
|
62
|
+
"github": {
|
|
63
|
+
"release": true,
|
|
64
|
+
"releaseName": "v${version}",
|
|
65
|
+
"tokenRef": "GITHUB_TOKEN",
|
|
66
|
+
"origin": null,
|
|
67
|
+
"skipChecks": false
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@babel/cli": "^7.16.8",
|
|
72
|
+
"@babel/core": "^7.16.7",
|
|
73
|
+
"@babel/node": "^7.16.8",
|
|
74
|
+
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
75
|
+
"@babel/plugin-proposal-object-rest-spread": "^7.16.7",
|
|
76
|
+
"@babel/plugin-transform-async-to-generator": "^7.16.8",
|
|
77
|
+
"@babel/plugin-transform-runtime": "^7.16.8",
|
|
78
|
+
"@babel/preset-env": "^7.16.8",
|
|
79
|
+
"@babel/preset-react": "^7.16.7",
|
|
80
|
+
"dotenv-cli": "^4.1.1",
|
|
81
|
+
"release-it": "^14.12.3"
|
|
82
|
+
},
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"axios": "^0.25.0",
|
|
85
|
+
"batch-promises": "^0.0.3",
|
|
86
|
+
"md5": "^2.3.0",
|
|
87
|
+
"uuid": "^8.3.2"
|
|
88
|
+
},
|
|
89
|
+
"resolutions": {}
|
|
90
|
+
}
|