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 +1 -1
- package/utils/Ajax.d.ts +10 -1
- package/utils/Ajax.js +162 -38
- package/utils/XHR.js +1 -1
- package/utils/_AjaxUtil.d.ts +0 -1
- package/utils/_AjaxUtil.js +66 -140
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"vap1","version":"0.8.
|
|
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
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
119
|
-
return [4 /*yield*/, fetch(url, fetchOptions)];
|
|
190
|
+
return [4 /*yield*/, fetch(downloadUrl, options)];
|
|
120
191
|
case 1:
|
|
121
|
-
response =
|
|
192
|
+
response = _b.sent();
|
|
122
193
|
(0, _AjaxUtil_1.receiveMicorSessionByFetch)(response);
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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,
|
|
36
|
+
(0, _AjaxUtil_1.setXHRHeaders)(xhr, headers || {});
|
|
37
37
|
if (method == 'GET') {
|
|
38
38
|
xhr.send();
|
|
39
39
|
}
|
package/utils/_AjaxUtil.d.ts
CHANGED
|
@@ -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 {
|
package/utils/_AjaxUtil.js
CHANGED
|
@@ -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.
|
|
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
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
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
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
251
|
-
|
|
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
|
|
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
|
|
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 (
|
|
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 (
|
|
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 =
|
|
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
|
}
|