@delon/mock 15.2.1 → 16.0.0

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.
@@ -0,0 +1,110 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { HttpErrorResponse, HttpResponse, HttpResponseBase, HTTP_INTERCEPTORS } from '@angular/common/http';
3
+ import { Injectable } from '@angular/core';
4
+ import { of, throwError, delay } from 'rxjs';
5
+ import { deepCopy } from '@delon/util/other';
6
+ import { MockService } from './mock.service';
7
+ import { MockStatusError } from './status.error';
8
+ import * as i0 from "@angular/core";
9
+ class HttpMockInterceptorHandler {
10
+ constructor(next, interceptor) {
11
+ this.next = next;
12
+ this.interceptor = interceptor;
13
+ }
14
+ handle(req) {
15
+ return this.interceptor.intercept(req, this.next);
16
+ }
17
+ }
18
+ class MockInterceptor {
19
+ constructor(injector) {
20
+ this.injector = injector;
21
+ }
22
+ intercept(req, next) {
23
+ const src = this.injector.get(MockService);
24
+ const config = src.config;
25
+ const rule = src.getRule(req.method, req.url.split('?')[0]);
26
+ if (!rule && !config.force) {
27
+ return next.handle(req);
28
+ }
29
+ let res;
30
+ switch (typeof rule.callback) {
31
+ case 'function':
32
+ const mockRequest = {
33
+ original: req,
34
+ body: req.body,
35
+ queryString: {},
36
+ headers: {},
37
+ params: rule.params
38
+ };
39
+ const urlParams = req.url.split('?');
40
+ if (urlParams.length > 1) {
41
+ urlParams[1].split('&').forEach(item => {
42
+ const itemArr = item.split('=');
43
+ const key = itemArr[0];
44
+ const value = itemArr[1];
45
+ // is array
46
+ if (Object.keys(mockRequest.queryString).includes(key)) {
47
+ if (!Array.isArray(mockRequest.queryString[key])) {
48
+ mockRequest.queryString[key] = [mockRequest.queryString[key]];
49
+ }
50
+ mockRequest.queryString[key].push(value);
51
+ }
52
+ else {
53
+ mockRequest.queryString[key] = value;
54
+ }
55
+ });
56
+ }
57
+ req.params.keys().forEach(key => (mockRequest.queryString[key] = req.params.get(key)));
58
+ req.headers.keys().forEach(key => (mockRequest.headers[key] = req.headers.get(key)));
59
+ try {
60
+ res = rule.callback.call(this, mockRequest);
61
+ }
62
+ catch (e) {
63
+ res = new HttpErrorResponse({
64
+ url: req.url,
65
+ headers: req.headers,
66
+ status: e instanceof MockStatusError ? e.status : 400,
67
+ statusText: e.statusText || 'Unknown Error',
68
+ error: e.error
69
+ });
70
+ }
71
+ break;
72
+ default:
73
+ res = rule.callback;
74
+ break;
75
+ }
76
+ if (!(res instanceof HttpResponseBase)) {
77
+ res = new HttpResponse({
78
+ status: 200,
79
+ url: req.url,
80
+ body: res
81
+ });
82
+ }
83
+ if (res.body) {
84
+ res.body = deepCopy(res.body);
85
+ }
86
+ if (config.log) {
87
+ console.log(`%c👽${req.method}->${req.urlWithParams}->request`, 'background:#000;color:#bada55', req);
88
+ console.log(`%c👽${req.method}->${req.urlWithParams}->response`, 'background:#000;color:#bada55', res);
89
+ }
90
+ const res$ = res instanceof HttpErrorResponse ? throwError(() => res) : of(res);
91
+ if (config.executeOtherInterceptors) {
92
+ const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);
93
+ const lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);
94
+ if (lastInterceptors.length > 0) {
95
+ const chain = lastInterceptors.reduceRight((_next, _interceptor) => new HttpMockInterceptorHandler(_next, _interceptor), {
96
+ handle: () => res$
97
+ });
98
+ return chain.handle(req).pipe(delay(config.delay));
99
+ }
100
+ }
101
+ return res$.pipe(delay(config.delay));
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
104
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor }); }
105
+ }
106
+ export { MockInterceptor };
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor, decorators: [{
108
+ type: Injectable
109
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21vY2svc3JjL21vY2suaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFTCxpQkFBaUIsRUFLakIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFakQsTUFBTSwwQkFBMEI7SUFDOUIsWUFBb0IsSUFBaUIsRUFBVSxXQUE0QjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO0lBQUcsQ0FBQztJQUUvRSxNQUFNLENBQUMsR0FBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUVELE1BQ2EsZUFBZTtJQUMxQixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUUxQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFB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QU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUN4QyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksMEJBQTBCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUM1RTtvQkFDRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtpQkFDSixDQUNqQixDQUFDO2dCQUNGLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OEdBNUZVLGVBQWU7a0hBQWYsZUFBZTs7U0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICBIdHRwQmFja2VuZCxcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBSZXNwb25zZSxcbiAgSHR0cFJlc3BvbnNlQmFzZSxcbiAgSFRUUF9JTlRFUkNFUFRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yLCBkZWxheSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBkZWVwQ29weSB9IGZyb20gJ0BkZWxvbi91dGlsL290aGVyJztcblxuaW1wb3J0IHsgTW9ja1JlcXVlc3QgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBNb2NrU2VydmljZSB9IGZyb20gJy4vbW9jay5zZXJ2aWNlJztcbmltcG9ydCB7IE1vY2tTdGF0dXNFcnJvciB9IGZyb20gJy4vc3RhdHVzLmVycm9yJztcblxuY2xhc3MgSHR0cE1vY2tJbnRlcmNlcHRvckhhbmRsZXIgaW1wbGVtZW50cyBIdHRwSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV4dDogSHR0cEhhbmRsZXIsIHByaXZhdGUgaW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvcikge31cblxuICBoYW5kbGUocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9yLmludGVyY2VwdChyZXEsIHRoaXMubmV4dCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vY2tJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IHNyYyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vY2tTZXJ2aWNlKTtcbiAgICBjb25zdCBjb25maWcgPSBzcmMuY29uZmlnO1xuICAgIGNvbnN0IHJ1bGUgPSBzcmMuZ2V0UnVsZShyZXEubWV0aG9kLCByZXEudXJsLnNwbGl0KCc/JylbMF0pO1xuICAgIGlmICghcnVsZSAmJiAhY29uZmlnLmZvcmNlKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzOiBhbnk7XG4gICAgc3dpdGNoICh0eXBlb2YgcnVsZSEuY2FsbGJhY2spIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgY29uc3QgbW9ja1JlcXVlc3Q6IE1vY2tSZXF1ZXN0ID0ge1xuICAgICAgICAgIG9yaWdpbmFsOiByZXEsXG4gICAgICAgICAgYm9keTogcmVxLmJvZHksXG4gICAgICAgICAgcXVlcnlTdHJpbmc6IHt9LFxuICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgIHBhcmFtczogcnVsZSEucGFyYW1zXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IHJlcS51cmwuc3BsaXQoJz8nKTtcbiAgICAgICAgaWYgKHVybFBhcmFtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdXJsUGFyYW1zWzFdLnNwbGl0KCcmJykuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1BcnIgPSBpdGVtLnNwbGl0KCc9Jyk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBpdGVtQXJyWzBdO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtQXJyWzFdO1xuICAgICAgICAgICAgLy8gaXMgYXJyYXlcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhtb2NrUmVxdWVzdC5xdWVyeVN0cmluZykuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBtb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldID0gW21vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV1dO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVxLnBhcmFtcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4gKG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV0gPSByZXEucGFyYW1zLmdldChrZXkpKSk7XG4gICAgICAgIHJlcS5oZWFkZXJzLmtleXMoKS5mb3JFYWNoKGtleSA9PiAobW9ja1JlcXVlc3QuaGVhZGVyc1trZXldID0gcmVxLmhlYWRlcnMuZ2V0KGtleSkpKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcyA9IHJ1bGUhLmNhbGxiYWNrLmNhbGwodGhpcywgbW9ja1JlcXVlc3QpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICByZXMgPSBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe1xuICAgICAgICAgICAgdXJsOiByZXEudXJsLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IGUgaW5zdGFuY2VvZiBNb2NrU3RhdHVzRXJyb3IgPyBlLnN0YXR1cyA6IDQwMCxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IGUuc3RhdHVzVGV4dCB8fCAnVW5rbm93biBFcnJvcicsXG4gICAgICAgICAgICBlcnJvcjogZS5lcnJvclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzID0gcnVsZSEuY2FsbGJhY2s7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICghKHJlcyBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpKSB7XG4gICAgICByZXMgPSBuZXcgSHR0cFJlc3BvbnNlKHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIHVybDogcmVxLnVybCxcbiAgICAgICAgYm9keTogcmVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzLmJvZHkpIHtcbiAgICAgIHJlcy5ib2R5ID0gZGVlcENvcHkocmVzLmJvZHkpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcubG9nKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJWPwn5G9JHtyZXEubWV0aG9kfS0+JHtyZXEudXJsV2l0aFBhcmFtc30tPnJlcXVlc3RgLCAnYmFja2dyb3VuZDojMDAwO2NvbG9yOiNiYWRhNTUnLCByZXEpO1xuICAgICAgY29uc29sZS5sb2coYCVj8J+RvSR7cmVxLm1ldGhvZH0tPiR7cmVxLnVybFdpdGhQYXJhbXN9LT5yZXNwb25zZWAsICdiYWNrZ3JvdW5kOiMwMDA7Y29sb3I6I2JhZGE1NScsIHJlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzJCA9IHJlcyBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlID8gdGhyb3dFcnJvcigoKSA9PiByZXMpIDogb2YocmVzKTtcblxuICAgIGlmIChjb25maWcuZXhlY3V0ZU90aGVySW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBpbnRlcmNlcHRvcnMgPSB0aGlzLmluamVjdG9yLmdldChIVFRQX0lOVEVSQ0VQVE9SUywgW10pO1xuICAgICAgY29uc3QgbGFzdEludGVyY2VwdG9ycyA9IGludGVyY2VwdG9ycy5zbGljZShpbnRlcmNlcHRvcnMuaW5kZXhPZih0aGlzKSArIDEpO1xuICAgICAgaWYgKGxhc3RJbnRlcmNlcHRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjaGFpbiA9IGxhc3RJbnRlcmNlcHRvcnMucmVkdWNlUmlnaHQoXG4gICAgICAgICAgKF9uZXh0LCBfaW50ZXJjZXB0b3IpID0+IG5ldyBIdHRwTW9ja0ludGVyY2VwdG9ySGFuZGxlcihfbmV4dCwgX2ludGVyY2VwdG9yKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoYW5kbGU6ICgpID0+IHJlcyRcbiAgICAgICAgICB9IGFzIEh0dHBCYWNrZW5kXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBjaGFpbi5oYW5kbGUocmVxKS5waXBlKGRlbGF5KGNvbmZpZy5kZWxheSEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzJC5waXBlKGRlbGF5KGNvbmZpZy5kZWxheSEpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,31 @@
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
+ import * as i0 from "@angular/core";
6
+ class DelonMockModule {
7
+ static forRoot(options) {
8
+ return {
9
+ ngModule: DelonMockModule,
10
+ providers: [
11
+ { provide: MockOptions, useValue: options },
12
+ { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }
13
+ ]
14
+ };
15
+ }
16
+ static forChild() {
17
+ return {
18
+ ngModule: DelonMockModule,
19
+ providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
20
+ };
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule }); }
24
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule }); }
25
+ }
26
+ export { DelonMockModule };
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule, decorators: [{
28
+ type: NgModule,
29
+ args: [{}]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb2NrL3NyYy9tb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFckQsTUFDYSxlQUFlO0lBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBcUI7UUFDbEMsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtnQkFDM0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3ZFO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUTtRQUNiLE9BQU87WUFDTCxRQUFRLEVBQUUsZUFBZTtZQUN6QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwRixDQUFDO0lBQ0osQ0FBQzs4R0FoQlUsZUFBZTsrR0FBZixlQUFlOytHQUFmLGVBQWU7O1NBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixRQUFRO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1vY2tPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9ja0ludGVyY2VwdG9yIH0gZnJvbSAnLi9tb2NrLmludGVyY2VwdG9yJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIERlbG9uTW9ja01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM/OiBNb2NrT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVsb25Nb2NrTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEZWxvbk1vY2tNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBNb2NrT3B0aW9ucywgdXNlVmFsdWU6IG9wdGlvbnMgfSxcbiAgICAgICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IE1vY2tJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEZWxvbk1vY2tNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IERlbG9uTW9ja01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBNb2NrSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,142 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Injectable } from '@angular/core';
3
+ import { MOCK_DEFULAT_CONFIG } from './mock.config';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@delon/util/config";
6
+ import * as i2 from "./interface";
7
+ class MockService {
8
+ constructor(cogSrv, options) {
9
+ this.cached = [];
10
+ this.config = cogSrv.merge('mock', MOCK_DEFULAT_CONFIG);
11
+ this.setData(options?.data);
12
+ }
13
+ /**
14
+ * Reset request data
15
+ *
16
+ * 重新设置请求数据
17
+ */
18
+ setData(data) {
19
+ this.applyMock(data);
20
+ }
21
+ // #region parse rule
22
+ applyMock(data) {
23
+ this.cached = [];
24
+ try {
25
+ this.realApplyMock(data);
26
+ }
27
+ catch (e) {
28
+ this.outputError(e);
29
+ }
30
+ }
31
+ realApplyMock(data) {
32
+ if (!data)
33
+ return;
34
+ Object.keys(data).forEach((key) => {
35
+ const rules = data[key];
36
+ if (!rules)
37
+ return;
38
+ Object.keys(rules).forEach((ruleKey) => {
39
+ const value = rules[ruleKey];
40
+ if (!(typeof value === 'function' || typeof value === 'object' || typeof value === 'string')) {
41
+ throw Error(`mock value of [${key}-${ruleKey}] should be function or object or string, but got ${typeof value}`);
42
+ }
43
+ const rule = this.genRule(ruleKey, value);
44
+ if (['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH', 'OPTIONS'].indexOf(rule.method) === -1) {
45
+ throw Error(`method of ${key}-${ruleKey} is not valid`);
46
+ }
47
+ const item = this.cached.find(w => w.url === rule.url && w.method === rule.method);
48
+ if (item) {
49
+ item.callback = rule.callback;
50
+ }
51
+ else {
52
+ this.cached.push(rule);
53
+ }
54
+ });
55
+ });
56
+ // regular ordering
57
+ this.cached.sort((a, b) => (b.martcher || '').toString().length - (a.martcher || '').toString().length);
58
+ }
59
+ genRule(key, callback) {
60
+ let method = 'GET';
61
+ let url = key;
62
+ if (key.indexOf(' ') > -1) {
63
+ const splited = key.split(' ');
64
+ method = splited[0].toLowerCase();
65
+ url = splited[1];
66
+ }
67
+ let martcher = null;
68
+ let segments = [];
69
+ if (~url.indexOf(':')) {
70
+ segments = url
71
+ .split('/')
72
+ .filter(segment => segment.startsWith(':'))
73
+ .map(v => v.substring(1));
74
+ const reStr = url
75
+ .split('/')
76
+ .map(segment => (segment.startsWith(':') ? `([^/]+)` : segment))
77
+ .join('/');
78
+ martcher = new RegExp(`^${reStr}`, 'i');
79
+ }
80
+ else if (/(\([^)]+\))/i.test(url)) {
81
+ martcher = new RegExp(url, 'i');
82
+ }
83
+ return {
84
+ url,
85
+ martcher,
86
+ segments,
87
+ callback,
88
+ method: method.toUpperCase()
89
+ };
90
+ }
91
+ outputError(error) {
92
+ const filePath = error.message.split(': ')[0];
93
+ const errors = error.stack
94
+ .split('\n')
95
+ .filter(line => line.trim().indexOf('at ') !== 0)
96
+ .map(line => line.replace(`${filePath}: `, ''));
97
+ errors.splice(1, 0, '');
98
+ console.group();
99
+ console.warn(`==========Failed to parse mock config.==========`);
100
+ console.log(errors.join('\n'));
101
+ console.groupEnd();
102
+ throw error;
103
+ }
104
+ // #endregion
105
+ getRule(method, url) {
106
+ method = (method || 'GET').toUpperCase();
107
+ const params = {};
108
+ const list = this.cached.filter(w => w.method === method && (w.martcher ? w.martcher.test(url) : w.url === url));
109
+ if (list.length === 0)
110
+ return null;
111
+ const ret = list.find(w => w.url === url) || list[0];
112
+ if (ret.martcher) {
113
+ const execArr = ret.martcher.exec(url);
114
+ execArr.slice(1).map((value, index) => {
115
+ params[ret.segments[index]] = value;
116
+ });
117
+ }
118
+ return {
119
+ url,
120
+ method: ret.method,
121
+ params,
122
+ callback: ret.callback
123
+ };
124
+ }
125
+ clearCache() {
126
+ this.cached = [];
127
+ }
128
+ get rules() {
129
+ return this.cached;
130
+ }
131
+ ngOnDestroy() {
132
+ this.clearCache();
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, deps: [{ token: i1.AlainConfigService }, { token: i2.MockOptions }], target: i0.ɵɵFactoryTarget.Injectable }); }
135
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, providedIn: 'root' }); }
136
+ }
137
+ export { MockService };
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, decorators: [{
139
+ type: Injectable,
140
+ args: [{ providedIn: 'root' }]
141
+ }], ctorParameters: function () { return [{ type: i1.AlainConfigService }, { type: i2.MockOptions }]; } });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9jay9zcmMvbW9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUVwRCxNQUNhLFdBQVc7SUFJdEIsWUFBWSxNQUEwQixFQUFFLE9BQW9CO1FBSHBELFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBSXBDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQscUJBQXFCO0lBRWIsU0FBUyxDQUFDLElBQVM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSTtZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVM7UUFDN0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lB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QWEsRUFBRSxFQUFFO2dCQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTztZQUNMLEdBQUc7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsTUFBTTtZQUNOLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBNUlVLFdBQVc7a0hBQVgsV0FBVyxjQURFLE1BQU07O1NBQ25CLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWxhaW5Db25maWdTZXJ2aWNlLCBBbGFpbk1vY2tDb25maWcgfSBmcm9tICdAZGVsb24vdXRpbC9jb25maWcnO1xuXG5pbXBvcnQgeyBNb2NrQ2FjaGVkUnVsZSwgTW9ja09wdGlvbnMsIE1vY2tSdWxlIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTU9DS19ERUZVTEFUX0NPTkZJRyB9IGZyb20gJy4vbW9jay5jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vY2tTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjYWNoZWQ6IE1vY2tDYWNoZWRSdWxlW10gPSBbXTtcbiAgcmVhZG9ubHkgY29uZmlnOiBBbGFpbk1vY2tDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29nU3J2OiBBbGFpbkNvbmZpZ1NlcnZpY2UsIG9wdGlvbnM6IE1vY2tPcHRpb25zKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb2dTcnYubWVyZ2UoJ21vY2snLCBNT0NLX0RFRlVMQVRfQ09ORklHKSE7XG4gICAgdGhpcy5zZXREYXRhKG9wdGlvbnM/LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHJlcXVlc3QgZGF0YVxuICAgKlxuICAgKiDph43mlrDorr7nva7or7fmsYLmlbDmja5cbiAgICovXG4gIHNldERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hcHBseU1vY2soZGF0YSk7XG4gIH1cblxuICAvLyAjcmVnaW9uIHBhcnNlIHJ1bGVcblxuICBwcml2YXRlIGFwcGx5TW9jayhkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlZCA9IFtdO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlYWxBcHBseU1vY2soZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5vdXRwdXRFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWxBcHBseU1vY2soZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGVzID0gZGF0YVtrZXldO1xuICAgICAgaWYgKCFydWxlcykgcmV0dXJuO1xuICAgICAgT2JqZWN0LmtleXMocnVsZXMpLmZvckVhY2goKHJ1bGVLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJ1bGVzW3J1bGVLZXldO1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgYG1vY2sgdmFsdWUgb2YgWyR7a2V5fS0ke3J1bGVLZXl9XSBzaG91bGQgYmUgZnVuY3Rpb24gb3Igb2JqZWN0IG9yIHN0cmluZywgYnV0IGdvdCAke3R5cGVvZiB2YWx1ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBydWxlID0gdGhpcy5nZW5SdWxlKHJ1bGVLZXksIHZhbHVlKTtcbiAgICAgICAgaWYgKFsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0hFQUQnLCAnREVMRVRFJywgJ1BBVENIJywgJ09QVElPTlMnXS5pbmRleE9mKHJ1bGUubWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgbWV0aG9kIG9mICR7a2V5fS0ke3J1bGVLZXl9IGlzIG5vdCB2YWxpZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNhY2hlZC5maW5kKHcgPT4gdy51cmwgPT09IHJ1bGUudXJsICYmIHcubWV0aG9kID09PSBydWxlLm1ldGhvZCk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgaXRlbS5jYWxsYmFjayA9IHJ1bGUuY2FsbGJhY2s7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jYWNoZWQucHVzaChydWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8gcmVndWxhciBvcmRlcmluZ1xuICAgIHRoaXMuY2FjaGVkLnNvcnQoKGEsIGIpID0+IChiLm1hcnRjaGVyIHx8ICcnKS50b1N0cmluZygpLmxlbmd0aCAtIChhLm1hcnRjaGVyIHx8ICcnKS50b1N0cmluZygpLmxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGdlblJ1bGUoa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiBhbnkpOiBNb2NrQ2FjaGVkUnVsZSB7XG4gICAgbGV0IG1ldGhvZCA9ICdHRVQnO1xuICAgIGxldCB1cmwgPSBrZXk7XG5cbiAgICBpZiAoa2V5LmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjb25zdCBzcGxpdGVkID0ga2V5LnNwbGl0KCcgJyk7XG4gICAgICBtZXRob2QgPSBzcGxpdGVkWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICB1cmwgPSBzcGxpdGVkWzFdO1xuICAgIH1cblxuICAgIGxldCBtYXJ0Y2hlcjogUmVnRXhwIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh+dXJsLmluZGV4T2YoJzonKSkge1xuICAgICAgc2VnbWVudHMgPSB1cmwhXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LnN0YXJ0c1dpdGgoJzonKSlcbiAgICAgICAgLm1hcCh2ID0+IHYuc3Vic3RyaW5nKDEpKTtcbiAgICAgIGNvbnN0IHJlU3RyID0gdXJsIVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAubWFwKHNlZ21lbnQgPT4gKHNlZ21lbnQuc3RhcnRzV2l0aCgnOicpID8gYChbXi9dKylgIDogc2VnbWVudCkpXG4gICAgICAgIC5qb2luKCcvJyk7XG4gICAgICBtYXJ0Y2hlciA9IG5ldyBSZWdFeHAoYF4ke3JlU3RyfWAsICdpJyk7XG4gICAgfSBlbHNlIGlmICgvKFxcKFteKV0rXFwpKS9pLnRlc3QodXJsKSkge1xuICAgICAgbWFydGNoZXIgPSBuZXcgUmVnRXhwKHVybCwgJ2knKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXJsLFxuICAgICAgbWFydGNoZXIsXG4gICAgICBzZWdtZW50cyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG91dHB1dEVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGVycm9yLm1lc3NhZ2Uuc3BsaXQoJzogJylbMF07XG4gICAgY29uc3QgZXJyb3JzID0gKGVycm9yLnN0YWNrIGFzIHN0cmluZylcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5maWx0ZXIobGluZSA9PiBsaW5lLnRyaW0oKS5pbmRleE9mKCdhdCAnKSAhPT0gMClcbiAgICAgIC5tYXAobGluZSA9PiBsaW5lLnJlcGxhY2UoYCR7ZmlsZVBhdGh9OiBgLCAnJykpO1xuICAgIGVycm9ycy5zcGxpY2UoMSwgMCwgJycpO1xuXG4gICAgY29uc29sZS5ncm91cCgpO1xuICAgIGNvbnNvbGUud2FybihgPT09PT09PT09PUZhaWxlZCB0byBwYXJzZSBtb2NrIGNvbmZpZy49PT09PT09PT09YCk7XG4gICAgY29uc29sZS5sb2coZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxuICBnZXRSdWxlKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZyk6IE1vY2tSdWxlIHwgbnVsbCB7XG4gICAgbWV0aG9kID0gKG1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNhY2hlZC5maWx0ZXIodyA9PiB3Lm1ldGhvZCA9PT0gbWV0aG9kICYmICh3Lm1hcnRjaGVyID8gdy5tYXJ0Y2hlci50ZXN0KHVybCkgOiB3LnVybCA9PT0gdXJsKSk7XG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSBsaXN0LmZpbmQodyA9PiB3LnVybCA9PT0gdXJsKSB8fCBsaXN0WzBdO1xuICAgIGlmIChyZXQubWFydGNoZXIpIHtcbiAgICAgIGNvbnN0IGV4ZWNBcnIgPSByZXQubWFydGNoZXIuZXhlYyh1cmwpO1xuICAgICAgZXhlY0FyciEuc2xpY2UoMSkubWFwKCh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHBhcmFtc1tyZXQuc2VnbWVudHNbaW5kZXhdXSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB1cmwsXG4gICAgICBtZXRob2Q6IHJldC5tZXRob2QsXG4gICAgICBwYXJhbXMsXG4gICAgICBjYWxsYmFjazogcmV0LmNhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZWQgPSBbXTtcbiAgfVxuXG4gIGdldCBydWxlcygpOiBNb2NrQ2FjaGVkUnVsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgfVxufVxuIl19
@@ -151,10 +151,10 @@ class MockService {
151
151
  ngOnDestroy() {
152
152
  this.clearCache();
153
153
  }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, deps: [{ token: i1.AlainConfigService }, { token: MockOptions }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, providedIn: 'root' }); }
