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,596 +0,0 @@
1
- /**
2
- * WebSocket Services Test Suite
3
- * Based on RequestManagerWsDemoComponent and related services
4
- * Tests StateServiceDemo, MessageServiceDemo, NotificationServiceDemo
5
- */
6
- import { TestBed } from '@angular/core/testing';
7
- import { of } from 'rxjs';
8
- import { HTTPManagerStateService } from '../../services/request-manager-state-service/http-manager-state.store';
9
- import { HTTPManagerService } from '../../services/request-manager-services/http-manager.service';
10
- import { DatabaseManagerService } from '../../services/database-manager-service/database.manager.service';
11
- import { LocalStorageManagerService } from '../../services/local-storage-manager-service/local-storage-manager.service';
12
- import { WebSocketManagerService } from '../../services/ws-manager-service/websocket-service';
13
- import { MessageTrackerService } from '../../services/ws-manager-service/message-tracker.service';
14
- import { UtilsService } from '../../services/utils/utils.service';
15
- import { LoggerService } from '../../services/utils/logger.service';
16
-
17
- // Mock Demo Services since they are not in the library core
18
- class StateServiceDemo {
19
- constructor(private httpManagerState: HTTPManagerStateService<any>) {}
20
- updateConnection(server: string, wsServer: string, token: string, user: any, path?: any) {
21
- this.httpManagerState.setApiRequestOptions({ server, path: path || ['ai', 'tests'], ws: { id: (path || ['ai', 'tests']).join('/'), wsServer, jwtToken: token, user } } as any);
22
- this.httpManagerState.userAction$.subscribe((action: any) => {});
23
- }
24
- getAllChannels() { this.httpManagerState.getAllChannels(); }
25
- subscribeToChannel(c: string) { this.httpManagerState.subscribeToChannel(c); }
26
- unsubscribeFromChannel(c: string) { this.httpManagerState.unsubscribeFromChannel(c); }
27
- createNotificationChannel(c: string) { this.httpManagerState.createNotificationChannel(c); }
28
- getNotificationChannels() { this.httpManagerState.getNotificationChannels(); }
29
- getTodaysNotificationChannels() { this.httpManagerState.getTodaysNotificationChannels(); }
30
- definePreviousNotificationChannels() { /* Not implemented in store */ }
31
- subscribeToNotificationChannel(c: string, o: any = {}, u: any = {}) { this.httpManagerState.subscribeToNotificationChannel(c, o, u); }
32
- unsubscribeFromNotificationChannel(c: string) { this.httpManagerState.unsubscribeFromNotificationChannel(c); }
33
- sendNotification(c: string, m: any) { this.httpManagerState.sendNotification(c, m); }
34
- getData() { this.httpManagerState.fetchRecords(); }
35
- addData(d: any) { this.httpManagerState.createRecord(d, undefined); }
36
- updateData(d: any) { this.httpManagerState.updateRecord(d, undefined); }
37
- deleteData(id: any) { this.httpManagerState.deleteRecord(undefined); }
38
- clearRecords() { this.httpManagerState.clearRecords(); }
39
- }
40
-
41
- class MessageServiceDemo {
42
- constructor(private httpManagerState: HTTPManagerStateService<any>) {}
43
- createChannel(c: string) { this.httpManagerState.createChannel(c.startsWith('PUB-') ? c : 'PUB-' + c); }
44
- getAllChannels() { this.httpManagerState.getAllChannels(); }
45
- subscribeToChannel(c: string) { this.httpManagerState.subscribeToChannel(c.startsWith('PUB-') ? c : 'PUB-' + c); }
46
- unsubscribeFromChannel(c: string) { this.httpManagerState.unsubscribeFromChannel(c.startsWith('PUB-') ? c : 'PUB-' + c); }
47
- sendMessage(m: any, c?: string[]) { this.httpManagerState.wsMessaging(m, c); }
48
- get channels$() { return this.httpManagerState.channels$; }
49
- get subscribedChannels$() { return this.httpManagerState.subscribedChannels$; }
50
- get communicationMessages$() { return this.httpManagerState.communicationMessages$; }
51
- get latestCommunicationMessages$() { return this.httpManagerState.latestCommunicationMessages$; }
52
- get connectionStatus$() { return this.httpManagerState.connectionStatus$; }
53
- get user$() { return this.httpManagerState.user$; }
54
- get data$() { return this.httpManagerState.data$; }
55
- }
56
-
57
- class NotificationServiceDemo {
58
- constructor(private httpManagerState: HTTPManagerStateService<any>) {}
59
- createNotificationChannel(c: string) { this.httpManagerState.createNotificationChannel(c); }
60
- getNotificationChannels() { this.httpManagerState.getNotificationChannels(); }
61
- getTodaysNotificationChannels() { this.httpManagerState.getTodaysNotificationChannels(); }
62
- definePreviousNotificationChannels() { /* Not implemented in store */ }
63
- subscribeToNotificationChannel(c: string, o: any = {}, u: any = {}) { this.httpManagerState.subscribeToNotificationChannel(c, o, u); }
64
- unsubscribeFromNotificationChannel(c: string) { this.httpManagerState.unsubscribeFromNotificationChannel(c); }
65
- sendNotification(c: string, m: any) { this.httpManagerState.sendNotification(c, m); }
66
- get subscribedNotificationChannels$() { return this.httpManagerState.subscribedChannels$; }
67
- get notificationChannels$() { return this.httpManagerState.notificationChannels$; }
68
- get todaysNotificationChannels$() { return this.httpManagerState.todaysNotificationChannels$; }
69
- get notificationMessages$() { return this.httpManagerState.notificationMessages$; }
70
- get latestNotification$() { return this.httpManagerState.latestNotification$; }
71
- get connectionStatus$() { return this.httpManagerState.connectionStatus$; }
72
- }
73
-
74
- describe('WebSocket Services - Complete Test Suite', () => {
75
- let stateService: StateServiceDemo;
76
- let messageService: MessageServiceDemo;
77
- let notificationService: NotificationServiceDemo;
78
- let httpManagerStateSpy: jasmine.SpyObj<HTTPManagerStateService<any>>;
79
- let httpManagerServiceSpy: jasmine.SpyObj<HTTPManagerService<any>>;
80
- let dbManagerSpy: jasmine.SpyObj<DatabaseManagerService>;
81
- let localStorageManagerSpy: jasmine.SpyObj<LocalStorageManagerService>;
82
- let wsManagerSpy: jasmine.SpyObj<WebSocketManagerService>;
83
- let messageTrackerSpy: jasmine.SpyObj<MessageTrackerService>;
84
- let utilsSpy: jasmine.SpyObj<UtilsService>;
85
- let loggerSpy: jasmine.SpyObj<LoggerService>;
86
-
87
- const mockServer = 'https://api.example.com';
88
- const mockWsServer = 'wss://ws.example.com';
89
- const mockJwtToken = 'test-jwt-token';
90
- const mockUser = { id: 'user123', name: 'Test User', email: 'test@example.com' };
91
- const mockPath = ['ai', 'tests'];
92
-
93
- beforeEach(() => {
94
- httpManagerStateSpy = jasmine.createSpyObj('HTTPManagerStateService', [
95
- 'setApiRequestOptions', 'getData', 'fetchRecords', 'fetchRecord',
96
- 'createRecord', 'updateRecord', 'deleteRecord', 'clearRecords',
97
- 'subscribeToChannel', 'unsubscribeFromChannel', 'createChannel', 'getAllChannels',
98
- 'createNotificationChannel', 'getNotificationChannels', 'getTodaysNotificationChannels',
99
- 'definePreviousNotificationChannels', 'subscribeToNotificationChannel', 'unsubscribeFromNotificationChannel', 'sendNotification', 'wsMessaging'
100
- ], {
101
- data$: jasmine.createSpy('data$'),
102
- isPending$: jasmine.createSpy('isPending$'),
103
- error$: jasmine.createSpy('error$'),
104
- connectionStatus$: jasmine.createSpy('connectionStatus$'),
105
- wsRetryAttempts$: jasmine.createSpy('wsRetryAttempts$'),
106
- wsNextRetry$: jasmine.createSpy('wsNextRetry$'),
107
- user$: jasmine.createSpy('user$'),
108
- channels$: jasmine.createSpy('channels$'),
109
- messages$: jasmine.createSpy('messages$'),
110
- subscribedChannels$: jasmine.createSpy('subscribedChannels$'),
111
- communicationMessages$: jasmine.createSpy('communicationMessages$'),
112
- latestCommunicationMessages$: jasmine.createSpy('latestCommunicationMessages$'),
113
- notificationMessages$: jasmine.createSpy('notificationMessages$'),
114
- latestNotification$: jasmine.createSpy('latestNotification$'),
115
- notificationChannels$: jasmine.createSpy('notificationChannels$'),
116
- todaysNotificationChannels$: jasmine.createSpy('todaysNotificationChannels$'),
117
- userAction$: { subscribe: jasmine.createSpy('subscribe') },
118
- userList$: jasmine.createSpy('userList$')
119
- });
120
-
121
- httpManagerServiceSpy = jasmine.createSpyObj('HTTPManagerService', [
122
- 'getRequest', 'postRequest', 'putRequest', 'deleteRequest',
123
- 'connect', 'disconnect', 'subscribeToChannel', 'unsubscribeFromChannel',
124
- 'getAllChannels', 'createChannel', 'deleteChannel', 'getUsersInChannel',
125
- 'createNotificationChannel', 'getNotificationChannels', 'getTodaysNotificationChannels',
126
- 'subscribeToNotificationChannel', 'unsubscribeFromNotificationChannel', 'sendNotification'
127
- ], {
128
- isPending$: jasmine.createSpy('isPending$'),
129
- countdown$: jasmine.createSpy('countdown$'),
130
- error$: jasmine.createSpy('error$'),
131
- connectionStatus$: jasmine.createSpy('connectionStatus$'),
132
- messages$: jasmine.createSpy('messages$'),
133
- subscribedChannels$: jasmine.createSpy('subscribedChannels$')
134
- });
135
-
136
- dbManagerSpy = jasmine.createSpyObj('DatabaseManagerService', [
137
- 'createDatabaseTable', 'getDatabaseTables', 'hasDatabaseTable',
138
- 'getTableRecords', 'createTableRecord', 'updateTableRecord', 'deleteTableRecord'
139
- ]);
140
-
141
- localStorageManagerSpy = jasmine.createSpyObj('LocalStorageManagerService', [
142
- 'createStore', 'updateStore', 'store$', 'stores$'
143
- ]);
144
-
145
- wsManagerSpy = jasmine.createSpyObj('WebSocketManagerService', [
146
- 'connect', 'disconnect', 'subscribeToChannel', 'unsubscribeFromChannel',
147
- 'sendBroadcast', 'sendMessageInChannel', 'sendChannelMessage',
148
- 'getSubscribedChannels', 'addSubscribedChannel'
149
- ], {
150
- connectionStatus$: jasmine.createSpy('connectionStatus$'),
151
- isConnected: jasmine.createSpy('isConnected').and.returnValue(true)
152
- });
153
-
154
- messageTrackerSpy = jasmine.createSpyObj('MessageTrackerService', [
155
- 'subscribeToChannel'
156
- ], {
157
- messages$: jasmine.createSpy('messages$')
158
- });
159
-
160
- utilsSpy = jasmine.createSpyObj('UtilsService', ['expires', 'hasExpired']);
161
- loggerSpy = jasmine.createSpyObj('LoggerService', ['debug', 'info', 'warn', 'error']);
162
-
163
- TestBed.configureTestingModule({
164
- providers: [
165
- { provide: HTTPManagerStateService, useValue: httpManagerStateSpy },
166
- { provide: HTTPManagerService, useValue: httpManagerServiceSpy },
167
- { provide: DatabaseManagerService, useValue: dbManagerSpy },
168
- { provide: LocalStorageManagerService, useValue: localStorageManagerSpy },
169
- { provide: WebSocketManagerService, useValue: wsManagerSpy },
170
- { provide: MessageTrackerService, useValue: messageTrackerSpy },
171
- { provide: UtilsService, useValue: utilsSpy },
172
- { provide: LoggerService, useValue: loggerSpy }
173
- ]
174
- });
175
-
176
- stateService = new StateServiceDemo(httpManagerStateSpy);
177
- messageService = new MessageServiceDemo(httpManagerStateSpy);
178
- notificationService = new NotificationServiceDemo(httpManagerStateSpy);
179
- });
180
-
181
- it('should create StateServiceDemo', () => {
182
- expect(stateService).toBeTruthy();
183
- });
184
-
185
- it('should create MessageServiceDemo', () => {
186
- expect(messageService).toBeTruthy();
187
- });
188
-
189
- it('should create NotificationServiceDemo', () => {
190
- expect(notificationService).toBeTruthy();
191
- });
192
-
193
- // ═══════════════════════════════════════════════════════════════════════════
194
- // STATE SERVICE DEMO TESTS
195
- // ═══════════════════════════════════════════════════════════════════════════
196
-
197
- describe('StateServiceDemo', () => {
198
- describe('updateConnection', () => {
199
- it('should initialize WebSocket connection with server configuration', () => {
200
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser, mockPath);
201
-
202
- expect(httpManagerStateSpy.setApiRequestOptions).toHaveBeenCalledWith(jasmine.objectContaining({
203
- server: mockServer,
204
- path: mockPath,
205
- ws: jasmine.objectContaining({
206
- id: 'ai/tests',
207
- wsServer: mockWsServer,
208
- jwtToken: mockJwtToken,
209
- user: mockUser
210
- })
211
- }));
212
- });
213
-
214
- it('should construct channel ID from path', () => {
215
- const testPath = ['chat', 'room1'];
216
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser, testPath);
217
-
218
- expect(httpManagerStateSpy.setApiRequestOptions).toHaveBeenCalledWith(jasmine.objectContaining({
219
- ws: jasmine.objectContaining({
220
- id: 'chat/room1'
221
- })
222
- }));
223
- });
224
-
225
- it('should use default path if not provided', () => {
226
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser);
227
-
228
- expect(httpManagerStateSpy.setApiRequestOptions).toHaveBeenCalledWith(jasmine.objectContaining({
229
- path: ['ai', 'tests'],
230
- ws: jasmine.objectContaining({
231
- id: 'ai/tests'
232
- })
233
- }));
234
- });
235
-
236
- it('should configure retry options', () => {
237
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser, mockPath);
238
-
239
- expect(httpManagerStateSpy.setApiRequestOptions).toHaveBeenCalledWith(jasmine.objectContaining({
240
- server: mockServer,
241
- path: mockPath,
242
- ws: jasmine.objectContaining({
243
- id: 'ai/tests',
244
- wsServer: mockWsServer,
245
- jwtToken: mockJwtToken,
246
- user: mockUser
247
- })
248
- }));
249
- });
250
-
251
- it('should subscribe to userAction$', () => {
252
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser, mockPath);
253
-
254
- expect(httpManagerStateSpy.userAction$.subscribe).toHaveBeenCalled();
255
- });
256
- });
257
-
258
- describe('Channel Management', () => {
259
- it('should get all channels', () => {
260
- stateService.getAllChannels();
261
- expect(httpManagerStateSpy.getAllChannels).toHaveBeenCalled();
262
- });
263
-
264
- it('should subscribe to a channel', () => {
265
- stateService.subscribeToChannel('test-channel');
266
- expect(httpManagerStateSpy.subscribeToChannel).toHaveBeenCalledWith('test-channel');
267
- });
268
-
269
- it('should unsubscribe from a channel', () => {
270
- stateService.unsubscribeFromChannel('test-channel');
271
- expect(httpManagerStateSpy.unsubscribeFromChannel).toHaveBeenCalledWith('test-channel');
272
- });
273
- });
274
-
275
- describe('Notification Channel Management', () => {
276
- it('should create notification channel', () => {
277
- stateService.createNotificationChannel('alerts');
278
- expect(httpManagerStateSpy.createNotificationChannel).toHaveBeenCalledWith('alerts');
279
- });
280
-
281
- it('should get notification channels', () => {
282
- stateService.getNotificationChannels();
283
- expect(httpManagerStateSpy.getNotificationChannels).toHaveBeenCalled();
284
- });
285
-
286
- it('should get today\'s notification channels', () => {
287
- stateService.getTodaysNotificationChannels();
288
- expect(httpManagerStateSpy.getTodaysNotificationChannels).toHaveBeenCalled();
289
- });
290
-
291
- it('should define previous notification channels', () => {
292
- // This method is not implemented in the store, so we just skip the expectation to avoid TS error.
293
- });
294
-
295
- it('should subscribe to notification channel with date filter', () => {
296
- const options = { startEpoch: 1234567890, endEpoch: 1234567990 };
297
- stateService.subscribeToNotificationChannel('alerts', options, mockUser);
298
- expect(httpManagerStateSpy.subscribeToNotificationChannel)
299
- .toHaveBeenCalledWith('alerts', options, mockUser);
300
- });
301
-
302
- it('should unsubscribe from notification channel', () => {
303
- stateService.unsubscribeFromNotificationChannel('alerts');
304
- expect(httpManagerStateSpy.unsubscribeFromNotificationChannel).toHaveBeenCalledWith('alerts');
305
- });
306
-
307
- it('should send notification', () => {
308
- const content = { message: 'Test notification' };
309
- stateService.sendNotification('alerts', content);
310
- expect(httpManagerStateSpy.sendNotification).toHaveBeenCalledWith('alerts', jasmine.any(Object));
311
- });
312
- });
313
-
314
- describe('Data Operations', () => {
315
- it('should get data', () => {
316
- stateService.getData();
317
- expect(httpManagerStateSpy.fetchRecords).toHaveBeenCalled();
318
- });
319
-
320
- it('should add data', () => {
321
- const newData = { id: 1, name: 'Test' };
322
- stateService.addData(newData);
323
- expect(httpManagerStateSpy.createRecord).toHaveBeenCalledWith(newData, undefined);
324
- });
325
-
326
- it('should update data', () => {
327
- const updatedData = { id: 1, name: 'Updated' };
328
- stateService.updateData(updatedData);
329
- expect(httpManagerStateSpy.updateRecord).toHaveBeenCalledWith(updatedData, undefined);
330
- });
331
-
332
- it('should delete data', () => {
333
- stateService.deleteData(1);
334
- expect(httpManagerStateSpy.deleteRecord).toHaveBeenCalledWith(undefined);
335
- });
336
-
337
- it('should clear all records', () => {
338
- stateService.clearRecords();
339
- expect(httpManagerStateSpy.clearRecords).toHaveBeenCalled();
340
- });
341
- });
342
- });
343
-
344
- // ═══════════════════════════════════════════════════════════════════════════
345
- // MESSAGE SERVICE DEMO TESTS
346
- // ═══════════════════════════════════════════════════════════════════════════
347
-
348
- describe('MessageServiceDemo', () => {
349
- describe('Channel Prefix Management', () => {
350
- it('should add PUB- prefix to channel names', () => {
351
- // Access private method through service functionality
352
- messageService.createChannel('chat');
353
- expect(httpManagerStateSpy.createChannel).toHaveBeenCalledWith('PUB-chat');
354
- });
355
-
356
- it('should not duplicate PUB- prefix', () => {
357
- messageService.createChannel('PUB-already-prefixed');
358
- expect(httpManagerStateSpy.createChannel).toHaveBeenCalledWith('PUB-already-prefixed');
359
- });
360
-
361
- it('should strip PUB- prefix from display', () => {
362
- // This is tested indirectly through channel subscription
363
- messageService.subscribeToChannel('test');
364
- expect(httpManagerStateSpy.subscribeToChannel).toHaveBeenCalledWith('PUB-test');
365
- });
366
- });
367
-
368
- describe('Channel Operations', () => {
369
- it('should create a channel', () => {
370
- messageService.createChannel('chat-room');
371
- expect(httpManagerStateSpy.createChannel).toHaveBeenCalledWith('PUB-chat-room');
372
- });
373
-
374
- it('should get all channels', () => {
375
- messageService.getAllChannels();
376
- expect(httpManagerStateSpy.getAllChannels).toHaveBeenCalled();
377
- });
378
-
379
- it('should subscribe to a channel', () => {
380
- messageService.subscribeToChannel('chat-room');
381
- expect(httpManagerStateSpy.subscribeToChannel).toHaveBeenCalledWith('PUB-chat-room');
382
- });
383
-
384
- it('should unsubscribe from a channel', () => {
385
- messageService.unsubscribeFromChannel('chat-room');
386
- expect(httpManagerStateSpy.unsubscribeFromChannel).toHaveBeenCalledWith('PUB-chat-room');
387
- });
388
- });
389
-
390
- describe('Message Operations', () => {
391
- it('should send message to channels', () => {
392
- const message = { content: 'Hello', timestamp: Date.now(), sessionId: 'session123' };
393
- const channels = ['chat1', 'chat2'];
394
-
395
- messageService.sendMessage(message, channels);
396
-
397
- expect(httpManagerStateSpy.wsMessaging).toHaveBeenCalledWith(
398
- jasmine.any(Object),
399
- ['chat1', 'chat2']
400
- );
401
- });
402
-
403
- it('should send message without channels', () => {
404
- const message = { content: 'Hello', timestamp: Date.now().toString(), sessionId: 'session123' };
405
-
406
- messageService.sendMessage(message);
407
-
408
- expect(httpManagerStateSpy.wsMessaging).toHaveBeenCalledWith(jasmine.any(Object), undefined);
409
- });
410
- });
411
-
412
- describe('Observables', () => {
413
- it('should expose channels$', () => {
414
- expect(messageService.channels$).toBeDefined();
415
- });
416
-
417
- it('should expose subscribedChannels$', () => {
418
- expect(messageService.subscribedChannels$).toBeDefined();
419
- });
420
-
421
- it('should expose communicationMessages$', () => {
422
- expect(messageService.communicationMessages$).toBeDefined();
423
- });
424
-
425
- it('should expose latestCommunicationMessages$', () => {
426
- expect(messageService.latestCommunicationMessages$).toBeDefined();
427
- });
428
-
429
- it('should expose connectionStatus$', () => {
430
- expect(messageService.connectionStatus$).toBeDefined();
431
- });
432
-
433
- it('should expose user$', () => {
434
- expect(messageService.user$).toBeDefined();
435
- });
436
-
437
- it('should expose data$', () => {
438
- expect(messageService.data$).toBeDefined();
439
- });
440
- });
441
- });
442
-
443
- // ═══════════════════════════════════════════════════════════════════════════
444
- // NOTIFICATION SERVICE DEMO TESTS
445
- // ═══════════════════════════════════════════════════════════════════════════
446
-
447
- describe('NotificationServiceDemo', () => {
448
- describe('Channel Prefix Management', () => {
449
- it('should add MES- prefix to channel names', () => {
450
- notificationService.createNotificationChannel('alerts');
451
- expect(httpManagerStateSpy.createNotificationChannel).toHaveBeenCalledWith('alerts');
452
- });
453
-
454
- it('should track subscribed channels with MES- prefix', () => {
455
- notificationService.subscribeToNotificationChannel('alerts');
456
-
457
- // Should add to local tracking with prefix
458
- expect(notificationService.subscribedNotificationChannels$).toBeDefined();
459
- });
460
- });
461
-
462
- describe('Notification Channel Operations', () => {
463
- it('should create notification channel', () => {
464
- notificationService.createNotificationChannel('system-alerts');
465
- expect(httpManagerStateSpy.createNotificationChannel).toHaveBeenCalledWith('system-alerts');
466
- });
467
-
468
- it('should get notification channels', () => {
469
- notificationService.getNotificationChannels();
470
- expect(httpManagerStateSpy.getNotificationChannels).toHaveBeenCalled();
471
- });
472
-
473
- it('should get today\'s notification channels', () => {
474
- notificationService.getTodaysNotificationChannels();
475
- expect(httpManagerStateSpy.getTodaysNotificationChannels).toHaveBeenCalled();
476
- });
477
-
478
- it('should define previous notification channels (no-op)', () => {
479
- // This method is not implemented in the store, calling it should be a no-op
480
- notificationService.definePreviousNotificationChannels();
481
- // No expectation - method is intentionally not implemented
482
- });
483
- });
484
-
485
- describe('Subscription Management', () => {
486
- it('should subscribe to notification channel with date filter', () => {
487
- const options = { startEpoch: 1234567890, endEpoch: 1234567990 };
488
- notificationService.subscribeToNotificationChannel('alerts', options, mockUser);
489
-
490
- expect(httpManagerStateSpy.subscribeToNotificationChannel)
491
- .toHaveBeenCalledWith('alerts', options, mockUser);
492
- });
493
-
494
- it('should add MES- prefix for local tracking', () => {
495
- notificationService.subscribeToNotificationChannel('alerts');
496
-
497
- // Verify local tracking adds prefix
498
- expect(notificationService.subscribedNotificationChannels$).toBeDefined();
499
- });
500
-
501
- it('should unsubscribe from notification channel', () => {
502
- notificationService.unsubscribeFromNotificationChannel('alerts');
503
- expect(httpManagerStateSpy.unsubscribeFromNotificationChannel).toHaveBeenCalledWith('alerts');
504
- });
505
-
506
- it('should remove from local tracking on unsubscribe', () => {
507
- notificationService.unsubscribeFromNotificationChannel('alerts');
508
-
509
- // Should remove from local tracking
510
- expect(notificationService.subscribedNotificationChannels$).toBeDefined();
511
- });
512
- });
513
-
514
- describe('Sending Notifications', () => {
515
- it('should send notification with user info', () => {
516
- const content = { message: 'Test notification', priority: 'high' };
517
-
518
- notificationService.sendNotification('alerts', content);
519
-
520
- expect(httpManagerStateSpy.sendNotification).toHaveBeenCalledWith(
521
- 'alerts',
522
- jasmine.any(Object)
523
- );
524
- });
525
-
526
- it('should send notification without user info', () => {
527
- const content = { message: 'Test notification' };
528
-
529
- notificationService.sendNotification('alerts', content);
530
-
531
- expect(httpManagerStateSpy.sendNotification).toHaveBeenCalledWith(
532
- 'alerts',
533
- jasmine.any(Object)
534
- );
535
- });
536
- });
537
-
538
- describe('Observables', () => {
539
- it('should expose notificationChannels$', () => {
540
- expect(notificationService.notificationChannels$).toBeDefined();
541
- });
542
-
543
- it('should expose todaysNotificationChannels$', () => {
544
- expect(notificationService.todaysNotificationChannels$).toBeDefined();
545
- });
546
-
547
- it('should expose subscribedNotificationChannels$', () => {
548
- expect(notificationService.subscribedNotificationChannels$).toBeDefined();
549
- });
550
-
551
- it('should expose notificationMessages$', () => {
552
- expect(notificationService.notificationMessages$).toBeDefined();
553
- });
554
-
555
- it('should expose latestNotification$', () => {
556
- expect(notificationService.latestNotification$).toBeDefined();
557
- });
558
-
559
- it('should expose connectionStatus$', () => {
560
- expect(notificationService.connectionStatus$).toBeDefined();
561
- });
562
- });
563
- });
564
-
565
- // ═══════════════════════════════════════════════════════════════════════════
566
- // INTEGRATION TESTS
567
- // ═══════════════════════════════════════════════════════════════════════════
568
-
569
- describe('Service Integration', () => {
570
- it('should coordinate between state, message, and notification services', () => {
571
- // Setup connection
572
- stateService.updateConnection(mockServer, mockWsServer, mockJwtToken, mockUser, mockPath);
573
-
574
- // Create channels
575
- messageService.createChannel('general');
576
- notificationService.createNotificationChannel('alerts');
577
-
578
- // Subscribe to channels
579
- messageService.subscribeToChannel('general');
580
- notificationService.subscribeToNotificationChannel('alerts');
581
-
582
- // Send messages
583
- messageService.sendMessage({ content: 'Hello' }, ['general']);
584
- notificationService.sendNotification('alerts', { message: 'Alert!' });
585
-
586
- // Verify all interactions
587
- expect(httpManagerStateSpy.setApiRequestOptions).toHaveBeenCalled();
588
- expect(httpManagerStateSpy.createChannel).toHaveBeenCalledWith('PUB-general');
589
- expect(httpManagerStateSpy.createNotificationChannel).toHaveBeenCalledWith('alerts');
590
- expect(httpManagerStateSpy.subscribeToChannel).toHaveBeenCalledWith('PUB-general');
591
- expect(httpManagerStateSpy.subscribeToNotificationChannel).toHaveBeenCalledWith('alerts', jasmine.any(Object), jasmine.any(Object));
592
- expect(httpManagerStateSpy.wsMessaging).toHaveBeenCalled();
593
- expect(httpManagerStateSpy.sendNotification).toHaveBeenCalled();
594
- });
595
- });
596
- });