@3plus/redux-api 1.0.5 → 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/lib/PubSub.js CHANGED
@@ -1,43 +1,20 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
9
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
10
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
11
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
12
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
- var PubSub = exports["default"] = /*#__PURE__*/function () {
14
- function PubSub() {
15
- _classCallCheck(this, PubSub);
3
+ export default class PubSub {
4
+ constructor() {
16
5
  this.container = [];
17
6
  }
18
- return _createClass(PubSub, [{
19
- key: "push",
20
- value: function push(cb) {
21
- cb instanceof Function && this.container.push(cb);
22
- }
23
- }, {
24
- key: "resolve",
25
- value: function resolve(data) {
26
- var container = this.container;
27
- this.container = [];
28
- container.forEach(function (cb) {
29
- return cb(null, data);
30
- });
31
- }
32
- }, {
33
- key: "reject",
34
- value: function reject(err) {
35
- var container = this.container;
36
- this.container = [];
37
- container.forEach(function (cb) {
38
- return cb(err);
39
- });
40
- }
41
- }]);
42
- }();
43
- module.exports = exports.default;
7
+ push(cb) {
8
+ cb instanceof Function && this.container.push(cb);
9
+ }
10
+ resolve(data) {
11
+ const container = this.container;
12
+ this.container = [];
13
+ container.forEach(cb => cb(null, data));
14
+ }
15
+ reject(err) {
16
+ const container = this.container;
17
+ this.container = [];
18
+ container.forEach(cb => cb(err));
19
+ }
20
+ }
package/lib/actionFn.js CHANGED
@@ -1,104 +1,78 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = actionFn;
8
- var _fastApply = _interopRequireDefault(require("fast-apply"));
9
- var _url = _interopRequireDefault(require("url"));
10
- var _urlTransform = _interopRequireDefault(require("./urlTransform"));
11
- var _merge = _interopRequireDefault(require("./utils/merge"));
12
- var _get = _interopRequireDefault(require("./utils/get"));
13
- var _fetchResolver = _interopRequireDefault(require("./fetchResolver"));
14
- var _PubSub = _interopRequireDefault(require("./PubSub"));
15
- var _createHolder = _interopRequireDefault(require("./createHolder"));
16
- var _helpers = require("./helpers");
17
- var _cache = require("./utils/cache");
18
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
19
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
22
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
23
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
24
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
25
- 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."); }
26
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
27
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
29
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
30
- /**
31
- * Constructor for create action
32
- * @param {String} url endpoint's url
33
- * @param {String} name action name
34
- * @param {Object} options action configuration
35
- * @param {Object} ACTIONS map of actions
36
- * @param {[type]} fetchAdapter adapter for fetching data
37
- * @return {Function+Object} action function object
38
- */
39
- function actionFn(url, name, options) {
40
- var ACTIONS = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
41
- var meta = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
42
- var actionFetch = ACTIONS.actionFetch,
43
- actionSuccess = ACTIONS.actionSuccess,
44
- actionFail = ACTIONS.actionFail,
45
- actionReset = ACTIONS.actionReset,
46
- actionCache = ACTIONS.actionCache,
47
- actionAbort = ACTIONS.actionAbort;
48
- var pubsub = new _PubSub["default"]();
49
- var requestHolder = (0, _createHolder["default"])();
3
+ import urlTransform from "./urlTransform";
4
+ import merge from "./utils/merge";
5
+ import get from "./utils/get";
6
+ import fetchResolver from "./fetchResolver";
7
+ import PubSub from "./PubSub";
8
+ import createHolder from "./createHolder";
9
+ import { none, extractArgs, defaultMiddlewareArgsParser, CRUD } from "./helpers";
10
+ import { getCacheManager } from "./utils/cache";
11
+ export default function actionFn(url, name, options, ACTIONS = {}, meta = {}) {
12
+ const {
13
+ actionFetch,
14
+ actionSuccess,
15
+ actionFail,
16
+ actionReset,
17
+ actionCache,
18
+ actionAbort
19
+ } = ACTIONS;
20
+ const pubsub = new PubSub();
21
+ const requestHolder = createHolder();
50
22
  function getOptions(urlT, params, getState) {
51
- var globalOptions = !meta.holder ? {} : meta.holder.options instanceof Function ? meta.holder.options(urlT, params, getState) : meta.holder.options;
52
- var baseOptions = !(options instanceof Function) ? options : options(urlT, params, getState);
53
- return (0, _merge["default"])({}, globalOptions, baseOptions, params);
23
+ const globalOptions = !meta.holder ? {} : meta.holder.options instanceof Function ? meta.holder.options(urlT, params, getState) : meta.holder.options;
24
+ const baseOptions = !(options instanceof Function) ? options : options(urlT, params, getState);
25
+ return merge({}, globalOptions, baseOptions, params);
54
26
  }
55
27
  function getUrl(pathvars, params, getState) {
56
- var resultUrlT = (0, _urlTransform["default"])(url, pathvars, meta.urlOptions);
57
- var urlT = resultUrlT;
58
- var rootUrl = (0, _get["default"])(meta, "holder", "rootUrl");
28
+ const resultUrlT = urlTransform(url, pathvars, meta.urlOptions);
29
+ let urlT = resultUrlT;
30
+ let rootUrl = get(meta, "holder", "rootUrl");
59
31
  rootUrl = !(rootUrl instanceof Function) ? rootUrl : rootUrl(urlT, params, getState);
60
32
  if (rootUrl) {
61
- var rootUrlObject = _url["default"].parse(rootUrl);
62
- var urlObject = _url["default"].parse(urlT);
33
+ let urlObject = {};
34
+ try {
35
+ urlObject = new URL(urlT);
36
+ } catch (error) {
37
+ urlObject = {
38
+ pathname: urlT
39
+ };
40
+ }
41
+ const rootUrlObject = new URL(rootUrl);
63
42
  if (!urlObject.host) {
64
- var urlPath = (rootUrlObject.path ? rootUrlObject.path.replace(/\/$/, "") : "") + "/" + (urlObject.path ? urlObject.path.replace(/^\//, "") : "");
65
- urlT = "".concat(rootUrlObject.protocol, "//").concat(rootUrlObject.host).concat(urlPath);
43
+ const urlPath = (rootUrlObject.pathname ? rootUrlObject.pathname.replace(/\/$/, "") : "") + "/" + (urlObject.pathname ? urlObject.pathname.replace(/^\//, "") : "");
44
+ urlT = `${rootUrlObject.protocol}//${rootUrlObject.host}${urlPath}`;
66
45
  }
67
46
  }
68
47
  return urlT;
69
48
  }
70
- function fetch(pathvars, params) {
71
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
72
- var getState = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _helpers.none;
73
- var dispatch = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _helpers.none;
74
- var urlT = getUrl(pathvars, params, getState);
75
- var opts = getOptions(urlT, params, getState);
76
- var id = meta.reducerName || "";
77
- var cacheManager = (0, _cache.getCacheManager)(options.expire, meta.cache);
78
- if (cacheManager && getState !== _helpers.none) {
79
- var state = getState();
80
- var cache = (0, _get["default"])(state, meta.prefix, meta.reducerName, "cache");
49
+ function fetch(pathvars, params, options = {}, getState = none, dispatch = none) {
50
+ const urlT = getUrl(pathvars, params, getState);
51
+ const opts = getOptions(urlT, params, getState);
52
+ let id = meta.reducerName || "";
53
+ const cacheManager = getCacheManager(options.expire, meta.cache);
54
+ if (cacheManager && getState !== none) {
55
+ const state = getState();
56
+ const cache = get(state, meta.prefix, meta.reducerName, "cache");
81
57
  id += "_" + cacheManager.id(pathvars, params);
82
- var data = cacheManager.getData(cache && id && cache[id] !== undefined && cache[id]);
58
+ const data = cacheManager.getData(cache && id && cache[id] !== undefined && cache[id]);
83
59
  if (data !== undefined) {
84
60
  if (cache[id].persisted) {
85
61
  Object.defineProperty(data, "persisted", {
86
62
  value: true
87
63
  });
88
- // expire persisted cache immediately after consumption
89
- // because we will try to reload and persist new data
90
64
  cache[id].expire = true;
91
65
  }
92
66
  return Promise.resolve(data);
93
67
  }
94
68
  }
95
- var response = meta.fetch(urlT, opts, options);
96
- if (cacheManager && dispatch !== _helpers.none && id) {
97
- response.then(function (data) {
69
+ const response = meta.fetch(urlT, opts, options);
70
+ if (cacheManager && dispatch !== none && id) {
71
+ response.then(data => {
98
72
  dispatch({
99
73
  type: actionCache,
100
- id: id,
101
- data: data,
74
+ id,
75
+ data,
102
76
  expire: cacheManager.expire
103
77
  });
104
78
  });
@@ -106,99 +80,70 @@ function actionFn(url, name, options) {
106
80
  return response;
107
81
  }
108
82
  function abort() {
109
- var defer = requestHolder.pop();
110
- var err = new Error("Application abort request");
83
+ const defer = requestHolder.pop();
84
+ const err = new Error("Application abort request");
111
85
  defer && defer.reject(err);
112
86
  return err;
113
87
  }
114
-
115
- /**
116
- * Fetch data from server
117
- * @param {Object} pathvars path vars for url
118
- * @param {Object} params fetch params
119
- * @param {Function} getState helper meta function
120
- */
121
- function request(pathvars, params, options) {
122
- var getState = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _helpers.none;
123
- var dispatch = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _helpers.none;
124
- var response = fetch(pathvars, params, options, getState, dispatch);
125
- var result = !meta.validation ? response : response.then(function (data) {
126
- return new Promise(function (resolve, reject) {
127
- meta.validation(data, function (err) {
128
- return err ? reject(err) : resolve(data);
129
- });
130
- });
131
- });
132
- var ret = result;
133
- var responseHandler = (0, _get["default"])(meta, "holder", "responseHandler");
88
+ function request(pathvars, params, options, getState = none, dispatch = none) {
89
+ const response = fetch(pathvars, params, options, getState, dispatch);
90
+ const result = !meta.validation ? response : response.then(data => new Promise((resolve, reject) => {
91
+ meta.validation(data, err => err ? reject(err) : resolve(data));
92
+ }));
93
+ let ret = result;
94
+ const responseHandler = get(meta, "holder", "responseHandler");
134
95
  if (responseHandler) {
135
96
  if (result && result.then) {
136
- ret = result.then(function (data) {
137
- var res = responseHandler(null, data);
97
+ ret = result.then(data => {
98
+ const res = responseHandler(null, data);
138
99
  if (res === undefined) {
139
100
  return data;
140
101
  } else {
141
102
  return res;
142
103
  }
143
- }, function (err) {
144
- return responseHandler(err);
145
- });
104
+ }, err => responseHandler(err));
146
105
  } else {
147
106
  ret = responseHandler(result);
148
107
  }
149
108
  }
150
- ret && ret["catch"] && ret["catch"](_helpers.none);
109
+ ret && ret.catch && ret.catch(none);
151
110
  return ret;
152
111
  }
153
-
154
- /**
155
- * Fetch data from server
156
- * @param {Object} pathvars path vars for url
157
- * @param {Object} params fetch params
158
- * @param {Function} callback) callback execute after end request
159
- */
160
- function fn() {
161
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
162
- args[_key] = arguments[_key];
163
- }
164
- var _extractArgs = (0, _helpers.extractArgs)(args),
165
- _extractArgs2 = _slicedToArray(_extractArgs, 3),
166
- pathvars = _extractArgs2[0],
167
- params = _extractArgs2[1],
168
- callback = _extractArgs2[2];
169
- var syncing = params ? !!params.syncing : false;
112
+ function fn(...args) {
113
+ const [pathvars, params, callback] = extractArgs(args);
114
+ const syncing = params ? !!params.syncing : false;
170
115
  params && delete params.syncing;
171
116
  pubsub.push(callback);
172
- return function () {
173
- var middlewareParser = (0, _get["default"])(meta, "holder", "middlewareParser") || _helpers.defaultMiddlewareArgsParser;
174
- var _middlewareParser = middlewareParser.apply(void 0, arguments),
175
- dispatch = _middlewareParser.dispatch,
176
- getState = _middlewareParser.getState;
177
- var state = getState();
178
- var isLoading = (0, _get["default"])(state, meta.prefix, meta.reducerName, "loading");
117
+ return (...middlewareArgs) => {
118
+ const middlewareParser = get(meta, "holder", "middlewareParser") || defaultMiddlewareArgsParser;
119
+ const {
120
+ dispatch,
121
+ getState
122
+ } = middlewareParser(...middlewareArgs);
123
+ const state = getState();
124
+ const isLoading = get(state, meta.prefix, meta.reducerName, "loading");
179
125
  if (isLoading) {
180
126
  return Promise.reject("isLoading-" + meta.prefix + "-" + meta.reducerName);
181
127
  }
182
- var requestOptions = {
183
- pathvars: pathvars,
184
- params: params
128
+ const requestOptions = {
129
+ pathvars,
130
+ params
185
131
  };
186
132
  dispatch({
187
133
  type: actionFetch,
188
- syncing: syncing,
134
+ syncing,
189
135
  request: requestOptions
190
136
  });
191
- var fetchResolverOpts = {
192
- dispatch: dispatch,
193
- getState: getState,
137
+ const fetchResolverOpts = {
138
+ dispatch,
139
+ getState,
194
140
  request: requestOptions,
195
141
  actions: meta.actions,
196
142
  prefetch: meta.prefetch
197
143
  };
198
144
  if (Object.defineProperty) {
199
145
  Object.defineProperty(fetchResolverOpts, "requestOptions", {
200
- get: function get() {
201
- /* eslint no-console: 0 */
146
+ get() {
202
147
  console.warn("Deprecated option, use `request` option");
203
148
  return requestOptions;
204
149
  }
@@ -206,8 +151,8 @@ function actionFn(url, name, options) {
206
151
  } else {
207
152
  fetchResolverOpts.requestOptions = requestOptions;
208
153
  }
209
- var result = new Promise(function (done, fail) {
210
- (0, _fetchResolver["default"])(0, fetchResolverOpts, function (err) {
154
+ const result = new Promise((done, fail) => {
155
+ fetchResolver(0, fetchResolverOpts, err => {
211
156
  if (err) {
212
157
  dispatch({
213
158
  error: err,
@@ -219,42 +164,42 @@ function actionFn(url, name, options) {
219
164
  pubsub.reject(err);
220
165
  return fail(err);
221
166
  }
222
- new Promise(function (resolve, reject) {
167
+ new Promise((resolve, reject) => {
223
168
  requestHolder.set({
224
- resolve: resolve,
225
- reject: reject,
169
+ resolve,
170
+ reject,
226
171
  promise: request(pathvars, params, fetchResolverOpts.request, getState, dispatch).then(resolve, reject)
227
172
  });
228
- }).then(function (d) {
173
+ }).then(d => {
229
174
  requestHolder.pop();
230
- var prevData = (0, _get["default"])(state, meta.prefix, meta.reducerName, "data");
231
- var data = meta.transformer(d, prevData, {
175
+ const prevData = get(state, meta.prefix, meta.reducerName, "data");
176
+ const data = meta.transformer(d, prevData, {
232
177
  type: actionSuccess,
233
178
  request: requestOptions
234
179
  }, getState);
235
180
  dispatch({
236
- data: data,
181
+ data,
237
182
  origData: d,
238
183
  type: actionSuccess,
239
184
  syncing: false,
240
185
  request: requestOptions
241
186
  });
242
187
  if (meta.broadcast) {
243
- meta.broadcast.forEach(function (type) {
188
+ meta.broadcast.forEach(type => {
244
189
  dispatch({
245
- type: type,
246
- data: data,
190
+ type,
191
+ data,
247
192
  origData: d,
248
193
  request: requestOptions
249
194
  });
250
195
  });
251
196
  }
252
197
  if (meta.postfetch) {
253
- meta.postfetch.forEach(function (postfetch) {
198
+ meta.postfetch.forEach(postfetch => {
254
199
  postfetch instanceof Function && postfetch({
255
- data: data,
256
- getState: getState,
257
- dispatch: dispatch,
200
+ data,
201
+ getState,
202
+ dispatch,
258
203
  actions: meta.actions,
259
204
  request: requestOptions
260
205
  });
@@ -262,13 +207,12 @@ function actionFn(url, name, options) {
262
207
  }
263
208
  pubsub.resolve(data);
264
209
  done(data);
265
- // special case where we will try to relaod data if persisted cache is consumed
266
210
  if (d && d.persisted && meta.cache && meta.cache.reloadPersisted) {
267
- fn.force.apply(fn, args)(dispatch, getState);
211
+ fn.force(...args)(dispatch, getState);
268
212
  }
269
- }, function (error) {
213
+ }, error => {
270
214
  dispatch({
271
- error: error,
215
+ error,
272
216
  type: actionFail,
273
217
  loading: false,
274
218
  syncing: false,
@@ -279,141 +223,103 @@ function actionFn(url, name, options) {
279
223
  });
280
224
  });
281
225
  });
282
- result["catch"](_helpers.none);
226
+ result.catch(none);
283
227
  return result;
284
228
  };
285
229
  }
286
-
287
- /*
288
- Pure rest request
289
- */
290
230
  fn.request = function (pathvars, params, options) {
291
231
  return request(pathvars, params, options || {});
292
232
  };
293
-
294
- /**
295
- * Reset store to initial state
296
- */
297
- fn.reset = function (mutation) {
233
+ fn.reset = mutation => {
298
234
  abort();
299
235
  return mutation === "sync" ? {
300
236
  type: actionReset,
301
- mutation: mutation
237
+ mutation
302
238
  } : {
303
239
  type: actionReset
304
240
  };
305
241
  };
306
-
307
- /*
308
- Abort request
309
- */
310
242
  fn.abort = function () {
311
- var error = abort();
243
+ const error = abort();
312
244
  return {
313
245
  type: actionAbort,
314
- error: error
246
+ error
315
247
  };
316
248
  };
317
- fn.force = function () {
318
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
319
- args[_key2] = arguments[_key2];
320
- }
321
- return function (dispatch, getState) {
322
- var state = getState();
323
- var isLoading = (0, _get["default"])(state, meta.prefix, meta.reducerName, "loading");
249
+ fn.force = function (...args) {
250
+ return (dispatch, getState) => {
251
+ const state = getState();
252
+ const isLoading = get(state, meta.prefix, meta.reducerName, "loading");
324
253
  if (isLoading) {
325
254
  dispatch(fn.abort());
326
255
  }
327
- return fn.apply(void 0, args)(dispatch, getState);
256
+ return fn(...args)(dispatch, getState);
328
257
  };
329
258
  };
330
-
331
- /**
332
- * Sync store with server. In server mode works as usual method.
333
- * If data have already synced, data would not fetch after call this method.
334
- * @param {Object} pathvars path vars for url
335
- * @param {Object} params fetch params
336
- * @param {Function} callback) callback execute after end request
337
- */
338
- fn.sync = function () {
339
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
340
- args[_key3] = arguments[_key3];
341
- }
342
- var _extractArgs3 = (0, _helpers.extractArgs)(args),
343
- _extractArgs4 = _slicedToArray(_extractArgs3, 3),
344
- pathvars = _extractArgs4[0],
345
- params = _extractArgs4[1],
346
- callback = _extractArgs4[2];
347
- var isServer = meta.holder ? meta.holder.server : false;
348
- return function (dispatch, getState) {
349
- var state = getState();
350
- var store = (0, _get["default"])(state, meta.prefix, name);
259
+ fn.sync = (...args) => {
260
+ const [pathvars, params, callback] = extractArgs(args);
261
+ const isServer = meta.holder ? meta.holder.server : false;
262
+ return (dispatch, getState) => {
263
+ const state = getState();
264
+ const store = get(state, meta.prefix, name);
351
265
  if (!isServer && store && store.sync) {
352
266
  callback(null, store.data);
353
267
  return;
354
268
  }
355
- var modifyParams = _objectSpread(_objectSpread({}, params), {}, {
269
+ const modifyParams = {
270
+ ...params,
356
271
  syncing: true
357
- });
272
+ };
358
273
  return fn(pathvars, modifyParams, callback)(dispatch, getState);
359
274
  };
360
275
  };
361
- var helpers = meta.helpers || {};
276
+ let helpers = meta.helpers || {};
362
277
  if (meta.crud) {
363
- helpers = _objectSpread(_objectSpread({}, _helpers.CRUD), helpers);
278
+ helpers = {
279
+ ...CRUD,
280
+ ...helpers
281
+ };
364
282
  }
365
- var fnHelperCallback = function fnHelperCallback(memo, func, helpername) {
283
+ const fnHelperCallback = (memo, func, helpername) => {
366
284
  if (memo[helpername]) {
367
- throw new Error("Helper name: \"".concat(helpername, "\" for endpoint \"").concat(name, "\" has been already reserved"));
285
+ throw new Error(`Helper name: "${helpername}" for endpoint "${name}" has been already reserved`);
368
286
  }
369
- var _ref = func instanceof Function ? {
370
- call: func
371
- } : func,
372
- sync = _ref.sync,
373
- call = _ref.call;
374
- memo[helpername] = function () {
375
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
376
- args[_key4] = arguments[_key4];
377
- }
378
- return function (dispatch, getState) {
379
- var index = args.length - 1;
380
- var callbackFn = args[index] instanceof Function ? args[index] : _helpers.none;
381
- var helpersResult = (0, _fastApply["default"])(call, {
382
- getState: getState,
383
- dispatch: dispatch,
384
- actions: meta.actions
385
- }, args);
386
- var result = new Promise(function (resolve, reject) {
387
- var callback = function callback(err, data) {
388
- err ? reject(err) : resolve(data);
389
- callbackFn(err, data);
390
- };
391
- // If helper alias using async functionality
392
- if (helpersResult instanceof Function) {
393
- helpersResult(function (error) {
394
- var newArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
395
- if (error) {
396
- callback(error);
397
- } else {
398
- (0, _fastApply["default"])(sync ? fn.sync : fn, null, newArgs.concat(callback))(dispatch, getState);
399
- }
400
- });
401
- } else {
402
- // if helper alias is synchronous
403
- var _helpersResult = _slicedToArray(helpersResult, 2),
404
- pathvars = _helpersResult[0],
405
- params = _helpersResult[1];
406
- (0, _fastApply["default"])(sync ? fn.sync : fn, null, [pathvars, params, callback])(dispatch, getState);
407
- }
408
- });
409
- result["catch"](_helpers.none);
410
- return result;
411
- };
287
+ const {
288
+ sync,
289
+ call
290
+ } = func instanceof Function ? {
291
+ call: func
292
+ } : func;
293
+ memo[helpername] = (...args) => (dispatch, getState) => {
294
+ const index = args.length - 1;
295
+ const callbackFn = args[index] instanceof Function ? args[index] : none;
296
+ const helpersResult = call.apply({
297
+ getState,
298
+ dispatch,
299
+ actions: meta.actions
300
+ }, args);
301
+ const result = new Promise((resolve, reject) => {
302
+ const callback = (err, data) => {
303
+ err ? reject(err) : resolve(data);
304
+ callbackFn(err, data);
305
+ };
306
+ if (helpersResult instanceof Function) {
307
+ helpersResult((error, newArgs = []) => {
308
+ if (error) {
309
+ callback(error);
310
+ } else {
311
+ (sync ? fn.sync : fn)(...newArgs.concat(callback))(dispatch, getState);
312
+ }
313
+ });
314
+ } else {
315
+ const [pathvars, params] = helpersResult;
316
+ (sync ? fn.sync : fn)(pathvars, params, callback)(dispatch, getState);
317
+ }
318
+ });
319
+ result.catch(none);
320
+ return result;
412
321
  };
413
322
  return memo;
414
323
  };
415
- return Object.keys(helpers).reduce(function (memo, key) {
416
- return fnHelperCallback(memo, helpers[key], key, helpers);
417
- }, fn);
418
- }
419
- module.exports = exports.default;
324
+ return Object.keys(helpers).reduce((memo, key) => fnHelperCallback(memo, helpers[key], key, helpers), fn);
325
+ }