icemilk
Version:
Shanghai jinbaozheng easy network technology Co.,Ltd sdk
1,343 lines (1,320 loc) • 80.5 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('axios'), require('moment')) :
typeof define === 'function' && define.amd ? define(['exports', 'axios', 'moment'], factory) :
(global = global || self, factory(global.icemilk = {}, global.axios, global.moment));
}(this, (function (exports, axios, moment) { 'use strict';
axios = axios && axios.hasOwnProperty('default') ? axios['default'] : axios;
moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var urlPattern = createCommonjsModule(function (module, exports) {
// Generated by CoffeeScript 1.10.0
var slice = [].slice;
(function(root, factory) {
if ( exports !== null) {
return module.exports = factory();
} else {
return root.UrlPattern = factory();
}
})(commonjsGlobal, function() {
var P, UrlPattern, astNodeContainsSegmentsForProvidedParams, astNodeToNames, astNodeToRegexString, baseAstNodeToRegexString, concatMap, defaultOptions, escapeForRegex, getParam, keysAndValuesToObject, newParser, regexGroupCount, stringConcatMap, stringify;
escapeForRegex = function(string) {
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};
concatMap = function(array, f) {
var i, length, results;
results = [];
i = -1;
length = array.length;
while (++i < length) {
results = results.concat(f(array[i]));
}
return results;
};
stringConcatMap = function(array, f) {
var i, length, result;
result = '';
i = -1;
length = array.length;
while (++i < length) {
result += f(array[i]);
}
return result;
};
regexGroupCount = function(regex) {
return (new RegExp(regex.toString() + '|')).exec('').length - 1;
};
keysAndValuesToObject = function(keys, values) {
var i, key, length, object, value;
object = {};
i = -1;
length = keys.length;
while (++i < length) {
key = keys[i];
value = values[i];
if (value == null) {
continue;
}
if (object[key] != null) {
if (!Array.isArray(object[key])) {
object[key] = [object[key]];
}
object[key].push(value);
} else {
object[key] = value;
}
}
return object;
};
P = {};
P.Result = function(value, rest) {
this.value = value;
this.rest = rest;
};
P.Tagged = function(tag, value) {
this.tag = tag;
this.value = value;
};
P.tag = function(tag, parser) {
return function(input) {
var result, tagged;
result = parser(input);
if (result == null) {
return;
}
tagged = new P.Tagged(tag, result.value);
return new P.Result(tagged, result.rest);
};
};
P.regex = function(regex) {
return function(input) {
var matches, result;
matches = regex.exec(input);
if (matches == null) {
return;
}
result = matches[0];
return new P.Result(result, input.slice(result.length));
};
};
P.sequence = function() {
var parsers;
parsers = 1 <= arguments.length ? slice.call(arguments, 0) : [];
return function(input) {
var i, length, parser, rest, result, values;
i = -1;
length = parsers.length;
values = [];
rest = input;
while (++i < length) {
parser = parsers[i];
result = parser(rest);
if (result == null) {
return;
}
values.push(result.value);
rest = result.rest;
}
return new P.Result(values, rest);
};
};
P.pick = function() {
var indexes, parsers;
indexes = arguments[0], parsers = 2 <= arguments.length ? slice.call(arguments, 1) : [];
return function(input) {
var array, result;
result = P.sequence.apply(P, parsers)(input);
if (result == null) {
return;
}
array = result.value;
result.value = array[indexes];
return result;
};
};
P.string = function(string) {
var length;
length = string.length;
return function(input) {
if (input.slice(0, length) === string) {
return new P.Result(string, input.slice(length));
}
};
};
P.lazy = function(fn) {
var cached;
cached = null;
return function(input) {
if (cached == null) {
cached = fn();
}
return cached(input);
};
};
P.baseMany = function(parser, end, stringResult, atLeastOneResultRequired, input) {
var endResult, parserResult, rest, results;
rest = input;
results = stringResult ? '' : [];
while (true) {
if (end != null) {
endResult = end(rest);
if (endResult != null) {
break;
}
}
parserResult = parser(rest);
if (parserResult == null) {
break;
}
if (stringResult) {
results += parserResult.value;
} else {
results.push(parserResult.value);
}
rest = parserResult.rest;
}
if (atLeastOneResultRequired && results.length === 0) {
return;
}
return new P.Result(results, rest);
};
P.many1 = function(parser) {
return function(input) {
return P.baseMany(parser, null, false, true, input);
};
};
P.concatMany1Till = function(parser, end) {
return function(input) {
return P.baseMany(parser, end, true, true, input);
};
};
P.firstChoice = function() {
var parsers;
parsers = 1 <= arguments.length ? slice.call(arguments, 0) : [];
return function(input) {
var i, length, parser, result;
i = -1;
length = parsers.length;
while (++i < length) {
parser = parsers[i];
result = parser(input);
if (result != null) {
return result;
}
}
};
};
newParser = function(options) {
var U;
U = {};
U.wildcard = P.tag('wildcard', P.string(options.wildcardChar));
U.optional = P.tag('optional', P.pick(1, P.string(options.optionalSegmentStartChar), P.lazy(function() {
return U.pattern;
}), P.string(options.optionalSegmentEndChar)));
U.name = P.regex(new RegExp("^[" + options.segmentNameCharset + "]+"));
U.named = P.tag('named', P.pick(1, P.string(options.segmentNameStartChar), P.lazy(function() {
return U.name;
})));
U.escapedChar = P.pick(1, P.string(options.escapeChar), P.regex(/^./));
U["static"] = P.tag('static', P.concatMany1Till(P.firstChoice(P.lazy(function() {
return U.escapedChar;
}), P.regex(/^./)), P.firstChoice(P.string(options.segmentNameStartChar), P.string(options.optionalSegmentStartChar), P.string(options.optionalSegmentEndChar), U.wildcard)));
U.token = P.lazy(function() {
return P.firstChoice(U.wildcard, U.optional, U.named, U["static"]);
});
U.pattern = P.many1(P.lazy(function() {
return U.token;
}));
return U;
};
defaultOptions = {
escapeChar: '\\',
segmentNameStartChar: ':',
segmentValueCharset: 'a-zA-Z0-9-_~ %',
segmentNameCharset: 'a-zA-Z0-9',
optionalSegmentStartChar: '(',
optionalSegmentEndChar: ')',
wildcardChar: '*'
};
baseAstNodeToRegexString = function(astNode, segmentValueCharset) {
if (Array.isArray(astNode)) {
return stringConcatMap(astNode, function(node) {
return baseAstNodeToRegexString(node, segmentValueCharset);
});
}
switch (astNode.tag) {
case 'wildcard':
return '(.*?)';
case 'named':
return "([" + segmentValueCharset + "]+)";
case 'static':
return escapeForRegex(astNode.value);
case 'optional':
return '(?:' + baseAstNodeToRegexString(astNode.value, segmentValueCharset) + ')?';
}
};
astNodeToRegexString = function(astNode, segmentValueCharset) {
if (segmentValueCharset == null) {
segmentValueCharset = defaultOptions.segmentValueCharset;
}
return '^' + baseAstNodeToRegexString(astNode, segmentValueCharset) + '$';
};
astNodeToNames = function(astNode) {
if (Array.isArray(astNode)) {
return concatMap(astNode, astNodeToNames);
}
switch (astNode.tag) {
case 'wildcard':
return ['_'];
case 'named':
return [astNode.value];
case 'static':
return [];
case 'optional':
return astNodeToNames(astNode.value);
}
};
getParam = function(params, key, nextIndexes, sideEffects) {
var index, maxIndex, result, value;
if (sideEffects == null) {
sideEffects = false;
}
value = params[key];
if (value == null) {
if (sideEffects) {
throw new Error("no values provided for key `" + key + "`");
} else {
return;
}
}
index = nextIndexes[key] || 0;
maxIndex = Array.isArray(value) ? value.length - 1 : 0;
if (index > maxIndex) {
if (sideEffects) {
throw new Error("too few values provided for key `" + key + "`");
} else {
return;
}
}
result = Array.isArray(value) ? value[index] : value;
if (sideEffects) {
nextIndexes[key] = index + 1;
}
return result;
};
astNodeContainsSegmentsForProvidedParams = function(astNode, params, nextIndexes) {
var i, length;
if (Array.isArray(astNode)) {
i = -1;
length = astNode.length;
while (++i < length) {
if (astNodeContainsSegmentsForProvidedParams(astNode[i], params, nextIndexes)) {
return true;
}
}
return false;
}
switch (astNode.tag) {
case 'wildcard':
return getParam(params, '_', nextIndexes, false) != null;
case 'named':
return getParam(params, astNode.value, nextIndexes, false) != null;
case 'static':
return false;
case 'optional':
return astNodeContainsSegmentsForProvidedParams(astNode.value, params, nextIndexes);
}
};
stringify = function(astNode, params, nextIndexes) {
if (Array.isArray(astNode)) {
return stringConcatMap(astNode, function(node) {
return stringify(node, params, nextIndexes);
});
}
switch (astNode.tag) {
case 'wildcard':
return getParam(params, '_', nextIndexes, true);
case 'named':
return getParam(params, astNode.value, nextIndexes, true);
case 'static':
return astNode.value;
case 'optional':
if (astNodeContainsSegmentsForProvidedParams(astNode.value, params, nextIndexes)) {
return stringify(astNode.value, params, nextIndexes);
} else {
return '';
}
}
};
UrlPattern = function(arg1, arg2) {
var groupCount, options, parsed, parser, withoutWhitespace;
if (arg1 instanceof UrlPattern) {
this.isRegex = arg1.isRegex;
this.regex = arg1.regex;
this.ast = arg1.ast;
this.names = arg1.names;
return;
}
this.isRegex = arg1 instanceof RegExp;
if (!(('string' === typeof arg1) || this.isRegex)) {
throw new TypeError('argument must be a regex or a string');
}
if (this.isRegex) {
this.regex = arg1;
if (arg2 != null) {
if (!Array.isArray(arg2)) {
throw new Error('if first argument is a regex the second argument may be an array of group names but you provided something else');
}
groupCount = regexGroupCount(this.regex);
if (arg2.length !== groupCount) {
throw new Error("regex contains " + groupCount + " groups but array of group names contains " + arg2.length);
}
this.names = arg2;
}
return;
}
if (arg1 === '') {
throw new Error('argument must not be the empty string');
}
withoutWhitespace = arg1.replace(/\s+/g, '');
if (withoutWhitespace !== arg1) {
throw new Error('argument must not contain whitespace');
}
options = {
escapeChar: (arg2 != null ? arg2.escapeChar : void 0) || defaultOptions.escapeChar,
segmentNameStartChar: (arg2 != null ? arg2.segmentNameStartChar : void 0) || defaultOptions.segmentNameStartChar,
segmentNameCharset: (arg2 != null ? arg2.segmentNameCharset : void 0) || defaultOptions.segmentNameCharset,
segmentValueCharset: (arg2 != null ? arg2.segmentValueCharset : void 0) || defaultOptions.segmentValueCharset,
optionalSegmentStartChar: (arg2 != null ? arg2.optionalSegmentStartChar : void 0) || defaultOptions.optionalSegmentStartChar,
optionalSegmentEndChar: (arg2 != null ? arg2.optionalSegmentEndChar : void 0) || defaultOptions.optionalSegmentEndChar,
wildcardChar: (arg2 != null ? arg2.wildcardChar : void 0) || defaultOptions.wildcardChar
};
parser = newParser(options);
parsed = parser.pattern(arg1);
if (parsed == null) {
throw new Error("couldn't parse pattern");
}
if (parsed.rest !== '') {
throw new Error("could only partially parse pattern");
}
this.ast = parsed.value;
this.regex = new RegExp(astNodeToRegexString(this.ast, options.segmentValueCharset));
this.names = astNodeToNames(this.ast);
};
UrlPattern.prototype.match = function(url) {
var groups, match;
match = this.regex.exec(url);
if (match == null) {
return null;
}
groups = match.slice(1);
if (this.names) {
return keysAndValuesToObject(this.names, groups);
} else {
return groups;
}
};
UrlPattern.prototype.stringify = function(params) {
if (params == null) {
params = {};
}
if (this.isRegex) {
throw new Error("can't stringify patterns generated from a regex");
}
if (params !== Object(params)) {
throw new Error("argument must be an object or undefined");
}
return stringify(this.ast, params, {});
};
UrlPattern.escapeForRegex = escapeForRegex;
UrlPattern.concatMap = concatMap;
UrlPattern.stringConcatMap = stringConcatMap;
UrlPattern.regexGroupCount = regexGroupCount;
UrlPattern.keysAndValuesToObject = keysAndValuesToObject;
UrlPattern.P = P;
UrlPattern.newParser = newParser;
UrlPattern.defaultOptions = defaultOptions;
UrlPattern.astNodeToRegexString = astNodeToRegexString;
UrlPattern.astNodeToNames = astNodeToNames;
UrlPattern.getParam = getParam;
UrlPattern.astNodeContainsSegmentsForProvidedParams = astNodeContainsSegmentsForProvidedParams;
UrlPattern.stringify = stringify;
return UrlPattern;
});
});
/**
* 网络地址工具类
*/
var UrlTool = /** @class */ (function () {
function UrlTool() {
}
/**
* 合成URL完整地址
* @param baseUrl 基础地址
* @param subUrl 相对地址
* @param parameters 参数
* @returns 返回拼接后的地址
*/
UrlTool.urlFromPortion = function (baseUrl, subUrl, parameters) {
if (!parameters) {
parameters = {};
}
var params = [];
for (var key in parameters) {
if (!parameters.hasOwnProperty(key)) {
continue;
}
if (parameters[key] !== undefined) {
params.push(key + '=' + parameters[key]);
}
}
var iUrl = baseUrl + subUrl;
if (params.length > 0) {
iUrl = iUrl + '?' + params.join('&');
}
return iUrl;
};
/**
* 分析Url并解析为对象结构
* @param url 待分析Url
* @param options 分析Url配置
* @return 返回解析后的结果,url无效时返回Null
*/
UrlTool.portionFromUrl = function (url, options) {
options = __assign({ complete: false }, options);
try {
var urlObj = null;
try {
urlObj = new URL(url);
}
catch (e) {
return null;
}
if (urlObj) {
var _getKV = function (obj) {
var queryMap = {};
if (obj) {
for (var _i = 0, _a = obj.split('&'); _i < _a.length; _i++) {
var kv = _a[_i];
var kv_l = kv.split('=');
if (kv_l.length < 2)
continue;
queryMap[kv_l[0]] = kv_l[1];
}
}
return queryMap;
};
var query = new urlPattern(/^\??(.*)$/, ['query']).match(urlObj.search).query;
var queryMap = _getKV(query);
var hashObj = new urlPattern(/^#?(([\w-]*(\/)?)+)?((\?)+(.*))?$/, ['hashpath', '', '', 'hashsearch', '', '_hashsearch']).match(urlObj.hash);
var hashMap = _getKV(hashObj._hashsearch);
var p = {
host: urlObj.host,
href: urlObj.href,
pathname: urlObj.pathname,
protocol: urlObj.protocol,
query: queryMap,
hashpath: hashObj.hashpath,
hashquery: hashMap
};
if (options.complete) {
p = __assign(__assign({}, p), { origin: urlObj.origin, hostname: urlObj.hostname, port: urlObj.port, search: urlObj.search, username: urlObj.username, password: urlObj.password, hashsearch: hashObj.hashsearch, hash: urlObj.hash });
}
return p;
}
else {
return null;
}
}
catch (e) {
throw e;
}
};
return UrlTool;
}());
var DEFAULT_DELEGATE = {
globalParams: function () { },
globalHeaders: function () { },
globalBodyData: function () { },
requestInterceptor: function (config) {
// Do something before request is sent
console.log(config.method + " " + UrlTool.urlFromPortion(config.url, '', config.params));
return config;
},
requestInterceptorError: function (error) {
// Do something with request error
return Promise.reject(error);
},
responseInterceptor: function (response) {
// Do something with response data
return response;
},
responseInterceptorError: function (error) {
// Do something with response error
return Promise.reject(error);
},
responseDataInterceptor: function (data, response) {
return data;
},
responseErrorInterceptor: function (error, response) {
return error;
}
};
var CancelPromiseFactory = /** @class */ (function () {
function CancelPromiseFactory(args) {
return __assign(__assign({}, new Promise(args)), { terminate: function () { } });
}
CancelPromiseFactory.createJPromise = function (para) {
var promise = null;
if (typeof para == "function") {
promise = new Promise(para);
}
else {
promise = para;
}
var hasCanceled_ = false;
var wrappedPromise = new Promise(function (resolve, reject) {
promise.then(function (val) { return hasCanceled_
? function () {
}
: resolve(val); }, function () {
// 不写会有警告
});
promise.catch(function (error) { return hasCanceled_
? function () {
}
: reject(error); });
});
wrappedPromise.terminate = function () {
hasCanceled_ = true;
};
return wrappedPromise;
};
return CancelPromiseFactory;
}());
/**
* Created by cuppi on 2017/5/10.
*/
/**
* 对象工具类
*/
var ObjectTool = /** @class */ (function () {
function ObjectTool() {
}
/**
* 删除对象某个属性
* @param target 对象
* @param propertyKey 属性
* @returns 是否删除成功
*/
ObjectTool.deleteProperty = function (target, propertyKey) {
if (target) {
return Reflect.deleteProperty(target, propertyKey);
}
return true;
};
/**
* 安全的获取链式属性 eg: a.b.c.d
* @param target 目标对象
* @param pChain 对象链式属性
* @returns {*}
*/
ObjectTool.safeGet = function (target) {
var pChain = [];
for (var _i = 1; _i < arguments.length; _i++) {
pChain[_i - 1] = arguments[_i];
}
if (!target || !pChain || pChain.length <= 0) {
return undefined;
}
var property = target;
var chainIndex = 0;
do {
property = property[pChain[chainIndex++]];
} while (property && (chainIndex < pChain.length));
return chainIndex === pChain.length ? property : undefined;
};
ObjectTool.isEmptyObject = function (obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
};
/**
* 如果未知参数是对象 f返回该对象 如果是方法 则返回方法该方法的运行结果
* @param obj 未知参数
* @param args 如果是方法,则为方法参数
*/
ObjectTool.getObjOrFuncResult = function (obj) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var o = null;
if (obj) {
if (typeof obj == "function") {
o = obj.apply(void 0, args);
}
if (typeof obj == "object") {
o = obj;
}
}
return o || {};
};
return ObjectTool;
}());
var REQUESTER_COUNT = 0;
var JRequester = /** @class */ (function () {
function JRequester(method, baseUrl, url, parameters, headers, bodyData, otherObject, delegate) {
this.method = method;
this.baseUrl = baseUrl;
this.url = url;
this.parameters = parameters;
this.headers = headers;
this.bodyData = bodyData;
this.otherObject = otherObject;
this.delegate = delegate;
this.requesterId = ++REQUESTER_COUNT;
}
/**
* 包裹可取消的请求 (使用fetch请求时使用,目前通过axios请求,无需使用)
* @private
* @param promise 异步请求块
* @returns {Promise} 被包裹后的异步请求块
*/
JRequester.wrapCancelablePromise = function (promise) {
return CancelPromiseFactory.createJPromise(promise);
};
/**
* 发送请求
* @param method 方法类型
* @param baseUrl 基地址
* @param url 相对地址
* @param parameters 参数
* @param bodyData data参数
* @param headers 头参数
* @param otherObject 其他相关设置
* @param delegate 网络请求代理
* @returns {CancelPromiseFactory<any>}
*/
JRequester.create = function (method, baseUrl, url, parameters, bodyData, headers, otherObject, delegate) {
var requester = new JRequester(method, baseUrl, url, parameters, headers, bodyData, otherObject, delegate);
if (ObjectTool.isEmptyObject(bodyData)) {
bodyData = null;
}
var axiosProps = __assign({ method: method, params: parameters, baseURL: baseUrl, data: bodyData, headers: headers }, otherObject);
/**
* 只传指定的属性 或 忽略某些属性
* 只传 a 参数 头参数正常
* specific: {
* params: ['a']
* }
* 参数 a 将被忽略
* ignore: {
* params: ['a']
* }
*/
if (otherObject.hasOwnProperty('specific') || otherObject.hasOwnProperty('ignore')) {
[{ k: 'params', ak: 'params' }, { k: 'headers', ak: 'headers' }, { k: 'bodyData', ak: 'data' }].forEach(function (_) {
var specV = otherObject.specific ? otherObject.specific[_.k] : null;
var ignoV = otherObject.ignore ? otherObject.ignore[_.k] : null;
var apl = Object.keys(axiosProps[_.ak]) || [];
specV && (axiosProps[_.ak] = apl
.filter(function (_) { return specV.some(function (__) { return _ === __; }); })
.map(function (k) { return ({ k: k, v: axiosProps[_.ak][k] }); })
.reduce(function (_, _a) {
var _b;
var k = _a.k, v = _a.v;
return (__assign(__assign({}, _), (_b = {}, _b[k] = v, _b)));
}, {}));
ignoV && (axiosProps[_.ak] = apl
.filter(function (_) { return ignoV.some(function (__) { return _ !== __; }); })
.map(function (k) { return ({ k: k, v: axiosProps[_.ak][k] }); })
.reduce(function (_, _a) {
var _b;
var k = _a.k, v = _a.v;
return (__assign(__assign({}, _), (_b = {}, _b[k] = v, _b)));
}, {}));
});
}
var jaxios = axios.create(axiosProps);
delegate = __assign(__assign({}, DEFAULT_DELEGATE), (delegate || {}));
requester.jaxios = jaxios;
jaxios.interceptors.request.use(function (config) {
config.params = __assign({}, parameters);
config.headers = __assign({}, headers);
return delegate.requestInterceptor(config);
}, function (error) {
return delegate.requestInterceptorError(error);
});
jaxios.interceptors.response.use(function (response) {
return delegate.responseInterceptor(response);
}, function (error) {
return delegate.responseInterceptorError(error);
});
return requester;
};
JRequester.prototype.request = function () {
var _this = this;
return CancelPromiseFactory.createJPromise(function (resolve, reject) {
_this.jaxios.request({ url: _this.url }).then(function (response) {
resolve(response);
}, function (error) {
reject(error);
});
});
};
JRequester.prototype.repeat = function () {
var _this = this;
return CancelPromiseFactory.createJPromise(function (resolve, reject) {
_this.jaxios.request({ url: _this.url }).then(function (response) {
resolve(response);
}, function (error) {
reject(error);
});
});
};
return JRequester;
}());
var DEFAULT_CONFIG = {
baseUrl: '',
delegate: DEFAULT_DELEGATE,
carryParams: {},
carryHeaders: {},
carryBodyData: {},
axiosConfig: {
timeout: 10 * 1000
},
otherContent: null
};
/**
* @private
*/
var Jparam = /** @class */ (function () {
function Jparam() {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
this._params = [];
for (var _a = 0, params_1 = params; _a < params_1.length; _a++) {
var para = params_1[_a];
this._params.push(para);
}
this.isJpara = true;
}
Jparam.prototype.items = function () {
return this._params;
};
Jparam.emptyPara = function () {
return new Jparam();
};
return Jparam;
}());
/**
* 辅助任务类
* @private
*/
var Jtask = /** @class */ (function () {
function Jtask(task, paramsPicker, resolve, reject) {
this._task = task;
this._resolve = resolve;
this._reject = reject;
this._paramsPicker = paramsPicker;
}
Jtask.prototype.setNextTask = function (task) {
this._nextTask = task;
};
Jtask.prototype.do = function (params) {
var _this = this;
params = params ? params : this._paramsPicker();
this._task.apply(this, this.paraItems(params)).then(function (data) {
var nextPara = _this._resolve.apply(_this, __spreadArrays([data], _this.paraItems(params)));
if (_this._nextTask) {
_this._nextTask.do(nextPara);
}
}, function (error) {
if (_this._reject) {
_this._reject.apply(_this, __spreadArrays([error], _this.paraItems(params)));
}
else {
console.log('ERROR: Don\'t find the error handler for task (' + _this._task.name + ')');
}
});
};
Jtask.prototype.paraItems = function (nextPara) {
if (nextPara && nextPara.isJpara) {
return nextPara.items();
}
return Jparam.emptyPara().items();
};
return Jtask;
}());
/**
*
* 任务连接类
* @private
*/
var Jlink = /** @class */ (function () {
function Jlink() {
var tasks = [];
for (var _i = 0; _i < arguments.length; _i++) {
tasks[_i] = arguments[_i];
}
this._tasks = [];
for (var _a = 0, tasks_1 = tasks; _a < tasks_1.length; _a++) {
var task = tasks_1[_a];
this._tasks.push(task);
}
this._taskIndex = 0;
}
Jlink.prototype.para = function (para) {
this._headTaskPara = para;
return this;
};
Jlink.prototype.params = function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
this._allTaskPara = params;
return this;
};
Jlink.prototype.next = function (resolve, reject) {
if (this._taskIndex >= this._tasks.length) {
return this;
}
var nextTask = new Jtask(this._tasks[this._taskIndex], this._paramsPicker(this._taskIndex), resolve, reject);
this._taskIndex++;
if (this._nextTask) {
this._nextTask.setNextTask(nextTask);
}
else {
this._headTask = nextTask;
}
this._nextTask = nextTask;
return this;
};
Jlink.prototype.run = function () {
this._headTask.do(this._paramsPicker(0)());
return this;
};
/**
* 指定任务的params的获取者 (目前实现会浪费内存,多个相同函数推入函数栈,后期优化)
* @returns {Array}
* @private
*/
Jlink.prototype._paramsPicker = function (index) {
var _this = this;
return function () {
if (_this._allTaskPara && _this._allTaskPara.length > index) {
return _this._allTaskPara[index];
}
if (index === 0 && _this._headTaskPara) {
return _this._headTaskPara;
}
return Jparam.emptyPara();
};
};
return Jlink;
}());
// let pro1 = () => {
// return new Promise()
// };
//
// let pro2 = () => {
// return new Promise
// };
// let l = jlink(pro1, pro2).next(
// (data) => {
// console.log(data);
// },
// error => {
// console.log(error);
// }).next(
// (data) => {
// console.log(data);
// },
// error => {
// console.log(error);
// }
// ).run();
/**
* 任务组合类
* @private
*/
// class Jcombine {
// _tasks: Function[];
// _headTaskPara: object;
// _taskIndex: number;
// _paramsPicker: Function;
// _headTask: Jtask;
//
// constructor(...tasks) {
// this._tasks = [];
// for (var task of tasks) {
// this._tasks.push(task);
// }
// this._taskIndex = 0;
// }
//
// para(para) {
// this._headTaskPara = para;
// return this;
// }
//
// params(...params) {
// this._allTaskPara = params;
// return this;
// }
//
// next(resolve, reject) {
// if (this._taskIndex >= this._tasks.length) {
// return this;
// }
// let nextTask = new Jtask(this._tasks[this._taskIndex], this._paramsPicker(this._taskIndex), resolve, reject);
// this._taskIndex++;
// if (this._nextTask) {
// this._nextTask.setNextTask(nextTask);
// } else {
// this._headTask = nextTask;
// }
// this._nextTask = nextTask;
// return this;
// }
//
// run() {
// this._headTask.do(this._paramsPicker(0)());
// return this;
// }
// }
/**
* 任务连接类
* @alias other/jlink
* @param tasks
* @returns {Jlink}
*/
function jlink() {
var tasks = [];
for (var _i = 0; _i < arguments.length; _i++) {
tasks[_i] = arguments[_i];
}
return new (Jlink.bind.apply(Jlink, __spreadArrays([void 0], tasks)))();
}
/**
* @private
* @param params
* @returns {Jpara}
*/
function jparam() {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
return new (Jparam.bind.apply(Jparam, __spreadArrays([void 0], params)))();
}
/**
* @alias other/jcombine
* @param tasks
* @returns {Jcombine}
*/
// function jcombine(...tasks) {
// return new Jcombine(...tasks);
// }
/**
*
* @param {GlobalValueRegistry | ((delegate: INetworkDelegate) => GlobalValueRegistry)} x
* @return {x is (delegate: INetworkDelegate) => GlobalValueRegistry}
*/
function isGlobalValueRegistry(x) {
return typeof x === 'function';
}
function isGlobalValueRegistryObject(x) {
return typeof x === 'object';
}
function isGlobalValueRegistryFunction(x) {
return typeof x === 'function';
}
/**
* 获取全局指定参数
* @param extraValues 全局参数列表
* @param delegate 全局代理
* @param globalValueRegistryPicker 全局参数代理对象
* @return {{}}
*/
function jgetGlobalValue(extraValues, delegate, globalValueRegistryPicker) {
var jgetGlobalValueWithKey = function (key) {
var otherValues = {};
if (!globalValueRegistryPicker) {
throw new Error('未找到全局参数,请确认是否设置global代理');
}
var globalValueRegistry;
if (isGlobalValueRegistry(globalValueRegistryPicker)) {
globalValueRegistry = globalValueRegistryPicker(delegate);
}
else {
globalValueRegistry = globalValueRegistryPicker;
}
var globalParaFunc = null;
if (isGlobalValueRegistryObject(globalValueRegistry)) {
globalParaFunc = globalValueRegistry[key];
}
if (isGlobalValueRegistryFunction(globalValueRegistry)) {
globalParaFunc = globalValueRegistry()[key];
}
if (globalParaFunc !== null) {
var globalPara = null;
if (typeof globalParaFunc == "function") {
globalPara = globalParaFunc();
}
else {
globalPara = globalParaFunc;
}
if (typeof globalPara == "object") {
otherValues = __assign(__assign({}, otherValues), globalPara);
}
else if (typeof globalPara === 'string' || typeof globalPara === 'number') {
otherValues[key] = globalPara;
}
else {
throw new Error("\u5168\u5C40\u53D8\u91CF\u7C7B\u578B\u4E0D\u6B63\u786E:" + key);
}
}
else {
throw new Error("\u4E0D\u5B58\u5728\u7684\u5168\u5C40\u53D8\u91CF:" + key);
}
return otherValues;
};
var globalOtherValues = {};
extraValues.forEach(function (key) {
if (typeof key == "object") {
globalOtherValues = __assign(__assign({}, globalOtherValues), key);
}
else {
if (!delegate)
return;
globalOtherValues = __assign(__assign({}, globalOtherValues), jgetGlobalValueWithKey(key));
}
});
return globalOtherValues;
}
var JNetworkError = /** @class */ (function (_super) {
__extends(JNetworkError, _super);
function JNetworkError(errorMessage, code) {
var _this = this;
if (typeof errorMessage === 'string') {
_this = _super.call(this, errorMessage) || this;
}
else if (errorMessage instanceof Error) {
_this = _super.call(this, errorMessage.message) || this;
}
else {
throw new Error('JNetworkError: 构造函数非法类型');
}
_this.errorCode = code;
return _this;
// Reflect.defineProperty(this, 'errorCode', {value: code});
}
return JNetworkError;
}(Error));
var JRequestEngine = /** @class */ (function () {
// private readonly reactor;
function JRequestEngine() {
this.isRunning = false;
this.runQueue = [];
// let reactor = new Reactor();
// this.reactor = reactor;
// reactor.registerEvent('requestCanLoad');
}
JRequestEngine.prototype._pushRunQueue = function (request, resolve, reject) {
this.runQueue.push({
request: request,
resolve: resolve,
reject: reject
});
};
JRequestEngine.prototype._popRunQueue = function () {
return this.runQueue.shift();
};
JRequestEngine.prototype.addRequest = function (request) {
var _this = this;
return CancelPromiseFactory.createJPromise(function (resolve, reject) {
if (!_this.isRunning) {
_this.isRunning = true;
_this.do(request, resolve, reject);
}
else {
_this._pushRunQueue(request, resolve, reject);
}
});
};
JRequestEngine.prototype.do = function (request, resolve, reject) {
var _this = this;
request.request().then(function (data) {
setTimeout(resolve(data), 0);
var task = _this._popRunQueue();
if (task) {
_this.do(task.request, task.resolve, task.reject);
}
else {
_this.isRunning = false;
}
}, function (error) {
reject(error);
});
};
return JRequestEngine;
}());
var JNetworkRoot = /** @class */ (function () {
function JNetworkRoot() {
this.extraParams = [];
this.extraHeaders = [];
this.extraBodyData = [];
}
JNetworkRoot.prototype.useParams = function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
this.extraParams = params;
return this;
};
JNetworkRoot.prototype.useHeaders = function () {
var headers = [];
for (var _i = 0; _i < arguments.length; _i++) {
headers[_i] = arguments[_i];
}
this.extraHeaders = headers;
return this;
};
JNetworkRoot.prototype.useBodyData = function () {
var bodyData = [];
for (var _i = 0; _i < arguments.length; _i++) {
bodyData[_i] = arguments[_i];
}
this.extraBodyData = bodyData;
return this;
};
JNetworkRoot.prototype.clearExtraData = function () {
this.extraParams = [];
this.extraHeaders = [];
this.extraBodyData = [];
};
return JNetworkRoot;
}());
var GROUP_COUNT = 0;
var JNetworkGroup = /** @class */ (function (_super) {
__extends(JNetworkGroup, _super);
function JNetworkGroup(baseUrl, axiosConfig, delegate, options) {
var _this = _super.call(this) || this;
_this.requestEngine = new JRequestEngine();
_this.baseUrl = baseUrl;
_this.axiosConfig = axiosConfig || {};
_this.delegate = delegate || null;
_this.groupId = ++GROUP_COUNT;
if (options) {
_this.freezeParams = options.freezeParams || [];
_this.freezeHeaders = options.freezeHeaders || [];
_this.freezeBodyData = options.freezeBodyData || [];
_this.freezeCarryParams = options.freezeCarryParams || {};
_this.freezeCarryHeaders = options.freezeCarryHeaders || {};
_this.freezeCarryBodyData = options.freezeCarryBodyData || {};
_this.isSync = options.isSync;
_this.parent = options.parent;
}
return _this;
}
JNetworkGroup.prototype.pickInjectParams = function () {
return __assign(__assign({}, ObjectTool.getObjOrFuncResult(this.freezeCarryParams)), jgetGlobalValue(__spreadArrays(this.freezeParams, this.extraParams), this.delegate, function (_) { return _.globalParams; }));
};
JNetworkGroup.prototype.pickInjectHeaders = function () {
return __assign(__assign({}, ObjectTool.getObjOrFuncResult(this.freezeCarryHeaders)), jgetGlobalValue(__spreadArrays(this.freezeHeaders, this.extraHeaders), this.delegate, function (_) { return _.globalHeaders; }));
};
JNetworkGroup.prototype.pickInjectBodyData = function () {
return __assign(__assign({}, ObjectTool.getObjOrFuncResult(this.freezeCarryBodyData)), jgetGlobalValue(__spreadArrays(this.freezeBodyData, this.extraBodyData), this.delegate, function (_) { return _.globalBodyData; }));
};
/**
* 发送请求
* @param method 方法类型
* @param baseUrl 基地址
* @param url 相对地址
* @param parameters 参数
* @param data data参数
* @param headers 头参数
* @param otherObject 其他相关设置
* @returns {CancelPromiseFactory<any>}
*/
JNetworkGroup.prototype.fetchRequest = function (method, baseUrl, url, parameters, data, headers, otherObject) {
if (otherObject === void 0) { otherObject = {}; }
var carryParams = ObjectTool.getObjOrFuncResult(this.freezeCarryParams);
var carryHeaders = ObjectTool.getObjOrFuncResult(this.freezeHeaders);
var carryBodyData = ObjectTool.getObjOrFuncResult(this.freezeCarryBodyData);
var delegate = this.delegate;
var globalOtherParams = this.pickInjectParams();
var globalOtherHeaders = this.pickInjectHeaders();
var globalOtherBodyData = this.pickInjectBodyData();
this.clearExtraData();
var request = JRequester.create(method, baseUrl, url, __assign(__assign(__assign({}, carryParams), globalOtherParams), parameters), otherObject.notTransformData ? data : __assign(__assign(__assign({}, carryBodyData), globalOtherBodyData), data), __assign(__assign(__assign({ 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }, carryHeaders), globalOtherHeaders), headers), __assign({ axiosConfig: this.axiosConfig }, otherObject), delegate);
if (this.isSync) {
return this.requestEngine.addRequest(request);
}
else {
return CancelPromiseFactory.createJPromise(function (resolve, reject) {
request.request().then(function (response) {
if (response.status === 200) {
resolve(response);
}
else {
var errorMessage = void 0, errorStatus = void 0;
if (response.hasOwnProperty('status')) {
errorMessage = response.statusText;
errorStatus = response.status;
}
else {
if (response.hasOwnProperty('message')) {
errorMessage = response['message'];
}
}
reject(new JNetworkError(errorMessage, errorStatus));
}
}).catch(function (