@delon/mock 12.4.2 → 13.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2015/mock.js → esm2020/mock.mjs} +0 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/{esm2015/src/interface.js → esm2020/src/interface.mjs} +0 -0
- package/{esm2015/src/mock.config.js → esm2020/src/mock.config.mjs} +0 -0
- package/esm2020/src/mock.interceptor.mjs +109 -0
- package/esm2020/src/mock.module.mjs +30 -0
- package/esm2020/src/mock.service.mjs +140 -0
- package/{esm2015/src/status.error.js → esm2020/src/status.error.mjs} +1 -1
- package/fesm2015/{mock.js → mock.mjs} +21 -21
- package/fesm2015/mock.mjs.map +1 -0
- package/fesm2020/mock.mjs +292 -0
- package/fesm2020/mock.mjs.map +1 -0
- package/mock.d.ts +1 -0
- package/package.json +21 -9
- package/src/mock.interceptor.d.ts +3 -0
- package/src/mock.module.d.ts +4 -0
- package/src/mock.service.d.ts +3 -0
- package/src/status.error.d.ts +1 -1
- package/bundles/mock.umd.js +0 -338
- package/bundles/mock.umd.js.map +0 -1
- package/esm2015/src/mock.interceptor.js +0 -109
- package/esm2015/src/mock.module.js +0 -25
- package/esm2015/src/mock.service.js +0 -144
- package/fesm2015/mock.js.map +0 -1
- package/mock.metadata.json +0 -1
package/bundles/mock.umd.js
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license ng-alain(cipchk@qq.com) v12.4.2
|
|
3
|
-
* (c) 2020 cipchk https://ng-alain.com/
|
|
4
|
-
* License: MIT
|
|
5
|
-
*/
|
|
6
|
-
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@delon/util/config'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@delon/util/other')) :
|
|
8
|
-
typeof define === 'function' && define.amd ? define('@delon/mock', ['exports', '@angular/core', '@delon/util/config', '@angular/common/http', 'rxjs', 'rxjs/operators', '@delon/util/other'], factory) :
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.delon = global.delon || {}, global.delon.mock = {}), global.ng.core, global.i1, global.ng.common.http, global.rxjs, global.rxjs.operators, global.other));
|
|
10
|
-
})(this, (function (exports, i0, i1, http, rxjs, operators, other) { 'use strict';
|
|
11
|
-
|
|
12
|
-
function _interopNamespace(e) {
|
|
13
|
-
if (e && e.__esModule) return e;
|
|
14
|
-
var n = Object.create(null);
|
|
15
|
-
if (e) {
|
|
16
|
-
Object.keys(e).forEach(function (k) {
|
|
17
|
-
if (k !== 'default') {
|
|
18
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () { return e[k]; }
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
n["default"] = e;
|
|
27
|
-
return Object.freeze(n);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
|
|
31
|
-
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
|
32
|
-
|
|
33
|
-
var MockOptions = /** @class */ (function () {
|
|
34
|
-
function MockOptions() {
|
|
35
|
-
}
|
|
36
|
-
return MockOptions;
|
|
37
|
-
}());
|
|
38
|
-
|
|
39
|
-
var MockStatusError = /** @class */ (function () {
|
|
40
|
-
function MockStatusError(status, error) {
|
|
41
|
-
this.status = status;
|
|
42
|
-
this.error = error;
|
|
43
|
-
}
|
|
44
|
-
return MockStatusError;
|
|
45
|
-
}());
|
|
46
|
-
|
|
47
|
-
var MOCK_DEFULAT_CONFIG = {
|
|
48
|
-
delay: 300,
|
|
49
|
-
force: false,
|
|
50
|
-
log: true,
|
|
51
|
-
executeOtherInterceptors: true
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
var MockService = /** @class */ (function () {
|
|
55
|
-
function MockService(cogSrv, options) {
|
|
56
|
-
this.cached = [];
|
|
57
|
-
this.config = cogSrv.merge('mock', MOCK_DEFULAT_CONFIG);
|
|
58
|
-
this.setData(options === null || options === void 0 ? void 0 : options.data);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Reset request data
|
|
62
|
-
*
|
|
63
|
-
* 重新设置请求数据
|
|
64
|
-
*/
|
|
65
|
-
MockService.prototype.setData = function (data) {
|
|
66
|
-
this.applyMock(data);
|
|
67
|
-
};
|
|
68
|
-
// #region parse rule
|
|
69
|
-
MockService.prototype.applyMock = function (data) {
|
|
70
|
-
this.cached = [];
|
|
71
|
-
try {
|
|
72
|
-
this.realApplyMock(data);
|
|
73
|
-
}
|
|
74
|
-
catch (e) {
|
|
75
|
-
this.outputError(e);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
MockService.prototype.realApplyMock = function (data) {
|
|
79
|
-
var _this = this;
|
|
80
|
-
if (!data)
|
|
81
|
-
return;
|
|
82
|
-
Object.keys(data).forEach(function (key) {
|
|
83
|
-
var rules = data[key];
|
|
84
|
-
if (!rules)
|
|
85
|
-
return;
|
|
86
|
-
Object.keys(rules).forEach(function (ruleKey) {
|
|
87
|
-
var value = rules[ruleKey];
|
|
88
|
-
if (!(typeof value === 'function' || typeof value === 'object' || typeof value === 'string')) {
|
|
89
|
-
throw Error("mock value of [" + key + "-" + ruleKey + "] should be function or object or string, but got " + typeof value);
|
|
90
|
-
}
|
|
91
|
-
var rule = _this.genRule(ruleKey, value);
|
|
92
|
-
if (['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH', 'OPTIONS'].indexOf(rule.method) === -1) {
|
|
93
|
-
throw Error("method of " + key + "-" + ruleKey + " is not valid");
|
|
94
|
-
}
|
|
95
|
-
var item = _this.cached.find(function (w) { return w.url === rule.url && w.method === rule.method; });
|
|
96
|
-
if (item) {
|
|
97
|
-
item.callback = rule.callback;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
_this.cached.push(rule);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
// regular ordering
|
|
105
|
-
this.cached.sort(function (a, b) { return (b.martcher || '').toString().length - (a.martcher || '').toString().length; });
|
|
106
|
-
};
|
|
107
|
-
MockService.prototype.genRule = function (key, callback) {
|
|
108
|
-
var method = 'GET';
|
|
109
|
-
var url = key;
|
|
110
|
-
if (key.indexOf(' ') > -1) {
|
|
111
|
-
var splited = key.split(' ');
|
|
112
|
-
method = splited[0].toLowerCase();
|
|
113
|
-
url = splited[1];
|
|
114
|
-
}
|
|
115
|
-
var martcher = null;
|
|
116
|
-
var segments = [];
|
|
117
|
-
if (~url.indexOf(':')) {
|
|
118
|
-
segments = url
|
|
119
|
-
.split('/')
|
|
120
|
-
.filter(function (segment) { return segment.startsWith(':'); })
|
|
121
|
-
.map(function (v) { return v.substring(1); });
|
|
122
|
-
var reStr = url
|
|
123
|
-
.split('/')
|
|
124
|
-
.map(function (segment) { return (segment.startsWith(':') ? "([^/]+)" : segment); })
|
|
125
|
-
.join('/');
|
|
126
|
-
martcher = new RegExp("^" + reStr, 'i');
|
|
127
|
-
}
|
|
128
|
-
else if (/(\([^)]+\))/i.test(url)) {
|
|
129
|
-
martcher = new RegExp(url, 'i');
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
url: url,
|
|
133
|
-
martcher: martcher,
|
|
134
|
-
segments: segments,
|
|
135
|
-
callback: callback,
|
|
136
|
-
method: method.toUpperCase()
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
MockService.prototype.outputError = function (error) {
|
|
140
|
-
var filePath = error.message.split(': ')[0];
|
|
141
|
-
var errors = error.stack
|
|
142
|
-
.split('\n')
|
|
143
|
-
.filter(function (line) { return line.trim().indexOf('at ') !== 0; })
|
|
144
|
-
.map(function (line) { return line.replace(filePath + ": ", ''); });
|
|
145
|
-
errors.splice(1, 0, '');
|
|
146
|
-
console.group();
|
|
147
|
-
console.warn("==========Failed to parse mock config.==========");
|
|
148
|
-
console.log(errors.join('\n'));
|
|
149
|
-
console.groupEnd();
|
|
150
|
-
throw error;
|
|
151
|
-
};
|
|
152
|
-
// #endregion
|
|
153
|
-
MockService.prototype.getRule = function (method, url) {
|
|
154
|
-
method = (method || 'GET').toUpperCase();
|
|
155
|
-
var params = {};
|
|
156
|
-
var list = this.cached.filter(function (w) { return w.method === method && (w.martcher ? w.martcher.test(url) : w.url === url); });
|
|
157
|
-
if (list.length === 0)
|
|
158
|
-
return null;
|
|
159
|
-
var ret = list.find(function (w) { return w.url === url; }) || list[0];
|
|
160
|
-
if (ret.martcher) {
|
|
161
|
-
var execArr = ret.martcher.exec(url);
|
|
162
|
-
execArr.slice(1).map(function (value, index) {
|
|
163
|
-
params[ret.segments[index]] = value;
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
return {
|
|
167
|
-
url: url,
|
|
168
|
-
method: ret.method,
|
|
169
|
-
params: params,
|
|
170
|
-
callback: ret.callback
|
|
171
|
-
};
|
|
172
|
-
};
|
|
173
|
-
MockService.prototype.clearCache = function () {
|
|
174
|
-
this.cached = [];
|
|
175
|
-
};
|
|
176
|
-
Object.defineProperty(MockService.prototype, "rules", {
|
|
177
|
-
get: function () {
|
|
178
|
-
return this.cached;
|
|
179
|
-
},
|
|
180
|
-
enumerable: false,
|
|
181
|
-
configurable: true
|
|
182
|
-
});
|
|
183
|
-
MockService.prototype.ngOnDestroy = function () {
|
|
184
|
-
this.clearCache();
|
|
185
|
-
};
|
|
186
|
-
return MockService;
|
|
187
|
-
}());
|
|
188
|
-
MockService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MockService_Factory() { return new MockService(i0__namespace.ɵɵinject(i1__namespace.AlainConfigService), i0__namespace.ɵɵinject(MockOptions)); }, token: MockService, providedIn: "root" });
|
|
189
|
-
MockService.decorators = [
|
|
190
|
-
{ type: i0.Injectable, args: [{ providedIn: 'root' },] }
|
|
191
|
-
];
|
|
192
|
-
MockService.ctorParameters = function () { return [
|
|
193
|
-
{ type: i1.AlainConfigService },
|
|
194
|
-
{ type: MockOptions }
|
|
195
|
-
]; };
|
|
196
|
-
|
|
197
|
-
var HttpMockInterceptorHandler = /** @class */ (function () {
|
|
198
|
-
function HttpMockInterceptorHandler(next, interceptor) {
|
|
199
|
-
this.next = next;
|
|
200
|
-
this.interceptor = interceptor;
|
|
201
|
-
}
|
|
202
|
-
HttpMockInterceptorHandler.prototype.handle = function (req) {
|
|
203
|
-
return this.interceptor.intercept(req, this.next);
|
|
204
|
-
};
|
|
205
|
-
return HttpMockInterceptorHandler;
|
|
206
|
-
}());
|
|
207
|
-
var MockInterceptor = /** @class */ (function () {
|
|
208
|
-
function MockInterceptor(injector) {
|
|
209
|
-
this.injector = injector;
|
|
210
|
-
}
|
|
211
|
-
MockInterceptor.prototype.intercept = function (req, next) {
|
|
212
|
-
var src = this.injector.get(MockService);
|
|
213
|
-
var config = src.config;
|
|
214
|
-
var rule = src.getRule(req.method, req.url.split('?')[0]);
|
|
215
|
-
if (!rule && !config.force) {
|
|
216
|
-
return next.handle(req);
|
|
217
|
-
}
|
|
218
|
-
var res;
|
|
219
|
-
switch (typeof rule.callback) {
|
|
220
|
-
case 'function':
|
|
221
|
-
var mockRequest_1 = {
|
|
222
|
-
original: req,
|
|
223
|
-
body: req.body,
|
|
224
|
-
queryString: {},
|
|
225
|
-
headers: {},
|
|
226
|
-
params: rule.params
|
|
227
|
-
};
|
|
228
|
-
var urlParams = req.url.split('?');
|
|
229
|
-
if (urlParams.length > 1) {
|
|
230
|
-
urlParams[1].split('&').forEach(function (item) {
|
|
231
|
-
var itemArr = item.split('=');
|
|
232
|
-
var key = itemArr[0];
|
|
233
|
-
var value = itemArr[1];
|
|
234
|
-
// is array
|
|
235
|
-
if (Object.keys(mockRequest_1.queryString).includes(key)) {
|
|
236
|
-
if (!Array.isArray(mockRequest_1.queryString[key])) {
|
|
237
|
-
mockRequest_1.queryString[key] = [mockRequest_1.queryString[key]];
|
|
238
|
-
}
|
|
239
|
-
mockRequest_1.queryString[key].push(value);
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
mockRequest_1.queryString[key] = value;
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
req.params.keys().forEach(function (key) { return (mockRequest_1.queryString[key] = req.params.get(key)); });
|
|
247
|
-
req.headers.keys().forEach(function (key) { return (mockRequest_1.headers[key] = req.headers.get(key)); });
|
|
248
|
-
try {
|
|
249
|
-
res = rule.callback.call(this, mockRequest_1);
|
|
250
|
-
}
|
|
251
|
-
catch (e) {
|
|
252
|
-
res = new http.HttpErrorResponse({
|
|
253
|
-
url: req.url,
|
|
254
|
-
headers: req.headers,
|
|
255
|
-
status: e instanceof MockStatusError ? e.status : 400,
|
|
256
|
-
statusText: e.statusText || 'Unknown Error',
|
|
257
|
-
error: e.error
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
break;
|
|
261
|
-
default:
|
|
262
|
-
res = rule.callback;
|
|
263
|
-
break;
|
|
264
|
-
}
|
|
265
|
-
if (!(res instanceof http.HttpResponseBase)) {
|
|
266
|
-
res = new http.HttpResponse({
|
|
267
|
-
status: 200,
|
|
268
|
-
url: req.url,
|
|
269
|
-
body: res
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
if (res.body) {
|
|
273
|
-
res.body = other.deepCopy(res.body);
|
|
274
|
-
}
|
|
275
|
-
if (config.log) {
|
|
276
|
-
console.log("%c\uD83D\uDC7D" + req.method + "->" + req.urlWithParams + "->request", 'background:#000;color:#bada55', req);
|
|
277
|
-
console.log("%c\uD83D\uDC7D" + req.method + "->" + req.urlWithParams + "->response", 'background:#000;color:#bada55', res);
|
|
278
|
-
}
|
|
279
|
-
var res$ = res instanceof http.HttpErrorResponse ? rxjs.throwError(res) : rxjs.of(res);
|
|
280
|
-
if (config.executeOtherInterceptors) {
|
|
281
|
-
var interceptors = this.injector.get(http.HTTP_INTERCEPTORS, []);
|
|
282
|
-
var lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);
|
|
283
|
-
if (lastInterceptors.length > 0) {
|
|
284
|
-
var chain = lastInterceptors.reduceRight(function (_next, _interceptor) { return new HttpMockInterceptorHandler(_next, _interceptor); }, {
|
|
285
|
-
handle: function () { return res$; }
|
|
286
|
-
});
|
|
287
|
-
return chain.handle(req).pipe(operators.delay(config.delay));
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return res$.pipe(operators.delay(config.delay));
|
|
291
|
-
};
|
|
292
|
-
return MockInterceptor;
|
|
293
|
-
}());
|
|
294
|
-
MockInterceptor.decorators = [
|
|
295
|
-
{ type: i0.Injectable }
|
|
296
|
-
];
|
|
297
|
-
MockInterceptor.ctorParameters = function () { return [
|
|
298
|
-
{ type: i0.Injector }
|
|
299
|
-
]; };
|
|
300
|
-
|
|
301
|
-
var DelonMockModule = /** @class */ (function () {
|
|
302
|
-
function DelonMockModule() {
|
|
303
|
-
}
|
|
304
|
-
DelonMockModule.forRoot = function (options) {
|
|
305
|
-
return {
|
|
306
|
-
ngModule: DelonMockModule,
|
|
307
|
-
providers: [
|
|
308
|
-
{ provide: MockOptions, useValue: options },
|
|
309
|
-
{ provide: http.HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }
|
|
310
|
-
]
|
|
311
|
-
};
|
|
312
|
-
};
|
|
313
|
-
DelonMockModule.forChild = function () {
|
|
314
|
-
return {
|
|
315
|
-
ngModule: DelonMockModule,
|
|
316
|
-
providers: [{ provide: http.HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
|
|
317
|
-
};
|
|
318
|
-
};
|
|
319
|
-
return DelonMockModule;
|
|
320
|
-
}());
|
|
321
|
-
DelonMockModule.decorators = [
|
|
322
|
-
{ type: i0.NgModule, args: [{},] }
|
|
323
|
-
];
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Generated bundle index. Do not edit.
|
|
327
|
-
*/
|
|
328
|
-
|
|
329
|
-
exports.DelonMockModule = DelonMockModule;
|
|
330
|
-
exports.MockInterceptor = MockInterceptor;
|
|
331
|
-
exports.MockOptions = MockOptions;
|
|
332
|
-
exports.MockService = MockService;
|
|
333
|
-
exports.MockStatusError = MockStatusError;
|
|
334
|
-
|
|
335
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
336
|
-
|
|
337
|
-
}));
|
|
338
|
-
//# sourceMappingURL=mock.umd.js.map
|
package/bundles/mock.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.umd.js","sources":["../../../../packages/mock/src/interface.ts","../../../../packages/mock/src/status.error.ts","../../../../packages/mock/src/mock.config.ts","../../../../packages/mock/src/mock.service.ts","../../../../packages/mock/src/mock.interceptor.ts","../../../../packages/mock/src/mock.module.ts","../../../../packages/mock/mock.ts"],"sourcesContent":["import { HttpRequest } from '@angular/common/http';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport class MockOptions {\n data?: NzSafeAny;\n}\n\nexport interface MockCachedRule {\n [key: string]: NzSafeAny;\n\n method: string;\n\n url: string;\n\n martcher: RegExp | null;\n\n segments: string[];\n\n callback(req: MockRequest): NzSafeAny;\n}\n\nexport interface MockRule {\n [key: string]: NzSafeAny;\n\n method: string;\n\n url: string;\n\n /** 路由参数 */\n params?: NzSafeAny;\n\n callback(req: MockRequest): NzSafeAny;\n}\n\nexport interface MockRequest {\n /** 路由参数 */\n params?: NzSafeAny;\n /** URL参数 */\n queryString?: NzSafeAny;\n headers?: NzSafeAny;\n body?: NzSafeAny;\n /** 原始 `HttpRequest` */\n original: HttpRequest<NzSafeAny>;\n}\n","import type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport class MockStatusError {\n statusText: string;\n\n constructor(public status: number, public error?: NzSafeAny) {}\n}\n","import { AlainMockConfig } from '@delon/util/config';\n\nexport const MOCK_DEFULAT_CONFIG: AlainMockConfig = {\n delay: 300,\n force: false,\n log: true,\n executeOtherInterceptors: true\n};\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { AlainConfigService, AlainMockConfig } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { MockCachedRule, MockOptions, MockRule } from './interface';\nimport { MOCK_DEFULAT_CONFIG } from './mock.config';\n\n@Injectable({ providedIn: 'root' })\nexport class MockService implements OnDestroy {\n private cached: MockCachedRule[] = [];\n readonly config: AlainMockConfig;\n\n constructor(cogSrv: AlainConfigService, options: MockOptions) {\n this.config = cogSrv.merge('mock', MOCK_DEFULAT_CONFIG)!;\n this.setData(options?.data);\n }\n\n /**\n * Reset request data\n *\n * 重新设置请求数据\n */\n setData(data: NzSafeAny): void {\n this.applyMock(data);\n }\n\n // #region parse rule\n\n private applyMock(data: NzSafeAny): void {\n this.cached = [];\n try {\n this.realApplyMock(data);\n } catch (e) {\n this.outputError(e);\n }\n }\n\n private realApplyMock(data: NzSafeAny): void {\n if (!data) return;\n Object.keys(data).forEach((key: string) => {\n const rules = data[key];\n if (!rules) return;\n Object.keys(rules).forEach((ruleKey: string) => {\n const value = rules[ruleKey];\n if (!(typeof value === 'function' || typeof value === 'object' || typeof value === 'string')) {\n throw Error(\n `mock value of [${key}-${ruleKey}] should be function or object or string, but got ${typeof value}`\n );\n }\n const rule = this.genRule(ruleKey, value);\n if (['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH', 'OPTIONS'].indexOf(rule.method) === -1) {\n throw Error(`method of ${key}-${ruleKey} is not valid`);\n }\n const item = this.cached.find(w => w.url === rule.url && w.method === rule.method);\n if (item) {\n item.callback = rule.callback;\n } else {\n this.cached.push(rule);\n }\n });\n });\n // regular ordering\n this.cached.sort((a, b) => (b.martcher || '').toString().length - (a.martcher || '').toString().length);\n }\n\n private genRule(key: string, callback: NzSafeAny): MockCachedRule {\n let method = 'GET';\n let url = key;\n\n if (key.indexOf(' ') > -1) {\n const splited = key.split(' ');\n method = splited[0].toLowerCase();\n url = splited[1];\n }\n\n let martcher: RegExp | null = null;\n let segments: string[] = [];\n if (~url.indexOf(':')) {\n segments = url!\n .split('/')\n .filter(segment => segment.startsWith(':'))\n .map(v => v.substring(1));\n const reStr = url!\n .split('/')\n .map(segment => (segment.startsWith(':') ? `([^/]+)` : segment))\n .join('/');\n martcher = new RegExp(`^${reStr}`, 'i');\n } else if (/(\\([^)]+\\))/i.test(url)) {\n martcher = new RegExp(url, 'i');\n }\n\n return {\n url,\n martcher,\n segments,\n callback,\n method: method.toUpperCase()\n };\n }\n\n private outputError(error: NzSafeAny): void {\n const filePath = error.message.split(': ')[0];\n const errors = (error.stack as string)\n .split('\\n')\n .filter(line => line.trim().indexOf('at ') !== 0)\n .map(line => line.replace(`${filePath}: `, ''));\n errors.splice(1, 0, '');\n\n console.group();\n console.warn(`==========Failed to parse mock config.==========`);\n console.log(errors.join('\\n'));\n console.groupEnd();\n\n throw error;\n }\n\n // #endregion\n\n getRule(method: string, url: string): MockRule | null {\n method = (method || 'GET').toUpperCase();\n const params: NzSafeAny = {};\n const list = this.cached.filter(w => w.method === method && (w.martcher ? w.martcher.test(url) : w.url === url));\n if (list.length === 0) return null;\n const ret = list.find(w => w.url === url) || list[0];\n if (ret.martcher) {\n const execArr = ret.martcher.exec(url);\n execArr!.slice(1).map((value: string, index: number) => {\n params[ret.segments[index]] = value;\n });\n }\n return {\n url,\n method: ret.method,\n params,\n callback: ret.callback\n };\n }\n\n clearCache(): void {\n this.cached = [];\n }\n\n get rules(): MockCachedRule[] {\n return this.cached;\n }\n\n ngOnDestroy(): void {\n this.clearCache();\n }\n}\n","import {\n HttpBackend,\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpResponseBase,\n HTTP_INTERCEPTORS\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable, of, throwError } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\nimport { deepCopy } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { MockRequest } from './interface';\nimport { MockService } from './mock.service';\nimport { MockStatusError } from './status.error';\n\nclass HttpMockInterceptorHandler implements HttpHandler {\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) {}\n\n handle(req: HttpRequest<NzSafeAny>): Observable<HttpEvent<NzSafeAny>> {\n return this.interceptor.intercept(req, this.next);\n }\n}\n\n@Injectable()\nexport class MockInterceptor implements HttpInterceptor {\n constructor(private injector: Injector) {}\n\n intercept(req: HttpRequest<NzSafeAny>, next: HttpHandler): Observable<HttpEvent<NzSafeAny>> {\n const src = this.injector.get(MockService);\n const config = src.config;\n const rule = src.getRule(req.method, req.url.split('?')[0]);\n if (!rule && !config.force) {\n return next.handle(req);\n }\n\n let res: NzSafeAny;\n switch (typeof rule!.callback) {\n case 'function':\n const mockRequest: MockRequest = {\n original: req,\n body: req.body,\n queryString: {},\n headers: {},\n params: rule!.params\n };\n const urlParams = req.url.split('?');\n if (urlParams.length > 1) {\n urlParams[1].split('&').forEach(item => {\n const itemArr = item.split('=');\n const key = itemArr[0];\n const value = itemArr[1];\n // is array\n if (Object.keys(mockRequest.queryString).includes(key)) {\n if (!Array.isArray(mockRequest.queryString[key])) {\n mockRequest.queryString[key] = [mockRequest.queryString[key]];\n }\n mockRequest.queryString[key].push(value);\n } else {\n mockRequest.queryString[key] = value;\n }\n });\n }\n req.params.keys().forEach(key => (mockRequest.queryString[key] = req.params.get(key)));\n req.headers.keys().forEach(key => (mockRequest.headers[key] = req.headers.get(key)));\n\n try {\n res = rule!.callback.call(this, mockRequest);\n } catch (e) {\n res = new HttpErrorResponse({\n url: req.url,\n headers: req.headers,\n status: e instanceof MockStatusError ? e.status : 400,\n statusText: e.statusText || 'Unknown Error',\n error: e.error\n });\n }\n break;\n default:\n res = rule!.callback;\n break;\n }\n\n if (!(res instanceof HttpResponseBase)) {\n res = new HttpResponse({\n status: 200,\n url: req.url,\n body: res\n });\n }\n\n if (res.body) {\n res.body = deepCopy(res.body);\n }\n\n if (config.log) {\n console.log(`%c👽${req.method}->${req.urlWithParams}->request`, 'background:#000;color:#bada55', req);\n console.log(`%c👽${req.method}->${req.urlWithParams}->response`, 'background:#000;color:#bada55', res);\n }\n\n const res$ = res instanceof HttpErrorResponse ? throwError(res) : of(res);\n\n if (config.executeOtherInterceptors) {\n const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);\n const lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);\n if (lastInterceptors.length > 0) {\n const chain = lastInterceptors.reduceRight(\n (_next, _interceptor) => new HttpMockInterceptorHandler(_next, _interceptor),\n {\n handle: () => res$\n } as HttpBackend\n );\n return chain.handle(req).pipe(delay(config.delay!));\n }\n }\n\n return res$.pipe(delay(config.delay!));\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { MockOptions } from './interface';\nimport { MockInterceptor } from './mock.interceptor';\n\n@NgModule({})\nexport class DelonMockModule {\n static forRoot(options?: MockOptions): ModuleWithProviders<DelonMockModule> {\n return {\n ngModule: DelonMockModule,\n providers: [\n { provide: MockOptions, useValue: options },\n { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<DelonMockModule> {\n return {\n ngModule: DelonMockModule,\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Injectable","AlainConfigService","HttpErrorResponse","HttpResponseBase","HttpResponse","deepCopy","throwError","of","HTTP_INTERCEPTORS","delay","Injector","NgModule"],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse, HttpResponse, HttpResponseBase, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
|
-
import { Injectable, Injector } from '@angular/core';
|
|
3
|
-
import { of, throwError } from 'rxjs';
|
|
4
|
-
import { delay } from 'rxjs/operators';
|
|
5
|
-
import { deepCopy } from '@delon/util/other';
|
|
6
|
-
import { MockService } from './mock.service';
|
|
7
|
-
import { MockStatusError } from './status.error';
|
|
8
|
-
class HttpMockInterceptorHandler {
|
|
9
|
-
constructor(next, interceptor) {
|
|
10
|
-
this.next = next;
|
|
11
|
-
this.interceptor = interceptor;
|
|
12
|
-
}
|
|
13
|
-
handle(req) {
|
|
14
|
-
return this.interceptor.intercept(req, this.next);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export class MockInterceptor {
|
|
18
|
-
constructor(injector) {
|
|
19
|
-
this.injector = injector;
|
|
20
|
-
}
|
|
21
|
-
intercept(req, next) {
|
|
22
|
-
const src = this.injector.get(MockService);
|
|
23
|
-
const config = src.config;
|
|
24
|
-
const rule = src.getRule(req.method, req.url.split('?')[0]);
|
|
25
|
-
if (!rule && !config.force) {
|
|
26
|
-
return next.handle(req);
|
|
27
|
-
}
|
|
28
|
-
let res;
|
|
29
|
-
switch (typeof rule.callback) {
|
|
30
|
-
case 'function':
|
|
31
|
-
const mockRequest = {
|
|
32
|
-
original: req,
|
|
33
|
-
body: req.body,
|
|
34
|
-
queryString: {},
|
|
35
|
-
headers: {},
|
|
36
|
-
params: rule.params
|
|
37
|
-
};
|
|
38
|
-
const urlParams = req.url.split('?');
|
|
39
|
-
if (urlParams.length > 1) {
|
|
40
|
-
urlParams[1].split('&').forEach(item => {
|
|
41
|
-
const itemArr = item.split('=');
|
|
42
|
-
const key = itemArr[0];
|
|
43
|
-
const value = itemArr[1];
|
|
44
|
-
// is array
|
|
45
|
-
if (Object.keys(mockRequest.queryString).includes(key)) {
|
|
46
|
-
if (!Array.isArray(mockRequest.queryString[key])) {
|
|
47
|
-
mockRequest.queryString[key] = [mockRequest.queryString[key]];
|
|
48
|
-
}
|
|
49
|
-
mockRequest.queryString[key].push(value);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
mockRequest.queryString[key] = value;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
req.params.keys().forEach(key => (mockRequest.queryString[key] = req.params.get(key)));
|
|
57
|
-
req.headers.keys().forEach(key => (mockRequest.headers[key] = req.headers.get(key)));
|
|
58
|
-
try {
|
|
59
|
-
res = rule.callback.call(this, mockRequest);
|
|
60
|
-
}
|
|
61
|
-
catch (e) {
|
|
62
|
-
res = new HttpErrorResponse({
|
|
63
|
-
url: req.url,
|
|
64
|
-
headers: req.headers,
|
|
65
|
-
status: e instanceof MockStatusError ? e.status : 400,
|
|
66
|
-
statusText: e.statusText || 'Unknown Error',
|
|
67
|
-
error: e.error
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
res = rule.callback;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
if (!(res instanceof HttpResponseBase)) {
|
|
76
|
-
res = new HttpResponse({
|
|
77
|
-
status: 200,
|
|
78
|
-
url: req.url,
|
|
79
|
-
body: res
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if (res.body) {
|
|
83
|
-
res.body = deepCopy(res.body);
|
|
84
|
-
}
|
|
85
|
-
if (config.log) {
|
|
86
|
-
console.log(`%c👽${req.method}->${req.urlWithParams}->request`, 'background:#000;color:#bada55', req);
|
|
87
|
-
console.log(`%c👽${req.method}->${req.urlWithParams}->response`, 'background:#000;color:#bada55', res);
|
|
88
|
-
}
|
|
89
|
-
const res$ = res instanceof HttpErrorResponse ? throwError(res) : of(res);
|
|
90
|
-
if (config.executeOtherInterceptors) {
|
|
91
|
-
const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);
|
|
92
|
-
const lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);
|
|
93
|
-
if (lastInterceptors.length > 0) {
|
|
94
|
-
const chain = lastInterceptors.reduceRight((_next, _interceptor) => new HttpMockInterceptorHandler(_next, _interceptor), {
|
|
95
|
-
handle: () => res$
|
|
96
|
-
});
|
|
97
|
-
return chain.handle(req).pipe(delay(config.delay));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return res$.pipe(delay(config.delay));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
MockInterceptor.decorators = [
|
|
104
|
-
{ type: Injectable }
|
|
105
|
-
];
|
|
106
|
-
MockInterceptor.ctorParameters = () => [
|
|
107
|
-
{ type: Injector }
|
|
108
|
-
];
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21vY2svc3JjL21vY2suaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUtqQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxNQUFNLDBCQUEwQjtJQUM5QixZQUFvQixJQUFpQixFQUFVLFdBQTRCO1FBQXZELFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7SUFBRyxDQUFDO0lBRS9FLE1BQU0sQ0FBQyxHQUEyQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsU0FBUyxDQUFDLEdBQTJCLEVBQUUsSUFBaUI7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7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d0JBQXdCLEVBQUU7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUUsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQ3hDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQzVFO29CQUNFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO2lCQUNKLENBQ2pCLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7YUFDckQ7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7O1lBN0ZGLFVBQVU7OztZQW5CVSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cEJhY2tlbmQsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZUJhc2UsXG4gIEhUVFBfSU5URVJDRVBUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGRlZXBDb3B5IH0gZnJvbSAnQGRlbG9uL3V0aWwvb3RoZXInO1xuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQgeyBNb2NrUmVxdWVzdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vY2tTZXJ2aWNlIH0gZnJvbSAnLi9tb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ja1N0YXR1c0Vycm9yIH0gZnJvbSAnLi9zdGF0dXMuZXJyb3InO1xuXG5jbGFzcyBIdHRwTW9ja0ludGVyY2VwdG9ySGFuZGxlciBpbXBsZW1lbnRzIEh0dHBIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZXh0OiBIdHRwSGFuZGxlciwgcHJpdmF0ZSBpbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yKSB7fVxuXG4gIGhhbmRsZShyZXE6IEh0dHBSZXF1ZXN0PE56U2FmZUFueT4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxOelNhZmVBbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlcSwgdGhpcy5uZXh0KTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9ja0ludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8TnpTYWZlQW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxOelNhZmVBbnk+PiB7XG4gICAgY29uc3Qgc3JjID0gdGhpcy5pbmplY3Rvci5nZXQoTW9ja1NlcnZpY2UpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNyYy5jb25maWc7XG4gICAgY29uc3QgcnVsZSA9IHNyYy5nZXRSdWxlKHJlcS5tZXRob2QsIHJlcS51cmwuc3BsaXQoJz8nKVswXSk7XG4gICAgaWYgKCFydWxlICYmICFjb25maWcuZm9yY2UpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIGxldCByZXM6IE56U2FmZUFueTtcbiAgICBzd2l0Y2ggKHR5cGVvZiBydWxlIS5jYWxsYmFjaykge1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICBjb25zdCBtb2NrUmVxdWVzdDogTW9ja1JlcXVlc3QgPSB7XG4gICAgICAgICAgb3JpZ2luYWw6IHJlcSxcbiAgICAgICAgICBib2R5OiByZXEuYm9keSxcbiAgICAgICAgICBxdWVyeVN0cmluZzoge30sXG4gICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgcGFyYW1zOiBydWxlIS5wYXJhbXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gcmVxLnVybC5zcGxpdCgnPycpO1xuICAgICAgICBpZiAodXJsUGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB1cmxQYXJhbXNbMV0uc3BsaXQoJyYnKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbUFyciA9IGl0ZW0uc3BsaXQoJz0nKTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGl0ZW1BcnJbMF07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1BcnJbMV07XG4gICAgICAgICAgICAvLyBpcyBhcnJheVxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nKS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldKSkge1xuICAgICAgICAgICAgICAgIG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV0gPSBbbW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXEucGFyYW1zLmtleXMoKS5mb3JFYWNoKGtleSA9PiAobW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XSA9IHJlcS5wYXJhbXMuZ2V0KGtleSkpKTtcbiAgICAgICAgcmVxLmhlYWRlcnMua2V5cygpLmZvckVhY2goa2V5ID0+IChtb2NrUmVxdWVzdC5oZWFkZXJzW2tleV0gPSByZXEuaGVhZGVycy5nZXQoa2V5KSkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzID0gcnVsZSEuY2FsbGJhY2suY2FsbCh0aGlzLCBtb2NrUmVxdWVzdCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXMgPSBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe1xuICAgICAgICAgICAgdXJsOiByZXEudXJsLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IGUgaW5zdGFuY2VvZiBNb2NrU3RhdHVzRXJyb3IgPyBlLnN0YXR1cyA6IDQwMCxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IGUuc3RhdHVzVGV4dCB8fCAnVW5rbm93biBFcnJvcicsXG4gICAgICAgICAgICBlcnJvcjogZS5lcnJvclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzID0gcnVsZSEuY2FsbGJhY2s7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICghKHJlcyBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpKSB7XG4gICAgICByZXMgPSBuZXcgSHR0cFJlc3BvbnNlKHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIHVybDogcmVxLnVybCxcbiAgICAgICAgYm9keTogcmVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzLmJvZHkpIHtcbiAgICAgIHJlcy5ib2R5ID0gZGVlcENvcHkocmVzLmJvZHkpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcubG9nKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJWPwn5G9JHtyZXEubWV0aG9kfS0+JHtyZXEudXJsV2l0aFBhcmFtc30tPnJlcXVlc3RgLCAnYmFja2dyb3VuZDojMDAwO2NvbG9yOiNiYWRhNTUnLCByZXEpO1xuICAgICAgY29uc29sZS5sb2coYCVj8J+RvSR7cmVxLm1ldGhvZH0tPiR7cmVxLnVybFdpdGhQYXJhbXN9LT5yZXNwb25zZWAsICdiYWNrZ3JvdW5kOiMwMDA7Y29sb3I6I2JhZGE1NScsIHJlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzJCA9IHJlcyBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlID8gdGhyb3dFcnJvcihyZXMpIDogb2YocmVzKTtcblxuICAgIGlmIChjb25maWcuZXhlY3V0ZU90aGVySW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBpbnRlcmNlcHRvcnMgPSB0aGlzLmluamVjdG9yLmdldChIVFRQX0lOVEVSQ0VQVE9SUywgW10pO1xuICAgICAgY29uc3QgbGFzdEludGVyY2VwdG9ycyA9IGludGVyY2VwdG9ycy5zbGljZShpbnRlcmNlcHRvcnMuaW5kZXhPZih0aGlzKSArIDEpO1xuICAgICAgaWYgKGxhc3RJbnRlcmNlcHRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjaGFpbiA9IGxhc3RJbnRlcmNlcHRvcnMucmVkdWNlUmlnaHQoXG4gICAgICAgICAgKF9uZXh0LCBfaW50ZXJjZXB0b3IpID0+IG5ldyBIdHRwTW9ja0ludGVyY2VwdG9ySGFuZGxlcihfbmV4dCwgX2ludGVyY2VwdG9yKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoYW5kbGU6ICgpID0+IHJlcyRcbiAgICAgICAgICB9IGFzIEh0dHBCYWNrZW5kXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBjaGFpbi5oYW5kbGUocmVxKS5waXBlKGRlbGF5KGNvbmZpZy5kZWxheSEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzJC5waXBlKGRlbGF5KGNvbmZpZy5kZWxheSEpKTtcbiAgfVxufVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { MockOptions } from './interface';
|
|
4
|
-
import { MockInterceptor } from './mock.interceptor';
|
|
5
|
-
export class DelonMockModule {
|
|
6
|
-
static forRoot(options) {
|
|
7
|
-
return {
|
|
8
|
-
ngModule: DelonMockModule,
|
|
9
|
-
providers: [
|
|
10
|
-
{ provide: MockOptions, useValue: options },
|
|
11
|
-
{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }
|
|
12
|
-
]
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
static forChild() {
|
|
16
|
-
return {
|
|
17
|
-
ngModule: DelonMockModule,
|
|
18
|
-
providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
DelonMockModule.decorators = [
|
|
23
|
-
{ type: NgModule, args: [{},] }
|
|
24
|
-
];
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb2NrL3NyYy9tb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdyRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQXFCO1FBQ2xDLE9BQU87WUFDTCxRQUFRLEVBQUUsZUFBZTtZQUN6QixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQzNDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUN2RTtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDcEYsQ0FBQztJQUNKLENBQUM7OztZQWpCRixRQUFRLFNBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTW9ja09wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBNb2NrSW50ZXJjZXB0b3IgfSBmcm9tICcuL21vY2suaW50ZXJjZXB0b3InO1xuXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVsb25Nb2NrTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9ucz86IE1vY2tPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEZWxvbk1vY2tNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IERlbG9uTW9ja01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE1vY2tPcHRpb25zLCB1c2VWYWx1ZTogb3B0aW9ucyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogTW9ja0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPERlbG9uTW9ja01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVsb25Nb2NrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IE1vY2tJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfV1cbiAgICB9O1xuICB9XG59XG4iXX0=
|