bx-rest 0.0.18 → 0.0.20

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 (87) hide show
  1. package/consts/part-name-metods.d.ts +74 -0
  2. package/consts/time.d.ts +3 -0
  3. package/esm2020/bx-rest.mjs +2 -2
  4. package/esm2020/consts/part-name-metods.mjs +75 -0
  5. package/esm2020/consts/time.mjs +4 -0
  6. package/esm2020/functions/mapResult.mjs +7 -0
  7. package/esm2020/functions/serializeJavascript.mjs +200 -0
  8. package/esm2020/map/base.mjs +14 -0
  9. package/esm2020/map/lists/element.mjs +22 -0
  10. package/esm2020/public-api.mjs +5 -0
  11. package/esm2020/request/bx-rest.module.mjs +28 -0
  12. package/esm2020/request/lists/element.mjs +22 -0
  13. package/esm2020/request/lists.mjs +25 -0
  14. package/esm2020/request/user.mjs +204 -0
  15. package/esm2020/rest.mjs +41 -0
  16. package/esm2020/services/base.mjs +174 -0
  17. package/esm2020/services/http/HttpBX.mjs +128 -0
  18. package/esm2020/services/http/HttpData.mjs +124 -0
  19. package/esm2020/services/http/base/base.mjs +29 -0
  20. package/esm2020/services/http/base/http.mjs +28 -0
  21. package/esm2020/services/http/http.mjs +135 -0
  22. package/esm2020/services/http/sessionKey.mjs +180 -0
  23. package/esm2020/services/map/base.mjs +14 -0
  24. package/esm2020/services/map/rest/user.mjs +89 -0
  25. package/esm2020/services/snack-bar/snack-bar.service.mjs +42 -0
  26. package/esm2020/services/snack-bar/toast-message/toast-message.component.mjs +31 -0
  27. package/esm2020/services/vanilla/JSON.mjs +20 -0
  28. package/esm2020/services/vanilla/localStorage.mjs +35 -0
  29. package/esm2020/services/vanilla//321/201ookies.mjs +44 -0
  30. package/esm2020/store/auth.mjs +26 -0
  31. package/esm2020/store/users.mjs +67 -0
  32. package/esm2020/typification/auth/save.mjs +2 -0
  33. package/esm2020/typification/rest/api-lib.mjs +21 -0
  34. package/esm2020/typification/rest/base/YesNo.mjs +2 -0
  35. package/esm2020/typification/rest/base/httpAnswerBX.mjs +2 -0
  36. package/esm2020/typification/rest/batch/batchRequestParam.mjs +2 -0
  37. package/esm2020/typification/rest/lib.mjs +2 -0
  38. package/esm2020/typification/rest/lists/element/get.mjs +2 -0
  39. package/esm2020/typification/rest/settings.mjs +2 -0
  40. package/esm2020/typification/rest/support/param.mjs +2 -0
  41. package/esm2020/typification/rest/user/UserFilterSearch.mjs +2 -0
  42. package/esm2020/typification/rest/user/get.mjs +2 -0
  43. package/esm2020/typification/rest/user/user.mjs +2 -0
  44. package/fesm2015/bx-rest.mjs +260 -0
  45. package/fesm2015/bx-rest.mjs.map +1 -1
  46. package/fesm2020/bx-rest.mjs +257 -0
  47. package/fesm2020/bx-rest.mjs.map +1 -1
  48. package/functions/mapResult.d.ts +2 -0
  49. package/functions/serializeJavascript.d.ts +2 -0
  50. package/index.d.ts +1 -1
  51. package/map/base.d.ts +6 -0
  52. package/map/lists/element.d.ts +8 -0
  53. package/package.json +1 -1
  54. package/public-api.d.ts +1 -0
  55. package/request/bx-rest.module.d.ts +8 -0
  56. package/request/lists/element.d.ts +19 -0
  57. package/request/lists.d.ts +15 -0
  58. package/request/user.d.ts +51 -0
  59. package/rest.d.ts +14 -0
  60. package/services/base.d.ts +32 -0
  61. package/services/http/HttpBX.d.ts +26 -0
  62. package/services/http/HttpData.d.ts +13 -0
  63. package/services/http/base/base.d.ts +16 -0
  64. package/services/http/base/http.d.ts +7 -0
  65. package/services/http/http.d.ts +31 -0
  66. package/services/http/sessionKey.d.ts +34 -0
  67. package/services/map/base.d.ts +6 -0
  68. package/services/map/rest/user.d.ts +12 -0
  69. package/services/snack-bar/snack-bar.service.d.ts +12 -0
  70. package/services/snack-bar/toast-message/toast-message.component.d.ts +16 -0
  71. package/services/vanilla/JSON.d.ts +7 -0
  72. package/services/vanilla/localStorage.d.ts +10 -0
  73. package/services/vanilla//321/201ookies.d.ts +9 -0
  74. package/store/auth.d.ts +20 -0
  75. package/store/users.d.ts +34 -0
  76. package/typification/auth/save.d.ts +14 -0
  77. package/typification/rest/api-lib.d.ts +9 -0
  78. package/typification/rest/base/YesNo.d.ts +1 -0
  79. package/typification/rest/base/httpAnswerBX.d.ts +15 -0
  80. package/typification/rest/batch/batchRequestParam.d.ts +16 -0
  81. package/typification/rest/lib.d.ts +18 -0
  82. package/typification/rest/lists/element/get.d.ts +28 -0
  83. package/typification/rest/settings.d.ts +6 -0
  84. package/typification/rest/support/param.d.ts +5 -0
  85. package/typification/rest/user/UserFilterSearch.d.ts +43 -0
  86. package/typification/rest/user/get.d.ts +13 -0
  87. package/typification/rest/user/user.d.ts +62 -0
@@ -0,0 +1,124 @@
1
+ import { BaseServices } from '../../services/base';
2
+ import { HttpParams } from '@angular/common/http';
3
+ export class HttpData extends BaseServices {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.defSettings = {
7
+ timeZone: {
8
+ calc: true,
9
+ levelOut: false
10
+ }
11
+ };
12
+ }
13
+ getHttpParamsGet(// не так уж и сложно сделать сложенный HttpParams, да гугл?
14
+ obj, sendHttpParams = new HttpParams(), thisArray = false, nesting = [],
15
+ // settings = this.defSettings
16
+ _ = this.defSettings) {
17
+ for (const key in obj) {
18
+ let setKey = '';
19
+ if (nesting.length) {
20
+ let first = nesting[0];
21
+ setKey = (nesting.length > 1)
22
+ ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
23
+ : first + '[' + key + ']';
24
+ }
25
+ else {
26
+ setKey = key;
27
+ }
28
+ switch (typeof obj[key]) {
29
+ case 'string':
30
+ sendHttpParams = sendHttpParams.set(setKey, obj[key]);
31
+ break;
32
+ case 'symbol':
33
+ case 'number':
34
+ case 'bigint':
35
+ case 'boolean':
36
+ sendHttpParams = sendHttpParams.set(setKey, String(obj[key]));
37
+ break;
38
+ case 'object':
39
+ nesting.push(key);
40
+ sendHttpParams = this.getHttpParamsGet(obj[key], sendHttpParams, false, nesting);
41
+ nesting.pop();
42
+ break;
43
+ case 'function':
44
+ case 'undefined':
45
+ default:
46
+ console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj);
47
+ }
48
+ }
49
+ return sendHttpParams;
50
+ }
51
+ getHttpParamsPost(obj, sendHttpParams = new FormData(), thisArray = false, nesting = [], settings = this.defSettings) {
52
+ if (obj instanceof Blob) {
53
+ let first = nesting[0];
54
+ let setKey = (nesting.length > 1)
55
+ ? first + '[' + nesting.slice(1).join('][') + ']'
56
+ : first;
57
+ sendHttpParams.set(setKey, obj);
58
+ return sendHttpParams;
59
+ }
60
+ else if (obj instanceof Date) {
61
+ let first = nesting[0];
62
+ let tzoffset = (settings.timeZone.calc) ? obj.getTimezoneOffset() * 60000 : 0; // вычисляем влияние часового пояса
63
+ let levelOut = (settings.timeZone.levelOut) ? obj.getTimezoneOffset() * 60000 : 0; // вычисляем влияние часового пояса
64
+ let setKey = (nesting.length > 1)
65
+ ? first + '[' + nesting.slice(1).join('][') + ']'
66
+ : first;
67
+ sendHttpParams.set(setKey, (new Date(obj.valueOf() + tzoffset - levelOut)).toISOString());
68
+ return sendHttpParams;
69
+ }
70
+ else {
71
+ for (const key in obj) {
72
+ let setKey = '';
73
+ if (nesting.length) {
74
+ let first = nesting[0];
75
+ setKey = (nesting.length > 1)
76
+ ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
77
+ : first + '[' + key + ']';
78
+ }
79
+ else {
80
+ setKey = key;
81
+ }
82
+ switch (typeof obj[key]) {
83
+ case 'string':
84
+ sendHttpParams.set(setKey, obj[key]);
85
+ break;
86
+ case 'symbol':
87
+ case 'number':
88
+ case 'bigint':
89
+ case 'boolean':
90
+ sendHttpParams.set(setKey, String(obj[key]));
91
+ break;
92
+ case 'object':
93
+ nesting.push(key);
94
+ sendHttpParams = this.getHttpParamsPost(obj[key], sendHttpParams, false, nesting, settings);
95
+ nesting.pop();
96
+ break;
97
+ case 'function':
98
+ case 'undefined':
99
+ default:
100
+ console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj);
101
+ }
102
+ }
103
+ }
104
+ return sendHttpParams;
105
+ }
106
+ mapResult(v) {
107
+ if (v && (v.result || typeof v.result === 'boolean')) {
108
+ return v.result;
109
+ }
110
+ return undefined;
111
+ }
112
+ sliceArrayIntoChunks(arr, chunkSize) {
113
+ const res = [];
114
+ for (let i = 0; i < arr.length; i += chunkSize) {
115
+ const chunk = arr.slice(i, i + chunkSize);
116
+ res.push(chunk);
117
+ }
118
+ return res;
119
+ }
120
+ removingMultipleSlashes(str) {
121
+ return str.replace(/\/{2,}/g, '/');
122
+ }
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL0h0dHBEYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFJakQsTUFBTSxPQUFPLFFBQVMsU0FBUSxZQUFZO0lBQTFDOztRQUVJLGdCQUFXLEdBQXVCO1lBQzlCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsS0FBSzthQUNsQjtTQUNKLENBQUE7SUFpSUwsQ0FBQztJQS9IRyxnQkFBZ0IsQ0FBRSw0REFBNEQ7SUFDMUUsR0FBUSxFQUNSLGlCQUE2QixJQUFJLFVBQVUsRUFBRSxFQUM3QyxTQUFTLEdBQUcsS0FBSyxFQUNqQixVQUFvQixFQUFFO0lBQ3RCLDhCQUE4QjtJQUM5QixDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVc7UUFFcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDbkIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2YsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNoQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3RCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUN6QixDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUc7b0JBQzlELENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7YUFDaEM7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TyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2VydmljZXMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlJ1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IGlIdHRwUGFyYW1TZXR0aW5ncyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3NldHRpbmdzJ1xyXG5pbXBvcnQgaUh0dHBBbnN3ZXJCWCBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2h0dHBBbnN3ZXJCWCdcclxuXHJcbmV4cG9ydCBjbGFzcyBIdHRwRGF0YSBleHRlbmRzIEJhc2VTZXJ2aWNlcyB7XHJcblxyXG4gICAgZGVmU2V0dGluZ3M6IGlIdHRwUGFyYW1TZXR0aW5ncyA9IHtcclxuICAgICAgICB0aW1lWm9uZToge1xyXG4gICAgICAgICAgICBjYWxjOiB0cnVlLFxyXG4gICAgICAgICAgICBsZXZlbE91dDogZmFsc2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SHR0cFBhcmFtc0dldCggLy8g0L3QtSDRgtCw0Log0YPQtiDQuCDRgdC70L7QttC90L4g0YHQtNC10LvQsNGC0Ywg0YHQu9C+0LbQtdC90L3Ri9C5IEh0dHBQYXJhbXMsINC00LAg0LPRg9Cz0Ls/XHJcbiAgICAgICAgb2JqOiBhbnksXHJcbiAgICAgICAgc2VuZEh0dHBQYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLFxyXG4gICAgICAgIHRoaXNBcnJheSA9IGZhbHNlLFxyXG4gICAgICAgIG5lc3Rpbmc6IHN0cmluZ1tdID0gW10sXHJcbiAgICAgICAgLy8gc2V0dGluZ3MgPSB0aGlzLmRlZlNldHRpbmdzXHJcbiAgICAgICAgXyA9IHRoaXMuZGVmU2V0dGluZ3NcclxuICAgICk6IGFueSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgIGxldCBzZXRLZXkgPSAnJ1xyXG4gICAgICAgICAgICBpZiAobmVzdGluZy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IG5lc3RpbmdbMF1cclxuICAgICAgICAgICAgICAgIHNldEtleSA9IChuZXN0aW5nLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmaXJzdCArICdbJyArIG5lc3Rpbmcuc2xpY2UoMSkuam9pbignXVsnKSArICddWycgKyBrZXkgKyAnXSdcclxuICAgICAgICAgICAgICAgICAgICA6IGZpcnN0ICsgJ1snICsga2V5ICsgJ10nXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRLZXkgPSBrZXlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvYmpba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgICAgICBzZW5kSHR0cFBhcmFtcyA9IHNlbmRIdHRwUGFyYW1zLnNldChzZXRLZXksIG9ialtrZXldKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICBjYXNlICdzeW1ib2wnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2JpZ2ludCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgICAgICBzZW5kSHR0cFBhcmFtcyA9IHNlbmRIdHRwUGFyYW1zLnNldChzZXRLZXksIFN0cmluZyhvYmpba2V5XSkpXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZy5wdXNoKGtleSlcclxuICAgICAgICAgICAgICAgICAgICBzZW5kSHR0cFBhcmFtcyA9IHRoaXMuZ2V0SHR0cFBhcmFtc0dldChvYmpba2V5XSwgc2VuZEh0dHBQYXJhbXMsIGZhbHNlLCBuZXN0aW5nKVxyXG4gICAgICAgICAgICAgICAgICAgIG5lc3RpbmcucG9wKClcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign0KLRiyDQvtGC0L/RgNCw0LLQuNC7INGH0YLQvi3RgtC+INC90LUg0YLQvicsIG9ialtrZXldLCB0eXBlb2Ygb2JqW2tleV0sIHR5cGVvZiBvYmopXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbmRIdHRwUGFyYW1zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SHR0cFBhcmFtc1Bvc3QoXHJcbiAgICAgICAgb2JqOiBhbnksXHJcbiAgICAgICAgc2VuZEh0dHBQYXJhbXM6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksXHJcbiAgICAgICAgdGhpc0FycmF5ID0gZmFsc2UsXHJcbiAgICAgICAgbmVzdGluZzogc3RyaW5nW10gPSBbXSxcclxuICAgICAgICBzZXR0aW5ncyA9IHRoaXMuZGVmU2V0dGluZ3NcclxuICAgICk6IGFueSB7XHJcblxyXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBCbG9iKSB7XHJcbiAgICAgICAgICAgIGxldCBmaXJzdCA9IG5lc3RpbmdbMF1cclxuICAgICAgICAgICAgbGV0IHNldEtleSA9IChuZXN0aW5nLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICA/IGZpcnN0ICsgJ1snICsgbmVzdGluZy5zbGljZSgxKS5qb2luKCddWycpICsgJ10nXHJcbiAgICAgICAgICAgICAgICA6IGZpcnN0XHJcbiAgICAgICAgICAgIHNlbmRIdHRwUGFyYW1zLnNldChzZXRLZXksIG9iailcclxuICAgICAgICAgICAgcmV0dXJuIHNlbmRIdHRwUGFyYW1zXHJcbiAgICAgICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBmaXJzdCA9IG5lc3RpbmdbMF1cclxuICAgICAgICAgICAgbGV0IHR6b2Zmc2V0ID0gKHNldHRpbmdzLnRpbWVab25lLmNhbGMpID8gIG9iai5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDAgOiAwIC8vINCy0YvRh9C40YHQu9GP0LXQvCDQstC70LjRj9C90LjQtSDRh9Cw0YHQvtCy0L7Qs9C+INC/0L7Rj9GB0LBcclxuICAgICAgICAgICAgbGV0IGxldmVsT3V0ID0gKHNldHRpbmdzLnRpbWVab25lLmxldmVsT3V0KSA/ICBvYmouZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwIDogMCAvLyDQstGL0YfQuNGB0LvRj9C10Lwg0LLQu9C40Y/QvdC40LUg0YfQsNGB0L7QstC+0LPQviDQv9C+0Y/RgdCwXHJcbiAgICAgICAgICAgIGxldCBzZXRLZXkgPSAobmVzdGluZy5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICAgICAgPyBmaXJzdCArICdbJyArIG5lc3Rpbmcuc2xpY2UoMSkuam9pbignXVsnKSArICddJ1xyXG4gICAgICAgICAgICAgICAgOiBmaXJzdFxyXG4gICAgICAgICAgICBzZW5kSHR0cFBhcmFtcy5zZXQoc2V0S2V5LCAobmV3IERhdGUob2JqLnZhbHVlT2YoKSArIHR6b2Zmc2V0IC0gbGV2ZWxPdXQpKS50b0lTT1N0cmluZygpKVxyXG4gICAgICAgICAgICByZXR1cm4gc2VuZEh0dHBQYXJhbXNcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXRLZXkgPSAnJ1xyXG4gICAgICAgICAgICAgICAgaWYgKG5lc3RpbmcubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gbmVzdGluZ1swXVxyXG4gICAgICAgICAgICAgICAgICAgIHNldEtleSA9IChuZXN0aW5nLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmlyc3QgKyAnWycgKyBuZXN0aW5nLnNsaWNlKDEpLmpvaW4oJ11bJykgKyAnXVsnICsga2V5ICsgJ10nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmlyc3QgKyAnWycgKyBrZXkgKyAnXSdcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0S2V5ID0ga2V5XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvYmpba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRIdHRwUGFyYW1zLnNldChzZXRLZXksIG9ialtrZXldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N5bWJvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdiaWdpbnQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZW5kSHR0cFBhcmFtcy5zZXQoc2V0S2V5LCBTdHJpbmcob2JqW2tleV0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RpbmcucHVzaChrZXkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRIdHRwUGFyYW1zID0gdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtrZXldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEh0dHBQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RpbmcucG9wKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfQotGLINC+0YLQv9GA0LDQstC40Lsg0YfRgtC+LdGC0L4g0L3QtSDRgtC+Jywgb2JqW2tleV0sIHR5cGVvZiBvYmpba2V5XSwgdHlwZW9mIG9iailcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VuZEh0dHBQYXJhbXNcclxuICAgIH1cclxuXHJcbiAgICBtYXBSZXN1bHQ8VD4odjogaUh0dHBBbnN3ZXJCWDxUPiB8IHVuZGVmaW5lZCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh2ICYmICh2LnJlc3VsdCB8fCB0eXBlb2Ygdi5yZXN1bHQgPT09ICdib29sZWFuJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHYucmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBzbGljZUFycmF5SW50b0NodW5rcyhhcnI6IGFueVtdLCBjaHVua1NpemU6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjaHVua1NpemUpIHtcclxuICAgICAgICAgICAgY29uc3QgY2h1bmsgPSBhcnIuc2xpY2UoaSwgaSArIGNodW5rU2l6ZSk7XHJcbiAgICAgICAgICAgIHJlcy5wdXNoKGNodW5rKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmluZ011bHRpcGxlU2xhc2hlcyhzdHI6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFwvezIsfS9nLCAnLycpXHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ import SnackBarService from '../../../services/snack-bar/snack-bar.service';
2
+ import { of, } from 'rxjs';
3
+ import { HttpData } from '../../../services/http/HttpData';
4
+ import { Injectable } from '@angular/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class BaseHttp extends HttpData {
8
+ constructor(http, snackBar) {
9
+ super();
10
+ this.http = http;
11
+ this.snackBar = snackBar;
12
+ }
13
+ handleError(result, textError = 'получения данных') {
14
+ return (error) => {
15
+ console.error(`failed: ${error.message}`);
16
+ this.snackBar.error('Ошибка: ' + textError);
17
+ return of(result);
18
+ };
19
+ }
20
+ }
21
+ BaseHttp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseHttp, deps: [{ token: i1.HttpClient }, { token: SnackBarService }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ BaseHttp.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseHttp, providedIn: 'root' });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseHttp, decorators: [{
24
+ type: Injectable,
25
+ args: [{
26
+ providedIn: 'root'
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SnackBarService }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvYmFzZS9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sZUFBZSxNQUFNLCtDQUErQyxDQUFBO0FBQzNFLE9BQU8sRUFBYyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUE7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7OztBQUsxQyxNQUFNLE9BQWdCLFFBQVMsU0FBUSxRQUFRO0lBRTNDLFlBQTZCLElBQWdCLEVBQVMsUUFBeUI7UUFDM0UsS0FBSyxFQUFFLENBQUE7UUFEa0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBRS9FLENBQUM7SUFlRCxXQUFXLENBQ1AsTUFBVSxFQUNWLFNBQVMsR0FBRyxrQkFBa0I7UUFDOUIsT0FBTyxDQUFDLEtBQVksRUFBaUIsRUFBRTtZQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFBO1lBQzNDLE9BQU8sRUFBRSxDQUFDLE1BQVcsQ0FBQyxDQUFBO1FBQzFCLENBQUMsQ0FBQztJQUNOLENBQUM7O3FHQTNCaUIsUUFBUSw0Q0FSdkIsZUFBZTt5R0FRQSxRQUFRLGNBRmQsTUFBTTsyRkFFQSxRQUFRO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjttRkFQTSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcbi8vIGltcG9ydCB7IGlIdHRwUGFyYW1TZXR0aW5ncyB9IGZyb20gJ2J4LXJlc3QvdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcblxyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgU25hY2tCYXJTZXJ2aWNlIGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgSHR0cERhdGEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL0h0dHBEYXRhJ1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUh0dHAgZXh0ZW5kcyBIdHRwRGF0YSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LCBwdWJsaWMgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKClcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBodHRwR2V0PFQ+KFxyXG4gICAgICAgIHVybDogc3RyaW5nLFxyXG4gICAgICAgIHBhcmFtczogYW55LFxyXG4gICAgICAgIHRleHRFcnJvcjogc3RyaW5nLFxyXG4gICAgICAgIHNldHRpbmdzOiBpSHR0cFBhcmFtU2V0dGluZ3NcclxuICAgICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD5cclxuXHJcbiAgICBhYnN0cmFjdCBodHRwUG9zdDxUPih1cmw6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGFueSAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVycm9yOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IGlIdHRwUGFyYW1TZXR0aW5nc1xyXG4gICAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPlxyXG5cclxuICAgIGhhbmRsZUVycm9yPFQ+KFxyXG4gICAgICAgIHJlc3VsdD86IFQsXHJcbiAgICAgICAgdGV4dEVycm9yID0gJ9C/0L7Qu9GD0YfQtdC90LjRjyDQtNCw0L3QvdGL0YUnKSB7XHJcbiAgICAgICAgcmV0dXJuIChlcnJvcjogRXJyb3IpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YClcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5lcnJvcign0J7RiNC40LHQutCwOiAnICsgdGV4dEVycm9yKVxyXG4gICAgICAgICAgICByZXR1cm4gb2YocmVzdWx0IGFzIFQpXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { throwError } from 'rxjs';
2
+ import { catchError } from 'rxjs/operators';
3
+ import { HttpParams } from '@angular/common/http';
4
+ import { BaseHttp } from '../../../services/http/base/base';
5
+ export class BaseHttpServices extends BaseHttp {
6
+ httpGet(url, params = {}, textError = '', settings = this.defSettings) {
7
+ return this.http.get(url, {
8
+ params: this.getHttpParamsGet(params, new HttpParams(), false, [], settings)
9
+ }).pipe(catchError(err => {
10
+ if (!textError.length && err.error.error_description) {
11
+ textError = err.error.error_description;
12
+ }
13
+ this.snackBar.error('Ошибка: ' + textError);
14
+ return throwError(() => err);
15
+ }));
16
+ }
17
+ httpPost(url, params = {}, textError = '', settings = this.defSettings) {
18
+ return this.http.post(url, this.getHttpParamsPost(params, new FormData(), false, [], settings)).pipe(catchError(err => {
19
+ if (!textError.length && err.error.error_description) {
20
+ textError = err.error.error_description;
21
+ }
22
+ this.snackBar.error('Ошибка: ' + textError);
23
+ console.error(err);
24
+ return throwError(() => err);
25
+ }));
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvYmFzZS9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFFM0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFFBQVE7SUFFbkMsT0FBTyxDQUNWLEdBQVcsRUFDWCxNQUFNLEdBQUcsRUFBRSxFQUNYLFNBQVMsR0FBRyxFQUFFLEVBQ2QsV0FBK0IsSUFBSSxDQUFDLFdBQVc7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0IsR0FBRyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUM7U0FDL0UsQ0FBQyxDQUFDLElBQUksQ0FDSCxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNsRCxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQTthQUMxQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQTtZQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FDTCxDQUFBO0lBQ0wsQ0FBQztJQUVNLFFBQVEsQ0FBSSxHQUFXLEVBQ1gsU0FBYyxFQUFFLEVBQ2hCLFNBQVMsR0FBRyxFQUFFLEVBQ2QsV0FBK0IsSUFBSSxDQUFDLFdBQVc7UUFFOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDakIsR0FBRyxFQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUN0RSxDQUFDLElBQUksQ0FDRixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNsRCxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQTthQUMxQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQTtZQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2xCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0NBbUJKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgQmFzZUh0dHAgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL2Jhc2UvYmFzZSdcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cFNlcnZpY2VzIGV4dGVuZHMgQmFzZUh0dHAge1xyXG5cclxuICAgIHB1YmxpYyBodHRwR2V0PFQ+KFxyXG4gICAgICAgIHVybDogc3RyaW5nLFxyXG4gICAgICAgIHBhcmFtcyA9IHt9LFxyXG4gICAgICAgIHRleHRFcnJvciA9ICcnLFxyXG4gICAgICAgIHNldHRpbmdzOiBpSHR0cFBhcmFtU2V0dGluZ3MgPSB0aGlzLmRlZlNldHRpbmdzXHJcbiAgICApOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUIHwgdW5kZWZpbmVkPih1cmwsIHtcclxuICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmdldEh0dHBQYXJhbXNHZXQocGFyYW1zLCBuZXcgSHR0cFBhcmFtcygpLCBmYWxzZSwgW10sIHNldHRpbmdzKVxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGV4dEVycm9yLmxlbmd0aCAmJiBlcnIuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0RXJyb3IgPSBlcnIuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLmVycm9yKCfQntGI0LjQsdC60LA6ICcgKyB0ZXh0RXJyb3IpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBodHRwUG9zdDxUPih1cmw6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHRleHRFcnJvciA9ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBpSHR0cFBhcmFtU2V0dGluZ3MgPSB0aGlzLmRlZlNldHRpbmdzXHJcbiAgICApOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VCB8IHVuZGVmaW5lZD4oXHJcbiAgICAgICAgICAgIHVybCxcclxuICAgICAgICAgICAgdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChwYXJhbXMsIG5ldyBGb3JtRGF0YSgpLCBmYWxzZSwgW10sIHNldHRpbmdzKVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0RXJyb3IubGVuZ3RoICYmIGVyci5lcnJvci5lcnJvcl9kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHRFcnJvciA9IGVyci5lcnJvci5lcnJvcl9kZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuZXJyb3IoJ9Ce0YjQuNCx0LrQsDogJyArIHRleHRFcnJvcilcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiDQtNC+0LTQtdC70LDRgtGMXHJcbiAgICAvLyBodHRwUG9zdEJhc2VXaXRoRmlsZTxUPih1cmw6IHN0cmluZyxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogYW55ID0ge30sXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RXJyb3IgPSAnJyk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gICAgIGxldCBzZWFyY2hGaWxlID0gT2JqZWN0LnZhbHVlcyhwYXJhbXMpLmZpbmQoKGk6IGFueSkgPT4gaSBpbnN0YW5jZW9mIEJsb2IpXHJcbiAgICAvLyAgICAgaWYgKHNlYXJjaEZpbGUpIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQgfCB1bmRlZmluZWQ+KHVybCwgdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChwYXJhbXMpKS5waXBlKFxyXG4gICAgLy8gICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuZXJyb3IoJ9Ce0YjQuNCx0LrQsDogJyArIHRleHRFcnJvcilcclxuICAgIC8vICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXHJcbiAgICAvLyAgICAgICAgICAgICB9KVxyXG4gICAgLy8gICAgICAgICApXHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFBvc3QodXJsLCBwYXJhbXMsIHRleHRFcnJvcilcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbn1cclxuIl19
@@ -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