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,613 @@
1
+ # WebSocket Manager Service
2
+
3
+ The `WebSocketService` provides comprehensive WebSocket connection management with channel-based messaging, real-time communication, and notification support for Angular applications.
4
+
5
+ ## Overview
6
+
7
+ This service offers a robust WebSocket implementation with:
8
+
9
+ - **Channel-Based Messaging** - Subscribe to multiple channels for different use cases
10
+ - **Automatic Reconnection** - Handles connection states and reconnection scenarios
11
+ - **Session Management** - Automatic session ID generation and tracking
12
+ - **Broadcast Messaging** - Send messages to all subscribers or specific users
13
+ - **Notification Channels** - Dedicated notification system with date filtering
14
+ - **Connection Status Tracking** - Real-time connection status observables
15
+ - **JWT Authentication** - Secure WebSocket connections with JWT tokens
16
+
17
+ ## Installation
18
+
19
+ This service is automatically available when you import `HttpRequestManagerModule`.
20
+
21
+ ```typescript
22
+ import { HttpRequestManagerModule } from 'http-request-manager';
23
+
24
+ @NgModule({
25
+ imports: [HttpRequestManagerModule.forRoot({})]
26
+ })
27
+ export class AppModule { }
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ### Basic Connection
33
+
34
+ ```typescript
35
+ import { WebsocketService } from 'http-request-manager';
36
+ import { WSOptions } from 'http-request-manager';
37
+
38
+ @Component({
39
+ standalone: true,
40
+ providers: [WebsocketService]
41
+ })
42
+ export class MyComponent {
43
+ constructor(private wsService: WebsocketService) {}
44
+
45
+ connect() {
46
+ const options: WSOptions = {
47
+ wsServer: 'ws://localhost:8080',
48
+ id: 'my-channel',
49
+ user: { userId: 'user123', username: 'john' },
50
+ channels: ['notifications', 'updates']
51
+ };
52
+
53
+ const jwtToken = 'your-jwt-token';
54
+ this.wsService.connect(options, jwtToken);
55
+ }
56
+
57
+ disconnect() {
58
+ this.wsService.disconnect();
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Subscribing to Messages
64
+
65
+ ```typescript
66
+ ngOnInit() {
67
+ // Listen to all messages
68
+ this.wsService.messages$.subscribe(message => {
69
+ console.log('Received message:', message);
70
+ });
71
+
72
+ // Monitor connection status
73
+ this.wsService.connectionStatus$.subscribe(isConnected => {
74
+ console.log('Connected:', isConnected);
75
+ });
76
+
77
+ // Track subscribed channels
78
+ this.wsService.subscribedChannels$.subscribe(channels => {
79
+ console.log('Subscribed channels:', Array.from(channels));
80
+ });
81
+ }
82
+ ```
83
+
84
+ ## API Reference
85
+
86
+ ### Connection Methods
87
+
88
+ #### `connect(options: WSOptions, jwtToken?: string)`
89
+
90
+ Establishes a WebSocket connection.
91
+
92
+ **Parameters:**
93
+ - `options` - WebSocket connection options
94
+ - `wsServer: string` - WebSocket server URL
95
+ - `id: string` - Primary channel name
96
+ - `user: any` - User information object
97
+ - `channels?: string[]` - Additional channels to subscribe to
98
+ - `jwtToken?: string` - Optional JWT token for authentication
99
+
100
+ **Example:**
101
+ ```typescript
102
+ const options: WSOptions = {
103
+ wsServer: 'ws://localhost:8080',
104
+ id: 'main-channel',
105
+ user: { userId: '123', name: 'John' },
106
+ channels: ['notifications', 'updates']
107
+ };
108
+ this.wsService.connect(options, 'your-jwt-token');
109
+ ```
110
+
111
+ #### `disconnect()`
112
+
113
+ Closes the WebSocket connection and cleans up resources.
114
+
115
+ ```typescript
116
+ this.wsService.disconnect();
117
+ ```
118
+
119
+ ### Channel Subscription Methods
120
+
121
+ #### `subscribeToChannel(channelName: string)`
122
+
123
+ Subscribe to a specific channel.
124
+
125
+ ```typescript
126
+ this.wsService.subscribeToChannel('notifications');
127
+ ```
128
+
129
+ #### `subscribeToChannels(channelNames: string[])`
130
+
131
+ Subscribe to multiple channels at once.
132
+
133
+ ```typescript
134
+ this.wsService.subscribeToChannels(['notifications', 'updates', 'alerts']);
135
+ ```
136
+
137
+ #### `unsubscribeFromChannel(channel: string)`
138
+
139
+ Unsubscribe from a specific channel.
140
+
141
+ ```typescript
142
+ this.wsService.unsubscribeFromChannel('notifications');
143
+ ```
144
+
145
+ #### `getSubscribedChannels(): Set<string>`
146
+
147
+ Get the currently subscribed channels.
148
+
149
+ ```typescript
150
+ const channels = this.wsService.getSubscribedChannels();
151
+ console.log('Channels:', Array.from(channels));
152
+ ```
153
+
154
+ ### Messaging Methods
155
+
156
+ #### `sendBroadcast(content: any)`
157
+
158
+ Send a broadcast message to all subscribers.
159
+
160
+ ```typescript
161
+ this.wsService.sendBroadcast({ message: 'Hello everyone!', timestamp: Date.now() });
162
+ ```
163
+
164
+ #### `sendMessageInChannel(channel: string, content: any)`
165
+
166
+ Send a message to a specific channel (state manager message type).
167
+
168
+ ```typescript
169
+ this.wsService.sendMessageInChannel('notifications', {
170
+ type: 'alert',
171
+ message: 'System update available'
172
+ });
173
+ ```
174
+
175
+ #### `sendChannelMessage(channel: string, content: any)`
176
+
177
+ Send a message to a specific channel (message type, broadcasts to all subscribers).
178
+
179
+ ```typescript
180
+ this.wsService.sendChannelMessage('chat-room', {
181
+ sender: 'John',
182
+ text: 'Hello everyone!'
183
+ });
184
+ ```
185
+
186
+ #### `sendMessageToUser(user: string, content: any)`
187
+
188
+ Send a private message to a specific user.
189
+
190
+ ```typescript
191
+ this.wsService.sendMessageToUser('user123', {
192
+ message: 'Private message'
193
+ });
194
+ ```
195
+
196
+ ### Channel Management Methods
197
+
198
+ #### `createChannel(channel: string)`
199
+
200
+ Create a new channel.
201
+
202
+ ```typescript
203
+ this.wsService.createChannel('new-channel');
204
+ ```
205
+
206
+ #### `deleteChannel(channel: string)`
207
+
208
+ Delete a channel.
209
+
210
+ ```typescript
211
+ this.wsService.deleteChannel('old-channel');
212
+ ```
213
+
214
+ #### `getAllChannels()`
215
+
216
+ Request a list of all available channels.
217
+
218
+ ```typescript
219
+ this.wsService.getAllChannels();
220
+ ```
221
+
222
+ #### `getUsersInChannel(channel: string)`
223
+
224
+ Get the list of users in a specific channel.
225
+
226
+ ```typescript
227
+ this.wsService.getUsersInChannel('chat-room');
228
+ ```
229
+
230
+ ### Notification Channel Methods
231
+
232
+ Notification channels use the MES- prefix and provide advanced features like date filtering.
233
+
234
+ #### `createNotificationChannel(channel: string)`
235
+
236
+ Create a notification channel.
237
+
238
+ ```typescript
239
+ this.wsService.createNotificationChannel('MES-updates');
240
+ ```
241
+
242
+ #### `getNotificationChannels()`
243
+
244
+ Get all notification channels (in-memory).
245
+
246
+ ```typescript
247
+ this.wsService.getNotificationChannels();
248
+ ```
249
+
250
+ #### `getTodaysNotificationChannels()`
251
+
252
+ Get notification channels that have notifications posted today.
253
+
254
+ ```typescript
255
+ this.wsService.getTodaysNotificationChannels();
256
+ ```
257
+
258
+ #### `subscribeToNotificationChannel(channel: string, options?, user?)`
259
+
260
+ Subscribe to a notification channel with optional date filters.
261
+
262
+ ```typescript
263
+ this.wsService.subscribeToNotificationChannel('MES-updates', {
264
+ startEpoch: 1640995200000, // Jan 1, 2022
265
+ endEpoch: 1641081600000 // Jan 2, 2022
266
+ }, { userId: 'user123' });
267
+ ```
268
+
269
+ #### `unsubscribeFromNotificationChannel(channel: string)`
270
+
271
+ Unsubscribe from a notification channel.
272
+
273
+ ```typescript
274
+ this.wsService.unsubscribeFromNotificationChannel('MES-updates');
275
+ ```
276
+
277
+ #### `sendNotification(channel: string, content: any)`
278
+
279
+ Send a notification to a channel.
280
+
281
+ ```typescript
282
+ this.wsService.sendNotification('MES-updates', {
283
+ title: 'New Update',
284
+ message: 'Version 2.0 is now available',
285
+ priority: 'high'
286
+ });
287
+ ```
288
+
289
+ ## Observables
290
+
291
+ ### `messages$: Observable<any>`
292
+
293
+ Observable that emits all incoming WebSocket messages.
294
+
295
+ ```typescript
296
+ this.wsService.messages$.subscribe(message => {
297
+ console.log('New message:', message);
298
+ });
299
+ ```
300
+
301
+ ### `connectionStatus$: Observable<boolean>`
302
+
303
+ Observable that emits the current connection status (true = connected, false = disconnected).
304
+
305
+ ```typescript
306
+ this.wsService.connectionStatus$.subscribe(connected => {
307
+ this.isConnected = connected;
308
+ });
309
+ ```
310
+
311
+ ### `subscribedChannels$: Observable<Set<string>>`
312
+
313
+ Observable that emits the set of currently subscribed channels.
314
+
315
+ ```typescript
316
+ this.wsService.subscribedChannels$.subscribe(channels => {
317
+ this.currentChannels = Array.from(channels);
318
+ });
319
+ ```
320
+
321
+ ## Session Management
322
+
323
+ The service automatically manages WebSocket sessions using sessionStorage:
324
+
325
+ - A unique session ID is generated and stored in `WSID` key
326
+ - The session ID is included in the WebSocket URL as a query parameter
327
+ - The session persists across page refreshes
328
+
329
+ ```typescript
330
+ // Session ID is automatically included in the connection URL
331
+ // Format: ws://server?token=xxx&sessionId=xxx
332
+ ```
333
+
334
+ ## JWT Authentication
335
+
336
+ You can secure your WebSocket connection with JWT tokens:
337
+
338
+ ```typescript
339
+ const options: WSOptions = {
340
+ wsServer: 'ws://localhost:8080',
341
+ id: 'main-channel',
342
+ user: { userId: 'user123' }
343
+ };
344
+
345
+ const jwtToken = 'your-jwt-token';
346
+ this.wsService.connect(options, jwtToken);
347
+ ```
348
+
349
+ ### JWT Validation
350
+
351
+ The service handles JWT validation errors:
352
+
353
+ - If JWT validation fails, the connection is closed
354
+ - An error message is emitted via `messages$` observable
355
+ - The connection status is set to false
356
+
357
+ ```typescript
358
+ this.wsService.messages$.subscribe(message => {
359
+ if (message?.error === 'JWT_INVALID') {
360
+ console.error('Authentication failed. Please login again.');
361
+ // Redirect to login or refresh token
362
+ }
363
+ });
364
+ ```
365
+
366
+ ## Connection State Handling
367
+
368
+ The service intelligently handles different connection states:
369
+
370
+ ### Already Open
371
+ ```typescript
372
+ // If connection is already open, connect() returns without action
373
+ this.wsService.connect(options, token); // No effect if already connected
374
+ ```
375
+
376
+ ### Connecting
377
+ ```typescript
378
+ // If connection is in progress, connect() returns without action
379
+ // The existing connection process continues
380
+ ```
381
+
382
+ ### Closing/Closed
383
+ ```typescript
384
+ // If connection is closing or closed, the old socket is cleaned up
385
+ // and a new connection is established
386
+ ```
387
+
388
+ ## Reconnection Behavior
389
+
390
+ The service tracks the last connection options and supports reconnection scenarios:
391
+
392
+ ```typescript
393
+ // Initial connection
394
+ this.wsService.connect(options, token);
395
+
396
+ // After disconnection, you can reconnect
397
+ this.wsService.connect(options, token);
398
+
399
+ // The service will:
400
+ // 1. Clean up the old socket
401
+ // 2. Establish a new connection
402
+ // 3. Subscribe to previously subscribed channels
403
+ ```
404
+
405
+ ## Message Types
406
+
407
+ The service supports several message types:
408
+
409
+ | Message Type | Description |
410
+ |--------------|-------------|
411
+ | `subscribe` | Subscribe to a channel |
412
+ | `unsubscribe` | Unsubscribe from a channel |
413
+ | `broadcast` | Send message to all subscribers |
414
+ | `stateMangerMessage` | Send message to a channel (state manager) |
415
+ | `message` | Send message to a channel (broadcast to all) |
416
+ | `userMessage` | Send private message to a user |
417
+ | `getChannels` | Request list of all channels |
418
+ | `createChannel` | Create a new channel |
419
+ | `deleteChannel` | Delete a channel |
420
+ | `getUsers` | Get users in a channel |
421
+ | `createNotificationChannel` | Create a notification channel |
422
+ | `getNotificationChannels` | Get notification channels |
423
+ | `getTodaysNotificationChannels` | Get today's notification channels |
424
+ | `subscribeNotifications` | Subscribe to notification channel |
425
+ | `unsubscribeNotifications` | Unsubscribe from notification channel |
426
+ | `notification` | Send notification |
427
+
428
+ ## Best Practices
429
+
430
+ ### 1. Clean Up Connections
431
+
432
+ Always disconnect from WebSocket when the component is destroyed:
433
+
434
+ ```typescript
435
+ ngOnDestroy() {
436
+ this.wsService.disconnect();
437
+ }
438
+ ```
439
+
440
+ ### 2. Handle Connection Errors
441
+
442
+ Monitor connection status and handle errors:
443
+
444
+ ```typescript
445
+ this.wsService.connectionStatus$.subscribe(connected => {
446
+ if (!connected) {
447
+ console.warn('WebSocket disconnected. Attempting to reconnect...');
448
+ // Implement reconnection logic
449
+ }
450
+ });
451
+ ```
452
+
453
+ ### 3. Use Channel-Based Messaging
454
+
455
+ Organize your communication into logical channels:
456
+
457
+ ```typescript
458
+ // Different channels for different use cases
459
+ this.wsService.subscribeToChannel('notifications'); // System notifications
460
+ this.wsService.subscribeToChannel('chat-room'); // Chat messages
461
+ this.wsService.subscribeToChannel('updates'); // Real-time updates
462
+ ```
463
+
464
+ ### 4. Implement Error Handling
465
+
466
+ Handle potential errors in message processing:
467
+
468
+ ```typescript
469
+ this.wsService.messages$.pipe(
470
+ catchError(error => {
471
+ console.error('Message processing error:', error);
472
+ return EMPTY;
473
+ })
474
+ ).subscribe(message => {
475
+ // Process message
476
+ });
477
+ ```
478
+
479
+ ### 5. Use Notification Channels for Date-Filtered Data
480
+
481
+ For time-sensitive notifications, use notification channels with date filters:
482
+
483
+ ```typescript
484
+ this.wsService.subscribeToNotificationChannel('MES-updates', {
485
+ startEpoch: Date.now() - 24 * 60 * 60 * 1000, // Last 24 hours
486
+ endEpoch: Date.now()
487
+ });
488
+ ```
489
+
490
+ ## Integration with HTTPManagerStateService
491
+
492
+ The WebSocketService is designed to work seamlessly with HTTPManagerStateService for real-time CRUD operations:
493
+
494
+ ```typescript
495
+ // The HTTPManagerStateService automatically integrates with WebSocket
496
+ // to keep local state synchronized with server changes
497
+
498
+ this.httpStateService = httpManagerStateService.updater(
499
+ (state: any) => ({
500
+ ...state,
501
+ wsOptions: {
502
+ wsServer: 'ws://localhost:8080',
503
+ id: 'my-channel',
504
+ user: { userId: 'user123' }
505
+ }
506
+ })
507
+ );
508
+
509
+ // WebSocket messages automatically update the state
510
+ // through the HTTPManagerStateService integration
511
+ ```
512
+
513
+ ## Troubleshooting
514
+
515
+ ### Connection Fails
516
+
517
+ - Check if the WebSocket server URL is correct
518
+ - Verify JWT token is valid (if using authentication)
519
+ - Ensure server is running and accessible
520
+ - Check browser console for detailed error messages
521
+
522
+ ### Messages Not Received
523
+
524
+ - Verify you're subscribed to the correct channel
525
+ - Check connection status via `connectionStatus$` observable
526
+ - Ensure server is sending messages to the correct channel
527
+ - Check message format matches expected structure
528
+
529
+ ### JWT Validation Error
530
+
531
+ - Verify JWT token is not expired
532
+ - Ensure token format is correct
533
+ - Check server-side JWT validation logic
534
+
535
+ ## Example: Complete Chat Component
536
+
537
+ ```typescript
538
+ import { Component, OnInit, OnDestroy } from '@angular/core';
539
+ import { WebsocketService } from 'http-request-manager';
540
+
541
+ @Component({
542
+ selector: 'app-chat',
543
+ template: `
544
+ <div *ngIf="!isConnected">
545
+ <button (click)="connect()">Connect</button>
546
+ </div>
547
+ <div *ngIf="isConnected">
548
+ <div class="messages">
549
+ <div *ngFor="let msg of messages" class="message">
550
+ {{ msg }}
551
+ </div>
552
+ </div>
553
+ <input [(ngModel)]="newMessage" placeholder="Type a message..." />
554
+ <button (click)="sendMessage()">Send</button>
555
+ <button (click)="disconnect()">Disconnect</button>
556
+ </div>
557
+ `
558
+ })
559
+ export class ChatComponent implements OnInit, OnDestroy {
560
+ messages: string[] = [];
561
+ newMessage: string = '';
562
+ isConnected = false;
563
+
564
+ private subscriptions = [];
565
+
566
+ constructor(private wsService: WebsocketService) {}
567
+
568
+ ngOnInit() {
569
+ this.subscriptions.push(
570
+ this.wsService.messages$.subscribe(message => {
571
+ this.messages.push(message);
572
+ }),
573
+ this.wsService.connectionStatus$.subscribe(connected => {
574
+ this.isConnected = connected;
575
+ })
576
+ );
577
+ }
578
+
579
+ connect() {
580
+ const options = {
581
+ wsServer: 'ws://localhost:8080',
582
+ id: 'chat-room',
583
+ user: { username: 'current-user' }
584
+ };
585
+ this.wsService.connect(options);
586
+ this.wsService.subscribeToChannel('chat-room');
587
+ }
588
+
589
+ sendMessage() {
590
+ this.wsService.sendChannelMessage('chat-room', {
591
+ sender: 'current-user',
592
+ text: this.newMessage,
593
+ timestamp: Date.now()
594
+ });
595
+ this.newMessage = '';
596
+ }
597
+
598
+ disconnect() {
599
+ this.wsService.disconnect();
600
+ }
601
+
602
+ ngOnDestroy() {
603
+ this.subscriptions.forEach(sub => sub.unsubscribe());
604
+ this.wsService.disconnect();
605
+ }
606
+ }
607
+ ```
608
+
609
+ ## Related Services
610
+
611
+ - [`HTTPManagerService`](HTTP_MANAGER_README.md) - HTTP request management
612
+ - [`HTTPManagerStateService`](HTTP_STATE_MANAGER_README.md) - State management with WebSocket integration
613
+ - [`RequestSignalsService`](HTTP_SINGNALS_MANAGER_README.md) - Signal-based HTTP requests