vap1 0.8.1 → 0.8.3

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/cems/index.d.ts CHANGED
@@ -195,6 +195,7 @@ export declare const regExpTest: RegExpTest;
195
195
  export declare const callWhereWhileFunc: CallWhereWhileFunc;
196
196
  export declare const getApiData: GetApiData;
197
197
  export declare const getUUIDFor16: GetUUIDFor16;
198
+ export declare const getApiDataXMLHttpRequest: GetApiDataXMLHttpRequest;
198
199
  export declare const isOpenInCemsProject: boolean;
199
200
  export declare const ChartBase: ChartBaseComponent;
200
201
  export declare const ChartBar: ChartBarComponent;
package/cems/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DLabel = exports.DInput = exports.DDynamicTreeSelect = exports.DDynamicSelect = exports.DDatePicker = exports.DColorPicker = exports.DCheckboxGroup = exports.DCheckbox = exports.DButton = exports.DApiTable = exports.DForm = exports.CForm = exports.formatCols = exports.formatColumns = exports.useDApiGlobal = exports.useDApi = exports.useDModals = exports.getReload = exports.AjaxPostData = exports.Patch = exports.DivWidth = exports.Sensitive = exports.DModalInfo = exports.DInfo = exports.DModalTable = exports.DTable = exports.CUpload = exports.ChartPie = exports.ChartBar = exports.ChartBase = exports.isOpenInCemsProject = exports.getUUIDFor16 = exports.getApiData = exports.callWhereWhileFunc = exports.regExpTest = exports.convertOptions = exports.initSchema = exports.rsa = exports.aesDecrypted = exports.aes = exports.md5 = exports.validator = exports.getOrgFlagByTreeIconNum = exports.getTreeIconNumByOrgFlag = exports.CustomPagination = exports.AsyncSelect = exports.EasyuiTree = exports.CardTable = exports.UTILS = exports.COMPONENTS = void 0;
4
- exports.registerCustomComponent = exports.registerComponent = exports.CustomLibrary = exports.ComponentLibrary = exports.useDForm = exports.convertArrayToObject = exports.convertObjectToArray = exports.compareVersion = exports.uuid = exports.checkIpPort = exports.checkIpRange = exports.checkIPRangeIntersect = exports.DDrawer = exports.DIcon = exports.DDiv = exports.DCol = exports.DUpload = exports.DTree = exports.DTimePicker = exports.DPTable = exports.DTab = exports.DSwitch = exports.DSlider = exports.DSelect = exports.DSCTable = exports.DRadio = void 0;
3
+ exports.DInput = exports.DDynamicTreeSelect = exports.DDynamicSelect = exports.DDatePicker = exports.DColorPicker = exports.DCheckboxGroup = exports.DCheckbox = exports.DButton = exports.DApiTable = exports.DForm = exports.CForm = exports.formatCols = exports.formatColumns = exports.useDApiGlobal = exports.useDApi = exports.useDModals = exports.getReload = exports.AjaxPostData = exports.Patch = exports.DivWidth = exports.Sensitive = exports.DModalInfo = exports.DInfo = exports.DModalTable = exports.DTable = exports.CUpload = exports.ChartPie = exports.ChartBar = exports.ChartBase = exports.isOpenInCemsProject = exports.getApiDataXMLHttpRequest = exports.getUUIDFor16 = exports.getApiData = exports.callWhereWhileFunc = exports.regExpTest = exports.convertOptions = exports.initSchema = exports.rsa = exports.aesDecrypted = exports.aes = exports.md5 = exports.validator = exports.getOrgFlagByTreeIconNum = exports.getTreeIconNumByOrgFlag = exports.CustomPagination = exports.AsyncSelect = exports.EasyuiTree = exports.CardTable = exports.UTILS = exports.COMPONENTS = void 0;
4
+ exports.registerCustomComponent = exports.registerComponent = exports.CustomLibrary = exports.ComponentLibrary = exports.useDForm = exports.convertArrayToObject = exports.convertObjectToArray = exports.compareVersion = exports.uuid = exports.checkIpPort = exports.checkIpRange = exports.checkIPRangeIntersect = exports.DDrawer = exports.DIcon = exports.DDiv = exports.DCol = exports.DUpload = exports.DTree = exports.DTimePicker = exports.DPTable = exports.DTab = exports.DSwitch = exports.DSlider = exports.DSelect = exports.DSCTable = exports.DRadio = exports.DLabel = void 0;
5
5
  /**
6
6
  * 说明,如需要使用 `vap2/deps/cems` 请确保是 CEMS 应用/模块
7
7
  */
