@3plus/redux-api 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/CHANGELOG.md +82 -0
- package/LICENSE.md +7 -0
- package/README.md +132 -0
- package/lib/PubSub.js +44 -0
- package/lib/PubSub.js.map +1 -0
- package/lib/actionFn.js +420 -0
- package/lib/actionFn.js.map +1 -0
- package/lib/adapters/fetch.js +47 -0
- package/lib/adapters/fetch.js.map +1 -0
- package/lib/async.js +40 -0
- package/lib/async.js.map +1 -0
- package/lib/createHolder.js +33 -0
- package/lib/createHolder.js.map +1 -0
- package/lib/fetchResolver.js +21 -0
- package/lib/fetchResolver.js.map +1 -0
- package/lib/helpers.js +65 -0
- package/lib/helpers.js.map +1 -0
- package/lib/index.js +183 -0
- package/lib/index.js.map +1 -0
- package/lib/reducerFn.js +89 -0
- package/lib/reducerFn.js.map +1 -0
- package/lib/transformers.js +27 -0
- package/lib/transformers.js.map +1 -0
- package/lib/urlTransform.js +73 -0
- package/lib/urlTransform.js.map +1 -0
- package/lib/utils/cache.js +94 -0
- package/lib/utils/cache.js.map +1 -0
- package/lib/utils/get.js +27 -0
- package/lib/utils/get.js.map +1 -0
- package/lib/utils/merge.js +41 -0
- package/lib/utils/merge.js.map +1 -0
- package/lib/utils/omit.js +25 -0
- package/lib/utils/omit.js.map +1 -0
- package/package.json +49 -0
package/lib/actionFn.js
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
"use strict";
|
|
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"])();
|
|
50
|
+
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);
|
|
54
|
+
}
|
|
55
|
+
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");
|
|
59
|
+
rootUrl = !(rootUrl instanceof Function) ? rootUrl : rootUrl(urlT, params, getState);
|
|
60
|
+
if (rootUrl) {
|
|
61
|
+
var rootUrlObject = _url["default"].parse(rootUrl);
|
|
62
|
+
var urlObject = _url["default"].parse(urlT);
|
|
63
|
+
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);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return urlT;
|
|
69
|
+
}
|
|
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");
|
|
81
|
+
id += "_" + cacheManager.id(pathvars, params);
|
|
82
|
+
var data = cacheManager.getData(cache && id && cache[id] !== undefined && cache[id]);
|
|
83
|
+
if (data !== undefined) {
|
|
84
|
+
if (cache[id].persisted) {
|
|
85
|
+
Object.defineProperty(data, 'persisted', {
|
|
86
|
+
value: true
|
|
87
|
+
});
|
|
88
|
+
// expire persisted cache immediately after consumption
|
|
89
|
+
// because we will try to reload and persist new data
|
|
90
|
+
cache[id].expire = true;
|
|
91
|
+
}
|
|
92
|
+
return Promise.resolve(data);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
var response = meta.fetch(urlT, opts, options);
|
|
96
|
+
if (cacheManager && dispatch !== _helpers.none && id) {
|
|
97
|
+
response.then(function (data) {
|
|
98
|
+
dispatch({
|
|
99
|
+
type: actionCache,
|
|
100
|
+
id: id,
|
|
101
|
+
data: data,
|
|
102
|
+
expire: cacheManager.expire
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return response;
|
|
107
|
+
}
|
|
108
|
+
function abort() {
|
|
109
|
+
var defer = requestHolder.pop();
|
|
110
|
+
var err = new Error("Application abort request");
|
|
111
|
+
defer && defer.reject(err);
|
|
112
|
+
return err;
|
|
113
|
+
}
|
|
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
|
+
return 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");
|
|
134
|
+
if (responseHandler) {
|
|
135
|
+
if (result && result.then) {
|
|
136
|
+
ret = result.then(function (data) {
|
|
137
|
+
var res = responseHandler(null, data);
|
|
138
|
+
if (res === undefined) {
|
|
139
|
+
return data;
|
|
140
|
+
} else {
|
|
141
|
+
return res;
|
|
142
|
+
}
|
|
143
|
+
}, function (err) {
|
|
144
|
+
return responseHandler(err);
|
|
145
|
+
});
|
|
146
|
+
} else {
|
|
147
|
+
ret = responseHandler(result);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
ret && ret["catch"] && ret["catch"](_helpers.none);
|
|
151
|
+
return ret;
|
|
152
|
+
}
|
|
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;
|
|
170
|
+
params && delete params.syncing;
|
|
171
|
+
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");
|
|
179
|
+
if (isLoading) {
|
|
180
|
+
return Promise.reject("isLoading-" + meta.prefix + "-" + meta.reducerName);
|
|
181
|
+
}
|
|
182
|
+
var requestOptions = {
|
|
183
|
+
pathvars: pathvars,
|
|
184
|
+
params: params
|
|
185
|
+
};
|
|
186
|
+
dispatch({
|
|
187
|
+
type: actionFetch,
|
|
188
|
+
syncing: syncing,
|
|
189
|
+
request: requestOptions
|
|
190
|
+
});
|
|
191
|
+
var fetchResolverOpts = {
|
|
192
|
+
dispatch: dispatch,
|
|
193
|
+
getState: getState,
|
|
194
|
+
request: requestOptions,
|
|
195
|
+
actions: meta.actions,
|
|
196
|
+
prefetch: meta.prefetch
|
|
197
|
+
};
|
|
198
|
+
if (Object.defineProperty) {
|
|
199
|
+
Object.defineProperty(fetchResolverOpts, "requestOptions", {
|
|
200
|
+
get: function get() {
|
|
201
|
+
/* eslint no-console: 0 */
|
|
202
|
+
console.warn("Deprecated option, use `request` option");
|
|
203
|
+
return requestOptions;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
} else {
|
|
207
|
+
fetchResolverOpts.requestOptions = requestOptions;
|
|
208
|
+
}
|
|
209
|
+
var result = new Promise(function (done, fail) {
|
|
210
|
+
(0, _fetchResolver["default"])(0, fetchResolverOpts, function (err) {
|
|
211
|
+
if (err) {
|
|
212
|
+
dispatch({
|
|
213
|
+
error: err,
|
|
214
|
+
type: actionFail,
|
|
215
|
+
loading: false,
|
|
216
|
+
syncing: false,
|
|
217
|
+
request: requestOptions
|
|
218
|
+
});
|
|
219
|
+
pubsub.reject(err);
|
|
220
|
+
return fail(err);
|
|
221
|
+
}
|
|
222
|
+
new Promise(function (resolve, reject) {
|
|
223
|
+
requestHolder.set({
|
|
224
|
+
resolve: resolve,
|
|
225
|
+
reject: reject,
|
|
226
|
+
promise: request(pathvars, params, fetchResolverOpts.request, getState, dispatch).then(resolve, reject)
|
|
227
|
+
});
|
|
228
|
+
}).then(function (d) {
|
|
229
|
+
requestHolder.pop();
|
|
230
|
+
var prevData = (0, _get["default"])(state, meta.prefix, meta.reducerName, "data");
|
|
231
|
+
var data = meta.transformer(d, prevData, {
|
|
232
|
+
type: actionSuccess,
|
|
233
|
+
request: requestOptions
|
|
234
|
+
}, getState);
|
|
235
|
+
dispatch({
|
|
236
|
+
data: data,
|
|
237
|
+
origData: d,
|
|
238
|
+
type: actionSuccess,
|
|
239
|
+
syncing: false,
|
|
240
|
+
request: requestOptions
|
|
241
|
+
});
|
|
242
|
+
if (meta.broadcast) {
|
|
243
|
+
meta.broadcast.forEach(function (type) {
|
|
244
|
+
dispatch({
|
|
245
|
+
type: type,
|
|
246
|
+
data: data,
|
|
247
|
+
origData: d,
|
|
248
|
+
request: requestOptions
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
if (meta.postfetch) {
|
|
253
|
+
meta.postfetch.forEach(function (postfetch) {
|
|
254
|
+
postfetch instanceof Function && postfetch({
|
|
255
|
+
data: data,
|
|
256
|
+
getState: getState,
|
|
257
|
+
dispatch: dispatch,
|
|
258
|
+
actions: meta.actions,
|
|
259
|
+
request: requestOptions
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
pubsub.resolve(data);
|
|
264
|
+
done(data);
|
|
265
|
+
// special case where we will try to relaod data if persisted cache is consumed
|
|
266
|
+
if (d && d.persisted && meta.cache && meta.cache.reloadPersisted) {
|
|
267
|
+
fn.force.apply(fn, args)(dispatch, getState);
|
|
268
|
+
}
|
|
269
|
+
}, function (error) {
|
|
270
|
+
dispatch({
|
|
271
|
+
error: error,
|
|
272
|
+
type: actionFail,
|
|
273
|
+
loading: false,
|
|
274
|
+
syncing: false,
|
|
275
|
+
request: requestOptions
|
|
276
|
+
});
|
|
277
|
+
pubsub.reject(error);
|
|
278
|
+
fail(error);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
result["catch"](_helpers.none);
|
|
283
|
+
return result;
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/*
|
|
288
|
+
Pure rest request
|
|
289
|
+
*/
|
|
290
|
+
fn.request = function (pathvars, params, options) {
|
|
291
|
+
return request(pathvars, params, options || {});
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Reset store to initial state
|
|
296
|
+
*/
|
|
297
|
+
fn.reset = function (mutation) {
|
|
298
|
+
abort();
|
|
299
|
+
return mutation === "sync" ? {
|
|
300
|
+
type: actionReset,
|
|
301
|
+
mutation: mutation
|
|
302
|
+
} : {
|
|
303
|
+
type: actionReset
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
/*
|
|
308
|
+
Abort request
|
|
309
|
+
*/
|
|
310
|
+
fn.abort = function () {
|
|
311
|
+
var error = abort();
|
|
312
|
+
return {
|
|
313
|
+
type: actionAbort,
|
|
314
|
+
error: error
|
|
315
|
+
};
|
|
316
|
+
};
|
|
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");
|
|
324
|
+
if (isLoading) {
|
|
325
|
+
dispatch(fn.abort());
|
|
326
|
+
}
|
|
327
|
+
return fn.apply(void 0, args)(dispatch, getState);
|
|
328
|
+
};
|
|
329
|
+
};
|
|
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);
|
|
351
|
+
if (!isServer && store && store.sync) {
|
|
352
|
+
callback(null, store.data);
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
var modifyParams = _objectSpread(_objectSpread({}, params), {}, {
|
|
356
|
+
syncing: true
|
|
357
|
+
});
|
|
358
|
+
return fn(pathvars, modifyParams, callback)(dispatch, getState);
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
var helpers = meta.helpers || {};
|
|
362
|
+
if (meta.crud) {
|
|
363
|
+
helpers = _objectSpread(_objectSpread({}, _helpers.CRUD), helpers);
|
|
364
|
+
}
|
|
365
|
+
var fnHelperCallback = function fnHelperCallback(memo, func, helpername) {
|
|
366
|
+
if (memo[helpername]) {
|
|
367
|
+
throw new Error("Helper name: \"".concat(helpername, "\" for endpoint \"").concat(name, "\" has been already reserved"));
|
|
368
|
+
}
|
|
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
|
+
};
|
|
412
|
+
};
|
|
413
|
+
return memo;
|
|
414
|
+
};
|
|
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;
|
|
420
|
+
//# sourceMappingURL=actionFn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionFn.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","Object","defineProperty","exports","value","actionFn","_fastApply","_interopRequireDefault","require","_url","_urlTransform","_merge","_get","_fetchResolver","_PubSub","_createHolder","_helpers","_cache","e","__esModule","ownKeys","r","t","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","i","_toPrimitive","toPrimitive","call","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","name","Array","from","test","n","l","u","f","next","done","isArray","url","options","ACTIONS","undefined","meta","actionFetch","actionSuccess","actionFail","actionReset","actionCache","actionAbort","pubsub","PubSub","requestHolder","createHolder","getOptions","urlT","params","getState","globalOptions","holder","Function","baseOptions","merge","getUrl","pathvars","resultUrlT","urlTransform","urlOptions","rootUrl","get","rootUrlObject","libUrl","parse","urlObject","host","urlPath","path","replace","concat","protocol","fetch","none","dispatch","opts","id","reducerName","cacheManager","getCacheManager","expire","cache","state","prefix","data","getData","persisted","Promise","resolve","response","then","type","abort","defer","pop","err","Error","reject","request","result","validation","ret","responseHandler","res","fn","_len","args","_key","_extractArgs","extractArgs","_extractArgs2","callback","syncing","middlewareParser","defaultMiddlewareArgsParser","_middlewareParser","isLoading","requestOptions","fetchResolverOpts","actions","prefetch","console","warn","fail","fetchResolver","error","loading","set","promise","d","prevData","transformer","origData","broadcast","postfetch","reloadPersisted","force","reset","mutation","_len2","_key2","sync","_len3","_key3","_extractArgs3","_extractArgs4","isServer","server","store","modifyParams","helpers","crud","CRUD","fnHelperCallback","memo","func","helpername","_ref","_len4","_key4","index","callbackFn","helpersResult","fastApply","newArgs","_helpersResult","reduce","key","module","default"],"sources":["../src/actionFn.js"],"sourcesContent":["\"use strict\";\n\nimport fastApply from \"fast-apply\";\nimport libUrl from \"url\";\nimport urlTransform from \"./urlTransform\";\nimport merge from \"./utils/merge\";\nimport get from \"./utils/get\";\nimport fetchResolver from \"./fetchResolver\";\nimport PubSub from \"./PubSub\";\nimport createHolder from \"./createHolder\";\nimport {\n none,\n extractArgs,\n defaultMiddlewareArgsParser,\n CRUD\n} from \"./helpers\";\nimport { getCacheManager } from \"./utils/cache\";\n\n/**\n * Constructor for create action\n * @param {String} url endpoint's url\n * @param {String} name action name\n * @param {Object} options action configuration\n * @param {Object} ACTIONS map of actions\n * @param {[type]} fetchAdapter adapter for fetching data\n * @return {Function+Object} action function object\n */\nexport default function actionFn(url, name, options, ACTIONS = {}, meta = {}) {\n const {\n actionFetch,\n actionSuccess,\n actionFail,\n actionReset,\n actionCache,\n actionAbort\n } = ACTIONS;\n const pubsub = new PubSub();\n const requestHolder = createHolder();\n\n function getOptions(urlT, params, getState) {\n const globalOptions = !meta.holder\n ? {}\n : meta.holder.options instanceof Function\n ? meta.holder.options(urlT, params, getState)\n : meta.holder.options;\n const baseOptions = !(options instanceof Function)\n ? options\n : options(urlT, params, getState);\n return merge({}, globalOptions, baseOptions, params);\n }\n\n function getUrl(pathvars, params, getState) {\n const resultUrlT = urlTransform(url, pathvars, meta.urlOptions);\n let urlT = resultUrlT;\n let rootUrl = get(meta, \"holder\", \"rootUrl\");\n rootUrl = !(rootUrl instanceof Function)\n ? rootUrl\n : rootUrl(urlT, params, getState);\n if (rootUrl) {\n const rootUrlObject = libUrl.parse(rootUrl);\n const urlObject = libUrl.parse(urlT);\n if (!urlObject.host) {\n const urlPath =\n (rootUrlObject.path ? rootUrlObject.path.replace(/\\/$/, \"\") : \"\") +\n \"/\" +\n (urlObject.path ? urlObject.path.replace(/^\\//, \"\") : \"\");\n urlT = `${rootUrlObject.protocol}//${rootUrlObject.host}${urlPath}`;\n }\n }\n return urlT;\n }\n\n function fetch(\n pathvars,\n params,\n options = {},\n getState = none,\n dispatch = none\n ) {\n const urlT = getUrl(pathvars, params, getState);\n const opts = getOptions(urlT, params, getState);\n let id = meta.reducerName || \"\";\n const cacheManager = getCacheManager(options.expire, meta.cache);\n\n if (cacheManager && getState !== none) {\n const state = getState();\n const cache = get(state, meta.prefix, meta.reducerName, \"cache\");\n id += \"_\" + cacheManager.id(pathvars, params);\n const data = cacheManager.getData(\n cache && id && cache[id] !== undefined && cache[id]\n );\n if (data !== undefined) {\n if(cache[id].persisted) {\n Object.defineProperty(data, 'persisted', { value: true });\n // expire persisted cache immediately after consumption\n // because we will try to reload and persist new data\n cache[id].expire = true;\n }\n return Promise.resolve(data);\n }\n }\n const response = meta.fetch(urlT, opts, options);\n if (cacheManager && dispatch !== none && id) {\n response.then(data => {\n dispatch({ type: actionCache, id, data, expire: cacheManager.expire });\n });\n }\n return response;\n }\n\n function abort() {\n const defer = requestHolder.pop();\n const err = new Error(\"Application abort request\");\n defer && defer.reject(err);\n return err;\n }\n\n /**\n * Fetch data from server\n * @param {Object} pathvars path vars for url\n * @param {Object} params fetch params\n * @param {Function} getState helper meta function\n */\n function request(\n pathvars,\n params,\n options,\n getState = none,\n dispatch = none\n ) {\n const response = fetch(pathvars, params, options, getState, dispatch);\n const result = !meta.validation\n ? response\n : response.then(\n data =>\n new Promise((resolve, reject) =>\n meta.validation(data, err => (err ? reject(err) : resolve(data)))\n )\n );\n let ret = result;\n const responseHandler = get(meta, \"holder\", \"responseHandler\");\n if (responseHandler) {\n if (result && result.then) {\n ret = result.then(\n data => {\n const res = responseHandler(null, data);\n if (res === undefined) {\n return data;\n } else {\n return res;\n }\n },\n err => responseHandler(err)\n );\n } else {\n ret = responseHandler(result);\n }\n }\n ret && ret.catch && ret.catch(none);\n return ret;\n }\n\n /**\n * Fetch data from server\n * @param {Object} pathvars path vars for url\n * @param {Object} params fetch params\n * @param {Function} callback) callback execute after end request\n */\n function fn(...args) {\n const [pathvars, params, callback] = extractArgs(args);\n const syncing = params ? !!params.syncing : false;\n params && delete params.syncing;\n pubsub.push(callback);\n return (...middlewareArgs) => {\n const middlewareParser =\n get(meta, \"holder\", \"middlewareParser\") || defaultMiddlewareArgsParser;\n const { dispatch, getState } = middlewareParser(...middlewareArgs);\n const state = getState();\n const isLoading = get(state, meta.prefix, meta.reducerName, \"loading\");\n if (isLoading) {\n return Promise.reject(\"isLoading-\" + meta.prefix + \"-\" + meta.reducerName);\n }\n const requestOptions = { pathvars, params };\n dispatch({ type: actionFetch, syncing, request: requestOptions });\n const fetchResolverOpts = {\n dispatch,\n getState,\n request: requestOptions,\n actions: meta.actions,\n prefetch: meta.prefetch\n };\n if (Object.defineProperty) {\n Object.defineProperty(fetchResolverOpts, \"requestOptions\", {\n get() {\n /* eslint no-console: 0 */\n console.warn(\"Deprecated option, use `request` option\");\n return requestOptions;\n }\n });\n } else {\n fetchResolverOpts.requestOptions = requestOptions;\n }\n\n const result = new Promise((done, fail) => {\n fetchResolver(0, fetchResolverOpts, err => {\n if (err) {\n dispatch({\n error: err,\n type: actionFail,\n loading: false,\n syncing: false,\n request: requestOptions\n });\n pubsub.reject(err);\n return fail(err);\n }\n new Promise((resolve, reject) => {\n requestHolder.set({\n resolve,\n reject,\n promise: request(pathvars, params, fetchResolverOpts.request, getState, dispatch).then(\n resolve,\n reject\n )\n });\n }).then(\n d => {\n requestHolder.pop();\n const prevData = get(state, meta.prefix, meta.reducerName, \"data\");\n const data = meta.transformer(d, prevData, {\n type: actionSuccess,\n request: requestOptions\n }, getState);\n dispatch({\n data,\n origData: d,\n type: actionSuccess,\n syncing: false,\n request: requestOptions\n });\n if (meta.broadcast) {\n meta.broadcast.forEach(type => {\n dispatch({\n type,\n data,\n origData: d,\n request: requestOptions\n });\n });\n }\n if (meta.postfetch) {\n meta.postfetch.forEach(postfetch => {\n postfetch instanceof Function &&\n postfetch({\n data,\n getState,\n dispatch,\n actions: meta.actions,\n request: requestOptions\n });\n });\n }\n pubsub.resolve(data);\n done(data);\n // special case where we will try to relaod data if persisted cache is consumed\n if(d && d.persisted && meta.cache && meta.cache.reloadPersisted) {\n fn.force(...args)(dispatch, getState);\n }\n },\n error => {\n dispatch({\n error,\n type: actionFail,\n loading: false,\n syncing: false,\n request: requestOptions\n });\n pubsub.reject(error);\n fail(error);\n }\n );\n });\n });\n result.catch(none);\n return result;\n };\n }\n\n /*\n Pure rest request\n */\n fn.request = function(pathvars, params, options) {\n return request(pathvars, params, options || {});\n };\n\n /**\n * Reset store to initial state\n */\n fn.reset = mutation => {\n abort();\n return mutation === \"sync\"\n ? { type: actionReset, mutation }\n : { type: actionReset };\n };\n\n /*\n Abort request\n */\n fn.abort = function() {\n const error = abort();\n return { type: actionAbort, error };\n };\n\n fn.force = function(...args) {\n return (dispatch, getState) => {\n const state = getState();\n const isLoading = get(state, meta.prefix, meta.reducerName, \"loading\");\n if (isLoading) {\n dispatch(fn.abort());\n }\n return fn(...args)(dispatch, getState);\n };\n };\n\n /**\n * Sync store with server. In server mode works as usual method.\n * If data have already synced, data would not fetch after call this method.\n * @param {Object} pathvars path vars for url\n * @param {Object} params fetch params\n * @param {Function} callback) callback execute after end request\n */\n fn.sync = (...args) => {\n const [pathvars, params, callback] = extractArgs(args);\n const isServer = meta.holder ? meta.holder.server : false;\n return (dispatch, getState) => {\n const state = getState();\n const store = get(state, meta.prefix, name);\n if (!isServer && store && store.sync) {\n callback(null, store.data);\n return;\n }\n const modifyParams = { ...params, syncing: true };\n return fn(pathvars, modifyParams, callback)(dispatch, getState);\n };\n };\n\n let helpers = meta.helpers || {};\n if (meta.crud) {\n helpers = { ...CRUD, ...helpers };\n }\n const fnHelperCallback = (memo, func, helpername) => {\n if (memo[helpername]) {\n throw new Error(\n `Helper name: \"${helpername}\" for endpoint \"${name}\" has been already reserved`\n );\n }\n const { sync, call } = func instanceof Function ? { call: func } : func;\n memo[helpername] = (...args) => (dispatch, getState) => {\n const index = args.length - 1;\n const callbackFn = args[index] instanceof Function ? args[index] : none;\n const helpersResult = fastApply(\n call,\n { getState, dispatch, actions: meta.actions },\n args\n );\n const result = new Promise((resolve, reject) => {\n const callback = (err, data) => {\n err ? reject(err) : resolve(data);\n callbackFn(err, data);\n };\n // If helper alias using async functionality\n if (helpersResult instanceof Function) {\n helpersResult((error, newArgs = []) => {\n if (error) {\n callback(error);\n } else {\n fastApply(\n sync ? fn.sync : fn,\n null,\n newArgs.concat(callback)\n )(dispatch, getState);\n }\n });\n } else {\n // if helper alias is synchronous\n const [pathvars, params] = helpersResult;\n fastApply(sync ? fn.sync : fn, null, [pathvars, params, callback])(\n dispatch,\n getState\n );\n }\n });\n result.catch(none);\n return result;\n };\n return memo;\n };\n\n return Object.keys(helpers).reduce(\n (memo, key) => fnHelperCallback(memo, helpers[key], key, helpers),\n fn\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = _default;
|
|
7
|
+
function processData(data) {
|
|
8
|
+
try {
|
|
9
|
+
return JSON.parse(data);
|
|
10
|
+
} catch (err) {
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function toJSON(resp) {
|
|
15
|
+
if (resp.text) {
|
|
16
|
+
return resp.text().then(processData);
|
|
17
|
+
} else if (resp instanceof Promise) {
|
|
18
|
+
return resp.then(processData);
|
|
19
|
+
} else {
|
|
20
|
+
return Promise.resolve(resp).then(processData);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function _default(fetch) {
|
|
24
|
+
return function (url, opts) {
|
|
25
|
+
return fetch(url, opts).then(function (resp) {
|
|
26
|
+
// Normalize IE9's response to HTTP 204 when Win error 1223.
|
|
27
|
+
var status = resp.status === 1223 ? 204 : resp.status;
|
|
28
|
+
var statusText = resp.status === 1223 ? "No Content" : resp.statusText;
|
|
29
|
+
if (status >= 400) {
|
|
30
|
+
return Promise.reject({
|
|
31
|
+
status: status,
|
|
32
|
+
statusText: statusText
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
return toJSON(resp).then(function (data) {
|
|
36
|
+
if (status >= 200 && status < 300) {
|
|
37
|
+
return data;
|
|
38
|
+
} else {
|
|
39
|
+
return Promise.reject(data);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
module.exports = exports.default;
|
|
47
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","names":["Object","defineProperty","exports","value","_default","processData","data","JSON","parse","err","toJSON","resp","text","then","Promise","resolve","fetch","url","opts","status","statusText","reject","module","default"],"sources":["../../src/adapters/fetch.js"],"sourcesContent":["\"use strict\";\n\nfunction processData(data) {\n try {\n return JSON.parse(data);\n } catch (err) {\n return data;\n }\n}\n\nfunction toJSON(resp) {\n if (resp.text) {\n return resp.text().then(processData);\n } else if (resp instanceof Promise) {\n return resp.then(processData);\n } else {\n return Promise.resolve(resp).then(processData);\n }\n}\n\nexport default function(fetch) {\n return (url, opts) =>\n fetch(url, opts).then(resp => {\n // Normalize IE9's response to HTTP 204 when Win error 1223.\n const status = resp.status === 1223 ? 204 : resp.status;\n const statusText = resp.status === 1223 ? \"No Content\" : resp.statusText;\n\n if (status >= 400) {\n return Promise.reject({ status, statusText });\n } else {\n return toJSON(resp).then(data => {\n if (status >= 200 && status < 300) {\n return data;\n } else {\n return Promise.reject(data);\n }\n });\n }\n });\n}\n"],"mappings":"AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,cAAAE,QAAA;AAEb,SAASC,WAAWA,CAACC,IAAI,EAAE;EACzB,IAAI;IACF,OAAOC,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;EACzB,CAAC,CAAC,OAAOG,GAAG,EAAE;IACZ,OAAOH,IAAI;EACb;AACF;AAEA,SAASI,MAAMA,CAACC,IAAI,EAAE;EACpB,IAAIA,IAAI,CAACC,IAAI,EAAE;IACb,OAAOD,IAAI,CAACC,IAAI,CAAC,CAAC,CAACC,IAAI,CAACR,WAAW,CAAC;EACtC,CAAC,MAAM,IAAIM,IAAI,YAAYG,OAAO,EAAE;IAClC,OAAOH,IAAI,CAACE,IAAI,CAACR,WAAW,CAAC;EAC/B,CAAC,MAAM;IACL,OAAOS,OAAO,CAACC,OAAO,CAACJ,IAAI,CAAC,CAACE,IAAI,CAACR,WAAW,CAAC;EAChD;AACF;AAEe,SAAAD,SAASY,KAAK,EAAE;EAC7B,OAAO,UAACC,GAAG,EAAEC,IAAI;IAAA,OACfF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC,CAACL,IAAI,CAAC,UAAAF,IAAI,EAAI;MAC5B;MACA,IAAMQ,MAAM,GAAGR,IAAI,CAACQ,MAAM,KAAK,IAAI,GAAG,GAAG,GAAGR,IAAI,CAACQ,MAAM;MACvD,IAAMC,UAAU,GAAGT,IAAI,CAACQ,MAAM,KAAK,IAAI,GAAG,YAAY,GAAGR,IAAI,CAACS,UAAU;MAExE,IAAID,MAAM,IAAI,GAAG,EAAE;QACjB,OAAOL,OAAO,CAACO,MAAM,CAAC;UAAEF,MAAM,EAANA,MAAM;UAAEC,UAAU,EAAVA;QAAW,CAAC,CAAC;MAC/C,CAAC,MAAM;QACL,OAAOV,MAAM,CAACC,IAAI,CAAC,CAACE,IAAI,CAAC,UAAAP,IAAI,EAAI;UAC/B,IAAIa,MAAM,IAAI,GAAG,IAAIA,MAAM,GAAG,GAAG,EAAE;YACjC,OAAOb,IAAI;UACb,CAAC,MAAM;YACL,OAAOQ,OAAO,CAACO,MAAM,CAACf,IAAI,CAAC;UAC7B;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EAAA;AACN;AAACgB,MAAA,CAAApB,OAAA,GAAAA,OAAA,CAAAqB,OAAA","ignoreList":[]}
|
package/lib/async.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = async;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param {[type]} dispatch [description]
|
|
10
|
+
* @param {...[type]} args [description]
|
|
11
|
+
* @return {[type]} [description]
|
|
12
|
+
* @example
|
|
13
|
+
* async(dispatch,
|
|
14
|
+
* cb=> actions.test(1, cb),
|
|
15
|
+
* actions.test2
|
|
16
|
+
* ).then(()=> async(dispatch, actions.test3))
|
|
17
|
+
*/
|
|
18
|
+
function async(dispatch) {
|
|
19
|
+
var currentFunction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
20
|
+
for (var _len = arguments.length, restFunctions = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
21
|
+
restFunctions[_key - 2] = arguments[_key];
|
|
22
|
+
}
|
|
23
|
+
return new Promise(function (resolve, reject) {
|
|
24
|
+
if (!currentFunction) {
|
|
25
|
+
reject("no chain function");
|
|
26
|
+
} else {
|
|
27
|
+
dispatch(currentFunction(function (err, data) {
|
|
28
|
+
err ? reject(err) : resolve(data);
|
|
29
|
+
}) || {});
|
|
30
|
+
}
|
|
31
|
+
}).then(function (data) {
|
|
32
|
+
if (restFunctions.length) {
|
|
33
|
+
return async.apply(void 0, [dispatch].concat(restFunctions));
|
|
34
|
+
} else {
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
module.exports = exports.default;
|
|
40
|
+
//# sourceMappingURL=async.js.map
|
package/lib/async.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.js","names":["async","dispatch","currentFunction","arguments","length","undefined","_len","restFunctions","Array","_key","Promise","resolve","reject","err","data","then","apply","concat","module","exports","default"],"sources":["../src/async.js"],"sourcesContent":["/**\n *\n * @param {[type]} dispatch [description]\n * @param {...[type]} args [description]\n * @return {[type]} [description]\n * @example\n * async(dispatch,\n * cb=> actions.test(1, cb),\n * actions.test2\n * ).then(()=> async(dispatch, actions.test3))\n */\nexport default function async(\n dispatch,\n currentFunction = null,\n ...restFunctions\n) {\n return new Promise((resolve, reject) => {\n if (!currentFunction) {\n reject(\"no chain function\");\n } else {\n dispatch(\n currentFunction((err, data) => {\n err ? reject(err) : resolve(data);\n }) || {}\n );\n }\n }).then(data => {\n if (restFunctions.length) {\n return async(dispatch, ...restFunctions);\n } else {\n return data;\n }\n });\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,KAAKA,CAC3BC,QAAQ,EAGR;EAAA,IAFAC,eAAe,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAAA,SAAAG,IAAA,GAAAH,SAAA,CAAAC,MAAA,EACnBG,aAAa,OAAAC,KAAA,CAAAF,IAAA,OAAAA,IAAA,WAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;IAAbF,aAAa,CAAAE,IAAA,QAAAN,SAAA,CAAAM,IAAA;EAAA;EAEhB,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACtC,IAAI,CAACV,eAAe,EAAE;MACpBU,MAAM,CAAC,mBAAmB,CAAC;IAC7B,CAAC,MAAM;MACLX,QAAQ,CACNC,eAAe,CAAC,UAACW,GAAG,EAAEC,IAAI,EAAK;QAC7BD,GAAG,GAAGD,MAAM,CAACC,GAAG,CAAC,GAAGF,OAAO,CAACG,IAAI,CAAC;MACnC,CAAC,CAAC,IAAI,CAAC,CACT,CAAC;IACH;EACF,CAAC,CAAC,CAACC,IAAI,CAAC,UAAAD,IAAI,EAAI;IACd,IAAIP,aAAa,CAACH,MAAM,EAAE;MACxB,OAAOJ,KAAK,CAAAgB,KAAA,UAACf,QAAQ,EAAAgB,MAAA,CAAKV,aAAa,EAAC;IAC1C,CAAC,MAAM;MACL,OAAOO,IAAI;IACb;EACF,CAAC,CAAC;AACJ;AAACI,MAAA,CAAAC,OAAA,GAAAA,OAAA,CAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = _default;
|
|
7
|
+
function _default() {
|
|
8
|
+
var data;
|
|
9
|
+
var hasData = false;
|
|
10
|
+
return {
|
|
11
|
+
set: function set(val) {
|
|
12
|
+
if (!hasData) {
|
|
13
|
+
data = val;
|
|
14
|
+
hasData = true;
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
},
|
|
19
|
+
empty: function empty() {
|
|
20
|
+
return !hasData;
|
|
21
|
+
},
|
|
22
|
+
pop: function pop() {
|
|
23
|
+
if (hasData) {
|
|
24
|
+
hasData = false;
|
|
25
|
+
var result = data;
|
|
26
|
+
data = null;
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
module.exports = exports.default;
|
|
33
|
+
//# sourceMappingURL=createHolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHolder.js","names":["Object","defineProperty","exports","value","_default","data","hasData","set","val","empty","pop","result","module","default"],"sources":["../src/createHolder.js"],"sourcesContent":["\"use strict\";\n\nexport default function() {\n let data;\n let hasData = false;\n return {\n set(val) {\n if (!hasData) {\n data = val;\n hasData = true;\n return true;\n }\n return false;\n },\n empty() {\n return !hasData;\n },\n pop() {\n if (hasData) {\n hasData = false;\n const result = data;\n data = null;\n return result;\n }\n }\n };\n}\n"],"mappings":"AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,cAAAE,QAAA;AAEE,SAAAA,SAAA,EAAW;EACxB,IAAIC,IAAI;EACR,IAAIC,OAAO,GAAG,KAAK;EACnB,OAAO;IACLC,GAAG,WAAAA,IAACC,GAAG,EAAE;MACP,IAAI,CAACF,OAAO,EAAE;QACZD,IAAI,GAAGG,GAAG;QACVF,OAAO,GAAG,IAAI;QACd,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd,CAAC;IACDG,KAAK,WAAAA,MAAA,EAAG;MACN,OAAO,CAACH,OAAO;IACjB,CAAC;IACDI,GAAG,WAAAA,IAAA,EAAG;MACJ,IAAIJ,OAAO,EAAE;QACXA,OAAO,GAAG,KAAK;QACf,IAAMK,MAAM,GAAGN,IAAI;QACnBA,IAAI,GAAG,IAAI;QACX,OAAOM,MAAM;MACf;IACF;EACF,CAAC;AACH;AAACC,MAAA,CAAAV,OAAA,GAAAA,OAAA,CAAAW,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = fetchResolver;
|
|
7
|
+
function none() {}
|
|
8
|
+
function fetchResolver() {
|
|
9
|
+
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
10
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
11
|
+
var cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : none;
|
|
12
|
+
if (!opts.prefetch || index >= opts.prefetch.length) {
|
|
13
|
+
cb();
|
|
14
|
+
} else {
|
|
15
|
+
opts.prefetch[index](opts, function (err) {
|
|
16
|
+
return err ? cb(err) : fetchResolver(index + 1, opts, cb);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
module.exports = exports.default;
|
|
21
|
+
//# sourceMappingURL=fetchResolver.js.map
|