http-request-manager 18.15.34 → 18.16.1

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/fesm2022/http-request-manager.mjs +13688 -0
  2. package/fesm2022/http-request-manager.mjs.map +1 -0
  3. package/http-request-manager-18.16.0.tgz +0 -0
  4. package/package.json +15 -6
  5. package/types/http-request-manager.d.ts +3968 -0
  6. package/TEST_COVERAGE_SUMMARY.md +0 -458
  7. package/ng-package.json +0 -8
  8. package/src/docs/ADVANCED_WEBSOCKET.md +0 -633
  9. package/src/docs/ARCHITECTURE.md +0 -633
  10. package/src/docs/BATCH_REQUEST_README.md +0 -467
  11. package/src/docs/COMPLETE_API_REFERENCE.md +0 -1037
  12. package/src/docs/DATABASE_README.md +0 -1195
  13. package/src/docs/ENCRYPTION_README.md +0 -403
  14. package/src/docs/HTTP_MANAGER_README.md +0 -628
  15. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +0 -654
  16. package/src/docs/HTTP_STATE_MANAGER_README.md +0 -1391
  17. package/src/docs/INTERCEPTOR_README.md +0 -549
  18. package/src/docs/LOCAL_STORAGE_README.md +0 -1056
  19. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +0 -338
  20. package/src/docs/LOGGER_README.md +0 -310
  21. package/src/docs/MESSAGE_TRACKER_README.md +0 -518
  22. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +0 -563
  23. package/src/docs/MODELS_README.md +0 -1264
  24. package/src/docs/SIGNAL_SERVICES_README.md +0 -238
  25. package/src/docs/SQL_DIXIE_README.md +0 -574
  26. package/src/docs/STORE_STATE_MANAGER_README.md +0 -556
  27. package/src/docs/STORE_STATE_SIGNALS_README.md +0 -600
  28. package/src/docs/UPLOAD_REQUEST_README.md +0 -324
  29. package/src/docs/UTILS_README.md +0 -1604
  30. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +0 -799
  31. package/src/docs/WEBSOCKET_SIGNALS_README.md +0 -641
  32. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +0 -201
  33. package/src/docs/WS_MANAGER_README.md +0 -613
  34. package/src/lib/http-request-manager.module.ts +0 -147
  35. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -116
  36. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  37. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -255
  38. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -123
  39. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  40. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -53
  41. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  42. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  43. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -208
  44. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +0 -200
  45. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +0 -17
  46. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +0 -214
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +0 -53
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +0 -60
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +0 -72
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +0 -28
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +0 -10
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +0 -29
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +0 -100
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +0 -22
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +0 -8
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +0 -19
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +0 -26
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +0 -30
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +0 -19
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +0 -25
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +0 -19
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +0 -24
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +0 -30
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +0 -49
  65. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +0 -33
  66. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +0 -279
  67. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +0 -24
  68. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +0 -461
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  76. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  77. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  78. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  79. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  84. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  85. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  86. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  87. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  88. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -622
  89. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -106
  90. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -687
  91. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -418
  92. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  93. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -576
  94. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -89
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +0 -119
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +0 -3
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +0 -16
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +0 -3
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +0 -16
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +0 -31
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +0 -94
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +0 -41
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +0 -203
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +0 -144
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +0 -11
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +0 -102
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +0 -40
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +0 -230
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +0 -30
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +0 -172
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +0 -31
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +0 -239
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +0 -31
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +0 -32
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +0 -84
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +0 -40
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +0 -3
  121. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +0 -62
  122. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +0 -83
  123. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +0 -147
  124. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +0 -168
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +0 -28
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +0 -10
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +0 -30
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +0 -19
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +0 -25
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +0 -19
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +0 -24
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +0 -30
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +0 -49
  143. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +0 -33
  144. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +0 -380
  145. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +0 -24
  146. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +0 -410
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +0 -28
  148. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +0 -49
  149. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  150. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +0 -23
  151. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +0 -36
  152. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +0 -161
  153. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +0 -1
  154. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +0 -30
  155. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +0 -89
  156. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +0 -160
  157. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +0 -101
  158. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +0 -136
  159. package/src/lib/index.ts +0 -3
  160. package/src/lib/interceptors/credentials.interceptor.ts +0 -16
  161. package/src/lib/interceptors/index.ts +0 -6
  162. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  163. package/src/lib/interceptors/models/index.ts +0 -2
  164. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  165. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  166. package/src/lib/interceptors/request-header.interceptor.ts +0 -56
  167. package/src/lib/message-display/README.md +0 -509
  168. package/src/lib/message-display/index.ts +0 -4
  169. package/src/lib/message-display/models/action.model.ts +0 -27
  170. package/src/lib/message-display/models/communication-message.model.ts +0 -77
  171. package/src/lib/message-display/models/display-config.model.ts +0 -35
  172. package/src/lib/message-display/models/display-rule.interface.ts +0 -28
  173. package/src/lib/message-display/models/display-strategy.interface.ts +0 -8
  174. package/src/lib/message-display/models/index.ts +0 -6
  175. package/src/lib/message-display/models/slide.model.ts +0 -24
  176. package/src/lib/message-display/rules/default-display-rules.ts +0 -35
  177. package/src/lib/message-display/services/message-display-router.service.ts +0 -63
  178. package/src/lib/message-display/strategies/snackbar.strategy.ts +0 -46
  179. package/src/lib/models/batch-options.model.ts +0 -33
  180. package/src/lib/models/batch-progress.model.ts +0 -19
  181. package/src/lib/models/batch-request-state.model.ts +0 -40
  182. package/src/lib/models/batch-result.model.ts +0 -30
  183. package/src/lib/models/config-http-options.model.ts +0 -45
  184. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  185. package/src/lib/models/config-options.model.ts +0 -27
  186. package/src/lib/models/config-token.model.ts +0 -9
  187. package/src/lib/models/data-type.enum.ts +0 -5
  188. package/src/lib/models/database-storage.model.ts +0 -24
  189. package/src/lib/models/index.ts +0 -16
  190. package/src/lib/models/retry-options.model.ts +0 -22
  191. package/src/lib/models/upload-validation-error.model.ts +0 -46
  192. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +0 -246
  193. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +0 -31
  194. package/src/lib/services/SQL-DixieJS service/index.ts +0 -4
  195. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +0 -52
  196. package/src/lib/services/SQL-DixieJS service/models/index.ts +0 -3
  197. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +0 -13
  198. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +0 -3
  199. package/src/lib/services/SQL-DixieJS service/query-planner.ts +0 -284
  200. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +0 -217
  201. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +0 -35
  202. package/src/lib/services/database-manager-service/database.manager.service.ts +0 -384
  203. package/src/lib/services/database-manager-service/db.storage.service.ts +0 -240
  204. package/src/lib/services/database-manager-service/index.ts +0 -4
  205. package/src/lib/services/database-manager-service/models/index.ts +0 -2
  206. package/src/lib/services/database-manager-service/models/table-schema.ts +0 -33
  207. package/src/lib/services/index.ts +0 -20
  208. package/src/lib/services/local-storage-manager-service/index.ts +0 -4
  209. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  210. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -567
  211. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +0 -67
  212. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +0 -437
  213. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  214. package/src/lib/services/local-storage-manager-service/models/index.ts +0 -6
  215. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -35
  216. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  217. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -32
  218. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  219. package/src/lib/services/request-manager-services/README.md +0 -282
  220. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +0 -674
  221. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -353
  222. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -727
  223. package/src/lib/services/request-manager-services/index.ts +0 -8
  224. package/src/lib/services/request-manager-services/request-signals.service.ts +0 -372
  225. package/src/lib/services/request-manager-services/request.service.ts +0 -435
  226. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  227. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  228. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +0 -4
  229. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -35
  230. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -468
  231. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +0 -665
  232. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -2395
  233. package/src/lib/services/request-manager-state-service/index.ts +0 -3
  234. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -86
  235. package/src/lib/services/request-manager-state-service/models/index.ts +0 -14
  236. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +0 -18
  237. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +0 -21
  238. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -37
  239. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +0 -20
  240. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +0 -23
  241. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +0 -23
  242. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +0 -23
  243. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +0 -24
  244. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +0 -13
  245. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +0 -42
  246. package/src/lib/services/store-state-manager-service/index.ts +0 -4
  247. package/src/lib/services/store-state-manager-service/models/index.ts +0 -3
  248. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +0 -30
  249. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +0 -24
  250. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +0 -169
  251. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +0 -153
  252. package/src/lib/services/utils/app.service.spec.ts +0 -25
  253. package/src/lib/services/utils/app.service.ts +0 -21
  254. package/src/lib/services/utils/encryption/README.md +0 -79
  255. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  256. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  257. package/src/lib/services/utils/encryption/index.ts +0 -5
  258. package/src/lib/services/utils/encryption/random.ts +0 -81
  259. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -106
  260. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  261. package/src/lib/services/utils/headers.service.ts +0 -18
  262. package/src/lib/services/utils/index.ts +0 -9
  263. package/src/lib/services/utils/logger.service.ts +0 -90
  264. package/src/lib/services/utils/models/index.ts +0 -4
  265. package/src/lib/services/utils/models/normalized-request-options.model.ts +0 -24
  266. package/src/lib/services/utils/models/path-tracker-state.model.ts +0 -20
  267. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +0 -24
  268. package/src/lib/services/utils/models/query-tracker-state.model.ts +0 -23
  269. package/src/lib/services/utils/object-merger.service.spec.ts +0 -18
  270. package/src/lib/services/utils/object-merger.service.ts +0 -78
  271. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  272. package/src/lib/services/utils/path-query.service.ts +0 -69
  273. package/src/lib/services/utils/query-params-tracker.service.ts +0 -442
  274. package/src/lib/services/utils/random-color.utils.ts +0 -83
  275. package/src/lib/services/utils/utils.service.spec.ts +0 -165
  276. package/src/lib/services/utils/utils.service.ts +0 -192
  277. package/src/lib/services/ws-manager-service/index.ts +0 -13
  278. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +0 -147
  279. package/src/lib/services/ws-manager-service/message-tracker.service.ts +0 -477
  280. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +0 -29
  281. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +0 -24
  282. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +0 -36
  283. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +0 -6
  284. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +0 -5
  285. package/src/lib/services/ws-manager-service/models/index.ts +0 -10
  286. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +0 -29
  287. package/src/lib/services/ws-manager-service/models/public-message.model.ts +0 -18
  288. package/src/lib/services/ws-manager-service/models/state-message.model.ts +0 -18
  289. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +0 -38
  290. package/src/lib/services/ws-manager-service/services/index.ts +0 -4
  291. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +0 -129
  292. package/src/lib/services/ws-manager-service/services/websocket.service.ts +0 -434
  293. package/src/lib/services/ws-manager-service/websocket-service/index.ts +0 -1
  294. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +0 -716
  295. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +0 -596
  296. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +0 -141
  297. package/src/public-api.ts +0 -19
  298. package/tsconfig.lib.json +0 -34
  299. package/tsconfig.lib.prod.json +0 -10
  300. package/tsconfig.spec.json +0 -14
