@cuipengyu5/bling-renderer-core 0.0.1

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.
Files changed (93) hide show
  1. package/es/adapter/index.d.ts +24 -0
  2. package/es/adapter/index.js +95 -0
  3. package/es/components/Div.d.ts +2 -0
  4. package/es/components/Div.js +19 -0
  5. package/es/components/VisualDom/index.css +19 -0
  6. package/es/components/VisualDom/index.d.ts +3 -0
  7. package/es/components/VisualDom/index.js +44 -0
  8. package/es/context/index.d.ts +1 -0
  9. package/es/context/index.js +11 -0
  10. package/es/hoc/index.d.ts +7 -0
  11. package/es/hoc/index.js +90 -0
  12. package/es/hoc/leaf.d.ts +32 -0
  13. package/es/hoc/leaf.js +521 -0
  14. package/es/index.d.ts +7 -0
  15. package/es/index.js +9 -0
  16. package/es/renderer/addon.d.ts +2 -0
  17. package/es/renderer/addon.js +107 -0
  18. package/es/renderer/base.d.ts +13 -0
  19. package/es/renderer/base.js +1120 -0
  20. package/es/renderer/block.d.ts +2 -0
  21. package/es/renderer/block.js +43 -0
  22. package/es/renderer/component.d.ts +2 -0
  23. package/es/renderer/component.js +59 -0
  24. package/es/renderer/index.d.ts +8 -0
  25. package/es/renderer/index.js +8 -0
  26. package/es/renderer/page.d.ts +2 -0
  27. package/es/renderer/page.js +91 -0
  28. package/es/renderer/renderer.d.ts +2 -0
  29. package/es/renderer/renderer.js +230 -0
  30. package/es/renderer/temp.d.ts +2 -0
  31. package/es/renderer/temp.js +139 -0
  32. package/es/style.js +1 -0
  33. package/es/types/index.d.ts +275 -0
  34. package/es/types/index.js +1 -0
  35. package/es/utils/common.d.ts +119 -0
  36. package/es/utils/common.js +378 -0
  37. package/es/utils/data-helper.d.ts +74 -0
  38. package/es/utils/data-helper.js +300 -0
  39. package/es/utils/index.d.ts +3 -0
  40. package/es/utils/index.js +3 -0
  41. package/es/utils/is-use-loop.d.ts +2 -0
  42. package/es/utils/is-use-loop.js +16 -0
  43. package/es/utils/logger.d.ts +3 -0
  44. package/es/utils/logger.js +5 -0
  45. package/es/utils/request.d.ts +54 -0
  46. package/es/utils/request.js +209 -0
  47. package/lib/adapter/index.d.ts +24 -0
  48. package/lib/adapter/index.js +99 -0
  49. package/lib/components/Div.d.ts +2 -0
  50. package/lib/components/Div.js +24 -0
  51. package/lib/components/VisualDom/index.css +19 -0
  52. package/lib/components/VisualDom/index.d.ts +3 -0
  53. package/lib/components/VisualDom/index.js +49 -0
  54. package/lib/context/index.d.ts +1 -0
  55. package/lib/context/index.js +16 -0
  56. package/lib/hoc/index.d.ts +7 -0
  57. package/lib/hoc/index.js +95 -0
  58. package/lib/hoc/leaf.d.ts +32 -0
  59. package/lib/hoc/leaf.js +526 -0
  60. package/lib/index.d.ts +7 -0
  61. package/lib/index.js +34 -0
  62. package/lib/renderer/addon.d.ts +2 -0
  63. package/lib/renderer/addon.js +112 -0
  64. package/lib/renderer/base.d.ts +13 -0
  65. package/lib/renderer/base.js +1126 -0
  66. package/lib/renderer/block.d.ts +2 -0
  67. package/lib/renderer/block.js +48 -0
  68. package/lib/renderer/component.d.ts +2 -0
  69. package/lib/renderer/component.js +64 -0
  70. package/lib/renderer/index.d.ts +8 -0
  71. package/lib/renderer/index.js +18 -0
  72. package/lib/renderer/page.d.ts +2 -0
  73. package/lib/renderer/page.js +96 -0
  74. package/lib/renderer/renderer.d.ts +2 -0
  75. package/lib/renderer/renderer.js +235 -0
  76. package/lib/renderer/temp.d.ts +2 -0
  77. package/lib/renderer/temp.js +144 -0
  78. package/lib/style.js +1 -0
  79. package/lib/types/index.d.ts +275 -0
  80. package/lib/types/index.js +3 -0
  81. package/lib/utils/common.d.ts +119 -0
  82. package/lib/utils/common.js +409 -0
  83. package/lib/utils/data-helper.d.ts +74 -0
  84. package/lib/utils/data-helper.js +306 -0
  85. package/lib/utils/index.d.ts +3 -0
  86. package/lib/utils/index.js +21 -0
  87. package/lib/utils/is-use-loop.d.ts +2 -0
  88. package/lib/utils/is-use-loop.js +19 -0
  89. package/lib/utils/logger.d.ts +3 -0
  90. package/lib/utils/logger.js +9 -0
  91. package/lib/utils/request.d.ts +54 -0
  92. package/lib/utils/request.js +217 -0
  93. package/package.json +64 -0
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.DataHelper = void 0;
6
+ exports.doRequest = doRequest;
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _lowcodeUtils = require("@alilc/lowcode-utils");
10
+ var _common = require("./common");
11
+ var _request = require("./request");
12
+ var _logger = _interopRequireDefault(require("./logger"));
13
+ var _excluded = ["uri", "url", "method", "headers", "params"],
14
+ _excluded2 = ["headers"];
15
+ /* eslint-disable no-console */
16
+ /* eslint-disable max-len */
17
+ /* eslint-disable object-curly-newline */
18
+ var DS_STATUS = {
19
+ INIT: 'init',
20
+ LOADING: 'loading',
21
+ LOADED: 'loaded',
22
+ ERROR: 'error'
23
+ };
24
+ /**
25
+ * do request for standard DataSourceType
26
+ * @param {DataSourceType} type type of DataSourceItem
27
+ * @param {any} options
28
+ */
29
+ function doRequest(type, options) {
30
+ // eslint-disable-next-line prefer-const
31
+ var uri = options.uri,
32
+ url = options.url,
33
+ _options$method = options.method,
34
+ method = _options$method === void 0 ? 'GET' : _options$method,
35
+ headers = options.headers,
36
+ params = options.params,
37
+ otherProps = (0, _objectWithoutPropertiesLoose2["default"])(options, _excluded);
38
+ otherProps = otherProps || {};
39
+ if (type === 'jsonp') {
40
+ return (0, _request.jsonp)(uri, params, otherProps);
41
+ }
42
+ if (type === 'fetch') {
43
+ switch (method.toUpperCase()) {
44
+ case 'GET':
45
+ return (0, _request.get)(uri, params, headers, otherProps);
46
+ case 'POST':
47
+ return (0, _request.post)(uri, params, headers, otherProps);
48
+ default:
49
+ return (0, _request.request)(uri, method, params, headers, otherProps);
50
+ }
51
+ }
52
+ _logger["default"].log("Engine default dataSource does not support type:[" + type + "] dataSource request!", options);
53
+ }
54
+
55
+ // TODO: according to protocol, we should implement errorHandler/shouldFetch/willFetch/requestHandler and isSync controll.
56
+ var DataHelper = exports.DataHelper = /*#__PURE__*/function () {
57
+ function DataHelper(comp, config, appHelper, parser) {
58
+ /**
59
+ * host object that will be "this" object when excuting dataHandler
60
+ *
61
+ * @type {*}
62
+ * @memberof DataHelper
63
+ */
64
+ this.host = void 0;
65
+ /**
66
+ * data source config
67
+ *
68
+ * @type {DataSource}
69
+ * @memberof DataHelper
70
+ */
71
+ this.config = void 0;
72
+ /**
73
+ * a parser function which will be called to process config data
74
+ * which eventually will call common/utils.processData() to process data
75
+ * (originalConfig) => parsedConfig
76
+ * @type {*}
77
+ * @memberof DataHelper
78
+ */
79
+ this.parser = void 0;
80
+ /**
81
+ * config.list
82
+ *
83
+ * @type {any[]}
84
+ * @memberof DataHelper
85
+ */
86
+ this.ajaxList = void 0;
87
+ this.ajaxMap = void 0;
88
+ this.dataSourceMap = void 0;
89
+ this.appHelper = void 0;
90
+ this.host = comp;
91
+ this.config = config || {};
92
+ this.parser = parser;
93
+ this.ajaxList = (config === null || config === void 0 ? void 0 : config.list) || [];
94
+ this.ajaxMap = (0, _common.transformArrayToMap)(this.ajaxList, 'id');
95
+ this.dataSourceMap = this.generateDataSourceMap();
96
+ this.appHelper = appHelper;
97
+ }
98
+
99
+ // 更新config,只会更新配置,状态保存;
100
+ var _proto = DataHelper.prototype;
101
+ _proto.updateConfig = function updateConfig(config) {
102
+ var _config,
103
+ _this = this;
104
+ if (config === void 0) {
105
+ config = {};
106
+ }
107
+ this.config = config;
108
+ this.ajaxList = ((_config = config) === null || _config === void 0 ? void 0 : _config.list) || [];
109
+ var ajaxMap = (0, _common.transformArrayToMap)(this.ajaxList, 'id');
110
+ // 删除已经移除的接口
111
+ Object.keys(this.ajaxMap).forEach(function (key) {
112
+ if (!ajaxMap[key]) {
113
+ delete _this.dataSourceMap[key];
114
+ }
115
+ });
116
+ this.ajaxMap = ajaxMap;
117
+ // 添加未加入到dataSourceMap中的接口
118
+ this.ajaxList.forEach(function (item) {
119
+ if (!_this.dataSourceMap[item.id]) {
120
+ _this.dataSourceMap[item.id] = {
121
+ status: DS_STATUS.INIT,
122
+ load: function load() {
123
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
124
+ args[_key] = arguments[_key];
125
+ }
126
+ // @ts-ignore
127
+ return _this.getDataSource.apply(_this, [item.id].concat(args));
128
+ }
129
+ };
130
+ }
131
+ });
132
+ return this.dataSourceMap;
133
+ };
134
+ _proto.generateDataSourceMap = function generateDataSourceMap() {
135
+ var _this2 = this;
136
+ var res = {};
137
+ this.ajaxList.forEach(function (item) {
138
+ res[item.id] = {
139
+ status: DS_STATUS.INIT,
140
+ load: function load() {
141
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
142
+ args[_key2] = arguments[_key2];
143
+ }
144
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
145
+ // @ts-ignore
146
+ return _this2.getDataSource.apply(_this2, [item.id].concat(args));
147
+ }
148
+ };
149
+ });
150
+ return res;
151
+ };
152
+ _proto.updateDataSourceMap = function updateDataSourceMap(id, data, error) {
153
+ this.dataSourceMap[id].error = error || undefined;
154
+ this.dataSourceMap[id].data = data;
155
+ this.dataSourceMap[id].status = error ? DS_STATUS.ERROR : DS_STATUS.LOADED;
156
+ }
157
+
158
+ /**
159
+ * get all dataSourceItems which marked as isInit === true
160
+ * @private
161
+ * @returns
162
+ * @memberof DataHelper
163
+ */;
164
+ _proto.getInitDataSourseConfigs = function getInitDataSourseConfigs() {
165
+ var _this3 = this;
166
+ var initConfigs = this.parser(this.ajaxList).filter(function (item) {
167
+ // according to [spec](https://lowcode-engine.cn/lowcode), isInit should be boolean true to be working
168
+ if (item.isInit === true) {
169
+ _this3.dataSourceMap[item.id].status = DS_STATUS.LOADING;
170
+ return true;
171
+ }
172
+ return false;
173
+ });
174
+ return initConfigs;
175
+ }
176
+
177
+ /**
178
+ * process all dataSourceItems which marked as isInit === true, and get dataSource request results.
179
+ * @public
180
+ * @returns
181
+ * @memberof DataHelper
182
+ */;
183
+ _proto.getInitData = function getInitData() {
184
+ var _this4 = this;
185
+ var initSyncData = this.getInitDataSourseConfigs();
186
+ // 所有 datasource 的 datahandler
187
+ return this.asyncDataHandler(initSyncData).then(function (res) {
188
+ var dataHandler = _this4.config.dataHandler;
189
+ return _this4.handleData(null, dataHandler, res, null);
190
+ });
191
+ };
192
+ _proto.getDataSource = function getDataSource(id, params, otherOptions, callback) {
193
+ var req = this.parser(this.ajaxMap[id]);
194
+ var options = req.options || {};
195
+ var callbackFn = callback;
196
+ var otherOptionsObj = otherOptions;
197
+ if (typeof otherOptions === 'function') {
198
+ callbackFn = otherOptions;
199
+ otherOptionsObj = {};
200
+ }
201
+ var _ref = otherOptionsObj || {},
202
+ headers = _ref.headers,
203
+ otherProps = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded2);
204
+ if (!req) {
205
+ _logger["default"].warn("getDataSource API named " + id + " not exist");
206
+ return;
207
+ }
208
+ return this.asyncDataHandler([(0, _extends2["default"])({}, req, {
209
+ options: (0, _extends2["default"])({}, options, {
210
+ // 支持参数为array的情况,当参数为array时,不做参数合并
211
+ params: Array.isArray(options.params) || Array.isArray(params) ? params || options.params : (0, _extends2["default"])({}, options.params, params),
212
+ headers: (0, _extends2["default"])({}, options.headers, headers)
213
+ }, otherProps)
214
+ })]).then(function (res) {
215
+ try {
216
+ callbackFn && callbackFn(res && res[id]);
217
+ } catch (e) {
218
+ _logger["default"].error('load请求回调函数报错', e);
219
+ }
220
+ return res && res[id];
221
+ })["catch"](function (err) {
222
+ try {
223
+ callbackFn && callbackFn(null, err);
224
+ } catch (e) {
225
+ _logger["default"].error('load请求回调函数报错', e);
226
+ }
227
+ return err;
228
+ });
229
+ };
230
+ _proto.asyncDataHandler = function asyncDataHandler(asyncDataList) {
231
+ var _this5 = this;
232
+ return new Promise(function (resolve, reject) {
233
+ var allReq = [];
234
+ asyncDataList.forEach(function (req) {
235
+ var id = req.id,
236
+ type = req.type;
237
+ // TODO: need refactoring to remove 'legao' related logic
238
+ if (!id || !type || type === 'legao') {
239
+ return;
240
+ }
241
+ allReq.push(req);
242
+ });
243
+ if (allReq.length === 0) {
244
+ resolve({});
245
+ }
246
+ var res = {};
247
+ Promise.all(allReq.map(function (item) {
248
+ return new Promise(function (innerResolve) {
249
+ var type = item.type,
250
+ id = item.id,
251
+ dataHandler = item.dataHandler,
252
+ options = item.options;
253
+ var fetchHandler = function fetchHandler(data, error) {
254
+ res[id] = _this5.handleData(id, dataHandler, data, error);
255
+ _this5.updateDataSourceMap(id, res[id], error);
256
+ innerResolve({});
257
+ };
258
+ var doFetch = function doFetch(innerType, innerOptions) {
259
+ var _doRequest;
260
+ (_doRequest = doRequest(innerType, innerOptions)) === null || _doRequest === void 0 ? void 0 : _doRequest.then(function (data) {
261
+ fetchHandler(data, undefined);
262
+ })["catch"](function (err) {
263
+ fetchHandler(undefined, err);
264
+ });
265
+ };
266
+ _this5.dataSourceMap[id].status = DS_STATUS.LOADING;
267
+ doFetch(type, options);
268
+ });
269
+ })).then(function () {
270
+ resolve(res);
271
+ })["catch"](function (e) {
272
+ reject(e);
273
+ });
274
+ });
275
+ }
276
+
277
+ /**
278
+ * process data using dataHandler
279
+ *
280
+ * @param {(string | null)} id request id, will be used in error message, can be null
281
+ * @param {*} dataHandler
282
+ * @param {*} data
283
+ * @param {*} error
284
+ * @returns
285
+ * @memberof DataHelper
286
+ */;
287
+ _proto.handleData = function handleData(id, dataHandler, data, error) {
288
+ var dataHandlerFun = dataHandler;
289
+ if ((0, _lowcodeUtils.isJSFunction)(dataHandler)) {
290
+ dataHandlerFun = (0, _common.transformStringToFunction)(dataHandler.value);
291
+ }
292
+ if (!dataHandlerFun || typeof dataHandlerFun !== 'function') {
293
+ return data;
294
+ }
295
+ try {
296
+ return dataHandlerFun.call(this.host, data, error);
297
+ } catch (e) {
298
+ if (id) {
299
+ _logger["default"].error("[" + id + "]\u5355\u4E2A\u8BF7\u6C42\u6570\u636E\u5904\u7406\u51FD\u6570\u8FD0\u884C\u51FA\u9519", e);
300
+ } else {
301
+ _logger["default"].error('请求数据处理函数运行出错', e);
302
+ }
303
+ }
304
+ };
305
+ return DataHelper;
306
+ }();
@@ -0,0 +1,3 @@
1
+ export * from './common';
2
+ export * from './data-helper';
3
+ export * from './request';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _common = require("./common");
5
+ Object.keys(_common).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _common[key]) return;
8
+ exports[key] = _common[key];
9
+ });
10
+ var _dataHelper = require("./data-helper");
11
+ Object.keys(_dataHelper).forEach(function (key) {
12
+ if (key === "default" || key === "__esModule") return;
13
+ if (key in exports && exports[key] === _dataHelper[key]) return;
14
+ exports[key] = _dataHelper[key];
15
+ });
16
+ var _request = require("./request");
17
+ Object.keys(_request).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (key in exports && exports[key] === _request[key]) return;
20
+ exports[key] = _request[key];
21
+ });
@@ -0,0 +1,2 @@
1
+ import { IPublicTypeJSExpression } from '@alilc/lowcode-types';
2
+ export default function isUseLoop(loop: null | any[] | IPublicTypeJSExpression, isDesignMode: boolean): boolean;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = isUseLoop;
5
+ var _lowcodeUtils = require("@alilc/lowcode-utils");
6
+ // 1.渲染模式下,loop 是数组,则按照数组长度渲染组件
7
+ // 2.设计模式下,loop 需要长度大于 0,按照循环模式渲染,防止无法设计的情况
8
+ function isUseLoop(loop, isDesignMode) {
9
+ if ((0, _lowcodeUtils.isJSExpression)(loop)) {
10
+ return true;
11
+ }
12
+ if (!isDesignMode) {
13
+ return true;
14
+ }
15
+ if (!Array.isArray(loop)) {
16
+ return false;
17
+ }
18
+ return loop.length > 0;
19
+ }
@@ -0,0 +1,3 @@
1
+ import { Logger } from '@alilc/lowcode-utils';
2
+ declare const _default: Logger;
3
+ export default _default;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = void 0;
5
+ var _lowcodeUtils = require("@alilc/lowcode-utils");
6
+ var _default = exports["default"] = new _lowcodeUtils.Logger({
7
+ level: 'warn',
8
+ bizName: 'renderer'
9
+ });
@@ -0,0 +1,54 @@
1
+ import 'whatwg-fetch';
2
+ /**
3
+ * this is a private method, export for testing purposes only.
4
+ *
5
+ * @export
6
+ * @param {*} dataAPI
7
+ * @param {*} params
8
+ * @returns
9
+ */
10
+ export declare function buildUrl(dataAPI: any, params: any): any;
11
+ /**
12
+ * do Get request
13
+ *
14
+ * @export
15
+ * @param {*} dataAPI
16
+ * @param {*} [params={}]
17
+ * @param {*} [headers={}]
18
+ * @param {*} [otherProps={}]
19
+ * @returns
20
+ */
21
+ export declare function get(dataAPI: any, params?: {}, headers?: {}, otherProps?: {}): Promise<unknown>;
22
+ /**
23
+ * do Post request
24
+ *
25
+ * @export
26
+ * @param {*} dataAPI
27
+ * @param {*} [params={}]
28
+ * @param {*} [headers={}]
29
+ * @param {*} [otherProps={}]
30
+ * @returns
31
+ */
32
+ export declare function post(dataAPI: any, params?: {}, headers?: any, otherProps?: {}): Promise<unknown>;
33
+ /**
34
+ * do request
35
+ *
36
+ * @export
37
+ * @param {*} dataAPI
38
+ * @param {string} [method='GET']
39
+ * @param {*} data
40
+ * @param {*} [headers={}]
41
+ * @param {*} [otherProps={}]
42
+ * @returns
43
+ */
44
+ export declare function request(dataAPI: any, method: string, data: any, headers?: {}, otherProps?: any): Promise<unknown>;
45
+ /**
46
+ * do jsonp request
47
+ *
48
+ * @export
49
+ * @param {*} dataAPI
50
+ * @param {*} [params={}]
51
+ * @param {*} [otherProps={}]
52
+ * @returns
53
+ */
54
+ export declare function jsonp(dataAPI: any, params?: {}, otherProps?: {}): Promise<unknown>;
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.buildUrl = buildUrl;
6
+ exports.get = get;
7
+ exports.jsonp = jsonp;
8
+ exports.post = post;
9
+ exports.request = request;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ require("whatwg-fetch");
12
+ var _fetchJsonp = _interopRequireDefault(require("fetch-jsonp"));
13
+ var _ = require(".");
14
+ /**
15
+ * this is a private method, export for testing purposes only.
16
+ *
17
+ * @export
18
+ * @param {*} dataAPI
19
+ * @param {*} params
20
+ * @returns
21
+ */
22
+ function buildUrl(dataAPI, params) {
23
+ var paramStr = (0, _.serializeParams)(params);
24
+ if (paramStr) {
25
+ return dataAPI.indexOf('?') > 0 ? dataAPI + "&" + paramStr : dataAPI + "?" + paramStr;
26
+ }
27
+ return dataAPI;
28
+ }
29
+
30
+ /**
31
+ * do Get request
32
+ *
33
+ * @export
34
+ * @param {*} dataAPI
35
+ * @param {*} [params={}]
36
+ * @param {*} [headers={}]
37
+ * @param {*} [otherProps={}]
38
+ * @returns
39
+ */
40
+ function get(dataAPI, params, headers, otherProps) {
41
+ if (params === void 0) {
42
+ params = {};
43
+ }
44
+ if (headers === void 0) {
45
+ headers = {};
46
+ }
47
+ if (otherProps === void 0) {
48
+ otherProps = {};
49
+ }
50
+ var processedHeaders = (0, _extends2["default"])({
51
+ Accept: 'application/json'
52
+ }, headers);
53
+ var url = buildUrl(dataAPI, params);
54
+ return request(url, 'GET', null, processedHeaders, otherProps);
55
+ }
56
+
57
+ /**
58
+ * do Post request
59
+ *
60
+ * @export
61
+ * @param {*} dataAPI
62
+ * @param {*} [params={}]
63
+ * @param {*} [headers={}]
64
+ * @param {*} [otherProps={}]
65
+ * @returns
66
+ */
67
+ function post(dataAPI, params, headers, otherProps) {
68
+ if (params === void 0) {
69
+ params = {};
70
+ }
71
+ if (headers === void 0) {
72
+ headers = {};
73
+ }
74
+ if (otherProps === void 0) {
75
+ otherProps = {};
76
+ }
77
+ var processedHeaders = (0, _extends2["default"])({
78
+ Accept: 'application/json',
79
+ 'Content-Type': 'application/x-www-form-urlencoded'
80
+ }, headers);
81
+ var body = processedHeaders['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params) ? JSON.stringify(params) : (0, _.serializeParams)(params);
82
+ return request(dataAPI, 'POST', body, processedHeaders, otherProps);
83
+ }
84
+
85
+ /**
86
+ * do request
87
+ *
88
+ * @export
89
+ * @param {*} dataAPI
90
+ * @param {string} [method='GET']
91
+ * @param {*} data
92
+ * @param {*} [headers={}]
93
+ * @param {*} [otherProps={}]
94
+ * @returns
95
+ */
96
+ function request(dataAPI, method, data, headers, otherProps) {
97
+ if (method === void 0) {
98
+ method = 'GET';
99
+ }
100
+ if (headers === void 0) {
101
+ headers = {};
102
+ }
103
+ if (otherProps === void 0) {
104
+ otherProps = {};
105
+ }
106
+ var processedHeaders = headers || {};
107
+ var payload = data;
108
+ if (method === 'PUT' || method === 'DELETE') {
109
+ processedHeaders = (0, _extends2["default"])({
110
+ Accept: 'application/json',
111
+ 'Content-Type': 'application/json'
112
+ }, processedHeaders);
113
+ payload = JSON.stringify(payload || {});
114
+ }
115
+ return new Promise(function (resolve, reject) {
116
+ if (otherProps.timeout) {
117
+ setTimeout(function () {
118
+ reject(new Error('timeout'));
119
+ }, otherProps.timeout);
120
+ }
121
+ fetch(dataAPI, (0, _extends2["default"])({
122
+ method: method,
123
+ credentials: 'include',
124
+ headers: processedHeaders,
125
+ body: payload
126
+ }, otherProps)).then(function (response) {
127
+ switch (response.status) {
128
+ case 200:
129
+ case 201:
130
+ case 202:
131
+ return response.json();
132
+ case 204:
133
+ if (method === 'DELETE') {
134
+ return {
135
+ success: true
136
+ };
137
+ } else {
138
+ return {
139
+ __success: false,
140
+ code: response.status
141
+ };
142
+ }
143
+ case 400:
144
+ case 401:
145
+ case 403:
146
+ case 404:
147
+ case 406:
148
+ case 410:
149
+ case 422:
150
+ case 500:
151
+ return response.json().then(function (res) {
152
+ return {
153
+ __success: false,
154
+ code: response.status,
155
+ data: res
156
+ };
157
+ })["catch"](function () {
158
+ return {
159
+ __success: false,
160
+ code: response.status
161
+ };
162
+ });
163
+ default:
164
+ }
165
+ return null;
166
+ }).then(function (json) {
167
+ if (!json) {
168
+ reject(json);
169
+ return;
170
+ }
171
+ if (json.__success !== false) {
172
+ resolve(json);
173
+ } else {
174
+ // eslint-disable-next-line no-param-reassign
175
+ delete json.__success;
176
+ reject(json);
177
+ }
178
+ })["catch"](function (err) {
179
+ reject(err);
180
+ });
181
+ });
182
+ }
183
+
184
+ /**
185
+ * do jsonp request
186
+ *
187
+ * @export
188
+ * @param {*} dataAPI
189
+ * @param {*} [params={}]
190
+ * @param {*} [otherProps={}]
191
+ * @returns
192
+ */
193
+ function jsonp(dataAPI, params, otherProps) {
194
+ if (params === void 0) {
195
+ params = {};
196
+ }
197
+ if (otherProps === void 0) {
198
+ otherProps = {};
199
+ }
200
+ return new Promise(function (resolve, reject) {
201
+ var processedOtherProps = (0, _extends2["default"])({
202
+ timeout: 5000
203
+ }, otherProps);
204
+ var url = buildUrl(dataAPI, params);
205
+ (0, _fetchJsonp["default"])(url, processedOtherProps).then(function (response) {
206
+ response.json();
207
+ }).then(function (json) {
208
+ if (json) {
209
+ resolve(json);
210
+ } else {
211
+ reject();
212
+ }
213
+ })["catch"](function (err) {
214
+ reject(err);
215
+ });
216
+ });
217
+ }