http-request-manager 0.0.2 → 4.1.2

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 (143) hide show
  1. package/README.md +53 -13
  2. package/esm2022/http-request-manager.mjs +5 -0
  3. package/esm2022/lib/http-request-manager.module.mjs +145 -0
  4. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +41 -0
  5. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +175 -0
  6. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +80 -0
  7. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +42 -0
  8. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +85 -0
  9. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +11 -0
  10. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +29 -0
  11. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +9 -0
  12. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +12 -0
  13. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +10 -0
  14. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +276 -0
  15. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +268 -0
  16. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +75 -0
  17. package/esm2022/lib/index.mjs +4 -0
  18. package/esm2022/lib/interceptors/credentials.interceptor.mjs +14 -0
  19. package/esm2022/lib/interceptors/index.mjs +5 -0
  20. package/esm2022/lib/interceptors/models/error-settings.model.mjs +10 -0
  21. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +47 -0
  22. package/esm2022/lib/interceptors/request-error.interceptor.mjs +49 -0
  23. package/esm2022/lib/interceptors/request-header.interceptor.mjs +41 -0
  24. package/esm2022/lib/models/config-http-options.model.mjs +18 -0
  25. package/esm2022/lib/models/config-local-storage-options.model.mjs +12 -0
  26. package/esm2022/lib/models/config-options.model.mjs +12 -0
  27. package/esm2022/lib/models/config-token.model.mjs +8 -0
  28. package/esm2022/lib/models/data-type.enum.mjs +7 -0
  29. package/esm2022/lib/models/database-storage.model.mjs +10 -0
  30. package/esm2022/lib/models/index.mjs +7 -0
  31. package/esm2022/lib/models/retry-options.model.mjs +10 -0
  32. package/esm2022/lib/services/index.mjs +6 -0
  33. package/esm2022/lib/services/local-storage-manager-service/index.mjs +3 -0
  34. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +300 -0
  35. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +13 -0
  36. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +6 -0
  37. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +13 -0
  38. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +10 -0
  39. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +12 -0
  40. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +7 -0
  41. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +208 -0
  42. package/esm2022/lib/services/request-manager-services/index.mjs +5 -0
  43. package/esm2022/lib/services/request-manager-services/request.service.mjs +201 -0
  44. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +9 -0
  45. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +10 -0
  46. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +5 -0
  47. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +14 -0
  48. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +19 -0
  49. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +266 -0
  50. package/esm2022/lib/services/request-manager-state-service/index.mjs +3 -0
  51. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +20 -0
  52. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +3 -0
  53. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +10 -0
  54. package/esm2022/lib/services/utils/app.service.mjs +26 -0
  55. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +186 -0
  56. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +35 -0
  57. package/esm2022/lib/services/utils/encryption/index.mjs +4 -0
  58. package/esm2022/lib/services/utils/encryption/random.mjs +52 -0
  59. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +77 -0
  60. package/esm2022/lib/services/utils/headers.service.mjs +21 -0
  61. package/esm2022/lib/services/utils/index.mjs +6 -0
  62. package/esm2022/lib/services/utils/object-merger.service.mjs +34 -0
  63. package/esm2022/lib/services/utils/path-query.service.mjs +54 -0
  64. package/esm2022/lib/services/utils/utils.service.mjs +155 -0
  65. package/esm2022/public-api.mjs +7 -0
  66. package/fesm2022/http-request-manager.mjs +3062 -0
  67. package/fesm2022/http-request-manager.mjs.map +1 -0
  68. package/http-request-manager-4.1.2.tgz +0 -0
  69. package/index.d.ts +5 -0
  70. package/lib/http-request-manager.module.d.ts +33 -0
  71. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +24 -0
  72. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +56 -0
  73. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +26 -0
  74. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +13 -0
  75. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +26 -0
  76. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +12 -0
  77. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +16 -0
  78. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +8 -0
  79. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +14 -0
  80. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +10 -0
  81. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +98 -0
  82. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +110 -0
  83. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +16 -0
  84. package/lib/index.d.ts +3 -0
  85. package/lib/interceptors/credentials.interceptor.d.ts +8 -0
  86. package/lib/interceptors/index.d.ts +4 -0
  87. package/lib/interceptors/models/error-settings.model.d.ts +10 -0
  88. package/lib/interceptors/proxy-debugger.interceptor.d.ts +12 -0
  89. package/lib/interceptors/request-error.interceptor.d.ts +10 -0
  90. package/lib/interceptors/request-header.interceptor.d.ts +15 -0
  91. package/lib/models/config-http-options.model.d.ts +21 -0
  92. package/lib/models/config-local-storage-options.model.d.ts +13 -0
  93. package/lib/models/config-options.model.d.ts +12 -0
  94. package/lib/models/config-token.model.d.ts +8 -0
  95. package/lib/models/data-type.enum.d.ts +5 -0
  96. package/lib/models/database-storage.model.d.ts +10 -0
  97. package/lib/models/index.d.ts +6 -0
  98. package/lib/models/retry-options.model.d.ts +10 -0
  99. package/lib/services/index.d.ts +4 -0
  100. package/lib/services/local-storage-manager-service/index.d.ts +2 -0
  101. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +86 -0
  102. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +15 -0
  103. package/lib/services/local-storage-manager-service/models/index.d.ts +5 -0
  104. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +15 -0
  105. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +10 -0
  106. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +13 -0
  107. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +5 -0
  108. package/lib/services/request-manager-services/http-manager.service.d.ts +40 -0
  109. package/lib/services/request-manager-services/index.d.ts +3 -0
  110. package/lib/services/request-manager-services/request.service.d.ts +28 -0
  111. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +2 -0
  112. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +2 -0
  113. package/lib/services/request-manager-services/rxjs-operators/index.d.ts +4 -0
  114. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +7 -0
  115. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +2 -0
  116. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +51 -0
  117. package/lib/services/request-manager-state-service/index.d.ts +2 -0
  118. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +25 -0
  119. package/lib/services/request-manager-state-service/models/index.d.ts +2 -0
  120. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +10 -0
  121. package/lib/services/utils/app.service.d.ts +8 -0
  122. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +17 -0
  123. package/lib/services/utils/encryption/encryption-test.service.d.ts +10 -0
  124. package/lib/services/utils/encryption/index.d.ts +3 -0
  125. package/lib/services/utils/encryption/random.d.ts +7 -0
  126. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +14 -0
  127. package/lib/services/utils/headers.service.d.ts +10 -0
  128. package/lib/services/utils/index.d.ts +5 -0
  129. package/lib/services/utils/object-merger.service.d.ts +7 -0
  130. package/lib/services/utils/path-query.service.d.ts +11 -0
  131. package/lib/services/utils/utils.service.d.ts +24 -0
  132. package/package.json +41 -18
  133. package/public-api.d.ts +3 -0
  134. package/ng-package.json +0 -7
  135. package/src/lib/http-request-manager.component.spec.ts +0 -21
  136. package/src/lib/http-request-manager.component.ts +0 -15
  137. package/src/lib/http-request-manager.module.ts +0 -16
  138. package/src/lib/http-request-manager.service.spec.ts +0 -16
  139. package/src/lib/http-request-manager.service.ts +0 -9
  140. package/src/public-api.ts +0 -7
  141. package/tsconfig.lib.json +0 -14
  142. package/tsconfig.lib.prod.json +0 -10
  143. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,155 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class UtilsService {
5
+ constructor() {
6
+ this.http = inject(HttpClient);
7
+ this.lc = (str) => str.toLowerCase().replace(/[^\w\s]/g, '').replace(/\s+/g, '_');
8
+ }
9
+ isString(x) {
10
+ return Object.prototype.toString.call(x) === '[object String]';
11
+ }
12
+ isObject(obj) {
13
+ return Object.prototype.toString.call(obj) === '[object Object]';
14
+ }
15
+ JSONToString(value) {
16
+ return (this.isObject(value)) ? JSON.stringify(value) : value;
17
+ }
18
+ stringToJSON(value) {
19
+ return (this.isJSON(value)) ? JSON.parse(value) : value;
20
+ }
21
+ isJSON(str) {
22
+ try {
23
+ JSON.parse(str);
24
+ }
25
+ catch (e) {
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ getValueByProp(obj, prop) {
31
+ if (typeof obj === 'undefined')
32
+ return false;
33
+ return obj[prop];
34
+ }
35
+ objectsEqual(x, y) {
36
+ const ok = Object.keys, tx = typeof x, ty = typeof y;
37
+ return x && y && tx === 'object' && tx === ty ? (ok(x).length === ok(y).length &&
38
+ ok(x).every((key) => this.objectsEqual(x[key], y[key]))) : (x === y);
39
+ }
40
+ getJSON(file) {
41
+ return this.http.get(`assets/data/${file}`);
42
+ }
43
+ get today() {
44
+ return new Date().getMilliseconds() / 1000;
45
+ }
46
+ base32ToHex(base32) {
47
+ const base32chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
48
+ const charToValue = (char) => base32chars.indexOf(char.toUpperCase());
49
+ let bits = '';
50
+ let hex = '';
51
+ for (let i = 0; i < base32.length; i++) {
52
+ const val = charToValue(base32.charAt(i));
53
+ bits += val.toString(2).padStart(5, '0');
54
+ }
55
+ for (let i = 0; i + 4 <= bits.length; i += 4) {
56
+ const chunk = bits.substr(i, 4);
57
+ hex += parseInt(chunk, 2).toString(16);
58
+ }
59
+ return hex.toUpperCase();
60
+ }
61
+ binaryToHex(binary) {
62
+ let hex = '';
63
+ for (let i = 0; i < binary.length; i += 8) {
64
+ const byte = binary.substr(i, 8);
65
+ const decimal = parseInt(byte, 2);
66
+ hex += decimal.toString(16).padStart(2, '0');
67
+ }
68
+ return hex.padStart(32, '0').substr(0, 32);
69
+ }
70
+ // y = years, m = months, w = weeks, d = days, hr = hours, mn = minutes else seconds
71
+ // returns epoch time corresponding to the expiry type
72
+ expires(str) {
73
+ if (!str)
74
+ return;
75
+ const match = str.match(/[^0-9]+$/);
76
+ const type = (match) ? str.slice(-match[0].length) : 0;
77
+ const now = Math.floor(new Date().getTime() / 1000);
78
+ let value = 0;
79
+ switch (type) {
80
+ case 'y':
81
+ const years = parseInt(str.slice(0, -1));
82
+ value = now + (years * 31556926);
83
+ break;
84
+ case 'm':
85
+ const months = parseInt(str.slice(0, -1));
86
+ value = now + (months * 2629743);
87
+ break;
88
+ case 'w':
89
+ const weeks = parseInt(str.slice(0, -1));
90
+ value = now + (weeks * 604800);
91
+ break;
92
+ case 'd':
93
+ const days = parseInt(str.slice(0, -1));
94
+ value = now + (days * 86400);
95
+ break;
96
+ case 'hr':
97
+ const hrs = parseInt(str.slice(0, -2));
98
+ value = now + (hrs * 3600);
99
+ break;
100
+ case 'mn':
101
+ const min = parseInt(str.slice(0, -2));
102
+ value = now + (min * 60);
103
+ break;
104
+ default: //seconds
105
+ const sec = parseInt(str.slice(0, -1));
106
+ value = now + (sec);
107
+ break;
108
+ }
109
+ return value;
110
+ }
111
+ hasExpired(expiryDate) {
112
+ if (!expiryDate || expiryDate === 0)
113
+ return false;
114
+ const currentTime = Math.floor(new Date().getTime() / 1000);
115
+ return expiryDate < currentTime;
116
+ }
117
+ hasExpiry(setting) {
118
+ return (setting?.expires) ? true : false;
119
+ }
120
+ expiresIn(expiryDate) {
121
+ if (!expiryDate)
122
+ return;
123
+ const now = Math.floor(new Date().getTime() / 1000);
124
+ let diff = expiryDate - now;
125
+ if (diff <= 0)
126
+ return "Expired";
127
+ const units = [
128
+ { label: 'y', seconds: 31536000 },
129
+ { label: 'm', seconds: 2592000 },
130
+ { label: 'w', seconds: 604800 },
131
+ { label: 'd', seconds: 86400 },
132
+ { label: 'h', seconds: 3600 },
133
+ { label: 'min', seconds: 60 },
134
+ { label: '', seconds: 1 },
135
+ ];
136
+ let result = [];
137
+ for (const unit of units) {
138
+ if (diff >= unit.seconds) {
139
+ const value = Math.floor(diff / unit.seconds);
140
+ diff %= unit.seconds;
141
+ result.push(`${value}${unit.label}${value > 1 ? 's' : ''}`);
142
+ }
143
+ }
144
+ return result.join(', ');
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
147
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, providedIn: 'root' }); }
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, decorators: [{
150
+ type: Injectable,
151
+ args: [{
152
+ providedIn: 'root'
153
+ }]
154
+ }], ctorParameters: function () { return []; } });
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCO1FBRkEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQW1MekIsT0FBRSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBakxwRSxDQUFDO0lBRWpCLFFBQVEsQ0FBQyxDQUFrQjtRQUN6QixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVE7UUFDZixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLENBQUMsSUFB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QUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1lBQy9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQzlCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1lBQzdCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQzdCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO1NBQzVCLENBQUM7UUFFRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDdEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMvRDtTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBbkxVLFlBQVk7bUhBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFV0aWxzU2VydmljZSB7XG5cbiAgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgaXNTdHJpbmcoeDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgU3RyaW5nXSdcbiAgfVxuXG4gIGlzT2JqZWN0KG9iajogYW55KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xuICB9XG5cbiAgSlNPTlRvU3RyaW5nKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gKHRoaXMuaXNPYmplY3QodmFsdWUpKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlXG4gIH1cblxuICBzdHJpbmdUb0pTT04odmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiAodGhpcy5pc0pTT04odmFsdWUpKSA/IEpTT04ucGFyc2UodmFsdWUpIDogdmFsdWVcbiAgfVxuXG4gIGlzSlNPTihzdHI6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBKU09OLnBhcnNlKHN0cilcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldFZhbHVlQnlQcm9wKG9iajogYW55LCBwcm9wOiBzdHJpbmcpIHtcbiAgICBpZih0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIG9ialtwcm9wXVxuICB9XG5cbiAgb2JqZWN0c0VxdWFsKHg6IGFueSwgeTogYW55KTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBvayA9IE9iamVjdC5rZXlzLCB0eCA9IHR5cGVvZiB4LCB0eSA9IHR5cGVvZiB5XG5cbiAgICByZXR1cm4geCAmJiB5ICYmIHR4ID09PSAnb2JqZWN0JyAmJiB0eCA9PT0gdHkgPyAoXG4gICAgICBvayh4KS5sZW5ndGggPT09IG9rKHkpLmxlbmd0aCAmJlxuICAgICAgICBvayh4KS5ldmVyeSgoa2V5OiBhbnkpID0+IHRoaXMub2JqZWN0c0VxdWFsKHhba2V5XSwgeVtrZXldKSlcbiAgICApIDogKHggPT09IHkpXG5cbiAgfVxuXG4gIGdldEpTT04oZmlsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGFzc2V0cy9kYXRhLyR7ZmlsZX1gKVxuICB9XG5cbiAgZ2V0IHRvZGF5KCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldE1pbGxpc2Vjb25kcygpIC8gMTAwMFxuICB9XG5cbiAgYmFzZTMyVG9IZXgoYmFzZTMyOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgYmFzZTMyY2hhcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3XCJcblxuICAgIGNvbnN0IGNoYXJUb1ZhbHVlID0gKGNoYXI6IHN0cmluZykgPT4gYmFzZTMyY2hhcnMuaW5kZXhPZihjaGFyLnRvVXBwZXJDYXNlKCkpXG5cbiAgICBsZXQgYml0cyA9ICcnXG4gICAgbGV0IGhleCA9ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJhc2UzMi5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gY2hhclRvVmFsdWUoYmFzZTMyLmNoYXJBdChpKSlcbiAgICAgIGJpdHMgKz0gdmFsLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDUsICcwJylcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSArIDQgPD0gYml0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgY29uc3QgY2h1bmsgPSBiaXRzLnN1YnN0cihpLCA0KVxuICAgICAgaGV4ICs9IHBhcnNlSW50KGNodW5rLCAyKS50b1N0cmluZygxNilcbiAgICB9XG5cbiAgICByZXR1cm4gaGV4LnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIGJpbmFyeVRvSGV4KGJpbmFyeTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaGV4ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5hcnkubGVuZ3RoOyBpICs9IDgpIHtcbiAgICAgIGNvbnN0IGJ5dGUgPSBiaW5hcnkuc3Vic3RyKGksIDgpO1xuICAgICAgY29uc3QgZGVjaW1hbCA9IHBhcnNlSW50KGJ5dGUsIDIpO1xuICAgICAgaGV4ICs9IGRlY2ltYWwudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgfVxuICAgIHJldHVybiBoZXgucGFkU3RhcnQoMzIsICcwJykuc3Vic3RyKDAsIDMyKTtcbiAgfVxuXG4gIC8vIHkgPSB5ZWFycywgbSA9IG1vbnRocywgdyA9IHdlZWtzLCBkID0gZGF5cywgaHIgPSBob3VycywgbW4gPSBtaW51dGVzIGVsc2Ugc2Vjb25kc1xuICAvLyByZXR1cm5zIGVwb2NoIHRpbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZXhwaXJ5IHR5cGVcbiAgZXhwaXJlcyhzdHI/OiBzdHJpbmcpIHtcblxuICAgIGlmKCFzdHIpIHJldHVyblxuXG4gICAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2goL1teMC05XSskLylcblxuICAgIGNvbnN0IHR5cGUgPSAobWF0Y2gpID8gc3RyLnNsaWNlKC1tYXRjaFswXS5sZW5ndGgpIDogMFxuXG4gICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG5cbiAgICBsZXQgdmFsdWUgPSAwO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlXG4gICAgICAneSc6XG4gICAgICAgIGNvbnN0IHllYXJzID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAoeWVhcnMgKiAzMTU1NjkyNilcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlXG4gICAgICAnbSc6XG4gICAgICAgIGNvbnN0IG1vbnRocyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKG1vbnRocyAqIDI2Mjk3NDMpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZVxuICAgICAgJ3cnOlxuICAgICAgICBjb25zdCB3ZWVrcyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKHdlZWtzICogNjA0ODAwKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdkJzpcbiAgICAgICAgY29uc3QgZGF5cyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKGRheXMgKiA4NjQwMClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlXG4gICAgICAnaHInOlxuICAgICAgICBjb25zdCBocnMgPSBwYXJzZUludChzdHIuc2xpY2UoMCwgLTIpKVxuICAgICAgICB2YWx1ZSA9IG5vdyArIChocnMgKiAzNjAwKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdtbic6XG4gICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMikpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKG1pbiAqIDYwKVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vc2Vjb25kc1xuICAgICAgICBjb25zdCBzZWMgPSBwYXJzZUludChzdHIuc2xpY2UoMCwgLTEpKVxuICAgICAgICB2YWx1ZSA9IG5vdyArIChzZWMpXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBoYXNFeHBpcmVkKGV4cGlyeURhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICghZXhwaXJ5RGF0ZSB8fCBleHBpcnlEYXRlID09PSAwKSByZXR1cm4gZmFsc2VcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIHJldHVybiBleHBpcnlEYXRlIDwgY3VycmVudFRpbWVcbiAgfVxuXG4gIGhhc0V4cGlyeShzZXR0aW5nOiBhbnkpIHtcbiAgICByZXR1cm4gKHNldHRpbmc/LmV4cGlyZXMpID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBleHBpcmVzSW4oZXhwaXJ5RGF0ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFleHBpcnlEYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBub3cgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XG4gICAgbGV0IGRpZmYgPSBleHBpcnlEYXRlIC0gbm93O1xuXG4gICAgaWYgKGRpZmYgPD0gMCkgcmV0dXJuIFwiRXhwaXJlZFwiO1xuXG4gICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICAgIHsgbGFiZWw6ICd5Jywgc2Vjb25kczogMzE1MzYwMDAgfSxcbiAgICAgICAgeyBsYWJlbDogJ20nLCBzZWNvbmRzOiAyNTkyMDAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICd3Jywgc2Vjb25kczogNjA0ODAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdkJywgc2Vjb25kczogODY0MDAgfSxcbiAgICAgICAgeyBsYWJlbDogJ2gnLCBzZWNvbmRzOiAzNjAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdtaW4nLCBzZWNvbmRzOiA2MCB9LFxuICAgICAgICB7IGxhYmVsOiAnJywgc2Vjb25kczogMSB9LFxuICAgIF07XG5cbiAgICBsZXQgcmVzdWx0ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHVuaXQgb2YgdW5pdHMpIHtcbiAgICAgICAgaWYgKGRpZmYgPj0gdW5pdC5zZWNvbmRzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGguZmxvb3IoZGlmZiAvIHVuaXQuc2Vjb25kcyk7XG4gICAgICAgICAgICBkaWZmICU9IHVuaXQuc2Vjb25kcztcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke3ZhbHVlfSR7dW5pdC5sYWJlbH0ke3ZhbHVlID4gMSA/ICdzJyA6ICcnfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcsICcpO1xuICB9XG5cbiAgbGMgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teXFx3XFxzXS9nLCAnJykucmVwbGFjZSgvXFxzKy9nLCAnXycpXG5cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Public API Surface of http-request-manager
3
+ */
4
+ export * from './lib/index';
5
+ export * from './lib/http-request-manager.module';
6
+ export * from './lib/http-request-services-demo/http-request-services-demo.component';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxjQUFjLHVFQUF1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBodHRwLXJlcXVlc3QtbWFuYWdlclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtcmVxdWVzdC1tYW5hZ2VyLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudCc7XG5cbiJdfQ==