http-request-manager 15.0.26 → 18.0.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 (232) hide show
  1. package/esm2022/http-request-manager.mjs +5 -0
  2. package/esm2022/lib/http-request-manager.module.mjs +146 -0
  3. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +71 -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 +173 -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 +88 -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 +14 -0
  14. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +315 -0
  15. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +270 -0
  16. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +67 -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/database-manager-services/database.manager.service.mjs +119 -0
  33. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +143 -0
  34. package/esm2022/lib/services/database-manager-services/index.mjs +4 -0
  35. package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +20 -0
  36. package/esm2022/lib/services/index.mjs +6 -0
  37. package/esm2022/lib/services/local-storage-manager-service/index.mjs +3 -0
  38. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +302 -0
  39. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +13 -0
  40. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +6 -0
  41. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +13 -0
  42. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +10 -0
  43. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +12 -0
  44. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +7 -0
  45. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +207 -0
  46. package/esm2022/lib/services/request-manager-services/index.mjs +5 -0
  47. package/esm2022/lib/services/request-manager-services/request.service.mjs +189 -0
  48. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +9 -0
  49. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +10 -0
  50. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +5 -0
  51. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +14 -0
  52. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +19 -0
  53. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +267 -0
  54. package/esm2022/lib/services/request-manager-state-service/index.mjs +3 -0
  55. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +20 -0
  56. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +3 -0
  57. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +10 -0
  58. package/esm2022/lib/services/utils/app.service.mjs +26 -0
  59. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +186 -0
  60. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +35 -0
  61. package/esm2022/lib/services/utils/encryption/index.mjs +4 -0
  62. package/esm2022/lib/services/utils/encryption/random.mjs +52 -0
  63. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +77 -0
  64. package/esm2022/lib/services/utils/headers.service.mjs +21 -0
  65. package/esm2022/lib/services/utils/index.mjs +6 -0
  66. package/esm2022/lib/services/utils/object-merger.service.mjs +50 -0
  67. package/esm2022/lib/services/utils/path-query.service.mjs +54 -0
  68. package/esm2022/lib/services/utils/utils.service.mjs +155 -0
  69. package/esm2022/public-api.mjs +11 -0
  70. package/fesm2022/http-request-manager.mjs +3444 -0
  71. package/fesm2022/http-request-manager.mjs.map +1 -0
  72. package/http-request-manager-18.0.2.tgz +0 -0
  73. package/index.d.ts +5 -0
  74. package/lib/http-request-manager.module.d.ts +33 -0
  75. package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +19 -0
  76. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +24 -0
  77. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +56 -0
  78. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +26 -0
  79. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +13 -0
  80. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +27 -0
  81. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +12 -0
  82. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +16 -0
  83. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +8 -0
  84. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +14 -0
  85. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +14 -0
  86. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +107 -0
  87. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +122 -0
  88. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +15 -0
  89. package/lib/index.d.ts +3 -0
  90. package/lib/interceptors/credentials.interceptor.d.ts +8 -0
  91. package/{src/lib/interceptors/index.ts → lib/interceptors/index.d.ts} +0 -2
  92. package/lib/interceptors/models/error-settings.model.d.ts +10 -0
  93. package/lib/interceptors/proxy-debugger.interceptor.d.ts +12 -0
  94. package/lib/interceptors/request-error.interceptor.d.ts +10 -0
  95. package/lib/interceptors/request-header.interceptor.d.ts +15 -0
  96. package/lib/models/config-http-options.model.d.ts +21 -0
  97. package/lib/models/config-local-storage-options.model.d.ts +13 -0
  98. package/lib/models/config-options.model.d.ts +12 -0
  99. package/{src/lib/models/config-token.model.ts → lib/models/config-token.model.d.ts} +1 -2
  100. package/lib/models/data-type.enum.d.ts +5 -0
  101. package/lib/models/database-storage.model.d.ts +10 -0
  102. package/lib/models/index.d.ts +6 -0
  103. package/lib/models/retry-options.model.d.ts +10 -0
  104. package/lib/services/database-manager-services/database.manager.service.d.ts +31 -0
  105. package/lib/services/database-manager-services/db.storage.service.d.ts +26 -0
  106. package/{src/lib/services/database-manager-services/index.ts → lib/services/database-manager-services/index.d.ts} +0 -1
  107. package/lib/services/database-manager-services/models/table-schema.d.ts +11 -0
  108. package/{src/lib/services/index.ts → lib/services/index.d.ts} +0 -4
  109. package/lib/services/local-storage-manager-service/index.d.ts +2 -0
  110. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +86 -0
  111. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +15 -0
  112. package/{src/lib/services/local-storage-manager-service/models/index.ts → lib/services/local-storage-manager-service/models/index.d.ts} +1 -2
  113. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +15 -0
  114. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +10 -0
  115. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +13 -0
  116. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +5 -0
  117. package/lib/services/request-manager-services/http-manager.service.d.ts +41 -0
  118. package/{src/lib/services/request-manager-services/index.ts → lib/services/request-manager-services/index.d.ts} +0 -2
  119. package/lib/services/request-manager-services/request.service.d.ts +27 -0
  120. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +2 -0
  121. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +2 -0
  122. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +7 -0
  123. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +2 -0
  124. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +51 -0
  125. package/{src/lib/services/request-manager-state-service/index.ts → lib/services/request-manager-state-service/index.d.ts} +0 -1
  126. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +27 -0
  127. package/{src/lib/services/request-manager-state-service/models/index.ts → lib/services/request-manager-state-service/models/index.d.ts} +0 -1
  128. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +10 -0
  129. package/lib/services/utils/app.service.d.ts +8 -0
  130. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +17 -0
  131. package/lib/services/utils/encryption/encryption-test.service.d.ts +10 -0
  132. package/{src/lib/services/utils/encryption/index.ts → lib/services/utils/encryption/index.d.ts} +0 -2
  133. package/lib/services/utils/encryption/random.d.ts +7 -0
  134. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +14 -0
  135. package/lib/services/utils/headers.service.d.ts +10 -0
  136. package/{src/lib/services/utils/index.ts → lib/services/utils/index.d.ts} +0 -2
  137. package/lib/services/utils/object-merger.service.d.ts +12 -0
  138. package/lib/services/utils/path-query.service.d.ts +11 -0
  139. package/lib/services/utils/utils.service.d.ts +24 -0
  140. package/package.json +14 -1
  141. package/{src/public-api.ts → public-api.d.ts} +0 -7
  142. package/ng-package.json +0 -8
  143. package/src/lib/http-request-manager.module.ts +0 -101
  144. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -3
  145. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  146. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -105
  147. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -64
  148. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  149. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -34
  150. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  151. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  152. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -205
  153. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -59
  154. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  155. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -71
  156. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  157. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  158. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  159. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -99
  160. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  161. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  162. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  163. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -25
  164. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  165. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  166. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  167. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  168. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  169. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  170. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  171. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  172. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -336
  173. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -24
  174. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -403
  175. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -328
  176. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  177. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -347
  178. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -88
  179. package/src/lib/index.ts +0 -3
  180. package/src/lib/interceptors/credentials.interceptor.ts +0 -18
  181. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  182. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  183. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  184. package/src/lib/interceptors/request-header.interceptor.ts +0 -58
  185. package/src/lib/models/config-http-options.model.ts +0 -42
  186. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  187. package/src/lib/models/config-options.model.ts +0 -27
  188. package/src/lib/models/data-type.enum.ts +0 -5
  189. package/src/lib/models/database-storage.model.ts +0 -24
  190. package/src/lib/models/index.ts +0 -9
  191. package/src/lib/models/retry-options.model.ts +0 -22
  192. package/src/lib/services/database-manager-services/database.manager.service.ts +0 -193
  193. package/src/lib/services/database-manager-services/db.storage.service.ts +0 -191
  194. package/src/lib/services/database-manager-services/models/table-schema.ts +0 -35
  195. package/src/lib/services/local-storage-manager-service/index.ts +0 -2
  196. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  197. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -421
  198. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  199. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -30
  200. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  201. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -29
  202. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  203. package/src/lib/services/request-manager-services/README.md +0 -268
  204. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -230
  205. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -274
  206. package/src/lib/services/request-manager-services/request.service.ts +0 -261
  207. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  208. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  209. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -21
  210. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -32
  211. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -402
  212. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -50
  213. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -22
  214. package/src/lib/services/utils/app.service.spec.ts +0 -25
  215. package/src/lib/services/utils/app.service.ts +0 -21
  216. package/src/lib/services/utils/encryption/README.md +0 -79
  217. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  218. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  219. package/src/lib/services/utils/encryption/random.ts +0 -69
  220. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -93
  221. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  222. package/src/lib/services/utils/headers.service.ts +0 -18
  223. package/src/lib/services/utils/object-merger.service.spec.ts +0 -16
  224. package/src/lib/services/utils/object-merger.service.ts +0 -60
  225. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  226. package/src/lib/services/utils/path-query.service.ts +0 -69
  227. package/src/lib/services/utils/utils.service.spec.ts +0 -164
  228. package/src/lib/services/utils/utils.service.ts +0 -192
  229. package/tsconfig.lib.json +0 -32
  230. package/tsconfig.lib.prod.json +0 -10
  231. package/tsconfig.spec.json +0 -14
  232. /package/{src/lib/services/request-manager-services/rxjs-operators/index.ts → lib/services/request-manager-services/rxjs-operators/index.d.ts} +0 -0