154
156
  }
155
- MockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, deps: [{ token: i1.AlainConfigService }, { token: MockOptions }], target: i0.ɵɵFactoryTarget.Injectable });
156
- MockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, providedIn: 'root' });
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockService, decorators: [{
158
158
  type: Injectable,
159
159
  args: [{ providedIn: 'root' }]
160
160
  }], ctorParameters: function () { return [{ type: i1.AlainConfigService }, { type: MockOptions }]; } });
@@ -254,10 +254,10 @@ class MockInterceptor {
254
254
  }
255
255
  return res$.pipe(delay(config.delay));
256
256
  }
257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
258
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor }); }
257
259
  }
258
- MockInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
259
- MockInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor });
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, decorators: [{
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: MockInterceptor, decorators: [{
261
261
  type: Injectable
262
262
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
263
263
 
@@ -277,11 +277,11 @@ class DelonMockModule {
277
277
  providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
278
278
  };
279
279
  }
280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
281
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule }); }
282
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule }); }
280
283
  }
281
- DelonMockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
282
- DelonMockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
283
- DelonMockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, decorators: [{
284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: DelonMockModule, decorators: [{
285
285
  type: NgModule,
286
286
  args: [{}]
287
287
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"mock.mjs","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":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpRequest } from '@angular/common/http';\n\nexport class MockOptions {\n data?: any;\n}\n\nexport interface MockCachedRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n martcher: RegExp | null;\n\n segments: string[];\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n /** 路由参数 */\n params?: any;\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRequest {\n /** 路由参数 */\n params?: any;\n /** URL参数 */\n queryString?: any;\n headers?: any;\n body?: any;\n /** 原始 `HttpRequest` */\n original: HttpRequest<any>;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport class MockStatusError {\n statusText?: string;\n\n constructor(public status: number, public error?: any) {}\n}\n","import type { 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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { AlainConfigService, AlainMockConfig } from '@delon/util/config';\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: any): void {\n this.applyMock(data);\n }\n\n // #region parse rule\n\n private applyMock(data: any): void {\n this.cached = [];\n try {\n this.realApplyMock(data);\n } catch (e) {\n this.outputError(e);\n }\n }\n\n private realApplyMock(data: any): 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: any): 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: any): 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: any = {};\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\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, delay } from 'rxjs';\n\nimport { deepCopy } from '@delon/util/other';\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<any>): Observable<HttpEvent<any>> {\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<any>, next: HttpHandler): Observable<HttpEvent<any>> {\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: any;\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: any) {\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":["i2.MockOptions"],"mappings":"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"}
1
+ {"version":3,"file":"mock.mjs","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":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpRequest } from '@angular/common/http';\n\nexport class MockOptions {\n data?: any;\n}\n\nexport interface MockCachedRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n martcher: RegExp | null;\n\n segments: string[];\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n /** 路由参数 */\n params?: any;\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRequest {\n /** 路由参数 */\n params?: any;\n /** URL参数 */\n queryString?: any;\n headers?: any;\n body?: any;\n /** 原始 `HttpRequest` */\n original: HttpRequest<any>;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport class MockStatusError {\n statusText?: string;\n\n constructor(public status: number, public error?: any) {}\n}\n","import type { 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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { AlainConfigService, AlainMockConfig } from '@delon/util/config';\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: any): void {\n this.applyMock(data);\n }\n\n // #region parse rule\n\n private applyMock(data: any): void {\n this.cached = [];\n try {\n this.realApplyMock(data);\n } catch (e) {\n this.outputError(e);\n }\n }\n\n private realApplyMock(data: any): 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: any): 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: any): 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: any = {};\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\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, delay } from 'rxjs';\n\nimport { deepCopy } from '@delon/util/other';\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<any>): Observable<HttpEvent<any>> {\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<any>, next: HttpHandler): Observable<HttpEvent<any>> {\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: any;\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: any) {\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":["i2.MockOptions"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delon/mock",
3
- "version": "15.2.1",
3
+ "version": "16.0.0",
4
4
  "author": "cipchk<cipchk@qq.com>",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,14 +28,10 @@
28
28
  "dependencies": {
29
29
  "mockjs": "^1.1.0",
30
30
  "@types/mockjs": "^1.0.7",
31
- "@delon/util": "^15.2.1",
31
+ "@delon/util": "^16.0.0",
32
32
  "tslib": "^2.3.0"
33
33
  },
34
- "module": "fesm2015/mock.mjs",
35
- "es2020": "fesm2020/mock.mjs",
36
- "esm2020": "esm2020/mock.mjs",
37
- "fesm2020": "fesm2020/mock.mjs",
38
- "fesm2015": "fesm2015/mock.mjs",
34
+ "module": "fesm2022/mock.mjs",
39
35
  "typings": "index.d.ts",
40
36
  "exports": {
41
37
  "./package.json": {
@@ -43,11 +39,9 @@
43
39
  },
44
40
  ".": {
45
41
  "types": "./index.d.ts",
46
- "esm2020": "./esm2020/mock.mjs",
47
- "es2020": "./fesm2020/mock.mjs",
48
- "es2015": "./fesm2015/mock.mjs",
49
- "node": "./fesm2015/mock.mjs",
50
- "default": "./fesm2020/mock.mjs"
42
+ "esm2022": "./esm2022/mock.mjs",
43
+ "esm": "./esm2022/mock.mjs",
44
+ "default": "./fesm2022/mock.mjs"
51
45
  }
52
46
  },
53
47
  "sideEffects": false
@@ -1,109 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { HttpErrorResponse, HttpResponse, HttpResponseBase, HTTP_INTERCEPTORS } from '@angular/common/http';
3
- import { Injectable } from '@angular/core';
4
- import { of, throwError, delay } from 'rxjs';
5
- import { deepCopy } from '@delon/util/other';
6
- import { MockService } from './mock.service';
7
- import { MockStatusError } from './status.error';
8
- import * as i0 from "@angular/core";
9
- class HttpMockInterceptorHandler {
10
- constructor(next, interceptor) {
11
- this.next = next;
12
- this.interceptor = interceptor;
13
- }
14
- handle(req) {
15
- return this.interceptor.intercept(req, this.next);
16
- }
17
- }
18
- export class MockInterceptor {
19
- constructor(injector) {
20
- this.injector = injector;
21
- }
22
- intercept(req, next) {
23
- const src = this.injector.get(MockService);
24
- const config = src.config;
25
- const rule = src.getRule(req.method, req.url.split('?')[0]);
26
- if (!rule && !config.force) {
27
- return next.handle(req);
28
- }
29
- let res;
30
- switch (typeof rule.callback) {
31
- case 'function':
32
- const mockRequest = {
33
- original: req,
34
- body: req.body,
35
- queryString: {},
36
- headers: {},
37
- params: rule.params
38
- };
39
- const urlParams = req.url.split('?');
40
- if (urlParams.length > 1) {
41
- urlParams[1].split('&').forEach(item => {
42
- const itemArr = item.split('=');
43
- const key = itemArr[0];
44
- const value = itemArr[1];
45
- // is array
46
- if (Object.keys(mockRequest.queryString).includes(key)) {
47
- if (!Array.isArray(mockRequest.queryString[key])) {
48
- mockRequest.queryString[key] = [mockRequest.queryString[key]];
49
- }
50
- mockRequest.queryString[key].push(value);
51
- }
52
- else {
53
- mockRequest.queryString[key] = value;
54
- }
55
- });
56
- }
57
- req.params.keys().forEach(key => (mockRequest.queryString[key] = req.params.get(key)));
58
- req.headers.keys().forEach(key => (mockRequest.headers[key] = req.headers.get(key)));
59
- try {
60
- res = rule.callback.call(this, mockRequest);
61
- }
62
- catch (e) {
63
- res = new HttpErrorResponse({
64
- url: req.url,
65
- headers: req.headers,
66
- status: e instanceof MockStatusError ? e.status : 400,
67
- statusText: e.statusText || 'Unknown Error',
68
- error: e.error
69
- });
70
- }
71
- break;
72
- default:
73
- res = rule.callback;
74
- break;
75
- }
76
- if (!(res instanceof HttpResponseBase)) {
77
- res = new HttpResponse({
78
- status: 200,
79
- url: req.url,
80
- body: res
81
- });
82
- }
83
- if (res.body) {
84
- res.body = deepCopy(res.body);
85
- }
86
- if (config.log) {
87
- console.log(`%c👽${req.method}->${req.urlWithParams}->request`, 'background:#000;color:#bada55', req);
88
- console.log(`%c👽${req.method}->${req.urlWithParams}->response`, 'background:#000;color:#bada55', res);
89
- }
90
- const res$ = res instanceof HttpErrorResponse ? throwError(() => res) : of(res);
91
- if (config.executeOtherInterceptors) {
92
- const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);
93
- const lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);
94
- if (lastInterceptors.length > 0) {
95
- const chain = lastInterceptors.reduceRight((_next, _interceptor) => new HttpMockInterceptorHandler(_next, _interceptor), {
96
- handle: () => res$
97
- });
98
- return chain.handle(req).pipe(delay(config.delay));
99
- }
100
- }
101
- return res$.pipe(delay(config.delay));
102
- }
103
- }
104
- MockInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
105
- MockInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor });
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, decorators: [{
107
- type: Injectable
108
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21vY2svc3JjL21vY2suaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFTCxpQkFBaUIsRUFLakIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFakQsTUFBTSwwQkFBMEI7SUFDOUIsWUFBb0IsSUFBaUIsRUFBVSxXQUE0QjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO0lBQUcsQ0FBQztJQUUvRSxNQUFNLENBQUMsR0FBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRTFDLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FB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bkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUUsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQ3hDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQzVFO29CQUNFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO2lCQUNKLENBQ2pCLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7YUFDckQ7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7NEdBNUZVLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgSHR0cEJhY2tlbmQsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZUJhc2UsXG4gIEhUVFBfSU5URVJDRVBUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciwgZGVsYXkgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZGVlcENvcHkgfSBmcm9tICdAZGVsb24vdXRpbC9vdGhlcic7XG5cbmltcG9ydCB7IE1vY2tSZXF1ZXN0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuL21vY2suc2VydmljZSc7XG5pbXBvcnQgeyBNb2NrU3RhdHVzRXJyb3IgfSBmcm9tICcuL3N0YXR1cy5lcnJvcic7XG5cbmNsYXNzIEh0dHBNb2NrSW50ZXJjZXB0b3JIYW5kbGVyIGltcGxlbWVudHMgSHR0cEhhbmRsZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5leHQ6IEh0dHBIYW5kbGVyLCBwcml2YXRlIGludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3IpIHt9XG5cbiAgaGFuZGxlKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvci5pbnRlcmNlcHQocmVxLCB0aGlzLm5leHQpO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2NrSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBzcmMgPSB0aGlzLmluamVjdG9yLmdldChNb2NrU2VydmljZSk7XG4gICAgY29uc3QgY29uZmlnID0gc3JjLmNvbmZpZztcbiAgICBjb25zdCBydWxlID0gc3JjLmdldFJ1bGUocmVxLm1ldGhvZCwgcmVxLnVybC5zcGxpdCgnPycpWzBdKTtcbiAgICBpZiAoIXJ1bGUgJiYgIWNvbmZpZy5mb3JjZSkge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgbGV0IHJlczogYW55O1xuICAgIHN3aXRjaCAodHlwZW9mIHJ1bGUhLmNhbGxiYWNrKSB7XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIGNvbnN0IG1vY2tSZXF1ZXN0OiBNb2NrUmVxdWVzdCA9IHtcbiAgICAgICAgICBvcmlnaW5hbDogcmVxLFxuICAgICAgICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgICAgICAgIHF1ZXJ5U3RyaW5nOiB7fSxcbiAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICBwYXJhbXM6IHJ1bGUhLnBhcmFtc1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSByZXEudXJsLnNwbGl0KCc/Jyk7XG4gICAgICAgIGlmICh1cmxQYXJhbXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHVybFBhcmFtc1sxXS5zcGxpdCgnJicpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtQXJyID0gaXRlbS5zcGxpdCgnPScpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gaXRlbUFyclswXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbUFyclsxXTtcbiAgICAgICAgICAgIC8vIGlzIGFycmF5XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobW9ja1JlcXVlc3QucXVlcnlTdHJpbmcpLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1vY2tSZXF1ZXN0LnF1ZXJ5U3RyaW5nW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgbW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XSA9IFttb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBtb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbW9ja1JlcXVlc3QucXVlcnlTdHJpbmdba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlcS5wYXJhbXMua2V5cygpLmZvckVhY2goa2V5ID0+IChtb2NrUmVxdWVzdC5xdWVyeVN0cmluZ1trZXldID0gcmVxLnBhcmFtcy5nZXQoa2V5KSkpO1xuICAgICAgICByZXEuaGVhZGVycy5rZXlzKCkuZm9yRWFjaChrZXkgPT4gKG1vY2tSZXF1ZXN0LmhlYWRlcnNba2V5XSA9IHJlcS5oZWFkZXJzLmdldChrZXkpKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXMgPSBydWxlIS5jYWxsYmFjay5jYWxsKHRoaXMsIG1vY2tSZXF1ZXN0KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgcmVzID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtcbiAgICAgICAgICAgIHVybDogcmVxLnVybCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICAgICAgc3RhdHVzOiBlIGluc3RhbmNlb2YgTW9ja1N0YXR1c0Vycm9yID8gZS5zdGF0dXMgOiA0MDAsXG4gICAgICAgICAgICBzdGF0dXNUZXh0OiBlLnN0YXR1c1RleHQgfHwgJ1Vua25vd24gRXJyb3InLFxuICAgICAgICAgICAgZXJyb3I6IGUuZXJyb3JcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyA9IHJ1bGUhLmNhbGxiYWNrO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIShyZXMgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2VCYXNlKSkge1xuICAgICAgcmVzID0gbmV3IEh0dHBSZXNwb25zZSh7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICB1cmw6IHJlcS51cmwsXG4gICAgICAgIGJvZHk6IHJlc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5ib2R5KSB7XG4gICAgICByZXMuYm9keSA9IGRlZXBDb3B5KHJlcy5ib2R5KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmxvZykge1xuICAgICAgY29uc29sZS5sb2coYCVj8J+RvSR7cmVxLm1ldGhvZH0tPiR7cmVxLnVybFdpdGhQYXJhbXN9LT5yZXF1ZXN0YCwgJ2JhY2tncm91bmQ6IzAwMDtjb2xvcjojYmFkYTU1JywgcmVxKTtcbiAgICAgIGNvbnNvbGUubG9nKGAlY/Cfkb0ke3JlcS5tZXRob2R9LT4ke3JlcS51cmxXaXRoUGFyYW1zfS0+cmVzcG9uc2VgLCAnYmFja2dyb3VuZDojMDAwO2NvbG9yOiNiYWRhNTUnLCByZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyQgPSByZXMgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSA/IHRocm93RXJyb3IoKCkgPT4gcmVzKSA6IG9mKHJlcyk7XG5cbiAgICBpZiAoY29uZmlnLmV4ZWN1dGVPdGhlckludGVyY2VwdG9ycykge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3JzID0gdGhpcy5pbmplY3Rvci5nZXQoSFRUUF9JTlRFUkNFUFRPUlMsIFtdKTtcbiAgICAgIGNvbnN0IGxhc3RJbnRlcmNlcHRvcnMgPSBpbnRlcmNlcHRvcnMuc2xpY2UoaW50ZXJjZXB0b3JzLmluZGV4T2YodGhpcykgKyAxKTtcbiAgICAgIGlmIChsYXN0SW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY2hhaW4gPSBsYXN0SW50ZXJjZXB0b3JzLnJlZHVjZVJpZ2h0KFxuICAgICAgICAgIChfbmV4dCwgX2ludGVyY2VwdG9yKSA9PiBuZXcgSHR0cE1vY2tJbnRlcmNlcHRvckhhbmRsZXIoX25leHQsIF9pbnRlcmNlcHRvciksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiByZXMkXG4gICAgICAgICAgfSBhcyBIdHRwQmFja2VuZFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gY2hhaW4uaGFuZGxlKHJlcSkucGlwZShkZWxheShjb25maWcuZGVsYXkhKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcyQucGlwZShkZWxheShjb25maWcuZGVsYXkhKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,30 +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
- import * as i0 from "@angular/core";
6
- export class DelonMockModule {
7
- static forRoot(options) {
8
- return {
9
- ngModule: DelonMockModule,
10
- providers: [
11
- { provide: MockOptions, useValue: options },
12
- { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }
13
- ]
14
- };
15
- }
16
- static forChild() {
17
- return {
18
- ngModule: DelonMockModule,
19
- providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
20
- };
21
- }
22
- }
23
- DelonMockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- DelonMockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
25
- DelonMockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, decorators: [{
27
- type: NgModule,
28
- args: [{}]
29
- }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb2NrL3NyYy9tb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHckQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFxQjtRQUNsQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO2dCQUMzQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDdkU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3BGLENBQUM7SUFDSixDQUFDOzs0R0FoQlUsZUFBZTs2R0FBZixlQUFlOzZHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNb2NrT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vY2tJbnRlcmNlcHRvciB9IGZyb20gJy4vbW9jay5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBEZWxvbk1vY2tNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zPzogTW9ja09wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPERlbG9uTW9ja01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVsb25Nb2NrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTW9ja09wdGlvbnMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXG4gICAgICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBNb2NrSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVsb25Nb2NrTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEZWxvbk1vY2tNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogTW9ja0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,141 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
3
- import { MOCK_DEFULAT_CONFIG } from './mock.config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@delon/util/config";
6
- import * as i2 from "./interface";
7
- export class MockService {
8
- constructor(cogSrv, options) {
9
- this.cached = [];
10
- this.config = cogSrv.merge('mock', MOCK_DEFULAT_CONFIG);
11
- this.setData(options?.data);
12
- }
13
- /**
14
- * Reset request data
15
- *
16
- * 重新设置请求数据
17
- */
18
- setData(data) {
19
- this.applyMock(data);
20
- }
21
- // #region parse rule
22
- applyMock(data) {
23
- this.cached = [];
24
- try {
25
- this.realApplyMock(data);
26
- }
27
- catch (e) {
28
- this.outputError(e);
29
- }
30
- }
31
- realApplyMock(data) {
32
- if (!data)
33
- return;
34
- Object.keys(data).forEach((key) => {
35
- const rules = data[key];
36
- if (!rules)
37
- return;
38
- Object.keys(rules).forEach((ruleKey) => {
39
- const value = rules[ruleKey];
40
- if (!(typeof value === 'function' || typeof value === 'object' || typeof value === 'string')) {
41
- throw Error(`mock value of [${key}-${ruleKey}] should be function or object or string, but got ${typeof value}`);
42
- }
43
- const rule = this.genRule(ruleKey, value);
44
- if (['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH', 'OPTIONS'].indexOf(rule.method) === -1) {
45
- throw Error(`method of ${key}-${ruleKey} is not valid`);
46
- }
47
- const item = this.cached.find(w => w.url === rule.url && w.method === rule.method);
48
- if (item) {
49
- item.callback = rule.callback;
50
- }
51
- else {
52
- this.cached.push(rule);
53
- }
54
- });
55
- });
56
- // regular ordering
57
- this.cached.sort((a, b) => (b.martcher || '').toString().length - (a.martcher || '').toString().length);
58
- }
59
- genRule(key, callback) {
60
- let method = 'GET';
61
- let url = key;
62
- if (key.indexOf(' ') > -1) {
63
- const splited = key.split(' ');
64
- method = splited[0].toLowerCase();
65
- url = splited[1];
66
- }
67
- let martcher = null;
68
- let segments = [];
69
- if (~url.indexOf(':')) {
70
- segments = url
71
- .split('/')
72
- .filter(segment => segment.startsWith(':'))
73
- .map(v => v.substring(1));
74
- const reStr = url
75
- .split('/')
76
- .map(segment => (segment.startsWith(':') ? `([^/]+)` : segment))
77
- .join('/');
78
- martcher = new RegExp(`^${reStr}`, 'i');
79
- }
80
- else if (/(\([^)]+\))/i.test(url)) {
81
- martcher = new RegExp(url, 'i');
82
- }
83
- return {
84
- url,
85
- martcher,
86
- segments,
87
- callback,
88
- method: method.toUpperCase()
89
- };
90
- }
91
- outputError(error) {
92
- const filePath = error.message.split(': ')[0];
93
- const errors = error.stack
94
- .split('\n')
95
- .filter(line => line.trim().indexOf('at ') !== 0)
96
- .map(line => line.replace(`${filePath}: `, ''));
97
- errors.splice(1, 0, '');
98
- console.group();
99
- console.warn(`==========Failed to parse mock config.==========`);
100
- console.log(errors.join('\n'));
101
- console.groupEnd();
102
- throw error;
103
- }
104
- // #endregion
105
- getRule(method, url) {
106
- method = (method || 'GET').toUpperCase();
107
- const params = {};
108
- const list = this.cached.filter(w => w.method === method && (w.martcher ? w.martcher.test(url) : w.url === url));
109
- if (list.length === 0)
110
- return null;
111
- const ret = list.find(w => w.url === url) || list[0];
112
- if (ret.martcher) {
113
- const execArr = ret.martcher.exec(url);
114
- execArr.slice(1).map((value, index) => {
115
- params[ret.segments[index]] = value;
116
- });
117
- }
118
- return {
119
- url,
120
- method: ret.method,
121
- params,
122
- callback: ret.callback
123
- };
124
- }
125
- clearCache() {
126
- this.cached = [];
127
- }
128
- get rules() {
129
- return this.cached;
130
- }
131
- ngOnDestroy() {
132
- this.clearCache();
133
- }
134
- }
135
- MockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, deps: [{ token: i1.AlainConfigService }, { token: i2.MockOptions }], target: i0.ɵɵFactoryTarget.Injectable });
136
- MockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, providedIn: 'root' });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, decorators: [{
138
- type: Injectable,
139
- args: [{ providedIn: 'root' }]
140
- }], ctorParameters: function () { return [{ type: i1.AlainConfigService }, { type: i2.MockOptions }]; } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9jay9zcmMvbW9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUdwRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUFZLE1BQTBCLEVBQUUsT0FBb0I7UUFIcEQsV0FBTSxHQUFxQixFQUFFLENBQUM7UUFJcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLElBQVM7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxxQkFBcUI7SUFFYixTQUFTLENBQUMsSUFBUztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsSUFBUztRQUM3QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENB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QUUsS0FBYSxFQUFFLEVBQUU7Z0JBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPO1lBQ0wsR0FBRztZQUNILE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtZQUNsQixNQUFNO1lBQ04sUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7d0dBNUlVLFdBQVc7NEdBQVgsV0FBVyxjQURFLE1BQU07MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFsYWluQ29uZmlnU2VydmljZSwgQWxhaW5Nb2NrQ29uZmlnIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcblxuaW1wb3J0IHsgTW9ja0NhY2hlZFJ1bGUsIE1vY2tPcHRpb25zLCBNb2NrUnVsZSB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IE1PQ0tfREVGVUxBVF9DT05GSUcgfSBmcm9tICcuL21vY2suY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2NrU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2FjaGVkOiBNb2NrQ2FjaGVkUnVsZVtdID0gW107XG4gIHJlYWRvbmx5IGNvbmZpZzogQWxhaW5Nb2NrQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvZ1NydjogQWxhaW5Db25maWdTZXJ2aWNlLCBvcHRpb25zOiBNb2NrT3B0aW9ucykge1xuICAgIHRoaXMuY29uZmlnID0gY29nU3J2Lm1lcmdlKCdtb2NrJywgTU9DS19ERUZVTEFUX0NPTkZJRykhO1xuICAgIHRoaXMuc2V0RGF0YShvcHRpb25zPy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCByZXF1ZXN0IGRhdGFcbiAgICpcbiAgICog6YeN5paw6K6+572u6K+35rGC5pWw5o2uXG4gICAqL1xuICBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlNb2NrKGRhdGEpO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBwYXJzZSBydWxlXG5cbiAgcHJpdmF0ZSBhcHBseU1vY2soZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZWQgPSBbXTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFsQXBwbHlNb2NrKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMub3V0cHV0RXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFsQXBwbHlNb2NrKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBydWxlcyA9IGRhdGFba2V5XTtcbiAgICAgIGlmICghcnVsZXMpIHJldHVybjtcbiAgICAgIE9iamVjdC5rZXlzKHJ1bGVzKS5mb3JFYWNoKChydWxlS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBydWxlc1tydWxlS2V5XTtcbiAgICAgICAgaWYgKCEodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIGBtb2NrIHZhbHVlIG9mIFske2tleX0tJHtydWxlS2V5fV0gc2hvdWxkIGJlIGZ1bmN0aW9uIG9yIG9iamVjdCBvciBzdHJpbmcsIGJ1dCBnb3QgJHt0eXBlb2YgdmFsdWV9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnVsZSA9IHRoaXMuZ2VuUnVsZShydWxlS2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChbJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdIRUFEJywgJ0RFTEVURScsICdQQVRDSCcsICdPUFRJT05TJ10uaW5kZXhPZihydWxlLm1ldGhvZCkgPT09IC0xKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoYG1ldGhvZCBvZiAke2tleX0tJHtydWxlS2V5fSBpcyBub3QgdmFsaWRgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5jYWNoZWQuZmluZCh3ID0+IHcudXJsID09PSBydWxlLnVybCAmJiB3Lm1ldGhvZCA9PT0gcnVsZS5tZXRob2QpO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIGl0ZW0uY2FsbGJhY2sgPSBydWxlLmNhbGxiYWNrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2FjaGVkLnB1c2gocnVsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHJlZ3VsYXIgb3JkZXJpbmdcbiAgICB0aGlzLmNhY2hlZC5zb3J0KChhLCBiKSA9PiAoYi5tYXJ0Y2hlciB8fCAnJykudG9TdHJpbmcoKS5sZW5ndGggLSAoYS5tYXJ0Y2hlciB8fCAnJykudG9TdHJpbmcoKS5sZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5SdWxlKGtleTogc3RyaW5nLCBjYWxsYmFjazogYW55KTogTW9ja0NhY2hlZFJ1bGUge1xuICAgIGxldCBtZXRob2QgPSAnR0VUJztcbiAgICBsZXQgdXJsID0ga2V5O1xuXG4gICAgaWYgKGtleS5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY29uc3Qgc3BsaXRlZCA9IGtleS5zcGxpdCgnICcpO1xuICAgICAgbWV0aG9kID0gc3BsaXRlZFswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdXJsID0gc3BsaXRlZFsxXTtcbiAgICB9XG5cbiAgICBsZXQgbWFydGNoZXI6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAofnVybC5pbmRleE9mKCc6JykpIHtcbiAgICAgIHNlZ21lbnRzID0gdXJsIVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAuZmlsdGVyKHNlZ21lbnQgPT4gc2VnbWVudC5zdGFydHNXaXRoKCc6JykpXG4gICAgICAgIC5tYXAodiA9PiB2LnN1YnN0cmluZygxKSk7XG4gICAgICBjb25zdCByZVN0ciA9IHVybCFcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLm1hcChzZWdtZW50ID0+IChzZWdtZW50LnN0YXJ0c1dpdGgoJzonKSA/IGAoW14vXSspYCA6IHNlZ21lbnQpKVxuICAgICAgICAuam9pbignLycpO1xuICAgICAgbWFydGNoZXIgPSBuZXcgUmVnRXhwKGBeJHtyZVN0cn1gLCAnaScpO1xuICAgIH0gZWxzZSBpZiAoLyhcXChbXildK1xcKSkvaS50ZXN0KHVybCkpIHtcbiAgICAgIG1hcnRjaGVyID0gbmV3IFJlZ0V4cCh1cmwsICdpJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVybCxcbiAgICAgIG1hcnRjaGVyLFxuICAgICAgc2VnbWVudHMsXG4gICAgICBjYWxsYmFjayxcbiAgICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvdXRwdXRFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBlcnJvci5tZXNzYWdlLnNwbGl0KCc6ICcpWzBdO1xuICAgIGNvbnN0IGVycm9ycyA9IChlcnJvci5zdGFjayBhcyBzdHJpbmcpXG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS50cmltKCkuaW5kZXhPZignYXQgJykgIT09IDApXG4gICAgICAubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKGAke2ZpbGVQYXRofTogYCwgJycpKTtcbiAgICBlcnJvcnMuc3BsaWNlKDEsIDAsICcnKTtcblxuICAgIGNvbnNvbGUuZ3JvdXAoKTtcbiAgICBjb25zb2xlLndhcm4oYD09PT09PT09PT1GYWlsZWQgdG8gcGFyc2UgbW9jayBjb25maWcuPT09PT09PT09PWApO1xuICAgIGNvbnNvbGUubG9nKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgY29uc29sZS5ncm91cEVuZCgpO1xuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cbiAgZ2V0UnVsZShtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcpOiBNb2NrUnVsZSB8IG51bGwge1xuICAgIG1ldGhvZCA9IChtZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5jYWNoZWQuZmlsdGVyKHcgPT4gdy5tZXRob2QgPT09IG1ldGhvZCAmJiAody5tYXJ0Y2hlciA/IHcubWFydGNoZXIudGVzdCh1cmwpIDogdy51cmwgPT09IHVybCkpO1xuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmV0ID0gbGlzdC5maW5kKHcgPT4gdy51cmwgPT09IHVybCkgfHwgbGlzdFswXTtcbiAgICBpZiAocmV0Lm1hcnRjaGVyKSB7XG4gICAgICBjb25zdCBleGVjQXJyID0gcmV0Lm1hcnRjaGVyLmV4ZWModXJsKTtcbiAgICAgIGV4ZWNBcnIhLnNsaWNlKDEpLm1hcCgodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBwYXJhbXNbcmV0LnNlZ21lbnRzW2luZGV4XV0gPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdXJsLFxuICAgICAgbWV0aG9kOiByZXQubWV0aG9kLFxuICAgICAgcGFyYW1zLFxuICAgICAgY2FsbGJhY2s6IHJldC5jYWxsYmFja1xuICAgIH07XG4gIH1cblxuICBjbGVhckNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGVkID0gW107XG4gIH1cblxuICBnZXQgcnVsZXMoKTogTW9ja0NhY2hlZFJ1bGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH1cbn1cbiJdfQ==
package/fesm2015/mock.mjs DELETED
@@ -1,294 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
3
- import * as i1 from '@delon/util/config';
4
- import { HttpErrorResponse, HttpResponseBase, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
5
- import { throwError, of, delay } from 'rxjs';
6
- import { deepCopy } from '@delon/util/other';
7
-
8
- class MockOptions {
9
- }
10
-
11
- /* eslint-disable @typescript-eslint/no-explicit-any */
12
- class MockStatusError {
13
- constructor(status, error) {
14
- this.status = status;
15
- this.error = error;
16
- }
17
- }
18
-
19
- const MOCK_DEFULAT_CONFIG = {
20
- delay: 300,
21
- force: false,
22
- log: true,
23
- executeOtherInterceptors: true
24
- };
25
-
26
- /* eslint-disable @typescript-eslint/no-explicit-any */
27
- class MockService {
28
- constructor(cogSrv, options) {
29
- this.cached = [];
30
- this.config = cogSrv.merge('mock', MOCK_DEFULAT_CONFIG);
31
- this.setData(options === null || options === void 0 ? void 0 : options.data);
32
- }
33
- /**
34
- * Reset request data
35
- *
36
- * 重新设置请求数据
37
- */
38
- setData(data) {
39
- this.applyMock(data);
40
- }
41
- // #region parse rule
42
- applyMock(data) {
43
- this.cached = [];
44
- try {
45
- this.realApplyMock(data);
46
- }
47
- catch (e) {
48
- this.outputError(e);
49
- }
50
- }
51
- realApplyMock(data) {
52
- if (!data)
53
- return;
54
- Object.keys(data).forEach((key) => {
55
- const rules = data[key];
56
- if (!rules)
57
- return;
58
- Object.keys(rules).forEach((ruleKey) => {
59
- const value = rules[ruleKey];
60
- if (!(typeof value === 'function' || typeof value === 'object' || typeof value === 'string')) {
61
- throw Error(`mock value of [${key}-${ruleKey}] should be function or object or string, but got ${typeof value}`);
62
- }
63
- const rule = this.genRule(ruleKey, value);
64
- if (['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH', 'OPTIONS'].indexOf(rule.method) === -1) {
65
- throw Error(`method of ${key}-${ruleKey} is not valid`);
66
- }
67
- const item = this.cached.find(w => w.url === rule.url && w.method === rule.method);
68
- if (item) {
69
- item.callback = rule.callback;
70
- }
71
- else {
72
- this.cached.push(rule);
73
- }
74
- });
75
- });
76
- // regular ordering
77
- this.cached.sort((a, b) => (b.martcher || '').toString().length - (a.martcher || '').toString().length);
78
- }
79
- genRule(key, callback) {
80
- let method = 'GET';
81
- let url = key;
82
- if (key.indexOf(' ') > -1) {
83
- const splited = key.split(' ');
84
- method = splited[0].toLowerCase();
85
- url = splited[1];
86
- }
87
- let martcher = null;
88
- let segments = [];
89
- if (~url.indexOf(':')) {
90
- segments = url
91
- .split('/')
92
- .filter(segment => segment.startsWith(':'))
93
- .map(v => v.substring(1));
94
- const reStr = url
95
- .split('/')
96
- .map(segment => (segment.startsWith(':') ? `([^/]+)` : segment))
97
- .join('/');
98
- martcher = new RegExp(`^${reStr}`, 'i');
99
- }
100
- else if (/(\([^)]+\))/i.test(url)) {
101
- martcher = new RegExp(url, 'i');
102
- }
103
- return {
104
- url,
105
- martcher,
106
- segments,
107
- callback,
108
- method: method.toUpperCase()
109
- };
110
- }
111
- outputError(error) {
112
- const filePath = error.message.split(': ')[0];
113
- const errors = error.stack
114
- .split('\n')
115
- .filter(line => line.trim().indexOf('at ') !== 0)
116
- .map(line => line.replace(`${filePath}: `, ''));
117
- errors.splice(1, 0, '');
118
- console.group();
119
- console.warn(`==========Failed to parse mock config.==========`);
120
- console.log(errors.join('\n'));
121
- console.groupEnd();
122
- throw error;
123
- }
124
- // #endregion
125
- getRule(method, url) {
126
- method = (method || 'GET').toUpperCase();
127
- const params = {};
128
- const list = this.cached.filter(w => w.method === method && (w.martcher ? w.martcher.test(url) : w.url === url));
129
- if (list.length === 0)
130
- return null;
131
- const ret = list.find(w => w.url === url) || list[0];
132
- if (ret.martcher) {
133
- const execArr = ret.martcher.exec(url);
134
- execArr.slice(1).map((value, index) => {
135
- params[ret.segments[index]] = value;
136
- });
137
- }
138
- return {
139
- url,
140
- method: ret.method,
141
- params,
142
- callback: ret.callback
143
- };
144
- }
145
- clearCache() {
146
- this.cached = [];
147
- }
148
- get rules() {
149
- return this.cached;
150
- }
151
- ngOnDestroy() {
152
- this.clearCache();
153
- }
154
- }
155
- MockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, deps: [{ token: i1.AlainConfigService }, { token: MockOptions }], target: i0.ɵɵFactoryTarget.Injectable });
156
- MockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, providedIn: 'root' });
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockService, decorators: [{
158
- type: Injectable,
159
- args: [{ providedIn: 'root' }]
160
- }], ctorParameters: function () { return [{ type: i1.AlainConfigService }, { type: MockOptions }]; } });
161
-
162
- /* eslint-disable @typescript-eslint/no-explicit-any */
163
- class HttpMockInterceptorHandler {
164
- constructor(next, interceptor) {
165
- this.next = next;
166
- this.interceptor = interceptor;
167
- }
168
- handle(req) {
169
- return this.interceptor.intercept(req, this.next);
170
- }
171
- }
172
- class MockInterceptor {
173
- constructor(injector) {
174
- this.injector = injector;
175
- }
176
- intercept(req, next) {
177
- const src = this.injector.get(MockService);
178
- const config = src.config;
179
- const rule = src.getRule(req.method, req.url.split('?')[0]);
180
- if (!rule && !config.force) {
181
- return next.handle(req);
182
- }
183
- let res;
184
- switch (typeof rule.callback) {
185
- case 'function':
186
- const mockRequest = {
187
- original: req,
188
- body: req.body,
189
- queryString: {},
190
- headers: {},
191
- params: rule.params
192
- };
193
- const urlParams = req.url.split('?');
194
- if (urlParams.length > 1) {
195
- urlParams[1].split('&').forEach(item => {
196
- const itemArr = item.split('=');
197
- const key = itemArr[0];
198
- const value = itemArr[1];
199
- // is array
200
- if (Object.keys(mockRequest.queryString).includes(key)) {
201
- if (!Array.isArray(mockRequest.queryString[key])) {
202
- mockRequest.queryString[key] = [mockRequest.queryString[key]];
203
- }
204
- mockRequest.queryString[key].push(value);
205
- }
206
- else {
207
- mockRequest.queryString[key] = value;
208
- }
209
- });
210
- }
211
- req.params.keys().forEach(key => (mockRequest.queryString[key] = req.params.get(key)));
212
- req.headers.keys().forEach(key => (mockRequest.headers[key] = req.headers.get(key)));
213
- try {
214
- res = rule.callback.call(this, mockRequest);
215
- }
216
- catch (e) {
217
- res = new HttpErrorResponse({
218
- url: req.url,
219
- headers: req.headers,
220
- status: e instanceof MockStatusError ? e.status : 400,
221
- statusText: e.statusText || 'Unknown Error',
222
- error: e.error
223
- });
224
- }
225
- break;
226
- default:
227
- res = rule.callback;
228
- break;
229
- }
230
- if (!(res instanceof HttpResponseBase)) {
231
- res = new HttpResponse({
232
- status: 200,
233
- url: req.url,
234
- body: res
235
- });
236
- }
237
- if (res.body) {
238
- res.body = deepCopy(res.body);
239
- }
240
- if (config.log) {
241
- console.log(`%c👽${req.method}->${req.urlWithParams}->request`, 'background:#000;color:#bada55', req);
242
- console.log(`%c👽${req.method}->${req.urlWithParams}->response`, 'background:#000;color:#bada55', res);
243
- }
244
- const res$ = res instanceof HttpErrorResponse ? throwError(() => res) : of(res);
245
- if (config.executeOtherInterceptors) {
246
- const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);
247
- const lastInterceptors = interceptors.slice(interceptors.indexOf(this) + 1);
248
- if (lastInterceptors.length > 0) {
249
- const chain = lastInterceptors.reduceRight((_next, _interceptor) => new HttpMockInterceptorHandler(_next, _interceptor), {
250
- handle: () => res$
251
- });
252
- return chain.handle(req).pipe(delay(config.delay));
253
- }
254
- }
255
- return res$.pipe(delay(config.delay));
256
- }
257
- }
258
- MockInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
259
- MockInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor });
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MockInterceptor, decorators: [{
261
- type: Injectable
262
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
263
-
264
- class DelonMockModule {
265
- static forRoot(options) {
266
- return {
267
- ngModule: DelonMockModule,
268
- providers: [
269
- { provide: MockOptions, useValue: options },
270
- { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }
271
- ]
272
- };
273
- }
274
- static forChild() {
275
- return {
276
- ngModule: DelonMockModule,
277
- providers: [{ provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true }]
278
- };
279
- }
280
- }
281
- DelonMockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
282
- DelonMockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
283
- DelonMockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule });
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DelonMockModule, decorators: [{
285
- type: NgModule,
286
- args: [{}]
287
- }] });
288
-
289
- /**
290
- * Generated bundle index. Do not edit.
291
- */
292
-
293
- export { DelonMockModule, MockInterceptor, MockOptions, MockService, MockStatusError };
294
- //# sourceMappingURL=mock.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.mjs","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":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpRequest } from '@angular/common/http';\n\nexport class MockOptions {\n data?: any;\n}\n\nexport interface MockCachedRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n martcher: RegExp | null;\n\n segments: string[];\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRule {\n [key: string]: any;\n\n method: string;\n\n url: string;\n\n /** 路由参数 */\n params?: any;\n\n callback(req: MockRequest): any;\n}\n\nexport interface MockRequest {\n /** 路由参数 */\n params?: any;\n /** URL参数 */\n queryString?: any;\n headers?: any;\n body?: any;\n /** 原始 `HttpRequest` */\n original: HttpRequest<any>;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport class MockStatusError {\n statusText?: string;\n\n constructor(public status: number, public error?: any) {}\n}\n","import type { 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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { AlainConfigService, AlainMockConfig } from '@delon/util/config';\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: any): void {\n this.applyMock(data);\n }\n\n // #region parse rule\n\n private applyMock(data: any): void {\n this.cached = [];\n try {\n this.realApplyMock(data);\n } catch (e) {\n this.outputError(e);\n }\n }\n\n private realApplyMock(data: any): 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: any): 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: any): 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: any = {};\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\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, delay } from 'rxjs';\n\nimport { deepCopy } from '@delon/util/other';\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<any>): Observable<HttpEvent<any>> {\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<any>, next: HttpHandler): Observable<HttpEvent<any>> {\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: any;\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: any) {\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":["i2.MockOptions"],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes