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,518 @@
1
+ <!-- markdownlint-disable MD031 MD060 -->
2
+
3
+ # Message Tracker Service
4
+
5
+ The `MessageTrackerService` provides guaranteed message delivery tracking for WebSocket communications with sequence tracking, gap detection, and automatic re-subscription.
6
+
7
+ ## Overview
8
+
9
+ This service ensures that frontend clients never miss WebSocket messages, even during disconnections. It provides:
10
+
11
+ - ✅ **Per-Channel Message Tracking** - Track message sequences per channel
12
+ - ✅ **Gap Detection** - Automatically detect missing messages
13
+ - ✅ **Batch Acknowledgments** - Efficient message confirmation
14
+ - ✅ **Reconnection Sync** - Resume from last-seen message after disconnect
15
+ - ✅ **Persistent Tracking** - Survives page refreshes via sessionStorage
16
+ - ✅ **Notification Channel Support** - Special handling for notification channels
17
+
18
+ ## Installation
19
+
20
+ ```typescript
21
+ import { MessageTrackerService } from 'http-request-manager';
22
+ ```
23
+
24
+ The service is automatically available when you import `HttpRequestManagerModule`.
25
+
26
+ ## Basic Usage
27
+
28
+ ### Channel Subscription with Tracking
29
+
30
+ ```typescript
31
+ import { Component, inject, OnDestroy } from '@angular/core';
32
+ import { MessageTrackerService, WebSocketManagerService } from 'http-request-manager';
33
+ import { Subscription } from 'rxjs';
34
+
35
+ @Component({
36
+ selector: 'app-chat',
37
+ template: `
38
+ <div class="chat">
39
+ <h2>Chat Messages</h2>
40
+ <div class="messages">
41
+ <div *ngFor="let message of messages" class="message">
42
+ <strong>{{ message.user }}:</strong> {{ message.content }}
43
+ </div>
44
+ </div>
45
+ </div>
46
+ `
47
+ })
48
+ export class ChatComponent implements OnDestroy {
49
+ private tracker = inject(MessageTrackerService);
50
+ private wsManager = inject(WebSocketManagerService);
51
+
52
+ messages: any[] = [];
53
+ private messagesSubscription: Subscription;
54
+
55
+ constructor() {
56
+ // Subscribe to tracked messages
57
+ this.messagesSubscription = this.tracker.messages$.subscribe(message => {
58
+ if (message) {
59
+ this.messages.push(message);
60
+ }
61
+ });
62
+
63
+ // Connect and subscribe to channel
64
+ this.wsManager.connect({
65
+ wsServer: 'ws://localhost:8080',
66
+ id: 'chat',
67
+ user: { id: 'user123', name: 'John' }
68
+ }, 'jwt-token');
69
+
70
+ // Subscribe with automatic tracking
71
+ this.tracker.subscribeToChannel('chat');
72
+ }
73
+
74
+ ngOnDestroy() {
75
+ this.messagesSubscription?.unsubscribe();
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## API Reference
81
+
82
+ ### Message Tracking
83
+
84
+ #### `trackMessage(message: any): void`
85
+
86
+ Manually tracks a message and updates sequence tracking.
87
+
88
+ ```typescript
89
+ tracker.trackMessage({
90
+ id: 123,
91
+ channel: 'chat',
92
+ user: 'user123',
93
+ content: 'Hello!',
94
+ timestamp: new Date().toISOString()
95
+ });
96
+ ```
97
+
98
+ ### Channel Management
99
+
100
+ #### `subscribeToChannel(channel: string, userData?: any): void`
101
+
102
+ Subscribe to a channel with automatic last-seen tracking for message replay.
103
+
104
+ ```typescript
105
+ // Subscribe to general chat
106
+ tracker.subscribeToChannel('general');
107
+
108
+ // Subscribe with user data
109
+ tracker.subscribeToChannel('private', { userId: 'user123' });
110
+ ```
111
+
112
+ **Features:**
113
+ - Automatically includes `lastSeenId` for message replay
114
+ - Persists intended channels to sessionStorage
115
+ - Re-subscribes automatically after reconnection
116
+
117
+ #### `unsubscribeFromChannel(channel: string): void`
118
+
119
+ Unsubscribe from a tracked channel.
120
+
121
+ ```typescript
122
+ tracker.unsubscribeFromChannel('general');
123
+ ```
124
+
125
+ #### `getIntendedChannels(): Set<string>`
126
+
127
+ Get all channels the service intends to stay subscribed to.
128
+
129
+ ```typescript
130
+ const channels = tracker.getIntendedChannels();
131
+ console.log('Tracking channels:', Array.from(channels));
132
+ ```
133
+
134
+ ### Notification Channels
135
+
136
+ #### `getNotificationChannels(): void`
137
+
138
+ Request list of all notification channels.
139
+
140
+ ```typescript
141
+ tracker.getNotificationChannels();
142
+ ```
143
+
144
+ #### `getTodaysNotificationChannels(): void`
145
+
146
+ Request list of today's notification channels only.
147
+
148
+ ```typescript
149
+ tracker.getTodaysNotificationChannels();
150
+ ```
151
+
152
+ #### `subscribeToNotificationChannel(channel: string, options?: any, user?: any): void`
153
+
154
+ Subscribe to a persistent notification channel.
155
+
156
+ ```typescript
157
+ tracker.subscribeToNotificationChannel('alerts', {
158
+ limit: 50,
159
+ since: new Date().toISOString()
160
+ }, { id: 'user123' });
161
+ ```
162
+
163
+ #### `unsubscribeFromNotificationChannel(channel: string): void`
164
+
165
+ Unsubscribe from a notification channel.
166
+
167
+ ```typescript
168
+ tracker.unsubscribeFromNotificationChannel('alerts');
169
+ ```
170
+
171
+ #### `sendNotification(channel: string, content: any): void`
172
+
173
+ Send a notification to a channel.
174
+
175
+ ```typescript
176
+ tracker.sendNotification('alerts', {
177
+ title: 'New Message',
178
+ body: 'You have a new message',
179
+ priority: 'high'
180
+ });
181
+ ```
182
+
183
+ #### `createNotificationChannel(channel: string): void`
184
+
185
+ Create a new notification channel.
186
+
187
+ ```typescript
188
+ tracker.createNotificationChannel('system-alerts');
189
+ ```
190
+
191
+ ### State Accessors
192
+
193
+ #### `getLastSeen(channel: string): number`
194
+
195
+ Get the last seen message ID for a channel.
196
+
197
+ ```typescript
198
+ const lastId = tracker.getLastSeen('chat');
199
+ console.log('Last seen message ID:', lastId);
200
+ ```
201
+
202
+ #### `getExpectedSequence(channel: string): number`
203
+
204
+ Get the expected next message ID for gap detection.
205
+
206
+ ```typescript
207
+ const expected = tracker.getExpectedSequence('chat');
208
+ console.log('Expected next message ID:', expected);
209
+ ```
210
+
211
+ #### `getGapCount(channel: string): number`
212
+
213
+ Get the number of detected gaps in a channel.
214
+
215
+ ```typescript
216
+ const gaps = tracker.getGapCount('chat');
217
+ if (gaps > 0) {
218
+ console.warn(`Detected ${gaps} message gaps in channel ${channel}`);
219
+ }
220
+ ```
221
+
222
+ #### `isInReplayMode(channel: string): boolean`
223
+
224
+ Check if a channel is currently in replay mode.
225
+
226
+ ```typescript
227
+ if (tracker.isInReplayMode('chat')) {
228
+ console.log('Replaying missed messages...');
229
+ }
230
+ ```
231
+
232
+ #### `getMessages(): Observable<any>`
233
+
234
+ Observable emitting all tracked messages.
235
+
236
+ ```typescript
237
+ tracker.messages$.subscribe(message => {
238
+ console.log('Tracked message:', message);
239
+ });
240
+ ```
241
+
242
+ ### Utility Methods
243
+
244
+ #### `clearState(): void`
245
+
246
+ Clear all tracking state (useful for debugging or manual reset).
247
+
248
+ ```typescript
249
+ tracker.clearState();
250
+ ```
251
+
252
+ #### `persistLastSeen(): void`
253
+
254
+ Manually persist last-seen IDs to sessionStorage.
255
+
256
+ ```typescript
257
+ tracker.persistLastSeen();
258
+ ```
259
+
260
+ ## Advanced Features
261
+
262
+ ### Gap Detection and Recovery
263
+
264
+ The service automatically detects when messages are missing and can request replay:
265
+
266
+ ```typescript
267
+ // Automatic gap detection
268
+ // When a gap is detected (e.g., expected ID 5 but received ID 7):
269
+ // 1. Gap count is incremented
270
+ // 2. If gap threshold exceeded (10 messages), UI is notified
271
+ // 3. Service attempts to recover missed messages on reconnect
272
+
273
+ // Monitor gap counts
274
+ setInterval(() => {
275
+ const channels = tracker.getIntendedChannels();
276
+ channels.forEach(channel => {
277
+ const gaps = tracker.getGapCount(channel);
278
+ if (gaps > 0) {
279
+ console.warn(`Channel ${channel} has ${gaps} message gaps`);
280
+ }
281
+ });
282
+ }, 5000);
283
+ ```
284
+
285
+ ### Batch Acknowledgments
286
+
287
+ Messages are acknowledged in batches for efficiency:
288
+
289
+ ```typescript
290
+ // Automatic batch acknowledgment every 5 seconds
291
+ // No manual intervention needed
292
+
293
+ // Manual acknowledgment (if needed)
294
+ tracker.sendBatchAck('chat');
295
+ ```
296
+
297
+ ### Reconnection Handling
298
+
299
+ Automatic re-subscription with last-seen tracking:
300
+
301
+ ```typescript
302
+ // When WebSocket reconnects:
303
+ // 1. All intended channels are re-subscribed
304
+ // 2. Last-seen IDs are sent to server
305
+ // 3. Server replays missed messages
306
+ // 4. Gap detection resumes
307
+
308
+ // This happens automatically - no code needed
309
+ ```
310
+
311
+ ### Persistent Tracking
312
+
313
+ Intended channels survive page refreshes:
314
+
315
+ ```typescript
316
+ // Channels are persisted to sessionStorage automatically
317
+ // On page load, service restores intended channels:
318
+
319
+ // Example flow:
320
+ // 1. User subscribes to 'chat' and 'alerts'
321
+ // 2. Page is refreshed
322
+ // 3. Service restores intended channels from sessionStorage
323
+ // 4. When WebSocket connects, auto-subscribes to restored channels
324
+ ```
325
+
326
+ ## Complete Example: Chat Application
327
+
328
+ ```typescript
329
+ import { Component, inject, OnDestroy } from '@angular/core';
330
+ import { MessageTrackerService, WebSocketManagerService } from 'http-request-manager';
331
+ import { Subscription } from 'rxjs';
332
+
333
+ interface ChatMessage {
334
+ id: number;
335
+ channel: string;
336
+ user: string;
337
+ content: string;
338
+ timestamp: string;
339
+ }
340
+
341
+ @Component({
342
+ selector: 'app-chat-room',
343
+ template: `
344
+ <div class="chat-room">
345
+ <div class="channel-selector">
346
+ <button *ngFor="let channel of channels"
347
+ [class.active]="currentChannel === channel"
348
+ (click)="switchChannel(channel)">
349
+ {{ channel }}
350
+ <span class="unread" *ngIf="getUnreadCount(channel) > 0">
351
+ {{ getUnreadCount(channel) }}
352
+ </span>
353
+ </button>
354
+ </div>
355
+
356
+ <div class="messages">
357
+ <div *ngFor="let message of messages" class="message">
358
+ <div class="message-header">
359
+ <span class="user">{{ message.user }}</span>
360
+ <span class="time">{{ message.timestamp | date:'short' }}</span>
361
+ </div>
362
+ <div class="message-content">{{ message.content }}</div>
363
+ </div>
364
+ </div>
365
+
366
+ <div class="input-area">
367
+ <input [(ngModel)]="newMessage"
368
+ (keyup.enter)="sendMessage()"
369
+ placeholder="Type a message...">
370
+ <button (click)="sendMessage()">Send</button>
371
+ </div>
372
+
373
+ <div class="connection-status" *ngIf="!isConnected">
374
+ ⚠️ Disconnected - Reconnecting...
375
+ </div>
376
+ </div>
377
+ `,
378
+ styles: [`
379
+ .chat-room { display: flex; flex-direction: column; height: 100%; }
380
+ .channel-selector { display: flex; gap: 8px; padding: 8px; }
381
+ .messages { flex: 1; overflow-y: auto; padding: 16px; }
382
+ .message { margin-bottom: 16px; }
383
+ .message-header { display: flex; justify-content: space-between; margin-bottom: 4px; }
384
+ .user { font-weight: bold; }
385
+ .time { color: #666; font-size: 0.8em; }
386
+ .input-area { display: flex; gap: 8px; padding: 16px; }
387
+ .input-area input { flex: 1; padding: 8px; }
388
+ .connection-status { background: #fff3cd; padding: 8px; text-align: center; }
389
+ .unread { background: #dc3545; color: white; border-radius: 50%; padding: 2px 6px; font-size: 0.7em; }
390
+ `]
391
+ })
392
+ export class ChatRoomComponent implements OnDestroy {
393
+ private tracker = inject(MessageTrackerService);
394
+ private wsManager = inject(WebSocketManagerService);
395
+
396
+ channels = ['general', 'random', 'announcements'];
397
+ currentChannel = 'general';
398
+ messages: ChatMessage[] = [];
399
+ newMessage = '';
400
+ isConnected = true;
401
+
402
+ private messagesSubscription: Subscription;
403
+ private connectionSubscription: Subscription;
404
+
405
+ constructor() {
406
+ // Subscribe to tracked messages
407
+ this.messagesSubscription = this.tracker.messages$.subscribe(message => {
408
+ if (message && message.channel === this.currentChannel) {
409
+ this.messages.push(message);
410
+ }
411
+ });
412
+
413
+ // Monitor connection status
414
+ this.connectionSubscription = this.wsManager.connectionStatus$.subscribe(connected => {
415
+ this.isConnected = connected;
416
+ });
417
+
418
+ // Initialize WebSocket connection
419
+ this.wsManager.connect({
420
+ wsServer: 'ws://localhost:8080',
421
+ id: 'chat',
422
+ user: { id: 'user123', name: 'John Doe' }
423
+ }, 'jwt-token');
424
+
425
+ // Subscribe to channels with tracking
426
+ this.channels.forEach(channel => {
427
+ this.tracker.subscribeToChannel(channel);
428
+ });
429
+ }
430
+
431
+ switchChannel(channel: string) {
432
+ this.currentChannel = channel;
433
+ // Load messages for this channel
434
+ }
435
+
436
+ sendMessage() {
437
+ if (!this.newMessage.trim()) return;
438
+
439
+ this.wsManager.sendChannelMessage(this.currentChannel, {
440
+ type: 'CHAT_MESSAGE',
441
+ content: this.newMessage,
442
+ timestamp: new Date().toISOString()
443
+ });
444
+
445
+ this.newMessage = '';
446
+ }
447
+
448
+ getUnreadCount(channel: string): number {
449
+ const lastSeen = this.tracker.getLastSeen(channel);
450
+ const expected = this.tracker.getExpectedSequence(channel);
451
+ return Math.max(0, expected - lastSeen - 1);
452
+ }
453
+
454
+ ngOnDestroy() {
455
+ this.messagesSubscription?.unsubscribe();
456
+ this.connectionSubscription?.unsubscribe();
457
+ }
458
+ }
459
+ ```
460
+
461
+ ## Troubleshooting
462
+
463
+ ### Messages Not Tracked
464
+
465
+ **Problem**: Messages not appearing in `messages$` observable
466
+
467
+ **Solution**: Ensure WebSocket connection is active and you're subscribed to channels
468
+
469
+ ```typescript
470
+ // Check connection
471
+ wsManager.connectionStatus$.subscribe(connected => {
472
+ if (!connected) {
473
+ console.warn('WebSocket not connected');
474
+ }
475
+ });
476
+
477
+ // Ensure subscription
478
+ tracker.subscribeToChannel('your-channel');
479
+ ```
480
+
481
+ ### Gaps Not Detected
482
+
483
+ **Problem**: Missing messages not detected
484
+
485
+ **Solution**: Ensure messages have proper ID structure
486
+
487
+ ```typescript
488
+ // Messages should have numeric IDs
489
+ {
490
+ id: 123, // ✅ Required for tracking
491
+ channel: 'chat',
492
+ content: 'Hello'
493
+ }
494
+ ```
495
+
496
+ ### Channels Not Restored After Refresh
497
+
498
+ **Problem**: Intended channels not persisted
499
+
500
+ **Solution**: Check sessionStorage permissions and browser settings
501
+
502
+ ```typescript
503
+ // Check if sessionStorage is available
504
+ try {
505
+ sessionStorage.setItem('test', 'test');
506
+ sessionStorage.removeItem('test');
507
+ console.log('sessionStorage available');
508
+ } catch (e) {
509
+ console.error('sessionStorage not available');
510
+ }
511
+ ```
512
+
513
+ ## Related Documentation
514
+
515
+ - [Message Tracker Signals Service](./MESSAGE_TRACKER_SIGNALS_README.md) - Signal-based version for Angular 19+
516
+ - [WebSocket Manager Service](./WS_MANAGER_README.md) - Underlying WebSocket connection management
517
+ - [Advanced WebSocket Guide](./ADVANCED_WEBSOCKET.md) - Channel architecture and patterns
518
+ - [WebSocket Message Service](./WEBSOCKET_MESSAGE_SERVICE.md) - Type-safe message sending