vap1 0.8.0 → 0.8.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/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"vap1","version":"0.8.0","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
1
+ {"name":"vap1","version":"0.8.2","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
package/utils/Ajax.d.ts CHANGED
@@ -5,6 +5,15 @@ export { SESSION, SESSION_TIME, CLEAR, WAIT } from './_AjaxUtil';
5
5
  * CATCH 方法可以捕获通用的错误并,省去 try/catch 语法
6
6
  */
7
7
  export declare const CATCH: (fn: () => Promise<any>) => (() => Promise<void>);
8
+ /**
9
+ * 下载文件。
10
+ * url: 下载接口地址
11
+ *
12
+ */
13
+ export declare const DOWNLOAD: (url: string, postParam?: PlainObject) => void | Promise<void>;
14
+ export declare const getMicroHeader: (path?: string) => {
15
+ [x: string]: string;
16
+ };
8
17
  /**
9
18
  * Ajax 请求选项
10
19
  */
@@ -30,7 +39,7 @@ export type AjaxOptions = RequestInit & {
30
39
  *
31
40
  * 当满足不了需求时,可使用 `FETCH`,参考与标准 fetch 类似。
32
41
  */
33
- export declare const FETCH: (url: string, options: AjaxOptions) => Promise<Result>;
42
+ export declare const FETCH: (url: string, options?: AjaxOptions) => Promise<Result>;
34
43
  export declare const GET: (url: string, options?: AjaxOptions) => Promise<Result>;
35
44
  export declare const POST: (url: string, param: PlainObject, options?: AjaxOptions) => Promise<Result>;
36
45
  export declare const PATCH: (url: string, param: PlainObject, options?: AjaxOptions) => Promise<Result>;
package/utils/Ajax.js CHANGED
@@ -62,14 +62,24 @@ var __read = (this && this.__read) || function (o, n) {
62
62
  }
63
63
  return ar;
64
64
  };
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
73
+ };
65
74
  var __importDefault = (this && this.__importDefault) || function (mod) {
66
75
  return (mod && mod.__esModule) ? mod : { "default": mod };
67
76
  };
68
77
  Object.defineProperty(exports, "__esModule", { value: true });
69
- exports.WHEN = exports.PUT = exports.DELETE = exports.PATCH = exports.POST = exports.GET = exports.FETCH = exports.CATCH = exports.WAIT = exports.CLEAR = exports.SESSION_TIME = exports.SESSION = void 0;
78
+ exports.WHEN = exports.PUT = exports.DELETE = exports.PATCH = exports.POST = exports.GET = exports.FETCH = exports.getMicroHeader = exports.DOWNLOAD = exports.CATCH = exports.WAIT = exports.CLEAR = exports.SESSION_TIME = exports.SESSION = void 0;
70
79
  var lodash_1 = __importDefault(require("lodash"));
71
80
  var Global_1 = require("./Global");
72
81
  var _Support_1 = require("./_Support");
82
+ var PageUtil_1 = require("./PageUtil");
73
83
  var _AjaxUtil_1 = require("./_AjaxUtil");
74
84
  var _AjaxUtil_2 = require("./_AjaxUtil");
75
85
  Object.defineProperty(exports, "SESSION", { enumerable: true, get: function () { return _AjaxUtil_2.SESSION; } });
@@ -99,51 +109,165 @@ var CATCH = function (fn) { return function () { return __awaiter(void 0, void 0
99
109
  });
100
110
  }); }; };
101
111
  exports.CATCH = CATCH;
