http-request-manager 18.15.32 → 18.15.34

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 (301) hide show
  1. package/README.md +2 -0
  2. package/TEST_COVERAGE_SUMMARY.md +458 -0
  3. package/ng-package.json +8 -0
  4. package/package.json +5 -13
  5. package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
  6. package/src/docs/ARCHITECTURE.md +633 -0
  7. package/src/docs/BATCH_REQUEST_README.md +467 -0
  8. package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
  9. package/src/docs/DATABASE_README.md +1195 -0
  10. package/src/docs/ENCRYPTION_README.md +403 -0
  11. package/src/docs/HTTP_MANAGER_README.md +628 -0
  12. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
  13. package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
  14. package/src/docs/INTERCEPTOR_README.md +549 -0
  15. package/src/docs/LOCAL_STORAGE_README.md +1056 -0
  16. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
  17. package/src/docs/LOGGER_README.md +310 -0
  18. package/src/docs/MESSAGE_TRACKER_README.md +518 -0
  19. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
  20. package/src/docs/MODELS_README.md +1264 -0
  21. package/src/docs/SIGNAL_SERVICES_README.md +238 -0
  22. package/src/docs/SQL_DIXIE_README.md +574 -0
  23. package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
  24. package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
  25. package/src/docs/UPLOAD_REQUEST_README.md +324 -0
  26. package/src/docs/UTILS_README.md +1604 -0
  27. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
  28. package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
  29. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
  30. package/src/docs/WS_MANAGER_README.md +613 -0
  31. package/src/lib/http-request-manager.module.ts +147 -0
  32. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
  33. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  34. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
  35. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
  36. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  37. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
  38. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  39. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  40. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
  41. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  42. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  43. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
  44. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
  45. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
  46. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
  65. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
  66. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  67. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  68. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  76. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  77. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  78. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  79. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  84. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  85. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
  86. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
  87. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
  88. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
  89. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  90. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
  91. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
  92. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
  93. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  94. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  121. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
  122. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  123. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  124. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  143. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  144. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  145. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
  146. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  148. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  149. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
  150. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
  151. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
  152. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
  153. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
  154. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
  155. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
  156. package/src/lib/index.ts +3 -0
  157. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  158. package/src/lib/interceptors/index.ts +6 -0
  159. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  160. package/src/lib/interceptors/models/index.ts +2 -0
  161. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  162. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  163. package/src/lib/interceptors/request-header.interceptor.ts +56 -0
  164. package/src/lib/message-display/README.md +509 -0
  165. package/src/lib/message-display/index.ts +4 -0
  166. package/src/lib/message-display/models/action.model.ts +27 -0
  167. package/src/lib/message-display/models/communication-message.model.ts +77 -0
  168. package/src/lib/message-display/models/display-config.model.ts +35 -0
  169. package/src/lib/message-display/models/display-rule.interface.ts +28 -0
  170. package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
  171. package/src/lib/message-display/models/index.ts +6 -0
  172. package/src/lib/message-display/models/slide.model.ts +24 -0
  173. package/src/lib/message-display/rules/default-display-rules.ts +35 -0
  174. package/src/lib/message-display/services/message-display-router.service.ts +63 -0
  175. package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
  176. package/src/lib/models/batch-options.model.ts +33 -0
  177. package/src/lib/models/batch-progress.model.ts +19 -0
  178. package/src/lib/models/batch-request-state.model.ts +40 -0
  179. package/src/lib/models/batch-result.model.ts +30 -0
  180. package/src/lib/models/config-http-options.model.ts +45 -0
  181. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  182. package/src/lib/models/config-options.model.ts +27 -0
  183. package/src/lib/models/config-token.model.ts +9 -0
  184. package/src/lib/models/data-type.enum.ts +5 -0
  185. package/src/lib/models/database-storage.model.ts +24 -0
  186. package/src/lib/models/index.ts +16 -0
  187. package/src/lib/models/retry-options.model.ts +22 -0
  188. package/src/lib/models/upload-validation-error.model.ts +46 -0
  189. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
  190. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
  191. package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
  192. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
  193. package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
  194. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
  195. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
  196. package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
  197. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
  198. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
  199. package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
  200. package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
  201. package/src/lib/services/database-manager-service/index.ts +4 -0
  202. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  203. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  204. package/src/lib/services/index.ts +20 -0
  205. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  206. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  207. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
  208. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  209. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
  210. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  211. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  212. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  213. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  214. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  215. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  216. package/src/lib/services/request-manager-services/README.md +282 -0
  217. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
  218. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
  219. package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
  220. package/src/lib/services/request-manager-services/index.ts +8 -0
  221. package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
  222. package/src/lib/services/request-manager-services/request.service.ts +435 -0
  223. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  224. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  225. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  226. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  227. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
  228. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
  229. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
  230. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  231. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
  232. package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
  233. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
  234. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
  235. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
  236. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
  237. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
  238. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
  239. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
  240. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
  241. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  242. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
  243. package/src/lib/services/store-state-manager-service/index.ts +4 -0
  244. package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
  245. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
  246. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  247. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
  248. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
  249. package/src/lib/services/utils/app.service.spec.ts +25 -0
  250. package/src/lib/services/utils/app.service.ts +21 -0
  251. package/src/lib/services/utils/encryption/README.md +79 -0
  252. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  253. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  254. package/src/lib/services/utils/encryption/index.ts +5 -0
  255. package/src/lib/services/utils/encryption/random.ts +81 -0
  256. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
  257. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  258. package/src/lib/services/utils/headers.service.ts +18 -0
  259. package/src/lib/services/utils/index.ts +9 -0
  260. package/src/lib/services/utils/logger.service.ts +90 -0
  261. package/src/lib/services/utils/models/index.ts +4 -0
  262. package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
  263. package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
  264. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
  265. package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
  266. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  267. package/src/lib/services/utils/object-merger.service.ts +78 -0
  268. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  269. package/src/lib/services/utils/path-query.service.ts +69 -0
  270. package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
  271. package/src/lib/services/utils/random-color.utils.ts +83 -0
  272. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  273. package/src/lib/services/utils/utils.service.ts +192 -0
  274. package/src/lib/services/ws-manager-service/index.ts +13 -0
  275. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
  276. package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
  277. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
  278. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  279. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
  280. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
  281. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  282. package/src/lib/services/ws-manager-service/models/index.ts +10 -0
  283. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
  284. package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
  285. package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
  286. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  287. package/src/lib/services/ws-manager-service/services/index.ts +4 -0
  288. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
  289. package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
  290. package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
  291. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
  292. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
  293. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
  294. package/src/public-api.ts +19 -0
  295. package/tsconfig.lib.json +34 -0
  296. package/tsconfig.lib.prod.json +10 -0
  297. package/tsconfig.spec.json +14 -0
  298. package/fesm2022/http-request-manager.mjs +0 -13297
  299. package/fesm2022/http-request-manager.mjs.map +0 -1
  300. package/http-request-manager-18.15.32.tgz +0 -0
  301. package/types/http-request-manager.d.ts +0 -3875
