bx-rest 0.0.8 → 0.0.10

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.
Files changed (74) hide show
  1. package/consts/part-name-metods.d.ts +11 -0
  2. package/esm2020/consts/part-name-metods.mjs +12 -0
  3. package/esm2020/functions/serializeJavascript.mjs +200 -0
  4. package/esm2020/public-api.mjs +3 -3
  5. package/esm2020/{rest → request}/bx-rest.module.mjs +1 -1
  6. package/esm2020/request/user/user.mjs +263 -0
  7. package/esm2020/services/base.mjs +3 -3
  8. package/esm2020/services/http/HttpBX.mjs +128 -0
  9. package/esm2020/services/http/HttpData.mjs +124 -0
  10. package/esm2020/services/http/base/base.mjs +29 -0
  11. package/esm2020/services/http/base/http.mjs +28 -0
  12. package/esm2020/services/http/http.mjs +135 -0
  13. package/esm2020/services/http/sessionKey.mjs +180 -0
  14. package/esm2020/services/map/base.mjs +14 -0
  15. package/esm2020/services/map/rest/user.mjs +89 -0
  16. package/esm2020/services/snack-bar/snack-bar.service.mjs +42 -0
  17. package/esm2020/services/snack-bar/toast-message/toast-message.component.mjs +31 -0
  18. package/esm2020/services/vanilla/JSON.mjs +20 -0
  19. package/esm2020/services/vanilla/localStorage.mjs +35 -0
  20. package/esm2020/services/vanilla//321/201ookies.mjs +44 -0
  21. package/esm2020/store/auth.mjs +26 -0
  22. package/esm2020/store/users.mjs +67 -0
  23. package/esm2020/typification/auth/save.mjs +2 -0
  24. package/esm2020/typification/rest/api-lib.mjs +21 -0
  25. package/esm2020/typification/rest/base/YesNo.mjs +2 -0
  26. package/esm2020/typification/rest/base/httpAnswerBX.mjs +2 -0
  27. package/esm2020/typification/rest/batch/batchRequestParam.mjs +2 -0
  28. package/esm2020/typification/rest/lib.mjs +2 -0
  29. package/esm2020/typification/rest/settings.mjs +2 -0
  30. package/esm2020/typification/rest/support/param.mjs +2 -0
  31. package/esm2020/typification/rest/user/CustomUserFieldInfo.mjs +2 -0
  32. package/esm2020/typification/rest/user/UserFilterSearch.mjs +2 -0
  33. package/esm2020/typification/rest/user/get.mjs +2 -0
  34. package/esm2020/typification/rest/user/user.mjs +2 -0
  35. package/esm2020/typification/rest/user/userFilter.mjs +2 -0
  36. package/fesm2015/bx-rest.mjs +344 -15
  37. package/fesm2015/bx-rest.mjs.map +1 -1
  38. package/fesm2020/bx-rest.mjs +344 -15
  39. package/fesm2020/bx-rest.mjs.map +1 -1
  40. package/functions/serializeJavascript.d.ts +2 -0
  41. package/package.json +1 -1
  42. package/public-api.d.ts +2 -2
  43. package/request/user/user.d.ts +60 -0
  44. package/services/http/HttpBX.d.ts +26 -0
  45. package/services/http/HttpData.d.ts +13 -0
  46. package/services/http/base/base.d.ts +16 -0
  47. package/services/http/base/http.d.ts +7 -0
  48. package/services/http/http.d.ts +31 -0
  49. package/services/http/sessionKey.d.ts +34 -0
  50. package/services/map/base.d.ts +6 -0
  51. package/services/map/rest/user.d.ts +12 -0
  52. package/services/snack-bar/snack-bar.service.d.ts +12 -0
  53. package/services/snack-bar/toast-message/toast-message.component.d.ts +16 -0
  54. package/services/vanilla/JSON.d.ts +7 -0
  55. package/services/vanilla/localStorage.d.ts +10 -0
  56. package/services/vanilla//321/201ookies.d.ts +9 -0
  57. package/store/auth.d.ts +20 -0
  58. package/store/users.d.ts +34 -0
  59. package/typification/auth/save.d.ts +14 -0
  60. package/typification/rest/api-lib.d.ts +9 -0
  61. package/typification/rest/base/YesNo.d.ts +1 -0
  62. package/typification/rest/base/httpAnswerBX.d.ts +15 -0
  63. package/typification/rest/batch/batchRequestParam.d.ts +16 -0
  64. package/typification/rest/lib.d.ts +18 -0
  65. package/typification/rest/settings.d.ts +6 -0
  66. package/typification/rest/support/param.d.ts +5 -0
  67. package/typification/rest/user/CustomUserFieldInfo.d.ts +56 -0
  68. package/typification/rest/user/UserFilterSearch.d.ts +43 -0
  69. package/typification/rest/user/get.d.ts +13 -0
  70. package/typification/rest/user/user.d.ts +62 -0
  71. package/typification/rest/user/userFilter.d.ts +13 -0
  72. package/bx-rest.service.d.ts +0 -6
  73. package/esm2020/bx-rest.service.mjs +0 -14
  74. /package/{rest → request}/bx-rest.module.d.ts +0 -0