@@ -0,0 +1,207 @@
1
+ import { Inject, inject, Injectable, Injector, Optional } from '@angular/core';
2
+ import { HttpErrorResponse } from '@angular/common/http';
3
+ import { BehaviorSubject, Subject, throwError } from 'rxjs';
4
+ import { tap, map, finalize, catchError } from 'rxjs/operators';
5
+ import { ApiRequest } from '../request-manager-state-service/models/api-request.model';
6
+ import { RequestService } from './request.service';
7
+ import { requestPolling, countdown, delayedRetry } from './rxjs-operators';
8
+ import { ToastColors, ToastDisplay, ToastMessageDisplayService } from 'toast-message-display';
9
+ import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
10
+ import { ObjectMergerService } from '../utils/object-merger.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../models";
13
+ export class HTTPManagerService extends RequestService {
14
+ constructor(configOptions) {
15
+ super();
16
+ this.configOptions = configOptions;
17
+ this.toastMessage = inject(ToastMessageDisplayService);
18
+ this.ng_injector = inject(Injector);
19
+ this.objectMergerService = inject(ObjectMergerService);
20
+ this.countdown = new BehaviorSubject(0);
21
+ this.countdown$ = this.countdown.asObservable();
22
+ this.error = new BehaviorSubject(false);
23
+ this.error$ = this.error.asObservable();
24
+ this.data = new BehaviorSubject(null);
25
+ this.data$ = this.data.asObservable();
26
+ this.polling$ = new Subject();
27
+ this.config = ApiRequest.adapt();
28
+ this.config = (configOptions) ? ApiRequest.adapt(configOptions.httpRequestOptions) : this.config;
29
+ }
30
+ // REQUESTS
31
+ getRequest(options, params) {
32
+ this.isPending.next(true);
33
+ this.data.next(null);
34
+ const updatedOptions = this.defineReqOptions(options, params);
35
+ const func = this.getRecordRequest;
36
+ const requests = this.createRequest(func, updatedOptions);
37
+ return this.createObservable(updatedOptions, requests, func.name)
38
+ .pipe(tap(data => this.data.next(data))).pipe(finalize(() => this.isPending.next(false)), catchError((err) => {
39
+ if (updatedOptions.displayError)
40
+ this.handleErrorWithSnackBar(err);
41
+ this.isPending.next(false);
42
+ return this.handleError(err);
43
+ }));
44
+ }
45
+ postRequest(data, options, params) {
46
+ this.isPending.next(true);
47
+ this.data.next(null);
48
+ const updatedOptions = this.defineReqOptions(options, params);
49
+ const func = this.createRecordRequest;
50
+ const requests = this.createRequest(func, updatedOptions, data);
51
+ return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
52
+ .pipe(finalize(() => this.isPending.next(false)), catchError((err) => {
53
+ if (updatedOptions.displayError)
54
+ this.handleErrorWithSnackBar(err);
55
+ this.isPending.next(false);
56
+ return this.handleError(err);
57
+ }));
58
+ }
59
+ putRequest(data, options, params) {
60
+ this.isPending.next(true);
61
+ this.data.next(null);
62
+ const updatedOptions = this.defineReqOptions(options, params);
63
+ const func = this.updateRecordRequest;
64
+ const requests = this.createRequest(func, updatedOptions, data);
65
+ return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
66
+ .pipe(finalize(() => this.isPending.next(false)), catchError((err) => {
67
+ if (updatedOptions.displayError)
68
+ this.handleErrorWithSnackBar(err);
69
+ this.isPending.next(false);
70
+ return this.handleError(err);
71
+ }));
72
+ }
73
+ deleteRequest(options, params) {
74
+ this.isPending.next(true);
75
+ this.data.next(null);
76
+ const updatedOptions = this.defineReqOptions(options, params);
77
+ const func = this.deleteRecordRequest;
78
+ const requests = this.createRequest(func, updatedOptions);
79
+ return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
80
+ .pipe(finalize(() => this.isPending.next(false)), catchError((err) => {
81
+ if (updatedOptions.displayError)
82
+ this.handleErrorWithSnackBar(err);
83
+ this.isPending.next(false);
84
+ return this.handleError(err);
85
+ }));
86
+ }
87
+ downloadRequest(options, params, saveAs) {
88
+ this.isPending.next(true);
89
+ const updatedOptions = this.defineReqOptions(options, params);
90
+ const func = this.downloadFileRequest;
91
+ const requests = this.createRequest(func, updatedOptions);
92
+ return this.createObservable(updatedOptions, requests, func.name)
93
+ .pipe(catchError((err) => {
94
+ this.error.next(true);
95
+ this.isPending.next(false);
96
+ return this.handleError(err);
97
+ }));
98
+ }
99
+ createObservable(options, request$, funcName) {
100
+ const polling = options.polling ? (options.polling > 0 ? true : false) : false;
101
+ const isPolling = polling &&
102
+ !(funcName === 'deleteRecordRequest' || funcName === 'updateRecordRequest' || funcName === 'createRecordRequest')
103
+ ? true
104
+ : false;
105
+ this.polling$.next();
106
+ const polling$ = (isPolling && options.polling) || 0 >= 3
107
+ ? request$.pipe(requestPolling((options.polling || 0) + 1, this.polling$, this.isPending), tap(() => this.countdown.next(0)), tap(() => {
108
+ if (!options.polling)
109
+ return;
110
+ const count = options.polling ? options.polling : 0;
111
+ // console.log('COUNT:', count);
112
+ countdown(count)
113
+ .pipe(map((x) => {
114
+ // console.log('XX:', count, x);
115
+ const pollingInSec = options.polling || 0;
116
+ const percentageCompleted = ((pollingInSec - x) / pollingInSec) * 100;
117
+ return Math.round(percentageCompleted);
118
+ }))
119
+ .subscribe((countDownValue) => {
120
+ // console.log(this.countdown.value, countDownValue);
121
+ this.countdown.next(countDownValue);
122
+ });
123
+ }))
124
+ : request$.pipe(catchError((err) => {
125
+ if (err instanceof HttpErrorResponse) {
126
+ this.error.next(true);
127
+ return this.handleError(err);
128
+ }
129
+ return throwError(() => err);
130
+ }));
131
+ return polling$.pipe(catchError((err, caught) => {
132
+ if (err instanceof HttpErrorResponse) {
133
+ this.error.next(true);
134
+ if (isPolling)
135
+ this.stopPolling();
136
+ return this.handleError(err);
137
+ }
138
+ return throwError(() => err);
139
+ }), (options?.retry && options.retry.times > 0)
140
+ ? delayedRetry((options.retry.delay || 3) * 1000, (options.retry.times || 0) - 1)
141
+ : (source) => source);
142
+ }
143
+ createRequest(func, options, data) {
144
+ const dataItem = this.prepareRequestData(options, data, func.name);
145
+ return func.bind(this)(dataItem.options, dataItem.data);
146
+ }
147
+ prepareRequestData(options, data, funcName) {
148
+ if ((options.mapper && funcName === 'updateRecordRequest') || funcName === 'createRecordRequest') {
149
+ if (options?.mapper) {
150
+ data = options.mapper
151
+ ? Array.isArray(data)
152
+ ? map((item) => options.mapper(item))
153
+ : options.mapper(data)
154
+ : data;
155
+ }
156
+ }
157
+ else {
158
+ if (options?.adapter) {
159
+ data = Array.isArray(data)
160
+ ? map((item) => options.adapter(item))
161
+ : options.adapter(data);
162
+ }
163
+ }
164
+ return { options: options, data: data };
165
+ }
166
+ // MISC
167
+ handleError(error) {
168
+ this.error.next(error.message || `${error.status} - ${error.statusText}`);
169
+ return throwError(() => error);
170
+ }
171
+ handleErrorWithSnackBar(error) {
172
+ const displayError = ToastDisplay.adapt({
173
+ message: error.message || `${error.status} - ${error.statusText}`,
174
+ action: 'OK',
175
+ color: ToastColors.ERROR,
176
+ icon: 'error',
177
+ duration: 5 * 1000, //5 seconds
178
+ });
179
+ this.toastMessage.toastMessage(displayError);
180
+ }
181
+ stopPolling() {
182
+ this.isPending.next(false);
183
+ this.polling$.next();
184
+ }
185
+ defineReqOptions(options, params) {
186
+ const req = ApiRequest.adapt(options);
187
+ if (req?.path)
188
+ req.path = (params) ? [...req.path, ...params] : req.path;
189
+ const optionsReq = (req) ? req : ApiRequest.adapt();
190
+ const updatedOptions = this.objectMergerService.mergeOptions(optionsReq);
191
+ return updatedOptions;
192
+ }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HTTPManagerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
194
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HTTPManagerService, providedIn: 'root' }); }
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HTTPManagerService, decorators: [{
197
+ type: Injectable,
198
+ args: [{
199
+ providedIn: 'root',
200
+ }]
201
+ }], ctorParameters: () => [{ type: i1.ConfigOptions, decorators: [{
202
+ type: Optional
203
+ }, {
204
+ type: Inject,
205
+ args: [CONFIG_SETTINGS_TOKEN]
206
+ }] }] });
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9odHRwLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS3JFLE1BQU0sT0FBTyxrQkFBc0IsU0FBUSxjQUFjO0lBbUJ2RCxZQUErRCxhQUE2QjtRQUMxRixLQUFLLEVBQUUsQ0FBQTtRQURzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFqQjVGLGlCQUFZLEdBQUcsTUFB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VztTQUNoQyxDQUFDLENBQUE7UUFFUixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUU5QyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFZLEVBQUUsTUFBYztRQUVuRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLElBQUcsR0FBRyxFQUFFLElBQUk7WUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUE7UUFFdkUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV4RSxPQUFPLGNBQWMsQ0FBQTtJQUV2QixDQUFDOytHQTlQVSxrQkFBa0Isa0JBbUJHLHFCQUFxQjttSEFuQjFDLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFvQmMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBtYXAsIGZpbmFsaXplLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL2FwaS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcmVxdWVzdFBvbGxpbmcsIGNvdW50ZG93biwgZGVsYXllZFJldHJ5IH0gZnJvbSAnLi9yeGpzLW9wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRvYXN0Q29sb3JzLCBUb2FzdERpc3BsYXksIFRvYXN0TWVzc2FnZURpc3BsYXlTZXJ2aWNlIH0gZnJvbSAndG9hc3QtbWVzc2FnZS1kaXNwbGF5JztcblxuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9iamVjdE1lcmdlclNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSFRUUE1hbmFnZXJTZXJ2aWNlPFQ+IGV4dGVuZHMgUmVxdWVzdFNlcnZpY2Uge1xuXG4gIHRvYXN0TWVzc2FnZSA9IGluamVjdChUb2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZSlcbiAgbmdfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpXG4gIG9iamVjdE1lcmdlclNlcnZpY2UgPSBpbmplY3QoT2JqZWN0TWVyZ2VyU2VydmljZSlcblxuICBwcml2YXRlIGNvdW50ZG93biA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgY291bnRkb3duJCA9IHRoaXMuY291bnRkb3duLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgZXJyb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZXJyb3IkID0gdGhpcy5lcnJvci5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbClcbiAgZGF0YSQgPSB0aGlzLmRhdGEuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHBvbGxpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25maWcgPSBBcGlSZXF1ZXN0LmFkYXB0KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb25maWcgPSAoY29uZmlnT3B0aW9ucykgPyBBcGlSZXF1ZXN0LmFkYXB0KGNvbmZpZ09wdGlvbnMuaHR0cFJlcXVlc3RPcHRpb25zKSA6IHRoaXMuY29uZmlnXG4gIH1cblxuICAvLyBSRVFVRVNUU1xuXG4gIGdldFJlcXVlc3Q8VD4ob3B0aW9ucz86IEFwaVJlcXVlc3QsIHBhcmFtcz86IGFueVtdKSB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGF0YS5uZXh0KG51bGwpXG5cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMuZGVmaW5lUmVxT3B0aW9ucyhvcHRpb25zLCBwYXJhbXMpXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuZ2V0UmVjb3JkUmVxdWVzdDtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMuY3JlYXRlUmVxdWVzdChmdW5jLCB1cGRhdGVkT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPYnNlcnZhYmxlPFQ+KHVwZGF0ZWRPcHRpb25zLCByZXF1ZXN0cywgZnVuYy5uYW1lKVxuICAgIC5waXBlKFxuICAgICAgdGFwKGRhdGEgPT4gdGhpcy5kYXRhLm5leHQoZGF0YSkpXG4gICAgKS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGlmKHVwZGF0ZWRPcHRpb25zLmRpc3BsYXlFcnJvcikgdGhpcy5oYW5kbGVFcnJvcldpdGhTbmFja0JhcihlcnIpXG4gICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgcG9zdFJlcXVlc3Q8VCBleHRlbmRzIHsgaWQ/OiBudW1iZXJ8c3RyaW5nIH0+KGRhdGE6IFQsIG9wdGlvbnM6IEFwaVJlcXVlc3QsIHBhcmFtcz86IGFueVtdKSB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGF0YS5uZXh0KG51bGwpXG5cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMuZGVmaW5lUmVxT3B0aW9ucyhvcHRpb25zLCBwYXJhbXMpXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuY3JlYXRlUmVjb3JkUmVxdWVzdDtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMuY3JlYXRlUmVxdWVzdChmdW5jLCB1cGRhdGVkT3B0aW9ucywgZGF0YSk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPYnNlcnZhYmxlPFQ+KHVwZGF0ZWRPcHRpb25zLCByZXF1ZXN0cywgZnVuYy5uYW1lKS5waXBlKHRhcChkYXRhID0+IHRoaXMuZGF0YS5uZXh0KGRhdGEpKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGlmKHVwZGF0ZWRPcHRpb25zLmRpc3BsYXlFcnJvcikgdGhpcy5oYW5kbGVFcnJvcldpdGhTbmFja0JhcihlcnIpXG4gICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgcHV0UmVxdWVzdDxUIGV4dGVuZHMgeyBpZD86IG51bWJlcnxzdHJpbmcgfT4oZGF0YTogVCwgb3B0aW9uczogQXBpUmVxdWVzdCwgcGFyYW1zPzogYW55W10pIHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kYXRhLm5leHQobnVsbClcblxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gdGhpcy5kZWZpbmVSZXFPcHRpb25zKG9wdGlvbnMsIHBhcmFtcylcbiAgICBjb25zdCBmdW5jID0gdGhpcy51cGRhdGVSZWNvcmRSZXF1ZXN0O1xuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zLCBkYXRhKTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9ic2VydmFibGU8VD4odXBkYXRlZE9wdGlvbnMsIHJlcXVlc3RzLCBmdW5jLm5hbWUpLnBpcGUodGFwKGRhdGEgPT4gdGhpcy5kYXRhLm5leHQoZGF0YSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgaWYodXBkYXRlZE9wdGlvbnMuZGlzcGxheUVycm9yKSB0aGlzLmhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycilcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCwgcGFyYW1zPzogYW55W10pIHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kYXRhLm5leHQobnVsbClcblxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gdGhpcy5kZWZpbmVSZXFPcHRpb25zKG9wdGlvbnMsIHBhcmFtcylcbiAgICBjb25zdCBmdW5jID0gdGhpcy5kZWxldGVSZWNvcmRSZXF1ZXN0O1xuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9ic2VydmFibGU8VD4odXBkYXRlZE9wdGlvbnMsIHJlcXVlc3RzLCBmdW5jLm5hbWUpLnBpcGUodGFwKGRhdGEgPT4gdGhpcy5kYXRhLm5leHQoZGF0YSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgaWYodXBkYXRlZE9wdGlvbnMuZGlzcGxheUVycm9yKSB0aGlzLmhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycilcbiAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBkb3dubG9hZFJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCwgcGFyYW1zPzogYW55W10sIHNhdmVBcz86IHN0cmluZykge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gdGhpcy5kZWZpbmVSZXFPcHRpb25zKG9wdGlvbnMsIHBhcmFtcylcbiAgICBjb25zdCBmdW5jID0gdGhpcy5kb3dubG9hZEZpbGVSZXF1ZXN0O1xuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zKVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSlcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVycm9yLm5leHQodHJ1ZSlcbiAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKVxuXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmFibGU8VD4ob3B0aW9uczogQXBpUmVxdWVzdCwgcmVxdWVzdCQ6IE9ic2VydmFibGU8VD4sIGZ1bmNOYW1lOiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IHBvbGxpbmcgPSBvcHRpb25zLnBvbGxpbmcgPyAob3B0aW9ucy5wb2xsaW5nID4gMCA/IHRydWUgOiBmYWxzZSkgOiBmYWxzZTtcbiAgICBjb25zdCBpc1BvbGxpbmcgPVxuICAgICAgcG9sbGluZyAmJlxuICAgICAgIShmdW5jTmFtZSA9PT0gJ2RlbGV0ZVJlY29yZFJlcXVlc3QnIHx8IGZ1bmNOYW1lID09PSAndXBkYXRlUmVjb3JkUmVxdWVzdCcgfHwgZnVuY05hbWUgPT09ICdjcmVhdGVSZWNvcmRSZXF1ZXN0JylcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICB0aGlzLnBvbGxpbmckLm5leHQoKTtcblxuICAgIGNvbnN0IHBvbGxpbmckID1cbiAgICAgIChpc1BvbGxpbmcgJiYgb3B0aW9ucy5wb2xsaW5nKSB8fCAwID49IDNcbiAgICAgICAgPyByZXF1ZXN0JC5waXBlKFxuICAgICAgICAgICAgcmVxdWVzdFBvbGxpbmcoKG9wdGlvbnMucG9sbGluZyB8fCAwKSArIDEsIHRoaXMucG9sbGluZyQsIHRoaXMuaXNQZW5kaW5nKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvdW50ZG93bi5uZXh0KDApKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9ucy5wb2xsaW5nKSByZXR1cm47XG4gICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gb3B0aW9ucy5wb2xsaW5nID8gb3B0aW9ucy5wb2xsaW5nIDogMDtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0NPVU5UOicsIGNvdW50KTtcbiAgICAgICAgICAgICAgY291bnRkb3duKGNvdW50KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKCh4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1hYOicsIGNvdW50LCB4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9sbGluZ0luU2VjID0gb3B0aW9ucy5wb2xsaW5nIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VDb21wbGV0ZWQgPSAoKHBvbGxpbmdJblNlYyAtIHgpIC8gcG9sbGluZ0luU2VjKSAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQocGVyY2VudGFnZUNvbXBsZXRlZCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjb3VudERvd25WYWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50ZG93bi52YWx1ZSwgY291bnREb3duVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudGRvd24ubmV4dChjb3VudERvd25WYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIDogcmVxdWVzdCQucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG5cbiAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAvLyBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSlcbiAgICAgICAgICApXG5cbiAgICByZXR1cm4gcG9sbGluZyQucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55LCBjYXVnaHQ6IE9ic2VydmFibGU8VD4pID0+IHtcblxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLmVycm9yLm5leHQodHJ1ZSk7XG4gICAgICAgICAgaWYoaXNQb2xsaW5nKSB0aGlzLnN0b3BQb2xsaW5nKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICB9KSxcbiAgICAgIChvcHRpb25zPy5yZXRyeSAmJiBvcHRpb25zLnJldHJ5LnRpbWVzID4gMClcbiAgICAgICAgPyBkZWxheWVkUmV0cnkoKG9wdGlvbnMucmV0cnkuZGVsYXkgfHwgMykgKiAxMDAwLCAob3B0aW9ucy5yZXRyeS50aW1lcyB8fCAwKSAtIDEpXG4gICAgICAgIDogKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gc291cmNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVxdWVzdChmdW5jOiBGdW5jdGlvbiwgb3B0aW9uczogQXBpUmVxdWVzdCwgZGF0YT86IGFueSB8IGFueVtdKSB7XG4gICAgY29uc3QgZGF0YUl0ZW0gPSB0aGlzLnByZXBhcmVSZXF1ZXN0RGF0YShvcHRpb25zLCBkYXRhLCBmdW5jLm5hbWUpO1xuICAgIHJldHVybiBmdW5jLmJpbmQodGhpcykoZGF0YUl0ZW0ub3B0aW9ucywgZGF0YUl0ZW0uZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVSZXF1ZXN0RGF0YShvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnksIGZ1bmNOYW1lOiBzdHJpbmcpIHtcblxuICAgIGlmICgob3B0aW9ucy5tYXBwZXIgJiYgZnVuY05hbWUgPT09ICd1cGRhdGVSZWNvcmRSZXF1ZXN0JykgfHwgZnVuY05hbWUgPT09ICdjcmVhdGVSZWNvcmRSZXF1ZXN0Jykge1xuICAgICAgaWYgKG9wdGlvbnM/Lm1hcHBlcikge1xuICAgICAgICBkYXRhID0gb3B0aW9ucy5tYXBwZXJcbiAgICAgICAgICA/IEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgICAgID8gbWFwKChpdGVtKSA9PiBvcHRpb25zLm1hcHBlcihpdGVtKSlcbiAgICAgICAgICAgIDogb3B0aW9ucy5tYXBwZXIoZGF0YSlcbiAgICAgICAgICA6IGRhdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zPy5hZGFwdGVyKSB7XG4gICAgICAgIGRhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpXG4gICAgICAgICAgICA/IG1hcCgoaXRlbSkgPT4gb3B0aW9ucy5hZGFwdGVyKGl0ZW0pKVxuICAgICAgICAgICAgOiBvcHRpb25zLmFkYXB0ZXIoZGF0YSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBvcHRpb25zOiBvcHRpb25zLCBkYXRhOiBkYXRhIH07XG4gIH1cblxuICAvLyBNSVNDXG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogUmVzcG9uc2UgfCBhbnkpIHtcbiAgICB0aGlzLmVycm9yLm5leHQoZXJyb3IubWVzc2FnZSB8fCBgJHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5zdGF0dXNUZXh0fWApXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycm9yOiBSZXNwb25zZSB8IGFueSkge1xuXG4gICAgY29uc3QgZGlzcGxheUVycm9yID0gVG9hc3REaXNwbGF5LmFkYXB0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgYCR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3Iuc3RhdHVzVGV4dH1gLFxuICAgICAgICAgICAgYWN0aW9uOiAnT0snLFxuICAgICAgICAgICAgY29sb3I6IFRvYXN0Q29sb3JzLkVSUk9SLFxuICAgICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiA1ICogMTAwMCwgLy81IHNlY29uZHNcbiAgICAgICAgICB9KVxuXG4gICAgdGhpcy50b2FzdE1lc3NhZ2UudG9hc3RNZXNzYWdlKGRpc3BsYXlFcnJvcilcblxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnBvbGxpbmckLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVmaW5lUmVxT3B0aW9ucyhvcHRpb25zOiBhbnksIHBhcmFtcz86IGFueVtdKSB7XG5cbiAgICBjb25zdCByZXEgPSBBcGlSZXF1ZXN0LmFkYXB0KG9wdGlvbnMpXG4gICAgaWYocmVxPy5wYXRoKSByZXEucGF0aCA9IChwYXJhbXMpID8gWy4uLnJlcS5wYXRoLCAuLi5wYXJhbXNdIDogcmVxLnBhdGhcblxuICAgIGNvbnN0IG9wdGlvbnNSZXEgPSAocmVxKT8gcmVxIDogQXBpUmVxdWVzdC5hZGFwdCgpXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLm9iamVjdE1lcmdlclNlcnZpY2UubWVyZ2VPcHRpb25zKG9wdGlvbnNSZXEpXG5cbiAgICByZXR1cm4gdXBkYXRlZE9wdGlvbnNcblxuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from "./http-manager.service";
2
+ // export * from './request.service';
3
+ export * from "../../models/index";
4
+ export * from "./rxjs-operators/index";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLHFDQUFxQztBQUVyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9odHRwLW1hbmFnZXIuc2VydmljZVwiO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tIFwiLi4vLi4vbW9kZWxzL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yeGpzLW9wZXJhdG9ycy9pbmRleFwiO1xuIl19
@@ -0,0 +1,189 @@
1
+ import { HttpClient, HttpEventType, HttpHeaderResponse } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { BehaviorSubject, throwError } from 'rxjs';
4
+ import { catchError, delay, finalize, map } from 'rxjs/operators';
5
+ import { PathQueryService, HeadersService } from '../utils';
6
+ import { requestStreaming } from './rxjs-operators/request-streaming';
7
+ import * as i0 from "@angular/core";
8
+ export class RequestService {
9
+ constructor() {
10
+ this.http = inject(HttpClient);
11
+ this.pathQueryService = inject(PathQueryService);
12
+ this.headersService = inject(HeadersService);
13
+ this.isPending = new BehaviorSubject(false);
14
+ this.isPending$ = this.isPending.asObservable().pipe(delay(1));
15
+ this.progress = new BehaviorSubject(0);
16
+ this.progress$ = this.progress.asObservable();
17
+ }
18
+ getRecordRequest(options) {
19
+ const urlPath = this.buildUrlPath(options);
20
+ const headers = this.buildCombinedHeaders(options);
21
+ this.isPending.next(true);
22
+ return (options.stream)
23
+ ? this.http.get(urlPath, headers).pipe(requestStreaming(), this.handleFinalize())
24
+ : this.http.get(urlPath, headers).pipe(this.request(options));
25
+ }
26
+ createRecordRequest(options, data) {
27
+ const urlPath = this.buildUrlPath(options);
28
+ const headers = this.buildCombinedHeaders(options);
29
+ this.isPending.next(true);
30
+ return (options.stream)
31
+ ? this.http.post(urlPath, data, headers).pipe(requestStreaming(), this.handleFinalize())
32
+ : this.http.post(urlPath, data, headers).pipe(this.request(options));
33
+ }
34
+ updateRecordRequest(options, data) {
35
+ const urlPath = this.buildUrlPath(options);
36
+ const headers = this.buildHeaders(options);
37
+ this.isPending.next(true);
38
+ return this.http.put(urlPath, data, headers).pipe(this.request(options));
39
+ }
40
+ deleteRecordRequest(options) {
41
+ const urlPath = this.buildUrlPath(options);
42
+ const headers = this.buildHeaders(options);
43
+ this.isPending.next(true);
44
+ return this.http.delete(urlPath, headers).pipe(this.request(options));
45
+ }
46
+ // Helper functions
47
+ buildUrlPath(options) {
48
+ return this.pathQueryService.buildAPIPath(options.server, options.path);
49
+ }
50
+ buildHeaders(options) {
51
+ return this.headersService.generateHeaders(options.headers);
52
+ }
53
+ buildCombinedHeaders(options) {
54
+ const headers = this.headersService.generateHeaders(options.headers);
55
+ return this.combineHeaders(headers, options.stream || false);
56
+ }
57
+ request(options) {
58
+ return (source$) => {
59
+ return source$.pipe(map(data => {
60
+ if (options?.adapter) {
61
+ return Array.isArray(data)
62
+ ? data.map((item) => options.adapter(item))
63
+ : options.adapter(data);
64
+ }
65
+ return data;
66
+ }));
67
+ };
68
+ }
69
+ downloadFileRequest(options) {
70
+ this.isPending.next(true);
71
+ const urlPath = this.buildUrlPath(options);
72
+ return this.http.get(urlPath, { responseType: 'blob', observe: 'events', reportProgress: true })
73
+ .pipe(map((event) => {
74
+ this.isPending.next(true);
75
+ if (event instanceof HttpHeaderResponse) {
76
+ if (event.status !== 200) {
77
+ this.isPending.next(false);
78
+ throw new Error('Download failed');
79
+ }
80
+ }
81
+ // 0 Sent Request has been sent.
82
+ // 1 UploadProgress Upload is in progress.
83
+ // 2 ResponseHeader Response headers received.
84
+ // 3 DownloadProgress Download is in progress.
85
+ // 4 Response Response is fully received.
86
+ // 5 User Custom user event.
87
+ switch (event.type) {
88
+ case HttpEventType.DownloadProgress:
89
+ const status = (event.total) ? Math.round(event.loaded / (event.total || 1) * 100) : 100;
90
+ this.progress.next(status);
91
+ return status;
92
+ case HttpEventType.Response:
93
+ try {
94
+ const fileNamePath = (options?.saveAs) ? options.saveAs : (options.path) ? options.path[options.path.length - 1] : [];
95
+ const header_content = event.headers.get('Content-Disposition') || '';
96
+ // checks if header_content is not empty and splits the header_content to get the file name
97
+ // otherwise, it will use the fileDownload - contains the file name and extension
98
+ const file = (header_content) ? header_content.split('=')[1].substring(0, header_content.split('=')[1].length) : '';
99
+ const fileName = (fileNamePath !== '') ? fileNamePath : file;
100
+ if (fileName === '') {
101
+ this.isPending.next(false);
102
+ throw new Error('Save File: (file name and extension) not found in Headers or Path');
103
+ }
104
+ this.downloadFile(fileName, event.body);
105
+ this.isPending.next(false);
106
+ return 100;
107
+ }
108
+ catch (error) {
109
+ throw new Error('Download failed');
110
+ }
111
+ default:
112
+ this.isPending.next(false);
113
+ return 0;
114
+ }
115
+ }), catchError(err => {
116
+ return throwError(() => err);
117
+ }));
118
+ }
119
+ handleFinalize() {
120
+ return finalize(() => this.isPending.next(false));
121
+ }
122
+ downloadFile(file, fileData) {
123
+ const navigatorAny = window.navigator;
124
+ const extension = file.split('.')[1].toLowerCase();
125
+ var newBlob = new Blob([fileData], { type: this.createFileType(extension) });
126
+ if (navigatorAny.msSaveOrOpenBlob) {
127
+ navigatorAny.msSaveOrOpenBlob(newBlob, file);
128
+ }
129
+ else {
130
+ const link = document.createElement('a');
131
+ const url = window.URL.createObjectURL(newBlob);
132
+ link.href = url;
133
+ link.download = file;
134
+ link.click();
135
+ window.URL.revokeObjectURL(url);
136
+ }
137
+ }
138
+ createFileType(ext) {
139
+ let fileType = "";
140
+ if (ext == 'pdf' || ext == 'csv') {
141
+ fileType = `application/${ext}`;
142
+ }
143
+ else if (ext == 'jpeg' || ext == 'jpg' || ext == 'png') {
144
+ fileType = `image/${ext}`;
145
+ }
146
+ else if (ext == 'txt') {
147
+ fileType = 'text/plain';
148
+ }
149
+ else if (ext == 'ppt' || ext == 'pot' || ext == 'pps' || ext == 'ppa') {
150
+ fileType = 'application/vnd.ms-powerpoint';
151
+ }
152
+ else if (ext == 'pptx') {
153
+ fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
154
+ }
155
+ else if (ext == 'doc' || ext == 'dot') {
156
+ fileType = 'application/msword';
157
+ }
158
+ else if (ext == 'docx') {
159
+ fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
160
+ }
161
+ else if (ext == 'xls' || ext == 'xlt' || ext == 'xla') {
162
+ fileType = 'application/vnd.ms-excel';
163
+ }
164
+ else if (ext == 'xlsx') {
165
+ fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
166
+ }
167
+ return fileType;
168
+ }
169
+ combineHeaders(headers, isStreaming) {
170
+ return (isStreaming) ?
171
+ {
172
+ ...headers,
173
+ observe: 'events',
174
+ responseType: 'text',
175
+ reportProgress: true,
176
+ Accept: 'text/event-stream'
177
+ }
178
+ : headers;
179
+ }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
181
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestService, providedIn: 'root' }); }
182
+ }
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestService, decorators: [{
184
+ type: Injectable,
185
+ args: [{
186
+ providedIn: 'root'
187
+ }]
188
+ }] });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBTXRFLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBS1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV6QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUMzQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUvQyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFDL0MsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXpELGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQTtRQUN6QyxjQUFTLEdBQUcsSUFBSSxD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QUFDO1lBQ3RELFFBQVEsR0FBRywwQkFBMEIsQ0FBQTtRQUN2QyxDQUFDO2FBQ0ksSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsUUFBUSxHQUFHLG1FQUFtRSxDQUFBO1FBQ2hGLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUVqQixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQVksRUFBRSxXQUFvQjtRQUV2RCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0QjtnQkFDRSxHQUFHLE9BQU87Z0JBQ1YsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFlBQVksRUFBRSxNQUFNO2dCQUNwQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsTUFBTSxFQUFFLG1CQUFtQjthQUM1QjtZQUNELENBQUMsQ0FBQyxPQUFPLENBQUE7SUFFWCxDQUFDOytHQXJQVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlbGF5LCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL2FwaS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFBhdGhRdWVyeVNlcnZpY2UsIEhlYWRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgcmVxdWVzdFN0cmVhbWluZyB9IGZyb20gJy4vcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1zdHJlYW1pbmcnO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RTZXJ2aWNlIHtcblxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudClcblxuICBwcml2YXRlIHBhdGhRdWVyeVNlcnZpY2UgPSBpbmplY3QoUGF0aFF1ZXJ5U2VydmljZSlcbiAgcHJpdmF0ZSBoZWFkZXJzU2VydmljZSA9IGluamVjdChIZWFkZXJzU2VydmljZSlcblxuICBpc1BlbmRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBpc1BlbmRpbmckID0gdGhpcy5pc1BlbmRpbmcuYXNPYnNlcnZhYmxlKCkucGlwZShkZWxheSgxKSlcblxuICBwcm9ncmVzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKVxuICBwcm9ncmVzcyQgPSB0aGlzLnByb2dyZXNzLmFzT2JzZXJ2YWJsZSgpXG5cbiAgZ2V0UmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRDb21iaW5lZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIChvcHRpb25zLnN0cmVhbSlcbiAgICAgICAgPyB0aGlzLmh0dHAuZ2V0PGFueT4odXJsUGF0aCwgaGVhZGVycykucGlwZShcbiAgICAgICAgICAgIHJlcXVlc3RTdHJlYW1pbmcoKSxcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApXG4gICAgICAgIDogdGhpcy5odHRwLmdldDxUPih1cmxQYXRoLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICApXG4gIH1cblxuICBjcmVhdGVSZWNvcmRSZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgY29uc3QgdXJsUGF0aCA9IHRoaXMuYnVpbGRVcmxQYXRoKG9wdGlvbnMpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmJ1aWxkQ29tYmluZWRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiAob3B0aW9ucy5zdHJlYW0pXG4gICAgICAgID8gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgcmVxdWVzdFN0cmVhbWluZygpLFxuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaW5hbGl6ZSgpXG4gICAgICAgIClcbiAgICAgICAgOiB0aGlzLmh0dHAucG9zdDxUPih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICApXG4gIH1cblxuICB1cGRhdGVSZWNvcmRSZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5idWlsZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICB0aGlzLnJlcXVlc3Qob3B0aW9ucyksXG4gICAgKVxuICB9XG5cbiAgZGVsZXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsUGF0aCwgaGVhZGVycykucGlwZShcbiAgICAgIHRoaXMucmVxdWVzdChvcHRpb25zKSxcbiAgICApXG4gIH1cblxuICAvLyBIZWxwZXIgZnVuY3Rpb25zXG4gIHByaXZhdGUgYnVpbGRVcmxQYXRoKG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhdGhRdWVyeVNlcnZpY2UuYnVpbGRBUElQYXRoKG9wdGlvbnMuc2VydmVyLCBvcHRpb25zLnBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMob3B0aW9uczogQXBpUmVxdWVzdCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyc1NlcnZpY2UuZ2VuZXJhdGVIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29tYmluZWRIZWFkZXJzKG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBhbnkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNTZXJ2aWNlLmdlbmVyYXRlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gICAgcmV0dXJuIHRoaXMuY29tYmluZUhlYWRlcnMoaGVhZGVycywgb3B0aW9ucy5zdHJlYW0gfHwgZmFsc2UpXG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IChzb3VyY2U6IE9ic2VydmFibGU8YW55PikgPT4gT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIG1hcChkYXRhID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8uYWRhcHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgICAgICAgPyBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBvcHRpb25zLmFkYXB0ZXIoaXRlbSkpXG4gICAgICAgICAgICAgIDogb3B0aW9ucy5hZGFwdGVyKGRhdGEpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRhXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWRGaWxlUmVxdWVzdChvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmxQYXRoLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBvYnNlcnZlOiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M6IHRydWUgfSlcbiAgICAucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG5cbiAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKVxuXG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBIZWFkZXJSZXNwb25zZSkge1xuICAgICAgICAgIGlmKGV2ZW50LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb3dubG9hZCBmYWlsZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAwXHRTZW50XHRSZXF1ZXN0IGhhcyBiZWVuIHNlbnQuXG4gICAgICAgIC8vIDFcdFVwbG9hZFByb2dyZXNzXHRVcGxvYWQgaXMgaW4gcHJvZ3Jlc3MuXG4gICAgICAgIC8vIDJcdFJlc3BvbnNlSGVhZGVyXHRSZXNwb25zZSBoZWFkZXJzIHJlY2VpdmVkLlxuICAgICAgICAvLyAzXHREb3dubG9hZFByb2dyZXNzXHREb3dubG9hZCBpcyBpbiBwcm9ncmVzcy5cbiAgICAgICAgLy8gNFx0UmVzcG9uc2VcdFJlc3BvbnNlIGlzIGZ1bGx5IHJlY2VpdmVkLlxuICAgICAgICAvLyA1XHRVc2VyXHRDdXN0b20gdXNlciBldmVudC5cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcblxuICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzOlxuXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gKGV2ZW50LnRvdGFsKSA/IE1hdGgucm91bmQoZXZlbnQubG9hZGVkIC8gKGV2ZW50LnRvdGFsIHx8IDEpICogMTAwKSA6IDEwMFxuICAgICAgICAgIHRoaXMucHJvZ3Jlc3MubmV4dChzdGF0dXMpXG4gICAgICAgICAgcmV0dXJuIHN0YXR1c1xuXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lUGF0aCA9IChvcHRpb25zPy5zYXZlQXMpID8gb3B0aW9ucy5zYXZlQXMgOiAob3B0aW9ucy5wYXRoKSA/IG9wdGlvbnMucGF0aFtvcHRpb25zLnBhdGgubGVuZ3RoIC0gMV0gOiBbXVxuICAgICAgICAgICAgICBjb25zdCBoZWFkZXJfY29udGVudCA9IGV2ZW50LmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XG4gICAgICAgICAgICAgIC8vIGNoZWNrcyBpZiBoZWFkZXJfY29udGVudCBpcyBub3QgZW1wdHkgYW5kIHNwbGl0cyB0aGUgaGVhZGVyX2NvbnRlbnQgdG8gZ2V0IHRoZSBmaWxlIG5hbWVcbiAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBpdCB3aWxsIHVzZSB0aGUgZmlsZURvd25sb2FkIC0gY29udGFpbnMgdGhlIGZpbGUgbmFtZSBhbmQgZXh0ZW5zaW9uXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSAoaGVhZGVyX2NvbnRlbnQpID8gaGVhZGVyX2NvbnRlbnQuc3BsaXQoJz0nKVsxXS5zdWJzdHJpbmcoMCwgaGVhZGVyX2NvbnRlbnQuc3BsaXQoJz0nKVsxXS5sZW5ndGgpIDogJydcblxuICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IChmaWxlTmFtZVBhdGggIT09ICcnKSA/IGZpbGVOYW1lUGF0aCA6IGZpbGVcblxuICAgICAgICAgICAgICBpZiAoZmlsZU5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTYXZlIEZpbGU6IChmaWxlIG5hbWUgYW5kIGV4dGVuc2lvbikgbm90IGZvdW5kIGluIEhlYWRlcnMgb3IgUGF0aCcpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZmlsZU5hbWUsIGV2ZW50LmJvZHkpXG4gICAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG5cbiAgICAgICAgICAgICAgcmV0dXJuIDEwMFxuXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rvd25sb2FkIGZhaWxlZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG5cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmluYWxpemUoKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+KSA9PiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSk7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRmlsZShmaWxlOnN0cmluZywgZmlsZURhdGE6IGFueSkge1xuXG4gICAgY29uc3QgbmF2aWdhdG9yQW55ID0gd2luZG93Lm5hdmlnYXRvciBhcyBhbnlcblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUuc3BsaXQoJy4nKVsxXS50b0xvd2VyQ2FzZSgpXG5cbiAgICB2YXIgbmV3QmxvYiA9IG5ldyBCbG9iKFtmaWxlRGF0YV0sIHsgdHlwZTogdGhpcy5jcmVhdGVGaWxlVHlwZShleHRlbnNpb24pIH0pXG5cbiAgICBpZiAobmF2aWdhdG9yQW55Lm1zU2F2ZU9yT3BlbkJsb2IpIHtcbiAgICAgIG5hdmlnYXRvckFueS5tc1NhdmVPck9wZW5CbG9iKG5ld0Jsb2IsIGZpbGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ld0Jsb2IpXG4gICAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlXG4gICAgICBsaW5rLmNsaWNrKClcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsZVR5cGUoZXh0OiBhbnkpOiBzdHJpbmcge1xuXG4gICAgbGV0IGZpbGVUeXBlOiBzdHJpbmcgPSBcIlwiXG5cbiAgICBpZiAoZXh0ID09ICdwZGYnIHx8IGV4dCA9PSAnY3N2Jykge1xuICAgICAgZmlsZVR5cGUgPSBgYXBwbGljYXRpb24vJHtleHR9YFxuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ2pwZWcnIHx8IGV4dCA9PSAnanBnJyB8fCBleHQgPT0gJ3BuZycpIHtcbiAgICAgIGZpbGVUeXBlID0gYGltYWdlLyR7ZXh0fWBcbiAgICB9XG4gICAgZWxzZSBpZiAoZXh0ID09ICd0eHQnKSB7XG4gICAgICBmaWxlVHlwZSA9ICd0ZXh0L3BsYWluJ1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGV4dCA9PSAncHB0JyB8fCBleHQgPT0gJ3BvdCcgfHwgZXh0ID09ICdwcHMnIHx8IGV4dCA9PSAncHBhJykge1xuICAgICAgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAncHB0eCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAnZG9jJyB8fCBleHQgPT0gJ2RvdCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL21zd29yZCdcbiAgICB9XG4gICAgZWxzZSBpZiAoZXh0ID09ICdkb2N4Jykge1xuICAgICAgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAneGxzJyB8fCBleHQgPT0gJ3hsdCcgfHwgZXh0ID09ICd4bGEnKSB7XG4gICAgICBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAneGxzeCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0J1xuICAgIH1cblxuICAgIHJldHVybiBmaWxlVHlwZVxuXG4gIH1cblxuICBwcml2YXRlIGNvbWJpbmVIZWFkZXJzKGhlYWRlcnM6IGFueSwgaXNTdHJlYW1pbmc6IGJvb2xlYW4pIHtcblxuICAgIHJldHVybiAoaXNTdHJlYW1pbmcpID9cbiAgICB7XG4gICAgICAuLi5oZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgQWNjZXB0OiAndGV4dC9ldmVudC1zdHJlYW0nXG4gICAgfVxuICAgIDogaGVhZGVyc1xuXG4gIH1cblxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { defer, interval } from 'rxjs';
2
+ import { takeWhile, map } from 'rxjs/operators';
3
+ export function countdown(duration) {
4
+ return defer(() => {
5
+ const currentCount = { current: duration };
6
+ return interval(1000).pipe(map(() => --currentCount.current), takeWhile(count => count >= 0));
7
+ });
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvY291bnRkb3duLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUFnQjtJQUV4QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUU7UUFFaEIsTUFBTSxZQUFZLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUE7UUFFMUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FDL0IsQ0FBQTtJQUVILENBQUMsQ0FBQyxDQUFBO0FBRUosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGRlZmVyLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50ZG93bihkdXJhdGlvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcblxuICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuXG4gICAgY29uc3QgY3VycmVudENvdW50ID0geyBjdXJyZW50OiBkdXJhdGlvbiB9XG5cbiAgICByZXR1cm4gaW50ZXJ2YWwoMTAwMCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiAtLWN1cnJlbnRDb3VudC5jdXJyZW50KSxcbiAgICAgIHRha2VXaGlsZShjb3VudCA9PiBjb3VudCA+PSAwKVxuICAgIClcblxuICB9KVxuXG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { timer } from 'rxjs';
2
+ import { retry } from 'rxjs/operators';
3
+ const DEFAULT_MAX_RETRIES = 3;
4
+ export function delayedRetry(delayMs, maxRetry = DEFAULT_MAX_RETRIES) {
5
+ return (src) => src.pipe(retry({
6
+ count: maxRetry,
7
+ delay: () => timer(delayMs)
8
+ }));
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXktcmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9yeGpzLW9wZXJhdG9ycy9kZWxheS1yZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUU5QixNQUFNLFVBQVUsWUFBWSxDQUFJLE9BQWUsRUFBRSxRQUFRLEdBQUcsbUJBQW1CO0lBQzdFLE9BQU8sQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FDNUIsR0FBRyxDQUFDLElBQUksQ0FDTixLQUFLLENBQUM7UUFDSixLQUFLLEVBQUUsUUFBUTtRQUNmLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0tBQzVCLENBQUMsQ0FDSCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgREVGQVVMVF9NQVhfUkVUUklFUyA9IDM7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxheWVkUmV0cnk8VD4oZGVsYXlNczogbnVtYmVyLCBtYXhSZXRyeSA9IERFRkFVTFRfTUFYX1JFVFJJRVMpIHtcbiAgcmV0dXJuIChzcmM6IE9ic2VydmFibGU8VD4pID0+XG4gICAgc3JjLnBpcGUoXG4gICAgICByZXRyeSh7XG4gICAgICAgIGNvdW50OiBtYXhSZXRyeSxcbiAgICAgICAgZGVsYXk6ICgpID0+IHRpbWVyKGRlbGF5TXMpXG4gICAgICB9KVxuICAgICk7XG59XG5cblxuIl19
@@ -0,0 +1,5 @@
1
+ export * from "./countdown";
2
+ export * from "./delay-retry";
3
+ export * from "./request-polling";
4
+ export * from "./request-streaming";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9yeGpzLW9wZXJhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb3VudGRvd25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlbGF5LXJldHJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXF1ZXN0LXBvbGxpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcXVlc3Qtc3RyZWFtaW5nXCI7XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { interval } from 'rxjs';
2
+ import { mergeMap, startWith, takeUntil, tap } from 'rxjs/operators';
3
+ /**
4
+ * @param pollInterval
5
+ * @param stopCondition$
6
+ * @param isPending$
7
+ */
8
+ export function requestPolling(pollInterval, stopCondition$, isPending$) {
9
+ return (source) => {
10
+ return interval(pollInterval * 1000)
11
+ .pipe(startWith(0), tap(() => isPending$.next(true)), mergeMap(() => source), tap(() => isPending$.next(false)), takeUntil(stopCondition$));
12
+ };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRTs7OztHQUlHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FBSSxZQUFvQixFQUFFLGNBQStCLEVBQUUsVUFBb0M7SUFDM0gsT0FBTyxDQUFDLE1BQXFCLEVBQWlCLEVBQUU7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDakMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBwYXJhbSBwb2xsSW50ZXJ2YWxcbiAqIEBwYXJhbSBzdG9wQ29uZGl0aW9uJFxuICogQHBhcmFtIGlzUGVuZGluZyRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFBvbGxpbmc8VD4ocG9sbEludGVydmFsOiBudW1iZXIsIHN0b3BDb25kaXRpb24kOiBPYnNlcnZhYmxlPGFueT4sIGlzUGVuZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHJldHVybiBpbnRlcnZhbChwb2xsSW50ZXJ2YWwgKiAxMDAwKVxuICAgIC5waXBlKFxuICAgICAgc3RhcnRXaXRoKDApLCBcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQodHJ1ZSkpLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gc291cmNlKSxcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQoZmFsc2UpKSxcbiAgICAgIHRha2VVbnRpbChzdG9wQ29uZGl0aW9uJCksXG4gICAgKTtcbiAgfTtcbn0iXX0=
@@ -0,0 +1,19 @@
1
+ import { filter, map } from 'rxjs/operators';
2
+ import { HttpEventType } from '@angular/common/http';
3
+ export function requestStreaming() {
4
+ return input$ => input$.pipe(filter((event) => event.type === HttpEventType.DownloadProgress || event.type === HttpEventType.Response), map((event) => {
5
+ if (event.type === HttpEventType.DownloadProgress) {
6
+ return event.partialText || '';
7
+ }
8
+ else if (event.type === HttpEventType.Response) {
9
+ return event.body;
10
+ }
11
+ }), map((data) => {
12
+ if (typeof data === 'string') {
13
+ const matches = data.match(/{[^}]+}/g) || [];
14
+ return (matches.length > 0) ? matches.map(match => JSON.parse(match)) : data;
15
+ }
16
+ return data;
17
+ }));
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1zdHJlYW1pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9yeGpzLW9wZXJhdG9ycy9yZXF1ZXN0LXN0cmVhbWluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxNQUFNLFVBQVUsZ0JBQWdCO0lBRTlCLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQixNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNwQixLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQ3ZGLEVBRUQsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFFakIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xELE9BQU8sS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUE7UUFDaEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ25CLENBQUM7SUFFSCxDQUFDLENBQUMsRUFFRixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUNoQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDOUUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUVILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0U3RyZWFtaW5nKCk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBhbnk+IHtcblxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQ6IGFueSkgPT5cbiAgICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcyB8fCBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlXG4gICAgKSxcblxuICAgIG1hcCgoZXZlbnQ6IGFueSkgPT4ge1xuXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzKSB7XG4gICAgICAgIHJldHVybiBldmVudC5wYXJ0aWFsVGV4dCB8fCAnJ1xuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBldmVudC5ib2R5XG4gICAgICB9XG5cbiAgICB9KSxcblxuICAgIG1hcCgoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBkYXRhLm1hdGNoKC97W159XSt9L2cpIHx8IFtdXG4gICAgICAgIHJldHVybiAobWF0Y2hlcy5sZW5ndGggPiAwKSA/IG1hdGNoZXMubWFwKG1hdGNoID0+IEpTT04ucGFyc2UobWF0Y2gpKSA6IGRhdGFcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhXG4gICAgfSlcbiAgKVxuXG59XG5cbiJdfQ==