@@ -29,6 +29,7 @@ exports.regExpTest = exports.UTILS['regExpTest'];
29
29
  exports.callWhereWhileFunc = exports.UTILS['callWhereWhileFunc'];
30
30
  exports.getApiData = exports.UTILS['getApiData'];
31
31
  exports.getUUIDFor16 = exports.UTILS['getUUIDFor16'];
32
+ exports.getApiDataXMLHttpRequest = exports.UTILS['getApiDataXMLHttpRequest'];
32
33
  exports.isOpenInCemsProject = exports.UTILS['isOpenInCemsProject'];
33
34
  // export assets components
34
35
  exports.ChartBase = exports.COMPONENTS['ChartBase'];
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"vap1","version":"0.8.1","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.3","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
@@ -1,10 +1,19 @@
1
1
  import type { PlainObject } from '../basetype';
2
2
  import type { Result } from './_AjaxUtil';
3
- export { SESSION, SESSION_TIME, CLEAR, WAIT, getMicroHeader } from './_AjaxUtil';
3
+ export { SESSION, SESSION_TIME, CLEAR, WAIT } from './_AjaxUtil';
4
4
  /**
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,21 +62,30 @@ 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.getMicroHeader = 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; } });
76
86
  Object.defineProperty(exports, "SESSION_TIME", { enumerable: true, get: function () { return _AjaxUtil_2.SESSION_TIME; } });
77
87
  Object.defineProperty(exports, "CLEAR", { enumerable: true, get: function () { return _AjaxUtil_2.CLEAR; } });
78
88
  Object.defineProperty(exports, "WAIT", { enumerable: true, get: function () { return _AjaxUtil_2.WAIT; } });
79
- Object.defineProperty(exports, "getMicroHeader", { enumerable: true, get: function () { return _AjaxUtil_2.getMicroHeader; } });
80
89
  var _a = (0, _Support_1.globalDefault)('NProgress', { start: function () { }, done: function () { } }), start = _a.start, done = _a.done;
81
90
  /**
82
91
  * CATCH 方法可以捕获通用的错误并,省去 try/catch 语法
@@ -100,51 +109,167 @@ var CATCH = function (fn) { return function () { return __awaiter(void 0, void 0
100
109
  });
101
110
  }); }; };
102
111
  exports.CATCH = CATCH;
103
- /**
104
- * 建议使用 `GET` `POST` `PUT` `DELETE` `PATCH` 发送请求。
105
- *
106
- * 当满足不了需求时,可使用 `FETCH`,参考与标准 fetch 类似。
107
- */
108
- var FETCH = function (url, options) { return __awaiter(void 0, void 0, void 0, function () {
109
- var fetchOptions, response, result_1, result;
110
- return __generator(this, function (_a) {
111
- 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
+ // _ck_session 映射 SESSION,
152
+ // _ck_vap_session 映射 VAP_SESSION
153
+ var utf8Match = contentDisposition.match(/filename\*\s*=\s*(?:UTF-8'')?([^;]+)/i);
154
+ if (utf8Match) {
155
+ try {
156
+ return decodeURIComponent(lodash_1.default.trim(utf8Match[1], '" '));
157
+ }
158
+ catch (_a) {
159
+ return lodash_1.default.trim(utf8Match[1], '" ');
160
+ }
161
+ }
162
+ var filenameMatch = contentDisposition.match(/filename\s*=\s*("?)([^";]+)\1/i);
163
+ return filenameMatch ? lodash_1.default.trim(filenameMatch[2]) : '';
164
+ };
165
+ var saveBlob = function (blob, fileName) {
166
+ var nav = window.navigator;
167
+ if (lodash_1.default.isFunction(nav.msSaveOrOpenBlob)) {
168
+ nav.msSaveOrOpenBlob(blob, fileName || undefined);
169
+ return;
170
+ }
171
+ var a = document.createElement('a');
172
+ a.href = URL.createObjectURL(blob);
173
+ a.download = fileName || '';
174
+ a.style.display = 'none';
175
+ document.body.appendChild(a);
176
+ a.click();
177
+ document.body.removeChild(a);
178
+ window.setTimeout(function () { return URL.revokeObjectURL(a.href); }, 200);
179
+ };
180
+ var downloadByBlob = function (url, postParam) { return __awaiter(void 0, void 0, void 0, function () {
181
+ var method, _a, _url, _method, _headers, _data, downloadUrl, options, response, blob;
182
+ return __generator(this, function (_b) {
183
+ switch (_b.label) {
112
184
  case 0:
113
- if (options.process !== false)
114
- start();
115
- fetchOptions = lodash_1.default.merge({ method: 'GET', headers: Global_1.CONFIG.AJAX.headers, }, options);
116
- if (fetchOptions.body && lodash_1.default.isPlainObject(fetchOptions.body)) {
117
- fetchOptions.body = JSON.stringify(fetchOptions.body);
185
+ method = postParam ? 'POST' : 'GET';
186
+ _a = __read((0, _AjaxUtil_1.AOP_BEFORE)(url, method, {}, postParam || {}), 4), _url = _a[0], _method = _a[1], _headers = _a[2], _data = _a[3];
187
+ downloadUrl = (0, PageUtil_1.resolveURL)(_url);
188
+ options = { method: _method, headers: _headers };
189
+ if (_method != 'GET') {
190
+ options.body = JSON.stringify(_data);
118
191
  }
119
- fetchOptions.headers = (0, _AjaxUtil_1.appendMicorSessionHeaderForRequest)(url, fetchOptions.headers);
120
- return [4 /*yield*/, fetch(url, fetchOptions)];
192
+ return [4 /*yield*/, fetch(downloadUrl, options)];
121
193
  case 1:
122
- response = _a.sent();
194
+ response = _b.sent();
123
195
  (0, _AjaxUtil_1.receiveMicorSessionByFetch)(response);
124
- if (options.process !== false)
125
- done();
126
- if (!lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeReceive)) return [3 /*break*/, 3];
127
- return [4 /*yield*/, Global_1.CONFIG.AJAX.beforeReceive(response, url, fetchOptions)];
196
+ if (!response.ok)
197
+ throw new Error("Download failed: ".concat(response.status));
198
+ return [4 /*yield*/, response.blob()];
128
199
  case 2:
129
- result_1 = _a.sent();
130
- return [2 /*return*/, result_1];
131
- case 3:
132
- if (response.redirected && lodash_1.default.isString(response.url) && response.url.indexOf('login') >= 0) {
133
- if (window.location.href.indexOf('login') < 0) {
134
- window.location.href = response.url;
135
- return [2 /*return*/, new Promise(function (r) { return r({ code: '9999', message: '请先登录' }); })];
136
- }
137
- }
138
- if (!fetchOptions.text) return [3 /*break*/, 5];
139
- return [4 /*yield*/, response.text()];
140
- case 4: return [2 /*return*/, _a.sent()];
141
- case 5: return [4 /*yield*/, response.json()];
142
- case 6:
143
- result = _a.sent();
144
- return [2 /*return*/, result];
200
+ blob = _b.sent();
201
+ saveBlob(blob, parseDownloadFileName(response.headers.get('Content-Disposition')));
202
+ return [2 /*return*/];
145
203
  }
146
204
  });
147
205
  }); };
206
+ /**
207
+ * 下载文件。
208
+ * url: 下载接口地址
209
+ *
210
+ */
211
+ var DOWNLOAD = function (url, postParam) {
212
+ if (isMicroApp())
213
+ return downloadByBlob(url, postParam).catch(function () { return downloadByIframe(url, postParam); });
214
+ return downloadByIframe(url, postParam);
215
+ };
216
+ exports.DOWNLOAD = DOWNLOAD;
217
+ var getMicroHeader = function (path) {
218
+ return __assign({}, Global_1.CONFIG.AJAX.headers);
219
+ };
220
+ exports.getMicroHeader = getMicroHeader;
221
+ /**
222
+ * 建议使用 `GET` `POST` `PUT` `DELETE` `PATCH` 发送请求。
223
+ *
224
+ * 当满足不了需求时,可使用 `FETCH`,参考与标准 fetch 类似。
225
+ */
226
+ var FETCH = function (url_1) {
227
+ var args_1 = [];
228
+ for (var _i = 1; _i < arguments.length; _i++) {
229
+ args_1[_i - 1] = arguments[_i];
230
+ }
231
+ return __awaiter(void 0, __spreadArray([url_1], __read(args_1), false), void 0, function (url, options) {
232
+ var fetchOptions, response, result_1, result;
233
+ if (options === void 0) { options = {}; }
234
+ return __generator(this, function (_a) {
235
+ switch (_a.label) {
236
+ case 0:
237
+ if (options.process !== false)
238
+ start();
239
+ fetchOptions = lodash_1.default.merge({ method: 'GET' }, options);
240
+ fetchOptions.headers = (0, _AjaxUtil_1.mergeHeaders)(Global_1.CONFIG.AJAX.headers, options.headers || {});
241
+ if (fetchOptions.body && lodash_1.default.isPlainObject(fetchOptions.body)) {
242
+ fetchOptions.body = JSON.stringify(fetchOptions.body);
243
+ }
244
+ return [4 /*yield*/, fetch(url, fetchOptions)];
245
+ case 1:
246
+ response = _a.sent();
247
+ (0, _AjaxUtil_1.receiveMicorSessionByFetch)(response);
248
+ if (options.process !== false)
249
+ done();
250
+ if (!lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeReceive)) return [3 /*break*/, 3];
251
+ return [4 /*yield*/, Global_1.CONFIG.AJAX.beforeReceive(response, url, fetchOptions)];
252
+ case 2:
253
+ result_1 = _a.sent();
254
+ return [2 /*return*/, result_1];
255
+ case 3:
256
+ if (response.redirected && lodash_1.default.isString(response.url) && response.url.indexOf('login') >= 0) {
257
+ if (window.location.href.indexOf('login') < 0) {
258
+ window.location.href = response.url;
259
+ return [2 /*return*/, new Promise(function (r) { return r({ code: '9999', message: '请先登录' }); })];
260
+ }
261
+ }
262
+ if (!fetchOptions.text) return [3 /*break*/, 5];
263
+ return [4 /*yield*/, response.text()];
264
+ case 4: return [2 /*return*/, _a.sent()];
265
+ case 5: return [4 /*yield*/, response.json()];
266
+ case 6:
267
+ result = _a.sent();
268
+ return [2 /*return*/, result];
269
+ }
270
+ });
271
+ });
272
+ };
148
273
  exports.FETCH = FETCH;
149
274
  var _FETCH = function (method, url, param, options) {
150
275
  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/PageUtil.js CHANGED
@@ -194,7 +194,14 @@ var hasRolePrefix = function (roleCode) {
194
194
  return false;
195
195
  };
196
196
  exports.hasRolePrefix = hasRolePrefix;
197
- var DEFAULT_RESOLVER = function (url) { return url; };
197
+ // 部分产品使用虚拟前路径,目前支持 MICRO
198
+ var VIRTUAL_URL = window['__MICRO_APP_BASE_ROUTE__'];
199
+ var virtualLen = VIRTUAL_URL ? VIRTUAL_URL.length : 0;
200
+ var DEFAULT_RESOLVER = (virtualLen > 0) ? (function (url) {
201
+ if (!url.startsWith(VIRTUAL_URL))
202
+ return url;
203
+ return url.substring(virtualLen);
204
+ }) : function (url) { return url; };
198
205
  var resolveApp = appLen == 0 ? DEFAULT_RESOLVER : function (url) {
199
206
  if (!url.startsWith('/'))
200
207
  return url;
@@ -234,7 +241,8 @@ exports.resolveURL = (appLen == 0 && apiLen == 0) ? DEFAULT_RESOLVER : function
234
241
  * // 返回 '/users'
235
242
  * clearURL('/app/users');
236
243
  */
237
- exports.clearURL = appLen == 0 ? DEFAULT_RESOLVER : function (url) {
244
+ exports.clearURL = appLen == 0 ? DEFAULT_RESOLVER : function (str) {
245
+ var url = DEFAULT_RESOLVER(str);
238
246
  if (!url.startsWith(_Support_1.APP_ROOT))
239
247
  return url;
240
248
  return url.substring(appLen);
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
  }
@@ -19,10 +19,8 @@ export declare const SESSION_TIME: (url: string, second: number) => void;
19
19
  export declare const SESSION: (...urls: string[]) => Set<string>[];
20
20
  export declare const CLEAR: (...urls: string[]) => void[];
21
21
  type HeaderRecord = Record<string, string>;
22
- export declare const getMicroHeader: (path?: string) => HeaderRecord;
23
22
  export declare const mergeHeaders: (...headersList: HeadersInit[]) => HeaderRecord;
24
23
  export declare const setXHRHeaders: (xhr: XMLHttpRequest, headers: HeadersInit) => void;
25
- export declare const appendMicorSessionHeaderForRequest: (url: string, headers: HeadersInit) => HeaderRecord;
26
24
  export declare const receiveMicorSessionByFetch: (response: Response) => void;
27
25
  export declare const receiveMicorSessionByXHR: (xhr: XMLHttpRequest) => void;
28
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.getMicroHeader = 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,79 +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 getMicroHeader = function (path) {
188
- var _a;
189
- if (path === void 0) { path = window.location.pathname; }
190
- var session = getMatchedMicorSession(path);
191
- if (!session)
192
- return {};
193
- return _a = {}, _a[MICOR_SESSION_REQUEST_HEADER] = session, _a;
194
- };
195
- exports.getMicroHeader = getMicroHeader;
196
- var findHeaderKey = function (headers, headerName) {
197
- var lowerName = lodash_1.default.toLower(headerName);
198
- 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
+ });
199
162
  };
200
163
  var mergeHeaders = function () {
201
164
  var headersList = [];
@@ -227,64 +190,15 @@ var mergeHeaders = function () {
227
190
  return result;
228
191
  };
229
192
  exports.mergeHeaders = mergeHeaders;
230
- var appendCookieHeader = function (current, value) {
231
- if (!current)
232
- return value;
233
- var exists = new Set();
234
- current.split(';').map(function (item) { return lodash_1.default.trim(item); }).filter(Boolean).forEach(function (item) {
235
- exists.add(lodash_1.default.toLower(item.split('=')[0]));
236
- });
237
- var additions = value.split(';').map(function (item) { return lodash_1.default.trim(item); }).filter(Boolean).filter(function (item) {
238
- return !exists.has(lodash_1.default.toLower(item.split('=')[0]));
239
- });
240
- if (additions.length == 0)
241
- return current;
242
- return "".concat(current, "; ").concat(additions.join('; '));
243
- };
244
- var appendMicorSessionHeader = function (url, headers) {
245
- var result = (0, exports.mergeHeaders)(headers);
246
- var session = getMatchedMicorSession(url);
247
- if (!session)
248
- return result;
249
- var headerKey = findHeaderKey(result, MICOR_SESSION_REQUEST_HEADER) || MICOR_SESSION_REQUEST_HEADER;
250
- var oldHeaderValue = result[headerKey];
251
- result[headerKey] = appendCookieHeader(oldHeaderValue, session);
252
- return result;
253
- };
254
193
  var setXHRHeaders = function (xhr, headers) {
255
194
  var requestHeaders = (0, exports.mergeHeaders)(headers);
256
195
  lodash_1.default.keys(requestHeaders).forEach(function (key) { return xhr.setRequestHeader(key, requestHeaders[key]); });
257
196
  };
258
197
  exports.setXHRHeaders = setXHRHeaders;
259
- var clearMicorSession = function (path) {
260
- if (!lodash_1.default.isString(path)) {
261
- sessionStorage.removeItem(MICOR_SESSION_STORAGE);
262
- return;
263
- }
264
- var store = readMicorSessionStore();
265
- delete store[normalizePath(path)];
266
- sessionStorage.setItem(MICOR_SESSION_STORAGE, JSON.stringify(store));
267
- };
268
- var MICOR_SESSION = {
269
- requestHeader: MICOR_SESSION_REQUEST_HEADER,
270
- responseHeader: MICOR_SESSION_RESPONSE_HEADER,
271
- receive: receiveMicorSession,
272
- receiveByFetch: function (response) { return receiveMicorSession(response.headers.get(MICOR_SESSION_RESPONSE_HEADER)); },
273
- receiveByXHR: function (xhr) { return receiveMicorSession(xhr.getResponseHeader(MICOR_SESSION_RESPONSE_HEADER)); },
274
- appendHeader: appendMicorSessionHeader,
275
- get: function (path) {
276
- var store = readMicorSessionStore();
277
- if (lodash_1.default.isString(path))
278
- return store[normalizePath(path)] || {};
279
- return store;
280
- },
281
- clear: clearMicorSession,
282
- };
283
- var appendMicorSessionHeaderForRequest = function (url, headers) { return MICOR_SESSION.appendHeader(url, headers); };
284
- exports.appendMicorSessionHeaderForRequest = appendMicorSessionHeaderForRequest;
285
- 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); }); };
286
200
  exports.receiveMicorSessionByFetch = receiveMicorSessionByFetch;
