@smartbit4all/ng-client 3.1.25 → 3.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/session/projects.mjs +7 -9
- package/esm2020/lib/session/smart-session.module.mjs +6 -22
- package/esm2020/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +18 -22
- package/fesm2015/smartbit4all-ng-client.mjs +22 -396
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +22 -394
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/session/projects.d.ts +6 -8
- package/lib/session/smart-session.module.d.ts +7 -10
- package/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.d.ts +7 -8
- package/package.json +1 -1
- package/smartbit4all-ng-client-3.1.27.tgz +0 -0
- package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +0 -90
- package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +0 -43
- package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +0 -40
- package/esm2020/lib/session/dev-tool/smart-dev-tool.interceptor.mjs +0 -52
- package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +0 -165
- package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.d.ts +0 -28
- package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +0 -18
- package/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.d.ts +0 -15
- package/lib/session/dev-tool/smart-dev-tool.interceptor.d.ts +0 -18
- package/lib/session/dev-tool/smart-dev-tool.service.d.ts +0 -57
- package/smartbit4all-ng-client-3.1.25.tgz +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { Injectable, Pipe } from '@angular/core';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { SmartSubject } from '../../smart-subject/projects';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../cookie-service/smart-cookie.service";
|
|
7
|
-
export class SmartDevToolService {
|
|
8
|
-
constructor(cookieService) {
|
|
9
|
-
this.cookieService = cookieService;
|
|
10
|
-
this.smartDevToolName = 'smartDevTool';
|
|
11
|
-
this.isSmartDevToolActiveName = 'smartDevToolActive';
|
|
12
|
-
this.isActive = false;
|
|
13
|
-
this.smartDevToolHoursName = 'smartDevToolHours';
|
|
14
|
-
this.smartDevToolMaxName = 'smartDevToolMaxCalls';
|
|
15
|
-
this.hoursToSave = 1;
|
|
16
|
-
this.maxNumOfSavedCalls = 50;
|
|
17
|
-
this._destroy$ = new Subject();
|
|
18
|
-
this.descriptorChanged = new SmartSubject(this._destroy$);
|
|
19
|
-
this.newErrorsCount = 0;
|
|
20
|
-
this.newErrorsCountChanged = new SmartSubject(this._destroy$);
|
|
21
|
-
this.setUpLocalStorage();
|
|
22
|
-
let apiCallsFromLocalStorage = localStorage.getItem(this.smartDevToolName);
|
|
23
|
-
if (apiCallsFromLocalStorage) {
|
|
24
|
-
this.descriptor = JSON.parse(apiCallsFromLocalStorage);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
this.descriptor = { apiCalls: [] };
|
|
28
|
-
this.save();
|
|
29
|
-
}
|
|
30
|
-
window.addEventListener('storage', (event) => {
|
|
31
|
-
if (event.storageArea === localStorage) {
|
|
32
|
-
this.isActive = localStorage.getItem(this.isSmartDevToolActiveName) === 'true';
|
|
33
|
-
let hoursToSaveString = localStorage.getItem(this.smartDevToolHoursName);
|
|
34
|
-
if (hoursToSaveString) {
|
|
35
|
-
this.hoursToSave = Number.parseInt(hoursToSaveString);
|
|
36
|
-
}
|
|
37
|
-
let maxNumOfSavedCalls = localStorage.getItem(this.smartDevToolMaxName);
|
|
38
|
-
if (maxNumOfSavedCalls) {
|
|
39
|
-
this.maxNumOfSavedCalls = Number.parseInt(maxNumOfSavedCalls);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
this._destroy$.next();
|
|
46
|
-
this._destroy$.complete();
|
|
47
|
-
}
|
|
48
|
-
setUpLocalStorage() {
|
|
49
|
-
let keysOfLocalStorage = Object.keys(localStorage);
|
|
50
|
-
if (!keysOfLocalStorage.includes(this.isSmartDevToolActiveName)) {
|
|
51
|
-
localStorage.setItem(this.isSmartDevToolActiveName, 'true');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
writeResponse(request, response, requestDate, responseDate) {
|
|
55
|
-
this.sanitizeByLength();
|
|
56
|
-
this.sanitizeByTime();
|
|
57
|
-
let requestHeader = this.createObject(request.headers.keys(), request.headers, false);
|
|
58
|
-
let responseHeader = this.createObject(response.headers.keys(), response.headers, false);
|
|
59
|
-
let _localStorage = this.createObject(Object.keys(localStorage).filter((key) => key !== this.smartDevToolName), localStorage, true);
|
|
60
|
-
let _sessionStorage = this.createObject(Object.keys(sessionStorage), sessionStorage, true);
|
|
61
|
-
let _cookies = this.cookieService.getAll();
|
|
62
|
-
this.descriptor.apiCalls = [
|
|
63
|
-
{
|
|
64
|
-
url: response.url,
|
|
65
|
-
requestBody: request.body,
|
|
66
|
-
requestHeader,
|
|
67
|
-
requestDate,
|
|
68
|
-
requestMethod: request.method,
|
|
69
|
-
responseBody: response.body ?? null,
|
|
70
|
-
responseHeader,
|
|
71
|
-
responseStatus: response.status,
|
|
72
|
-
responseStatusText: response.statusText,
|
|
73
|
-
responseDate,
|
|
74
|
-
localStorage: _localStorage,
|
|
75
|
-
sessionStorage: _sessionStorage,
|
|
76
|
-
cookies: _cookies,
|
|
77
|
-
},
|
|
78
|
-
...this.descriptor.apiCalls,
|
|
79
|
-
];
|
|
80
|
-
if (response.status !== 200) {
|
|
81
|
-
this.newErrorsCount++;
|
|
82
|
-
this.newErrorsCountChanged.next();
|
|
83
|
-
}
|
|
84
|
-
this.save();
|
|
85
|
-
}
|
|
86
|
-
clearErrors() {
|
|
87
|
-
this.newErrorsCount = 0;
|
|
88
|
-
this.newErrorsCountChanged.next();
|
|
89
|
-
}
|
|
90
|
-
createObject(keys, mapWithValues, useGetItem) {
|
|
91
|
-
let newObject = {};
|
|
92
|
-
keys.forEach((key) => {
|
|
93
|
-
if (useGetItem) {
|
|
94
|
-
newObject[key] = mapWithValues.getItem(key);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
newObject[key] = mapWithValues.get(key);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return newObject;
|
|
101
|
-
}
|
|
102
|
-
sanitizeByTime() {
|
|
103
|
-
let now = new Date();
|
|
104
|
-
this.descriptor.apiCalls = this.descriptor.apiCalls.filter((apiCall) => {
|
|
105
|
-
let hoursBetween;
|
|
106
|
-
if (typeof apiCall.requestDate === 'string') {
|
|
107
|
-
hoursBetween = Math.floor(Math.abs(now.getMilliseconds() - new Date(apiCall.requestDate).getMilliseconds()) / 36e5);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
hoursBetween = Math.floor(Math.abs(now.getMilliseconds() - apiCall.requestDate.getMilliseconds()) / 36e5);
|
|
111
|
-
}
|
|
112
|
-
return hoursBetween < this.hoursToSave;
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
sanitizeByLength() {
|
|
116
|
-
if (this.descriptor?.apiCalls && this.descriptor.apiCalls.length > this.maxNumOfSavedCalls) {
|
|
117
|
-
let length = this.descriptor.apiCalls.length;
|
|
118
|
-
this.descriptor.apiCalls.splice(this.maxNumOfSavedCalls - 1, length - this.maxNumOfSavedCalls);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
save() {
|
|
122
|
-
try {
|
|
123
|
-
localStorage.setItem(this.smartDevToolName, JSON.stringify(this.descriptor));
|
|
124
|
-
this.descriptorChanged.next();
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
// localStorage.setItem() throws a "QuotaExceededError" DOMException exception if the new value
|
|
128
|
-
// couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site,
|
|
129
|
-
// or if the quota has been exceeded.)
|
|
130
|
-
this.sanitizeByLength();
|
|
131
|
-
this.save();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
clear() {
|
|
135
|
-
this.descriptor = {
|
|
136
|
-
apiCalls: [],
|
|
137
|
-
};
|
|
138
|
-
this.save();
|
|
139
|
-
}
|
|
140
|
-
getPureString() {
|
|
141
|
-
return localStorage.getItem(this.smartDevToolName);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
SmartDevToolService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolService, deps: [{ token: i1.SmartCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
-
SmartDevToolService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolService, providedIn: 'root' });
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolService, decorators: [{
|
|
147
|
-
type: Injectable,
|
|
148
|
-
args: [{
|
|
149
|
-
providedIn: 'root',
|
|
150
|
-
}]
|
|
151
|
-
}], ctorParameters: function () { return [{ type: i1.SmartCookieService }]; } });
|
|
152
|
-
export class SmartDevToolDatePipe extends DatePipe {
|
|
153
|
-
transform(value, format = 'yyyy.MM.dd. H:mm:ss') {
|
|
154
|
-
return super.transform(value, format);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
SmartDevToolDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolDatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
|
|
158
|
-
SmartDevToolDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolDatePipe, name: "smartDevToolDatePipe" });
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartDevToolDatePipe, decorators: [{
|
|
160
|
-
type: Pipe,
|
|
161
|
-
args: [{
|
|
162
|
-
name: 'smartDevToolDatePipe',
|
|
163
|
-
}]
|
|
164
|
-
}] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vZGV2LXRvb2wvc21hcnQtZGV2LXRvb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBYSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFLNUQsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsYUFBaUM7UUFBakMsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBZHJELHFCQUFnQixHQUFXLGNBQWMsQ0FBQztRQUMxQyw2QkFBd0IsR0FBVyxvQkFBb0IsQ0FBQztRQUN4RCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLDBCQUFxQixHQUFXLG1CQUFtQixDQUFDO1FBQ3BELHdCQUFtQixHQUFXLHNCQUFzQixDQUFDO1FBQ3JELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFakQsc0JBQWlCLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRSxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQiwwQkFBcUIsR0FBa0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBR3RFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLElBQUksd0JBQXdCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FB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b250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0Q29va2llU2VydmljZSB9IGZyb20gJy4uL2Nvb2tpZS1zZXJ2aWNlL3NtYXJ0LWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREZXZUb29sU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgZGVzY3JpcHRvcj86IFNtYXJ0RGV2VG9vbERlc2NyaXB0b3I7XHJcblxyXG4gIHNtYXJ0RGV2VG9vbE5hbWU6IHN0cmluZyA9ICdzbWFydERldlRvb2wnO1xyXG4gIGlzU21hcnREZXZUb29sQWN0aXZlTmFtZTogc3RyaW5nID0gJ3NtYXJ0RGV2VG9vbEFjdGl2ZSc7XHJcbiAgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzbWFydERldlRvb2xIb3Vyc05hbWU6IHN0cmluZyA9ICdzbWFydERldlRvb2xIb3Vycyc7XHJcbiAgc21hcnREZXZUb29sTWF4TmFtZTogc3RyaW5nID0gJ3NtYXJ0RGV2VG9vbE1heENhbGxzJztcclxuICBob3Vyc1RvU2F2ZTogbnVtYmVyID0gMTtcclxuICBtYXhOdW1PZlNhdmVkQ2FsbHM6IG51bWJlciA9IDUwO1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgZGVzY3JpcHRvckNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgbmV3RXJyb3JzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgbmV3RXJyb3JzQ291bnRDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29va2llU2VydmljZTogU21hcnRDb29raWVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNldFVwTG9jYWxTdG9yYWdlKCk7XHJcblxyXG4gICAgbGV0IGFwaUNhbGxzRnJvbUxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc21hcnREZXZUb29sTmFtZSk7XHJcbiAgICBpZiAoYXBpQ2FsbHNGcm9tTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMuZGVzY3JpcHRvciA9IEpTT04ucGFyc2UoYXBpQ2FsbHNGcm9tTG9jYWxTdG9yYWdlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHsgYXBpQ2FsbHM6IFtdIH07XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5zdG9yYWdlQXJlYSA9PT0gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuaXNTbWFydERldlRvb2xBY3RpdmVOYW1lKSA9PT0gJ3RydWUnO1xyXG4gICAgICAgIGxldCBob3Vyc1RvU2F2ZVN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc21hcnREZXZUb29sSG91cnNOYW1lKTtcclxuICAgICAgICBpZiAoaG91cnNUb1NhdmVTdHJpbmcpIHtcclxuICAgICAgICAgIHRoaXMuaG91cnNUb1NhdmUgPSBOdW1iZXIucGFyc2VJbnQoaG91cnNUb1NhdmVTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWF4TnVtT2ZTYXZlZENhbGxzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zbWFydERldlRvb2xNYXhOYW1lKTtcclxuICAgICAgICBpZiAobWF4TnVtT2ZTYXZlZENhbGxzKSB7XHJcbiAgICAgICAgICB0aGlzLm1heE51bU9mU2F2ZWRDYWxscyA9IE51bWJlci5wYXJzZUludChtYXhOdW1PZlNhdmVkQ2FsbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xyXG4gICAgbGV0IGtleXNPZkxvY2FsU3RvcmFnZSA9IE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSk7XHJcbiAgICBpZiAoIWtleXNPZkxvY2FsU3RvcmFnZS5pbmNsdWRlcyh0aGlzLmlzU21hcnREZXZUb29sQWN0aXZlTmFtZSkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pc1NtYXJ0RGV2VG9vbEFjdGl2ZU5hbWUsICd0cnVlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVJlc3BvbnNlKFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8YW55PiB8IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdERhdGU6IERhdGUsXHJcbiAgICByZXNwb25zZURhdGU6IERhdGVcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuc2FuaXRpemVCeUxlbmd0aCgpO1xyXG4gICAgdGhpcy5zYW5pdGl6ZUJ5VGltZSgpO1xyXG5cclxuICAgIGxldCByZXF1ZXN0SGVhZGVyOiBhbnkgPSB0aGlzLmNyZWF0ZU9iamVjdChyZXF1ZXN0LmhlYWRlcnMua2V5cygpLCByZXF1ZXN0LmhlYWRlcnMsIGZhbHNlKTtcclxuICAgIGxldCByZXNwb25zZUhlYWRlcjogYW55ID0gdGhpcy5jcmVhdGVPYmplY3QocmVzcG9uc2UuaGVhZGVycy5rZXlzKCksIHJlc3BvbnNlLmhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBsZXQgX2xvY2FsU3RvcmFnZTogYW55ID0gdGhpcy5jcmVhdGVPYmplY3QoXHJcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuZmlsdGVyKChrZXk6IHN0cmluZykgPT4ga2V5ICE9PSB0aGlzLnNtYXJ0RGV2VG9vbE5hbWUpLFxyXG4gICAgICBsb2NhbFN0b3JhZ2UsXHJcbiAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgX3Nlc3Npb25TdG9yYWdlOiBhbnkgPSB0aGlzLmNyZWF0ZU9iamVjdChPYmplY3Qua2V5cyhzZXNzaW9uU3RvcmFnZSksIHNlc3Npb25TdG9yYWdlLCB0cnVlKTtcclxuICAgIGxldCBfY29va2llczogYW55ID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldEFsbCgpO1xyXG5cclxuICAgIHRoaXMuZGVzY3JpcHRvciEuYXBpQ2FsbHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB1cmw6IHJlc3BvbnNlLnVybCxcclxuICAgICAgICByZXF1ZXN0Qm9keTogcmVxdWVzdC5ib2R5LFxyXG4gICAgICAgIHJlcXVlc3RIZWFkZXIsXHJcbiAgICAgICAgcmVxdWVzdERhdGUsXHJcbiAgICAgICAgcmVxdWVzdE1ldGhvZDogcmVxdWVzdC5tZXRob2QsXHJcbiAgICAgICAgcmVzcG9uc2VCb2R5OiAocmVzcG9uc2UgYXMgSHR0cFJlc3BvbnNlPGFueT4pLmJvZHkgPz8gbnVsbCxcclxuICAgICAgICByZXNwb25zZUhlYWRlcixcclxuICAgICAgICByZXNwb25zZVN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgIHJlc3BvbnNlU3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICByZXNwb25zZURhdGUsXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlOiBfbG9jYWxTdG9yYWdlLFxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlOiBfc2Vzc2lvblN0b3JhZ2UsXHJcbiAgICAgICAgY29va2llczogX2Nvb2tpZXMsXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLnRoaXMuZGVzY3JpcHRvciEuYXBpQ2FsbHMsXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xyXG4gICAgICB0aGlzLm5ld0Vycm9yc0NvdW50Kys7XHJcbiAgICAgIHRoaXMubmV3RXJyb3JzQ291bnRDaGFuZ2VkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNhdmUoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRXJyb3JzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZXdFcnJvcnNDb3VudCA9IDA7XHJcbiAgICB0aGlzLm5ld0Vycm9yc0NvdW50Q2hhbmdlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVPYmplY3Qoa2V5czogc3RyaW5nW10sIG1hcFdpdGhWYWx1ZXM6IGFueSwgdXNlR2V0SXRlbTogYm9vbGVhbik6IGFueSB7XHJcbiAgICBsZXQgbmV3T2JqZWN0OiBhbnkgPSB7fTtcclxuICAgIGtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHVzZUdldEl0ZW0pIHtcclxuICAgICAgICBuZXdPYmplY3Rba2V5XSA9IG1hcFdpdGhWYWx1ZXMuZ2V0SXRlbShrZXkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld09iamVjdFtrZXldID0gbWFwV2l0aFZhbHVlcy5nZXQoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3T2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgc2FuaXRpemVCeVRpbWUoKTogdm9pZCB7XHJcbiAgICBsZXQgbm93OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuZGVzY3JpcHRvciEuYXBpQ2FsbHMgPSB0aGlzLmRlc2NyaXB0b3IhLmFwaUNhbGxzLmZpbHRlcihcclxuICAgICAgKGFwaUNhbGw6IFNtYXJ0RGV2VG9vbEFwaUNhbGxEZXNjcmlwdG9yKSA9PiB7XHJcbiAgICAgICAgbGV0IGhvdXJzQmV0d2VlbjogbnVtYmVyO1xyXG4gICAgICAgIGlmICh0eXBlb2YgYXBpQ2FsbC5yZXF1ZXN0RGF0ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGhvdXJzQmV0d2VlbiA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgICAgIE1hdGguYWJzKG5vdy5nZXRNaWxsaXNlY29uZHMoKSAtIG5ldyBEYXRlKGFwaUNhbGwucmVxdWVzdERhdGUpLmdldE1pbGxpc2Vjb25kcygpKSAvIDM2ZTVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGhvdXJzQmV0d2VlbiA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgICAgIE1hdGguYWJzKG5vdy5nZXRNaWxsaXNlY29uZHMoKSAtIGFwaUNhbGwucmVxdWVzdERhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpIC8gMzZlNVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBob3Vyc0JldHdlZW4gPCB0aGlzLmhvdXJzVG9TYXZlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2FuaXRpemVCeUxlbmd0aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3I/LmFwaUNhbGxzICYmIHRoaXMuZGVzY3JpcHRvci5hcGlDYWxscy5sZW5ndGggPiB0aGlzLm1heE51bU9mU2F2ZWRDYWxscykge1xyXG4gICAgICBsZXQgbGVuZ3RoID0gdGhpcy5kZXNjcmlwdG9yLmFwaUNhbGxzLmxlbmd0aDtcclxuICAgICAgdGhpcy5kZXNjcmlwdG9yLmFwaUNhbGxzLnNwbGljZShcclxuICAgICAgICB0aGlzLm1heE51bU9mU2F2ZWRDYWxscyAtIDEsXHJcbiAgICAgICAgbGVuZ3RoIC0gdGhpcy5tYXhOdW1PZlNhdmVkQ2FsbHNcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnNtYXJ0RGV2VG9vbE5hbWUsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGVzY3JpcHRvcikpO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0b3JDaGFuZ2VkLm5leHQoKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oKSB0aHJvd3MgYSBcIlF1b3RhRXhjZWVkZWRFcnJvclwiIERPTUV4Y2VwdGlvbiBleGNlcHRpb24gaWYgdGhlIG5ldyB2YWx1ZVxyXG4gICAgICAvLyBjb3VsZG4ndCBiZSBzZXQuIChTZXR0aW5nIGNvdWxkIGZhaWwgaWYsIGUuZy4sIHRoZSB1c2VyIGhhcyBkaXNhYmxlZCBzdG9yYWdlIGZvciB0aGUgc2l0ZSxcclxuICAgICAgLy8gb3IgaWYgdGhlIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLilcclxuICAgICAgdGhpcy5zYW5pdGl6ZUJ5TGVuZ3RoKCk7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IgPSB7XHJcbiAgICAgIGFwaUNhbGxzOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNhdmUoKTtcclxuICB9XHJcblxyXG4gIGdldFB1cmVTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnNtYXJ0RGV2VG9vbE5hbWUpITtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREZXZUb29sRGVzY3JpcHRvciB7XHJcbiAgYXBpQ2FsbHM6IFNtYXJ0RGV2VG9vbEFwaUNhbGxEZXNjcmlwdG9yW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREZXZUb29sQXBpQ2FsbERlc2NyaXB0b3Ige1xyXG4gIHVybDogc3RyaW5nIHwgbnVsbDtcclxuICByZXNwb25zZUJvZHk6IGFueTtcclxuICByZXNwb25zZUhlYWRlcjogYW55O1xyXG4gIHJlc3BvbnNlU3RhdHVzOiBudW1iZXI7XHJcbiAgcmVzcG9uc2VTdGF0dXNUZXh0OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VEYXRlOiBEYXRlO1xyXG4gIHJlcXVlc3RIZWFkZXI6IGFueTtcclxuICByZXF1ZXN0Qm9keTogYW55O1xyXG4gIHJlcXVlc3REYXRlOiBEYXRlO1xyXG4gIHJlcXVlc3RNZXRob2Q6IHN0cmluZztcclxuICBsb2NhbFN0b3JhZ2U6IGFueTtcclxuICBzZXNzaW9uU3RvcmFnZTogYW55O1xyXG4gIGNvb2tpZXM6IGFueTtcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdzbWFydERldlRvb2xEYXRlUGlwZScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydERldlRvb2xEYXRlUGlwZSBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nID0gJ3l5eXkuTU0uZGQuIEg6bW06c3MnKTogYW55IHtcclxuICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { OnDestroy } from '@angular/core';
|
|
2
|
-
import { SmartDevToolDescriptor } from '../smart-dev-tool.service';
|
|
3
|
-
import { SmartDevToolDialogService } from './smart-dev-tool-dialog.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class SmartDevToolDialogComponent implements OnDestroy {
|
|
6
|
-
private service;
|
|
7
|
-
private _destroy$;
|
|
8
|
-
descriptor?: SmartDevToolDescriptor;
|
|
9
|
-
constructor(service: SmartDevToolDialogService);
|
|
10
|
-
ngOnDestroy(): void;
|
|
11
|
-
clear(): void;
|
|
12
|
-
getBody(inp: any): any;
|
|
13
|
-
syntaxHighlight(json: any): any;
|
|
14
|
-
copy(): void;
|
|
15
|
-
close(): void;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolDialogComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SmartDevToolDialogComponent, "app-smart-dev-tool-dialog", never, {}, {}, never, never>;
|
|
18
|
-
}
|
|
19
|
-
interface ICopyToClipboard {
|
|
20
|
-
/** HTML reference identifier ```<div id="foo"></div>``` */
|
|
21
|
-
target?: string;
|
|
22
|
-
/** String value */
|
|
23
|
-
value?: string;
|
|
24
|
-
/** (Optional) message to display in snackbar on success */
|
|
25
|
-
message?: string;
|
|
26
|
-
}
|
|
27
|
-
export declare const copyToClipboard: ({ target, message, value }: ICopyToClipboard) => Promise<void>;
|
|
28
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { SmartdialogService } from '../../../smart-dialog/projects';
|
|
5
|
-
import { SmartDevToolDescriptor, SmartDevToolService } from '../smart-dev-tool.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class SmartDevToolDialogService extends SmartdialogService {
|
|
8
|
-
service: SmartDevToolService;
|
|
9
|
-
update: Subject<void>;
|
|
10
|
-
constructor(dialog: MatDialog, router: Router, service: SmartDevToolService);
|
|
11
|
-
handleAfterClosed(result: any): void;
|
|
12
|
-
openDialog(): void;
|
|
13
|
-
getData(): SmartDevToolDescriptor;
|
|
14
|
-
getPureString(): string;
|
|
15
|
-
clear(): void;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolDialogService, never>;
|
|
17
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SmartDevToolDialogService>;
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { OnDestroy } from '@angular/core';
|
|
2
|
-
import { SmartDevToolDialogService } from '../smart-dev-tool-dialog/smart-dev-tool-dialog.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class SmartDevToolFloatingButtonComponent implements OnDestroy {
|
|
5
|
-
private service;
|
|
6
|
-
private _destroy$;
|
|
7
|
-
adminKeyName: string;
|
|
8
|
-
isShown: boolean;
|
|
9
|
-
errorsCount: string;
|
|
10
|
-
constructor(service: SmartDevToolDialogService);
|
|
11
|
-
ngOnDestroy(): void;
|
|
12
|
-
openDevToolDialog(): void;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolFloatingButtonComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SmartDevToolFloatingButtonComponent, "smart-session-dev-tool", never, {}, {}, never, never>;
|
|
15
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
|
|
2
|
-
import { Observable } from "rxjs";
|
|
3
|
-
import { SmartDevToolService } from "./smart-dev-tool.service";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class SmartDevToolInterceptor implements HttpInterceptor {
|
|
6
|
-
private service;
|
|
7
|
-
constructor(service: SmartDevToolService);
|
|
8
|
-
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolInterceptor, never>;
|
|
10
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SmartDevToolInterceptor>;
|
|
11
|
-
}
|
|
12
|
-
export declare class SmartDevToolErrorInterceptor implements HttpInterceptor {
|
|
13
|
-
private service;
|
|
14
|
-
constructor(service: SmartDevToolService);
|
|
15
|
-
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolErrorInterceptor, never>;
|
|
17
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SmartDevToolErrorInterceptor>;
|
|
18
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';
|
|
3
|
-
import { OnDestroy, PipeTransform } from '@angular/core';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { SmartCookieService } from '../cookie-service/smart-cookie.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class SmartDevToolService implements OnDestroy {
|
|
8
|
-
private cookieService;
|
|
9
|
-
descriptor?: SmartDevToolDescriptor;
|
|
10
|
-
smartDevToolName: string;
|
|
11
|
-
isSmartDevToolActiveName: string;
|
|
12
|
-
isActive: boolean;
|
|
13
|
-
smartDevToolHoursName: string;
|
|
14
|
-
smartDevToolMaxName: string;
|
|
15
|
-
hoursToSave: number;
|
|
16
|
-
maxNumOfSavedCalls: number;
|
|
17
|
-
private _destroy$;
|
|
18
|
-
descriptorChanged: Subject<void>;
|
|
19
|
-
newErrorsCount: number;
|
|
20
|
-
newErrorsCountChanged: Subject<void>;
|
|
21
|
-
constructor(cookieService: SmartCookieService);
|
|
22
|
-
ngOnDestroy(): void;
|
|
23
|
-
private setUpLocalStorage;
|
|
24
|
-
writeResponse(request: HttpRequest<any>, response: HttpResponse<any> | HttpErrorResponse, requestDate: Date, responseDate: Date): void;
|
|
25
|
-
clearErrors(): void;
|
|
26
|
-
createObject(keys: string[], mapWithValues: any, useGetItem: boolean): any;
|
|
27
|
-
sanitizeByTime(): void;
|
|
28
|
-
sanitizeByLength(): void;
|
|
29
|
-
save(): void;
|
|
30
|
-
clear(): void;
|
|
31
|
-
getPureString(): string;
|
|
32
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolService, never>;
|
|
33
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SmartDevToolService>;
|
|
34
|
-
}
|
|
35
|
-
export interface SmartDevToolDescriptor {
|
|
36
|
-
apiCalls: SmartDevToolApiCallDescriptor[];
|
|
37
|
-
}
|
|
38
|
-
export interface SmartDevToolApiCallDescriptor {
|
|
39
|
-
url: string | null;
|
|
40
|
-
responseBody: any;
|
|
41
|
-
responseHeader: any;
|
|
42
|
-
responseStatus: number;
|
|
43
|
-
responseStatusText: string;
|
|
44
|
-
responseDate: Date;
|
|
45
|
-
requestHeader: any;
|
|
46
|
-
requestBody: any;
|
|
47
|
-
requestDate: Date;
|
|
48
|
-
requestMethod: string;
|
|
49
|
-
localStorage: any;
|
|
50
|
-
sessionStorage: any;
|
|
51
|
-
cookies: any;
|
|
52
|
-
}
|
|
53
|
-
export declare class SmartDevToolDatePipe extends DatePipe implements PipeTransform {
|
|
54
|
-
transform(value: any, format?: string): any;
|
|
55
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartDevToolDatePipe, never>;
|
|
56
|
-
static ɵpipe: i0.ɵɵPipeDeclaration<SmartDevToolDatePipe, "smartDevToolDatePipe">;
|
|
57
|
-
}
|
|
Binary file
|