dataflux 1.0.4 → 1.2.0

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.
@@ -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 md5 = require("md5");
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 markType(object, object !== null ? getObjectFingerprint(object) : "null");
21
+ return "o:".concat(object !== null ? getObjectFingerprint(object) : "null");
22
22
 
23
23
  case "boolean":
24
- return markType(object, object.toString());
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 markType(object, object.toString());
30
+ return "n:".concat(object.toString());
31
31
 
32
32
  case "string":
33
- return markType(object, object);
33
+ return "s:".concat(object);
34
34
 
35
35
  case "undefined":
36
- return markType(object, "undefined");
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 + "<" + fingerprint(value[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 md5(_getFingerprint(object));
62
+ return CRC32.str(_getFingerprint(object)).toString(16);
67
63
  }
@@ -5,39 +5,81 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getHooksFromUrl = exports.getHooksFromOptions = exports.executeHook = void 0;
7
7
 
8
- var _axios = _interopRequireDefault(require("axios"));
8
+ var _brembo = _interopRequireDefault(require("brembo"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
12
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
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,
14
+ var getDataStringHook = function getDataStringHook(hook) {
15
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
16
+ var axios = arguments.length > 2 ? arguments[2] : undefined;
17
+ var options = {
18
+ url: hook.url,
19
+ method: hook.method || "get",
20
20
  data: data,
21
21
  reponseType: 'json'
22
- }).then(function (data) {
22
+ };
23
+
24
+ if (hook.headers) {
25
+ options.headers = hook.headers;
26
+ }
27
+
28
+ if (hook.fields) {
29
+ setFields(options, hook);
30
+ }
31
+
32
+ return axios(options).then(function (data) {
23
33
  return data.data;
24
34
  });
25
35
  };
26
36
 
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
- };
37
+ var setFields = function setFields(options, hook) {
38
+ options.headers = options.headers || {};
39
+ options.headers['X-Fields'] = hook.fields;
40
+ options.url = _brembo["default"].build(options.url, {
41
+ params: {
42
+ fields: hook.fields.join(",")
43
+ }
44
+ });
45
+ };
46
+
47
+ var createHookItem = function createHookItem(optionItem, defaultMethod, defaultUrl, options) {
48
+ switch (_typeof(optionItem)) {
49
+ case "undefined":
50
+ if (!defaultUrl) {
51
+ console[console.warn ? "warn" : "log"]("The ".concat(defaultMethod, " operations will not work, there is no valid url or function for it."));
52
+ return function () {
53
+ return Promise.resolve([]);
54
+ };
55
+ } else {
56
+ return {
57
+ method: defaultMethod,
58
+ url: defaultUrl
59
+ };
60
+ }
61
+
62
+ case "function":
63
+ return function (data) {
64
+ return Promise.resolve(optionItem(data));
65
+ };
66
+
67
+ case "object":
68
+ return {
69
+ method: optionItem.method || defaultMethod,
70
+ url: optionItem.url || defaultUrl,
71
+ fields: options.fields || [],
72
+ headers: optionItem.headers || options.headers || {}
73
+ };
74
+
75
+ default:
76
+ throw new Error("Invalid ".concat(defaultMethod, " configuration"));
35
77
  }
36
78
  };
37
79
 
38
80
  var getHooksFromOptions = function getHooksFromOptions(options) {
39
81
  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)];
82
+ return [createHookItem(options.retrieve, "get", defaultUrl, options), createHookItem(options.insert, "post", defaultUrl, options), createHookItem(options.update, "put", defaultUrl, options), createHookItem(options["delete"], "delete", defaultUrl, options)];
41
83
  };
42
84
 
43
85
  exports.getHooksFromOptions = getHooksFromOptions;
@@ -60,12 +102,12 @@ var getHooksFromUrl = function getHooksFromUrl(url) {
60
102
 
61
103
  exports.getHooksFromUrl = getHooksFromUrl;
62
104
 
63
- var executeHook = function executeHook(type, hook, data) {
105
+ var executeHook = function executeHook(type, hook, data, axios) {
64
106
  var hookType = _typeof(hook);
65
107
 
66
108
  switch (hookType) {
67
109
  case "object":
68
- return getDataStringHook(hook.url, hook.method, data);
110
+ return getDataStringHook(hook, data, axios);
69
111
 
70
112
  case "function":
71
113
  return hook(data);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dataflux",
3
- "version": "1.0.4",
3
+ "version": "1.2.0",
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",
@@ -78,13 +78,13 @@
78
78
  },
79
79
  "devDependencies": {
80
80
  "@babel/cli": "^7.16.8",
81
- "@babel/core": "^7.16.7",
81
+ "@babel/core": "^7.16.12",
82
82
  "@babel/node": "^7.16.8",
83
83
  "@babel/plugin-proposal-class-properties": "^7.16.7",
84
84
  "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
85
85
  "@babel/plugin-transform-async-to-generator": "^7.16.8",
86
- "@babel/plugin-transform-runtime": "^7.16.8",
87
- "@babel/preset-env": "^7.16.8",
86
+ "@babel/plugin-transform-runtime": "^7.16.10",
87
+ "@babel/preset-env": "^7.16.11",
88
88
  "@babel/preset-react": "^7.16.7",
89
89
  "dotenv-cli": "^4.1.1",
90
90
  "release-it": "^14.12.3"
@@ -92,7 +92,8 @@
92
92
  "dependencies": {
93
93
  "axios": "^0.25.0",
94
94
  "batch-promises": "^0.0.3",
95
- "md5": "^2.3.0",
95
+ "brembo": "^2.0.6",
96
+ "crc-32": "^1.2.0",
96
97
  "uuid": "^8.3.2"
97
98
  },
98
99
  "resolutions": {}