@@ -0,0 +1,135 @@
1
+ import { throwError, take, mergeMap, forkJoin } from 'rxjs';
2
+ import { catchError, map } from 'rxjs/operators';
3
+ import { Injectable } from '@angular/core';
4
+ import SnackBarService from '../../services/snack-bar/snack-bar.service';
5
+ import SessionKeyServices from '../../services/http/sessionKey';
6
+ import clone from 'just-clone';
7
+ import flatten from 'just-flatten-it';
8
+ import { BaseHttpServices } from './base/http';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common/http";
11
+ export default class HttpServices extends BaseHttpServices {
12
+ constructor(http, snackBar, session) {
13
+ super(http, snackBar);
14
+ this.session = session;
15
+ }
16
+ timeNowOnServer() {
17
+ return this.httpGet('server.time').pipe(map(v => {
18
+ if (v && v.result) {
19
+ return new Date(v.result);
20
+ }
21
+ return undefined;
22
+ }));
23
+ }
24
+ /**
25
+ * Это пиздец а не метод
26
+ * @param param
27
+ */
28
+ branch(param) {
29
+ let prepareParam = Object.entries(this.prepareBatch(param));
30
+ const size = 50; // больше не отдаст
31
+ let subarray = []; //массив в который будет выведен результат.
32
+ for (let i = 0; i < Math.ceil(prepareParam.length / size); i++) {
33
+ subarray[i] = prepareParam.slice((i * size), (i * size) + size);
34
+ }
35
+ return forkJoin(subarray.map(i => {
36
+ return this.httpPost('batch.json', {
37
+ halt: 0,
38
+ cmd: Object.assign({}, ...i.map(x => {
39
+ return { [x[0]]: x[1] };
40
+ }))
41
+ });
42
+ }));
43
+ }
44
+ prepareBatch(param) {
45
+ let res = Object.keys(param).reduce((obj, key) => {
46
+ obj[key] = '';
47
+ return obj;
48
+ }, {});
49
+ for (let key in param) {
50
+ if (typeof key === 'string' || typeof key === 'number' && param[key].param) {
51
+ res[key] = param[key].name + '?' + this.getHttpParamsGet(param[key].param).toString();
52
+ }
53
+ }
54
+ return res;
55
+ }
56
+ mapBranchResult(res) {
57
+ return Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined));
58
+ }
59
+ mapBranchResultWithoutKey(res) {
60
+ return flatten(Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined)));
61
+ }
62
+ post(name, params = {}, textError = '', settings = this.defSettings) {
63
+ return this.httpPost(this.getNameMethod(name), params, textError, settings);
64
+ }
65
+ get(name, params = {}, textError = '', settings = this.defSettings) {
66
+ return this.httpGet(this.getNameMethod(name), params, textError, settings);
67
+ }
68
+ httpPost(url, params = {}, textError = '', settings = this.defSettings) {
69
+ return this.session.getAuthParams().pipe(mergeMap(auth => {
70
+ if (auth) {
71
+ const paramsClone = clone(params);
72
+ paramsClone[this.session.getKeyAuth()] = auth;
73
+ return this.session.getBaseUrl().pipe(mergeMap(v => {
74
+ if (v) {
75
+ return this.http.post(this.prepareBaseAddress(v) + url, this.getHttpParamsPost(paramsClone, new FormData(), false, [], settings))
76
+ .pipe(take(1), catchError(err => {
77
+ if (!textError.length && err.error.error_description) {
78
+ textError = err.error.error_description;
79
+ }
80
+ this.snackBar.error('Ошибка: ' + textError);
81
+ return throwError(() => err);
82
+ }));
83
+ }
84
+ return throwError(() => 'get base url error');
85
+ }));
86
+ }
87
+ else {
88
+ this.snackBar.error('Error: Auth not get');
89
+ return throwError(() => 'auth not get');
90
+ }
91
+ }));
92
+ }
93
+ httpGet(url, params = {}, textError = '', settings = this.defSettings) {
94
+ return this.session.getAuthParams().pipe(mergeMap(auth => {
95
+ if (auth) {
96
+ if (params === null) {
97
+ params = {};
98
+ }
99
+ const paramsClone = clone(params);
100
+ paramsClone[this.session.getKeyAuth()] = auth;
101
+ let options = {
102
+ params: this.getHttpParamsGet(paramsClone)
103
+ };
104
+ return this.session.getBaseUrl().pipe(mergeMap(v => {
105
+ if (v) {
106
+ return this.http.get(this.prepareBaseAddress(v) + url, options).pipe(take(1), catchError(err => {
107
+ if (!textError.length && err.error.error_description) {
108
+ textError = err.error.error_description;
109
+ }
110
+ this.snackBar.error('Ошибка: ' + textError);
111
+ return throwError(() => err);
112
+ }));
113
+ }
114
+ return throwError(() => 'get base url error');
115
+ }));
116
+ }
117
+ else {
118
+ this.snackBar.error('Error: Auth not get');
119
+ return throwError(() => 'auth not get');
120
+ }
121
+ }));
122
+ }
123
+ getNameMethod(arr) {
124
+ return arr.join('.');
125
+ }
126
+ }
127
+ HttpServices.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HttpServices, deps: [{ token: i1.HttpClient }, { token: SnackBarService }, { token: SessionKeyServices }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ HttpServices.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HttpServices, providedIn: 'root' });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HttpServices, decorators: [{
130
+ type: Injectable,
131
+ args: [{
132
+ providedIn: 'root'
133
+ }]
134
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SnackBarService }, { type: SessionKeyServices }]; } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN4RSxPQUFPLGtCQUFrQixNQUFNLGdDQUFnQyxDQUFBO0FBQy9ELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQU85QixPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7OztBQUs5QyxNQUFNLENBQUMsT0FBTyxPQUFPLFlBQWEsU0FBUSxnQkFBZ0I7SUFFdEQsWUFBWSxJQUFnQixFQUFFLFFBQXlCLEVBQVMsT0FBMkI7UUFDdkYsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUR1QyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtJQUUzRixDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBb0MsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQzVCO1lBQ0QsT0FBTyxTQUFTLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNMLENBQUM7SUFFRDs7O09BR0c7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Q0FBQyxDQUFBO2dCQUMxQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQTthQUMxQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDdkIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7O3lHQWhLZ0IsWUFBWSw0Q0FmMUIsZUFBZSxhQUNmLGtCQUFrQjs2R0FjSixZQUFZLGNBRmpCLE1BQU07MkZBRUQsWUFBWTtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7bUZBZE0sZUFBZSxZQUNmLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRha2UsIG1lcmdlTWFwLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgU25hY2tCYXJTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSdcclxuaW1wb3J0IFNlc3Npb25LZXlTZXJ2aWNlcyBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL3Nlc3Npb25LZXknXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHtcclxuICAgIGlCYXRjaFJlcXVlc3RBbnN3ZXIsIGlCYXRjaFJlcXVlc3RQYXJhbSxcclxuICAgIGlCYXRjaFJlcXVlc3RQYXJhbUFycixcclxuICAgIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoXHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmF0Y2gvYmF0Y2hSZXF1ZXN0UGFyYW0nXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgQmFzZUh0dHBTZXJ2aWNlcyB9IGZyb20gJy4vYmFzZS9odHRwJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBTZXJ2aWNlcyBleHRlbmRzIEJhc2VIdHRwU2VydmljZXMge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQsIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uS2V5U2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihodHRwLCBzbmFja0JhcilcclxuICAgIH1cclxuXHJcbiAgICB0aW1lTm93T25TZXJ2ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cEdldDx7IHJlc3VsdD86IERhdGUsIGVycm9yPzogc3RyaW5nIH0+KCdzZXJ2ZXIudGltZScpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHYucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDQrdGC0L4g0L/QuNC30LTQtdGGINCwINC90LUg0LzQtdGC0L7QtFxyXG4gICAgICogQHBhcmFtIHBhcmFtXHJcbiAgICAgKi9cclxuICAgIGJyYW5jaDxULCBBPihwYXJhbTogaUJhdGNoUmVxdWVzdFBhcmFtQXJyPFQ+IHwgaUJhdGNoUmVxdWVzdFBhcmFtPFQ+W10pOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgICAgIGxldCBwcmVwYXJlUGFyYW0gPSBPYmplY3QuZW50cmllczxzdHJpbmc+KHRoaXMucHJlcGFyZUJhdGNoPFQ+KHBhcmFtKSlcclxuICAgICAgICBjb25zdCBzaXplID0gNTAgLy8g0LHQvtC70YzRiNC1INC90LUg0L7RgtC00LDRgdGCXHJcbiAgICAgICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLmNlaWwocHJlcGFyZVBhcmFtLmxlbmd0aCAvIHNpemUpOyBpKyspIHtcclxuICAgICAgICAgICAgc3ViYXJyYXlbaV0gPSBwcmVwYXJlUGFyYW0uc2xpY2UoKGkgKiBzaXplKSwgKGkgKiBzaXplKSArIHNpemUpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgICAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBQb3N0KCdiYXRjaC5qc29uJywge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgY21kOiBPYmplY3QuYXNzaWduKHt9LCAuLi5pLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtbeFswXV06IHhbMV19XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxpQmF0Y2hSZXF1ZXN0QW5zd2VyPEE+W10+XHJcbiAgICB9XHJcblxyXG4gICAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgICAgIGxldCByZXM6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAgPSBPYmplY3Qua2V5cyhwYXJhbSkucmVkdWNlKFxyXG4gICAgICAgICAgICAob2JqLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIG9ialtrZXldID0gJyc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7fSBhcyBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gcGFyYW0pIHtcclxuICAgICAgICAgICAgaWYodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgICAgICAgICAgcmVzW2tleV0gPSBwYXJhbVtrZXldLm5hbWUgKyAnPycgKyB0aGlzLmdldEh0dHBQYXJhbXNHZXQocGFyYW1ba2V5XS5wYXJhbSkudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNcclxuICAgIH1cclxuXHJcbiAgICBtYXBCcmFuY2hSZXN1bHQ8VD4ocmVzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10pe1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT4gKGkucmVzdWx0ICYmIGkucmVzdWx0LnJlc3VsdCkgPyBpLnJlc3VsdC5yZXN1bHQgOiB1bmRlZmluZWQpKSBhcyB7W2tleTprZXlCYXRjaF06IFR9XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQnJhbmNoUmVzdWx0V2l0aG91dEtleTxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSk6IFRbXXtcclxuICAgICAgICByZXR1cm4gZmxhdHRlbjxUPihPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT4gKGkucmVzdWx0ICYmIGkucmVzdWx0LnJlc3VsdCkgPyBpLnJlc3VsdC5yZXN1bHQgOiB1bmRlZmluZWQpKSlcclxuICAgIH1cclxuXHJcbiAgICBwb3N0PFQ+KG5hbWU6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgICAgICAgICB0ZXh0RXJyb3IgPSAnJyxcclxuICAgICAgICAgICAgc2V0dGluZ3M6IGlIdHRwUGFyYW1TZXR0aW5ncyA9IHRoaXMuZGVmU2V0dGluZ3MpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdDxUPih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdGV4dEVycm9yLCBzZXR0aW5ncylcclxuICAgIH1cclxuXHJcbiAgICBnZXQ8VD4obmFtZTogc3RyaW5nW10sXHJcbiAgICAgICAgICAgcGFyYW1zOiBhbnkgPSB7fSxcclxuICAgICAgICAgICB0ZXh0RXJyb3IgPSAnJyxcclxuICAgICAgICAgICBzZXR0aW5nczogaUh0dHBQYXJhbVNldHRpbmdzID0gdGhpcy5kZWZTZXR0aW5ncykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBHZXQ8VD4odGhpcy5nZXROYW1lTWV0aG9kKG5hbWUpLCBwYXJhbXMsIHRleHRFcnJvciwgc2V0dGluZ3MpXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgaHR0cFBvc3Q8VD4odXJsOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVycm9yID0gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogaUh0dHBQYXJhbVNldHRpbmdzID0gdGhpcy5kZWZTZXR0aW5nc1xyXG4gICAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYXV0aCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtc0Nsb25lW3RoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKCldID0gYXV0aFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUobWVyZ2VNYXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VCB8IHVuZGVmaW5lZD4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQmFzZUFkZHJlc3ModikgKyB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChwYXJhbXNDbG9uZSwgbmV3IEZvcm1EYXRhKCksIGZhbHNlLCBbXSwgc2V0dGluZ3MpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHRFcnJvci5sZW5ndGggJiYgZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVycm9yID0gZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5lcnJvcign0J7RiNC40LHQutCwOiAnICsgdGV4dEVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnZ2V0IGJhc2UgdXJsIGVycm9yJylcclxuICAgICAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5lcnJvcignRXJyb3I6IEF1dGggbm90IGdldCcpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gJ2F1dGggbm90IGdldCcpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIGh0dHBHZXQ8VD4oXHJcbiAgICAgICAgdXJsOiBzdHJpbmcsXHJcbiAgICAgICAgcGFyYW1zOiBhbnkgPSB7fSxcclxuICAgICAgICB0ZXh0RXJyb3IgPSAnJyxcclxuICAgICAgICBzZXR0aW5nczogaUh0dHBQYXJhbVNldHRpbmdzID0gdGhpcy5kZWZTZXR0aW5nc1xyXG4gICAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYXV0aCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0ge31cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zQ2xvbmVbdGhpcy5zZXNzaW9uLmdldEtleUF1dGgoKV0gPSBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRIdHRwUGFyYW1zR2V0KHBhcmFtc0Nsb25lKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsKCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMucHJlcGFyZUJhc2VBZGRyZXNzKHYpICsgdXJsLCBvcHRpb25zKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHRFcnJvci5sZW5ndGggJiYgZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVycm9yID0gZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5lcnJvcign0J7RiNC40LHQutCwOiAnICsgdGV4dEVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdnZXQgYmFzZSB1cmwgZXJyb3InKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5lcnJvcignRXJyb3I6IEF1dGggbm90IGdldCcpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gJ2F1dGggbm90IGdldCcpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGdldE5hbWVNZXRob2QoYXJyOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiBhcnIuam9pbignLicpXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,180 @@
1
+ import { Injectable } from '@angular/core';
2
+ import Cookies from '../../services/vanilla/сookies';
3
+ // import { environment as env } from 'bx-rest/environments/environment'
4
+ import { filter, Subscription, take } from 'rxjs';
5
+ import { saveAccessToken } from '../../store/auth';
6
+ import { map } from 'rxjs/operators';
7
+ import { BaseServices } from '../../services/base';
8
+ import { LocalStorageServices as LocalStorage } from '../../services/vanilla/localStorage';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@ngrx/store";
11
+ import * as i2 from "@angular/router";
12
+ import * as i3 from "../../typification/rest/api-lib";
13
+ export default class SessionKeyServices extends BaseServices {
14
+ constructor(store, route, BxApiLib) {
15
+ super();
16
+ this.store = store;
17
+ this.route = route;
18
+ this.BxApiLib = BxApiLib;
19
+ this.authHave = false;
20
+ this.subscribe = {
21
+ authData: new Subscription()
22
+ };
23
+ this.authData$ = this.store.select('auth');
24
+ this.authData$.subscribe(authData => {
25
+ if ((authData && !authData.access_token.length) || !authData) {
26
+ // получаем токен по собственным каналом (в битриксе приложение trace:apps.trace)
27
+ window.addEventListener('message', (event) => {
28
+ if (event.origin !== window.origin) { // проверяем что это не наше сообщение (с текущего приложения)
29
+ if (event.data && event.data.param) {
30
+ if (typeof event.data.param === 'string') {
31
+ event.data.param = JSON.parse(event.data.param);
32
+ }
33
+ let save = {};
34
+ if (event.data.param.access_token) {
35
+ let param = event.data.param;
36
+ save.access_token = event.data.param.access_token;
37
+ save = {
38
+ access_token: (param.access_token) ? param.access_token : undefined,
39
+ client_endpoint: (param.client_endpoint) ? param.client_endpoint : undefined,
40
+ domain: (param.domain) ? param.domain : undefined,
41
+ expires: (param.expires) ? param.expires : undefined,
42
+ expires_in: (param.expires_in) ? param.expires_in : undefined,
43
+ member_id: (param.member_id) ? param.member_id : undefined,
44
+ refresh_token: (param.refresh_token) ? param.refresh_token : undefined,
45
+ scope: (param.scope) ? param.scope : undefined,
46
+ server_endpoint: (param.server_endpoint) ? param.server_endpoint : undefined,
47
+ status: (param.status) ? param.status : undefined,
48
+ user_id: (param.user_id) ? param.user_id : undefined,
49
+ type: (param.type) ? param.type : undefined,
50
+ };
51
+ }
52
+ if (Object.keys(save).length && save.access_token) {
53
+ this.store.dispatch(saveAccessToken(save));
54
+ this.subscribeAll();
55
+ }
56
+ }
57
+ }
58
+ });
59
+ this.subscribe.authData = this.route.queryParamMap
60
+ .pipe(filter(param => param.has('AUTH_ID')
61
+ || param.has('access_token')
62
+ || param.has('REFRESH_ID')
63
+ || param.has('DOMAIN')))
64
+ .subscribe((param) => {
65
+ let save = {};
66
+ if (param.has('AUTH_ID') && !authData.access_token.length) {
67
+ const get = param.get('AUTH_ID');
68
+ if (get) {
69
+ Cookies.set('auth', get); // потом убрать
70
+ save.access_token = get;
71
+ }
72
+ }
73
+ if (param.has('access_token') && !authData.access_token.length) {
74
+ const get = param.get('access_token');
75
+ if (get) {
76
+ Cookies.set('auth', get); // потом убрать
77
+ save.access_token = get;
78
+ }
79
+ }
80
+ if (param.has('REFRESH_ID') && !authData.refresh_token.length) {
81
+ const get = param.get('REFRESH_ID');
82
+ if (get) {
83
+ save.refresh_token = get;
84
+ }
85
+ }
86
+ if (param.has('DOMAIN') && !authData.domain.length) {
87
+ const get = param.get('DOMAIN');
88
+ if (get) {
89
+ save.domain = get;
90
+ }
91
+ }
92
+ if (Object.keys(save).length && save.access_token) {
93
+ this.store.dispatch(saveAccessToken(save));
94
+ this.subscribeAll();
95
+ }
96
+ else {
97
+ // если битрикс не шлёт нужные мне параметры на прямую
98
+ // просим их мне отдать так как описано это в документации
99
+ let f = () => {
100
+ if (this.BxApiLib.BX24) {
101
+ const initDate = this.BxApiLib.BX24.getAuth();
102
+ this.store.dispatch(saveAccessToken(initDate));
103
+ }
104
+ };
105
+ this.BxApiLib.init(f);
106
+ }
107
+ });
108
+ }
109
+ else if (this.getAuth().length) {
110
+ this.authHave = true;
111
+ }
112
+ this.authData = authData;
113
+ });
114
+ }
115
+ subscribeAll() {
116
+ this.subscribe.authData.unsubscribe();
117
+ }
118
+ getAuth() {
119
+ if (window.BX && window.BX.bitrix_sessid()) {
120
+ return window.BX.bitrix_sessid();
121
+ }
122
+ else if (this.getSessid().length) {
123
+ let str = this.getSessid();
124
+ return (str) ? str : '';
125
+ }
126
+ else {
127
+ return Cookies.get('auth');
128
+ }
129
+ }
130
+ getKeyAuth() {
131
+ if (window.BX && window.BX.bitrix_sessid()
132
+ || this.getSessid().length) {
133
+ return 'sessid';
134
+ }
135
+ else {
136
+ return 'auth';
137
+ }
138
+ }
139
+ getSessid() {
140
+ const check = new URLSearchParams(document.location.search).get('sessid');
141
+ if (check) {
142
+ LocalStorage.set('sessid', check);
143
+ return check;
144
+ }
145
+ else if (LocalStorage.get('sessid')) {
146
+ return LocalStorage.get('sessid');
147
+ }
148
+ return '';
149
+ }
150
+ setAuthParams(params) {
151
+ const keyAuth = this.getKeyAuth();
152
+ if (params[keyAuth]) {
153
+ return true;
154
+ }
155
+ else if (keyAuth) {
156
+ params[keyAuth] = this.getAuth();
157
+ return true;
158
+ }
159
+ return false;
160
+ }
161
+ getAuthParams() {
162
+ // if (env.production && !env.component) {
163
+ return this.authData$.pipe(take(1), map(v => (v) ? v.access_token : undefined));
164
+ // } else {
165
+ // return of(this.getAuth())
166
+ // }
167
+ }
168
+ getBaseUrl() {
169
+ return this.authData$.pipe(map(v => (v && v.domain) ? this.prepareBaseAddress(v.domain, 'b24.trace-studio.com') : undefined));
170
+ }
171
+ }
172
+ SessionKeyServices.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionKeyServices, deps: [{ token: i1.Store }, { token: i2.ActivatedRoute }, { token: i3.RestServices }], target: i0.ɵɵFactoryTarget.Injectable });
173
+ SessionKeyServices.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionKeyServices, providedIn: 'root' });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionKeyServices, decorators: [{
175
+ type: Injectable,
176
+ args: [{
177
+ providedIn: 'root'
178
+ }]
179
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ActivatedRoute }, { type: i3.RestServices }]; } });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbktleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvc2Vzc2lvbktleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLGdDQUFnQyxDQUFBO0FBR3BELHdFQUF3RTtBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFjLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSxrQkFBa0IsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTs7Ozs7QUFRMUYsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBU3hELFlBQ1csS0FBMkMsRUFDMUMsS0FBcUIsRUFDdEIsUUFBc0I7UUFFN0IsS0FBSyxFQUFFLENBQUE7UUFKQSxVQUFLLEdBQUwsS0FBSyxDQUFzQztRQUMxQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFjO1FBVmpDLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFHaEIsY0FBUyxHQUFHO1lBQ1IsUUFBUSxFQUFFLElBQUksWUFBWSxFQUFFO1NBQy9CLENBQUE7UUFRRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxRQUFRLElB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Q0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDcEcsQ0FBQTtJQUNULENBQUM7OytHQXJMZ0Isa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGdkIsTUFBTTsyRkFFRCxrQkFBa0I7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgQ29va2llcyBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YW5pbGxhL9GBb29raWVzJ1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCBzYXZlQXBwbGljYXRpb25BdXRoIGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9hdXRoL3NhdmUnXG4vLyBpbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlbnYgfSBmcm9tICdieC1yZXN0L2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCdcbmltcG9ydCB7IGZpbHRlciwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbU1hcCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IHNhdmVBY2Nlc3NUb2tlbiwgc2F2ZUFwcGxpY2F0aW9uQXV0aFBhdGggfSBmcm9tICcuLi8uLi9zdG9yZS9hdXRoJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBCYXNlU2VydmljZXMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlJ1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZXMgYXMgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFuaWxsYS9sb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyBSZXN0U2VydmljZXMgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9hcGktbGliJ1xuXG50eXBlIElLZXlBdXRoID0gJ3Nlc3NpZCcgfCAnYXV0aCcgfCBzdHJpbmdcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25LZXlTZXJ2aWNlcyBleHRlbmRzIEJhc2VTZXJ2aWNlcyB7XG5cbiAgICBhdXRoSGF2ZSA9IGZhbHNlXG4gICAgYXV0aERhdGEkOiBPYnNlcnZhYmxlPHNhdmVBcHBsaWNhdGlvbkF1dGg+XG4gICAgYXV0aERhdGE6IHNhdmVBcHBsaWNhdGlvbkF1dGggfCB1bmRlZmluZWRcbiAgICBzdWJzY3JpYmUgPSB7XG4gICAgICAgIGF1dGhEYXRhOiBuZXcgU3Vic2NyaXB0aW9uKClcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHN0b3JlOiBTdG9yZTx7IGF1dGg6IHNhdmVBcHBsaWNhdGlvbkF1dGggfT4sXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwdWJsaWMgQnhBcGlMaWI6IFJlc3RTZXJ2aWNlcyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmF1dGhEYXRhJCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdhdXRoJylcbiAgICAgICAgdGhpcy5hdXRoRGF0YSQuc3Vic2NyaWJlKGF1dGhEYXRhID0+IHtcbiAgICAgICAgICAgIGlmICgoYXV0aERhdGEgJiYgIWF1dGhEYXRhLmFjY2Vzc190b2tlbi5sZW5ndGgpIHx8ICFhdXRoRGF0YSkge1xuICAgICAgICAgICAgICAgIC8vINC/0L7Qu9GD0YfQsNC10Lwg0YLQvtC60LXQvSDQv9C+INGB0L7QsdGB0YLQstC10L3QvdGL0Lwg0LrQsNC90LDQu9C+0LwgKNCyINCx0LjRgtGA0LjQutGB0LUg0L/RgNC40LvQvtC20LXQvdC40LUgdHJhY2U6YXBwcy50cmFjZSlcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5vcmlnaW4pIHsgLy8g0L/RgNC+0LLQtdGA0Y/QtdC8INGH0YLQviDRjdGC0L4g0L3QtSDQvdCw0YjQtSDRgdC+0L7QsdGJ0LXQvdC40LUgKNGBINGC0LXQutGD0YnQtdCz0L4g0L/RgNC40LvQvtC20LXQvdC40Y8pXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnBhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhLnBhcmFtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5kYXRhLnBhcmFtID0gSlNPTi5wYXJzZShldmVudC5kYXRhLnBhcmFtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzYXZlOiBzYXZlQXBwbGljYXRpb25BdXRoUGF0aCA9IHt9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5wYXJhbS5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtID0gZXZlbnQuZGF0YS5wYXJhbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZS5hY2Nlc3NfdG9rZW4gPSBldmVudC5kYXRhLnBhcmFtLmFjY2Vzc190b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuOiAocGFyYW0uYWNjZXNzX3Rva2VuKSA/IHBhcmFtLmFjY2Vzc190b2tlbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9lbmRwb2ludDogKHBhcmFtLmNsaWVudF9lbmRwb2ludCkgPyBwYXJhbS5jbGllbnRfZW5kcG9pbnQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IChwYXJhbS5kb21haW4pID8gcGFyYW0uZG9tYWluIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlczogKHBhcmFtLmV4cGlyZXMpID8gcGFyYW0uZXhwaXJlcyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXNfaW46IChwYXJhbS5leHBpcmVzX2luKSA/IHBhcmFtLmV4cGlyZXNfaW4gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IChwYXJhbS5tZW1iZXJfaWQpID8gcGFyYW0ubWVtYmVyX2lkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogKHBhcmFtLnJlZnJlc2hfdG9rZW4pID8gcGFyYW0ucmVmcmVzaF90b2tlbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiAocGFyYW0uc2NvcGUpID8gcGFyYW0uc2NvcGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfZW5kcG9pbnQ6IChwYXJhbS5zZXJ2ZXJfZW5kcG9pbnQpID8gcGFyYW0uc2VydmVyX2VuZHBvaW50IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAocGFyYW0uc3RhdHVzKSA/IHBhcmFtLnN0YXR1cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IChwYXJhbS51c2VyX2lkKSA/IHBhcmFtLnVzZXJfaWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAocGFyYW0udHlwZSkgPyBwYXJhbS50eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNhdmUpLmxlbmd0aCAmJiBzYXZlLmFjY2Vzc190b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNhdmVBY2Nlc3NUb2tlbihzYXZlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZS5hdXRoRGF0YSA9IHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihwYXJhbSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmhhcygnQVVUSF9JRCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcGFyYW0uaGFzKCdhY2Nlc3NfdG9rZW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHBhcmFtLmhhcygnUkVGUkVTSF9JRCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcGFyYW0uaGFzKCdET01BSU4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtOiBQYXJhbU1hcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNhdmU6IHNhdmVBcHBsaWNhdGlvbkF1dGhQYXRoID0ge31cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbS5oYXMoJ0FVVEhfSUQnKSAmJiAhYXV0aERhdGEuYWNjZXNzX3Rva2VuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldCA9IHBhcmFtLmdldCgnQVVUSF9JRCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzLnNldCgnYXV0aCcsIGdldCkgLy8g0L/QvtGC0L7QvCDRg9Cx0YDQsNGC0YxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZS5hY2Nlc3NfdG9rZW4gPSBnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbS5oYXMoJ2FjY2Vzc190b2tlbicpICYmICFhdXRoRGF0YS5hY2Nlc3NfdG9rZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gcGFyYW0uZ2V0KCdhY2Nlc3NfdG9rZW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llcy5zZXQoJ2F1dGgnLCBnZXQpIC8vINC/0L7RgtC+0Lwg0YPQsdGA0LDRgtGMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmUuYWNjZXNzX3Rva2VuID0gZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0uaGFzKCdSRUZSRVNIX0lEJykgJiYgIWF1dGhEYXRhLnJlZnJlc2hfdG9rZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gcGFyYW0uZ2V0KCdSRUZSRVNIX0lEJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmUucmVmcmVzaF90b2tlbiA9IGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtLmhhcygnRE9NQUlOJykgJiYgIWF1dGhEYXRhLmRvbWFpbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXQgPSBwYXJhbS5nZXQoJ0RPTUFJTicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlLmRvbWFpbiA9IGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhzYXZlKS5sZW5ndGggJiYgc2F2ZS5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNhdmVBY2Nlc3NUb2tlbihzYXZlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZUFsbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINC10YHQu9C4INCx0LjRgtGA0LjQutGBINC90LUg0YjQu9GR0YIg0L3Rg9C20L3Ri9C1INC80L3QtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L3QsCDQv9GA0Y/QvNGD0Y5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQv9GA0L7RgdC40Lwg0LjRhSDQvNC90LUg0L7RgtC00LDRgtGMINGC0LDQuiDQutCw0Log0L7Qv9C40YHQsNC90L4g0Y3RgtC+INCyINC00L7QutGD0LzQtdC90YLQsNGG0LjQuFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5CeEFwaUxpYi5CWDI0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0RGF0ZSA9IHRoaXMuQnhBcGlMaWIuQlgyNC5nZXRBdXRoKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2F2ZUFjY2Vzc1Rva2VuKGluaXREYXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQnhBcGlMaWIuaW5pdChmKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0QXV0aCgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0aEhhdmUgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXV0aERhdGEgPSBhdXRoRGF0YVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN1YnNjcmliZUFsbCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmUuYXV0aERhdGEudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGdldEF1dGgoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCg8YW55PndpbmRvdykuQlggJiYgKDxhbnk+d2luZG93KS5CWC5iaXRyaXhfc2Vzc2lkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoPGFueT53aW5kb3cpLkJYLmJpdHJpeF9zZXNzaWQoKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0U2Vzc2lkKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc3RyID0gdGhpcy5nZXRTZXNzaWQoKVxuICAgICAgICAgICAgcmV0dXJuIChzdHIpID8gc3RyIDogJydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBDb29raWVzLmdldCgnYXV0aCcpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRLZXlBdXRoKCk6IElLZXlBdXRoIHtcbiAgICAgICAgaWYgKCg8YW55PndpbmRvdykuQlggJiYgKDxhbnk+d2luZG93KS5CWC5iaXRyaXhfc2Vzc2lkKClcbiAgICAgICAgICAgIHx8IHRoaXMuZ2V0U2Vzc2lkKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3Nlc3NpZCdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnYXV0aCdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlc3NpZCgpIHtcbiAgICAgICAgY29uc3QgY2hlY2sgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCdzZXNzaWQnKVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICAgIExvY2FsU3RvcmFnZS5zZXQoJ3Nlc3NpZCcsIGNoZWNrKVxuICAgICAgICAgICAgcmV0dXJuIGNoZWNrXG4gICAgICAgIH0gZWxzZSBpZiAoTG9jYWxTdG9yYWdlLmdldCgnc2Vzc2lkJykpIHtcbiAgICAgICAgICAgIHJldHVybiBMb2NhbFN0b3JhZ2UuZ2V0KCdzZXNzaWQnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIHNldEF1dGhQYXJhbXM8VD4ocGFyYW1zOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qga2V5QXV0aCA9IHRoaXMuZ2V0S2V5QXV0aCgpXG4gICAgICAgIGlmIChwYXJhbXNba2V5QXV0aF0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5QXV0aCkge1xuICAgICAgICAgICAgcGFyYW1zW2tleUF1dGhdID0gdGhpcy5nZXRBdXRoKClcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgZ2V0QXV0aFBhcmFtcygpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyBpZiAoZW52LnByb2R1Y3Rpb24gJiYgIWVudi5jb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhEYXRhJC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgbWFwKHYgPT4gKHYpID8gdi5hY2Nlc3NfdG9rZW4gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICApXG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gb2YodGhpcy5nZXRBdXRoKCkpXG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBnZXRCYXNlVXJsKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoRGF0YSQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodiA9PiAodiAmJiB2LmRvbWFpbikgPyB0aGlzLnByZXBhcmVCYXNlQWRkcmVzcyh2LmRvbWFpbiwgJ2IyNC50cmFjZS1zdHVkaW8uY29tJykgOiB1bmRlZmluZWQpXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgLy8gZ2V0SG9tZVVybCgpOiBzdHJpbmcge1xuICAgIC8vICAgICByZXR1cm4gZW52LnVybHMuaG9tZVxuICAgIC8vIH1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BaseServices } from '../base';
3
+ import * as i0 from "@angular/core";
4
+ export default class BaseMapServices extends BaseServices {
5
+ }
6
+ BaseMapServices.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseMapServices, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
7
+ BaseMapServices.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseMapServices, providedIn: 'root' });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseMapServices, decorators: [{
9
+ type: Injectable,
10
+ args: [{
11
+ providedIn: 'root'
12
+ }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL21hcC9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTs7QUFLdEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFnQixTQUFRLFlBQVk7OzRHQUFwQyxlQUFlO2dIQUFmLGVBQWUsY0FGcEIsTUFBTTsyRkFFRCxlQUFlO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZXMgfSBmcm9tICcuLi9iYXNlJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VNYXBTZXJ2aWNlcyBleHRlbmRzIEJhc2VTZXJ2aWNlcyB7XHJcbn1cclxuIl19
@@ -0,0 +1,89 @@
1
+ import { Injectable } from '@angular/core';
2
+ import BaseMapServices from '../base';
3
+ import clone from 'just-clone';
4
+ import * as i0 from "@angular/core";
5
+ export class BitrixApiUserMapServices extends BaseMapServices {
6
+ HttpToBX(user) {
7
+ let res = Object.assign(clone(user), {
8
+ ID: this.toNumber(user.ID),
9
+ IS_ONLINE: this.toBool(user.IS_ONLINE),
10
+ DATE_REGISTER: this.toDate(user.DATE_REGISTER),
11
+ PERSONAL_BIRTHDAY: this.toDate(user.PERSONAL_BIRTHDAY),
12
+ });
13
+ if (user.LAST_LOGIN) {
14
+ res.LAST_LOGIN = this.toDate(user.LAST_LOGIN);
15
+ }
16
+ return res;
17
+ }
18
+ BXtoHttp(user) {
19
+ return Object.assign(clone(user), {
20
+ ID: this.toStr(user.ID),
21
+ IS_ONLINE: this.toBXYorN(user.IS_ONLINE),
22
+ DATE_REGISTER: this.getBXStrTime(user.DATE_REGISTER),
23
+ PERSONAL_BIRTHDAY: this.toStr(user.PERSONAL_BIRTHDAY),
24
+ LAST_LOGIN: this.toStr(user.LAST_LOGIN)
25
+ });
26
+ }
27
+ getFIO(user) {
28
+ let res = '';
29
+ if (!user.LAST_NAME) {
30
+ const SECOND_NAME = (user.SECOND_NAME) ? user.SECOND_NAME : '';
31
+ const NAME = (user.NAME) ? user.NAME : '';
32
+ res = NAME + ' ' + SECOND_NAME;
33
+ }
34
+ else if (!user.NAME) {
35
+ res = user.LAST_NAME;
36
+ }
37
+ else if (!user.SECOND_NAME) {
38
+ res = user.LAST_NAME + ' ' + user.NAME;
39
+ }
40
+ else {
41
+ res = user.LAST_NAME + ' ' + user.NAME + ' ' + user.SECOND_NAME;
42
+ }
43
+ return res.trim();
44
+ }
45
+ getFI(user) {
46
+ let res = '';
47
+ if (!user.LAST_NAME) {
48
+ const NAME = (user.NAME) ? user.NAME : '';
49
+ res = NAME;
50
+ }
51
+ else if (!user.NAME) {
52
+ res = user.LAST_NAME;
53
+ }
54
+ else {
55
+ res = user.LAST_NAME + ' ' + user.NAME;
56
+ }
57
+ return res.trim();
58
+ }
59
+ getFIOShort(user) {
60
+ let res = '';
61
+ if (!user.LAST_NAME) {
62
+ const SECOND_NAME = (user.SECOND_NAME) ? user.SECOND_NAME : '';
63
+ const NAME = (user.NAME) ? user.NAME : '';
64
+ res = NAME + ' ' + SECOND_NAME;
65
+ }
66
+ else if (!user.NAME) {
67
+ res = user.LAST_NAME;
68
+ }
69
+ else if (!user.SECOND_NAME) {
70
+ res = user.LAST_NAME + ' ' + user.NAME.charAt(0).toUpperCase() + '.';
71
+ }
72
+ else {
73
+ res =
74
+ user.LAST_NAME + ' ' +
75
+ user.NAME.charAt(0).toUpperCase() + '.' +
76
+ user.SECOND_NAME.charAt(0).toUpperCase() + '.';
77
+ }
78
+ return res.trim();
79
+ }
80
+ }
81
+ BitrixApiUserMapServices.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BitrixApiUserMapServices, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
82
+ BitrixApiUserMapServices.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BitrixApiUserMapServices, providedIn: 'root' });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BitrixApiUserMapServices, decorators: [{
84
+ type: Injectable,
85
+ args: [{
86
+ providedIn: 'root'
87
+ }]
88
+ }] });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL21hcC9yZXN0L3VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLGVBQWUsTUFBTSxTQUFTLENBQUE7QUFFckMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBOztBQUs5QixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQUV6RCxRQUFRLENBQUMsSUFBcUI7UUFDMUIsSUFBSSxHQUFHLEdBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN0QyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzlDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3pELENBQUMsQ0FBQTtRQUNGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQ2hEO1FBRUQsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWlCO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QixTQUFTLEVB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R0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUE7U0FDdkU7YUFBTTtZQUNILEdBQUc7Z0JBQ0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHO29CQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHO29CQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUE7U0FDckQ7UUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNyQixDQUFDOztxSEF4RVEsd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FGckIsTUFBTTsyRkFFVCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCBCYXNlTWFwU2VydmljZXMgZnJvbSAnLi4vYmFzZSdcclxuaW1wb3J0IHsgaUJYUmVzdFVzZXIsIGlCWFJlc3RVc2VySHR0cCB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvdXNlcidcclxuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpdHJpeEFwaVVzZXJNYXBTZXJ2aWNlcyBleHRlbmRzIEJhc2VNYXBTZXJ2aWNlcyB7XHJcblxyXG4gICAgSHR0cFRvQlgodXNlcjogaUJYUmVzdFVzZXJIdHRwKTogaUJYUmVzdFVzZXIge1xyXG4gICAgICAgIGxldCByZXM6IGlCWFJlc3RVc2VyID0gT2JqZWN0LmFzc2lnbihjbG9uZSh1c2VyKSwge1xyXG4gICAgICAgICAgICBJRDogdGhpcy50b051bWJlcih1c2VyLklEKSxcclxuICAgICAgICAgICAgSVNfT05MSU5FOiB0aGlzLnRvQm9vbCh1c2VyLklTX09OTElORSksXHJcbiAgICAgICAgICAgIERBVEVfUkVHSVNURVI6IHRoaXMudG9EYXRlKHVzZXIuREFURV9SRUdJU1RFUiksXHJcbiAgICAgICAgICAgIFBFUlNPTkFMX0JJUlRIREFZOiB0aGlzLnRvRGF0ZSh1c2VyLlBFUlNPTkFMX0JJUlRIREFZKSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh1c2VyLkxBU1RfTE9HSU4pIHtcclxuICAgICAgICAgICAgcmVzLkxBU1RfTE9HSU4gPSB0aGlzLnRvRGF0ZSh1c2VyLkxBU1RfTE9HSU4pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzXHJcbiAgICB9XHJcblxyXG4gICAgQlh0b0h0dHAodXNlcjogaUJYUmVzdFVzZXIpOiBpQlhSZXN0VXNlckh0dHAge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNsb25lKHVzZXIpLCB7XHJcbiAgICAgICAgICAgIElEOiB0aGlzLnRvU3RyKHVzZXIuSUQpLFxyXG4gICAgICAgICAgICBJU19PTkxJTkU6IHRoaXMudG9CWFlvck4odXNlci5JU19PTkxJTkUpLFxyXG4gICAgICAgICAgICBEQVRFX1JFR0lTVEVSOiB0aGlzLmdldEJYU3RyVGltZSh1c2VyLkRBVEVfUkVHSVNURVIpLFxyXG4gICAgICAgICAgICBQRVJTT05BTF9CSVJUSERBWTogdGhpcy50b1N0cih1c2VyLlBFUlNPTkFMX0JJUlRIREFZKSxcclxuICAgICAgICAgICAgTEFTVF9MT0dJTjogdGhpcy50b1N0cih1c2VyLkxBU1RfTE9HSU4pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRGSU8odXNlcjogaUJYUmVzdFVzZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXMgPSAnJ1xyXG4gICAgICAgIGlmICghdXNlci5MQVNUX05BTUUpIHtcclxuICAgICAgICAgICAgY29uc3QgU0VDT05EX05BTUUgPSAodXNlci5TRUNPTkRfTkFNRSkgPyB1c2VyLlNFQ09ORF9OQU1FIDogJydcclxuICAgICAgICAgICAgY29uc3QgTkFNRSA9ICh1c2VyLk5BTUUpID8gdXNlci5OQU1FIDogJydcclxuICAgICAgICAgICAgcmVzID0gTkFNRSArICcgJyArIFNFQ09ORF9OQU1FXHJcbiAgICAgICAgfSBlbHNlIGlmICghdXNlci5OQU1FKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHVzZXIuTEFTVF9OQU1FXHJcbiAgICAgICAgfSBlbHNlIGlmICghdXNlci5TRUNPTkRfTkFNRSkge1xyXG4gICAgICAgICAgICByZXMgPSB1c2VyLkxBU1RfTkFNRSArICcgJyArIHVzZXIuTkFNRVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHVzZXIuTEFTVF9OQU1FICsgJyAnICsgdXNlci5OQU1FICsgJyAnICsgdXNlci5TRUNPTkRfTkFNRVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzLnRyaW0oKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZJKHVzZXI6IGlCWFJlc3RVc2VyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmVzID0gJydcclxuICAgICAgICBpZiAoIXVzZXIuTEFTVF9OQU1FKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IE5BTUUgPSAodXNlci5OQU1FKSA/IHVzZXIuTkFNRSA6ICcnXHJcbiAgICAgICAgICAgIHJlcyA9IE5BTUVcclxuICAgICAgICB9IGVsc2UgaWYgKCF1c2VyLk5BTUUpIHtcclxuICAgICAgICAgICAgcmVzID0gdXNlci5MQVNUX05BTUVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMgPSB1c2VyLkxBU1RfTkFNRSArICcgJyArIHVzZXIuTkFNRVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzLnRyaW0oKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZJT1Nob3J0KHVzZXI6IGlCWFJlc3RVc2VyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmVzID0gJydcclxuICAgICAgICBpZiAoIXVzZXIuTEFTVF9OQU1FKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFNFQ09ORF9OQU1FID0gKHVzZXIuU0VDT05EX05BTUUpID8gdXNlci5TRUNPTkRfTkFNRSA6ICcnXHJcbiAgICAgICAgICAgIGNvbnN0IE5BTUUgPSAodXNlci5OQU1FKSA/IHVzZXIuTkFNRSA6ICcnXHJcbiAgICAgICAgICAgIHJlcyA9IE5BTUUgKyAnICcgKyBTRUNPTkRfTkFNRVxyXG4gICAgICAgIH0gZWxzZSBpZiAoIXVzZXIuTkFNRSkge1xyXG4gICAgICAgICAgICByZXMgPSB1c2VyLkxBU1RfTkFNRVxyXG4gICAgICAgIH0gZWxzZSBpZiAoIXVzZXIuU0VDT05EX05BTUUpIHtcclxuICAgICAgICAgICAgcmVzID0gdXNlci5MQVNUX05BTUUgKyAnICcgKyB1c2VyLk5BTUUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyAnLidcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMgPVxyXG4gICAgICAgICAgICAgICAgdXNlci5MQVNUX05BTUUgKyAnICcgK1xyXG4gICAgICAgICAgICAgICAgdXNlci5OQU1FLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgJy4nICtcclxuICAgICAgICAgICAgICAgIHVzZXIuU0VDT05EX05BTUUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyAnLidcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcy50cmltKClcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Сервис для вывода сообщений пользователю
3
+ * TODO: логирование
4
+ */
5
+ import { Injectable } from '@angular/core';
6
+ import { ToastMessageComponent } from '../../services/snack-bar/toast-message/toast-message.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/snack-bar";
9
+ export default class SnackBarService {
10
+ constructor(snackBar) {
11
+ this.snackBar = snackBar;
12
+ }
13
+ error(message, sec = 12) {
14
+ this.standardMessage(message, sec, 'error');
15
+ }
16
+ warning(message, sec = 7) {
17
+ this.standardMessage(message, sec, 'warning');
18
+ }
19
+ success(message, sec = 7) {
20
+ this.standardMessage(message, sec, 'success');
21
+ }
22
+ standardMessage(message, sec = 5, name = 'error') {
23
+ this.snackBar.open(message);
24
+ this.snackBar.openFromComponent(ToastMessageComponent, {
25
+ duration: sec * 1000,
26
+ data: {
27
+ message: message,
28
+ type: name
29
+ },
30
+ panelClass: name + '-box'
31
+ });
32
+ }
33
+ }
34
+ SnackBarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SnackBarService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ SnackBarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SnackBarService, providedIn: 'root' });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SnackBarService, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root'
40
+ }]
41
+ }], ctorParameters: function () { return [{ type: i1.MatSnackBar }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQTs7O0FBTXRHLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZUFBZTtJQUVsQyxZQUFvQixRQUFxQjtRQUFyQixhQUFRLEdBQVIsUUFBUSxDQUFhO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsR0FBRyxFQUFFO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLE9BQU87UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRTtZQUNyRCxRQUFRLEVBQUUsR0FBRyxHQUFHLElBQUk7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixJQUFJLEVBQUUsSUFBSTthQUNYO1lBQ0QsVUFBVSxFQUFFLElBQUksR0FBRyxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQTNCa0IsZUFBZTtnSEFBZixlQUFlLGNBRnRCLE1BQU07MkZBRUMsZUFBZTtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9Cy0L7QtNCwINGB0L7QvtCx0YnQtdC90LjQuSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y5cbiAqIFRPRE86INC70L7Qs9C40YDQvtCy0LDQvdC40LVcbiAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUb2FzdE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zbmFjay1iYXIvdG9hc3QtbWVzc2FnZS90b2FzdC1tZXNzYWdlLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNuYWNrQmFyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgc2VjID0gMTIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YW5kYXJkTWVzc2FnZShtZXNzYWdlLCBzZWMsICdlcnJvcicpXG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgc2VjID0gNyk6IHZvaWQge1xuICAgIHRoaXMuc3RhbmRhcmRNZXNzYWdlKG1lc3NhZ2UsIHNlYywgJ3dhcm5pbmcnKTtcbiAgfVxuXG4gIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBzZWMgPSA3KTogdm9pZCB7XG4gICAgdGhpcy5zdGFuZGFyZE1lc3NhZ2UobWVzc2FnZSwgc2VjLCAnc3VjY2VzcycpO1xuICB9XG5cbiAgc3RhbmRhcmRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgc2VjID0gNSwgbmFtZSA9ICdlcnJvcicpOiB2b2lke1xuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlKTtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KFRvYXN0TWVzc2FnZUNvbXBvbmVudCwge1xuICAgICAgZHVyYXRpb246IHNlYyAqIDEwMDAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHR5cGU6IG5hbWVcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiBuYW1lICsgJy1ib3gnXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, inject, Inject, ViewEncapsulation } from '@angular/core';
2
+ import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';
3
+ import { BxRestModule } from '../../../request/bx-rest.module';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/button";
6
+ import * as i2 from "@angular/material/icon";
7
+ export class ToastMessageComponent {
8
+ constructor(data) {
9
+ this.data = data;
10
+ this.snackBarRef = inject(MatSnackBarRef);
11
+ }
12
+ getClass() {
13
+ switch (this.data.type) {
14
+ case 'error':
15
+ case 'warning':
16
+ case 'success':
17
+ return this.data.type + '-message';
18
+ }
19
+ return '';
20
+ }
21
+ }
22
+ ToastMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ToastMessageComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component });
23
+ ToastMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ToastMessageComponent, isStandalone: true, selector: "app-view", ngImport: i0, template: "<div class=\"w-100 d-flex\">\n <span matSnackBarLabel [class]=\"getClass()\">\n {{ data.message }}\n</span>\n <span matSnackBarActions [class]=\"getClass()\">\n <button mat-button matSnackBarAction (click)=\"snackBarRef.dismissWithAction()\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n</span>\n</div>\n\n", styles: [":host{display:flex;background-color:red}:host .mdc-snackbar__surface{padding:0;margin:0}:host .error-message{color:red}:host.error-box{background-color:#eec1c1}:host.error-box .error-message{color:red}mat-snack-bar-container.mdc-snackbar.error-box .mdc-snackbar__surface{background-color:#eec1c1}mat-snack-bar-container.mdc-snackbar.error-box .error-message{color:red}mat-snack-bar-container.mdc-snackbar.warning-box .mdc-snackbar__surface{background-color:#f0f2b9}mat-snack-bar-container.mdc-snackbar.warning-box .warning-message{color:#15140f}mat-snack-bar-container.mdc-snackbar.success-box .mdc-snackbar__surface{background-color:#daf7d1}mat-snack-bar-container.mdc-snackbar.success-box .success-message{color:#423f31}\n"], dependencies: [{ kind: "ngmodule", type: BxRestModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ToastMessageComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'app-view', encapsulation: ViewEncapsulation.None, standalone: true, imports: [BxRestModule], template: "<div class=\"w-100 d-flex\">\n <span matSnackBarLabel [class]=\"getClass()\">\n {{ data.message }}\n</span>\n <span matSnackBarActions [class]=\"getClass()\">\n <button mat-button matSnackBarAction (click)=\"snackBarRef.dismissWithAction()\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n</span>\n</div>\n\n", styles: [":host{display:flex;background-color:red}:host .mdc-snackbar__surface{padding:0;margin:0}:host .error-message{color:red}:host.error-box{background-color:#eec1c1}:host.error-box .error-message{color:red}mat-snack-bar-container.mdc-snackbar.error-box .mdc-snackbar__surface{background-color:#eec1c1}mat-snack-bar-container.mdc-snackbar.error-box .error-message{color:red}mat-snack-bar-container.mdc-snackbar.warning-box .mdc-snackbar__surface{background-color:#f0f2b9}mat-snack-bar-container.mdc-snackbar.warning-box .warning-message{color:#15140f}mat-snack-bar-container.mdc-snackbar.success-box .mdc-snackbar__surface{background-color:#daf7d1}mat-snack-bar-container.mdc-snackbar.success-box .success-message{color:#423f31}\n"] }]
27
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
28
+ type: Inject,
29
+ args: [MAT_SNACK_BAR_DATA]
30
+ }] }]; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9zbmFjay1iYXIvdG9hc3QtbWVzc2FnZS90b2FzdC1tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL3NuYWNrLWJhci90b2FzdC1tZXNzYWdlL3RvYXN0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUE7Ozs7QUFVOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxZQUErQyxJQUFnRTtRQUFoRSxTQUFJLEdBQUosSUFBSSxDQUE0RDtRQUYvRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUdwQyxDQUFDO0lBRUQsUUFBUTtRQUNOLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUM7WUFDckIsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztTQUN0QztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7a0hBZlUscUJBQXFCLGtCQUlaLGtCQUFrQjtzR0FKM0IscUJBQXFCLG9FQ1psQyx3VUFhQSw2d0JESFksWUFBWTsyRkFFWCxxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0UsVUFBVSxpQkFHTCxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs7MEJBTVYsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNQVRfU05BQ0tfQkFSX0RBVEEsIE1hdFNuYWNrQmFyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJ1xuaW1wb3J0IHsgQnhSZXN0TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vcmVxdWVzdC9ieC1yZXN0Lm1vZHVsZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QtbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvYXN0LW1lc3NhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0J4UmVzdE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0TWVzc2FnZUNvbXBvbmVudCB7XG5cbiAgc25hY2tCYXJSZWYgPSBpbmplY3QoTWF0U25hY2tCYXJSZWYpXG5cbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfU05BQ0tfQkFSX0RBVEEpIHB1YmxpYyBkYXRhOiB7IG1lc3NhZ2U6IHN0cmluZywgdHlwZTogJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdzdWNjZXNzJyB9KSB7XG4gIH1cblxuICBnZXRDbGFzcygpOnN0cmluZ3tcbiAgICBzd2l0Y2ggKHRoaXMuZGF0YS50eXBlKXtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEudHlwZSArICctbWVzc2FnZSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleFwiPlxuICA8c3BhbiBtYXRTbmFja0JhckxhYmVsIFtjbGFzc109XCJnZXRDbGFzcygpXCI+XG4gIHt7IGRhdGEubWVzc2FnZSB9fVxuPC9zcGFuPlxuICA8c3BhbiBtYXRTbmFja0JhckFjdGlvbnMgW2NsYXNzXT1cImdldENsYXNzKClcIj5cbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdFNuYWNrQmFyQWN0aW9uIChjbGljayk9XCJzbmFja0JhclJlZi5kaXNtaXNzV2l0aEFjdGlvbigpXCI+XG4gICAgPG1hdC1pY29uPlxuICAgICAgY2xvc2VcbiAgICA8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbjwvZGl2PlxuXG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Injectable } from '@angular/core';
2
+ import serialize from '../../functions/serializeJavascript';
3
+ import * as i0 from "@angular/core";
4
+ export default class JSONServices {
5
+ static deserialize(data) {
6
+ return eval('(' + data + ')');
7
+ }
8
+ static serialize(data) {
9
+ return serialize(data);
10
+ }
11
+ }
12
+ JSONServices.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONServices, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
+ JSONServices.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONServices, providedIn: 'root' });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONServices, decorators: [{
15
+ type: Injectable,
16
+ args: [{
17
+ providedIn: 'root'
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL3ZhbmlsbGEvSlNPTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sU0FBUyxNQUFNLHFDQUFxQyxDQUFBOztBQUszRCxNQUFNLENBQUMsT0FBTyxPQUFPLFlBQVk7SUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFTO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBUztRQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixDQUFDOzt5R0FQa0IsWUFBWTs2R0FBWixZQUFZLGNBRm5CLE1BQU07MkZBRUMsWUFBWTtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCBzZXJpYWxpemUgZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3NlcmlhbGl6ZUphdmFzY3JpcHQnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlNPTlNlcnZpY2VzIHtcbiAgc3RhdGljIGRlc2VyaWFsaXplKGRhdGE6IGFueSkge1xuICAgIHJldHVybiBldmFsKCcoJyArIGRhdGEgKyAnKScpXG4gIH1cblxuICBzdGF0aWMgc2VyaWFsaXplKGRhdGE6IGFueSApIHtcbiAgICByZXR1cm4gc2VyaWFsaXplKGRhdGEpXG4gIH1cbn1cbiJdfQ==