http-request-manager 18.15.33 → 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 (300) hide show
  1. package/TEST_COVERAGE_SUMMARY.md +458 -0
  2. package/ng-package.json +8 -0
  3. package/package.json +4 -13
  4. package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
  5. package/src/docs/ARCHITECTURE.md +633 -0
  6. package/src/docs/BATCH_REQUEST_README.md +467 -0
  7. package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
  8. package/src/docs/DATABASE_README.md +1195 -0
  9. package/src/docs/ENCRYPTION_README.md +403 -0
  10. package/src/docs/HTTP_MANAGER_README.md +628 -0
  11. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
  12. package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
  13. package/src/docs/INTERCEPTOR_README.md +549 -0
  14. package/src/docs/LOCAL_STORAGE_README.md +1056 -0
  15. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
  16. package/src/docs/LOGGER_README.md +310 -0
  17. package/src/docs/MESSAGE_TRACKER_README.md +518 -0
  18. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
  19. package/src/docs/MODELS_README.md +1264 -0
  20. package/src/docs/SIGNAL_SERVICES_README.md +238 -0
  21. package/src/docs/SQL_DIXIE_README.md +574 -0
  22. package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
  23. package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
  24. package/src/docs/UPLOAD_REQUEST_README.md +324 -0
  25. package/src/docs/UTILS_README.md +1604 -0
  26. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
  27. package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
  28. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
  29. package/src/docs/WS_MANAGER_README.md +613 -0
  30. package/src/lib/http-request-manager.module.ts +147 -0
  31. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
  32. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  33. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
  34. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
  35. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  36. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
  37. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  38. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  39. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
  40. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  41. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  42. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
  43. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
  44. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
  45. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
  46. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
  65. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  66. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  67. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  68. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  76. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  77. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  78. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  79. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  84. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
  85. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
  86. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
  87. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
  88. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  89. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
  90. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
  91. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
  92. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  93. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  94. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
  121. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  122. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  123. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  124. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  143. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  144. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
  145. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  146. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  148. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
  149. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
  150. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
  151. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
  152. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
  153. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
  154. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
  155. package/src/lib/index.ts +3 -0
  156. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  157. package/src/lib/interceptors/index.ts +6 -0
  158. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  159. package/src/lib/interceptors/models/index.ts +2 -0
  160. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  161. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  162. package/src/lib/interceptors/request-header.interceptor.ts +56 -0
  163. package/src/lib/message-display/README.md +509 -0
  164. package/src/lib/message-display/index.ts +4 -0
  165. package/src/lib/message-display/models/action.model.ts +27 -0
  166. package/src/lib/message-display/models/communication-message.model.ts +77 -0
  167. package/src/lib/message-display/models/display-config.model.ts +35 -0
  168. package/src/lib/message-display/models/display-rule.interface.ts +28 -0
  169. package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
  170. package/src/lib/message-display/models/index.ts +6 -0
  171. package/src/lib/message-display/models/slide.model.ts +24 -0
  172. package/src/lib/message-display/rules/default-display-rules.ts +35 -0
  173. package/src/lib/message-display/services/message-display-router.service.ts +63 -0
  174. package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
  175. package/src/lib/models/batch-options.model.ts +33 -0
  176. package/src/lib/models/batch-progress.model.ts +19 -0
  177. package/src/lib/models/batch-request-state.model.ts +40 -0
  178. package/src/lib/models/batch-result.model.ts +30 -0
  179. package/src/lib/models/config-http-options.model.ts +45 -0
  180. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  181. package/src/lib/models/config-options.model.ts +27 -0
  182. package/src/lib/models/config-token.model.ts +9 -0
  183. package/src/lib/models/data-type.enum.ts +5 -0
  184. package/src/lib/models/database-storage.model.ts +24 -0
  185. package/src/lib/models/index.ts +16 -0
  186. package/src/lib/models/retry-options.model.ts +22 -0
  187. package/src/lib/models/upload-validation-error.model.ts +46 -0
  188. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
  189. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
  190. package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
  191. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
  192. package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
  193. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
  194. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
  195. package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
  196. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
  197. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
  198. package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
  199. package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
  200. package/src/lib/services/database-manager-service/index.ts +4 -0
  201. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  202. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  203. package/src/lib/services/index.ts +20 -0
  204. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  205. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  206. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
  207. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  208. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
  209. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  210. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  211. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  212. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  213. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  214. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  215. package/src/lib/services/request-manager-services/README.md +282 -0
  216. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
  217. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
  218. package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
  219. package/src/lib/services/request-manager-services/index.ts +8 -0
  220. package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
  221. package/src/lib/services/request-manager-services/request.service.ts +435 -0
  222. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  223. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  224. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  225. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  226. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
  227. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
  228. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
  229. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  230. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
  231. package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
  232. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
  233. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
  234. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
  235. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
  236. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
  237. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
  238. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
  239. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
  240. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  241. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
  242. package/src/lib/services/store-state-manager-service/index.ts +4 -0
  243. package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
  244. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
  245. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  246. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
  247. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
  248. package/src/lib/services/utils/app.service.spec.ts +25 -0
  249. package/src/lib/services/utils/app.service.ts +21 -0
  250. package/src/lib/services/utils/encryption/README.md +79 -0
  251. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  252. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  253. package/src/lib/services/utils/encryption/index.ts +5 -0
  254. package/src/lib/services/utils/encryption/random.ts +81 -0
  255. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
  256. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  257. package/src/lib/services/utils/headers.service.ts +18 -0
  258. package/src/lib/services/utils/index.ts +9 -0
  259. package/src/lib/services/utils/logger.service.ts +90 -0
  260. package/src/lib/services/utils/models/index.ts +4 -0
  261. package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
  262. package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
  263. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
  264. package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
  265. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  266. package/src/lib/services/utils/object-merger.service.ts +78 -0
  267. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  268. package/src/lib/services/utils/path-query.service.ts +69 -0
  269. package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
  270. package/src/lib/services/utils/random-color.utils.ts +83 -0
  271. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  272. package/src/lib/services/utils/utils.service.ts +192 -0
  273. package/src/lib/services/ws-manager-service/index.ts +13 -0
  274. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
  275. package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
  276. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
  277. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  278. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
  279. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
  280. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  281. package/src/lib/services/ws-manager-service/models/index.ts +10 -0
  282. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
  283. package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
  284. package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
  285. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  286. package/src/lib/services/ws-manager-service/services/index.ts +4 -0
  287. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
  288. package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
  289. package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
  290. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
  291. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
  292. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
  293. package/src/public-api.ts +19 -0
  294. package/tsconfig.lib.json +34 -0
  295. package/tsconfig.lib.prod.json +10 -0
  296. package/tsconfig.spec.json +14 -0
  297. package/fesm2022/http-request-manager.mjs +0 -13688
  298. package/fesm2022/http-request-manager.mjs.map +0 -1
  299. package/http-request-manager-18.15.33.tgz +0 -0
  300. package/types/http-request-manager.d.ts +0 -3968