287
- var receiveMicorSessionByXHR = function (xhr) { return MICOR_SESSION.receiveByXHR(xhr); };
201
+ var receiveMicorSessionByXHR = function (xhr) { return receiveMicorSessionHeaders(function (header) { return xhr.getResponseHeader(header); }); };
288
202
  exports.receiveMicorSessionByXHR = receiveMicorSessionByXHR;
289
203
  //过滤空参数
290
204
  var filterNull = function (param) {
@@ -304,7 +218,10 @@ exports.filterNull = filterNull;
304
218
  /**
305
219
  * 将链接带入 ApiRoot
306
220
  */
221
+ var isAbsoluteURL = function (url) { return /^[a-z][a-z0-9+.-]*:/i.test(url) || lodash_1.default.startsWith(url, '//'); };
307
222
  var rewriteApiRoot = (window.API_ROOT == null || window.API_ROOT == '') ? function (url) { return url; } : function (url) {
223
+ if (isAbsoluteURL(url))
224
+ return url;
308
225
  if (lodash_1.default.startsWith(url, window.API_ROOT))
309
226
  return url;
310
227
  return "".concat(window.API_ROOT).concat(url);
@@ -335,7 +252,7 @@ if (FIXED_STORAGE) {
335
252
  }
336
253
  }
337
254
  var setFixedHeader = function (header) {
338
- var e_3, _a;
255
+ var e_2, _a;
339
256
  var keys = lodash_1.default.keys(header);
340
257
  try {
341
258
  for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
@@ -343,12 +260,12 @@ var setFixedHeader = function (header) {
343
260
  FIXED_HEADER[key] = header[key];
344
261
  }
345
262
  }
346
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
263
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
347
264
  finally {
348
265
  try {
349
266
  if (keys_2_1 && !keys_2_1.done && (_a = keys_2.return)) _a.call(keys_2);
350
267
  }
351
- finally { if (e_3) throw e_3.error; }
268
+ finally { if (e_2) throw e_2.error; }
352
269
  }
353
270
  sessionStorage.setItem(FIXED_HEADER_STROE, JSON.stringify(FIXED_HEADER));
354
271
  };
@@ -356,7 +273,7 @@ exports.setFixedHeader = setFixedHeader;
356
273
  exports.AOP_BEFORE = (0, _Support_1.globalDefault)('_VAP_BEFORE_SEND', function (url, method, headers, query) {
357
274
  var data = method == 'POST' ? (0, exports.filterNull)(query) : query;
358
275
  var resloveApiRoot = rewriteApiRoot(url);
359
- var requestHeaders = appendMicorSessionHeader(resloveApiRoot, (0, exports.mergeHeaders)(FIXED_HEADER, headers));
276
+ var requestHeaders = (0, exports.mergeHeaders)(Global_1.CONFIG.AJAX.headers, FIXED_HEADER, headers);
360
277
  if (lodash_1.default.isFunction(Global_1.CONFIG.AJAX.beforeSend)) {
361
278
  return Global_1.CONFIG.AJAX.beforeSend(resloveApiRoot, method, requestHeaders, data);
362
279
  }