@@ -0,0 +1,628 @@
1
+ # HTTP Manager Service
2
+
3
+ The `HTTPManagerService` is the core HTTP client service that provides Observable-based request management with comprehensive features for enterprise applications.
4
+
5
+ ## Overview
6
+
7
+ The HTTPManagerService acts as a wrapper around Angular's HttpClient, providing a centralized way to manage HTTP requests with:
8
+
9
+ - **State Management** - Exposes `data$`, `isPending$`, `error$`, and `countdown$` observables
10
+ - **Polling Support** - Automatic endpoint polling with countdown timers
11
+ - **Retry Logic** - Configurable retry attempts with delays
12
+ - **Adapters & Mappers** - Data transformation for requests and responses
13
+ - **Streaming** - Support for streaming responses (NDJSON, Server-Sent Events)
14
+ - **Error Handling** - Centralized error handling with optional toast notifications
15
+ - **File Downloads** - Progress tracking for file downloads
16
+ - **File Uploads** - Multi-file upload with progress tracking, validation, and form-data configuration ([see Upload Request docs](./UPLOAD_REQUEST_README.md))
17
+
18
+ ## Installation
19
+
20
+ This service is automatically available when you import `HttpRequestManagerModule`.
21
+
22
+ ```typescript
23
+ import { HttpRequestManagerModule } from 'http-request-manager';
24
+
25
+ @NgModule({
26
+ imports: [HttpRequestManagerModule.forRoot({})]
27
+ })
28
+ export class AppModule { }
29
+ ```
30
+
31
+ ## Usage
32
+
33
+ ### Basic HTTP Request
34
+
35
+ ```typescript
36
+ import { Component, inject } from '@angular/core';
37
+ import { HTTPManagerService, ApiRequest } from 'http-request-manager';
38
+
39
+ @Component({
40
+ selector: 'app-users',
41
+ template: `
42
+ <div *ngIf="isLoading$ | async">Loading...</div>
43
+ <div *ngFor="let user of data$ | async">
44
+ {{ user.name }}
45
+ </div>
46
+ `
47
+ })
48
+ export class UsersComponent {
49
+ httpManager = inject(HTTPManagerService);
50
+
51
+ data$ = this.httpManager.data$;
52
+ isLoading$ = this.httpManager.isPending$;
53
+
54
+ ngOnInit() {
55
+ this.httpManager.getRequest(
56
+ ApiRequest.adapt({ path: ['users'] })
57
+ ).subscribe();
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### Service Extension Pattern
63
+
64
+ ```typescript
65
+ import { Injectable } from '@angular/core';
66
+ import { HTTPManagerService, ApiRequest } from 'http-request-manager';
67
+ import { BehaviorSubject, EMPTY } from 'rxjs';
68
+ import { catchError } from 'rxjs/operators';
69
+
70
+ @Injectable()
71
+ export class UserService extends HTTPManagerService<any> {
72
+
73
+ private errorRetry$ = new BehaviorSubject<{ func: Function, message: string } | null>(null);
74
+ errorRetryMessage$ = this.errorRetry$.asObservable();
75
+
76
+ private apiRequest = ApiRequest.adapt({
77
+ server: 'api/users',
78
+ adapter: User.adapt
79
+ });
80
+
81
+ private params = { type: 'ACTIVE' };
82
+
83
+ fetchUsers(params = this.params) {
84
+ return this.httpManagerService.getRequest(this.apiRequest, [params])
85
+ .pipe(
86
+ catchError((error: HttpErrorResponse) => {
87
+ const func = this.fetchUsers.bind(this);
88
+ const message = error.message;
89
+ this.errorRetry$.next({ func, message });
90
+ return EMPTY;
91
+ })
92
+ );
93
+ }
94
+ }
95
+ ```
96
+
97
+ ## API Reference
98
+
99
+ ### ApiRequest Configuration
100
+
101
+ | Option | Type | Description | Default |
102
+ |--------|------|-------------|---------|
103
+ | `server` | `string` | Base URL for the request | `''` |
104
+ | `path` | `any[]` | Path segments to append to URL | `[]` |
105
+ | `headers` | `any` | Custom headers for request | `{}` |
106
+ | `adapter` | `function` | Transform incoming response data | `undefined` |
107
+ | `mapper` | `function` | Transform outgoing request payload | `undefined` |
108
+ | `polling` | `number` | Polling interval in seconds (0 = disabled) | `0` |
109
+ | `retry` | `RetryOptions` | Retry configuration | `{ times: 0, delay: 3 }` |
110
+ | `stream` | `boolean` | Enable streaming response handling | `false` |
111
+ | `streamType` | `StreamType` | Streaming format: `NDJSON`, `SSE`, or `AI_STREAMING` | `AI_STREAMING` |
112
+ | `displayError` | `boolean` | Show toast notification on error | `false` |
113
+ | `displaySuccess` | `boolean` | Show toast notification on success | `false` |
114
+ | `successMessage` | `string` | Custom success toast message | `undefined` |
115
+ | `errorMessage` | `string` | Custom error toast message | `undefined` |
116
+ | `saveAs` | `string` | Filename for file downloads | `undefined` |
117
+ | `fileContentHeader` | `string` | Content-Disposition header for downloads | `undefined` |
118
+ | `ws` | `WSOptions` | WebSocket configuration for real-time sync | `undefined` |
119
+ | `env` | `string` | Environment for WebSocket channel naming | `'dev'` |
120
+ | `uploadFieldName` | `string` | Form-data field name for uploads | `undefined` |
121
+ | `uploadHttpMethod` | `'POST' \| 'PUT'` | HTTP method for upload requests | `undefined` |
122
+ | `allowedTypes` | `string[]` | Allowed MIME types for upload validation | `[]` |
123
+ | `maxFileSize` | `number` | Maximum per-file size in bytes | `undefined` |
124
+ | `maxTotalSize` | `number` | Maximum total upload size in bytes | `undefined` |
125
+
126
+ ### State-Only Request Tracking Options
127
+
128
+ The following request options are not part of HTTPManagerService base ApiRequest options.
129
+ They are handled by HTTPManagerStateService request methods (fetchRecords/fetchStream):
130
+
131
+ - `ignoreQueryParams` — Query parameter keys to exclude from request-change tracking
132
+ - `queryParamsExpiresIn` — Expiry duration for tracked query values (e.g., `'10s'`, `'5mn'`, `'1h'`)
133
+ - `watchParams` — Specific query keys to watch for change detection (variation mode)
134
+ - `watchExpiresAt` — Epoch timestamp when tracked values expire
135
+ - `forceRefresh` — Bypass tracking and always make the API request
136
+
137
+ Important scope:
138
+
139
+ - Database enabled (DatabaseStorage configured in HTTPManagerStateService): tracking and expiry behavior are active.
140
+ - Database disabled: tracking is bypassed and API calls proceed normally.
141
+
142
+ If you need this behavior, use HTTPManagerStateService docs:
143
+
144
+ - ./HTTP_STATE_MANAGER_README.md
145
+
146
+ ### Observable Properties
147
+
148
+ | Property | Type | Description |
149
+ |----------|------|-------------|
150
+ | `data$` | `Observable<any>` | Response data from requests |
151
+ | `isPending$` | `Observable<boolean>` | Loading state indicator |
152
+ | `error$` | `Observable<any>` | Error state |
153
+ | `countdown$` | `Observable<number>` | Countdown for polling (if active) |
154
+
155
+ ### HTTP Methods
156
+
157
+ #### getRequest(options: ApiRequest, params?: any[])
158
+
159
+ Make a GET request with the specified options.
160
+
161
+ ```typescript
162
+ this.httpManager.getRequest(
163
+ ApiRequest.adapt({
164
+ path: ['users', '123'],
165
+ retry: { times: 3, delay: 1 }
166
+ })
167
+ ).subscribe();
168
+ ```
169
+
170
+ #### postRequest(data: T, options: ApiRequest, params?: any[])
171
+
172
+ Make a POST request with data payload.
173
+
174
+ ```typescript
175
+ this.httpManager.postRequest(
176
+ { name: 'John Doe', email: 'john@example.com' },
177
+ ApiRequest.adapt({ path: ['users'] })
178
+ ).subscribe();
179
+ ```
180
+
181
+ #### putRequest(data: T, options: ApiRequest, params?: any[])
182
+
183
+ Make a PUT request with data payload.
184
+
185
+ ```typescript
186
+ this.httpManager.putRequest(
187
+ { name: 'Jane Doe', email: 'jane@example.com' },
188
+ ApiRequest.adapt({ path: ['users', '123'] })
189
+ ).subscribe();
190
+ ```
191
+
192
+ #### deleteRequest(options: ApiRequest, params?: any[])
193
+
194
+ Make a DELETE request.
195
+
196
+ ```typescript
197
+ this.httpManager.deleteRequest(
198
+ ApiRequest.adapt({ path: ['users', '123'] })
199
+ ).subscribe();
200
+ ```
201
+
202
+ #### downloadRequest(options: ApiRequest, params?: any[], saveAs?: string)
203
+
204
+ Download a file with progress tracking.
205
+
206
+ ```typescript
207
+ this.httpManager.downloadRequest(
208
+ ApiRequest.adapt({
209
+ server: 'assets',
210
+ path: ['report.pdf']
211
+ }),
212
+ [],
213
+ 'monthly-report.pdf'
214
+ ).subscribe();
215
+ ```
216
+
217
+ #### uploadRequest(files: File | File[], options: ApiRequest, params?: any[])
218
+
219
+ Upload one or more files with progress tracking and validation. See [Upload Request docs](./UPLOAD_REQUEST_README.md) for full details.
220
+
221
+ ```typescript
222
+ this.httpManager.uploadRequest(
223
+ selectedFiles,
224
+ ApiRequest.adapt({
225
+ path: ['uploader'],
226
+ allowedTypes: ['image/jpeg', 'image/png'],
227
+ maxFileSize: 40 * 1024 * 1024
228
+ })
229
+ ).subscribe();
230
+ ```
231
+
232
+ ## Advanced Features
233
+
234
+ ### Polling
235
+
236
+ Enable automatic polling of endpoints with countdown display:
237
+
238
+ ```typescript
239
+ this.httpManager.getRequest(
240
+ ApiRequest.adapt({
241
+ path: ['server-status'],
242
+ polling: 10 // Poll every 10 seconds
243
+ })
244
+ ).subscribe();
245
+
246
+ // Countdown display
247
+ countdown$ = this.httpManager.countdown$; // 10, 9, 8, 7...
248
+ ```
249
+
250
+ ### Streaming Responses
251
+
252
+ Handle streaming responses for real-time data:
253
+
254
+ ```typescript
255
+ // NDJSON Streaming
256
+ this.httpManager.getRequest(
257
+ ApiRequest.adapt({
258
+ path: ['stream', 'data'],
259
+ stream: true,
260
+ adapter: StreamingData.adapt
261
+ })
262
+ ).subscribe();
263
+
264
+ // AI Streaming
265
+ this.httpManager.postRequest(
266
+ ApiRequest.adapt({
267
+ path: ['ai', 'chat'],
268
+ stream: true,
269
+ streamType: 'ai_streaming'
270
+ }),
271
+ { message: 'Hello AI' }
272
+ ).subscribe();
273
+ ```
274
+
275
+ ### Retry Logic
276
+
277
+ Configure automatic retry for failed requests:
278
+
279
+ ```typescript
280
+ this.httpManager.getRequest(
281
+ ApiRequest.adapt({
282
+ path: ['unreliable-endpoint'],
283
+ retry: { times: 5, delay: 2 }, // Retry 5 times with 2s delay
284
+ displayError: true // Show toast on final failure
285
+ })
286
+ ).subscribe();
287
+ ```
288
+
289
+ ### Data Adapters
290
+
291
+ Transform incoming data using adapter functions:
292
+
293
+ ```typescript
294
+ // Define adapter
295
+ export class User {
296
+ constructor(
297
+ public id: number = 0,
298
+ public name: string = '',
299
+ public email: string = ''
300
+ ) {}
301
+
302
+ static adapt(item: any): User {
303
+ return new User(
304
+ item.id,
305
+ item.fullName, // Map fullName to name
306
+ item.emailAddress // Map emailAddress to email
307
+ );
308
+ }
309
+ }
310
+
311
+ // Use adapter
312
+ this.httpManager.getRequest(
313
+ ApiRequest.adapt({
314
+ path: ['users'],
315
+ adapter: User.adapt
316
+ })
317
+ ).subscribe();
318
+
319
+ // Data is automatically transformed using User.adapt
320
+ data$ = this.httpManager.data$; // Observable<User[]>
321
+ ```
322
+
323
+ ### Data Mappers
324
+
325
+ Transform outgoing data before sending to API:
326
+
327
+ ```typescript
328
+ // Define mapper
329
+ export class UserMapper {
330
+ static adapt(user: User): any {
331
+ return {
332
+ id: user.id,
333
+ fullName: user.name, // Map name to fullName
334
+ emailAddress: user.email, // Map email to emailAddress
335
+ active: true
336
+ };
337
+ }
338
+ }
339
+
340
+ // Use mapper
341
+ this.httpManager.postRequest(
342
+ ApiRequest.adapt({
343
+ path: ['users'],
344
+ mapper: UserMapper.adapt
345
+ }),
346
+ new User(1, 'John Doe', 'john@example.com')
347
+ ).subscribe();
348
+ ```
349
+
350
+ ## Demo Examples
351
+
352
+ ### Complete HTTP Service Example
353
+
354
+ ```typescript
355
+ import { Component, inject } from '@angular/core';
356
+ import { FormBuilder, Validators } from '@angular/forms';
357
+ import { HTTPManagerService, ApiRequest } from 'http-request-manager';
358
+
359
+ @Component({
360
+ selector: 'app-api-client',
361
+ template: `
362
+ <form [formGroup]="requestForm" (ngSubmit)="makeRequest()">
363
+ <input formControlName="endpoint" placeholder="API endpoint">
364
+ <button type="submit">Make Request</button>
365
+ </form>
366
+
367
+ <div *ngIf="isLoading$ | async">Loading...</div>
368
+
369
+ <div *ngIf="error$ | async as error" class="error">
370
+ Error: {{ error }}
371
+ </div>
372
+
373
+ <pre *ngIf="data$ | async as data">
374
+ {{ data | json }}
375
+ </pre>
376
+
377
+ <div *ngIf="countdown$ | async as countdown">
378
+ Next request in: {{ countdown }}s
379
+ </div>
380
+ `
381
+ })
382
+ export class ApiClientComponent {
383
+ private fb = inject(FormBuilder);
384
+ private httpManager = inject(HTTPManagerService);
385
+
386
+ data$ = this.httpManager.data$;
387
+ isLoading$ = this.httpManager.isPending$;
388
+ error$ = this.httpManager.error$;
389
+ countdown$ = this.httpManager.countdown$;
390
+
391
+ requestForm = this.fb.group({
392
+ endpoint: ['users', Validators.required],
393
+ method: ['GET', Validators.required],
394
+ polling: [0],
395
+ retry: this.fb.group({
396
+ times: [3],
397
+ delay: [2],
398
+ })
399
+ });
400
+
401
+ makeRequest() {
402
+ const formValue = this.requestForm.value;
403
+
404
+ this.httpManager.getRequest(
405
+ ApiRequest.adapt({
406
+ path: [formValue.endpoint],
407
+ polling: formValue.polling,
408
+ retry: formValue.retry,
409
+ displayError: true
410
+ })
411
+ ).subscribe();
412
+ }
413
+ }
414
+ ```
415
+
416
+ ### Error Handling with Retry
417
+
418
+ ```typescript
419
+ export class RobustApiService {
420
+ private errorRetry$ = new BehaviorSubject<{ func: Function, message: string } | null>(null);
421
+ errorRetryMessage$ = this.errorRetry$.asObservable();
422
+
423
+ makeRequestWithRetry(endpoint: string) {
424
+ return this.httpManager.getRequest(
425
+ ApiRequest.adapt({
426
+ path: [endpoint],
427
+ retry: { times: 3, delay: 2 },
428
+ displayError: true
429
+ })
430
+ ).pipe(
431
+ catchError((error: HttpErrorResponse) => {
432
+ this.errorRetry$.next({
433
+ func: () => this.makeRequestWithRetry(endpoint),
434
+ message: error.message
435
+ });
436
+ return EMPTY;
437
+ })
438
+ );
439
+ }
440
+
441
+ retry() {
442
+ const retryAction = this.errorRetry$.value;
443
+ if (retryAction) {
444
+ retryAction.func();
445
+ }
446
+ }
447
+ }
448
+ ```
449
+
450
+ ## Integration with Other Services
451
+
452
+ The HTTPManagerService can be extended and used with other services:
453
+
454
+ ### With State Management
455
+
456
+ ```typescript
457
+ @Injectable()
458
+ export class UserStateService extends HTTPManagerStateService<User> {
459
+ constructor() {
460
+ super(
461
+ ApiRequest.adapt({
462
+ path: ['users'],
463
+ adapter: User.adapt
464
+ }),
465
+ DataType.ARRAY
466
+ );
467
+ }
468
+
469
+ loadUsers() {
470
+ this.fetchRecords(); // Uses HTTPManagerService internally
471
+ }
472
+ }
473
+ ```
474
+
475
+ ### With WebSocket
476
+
477
+ ```typescript
478
+ @Injectable()
479
+ export class ChatService extends HTTPManagerStateService<Message> {
480
+ constructor() {
481
+ super(
482
+ ApiRequest.adapt({
483
+ path: ['messages'],
484
+ adapter: Message.adapt,
485
+ ws: {
486
+ id: 'CHAT_WS',
487
+ wsServer: 'ws://localhost:8080'
488
+ }
489
+ }),
490
+ DataType.ARRAY
491
+ );
492
+ }
493
+
494
+ // HTTP + WebSocket combined
495
+ sendMessage(content: string) {
496
+ // HTTP POST to save message
497
+ this.createRecord({ content, timestamp: Date.now() });
498
+
499
+ // WebSocket broadcast
500
+ this.wsMessaging(
501
+ { content: { message: content } },
502
+ ['chat-room']
503
+ );
504
+ }
505
+ }
506
+ ```
507
+
508
+ ## Best Practices
509
+
510
+ ### 1. Service Layer Pattern
511
+
512
+ Always create dedicated services that extend or use HTTPManagerService:
513
+
514
+ ```typescript
515
+ // ✅ Good
516
+ @Injectable()
517
+ export class UserService {
518
+ constructor(private http: HTTPManagerService) {}
519
+
520
+ getUsers() {
521
+ return this.http.getRequest(
522
+ ApiRequest.adapt({ path: ['users'] })
523
+ );
524
+ }
525
+ }
526
+
527
+ // ❌ Avoid
528
+ @Component({
529
+ template: `<div *ngFor="let user of http.data$ | async">`
530
+ })
531
+ export class BadComponent {
532
+ constructor(private http: HTTPManagerService) {}
533
+ }
534
+ ```
535
+
536
+ ### 2. Error Handling
537
+
538
+ Implement comprehensive error handling:
539
+
540
+ ```typescript
541
+ fetchData() {
542
+ this.data$ = this.httpManager.getRequest(
543
+ ApiRequest.adapt({
544
+ path: ['data'],
545
+ retry: { times: 3, delay: 2 },
546
+ displayError: true
547
+ })
548
+ );
549
+ }
550
+ ```
551
+
552
+ ### 3. Adapter Usage
553
+
554
+ Use adapters for type safety:
555
+
556
+ ```typescript
557
+ // ✅ Good
558
+ ApiRequest.adapt({
559
+ path: ['users'],
560
+ adapter: User.adapt // Ensures type safety
561
+ });
562
+
563
+ // ❌ Avoid
564
+ ApiRequest.adapt({
565
+ path: ['users']
566
+ // No adapter = loose typing
567
+ });
568
+ ```
569
+
570
+ ### 4. Cleanup
571
+
572
+ Always clean up subscriptions:
573
+
574
+ ```typescript
575
+ @Component({ template: '...' })
576
+ export class MyComponent implements OnDestroy {
577
+ private destroy$ = new Subject<void>();
578
+
579
+ ngOnInit() {
580
+ this.httpManager.getRequest(
581
+ ApiRequest.adapt({ path: ['data'] })
582
+ ).pipe(takeUntil(this.destroy$)).subscribe();
583
+ }
584
+
585
+ ngOnDestroy() {
586
+ this.destroy$.next();
587
+ this.destroy$.complete();
588
+ }
589
+ }
590
+ ```
591
+
592
+ ## Troubleshooting
593
+
594
+ ### Common Issues
595
+
596
+ #### 1. CORS Errors
597
+ ```typescript
598
+ // Enable CORS in ApiRequest
599
+ ApiRequest.adapt({
600
+ server: 'https://api.example.com',
601
+ headers: { 'Access-Control-Allow-Origin': '*' }
602
+ });
603
+ ```
604
+
605
+ #### 2. Authentication Headers
606
+ ```typescript
607
+ // Add auth headers
608
+ ApiRequest.adapt({
609
+ headers: {
610
+ 'Authorization': `Bearer ${this.authToken}`,
611
+ 'Content-Type': 'application/json'
612
+ }
613
+ });
614
+ ```
615
+
616
+ #### 3. Polling Not Stopping
617
+ ```typescript
618
+ ngOnDestroy() {
619
+ this.httpManager.stopPolling(); // Important!
620
+ }
621
+ ```
622
+
623
+ ## Related Documentation
624
+
625
+ - [Architecture Overview](../architecture/README.md)
626
+ - [HTTP State Service](http-state/README.md)
627
+ - [HTTP Signals Service](http-signals/README.md)
628
+ - [Demo Examples](../demos/README.md)