dataflux 1.0.2 → 1.1.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/README.md +199 -130
- package/dist/Model.js +198 -59
- package/dist/ObserverStore.js +178 -131
- package/dist/PersistentStore.js +104 -75
- package/dist/PubSub.js +59 -0
- package/dist/ReactStore.js +22 -2
- package/dist/Store.js +295 -151
- package/dist/fingerprint.js +8 -12
- package/dist/modelHooksUtils.js +31 -14
- package/package.json +17 -8
package/dist/fingerprint.js
CHANGED
|
@@ -13,34 +13,30 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
13
13
|
|
|
14
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
15
|
|
|
16
|
-
var
|
|
16
|
+
var CRC32 = require('crc-32');
|
|
17
17
|
|
|
18
18
|
var _getFingerprint = function _getFingerprint(object) {
|
|
19
19
|
switch (_typeof(object)) {
|
|
20
20
|
case "object":
|
|
21
|
-
return
|
|
21
|
+
return "o:".concat(object !== null ? getObjectFingerprint(object) : "null");
|
|
22
22
|
|
|
23
23
|
case "boolean":
|
|
24
|
-
return
|
|
24
|
+
return "b:".concat(object ? "t" : "f");
|
|
25
25
|
|
|
26
26
|
case "function":
|
|
27
27
|
throw new Error("You cannot pass a function as data item");
|
|
28
28
|
|
|
29
29
|
case "number":
|
|
30
|
-
return
|
|
30
|
+
return "n:".concat(object.toString());
|
|
31
31
|
|
|
32
32
|
case "string":
|
|
33
|
-
return
|
|
33
|
+
return "s:".concat(object);
|
|
34
34
|
|
|
35
35
|
case "undefined":
|
|
36
|
-
return
|
|
36
|
+
return "u";
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
var markType = function markType(object, fingerprint) {
|
|
41
|
-
return _typeof(object) + ":" + fingerprint;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
40
|
var getObjectFingerprint = function getObjectFingerprint(value) {
|
|
45
41
|
var sortedKeys = Object.keys(value).sort();
|
|
46
42
|
var buff = "";
|
|
@@ -51,7 +47,7 @@ var getObjectFingerprint = function getObjectFingerprint(value) {
|
|
|
51
47
|
try {
|
|
52
48
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53
49
|
var key = _step.value;
|
|
54
|
-
buff += key
|
|
50
|
+
buff += "".concat(key, "<").concat(fingerprint(value[key]), ">");
|
|
55
51
|
}
|
|
56
52
|
} catch (err) {
|
|
57
53
|
_iterator.e(err);
|
|
@@ -63,5 +59,5 @@ var getObjectFingerprint = function getObjectFingerprint(value) {
|
|
|
63
59
|
};
|
|
64
60
|
|
|
65
61
|
function fingerprint(object) {
|
|
66
|
-
return
|
|
62
|
+
return CRC32.str(_getFingerprint(object)).toString(16);
|
|
67
63
|
}
|
package/dist/modelHooksUtils.js
CHANGED
|
@@ -5,16 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getHooksFromUrl = exports.getHooksFromOptions = exports.executeHook = void 0;
|
|
7
7
|
|
|
8
|
-
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
-
|
|
12
8
|
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
9
|
|
|
14
10
|
var getDataStringHook = function getDataStringHook(url) {
|
|
15
11
|
var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "get";
|
|
16
12
|
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
17
|
-
|
|
13
|
+
var axios = arguments.length > 3 ? arguments[3] : undefined;
|
|
14
|
+
return axios({
|
|
18
15
|
url: url,
|
|
19
16
|
method: method,
|
|
20
17
|
data: data,
|
|
@@ -25,13 +22,33 @@ var getDataStringHook = function getDataStringHook(url) {
|
|
|
25
22
|
};
|
|
26
23
|
|
|
27
24
|
var createHookItem = function createHookItem(optionItem, defaultMethod, defaultUrl) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
switch (_typeof(optionItem)) {
|
|
26
|
+
case "undefined":
|
|
27
|
+
if (!defaultUrl) {
|
|
28
|
+
console[console.warn ? "warn" : "log"]("The ".concat(defaultMethod, " operations will not work, there is no valid url or function for it."));
|
|
29
|
+
return function () {
|
|
30
|
+
return Promise.resolve([]);
|
|
31
|
+
};
|
|
32
|
+
} else {
|
|
33
|
+
return {
|
|
34
|
+
method: defaultMethod,
|
|
35
|
+
url: defaultUrl
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
case "function":
|
|
40
|
+
return function (data) {
|
|
41
|
+
return Promise.resolve(optionItem(data));
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
case "object":
|
|
45
|
+
return {
|
|
46
|
+
method: optionItem.method || defaultMethod,
|
|
47
|
+
url: optionItem.url || defaultUrl
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
default:
|
|
51
|
+
throw new Error("Invalid ".concat(defaultMethod, " configuration"));
|
|
35
52
|
}
|
|
36
53
|
};
|
|
37
54
|
|
|
@@ -60,12 +77,12 @@ var getHooksFromUrl = function getHooksFromUrl(url) {
|
|
|
60
77
|
|
|
61
78
|
exports.getHooksFromUrl = getHooksFromUrl;
|
|
62
79
|
|
|
63
|
-
var executeHook = function executeHook(type, hook, data) {
|
|
80
|
+
var executeHook = function executeHook(type, hook, data, axios) {
|
|
64
81
|
var hookType = _typeof(hook);
|
|
65
82
|
|
|
66
83
|
switch (hookType) {
|
|
67
84
|
case "object":
|
|
68
|
-
return getDataStringHook(hook.url, hook.method, data);
|
|
85
|
+
return getDataStringHook(hook.url, hook.method, data, axios);
|
|
69
86
|
|
|
70
87
|
case "function":
|
|
71
88
|
return hook(data);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dataflux",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
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
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/index.js",
|
|
@@ -14,19 +14,28 @@
|
|
|
14
14
|
"name": "Massimo Candela",
|
|
15
15
|
"url": "https://massimocandela.com"
|
|
16
16
|
},
|
|
17
|
-
"license": "
|
|
17
|
+
"license": "MIT",
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
20
|
"url": "https://github.com/massimocandela/dataflux.git"
|
|
21
21
|
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"data",
|
|
24
|
+
"React",
|
|
25
|
+
"REST",
|
|
26
|
+
"ORM",
|
|
27
|
+
"browser",
|
|
28
|
+
"api",
|
|
29
|
+
"observable",
|
|
30
|
+
"layer"
|
|
31
|
+
],
|
|
22
32
|
"release-it": {
|
|
23
33
|
"hooks": {
|
|
24
34
|
"before:init": [
|
|
25
35
|
"npm ci"
|
|
26
36
|
],
|
|
27
37
|
"after:bump": [
|
|
28
|
-
"npm run compile"
|
|
29
|
-
"git add dist/"
|
|
38
|
+
"npm run compile"
|
|
30
39
|
],
|
|
31
40
|
"after:release": [
|
|
32
41
|
"echo Successfully released ${name} v${version} to ${repo.repository}.",
|
|
@@ -69,13 +78,13 @@
|
|
|
69
78
|
},
|
|
70
79
|
"devDependencies": {
|
|
71
80
|
"@babel/cli": "^7.16.8",
|
|
72
|
-
"@babel/core": "^7.16.
|
|
81
|
+
"@babel/core": "^7.16.10",
|
|
73
82
|
"@babel/node": "^7.16.8",
|
|
74
83
|
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
75
84
|
"@babel/plugin-proposal-object-rest-spread": "^7.16.7",
|
|
76
85
|
"@babel/plugin-transform-async-to-generator": "^7.16.8",
|
|
77
|
-
"@babel/plugin-transform-runtime": "^7.16.
|
|
78
|
-
"@babel/preset-env": "^7.16.
|
|
86
|
+
"@babel/plugin-transform-runtime": "^7.16.10",
|
|
87
|
+
"@babel/preset-env": "^7.16.10",
|
|
79
88
|
"@babel/preset-react": "^7.16.7",
|
|
80
89
|
"dotenv-cli": "^4.1.1",
|
|
81
90
|
"release-it": "^14.12.3"
|
|
@@ -83,7 +92,7 @@
|
|
|
83
92
|
"dependencies": {
|
|
84
93
|
"axios": "^0.25.0",
|
|
85
94
|
"batch-promises": "^0.0.3",
|
|
86
|
-
"
|
|
95
|
+
"crc-32": "^1.2.0",
|
|
87
96
|
"uuid": "^8.3.2"
|
|
88
97
|
},
|
|
89
98
|
"resolutions": {}
|