@@ -1,799 +0,0 @@
1
- # WebSocket Message Service
2
-
3
- A unified, type-safe service for sending WebSocket messages with automatic prefix management and concrete message models.
4
-
5
- ## Overview
6
-
7
- The `WebSocketMessageService` provides a simplified API for sending WebSocket messages across different channel types. It automatically handles channel prefixes, message validation, and provides compile-time type safety.
8
-
9
- ## Key Features
10
-
11
- ✅ **Type-Safe Messages** - Concrete models with TypeScript validation
12
- ✅ **Automatic Prefix Management** - SYS-, PUB-, MES- prefixes handled automatically
13
- ✅ **Runtime Validation** - Checks required fields before sending
14
- ✅ **Boolean Return Values** - Simple success/failure indication
15
- ✅ **Silent Failure** - Console errors without exceptions
16
- ✅ **Single Service** - One injection point for all WebSocket messaging
17
-
18
- ## Installation
19
-
20
- The service is automatically available when you import `HttpRequestManagerModule`:
21
-
22
- ```typescript
23
- import { HttpRequestManagerModule } from 'http-request-manager';
24
-
25
- @NgModule({
26
- imports: [HttpRequestManagerModule.forRoot({})]
27
- })
28
- export class AppModule { }
29
- ```
30
-
31
- ## Usage
32
-
33
- ### Import the Service
34
-
35
- ```typescript
36
- import { Component, inject } from '@angular/core';
37
- import {
38
- WebSocketMessageService,
39
- StateMessage,
40
- PublicMessage,
41
- NotificationMessage
42
- } from 'http-request-manager';
43
-
44
- @Component({
45
- selector: 'app-messaging',
46
- template: `...`
47
- })
48
- export class MessagingComponent {
49
- private wsMessageService = inject(WebSocketMessageService);
50
- }
51
- ```
52
-
53
- ---
54
-
55
- ## Message Types
56
-
57
- The service supports three message types, each with its own channel prefix:
58
-
59
- | Type | Prefix | Use Case | Model |
60
- |------|--------|----------|-------|
61
- | **State** | `SYS-` | CRUD operations, state synchronization | `StateMessage` |
62
- | **Public** | `PUB-` | Chat, broadcast, general messaging | `PublicMessage` |
63
- | **Notification** | `MES-` | Persistent notifications with history | `NotificationMessage` |
64
-
65
- ---
66
-
67
- ## API Reference
68
-
69
- ### `sendStateMessage(path, payload)`
70
-
71
- Send a state message for CRUD operations and state synchronization.
72
-
73
- **Parameters:**
74
- - `path: (string|number)[]` - Path array (e.g., `['ai', 'tests']`)
75
- - `payload: StateMessage` - Message with sessionId and content
76
-
77
- **Returns:** `boolean` - `true` if sent successfully, `false` otherwise
78
-
79
- **Channel:** `SYS-{path.join('/')}` (e.g., `SYS-ai/tests`)
80
-
81
- **Example:**
82
-
83
- ```typescript
84
- const message = StateMessage.adapt({
85
- sessionId: { id: 'user123', name: 'John', email: 'john@example.com' },
86
- content: {
87
- action: 'create',
88
- data: { name: 'New Item', value: 42 }
89
- }
90
- });
91
-
92
- const success = this.wsMessageService.sendStateMessage(
93
- ['ai', 'tests'],
94
- message
95
- );
96
-
97
- if (!success) {
98
- console.warn('Failed to send state message');
99
- }
100
- ```
101
-
102
- **Validation:**
103
- - ✅ `sessionId.id` is required
104
- - ✅ `content` can be any object
105
- - ✅ WebSocket must be connected
106
-
107
- ---
108
-
109
- ### `sendPublicMessage(channel, payload)`
110
-
111
- Send a public message for chat, broadcast, or general messaging.
112
-
113
- **Parameters:**
114
- - `channel: string` - Channel name (without prefix)
115
- - `payload: PublicMessage` - Message with sessionId and content.message
116
-
117
- **Returns:** `boolean` - `true` if sent successfully, `false` otherwise
118
-
119
- **Channel:** `PUB-{channel}` (e.g., `PUB-chat`)
120
-
121
- **Example:**
122
-
123
- ```typescript
124
- const chatMessage = PublicMessage.adapt({
125
- sessionId: { id: 'user123', name: 'John' },
126
- content: {
127
- message: 'Hello everyone!',
128
- timestamp: Date.now()
129
- }
130
- });
131
-
132
- const success = this.wsMessageService.sendPublicMessage('chat', chatMessage);
133
- ```
134
-
135
- **Validation:**
136
- - ✅ `sessionId.id` is required
137
- - ✅ `content.message` is required (string)
138
- - ✅ `content` can have additional properties
139
- - ✅ WebSocket must be connected
140
-
141
- ---
142
-
143
- ### `sendNotification(channel, payload)`
144
-
145
- Send a persistent notification with history support.
146
-
147
- **Parameters:**
148
- - `channel: string` - Channel name (without prefix)
149
- - `payload: NotificationMessage` - Message with sessionId and message
150
-
151
- **Returns:** `boolean` - `true` if sent successfully, `false` otherwise
152
-
153
- **Channel:** `MES-{channel}` (e.g., `MES-alerts`)
154
-
155
- **Example:**
156
-
157
- ```typescript
158
- const notification = NotificationMessage.adapt({
159
- sessionId: { id: 'user123', name: 'John', color: '#FF0000' },
160
- message: 'New item created!',
161
- timestamp: Date.now(),
162
- priority: 'high'
163
- });
164
-
165
- const success = this.wsMessageService.sendNotification('alerts', notification);
166
- ```
167
-
168
- **Validation:**
169
- - ✅ `sessionId.id` is required
170
- - ✅ `message` is required (string)
171
- - ✅ Additional properties allowed (index signature)
172
- - ✅ WebSocket must be connected
173
-
174
- ---
175
-
176
- ### `sendToCustomChannel(channel, payload)`
177
-
178
- Send to a custom channel without automatic prefix.
179
-
180
- **Parameters:**
181
- - `channel: string` - Full channel name (as-is)
182
- - `payload: any` - Any message payload
183
-
184
- **Returns:** `boolean` - `true` if sent successfully, `false` otherwise
185
-
186
- **Channel:** Raw channel name (no prefix added)
187
-
188
- **Example:**
189
-
190
- ```typescript
191
- const success = this.wsMessageService.sendToCustomChannel(
192
- 'CUSTOM-my-channel',
193
- { custom: 'data', value: 123 }
194
- );
195
- ```
196
-
197
- **Validation:**
198
- - ✅ WebSocket must be connected
199
- - ✅ No payload validation (accepts any data)
200
-
201
- ---
202
-
203
- ## Message Models
204
-
205
- All message models follow the data-model pattern with `Interface` + `Class` + `adapt()` method.
206
-
207
- ### StateMessage
208
-
209
- Used for state synchronization and CRUD operations.
210
-
211
- ```typescript
212
- export interface StateMessageInterface {
213
- sessionId: { id: string; ldap?: string; name?: string; email?: string };
214
- content: any;
215
- }
216
-
217
- export class StateMessage implements StateMessageInterface {
218
- constructor(
219
- public sessionId: { id: string; ldap?: string; name?: string; email?: string } = { id: '' },
220
- public content: any = {}
221
- ) {}
222
-
223
- static adapt(item?: any): StateMessage {
224
- return new StateMessage(
225
- item?.sessionId,
226
- item?.content
227
- );
228
- }
229
- }
230
- ```
231
-
232
- **Usage:**
233
-
234
- ```typescript
235
- // With adapt()
236
- const message = StateMessage.adapt({
237
- sessionId: { id: 'user123', name: 'John' },
238
- content: { action: 'update', data: { id: 1, name: 'Updated' } }
239
- });
240
-
241
- // With constructor
242
- const message = new StateMessage(
243
- { id: 'user123', name: 'John' },
244
- { action: 'delete', id: 1 }
245
- );
246
- ```
247
-
248
- ---
249
-
250
- ### PublicMessage
251
-
252
- Used for chat and broadcast messaging.
253
-
254
- ```typescript
255
- export interface PublicMessageInterface {
256
- sessionId: { id: string; ldap?: string; name?: string; email?: string };
257
- content: { message: string; [key: string]: any };
258
- }
259
-
260
- export class PublicMessage implements PublicMessageInterface {
261
- constructor(
262
- public sessionId: { id: string; ldap?: string; name?: string; email?: string } = { id: '' },
263
- public content: { message: string; [key: string]: any } = { message: '' }
264
- ) {}
265
-
266
- static adapt(item?: any): PublicMessage {
267
- return new PublicMessage(
268
- item?.sessionId,
269
- item?.content
270
- );
271
- }
272
- }
273
- ```
274
-
275
- **Usage:**
276
-
277
- ```typescript
278
- const message = PublicMessage.adapt({
279
- sessionId: { id: 'user123', name: 'John' },
280
- content: {
281
- message: 'Hello!',
282
- emoji: '👋',
283
- replyTo: 42
284
- }
285
- });
286
- ```
287
-
288
- ---
289
-
290
- ### NotificationMessage
291
-
292
- Used for persistent notifications with history.
293
-
294
- ```typescript
295
- export interface NotificationMessageInterface {
296
- sessionId: { id: string; ldap?: string; name?: string; email?: string; color?: string };
297
- message: string;
298
- [key: string]: any;
299
- }
300
-
301
- export class NotificationMessage implements NotificationMessageInterface {
302
- sessionId: { id: string; ldap?: string; name?: string; email?: string; color?: string };
303
- message: string;
304
- [key: string]: any;
305
-
306
- constructor(
307
- sessionId: { id: string; ldap?: string; name?: string; email?: string; color?: string } = { id: '' },
308
- message: string = '',
309
- additionalProperties: any = {}
310
- ) {
311
- this.sessionId = sessionId;
312
- this.message = message;
313
- Object.assign(this, additionalProperties);
314
- }
315
-
316
- static adapt(item?: any): NotificationMessage {
317
- return new NotificationMessage(
318
- item?.sessionId,
319
- item?.message,
320
- item
321
- );
322
- }
323
- }
324
- ```
325
-
326
- **Usage:**
327
-
328
- ```typescript
329
- const notification = NotificationMessage.adapt({
330
- sessionId: { id: 'user123', name: 'John', color: '#FF0000' },
331
- message: 'System update scheduled',
332
- timestamp: Date.now(),
333
- link: '/updates/123',
334
- icon: 'notification'
335
- });
336
- ```
337
-
338
- ---
339
-
340
- ## ChannelType Enum
341
-
342
- The service uses the `ChannelType` enum for prefix management:
343
-
344
- ```typescript
345
- export enum ChannelType {
346
- STATE = 'SYS', // System/state channel (CRUD operations)
347
- PUBLIC = 'PUB', // Public messaging (chat/broadcast)
348
- NOTIFICATION = 'MES', // Notification channel (persistent messages)
349
- CUSTOM = '' // No prefix (raw channel name)
350
- }
351
- ```
352
-
353
- **Note:** `ChannelType` is already exported from `request-manager-state-service` to avoid conflicts.
354
-
355
- ---
356
-
357
- ## Error Handling
358
-
359
- The service uses silent failure with console errors:
360
-
361
- ### Validation Errors
362
-
363
- ```typescript
364
- // Missing sessionId.id
365
- const message = StateMessage.adapt({
366
- sessionId: {}, // ❌ Missing id
367
- content: { action: 'create' }
368
- });
369
-
370
- const success = this.wsMessageService.sendStateMessage(['ai', 'tests'], message);
371
- // Console: ❌ WebSocketMessageService: StateMessage must have sessionId.id
372
- // Returns: false
373
- ```
374
-
375
- ### Connection Errors
376
-
377
- ```typescript
378
- // WebSocket not connected
379
- const success = this.wsMessageService.sendPublicMessage('chat', message);
380
- // Console: ❌ WebSocketMessageService: Cannot send public message - not connected
381
- // Returns: false
382
- ```
383
-
384
- ### Success Example
385
-
386
- ```typescript
387
- const message = PublicMessage.adapt({
388
- sessionId: { id: 'user123' },
389
- content: { message: 'Hello!' }
390
- });
391
-
392
- const success = this.wsMessageService.sendPublicMessage('chat', message);
393
- // Console: (no error)
394
- // Returns: true
395
- // Message sent to: PUB-chat
396
- ```
397
-
398
- ---
399
-
400
- ## Complete Examples
401
-
402
- ### Example 1: State Synchronization (CRUD)
403
-
404
- ```typescript
405
- import { Component, inject } from '@angular/core';
406
- import { WebSocketMessageService, StateMessage } from 'http-request-manager';
407
-
408
- @Component({
409
- selector: 'app-data-sync',
410
- template: `<button (click)="createItem()">Create Item</button>`
411
- })
412
- export class DataSyncComponent {
413
- private wsMessageService = inject(WebSocketMessageService);
414
-
415
- createItem() {
416
- const message = StateMessage.adapt({
417
- sessionId: { id: 'user123', name: 'John' },
418
- content: {
419
- action: 'create',
420
- data: {
421
- name: 'New Product',
422
- price: 29.99,
423
- category: 'Electronics'
424
- }
425
- }
426
- });
427
-
428
- const success = this.wsMessageService.sendStateMessage(
429
- ['products', 'inventory'],
430
- message
431
- );
432
-
433
- if (success) {
434
- console.log('✅ State update sent to SYS-products/inventory');
435
- } else {
436
- console.warn('❌ Failed to send state update');
437
- }
438
- }
439
- }
440
- ```
441
-
442
- ---
443
-
444
- ### Example 2: Chat Application
445
-
446
- ```typescript
447
- import { Component, inject } from '@angular/core';
448
- import { WebSocketMessageService, PublicMessage } from 'http-request-manager';
449
-
450
- @Component({
451
- selector: 'app-chat',
452
- template: `
453
- <input [(ngModel)]="messageText" placeholder="Type message...">
454
- <button (click)="sendMessage()">Send</button>
455
- `
456
- })
457
- export class ChatComponent {
458
- private wsMessageService = inject(WebSocketMessageService);
459
- messageText = '';
460
-
461
- sendMessage() {
462
- const chatMessage = PublicMessage.adapt({
463
- sessionId: {
464
- id: 'user123',
465
- name: 'John',
466
- color: '#00FF00'
467
- },
468
- content: {
469
- message: this.messageText,
470
- timestamp: Date.now(),
471
- type: 'text'
472
- }
473
- });
474
-
475
- const success = this.wsMessageService.sendPublicMessage('general', chatMessage);
476
-
477
- if (success) {
478
- this.messageText = '';
479
- }
480
- }
481
- }
482
- ```
483
-
484
- ---
485
-
486
- ### Example 3: Notification System
487
-
488
- ```typescript
489
- import { Component, inject } from '@angular/core';
490
- import { WebSocketMessageService, NotificationMessage } from 'http-request-manager';
491
-
492
- @Component({
493
- selector: 'app-notifications',
494
- template: `<button (click)="notifyUser()">Notify User</button>`
495
- })
496
- export class NotificationsComponent {
497
- private wsMessageService = inject(WebSocketMessageService);
498
-
499
- notifyUser() {
500
- const notification = NotificationMessage.adapt({
501
- sessionId: {
502
- id: 'user123',
503
- name: 'System',
504
- color: '#FF0000'
505
- },
506
- message: 'Your order has been shipped!',
507
- orderId: 'ORD-12345',
508
- trackingNumber: 'TRACK-67890',
509
- link: '/orders/12345',
510
- icon: 'shipping',
511
- priority: 'high'
512
- });
513
-
514
- const success = this.wsMessageService.sendNotification(
515
- 'user-notifications',
516
- notification
517
- );
518
- }
519
- }
520
- ```
521
-
522
- ---
523
-
524
- ### Example 4: Multi-Channel Messaging
525
-
526
- ```typescript
527
- import { Component, inject } from '@angular/core';
528
- import {
529
- WebSocketMessageService,
530
- StateMessage,
531
- PublicMessage,
532
- NotificationMessage
533
- } from 'http-request-manager';
534
-
535
- @Component({
536
- selector: 'app-multi-channel',
537
- template: `
538
- <button (click)="sendAll()">Send to All Channels</button>
539
- `
540
- })
541
- export class MultiChannelComponent {
542
- private wsMessageService = inject(WebSocketMessageService);
543
-
544
- sendAll() {
545
- // Send state update
546
- const stateMsg = StateMessage.adapt({
547
- sessionId: { id: 'user123' },
548
- content: { action: 'update', data: { status: 'online' } }
549
- });
550
- this.wsMessageService.sendStateMessage(['users', 'status'], stateMsg);
551
-
552
- // Send chat message
553
- const chatMsg = PublicMessage.adapt({
554
- sessionId: { id: 'user123' },
555
- content: { message: 'User is now online!' }
556
- });
557
- this.wsMessageService.sendPublicMessage('activity', chatMsg);
558
-
559
- // Send notification
560
- const notification = NotificationMessage.adapt({
561
- sessionId: { id: 'user123' },
562
- message: 'Status changed to online'
563
- });
564
- this.wsMessageService.sendNotification('alerts', notification);
565
- }
566
- }
567
- ```
568
-
569
- ---
570
-
571
- ## Comparison with Old Approach
572
-
573
- ### Before (Multiple Services)
574
-
575
- ```typescript
576
- // Inject 3 different services
577
- private stateService = inject(StateServiceDemo);
578
- private messageService = inject(MessageServiceDemo);
579
- private notificationService = inject(NotificationServiceDemo);
580
-
581
- // Different patterns for each
582
- this.stateService.updateConnection(server, wsServer, token, user, ['ai', 'tests']);
583
- this.stateService.createRecord(data); // Hidden channel
584
-
585
- this.messageService.sendMessage(msg, ['chat']); // Manual prefix
586
-
587
- this.notificationService.sendNotification('alerts', msg); // Manual prefix
588
- ```
589
-
590
- ### After (Unified Service)
591
-
592
- ```typescript
593
- // Inject 1 service
594
- private wsMessageService = inject(WebSocketMessageService);
595
-
596
- // Consistent pattern for all
597
- this.wsMessageService.sendStateMessage(['ai', 'tests'], stateMsg); // Explicit
598
- this.wsMessageService.sendPublicMessage('chat', chatMsg); // Explicit
599
- this.wsMessageService.sendNotification('alerts', notification); // Explicit
600
- ```
601
-
602
- **Benefits:**
603
- - ✅ Single injection point
604
- - ✅ Consistent API across all message types
605
- - ✅ Explicit channel names (no hidden state)
606
- - ✅ Type-safe message models
607
- - ✅ Automatic prefix management
608
-
609
- ---
610
-
611
- ## Best Practices
612
-
613
- ### 1. Always Use `adapt()` Method
614
-
615
- ```typescript
616
- // ✅ Correct
617
- const message = StateMessage.adapt({
618
- sessionId: { id: 'user123' },
619
- content: { action: 'create' }
620
- });
621
-
622
- // ❌ Avoid
623
- const message = new StateMessage({ id: 'user123' }, { action: 'create' });
624
- ```
625
-
626
- ### 2. Check Return Value
627
-
628
- ```typescript
629
- const success = this.wsMessageService.sendPublicMessage('chat', message);
630
-
631
- if (!success) {
632
- // Handle failure (log, retry, notify user, etc.)
633
- console.warn('Message not sent - WebSocket may be disconnected');
634
- }
635
- ```
636
-
637
- ### 3. Include Session ID
638
-
639
- Always provide at least `sessionId.id`:
640
-
641
- ```typescript
642
- // ✅ Minimum required
643
- StateMessage.adapt({
644
- sessionId: { id: 'user123' },
645
- content: { ... }
646
- });
647
-
648
- // ❌ Will fail validation
649
- StateMessage.adapt({
650
- sessionId: {}, // Missing id
651
- content: { ... }
652
- });
653
- ```
654
-
655
- ### 4. Use Meaningful Paths/Channels
656
-
657
- ```typescript
658
- // ✅ Clear and descriptive
659
- sendStateMessage(['products', 'inventory'], message);
660
- sendPublicMessage('customer-support', message);
661
- sendNotification('order-updates', message);
662
-
663
- // ❌ Vague
664
- sendStateMessage(['data'], message);
665
- sendPublicMessage('channel1', message);
666
- ```
667
-
668
- ### 5. Extend NotificationMessage with Custom Properties
669
-
670
- ```typescript
671
- const notification = NotificationMessage.adapt({
672
- sessionId: { id: 'user123' },
673
- message: 'Order shipped',
674
- // Custom properties
675
- orderId: 'ORD-123',
676
- trackingNumber: 'TRACK-456',
677
- estimatedDelivery: '2026-04-05',
678
- carrier: 'FedEx'
679
- });
680
- ```
681
-
682
- ---
683
-
684
- ## Troubleshooting
685
-
686
- ### Message Not Sending
687
-
688
- **Problem:** `sendStateMessage()` returns `false`
689
-
690
- **Solution:**
691
- 1. Check console for error messages
692
- 2. Verify WebSocket is connected: `WebSocketManagerService.isConnected()`
693
- 3. Ensure `sessionId.id` is provided
694
- 4. Check path is not empty: `['ai', 'tests']` not `[]`
695
-
696
- ### Wrong Channel Received
697
-
698
- **Problem:** Messages appearing on unexpected channels
699
-
700
- **Solution:**
701
- 1. Verify channel name construction
702
- 2. Check prefix is correct (SYS-, PUB-, MES-)
703
- 3. Ensure no typos in path/channel names
704
-
705
- ### TypeScript Errors
706
-
707
- **Problem:** Type errors when creating messages
708
-
709
- **Solution:**
710
- 1. Use `adapt()` method for automatic type inference
711
- 2. Ensure `sessionId` object has required properties
712
- 3. For `PublicMessage`, ensure `content.message` is a string
713
- 4. For `NotificationMessage`, ensure `message` is a string
714
-
715
- ---
716
-
717
- ## Related Documentation
718
-
719
- - [WebSocket Manager Service](./WS_MANAGER_README.md) - Underlying WebSocket connection management
720
- - [Advanced WebSocket Guide](./ADVANCED_WEBSOCKET.md) - Channel architecture, presence tracking, message replay
721
- - [ChannelMessage Model](./MODELS_README.md#channelmessage) - Base message structure
722
- - [Complete API Reference](./COMPLETE_API_REFERENCE.md) - Full library API documentation
723
-
724
- ---
725
-
726
- ## Migration Guide
727
-
728
- ### From MessageServiceDemo
729
-
730
- **Before:**
731
-
732
- ```typescript
733
- private messageService = inject(MessageServiceDemo);
734
-
735
- this.messageService.sendMessage(
736
- ChannelMessage.adapt({
737
- sessionId: { id: 'user123' },
738
- content: { message: 'Hello' }
739
- }),
740
- ['chat']
741
- );
742
- ```
743
-
744
- **After:**
745
-
746
- ```typescript
747
- private wsMessageService = inject(WebSocketMessageService);
748
-
749
- this.wsMessageService.sendPublicMessage(
750
- 'chat',
751
- PublicMessage.adapt({
752
- sessionId: { id: 'user123' },
753
- content: { message: 'Hello' }
754
- })
755
- );
756
- ```
757
-
758
- ### From NotificationServiceDemo
759
-
760
- **Before:**
761
-
762
- ```typescript
763
- private notificationService = inject(NotificationServiceDemo);
764
-
765
- this.notificationService.sendNotification('alerts', {
766
- sessionId: { id: 'user123' },
767
- message: 'New notification'
768
- });
769
- ```
770
-
771
- **After:**
772
-
773
- ```typescript
774
- private wsMessageService = inject(WebSocketMessageService);
775
-
776
- this.wsMessageService.sendNotification(
777
- 'alerts',
778
- NotificationMessage.adapt({
779
- sessionId: { id: 'user123' },
780
- message: 'New notification'
781
- })
782
- );
783
- ```
784
-
785
- ---
786
-
787
- ## Summary
788
-
789
- The `WebSocketMessageService` provides a unified, type-safe approach to WebSocket messaging with:
790
-
791
- - ✅ **Three message types** - State (SYS-), Public (PUB-), Notification (MES-)
792
- - ✅ **Automatic prefixes** - No manual string concatenation
793
- - ✅ **Type safety** - Compile-time validation of message structures
794
- - ✅ **Runtime validation** - Checks required fields before sending
795
- - ✅ **Simple API** - Boolean return values for success/failure
796
- - ✅ **Silent failure** - Console errors without exceptions
797
- - ✅ **Backward compatible** - Existing services continue to work
798
-
799
- For more information, see the [WebSocket Manager Service documentation](./WS_MANAGER_README.md) or the [Advanced WebSocket Guide](./ADVANCED_WEBSOCKET.md).