@@ -0,0 +1,563 @@
1
+ <!-- markdownlint-disable MD031 MD033 MD060 -->
2
+
3
+ # Message Tracker Signals Service
4
+
5
+ The `MessageTrackerSignalsService` provides signal-based message tracking, channel metadata, and user presence for real-time Angular applications.
6
+
7
+ ## Overview
8
+
9
+ This service is a **signal-based wrapper** around the WebSocket message tracking system, designed for Angular 19+ applications that want reactive message tracking with automatic updates.
10
+
11
+ ### Key Features
12
+
13
+ - ✅ **Signal-Based Tracking** - Messages, metadata, presence as signals
14
+ - ✅ **Computed Statistics** - Message counts, active channels as computed signals
15
+ - ✅ **Automatic Updates** - Reacts to WebSocket messages automatically
16
+ - ✅ **Channel Metadata** - Track message counts, last messages per channel
17
+ - ✅ **User Presence** - Track users in channels
18
+ - ✅ **Observable Interop** - Provides both signals and observables
19
+
20
+ ## Installation
21
+
22
+ ```typescript
23
+ import { MessageTrackerSignalsService } from 'http-request-manager';
24
+ ```
25
+
26
+ ## Basic Usage
27
+
28
+ ### Message Tracking Example
29
+
30
+ ```typescript
31
+ import { Component, inject, computed, effect } from '@angular/core';
32
+ import { MessageTrackerSignalsService } from 'http-request-manager';
33
+
34
+ @Component({
35
+ selector: 'app-message-tracker',
36
+ template: `
37
+ <div class="tracker">
38
+ <h2>Message Tracker</h2>
39
+
40
+ <div class="stats">
41
+ <p>Total Messages: {{ totalMessages() }}</p>
42
+ <p>Active Channels: {{ activeChannels().length }}</p>
43
+ </div>
44
+
45
+ <div class="channels">
46
+ <h3>Channels</h3>
47
+ @for (channel of activeChannels(); track channel) {
48
+ <div class="channel">
49
+ <h4>{{ channel }}</h4>
50
+ <p>Messages: {{ getMessageCount(channel) }}</p>
51
+ <p>Last: {{ getLastMessagePreview(channel) }}</p>
52
+ </div>
53
+ }
54
+ </div>
55
+
56
+ <div class="latest-message">
57
+ <h3>Latest Message</h3>
58
+ @if (latestMessage()) {
59
+ <div class="message">
60
+ <strong>{{ latestMessage().user }}</strong>
61
+ <span>{{ latestMessage().content }}</span>
62
+ </div>
63
+ }
64
+ </div>
65
+ </div>
66
+ `
67
+ })
68
+ export class MessageTrackerComponent {
69
+ private tracker = inject(MessageTrackerSignalsService);
70
+
71
+ // Signals
72
+ messages = this.tracker.messages;
73
+ channelMetadata = this.tracker.channelMetadata;
74
+ usersInChannels = this.tracker.usersInChannels;
75
+
76
+ // Computed signals
77
+ totalMessages = this.tracker.messageCount;
78
+ activeChannels = this.tracker.activeChannels;
79
+
80
+ latestMessage = computed(() => this.messages());
81
+
82
+ constructor() {
83
+ // Subscribe to a channel
84
+ this.tracker.subscribeToChannel('general');
85
+
86
+ // React to new messages
87
+ effect(() => {
88
+ const message = this.messages();
89
+ if (message) {
90
+ console.log('New message:', message);
91
+ }
92
+ });
93
+ }
94
+
95
+ getMessageCount(channel: string): number {
96
+ return this.tracker.getMessageCount(channel);
97
+ }
98
+
99
+ getLastMessagePreview(channel: string): string {
100
+ const last = this.tracker.getLastMessage(channel);
101
+ return last ? last.content : 'No messages';
102
+ }
103
+
104
+ getUsersInChannel(channel: string): string[] {
105
+ return this.tracker.getUsersInChannel(channel);
106
+ }
107
+ }
108
+ ```
109
+
110
+ ## API Reference
111
+
112
+ ### Message Tracking
113
+
114
+ #### `trackMessage(message: any): void`
115
+
116
+ Manually tracks a message.
117
+
118
+ ```typescript
119
+ tracker.trackMessage({
120
+ id: 'msg-1',
121
+ channel: 'general',
122
+ user: 'user123',
123
+ content: 'Hello!',
124
+ timestamp: new Date().toISOString()
125
+ });
126
+ ```
127
+
128
+ ### Channel Management
129
+
130
+ #### `subscribeToChannel(channel: string): void`
131
+
132
+ Subscribes to and tracks a channel.
133
+
134
+ ```typescript
135
+ tracker.subscribeToChannel('general');
136
+ ```
137
+
138
+ #### `unsubscribeFromChannel(channel: string): void`
139
+
140
+ Unsubscribes from and stops tracking a channel.
141
+
142
+ ```typescript
143
+ tracker.unsubscribeFromChannel('general');
144
+ ```
145
+
146
+ ### User Presence
147
+
148
+ #### `removeUserFromChannel(channel: string, user: string): void`
149
+
150
+ Removes a user from channel tracking.
151
+
152
+ ```typescript
153
+ tracker.removeUserFromChannel('general', 'user123');
154
+ ```
155
+
156
+ ### Selectors
157
+
158
+ #### `getMessageCount(channel: string): number`
159
+
160
+ Gets message count for a channel.
161
+
162
+ ```typescript
163
+ count = tracker.getMessageCount('general');
164
+ ```
165
+
166
+ #### `getLastMessage(channel: string): any`
167
+
168
+ Gets last message for a channel.
169
+
170
+ ```typescript
171
+ lastMessage = tracker.getLastMessage('general');
172
+ ```
173
+
174
+ #### `getActiveChannels(): string[]`
175
+
176
+ Gets list of active channels.
177
+
178
+ ```typescript
179
+ channels = tracker.getActiveChannels();
180
+ ```
181
+
182
+ #### `getUsersInChannel(channel: string): string[]`
183
+
184
+ Gets users in a channel.
185
+
186
+ ```typescript
187
+ users = tracker.getUsersInChannel('general');
188
+ // Returns: ['user1', 'user2', 'user3']
189
+ ```
190
+
191
+ ### Signals
192
+
193
+ #### `messages: ReadonlySignal<any>`
194
+
195
+ Latest message signal.
196
+
197
+ ```typescript
198
+ message = this.tracker.messages;
199
+ // Usage: message()
200
+ ```
201
+
202
+ #### `channelMetadata: ReadonlySignal<Map<string, any>>`
203
+
204
+ Channel metadata signal.
205
+
206
+ ```typescript
207
+ metadata = this.tracker.channelMetadata;
208
+ // Usage: metadata()
209
+ // Map structure: { channel -> { count, lastMessage, lastUpdated } }
210
+ ```
211
+
212
+ #### `usersInChannels: ReadonlySignal<Map<string, Set<string>>>`
213
+
214
+ User presence signal.
215
+
216
+ ```typescript
217
+ users = this.tracker.usersInChannels;
218
+ // Usage: users()
219
+ // Map structure: { channel -> Set<userIds> }
220
+ ```
221
+
222
+ ### Computed Signals
223
+
224
+ #### `messageCount: ComputedSignal<number>`
225
+
226
+ Total message count across all channels.
227
+
228
+ ```typescript
229
+ total = this.tracker.messageCount;
230
+ // Usage: total()
231
+ ```
232
+
233
+ #### `activeChannels: ComputedSignal<string[]>`
234
+
235
+ List of active channel names.
236
+
237
+ ```typescript
238
+ channels = this.tracker.activeChannels;
239
+ // Usage: channels()
240
+ ```
241
+
242
+ ### Observables (Interop)
243
+
244
+ #### `messages$: Observable<any>`
245
+
246
+ Messages as observable stream.
247
+
248
+ ```typescript
249
+ this.tracker.messages$.subscribe(message => {
250
+ console.log('New message:', message);
251
+ });
252
+ ```
253
+
254
+ #### `channelMetadata$: Observable<Map<string, any>>`
255
+
256
+ Channel metadata as observable.
257
+
258
+ ```typescript
259
+ this.tracker.channelMetadata$.subscribe(metadata => {
260
+ console.log('Metadata:', metadata);
261
+ });
262
+ ```
263
+
264
+ #### `usersInChannels$: Observable<Map<string, Set<string>>>`
265
+
266
+ User presence as observable.
267
+
268
+ ```typescript
269
+ this.tracker.usersInChannels$.subscribe(users => {
270
+ console.log('Users:', users);
271
+ });
272
+ ```
273
+
274
+ ## Advanced Examples
275
+
276
+ ### Real-Time Channel Statistics
277
+
278
+ ```typescript
279
+ import { Component, inject, computed, signal } from '@angular/core';
280
+ import { MessageTrackerSignalsService } from 'http-request-manager';
281
+
282
+ interface ChannelStats {
283
+ name: string;
284
+ messageCount: number;
285
+ userCount: number;
286
+ lastMessage?: any;
287
+ lastActivity: string;
288
+ }
289
+
290
+ @Component({
291
+ selector: 'app-channel-stats',
292
+ template: `
293
+ <div class="stats-grid">
294
+ @for (stat of channelStats(); track stat.name) {
295
+ <div class="stat-card">
296
+ <h3>{{ stat.name }}</h3>
297
+ <div class="metrics">
298
+ <div class="metric">
299
+ <span class="label">Messages</span>
300
+ <span class="value">{{ stat.messageCount }}</span>
301
+ </div>
302
+ <div class="metric">
303
+ <span class="label">Users</span>
304
+ <span class="value">{{ stat.userCount }}</span>
305
+ </div>
306
+ </div>
307
+ <div class="last-activity">
308
+ Last activity: {{ stat.lastActivity | date:'short' }}
309
+ </div>
310
+ </div>
311
+ }
312
+ </div>
313
+ `
314
+ })
315
+ export class ChannelStatsComponent {
316
+ private tracker = inject(MessageTrackerSignalsService);
317
+
318
+ channelStats = computed(() => {
319
+ const channels = this.tracker.activeChannels();
320
+ const metadata = this.tracker.channelMetadata();
321
+ const users = this.tracker.usersInChannels();
322
+
323
+ return channels.map(channel => ({
324
+ name: channel,
325
+ messageCount: this.tracker.getMessageCount(channel),
326
+ userCount: this.tracker.getUsersInChannel(channel).length,
327
+ lastMessage: this.tracker.getLastMessage(channel),
328
+ lastActivity: metadata.get(channel)?.lastUpdated || Date.now()
329
+ }));
330
+ });
331
+ }
332
+ ```
333
+
334
+ ### User Presence Tracker
335
+
336
+ ```typescript
337
+ import { Component, inject, computed } from '@angular/core';
338
+ import { MessageTrackerSignalsService } from 'http-request-manager';
339
+
340
+ @Component({
341
+ selector: 'app-user-presence',
342
+ template: `
343
+ <div class="presence">
344
+ <h3>Channel Users</h3>
345
+
346
+ <select [value]="selectedChannel()" (change)="selectedChannel.set($any($event.target).value)">
347
+ @for (channel of channels(); track channel) {
348
+ <option [value]="channel">{{ channel }}</option>
349
+ }
350
+ </select>
351
+
352
+ <div class="users-list">
353
+ <h4>Users in {{ selectedChannel() }} ({{ userCount() }})</h4>
354
+ <ul>
355
+ @for (user of users(); track user) {
356
+ <li>
357
+ <span class="user-status online"></span>
358
+ {{ user }}
359
+ </li>
360
+ }
361
+ </ul>
362
+ </div>
363
+ </div>
364
+ `
365
+ })
366
+ export class UserPresenceComponent {
367
+ private tracker = inject(MessageTrackerSignalsService);
368
+
369
+ selectedChannel = signal('general');
370
+ channels = this.tracker.activeChannels;
371
+
372
+ users = computed(() =>
373
+ this.tracker.getUsersInChannel(this.selectedChannel())
374
+ );
375
+
376
+ userCount = computed(() => this.users().length);
377
+ }
378
+ ```
379
+
380
+ ### Message Activity Dashboard
381
+
382
+ ```typescript
383
+ import { Component, inject, computed } from '@angular/core';
384
+ import { MessageTrackerSignalsService } from 'http-request-manager';
385
+
386
+ @Component({
387
+ selector: 'app-activity-dashboard',
388
+ template: `
389
+ <div class="dashboard">
390
+ <header>
391
+ <h1>Message Activity Dashboard</h1>
392
+ <div class="summary">
393
+ <span>Total: {{ totalMessages() }}</span>
394
+ <span>Channels: {{ channelsCount() }}</span>
395
+ <span>Users: {{ totalUsers() }}</span>
396
+ </div>
397
+ </header>
398
+
399
+ <div class="activity-feed">
400
+ <h2>Recent Activity</h2>
401
+ @for (activity of recentActivity(); track activity.id) {
402
+ <div class="activity-item">
403
+ <span class="channel">{{ activity.channel }}</span>
404
+ <span class="user">{{ activity.user }}</span>
405
+ <span class="content">{{ activity.content }}</span>
406
+ <span class="time">{{ activity.timestamp | date:'short' }}</span>
407
+ </div>
408
+ }
409
+ </div>
410
+
411
+ <div class="channel-activity">
412
+ <h2>Channel Activity</h2>
413
+ @for (stat of channelActivity(); track stat.channel) {
414
+ <div class="channel-stat">
415
+ <span class="name">{{ stat.channel }}</span>
416
+ <span class="count">{{ stat.messages }} messages</span>
417
+ <progress [value]="stat.percentage" max="100"></progress>
418
+ </div>
419
+ }
420
+ </div>
421
+ </div>
422
+ `
423
+ })
424
+ export class ActivityDashboardComponent {
425
+ private tracker = inject(MessageTrackerSignalsService);
426
+
427
+ messages = this.tracker.messages;
428
+ metadata = this.tracker.channelMetadata;
429
+ totalMessages = this.tracker.messageCount;
430
+ channels = this.tracker.activeChannels;
431
+
432
+ channelsCount = computed(() => this.channels().length);
433
+
434
+ totalUsers = computed(() => {
435
+ const users = this.tracker.usersInChannels();
436
+ const allUsers = new Set<string>();
437
+ users.forEach(userSet => userSet.forEach(user => allUsers.add(user)));
438
+ return allUsers.size;
439
+ });
440
+
441
+ recentActivity = computed(() => {
442
+ // In a real app, maintain a history array
443
+ const message = this.messages();
444
+ return message ? [message] : [];
445
+ });
446
+
447
+ channelActivity = computed(() => {
448
+ const channels = this.channels();
449
+ const total = this.totalMessages() || 1;
450
+
451
+ return channels.map(channel => ({
452
+ channel,
453
+ messages: this.tracker.getMessageCount(channel),
454
+ percentage: (this.tracker.getMessageCount(channel) / total) * 100
455
+ }));
456
+ });
457
+ }
458
+ ```
459
+
460
+ ## Comparison with Non-Signal Version
461
+
462
+ | Feature | Non-Signal Version | Signal Version |
463
+ |---------|-------------------|----------------|
464
+ | **Message Tracking** | BehaviorSubject | Angular Signals |
465
+ | **Metadata** | BehaviorSubject<Map> | Signal<Map> |
466
+ | **User Presence** | BehaviorSubject<Map> | Signal<Map> |
467
+ | **Selectors** | Methods returning values | Computed signals |
468
+ | **Statistics** | Manual calculation | Computed signals |
469
+ | **Updates** | Manual `.next()` calls | Automatic |
470
+ | **Angular Version** | 14-18 | 19+ |
471
+
472
+ ## Best Practices
473
+
474
+ 1. **Use Computed Signals for Derived State**
475
+ ```typescript
476
+ // ✅ Good
477
+ messageCount = computed(() => {
478
+ const metadata = this.tracker.channelMetadata();
479
+ let count = 0;
480
+ metadata.forEach(data => count += data.count);
481
+ return count;
482
+ });
483
+
484
+ // ❌ Avoid
485
+ getMessageCount() {
486
+ // Manual calculation in method
487
+ }
488
+ ```
489
+
490
+ 2. **Leverage Automatic Tracking**
491
+ ```typescript
492
+ // ✅ Good - Automatic via effect
493
+ constructor() {
494
+ effect(() => {
495
+ const message = this.tracker.messages();
496
+ if (message) {
497
+ this.handleNewMessage(message);
498
+ }
499
+ });
500
+ }
501
+
502
+ // ❌ Avoid - Manual subscription
503
+ this.tracker.messages$.subscribe(msg => {});
504
+ ```
505
+
506
+ 3. **Use Selectors for Access**
507
+ ```typescript
508
+ // ✅ Good - Use provided selectors
509
+ count = this.tracker.getMessageCount('general');
510
+ users = this.tracker.getUsersInChannel('general');
511
+
512
+ // ❌ Avoid - Direct map access
513
+ metadata = this.tracker.channelMetadata();
514
+ count = metadata.get('general')?.count;
515
+ ```
516
+
517
+ 4. **Combine with WebSocket Signals**
518
+ ```typescript
519
+ // ✅ Good - Use both services together
520
+ private wsManager = inject(WebSocketSignalsManagerService);
521
+ private tracker = inject(MessageTrackerSignalsService);
522
+
523
+ // Messages flow automatically from WS to tracker
524
+ ```
525
+
526
+ ## Troubleshooting
527
+
528
+ ### Messages Not Tracked
529
+
530
+ **Problem**: Messages signal not updating
531
+
532
+ **Solution**: Ensure WebSocket connection is active and you're subscribed to channels
533
+ ```typescript
534
+ wsManager.connect(options, token);
535
+ tracker.subscribeToChannel('your-channel');
536
+ ```
537
+
538
+ ### Metadata Not Updating
539
+
540
+ **Problem**: Channel metadata stale
541
+
542
+ **Solution**: Ensure messages are being tracked
543
+ ```typescript
544
+ // Messages should auto-track via effect
545
+ // Or manually track
546
+ tracker.trackMessage(message);
547
+ ```
548
+
549
+ ### User Presence Empty
550
+
551
+ **Problem**: No users showing in channels
552
+
553
+ **Solution**: Ensure user presence is being updated
554
+ ```typescript
555
+ // Users are tracked when messages arrive with user field
556
+ tracker.trackMessage({ user: 'user123', channel: 'general' });
557
+ ```
558
+
559
+ ## Related Documentation
560
+
561
+ - [Signal Services Index](./SIGNAL_SERVICES_README.md)
562
+ - [WebSocket Signals](./WEBSOCKET_SIGNALS_README.md)
563
+ - [Advanced WebSocket Guide](./ADVANCED_WEBSOCKET.md)