102
- /**
103
- * 建议使用 `GET` `POST` `PUT` `DELETE` `PATCH` 发送请求。
104
- *
105
- * 当满足不了需求时,可使用 `FETCH`,参考与标准 fetch 类似。
106
- */
107
- var FETCH = function (url, options) { return __awaiter(void 0, void 0, void 0, function () {
108
- var fetchOptions, response, result_1, result;
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
112
+ var DOWNLOAD_FRAME_NAME = '_downloadFrame';
113
+ var isMicroApp = function () { return lodash_1.default.has(window, 'microApp'); };
114
+ var getDownloadFrame = function () {
115
+ var frame = document.getElementsByName(DOWNLOAD_FRAME_NAME)[0];
116
+ if (frame)
117
+ return frame;
118
+ frame = document.createElement('iframe');
119
+ frame.name = DOWNLOAD_FRAME_NAME;
120
+ frame.id = DOWNLOAD_FRAME_NAME;
121
+ frame.style.display = 'none';
122
+ document.body.appendChild(frame);
123
+ return frame;
124
+ };
125
+ var downloadByIframe = function (url, postParam) {
126
+ var downloadUrl = (0, PageUtil_1.resolveURL)(url);
127
+ getDownloadFrame();
128
+ if (postParam) {
129
+ var form_1 = document.createElement('form');
130
+ form_1.action = downloadUrl;
131
+ form_1.method = 'POST';
132
+ form_1.target = DOWNLOAD_FRAME_NAME;
133
+ form_1.style.display = 'none';
134
+ lodash_1.default.keys(postParam).forEach(function (key) {
135
+ var input = document.createElement('input');
136
+ input.type = 'hidden';
137
+ input.name = key;
138
+ input.value = postParam[key] == null ? '' : "".concat(postParam[key]);
139
+ form_1.appendChild(input);
140
+ });
141
+ document.body.appendChild(form_1);
142
+ form_1.submit();
143
+ window.setTimeout(function () { return document.body.removeChild(form_1); }, 200);
144
+ return;
145
+ }
146
+ document.getElementsByName(DOWNLOAD_FRAME_NAME)[0].src = downloadUrl;
147
+ };
148
+ var parseDownloadFileName = function (contentDisposition) {
149
+ if (!contentDisposition)
150
+ return '';
151
+ var utf8Match = contentDisposition.match(/filename\*\s*=\s*(?:UTF-8'')?([^;]+)/i);
152
+ if (utf8Match) {
153
+ try {
154
+ return decodeURIComponent(lodash_1.default.trim(utf8Match[1], '" '));
155
+ }
156
+ catch (_a) {
157
+ return lodash_1.default.trim(utf8Match[1], '" ');
158
+ }
159
+ }
160
+ var filenameMatch = contentDisposition.match(/filename\s*=\s*("?)([^";]+)\1/i);
161
+ return filenameMatch ? lodash_1.default.trim(filenameMatch[2]) : '';
162
+ };
163
+ var saveBlob = function (blob, fileName) {
164
+ var nav = window.navigator;
165
+ if (lodash_1.default.isFunction(nav.msSaveOrOpenBlob)) {
166
+ nav.msSaveOrOpenBlob(blob, fileName || undefined);
167
+ return;
168
+ }
169
+ var a = document.createElement('a');
170
+ a.href = URL.createObjectURL(blob);
171
+ a.download = fileName || '';
172
+ a.style.display = 'none';
173
+ document.body.appendChild(a);
174
+ a.click();
175
+ document.body.removeChild(a);
176
+ window.setTimeout(function () { return URL.revokeObjectURL(a.href); }, 200);
177
+ };
178
+ var downloadByBlob = function (url, postParam) { return __awaiter(void 0, void 0, void 0, function () {
179
+ var method, _a, _url, _method, _headers, _data, downloadUrl, options, response, blob;
180
+ return __generator(this, function (_b) {
181
+ switch (_b.label) {
111
182
  case 0:
112
- if (options.process !== false)
113
- start();
114
- fetchOptions = lodash_1.default.merge({ method: 'GET', headers: Global_1.CONFIG.AJAX.headers, }, options);
115
- if (fetchOptions.body && lodash_1.default.isPlainObject(fetchOptions.body)) {
116
- fetchOptions.body = JSON.stringify(fetchOptions.body);
183
+ method = postParam ? 'POST' : 'GET';
184
+ _a = __read((0, _AjaxUtil_1.AOP_BEFORE)(url, method, {}, postParam || {}), 4), _url = _a[0], _method = _a[1], _headers = _a[2], _data = _a[3];
185
+ downloadUrl = (0, PageUtil_1.resolveURL)(_url);
186
+ options = { method: _method, headers: _headers };
187
+ if (_method != 'GET') {
188
+ options.body = JSON.stringify(_data);
117
189
  }
118
- fetchOptions.headers = (0, _AjaxUtil_1.appendMicorSessionHeaderForRequest)(url, fetchOptions.headers);
119
- return [4 /*yield*/, fetch(url, fetchOptions)];
190
+ return [4 /*yield*/, fetch(downloadUrl, options)];
120
191
  case 1:
121
- response = _a.sent();
192
+ response = _b.sent();
122
193
  (0, _AjaxUtil_1.receiveMicorSessionByFetch)(response);
123
- if (options.process !== false)
124
- done();
125
- if (!lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeReceive)) return [3 /*break*/, 3];
126
- return [4 /*yield*/, Global_1.CONFIG.AJAX.beforeReceive(response, url, fetchOptions)];
194
+ if (!response.ok)
195
+ throw new Error("Download failed: ".concat(response.status));
196
+ return [4 /*yield*/, response.blob()];
127
197
  case 2:
128
- result_1 = _a.sent();
129
- return [2 /*return*/, result_1];
130
- case 3:
131
- if (response.redirected && lodash_1.default.isString(response.url) && response.url.indexOf('login') >= 0) {
132
- if (window.location.href.indexOf('login') < 0) {
133
- window.location.href = response.url;
134
- return [2 /*return*/, new Promise(function (r) { return r({ code: '9999', message: '请先登录' }); })];
135
- }
136
- }
137
- if (!fetchOptions.text) return [3 /*break*/, 5];
138
- return [4 /*yield*/, response.text()];
139
- case 4: return [2 /*return*/, _a.sent()];
140
- case 5: return [4 /*yield*/, response.json()];
141
- case 6:
142
- result = _a.sent();
143
- return [2 /*return*/, result];
198
+ blob = _b.sent();
199
+ saveBlob(blob, parseDownloadFileName(response.headers.get('Content-Disposition')));
200
+ return [2 /*return*/];
144
201
  }
145
202
  });
146
203
  }); };
204
+ /**
205
+ * 下载文件。
206
+ * url: 下载接口地址
207
+ *
208
+ */
209
+ var DOWNLOAD = function (url, postParam) {
210
+ if (isMicroApp())
211
+ return downloadByBlob(url, postParam).catch(function () { return downloadByIframe(url, postParam); });
212
+ return downloadByIframe(url, postParam);
213
+ };
214
+ exports.DOWNLOAD = DOWNLOAD;
215
+ var getMicroHeader = function (path) {
216
+ return __assign({}, Global_1.CONFIG.AJAX.headers);
217
+ };
218
+ exports.getMicroHeader = getMicroHeader;
219
+ /**
220
+ * 建议使用 `GET` `POST` `PUT` `DELETE` `PATCH` 发送请求。
221
+ *
222
+ * 当满足不了需求时,可使用 `FETCH`,参考与标准 fetch 类似。
223
+ */
224
+ var FETCH = function (url_1) {
225
+ var args_1 = [];
226
+ for (var _i = 1; _i < arguments.length; _i++) {
227
+ args_1[_i - 1] = arguments[_i];
228
+ }
229
+ return __awaiter(void 0, __spreadArray([url_1], __read(args_1), false), void 0, function (url, options) {
230
+ var fetchOptions, response, result_1, result;
231
+ if (options === void 0) { options = {}; }
232
+ return __generator(this, function (_a) {
233
+ switch (_a.label) {
234
+ case 0:
235
+ if (options.process !== false)
236
+ start();
237
+ fetchOptions = lodash_1.default.merge({ method: 'GET' }, options);
238
+ fetchOptions.headers = (0, _AjaxUtil_1.mergeHeaders)(Global_1.CONFIG.AJAX.headers, options.headers || {});
239
+ if (fetchOptions.body && lodash_1.default.isPlainObject(fetchOptions.body)) {
240
+ fetchOptions.body = JSON.stringify(fetchOptions.body);
241
+ }
242
+ return [4 /*yield*/, fetch(url, fetchOptions)];
243
+ case 1:
244
+ response = _a.sent();
245
+ (0, _AjaxUtil_1.receiveMicorSessionByFetch)(response);
246
+ if (options.process !== false)
247
+ done();
248
+ if (!lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeReceive)) return [3 /*break*/, 3];
249
+ return [4 /*yield*/, Global_1.CONFIG.AJAX.beforeReceive(response, url, fetchOptions)];
250
+ case 2:
251
+ result_1 = _a.sent();
252
+ return [2 /*return*/, result_1];
253
+ case 3:
254
+ if (response.redirected && lodash_1.default.isString(response.url) && response.url.indexOf('login') >= 0) {
255
+ if (window.location.href.indexOf('login') < 0) {
256
+ window.location.href = response.url;
257
+ return [2 /*return*/, new Promise(function (r) { return r({ code: '9999', message: '请先登录' }); })];
258
+ }
259
+ }
260
+ if (!fetchOptions.text) return [3 /*break*/, 5];
261
+ return [4 /*yield*/, response.text()];
262
+ case 4: return [2 /*return*/, _a.sent()];
263
+ case 5: return [4 /*yield*/, response.json()];
264
+ case 6:
265
+ result = _a.sent();
266
+ return [2 /*return*/, result];
267
+ }
268
+ });
269
+ });
270
+ };
147
271
  exports.FETCH = FETCH;
148
272
  var _FETCH = function (method, url, param, options) {
149
273
  var _a = __read((0, _AjaxUtil_1.AOP_BEFORE)(url, method, (options && options.headers) ? options.headers : {}, param), 4), _url = _a[0], _method = _a[1], _headers = _a[2], _data = _a[3];
package/utils/XHR.js CHANGED
@@ -33,7 +33,7 @@ var FETCH = function (method, url, param, headers) {
33
33
  }
34
34
  };
35
35
  xhr.open(method, url, false);
36
- (0, _AjaxUtil_1.setXHRHeaders)(xhr, (0, _AjaxUtil_1.mergeHeaders)({ 'Content-Type': 'application/json' }, headers));
36
+ (0, _AjaxUtil_1.setXHRHeaders)(xhr, headers || {});
37
37
  if (method == 'GET') {
38
38
  xhr.send();
39
39
  }
@@ -21,7 +21,6 @@ export declare const CLEAR: (...urls: string[]) => void[];
21
21
  type HeaderRecord = Record<string, string>;
22
22
  export declare const mergeHeaders: (...headersList: HeadersInit[]) => HeaderRecord;
23
23
  export declare const setXHRHeaders: (xhr: XMLHttpRequest, headers: HeadersInit) => void;
24
- export declare const appendMicorSessionHeaderForRequest: (url: string, headers: HeadersInit) => HeaderRecord;
25
24
  export declare const receiveMicorSessionByFetch: (response: Response) => void;
26
25
  export declare const receiveMicorSessionByXHR: (xhr: XMLHttpRequest) => void;
27
26
  export interface Result {
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __values = (this && this.__values) || function(o) {
3
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
- if (m) return m.call(o);
5
- if (o && typeof o.length === "number") return {
6
- next: function () {
7
- if (o && i >= o.length) o = void 0;
8
- return { value: o && o[i++], done: !o };
9
- }
10
- };
11
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
- };
13
2
  var __read = (this && this.__read) || function (o, n) {
14
3
  var m = typeof Symbol === "function" && o[Symbol.iterator];
15
4
  if (!m) return o;
@@ -26,12 +15,23 @@ var __read = (this && this.__read) || function (o, n) {
26
15
  }
27
16
  return ar;
28
17
  };
18
+ var __values = (this && this.__values) || function(o) {
19
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
20
+ if (m) return m.call(o);
21
+ if (o && typeof o.length === "number") return {
22
+ next: function () {
23
+ if (o && i >= o.length) o = void 0;
24
+ return { value: o && o[i++], done: !o };
25
+ }
26
+ };
27
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
28
+ };
29
29
  var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  return (mod && mod.__esModule) ? mod : { "default": mod };
31
31
  };
32
32
  var e_1, _a;
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.LOG_AJAX = exports.AOP_BEFORE = exports.setFixedHeader = exports.filterNull = exports.receiveMicorSessionByXHR = exports.receiveMicorSessionByFetch = exports.appendMicorSessionHeaderForRequest = exports.setXHRHeaders = exports.mergeHeaders = exports.CLEAR = exports.SESSION = exports.SESSION_TIME = exports.WAIT = exports.CACHE_TIMER = exports.CACHE_URL = void 0;
34
+ exports.LOG_AJAX = exports.AOP_BEFORE = exports.setFixedHeader = exports.filterNull = exports.receiveMicorSessionByXHR = exports.receiveMicorSessionByFetch = exports.setXHRHeaders = exports.mergeHeaders = exports.CLEAR = exports.SESSION = exports.SESSION_TIME = exports.WAIT = exports.CACHE_TIMER = exports.CACHE_URL = void 0;
35
35
  var lodash_1 = __importDefault(require("lodash"));
36
36
  var _Support_1 = require("./_Support");
37
37
  var Global_1 = require("./Global");
@@ -75,11 +75,11 @@ var CLEAR = function () {
75
75
  exports.CLEAR = CLEAR;
76
76
  var sessionStorage = window.sessionStorage;
77
77
  var MICOR_SESSION_STORAGE = 'MICOR_SESSION';
78
- var MICOR_SESSION_RESPONSE_HEADER = 'set-cems-cookies';
79
- var MICOR_SESSION_REQUEST_HEADER = 'cems-cookies';
80
- var hasMicorApp = function () {
81
- return lodash_1.default.has(window, 'microApp');
82
- };
78
+ var MICOR_SESSION_HEADERS = [
79
+ { response: 'set-cems-cookies', request: 'cems-cookies' },
80
+ { response: 'set-vap-cookies', request: 'vap-cookies' },
81
+ { response: 'set-dlp-cookies', request: 'dlp-cookies' },
82
+ ];
83
83
  var readMicorSessionStore = function () {
84
84
  var value = sessionStorage.getItem(MICOR_SESSION_STORAGE);
85
85
  if (!value)
@@ -94,28 +94,7 @@ var readMicorSessionStore = function () {
94
94
  var splitMicorSessionHeader = function (headerValue) {
95
95
  return headerValue.split(/,(?=\s*[^;,=\s]+=)/g).map(function (value) { return lodash_1.default.trim(value); }).filter(Boolean);
96
96
  };
97
- var normalizePath = function (path) {
98
- if (!path)
99
- return '/';
100
- return path.charAt(0) == '/' ? path : "/".concat(path);
101
- };
102
- var resolvePathname = function (url) {
103
- var parser = document.createElement('a');
104
- parser.href = url;
105
- return normalizePath(parser.pathname || '/');
106
- };
107
- var isPathMatched = function (requestPath, cookiePath) {
108
- var path = normalizePath(cookiePath);
109
- if (path == '/')
110
- return true;
111
- if (requestPath == path)
112
- return true;
113
- if (lodash_1.default.endsWith(path, '/'))
114
- return lodash_1.default.startsWith(requestPath, path);
115
- return lodash_1.default.startsWith(requestPath, path) && requestPath.charAt(path.length) == '/';
116
- };
117
97
  var parseMicorSessionCookie = function (cookieValue) {
118
- var e_2, _a;
119
98
  var values = cookieValue.split(';').map(function (value) { return lodash_1.default.trim(value); }).filter(Boolean);
120
99
  if (values.length == 0)
121
100
  return null;
@@ -123,70 +102,63 @@ var parseMicorSessionCookie = function (cookieValue) {
123
102
  var idx = cookiePair.indexOf('=');
124
103
  if (idx <= 0)
125
104
  return null;
126
- var path = '/';
127
- try {
128
- for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
129
- var value = values_1_1.value;
130
- var attrIdx = value.indexOf('=');
131
- var attrName = lodash_1.default.toLower(attrIdx >= 0 ? value.substring(0, attrIdx) : value);
132
- if (attrName == 'path') {
133
- path = attrIdx >= 0 ? lodash_1.default.trim(value.substring(attrIdx + 1)) : '/';
134
- break;
135
- }
136
- }
137
- }
138
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
139
- finally {
140
- try {
141
- if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
142
- }
143
- finally { if (e_2) throw e_2.error; }
144
- }
145
105
  return {
146
106
  name: cookiePair.substring(0, idx),
147
- path: normalizePath(path),
148
107
  value: cookiePair.substring(idx + 1),
149
108
  source: cookieValue,
150
109
  };
151
110
  };
152
- var receiveMicorSession = function (headerValue) {
153
- if (!hasMicorApp())
154
- return;
111
+ var findHeaderKey = function (headers, headerName) {
112
+ var lowerName = lodash_1.default.toLower(headerName);
113
+ return lodash_1.default.find(lodash_1.default.keys(headers), function (key) { return lodash_1.default.toLower(key) == lowerName; });
114
+ };
115
+ var getMicorSessionHeaderValue = function (store, requestHeader) {
116
+ var session = store[requestHeader] || {};
117
+ return lodash_1.default.keys(session)
118
+ .map(function (name) { return "".concat(name, "=").concat(session[name].value); })
119
+ .join('; ');
120
+ };
121
+ var setMicorSessionGlobalHeaders = function (store) {
122
+ MICOR_SESSION_HEADERS.forEach(function (_a) {
123
+ var request = _a.request;
124
+ var value = getMicorSessionHeaderValue(store, request);
125
+ var headerKey = findHeaderKey(Global_1.CONFIG.AJAX.headers, request);
126
+ if (value) {
127
+ Global_1.CONFIG.AJAX.headers[headerKey || request] = value;
128
+ return;
129
+ }
130
+ if (headerKey)
131
+ delete Global_1.CONFIG.AJAX.headers[headerKey];
132
+ });
133
+ };
134
+ var receiveMicorSession = function (requestHeader, headerValue) {
155
135
  if (!headerValue)
156
- return;
136
+ return false;
157
137
  var store = readMicorSessionStore();
138
+ if (!store[requestHeader])
139
+ store[requestHeader] = {};
140
+ var changed = false;
158
141
  splitMicorSessionHeader(headerValue).forEach(function (value) {
159
142
  var cookie = parseMicorSessionCookie(value);
160
143
  if (cookie == null)
161
144
  return;
162
- if (!store[cookie.path])
163
- store[cookie.path] = {};
164
- store[cookie.path][cookie.name] = {
145
+ store[requestHeader][cookie.name] = {
165
146
  value: cookie.value,
166
147
  source: cookie.source,
167
148
  };
149
+ changed = true;
168
150
  });
151
+ if (!changed)
152
+ return false;
169
153
  sessionStorage.setItem(MICOR_SESSION_STORAGE, JSON.stringify(store));
154
+ setMicorSessionGlobalHeaders(store);
155
+ return true;
170
156
  };
171
- var getMatchedMicorSession = function (url) {
172
- if (!hasMicorApp())
173
- return '';
174
- var store = readMicorSessionStore();
175
- var requestPath = resolvePathname(url);
176
- if (lodash_1.default.keys(store).length == 0)
177
- return '';
178
- var matchedPath = lodash_1.default.keys(store)
179
- .filter(function (path) { return isPathMatched(requestPath, path); })
180
- .sort(function (a, b) { return b.length - a.length; })[0];
181
- if (!matchedPath)
182
- return '';
183
- return lodash_1.default.keys(store[matchedPath])
184
- .map(function (name) { return "".concat(name, "=").concat(store[matchedPath][name].value); })
185
- .join('; ');
186
- };
187
- var findHeaderKey = function (headers, headerName) {
188
- var lowerName = lodash_1.default.toLower(headerName);
189
- return lodash_1.default.find(lodash_1.default.keys(headers), function (key) { return lodash_1.default.toLower(key) == lowerName; });
157
+ var receiveMicorSessionHeaders = function (getHeader) {
158
+ MICOR_SESSION_HEADERS.forEach(function (_a) {
159
+ var response = _a.response, request = _a.request;
160
+ receiveMicorSession(request, getHeader(response));
161
+ });
190
162
  };
191
163
  var mergeHeaders = function () {
192
164
  var headersList = [];
@@ -218,64 +190,15 @@ var mergeHeaders = function () {
218
190
  return result;
219
191
  };
220
192
  exports.mergeHeaders = mergeHeaders;
221
- var appendCookieHeader = function (current, value) {
222
- if (!current)
223
- return value;
224
- var exists = new Set();
225
- current.split(';').map(function (item) { return lodash_1.default.trim(item); }).filter(Boolean).forEach(function (item) {
226
- exists.add(lodash_1.default.toLower(item.split('=')[0]));
227
- });
228
- var additions = value.split(';').map(function (item) { return lodash_1.default.trim(item); }).filter(Boolean).filter(function (item) {
229
- return !exists.has(lodash_1.default.toLower(item.split('=')[0]));
230
- });
231
- if (additions.length == 0)
232
- return current;
233
- return "".concat(current, "; ").concat(additions.join('; '));
234
- };
235
- var appendMicorSessionHeader = function (url, headers) {
236
- var result = (0, exports.mergeHeaders)(headers);
237
- var session = getMatchedMicorSession(url);
238
- if (!session)
239
- return result;
240
- var headerKey = findHeaderKey(result, MICOR_SESSION_REQUEST_HEADER) || MICOR_SESSION_REQUEST_HEADER;
241
- var oldHeaderValue = result[headerKey];
242
- result[headerKey] = appendCookieHeader(oldHeaderValue, session);
243
- return result;
244
- };
245
193
  var setXHRHeaders = function (xhr, headers) {
246
194
  var requestHeaders = (0, exports.mergeHeaders)(headers);
247
195
  lodash_1.default.keys(requestHeaders).forEach(function (key) { return xhr.setRequestHeader(key, requestHeaders[key]); });
248
196
  };
249
197
  exports.setXHRHeaders = setXHRHeaders;
250
- var clearMicorSession = function (path) {
251
- if (!lodash_1.default.isString(path)) {
252
- sessionStorage.removeItem(MICOR_SESSION_STORAGE);
253
- return;
254
- }
255
- var store = readMicorSessionStore();
256
- delete store[normalizePath(path)];
257
- sessionStorage.setItem(MICOR_SESSION_STORAGE, JSON.stringify(store));
258
- };
259
- var MICOR_SESSION = {
260
- requestHeader: MICOR_SESSION_REQUEST_HEADER,
261
- responseHeader: MICOR_SESSION_RESPONSE_HEADER,
262
- receive: receiveMicorSession,
263
- receiveByFetch: function (response) { return receiveMicorSession(response.headers.get(MICOR_SESSION_RESPONSE_HEADER)); },
264
- receiveByXHR: function (xhr) { return receiveMicorSession(xhr.getResponseHeader(MICOR_SESSION_RESPONSE_HEADER)); },
265
- appendHeader: appendMicorSessionHeader,
266
- get: function (path) {
267
- var store = readMicorSessionStore();
268
- if (lodash_1.default.isString(path))
269
- return store[normalizePath(path)] || {};
270
- return store;
271
- },
272
- clear: clearMicorSession,
273
- };
274
- var appendMicorSessionHeaderForRequest = function (url, headers) { return MICOR_SESSION.appendHeader(url, headers); };
275
- exports.appendMicorSessionHeaderForRequest = appendMicorSessionHeaderForRequest;
276
- var receiveMicorSessionByFetch = function (response) { return MICOR_SESSION.receiveByFetch(response); };
198
+ setMicorSessionGlobalHeaders(readMicorSessionStore());
199
+ var receiveMicorSessionByFetch = function (response) { return receiveMicorSessionHeaders(function (header) { return response.headers.get(header); }); };
277
200
  exports.receiveMicorSessionByFetch = receiveMicorSessionByFetch;
278
- var receiveMicorSessionByXHR = function (xhr) { return MICOR_SESSION.receiveByXHR(xhr); };
201
+ var receiveMicorSessionByXHR = function (xhr) { return receiveMicorSessionHeaders(function (header) { return xhr.getResponseHeader(header); }); };
279
202
  exports.receiveMicorSessionByXHR = receiveMicorSessionByXHR;
280
203
  //过滤空参数
281
204
  var filterNull = function (param) {
@@ -295,7 +218,10 @@ exports.filterNull = filterNull;
295
218
  /**
296
219
  * 将链接带入 ApiRoot
297
220
  */
221
+ var isAbsoluteURL = function (url) { return /^[a-z][a-z0-9+.-]*:/i.test(url) || lodash_1.default.startsWith(url, '//'); };
298
222
  var rewriteApiRoot = (window.API_ROOT == null || window.API_ROOT == '') ? function (url) { return url; } : function (url) {
223
+ if (isAbsoluteURL(url))
224
+ return url;
299
225
  if (lodash_1.default.startsWith(url, window.API_ROOT))
300
226
  return url;
301
227
  return "".concat(window.API_ROOT).concat(url);
@@ -326,7 +252,7 @@ if (FIXED_STORAGE) {
326
252
  }
327
253
  }
328
254
  var setFixedHeader = function (header) {
329
- var e_3, _a;
255
+ var e_2, _a;
330
256
  var keys = lodash_1.default.keys(header);
331
257
  try {
332
258
  for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
@@ -334,12 +260,12 @@ var setFixedHeader = function (header) {
334
260
  FIXED_HEADER[key] = header[key];
335
261
  }
336
262
  }
337
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
263
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
338
264
  finally {
339
265
  try {
340
266
  if (keys_2_1 && !keys_2_1.done && (_a = keys_2.return)) _a.call(keys_2);
341
267
  }
342
- finally { if (e_3) throw e_3.error; }
268
+ finally { if (e_2) throw e_2.error; }
343
269
  }
344
270
  sessionStorage.setItem(FIXED_HEADER_STROE, JSON.stringify(FIXED_HEADER));
345
271
  };
@@ -347,7 +273,7 @@ exports.setFixedHeader = setFixedHeader;
347
273
  exports.AOP_BEFORE = (0, _Support_1.globalDefault)('_VAP_BEFORE_SEND', function (url, method, headers, query) {
348
274
  var data = method == 'POST' ? (0, exports.filterNull)(query) : query;
349
275
  var resloveApiRoot = rewriteApiRoot(url);
350
- var requestHeaders = appendMicorSessionHeader(resloveApiRoot, (0, exports.mergeHeaders)(FIXED_HEADER, headers));
276
+ var requestHeaders = (0, exports.mergeHeaders)(Global_1.CONFIG.AJAX.headers, FIXED_HEADER, headers);
351
277
  if (lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeSend)) {
352
278
  return Global_1.CONFIG.AJAX.beforeSend(resloveApiRoot, method, requestHeaders, data);
353
279
  }