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,119 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { RandomNumber } from '../../../../services/utils/encryption/random';
3
- import { RetryOptions, DataType, DatabaseStorage } from '../../../../models';
4
-
5
- import { HTTPManagerStateService, ApiRequest, RequestOptions } from '../../../../services';
6
-
7
- import { OIDCClient } from '../../models/oidc-client.model';
8
- import { UserData } from '../../models/user-data.model';
9
- import { ChannelMessage } from '../../../../services/ws-manager-service/models/channel-message.model';
10
-
11
- @Injectable({
12
- providedIn: 'root'
13
- })
14
- export class StateDataRequestService extends HTTPManagerStateService<any> {
15
-
16
- attempts$ = this.wsRetryAttempts$
17
- nextRetry$ = this.wsNextRetry$
18
-
19
- path: (string|number)[] = ['ai','tests']
20
-
21
- constructor() {
22
- super(
23
- ApiRequest.adapt({
24
- server: '',
25
- retry: RetryOptions.adapt({
26
- times: 3,
27
- delay: 1,
28
- }),
29
- adapter: OIDCClient.adapt,
30
- ws: {
31
- id: ``,
32
- // wsChannels: ['allChannels'],
33
- // access: ['read,write,delete,update'],
34
- wsServer: '',
35
- jwtToken: '',
36
- user: UserData.adapt(),
37
- retry: RetryOptions.adapt({
38
- times: 3,
39
- delay: 10,
40
- }),
41
- }
42
- }),
43
- DataType.ARRAY,
44
- DatabaseStorage.adapt({
45
- table: 'ws_demo_data',
46
- expiresIn: '5mn',
47
- })
48
- )
49
- }
50
-
51
- updateConnection(
52
- server: string,
53
- wsServer: string,
54
- jwtToken: string,
55
- user: any,
56
- path: (string|number)[] = [],
57
- ) {
58
-
59
- this.path = path
60
-
61
- this.setApiRequestOptions({
62
- server,
63
- retry: RetryOptions.adapt({
64
- times: 3,
65
- delay: 1,
66
- }),
67
- adapter: OIDCClient.adapt,
68
- ws: {
69
- id: this.path.join('/'),
70
- wsServer,
71
- jwtToken,
72
- user, // general info about user
73
- retry: RetryOptions.adapt({
74
- times: 3,
75
- delay: 10,
76
- }),
77
- }
78
- })
79
-
80
- }
81
-
82
- addData() {
83
-
84
- const num = RandomNumber(1000, 9999)
85
-
86
- const newData = {
87
- "spiffe": `sample.com/developer/${num}`,
88
- "last_name": "boni",
89
- "email": "mikeboni@hotmail.com",
90
- "first_name": "mike"
91
- }
92
-
93
- this.createRecord(newData, RequestOptions.adapt({ path: this.path }) )
94
-
95
- }
96
-
97
- sendMessage(data: ChannelMessage) {
98
- console.log('sendMessage', data)
99
- this.wsMessaging(data)
100
- }
101
-
102
- getData() {
103
- this.fetchRecords(RequestOptions.adapt({ path: this.path }) )
104
- }
105
-
106
- updateData(data: any) {
107
- const sampleOptions = RequestOptions.adapt({ path: [...this.path, data.id] })
108
- console.log('updateData', sampleOptions)
109
- this.updateRecord(data, sampleOptions)
110
-
111
- }
112
-
113
- deleteData(data: any) {
114
- const sampleOptions = RequestOptions.adapt({ path: [...this.path, data.id] })
115
- console.log('deleteData', sampleOptions)
116
- this.deleteRecord(sampleOptions)
117
- }
118
-
119
- }
@@ -1,16 +0,0 @@
1
- import { Component, OnInit } from '@angular/core';
2
-
3
- @Component({
4
- selector: 'app-ws-ai-messaging',
5
- templateUrl: './ws-ai-messaging.component.html',
6
- styleUrls: ['./ws-ai-messaging.component.css'],
7
- standalone: false
8
- })
9
- export class WsAiMessagingComponent implements OnInit {
10
-
11
- constructor() { }
12
-
13
- ngOnInit() {
14
- }
15
-
16
- }
@@ -1,16 +0,0 @@
1
- import { Component, OnInit } from '@angular/core';
2
-
3
- @Component({
4
- selector: 'app-ws-chats',
5
- templateUrl: './ws-chats.component.html',
6
- styleUrls: ['./ws-chats.component.css'],
7
- standalone: false
8
- })
9
- export class WsChatsComponent implements OnInit {
10
-
11
- constructor() { }
12
-
13
- ngOnInit() {
14
- }
15
-
16
- }
@@ -1,31 +0,0 @@
1
- /* Highlight the current user chip with the theme primary color */
2
- .user-chip--primary {
3
- /* Prefer MDC/Material tokens; fall back to a safe primary */
4
- background-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5)) !important;
5
- /* Ensure foreground text renders white */
6
- color: #fff !important;
7
- /* Also set MDC chip variables where applicable */
8
- --mdc-evolution-chip-container-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5));
9
- --mdc-evolution-chip-label-text-color: #fff;
10
- }
11
-
12
- /* Force inner MDC chip parts to inherit white foreground */
13
- .user-chip--primary :is(
14
- .mdc-evolution-chip__text-label,
15
- .mdc-evolution-chip__action,
16
- .mdc-evolution-chip__cell,
17
- .mat-mdc-chip-action-label
18
- ) {
19
- color: #fff !important;
20
- }
21
-
22
- /* Strong fallback: ensure all descendants render white */
23
- .user-chip--primary,
24
- .user-chip--primary * {
25
- color: #fff !important;
26
- }
27
- .box {
28
- padding: .5rem;
29
- border: 1px solid rgb(174, 174, 13);
30
- background-color: rgb(236, 236, 175);
31
- }
@@ -1,94 +0,0 @@
1
- @if ((data$ | async); as data) {
2
- <div style="margin: 1rem;">
3
- @if ((users$ |async); as users) {
4
- <div>
5
- @if (users.length > 0) {
6
- <h3 style="margin: 0;">Connected Users</h3>
7
- } @else {
8
- <h3 style="margin: 0;">No Users</h3>
9
- }
10
- <mat-chip-set>
11
- @for (user of users; track $index) {
12
- <mat-chip
13
- [class.user-chip--primary]="isUser(user, (user$ | async))"
14
- [style.color]="isUser(user, (user$ | async)) ? '#fff' : null"
15
- [disableRipple]="true"
16
- >
17
- {{ user.name || user.ldap || user.id || 'Anonymous' }}
18
- </mat-chip>
19
- }
20
- </mat-chip-set>
21
- </div>
22
- }
23
- <div style="margin-top: 1rem; margin-bottom: 1rem;">
24
- <mat-divider></mat-divider>
25
- </div>
26
-
27
- <div class="box" style="margin-bottom: 1rem;" *ngIf="(userAction$ | async) as userAction">
28
- {{ userAction?.content?.user?.name }} has {{ userAction?.content?.method }}
29
- </div>
30
-
31
- <h3 style="margin: 0;">Data Actions</h3>
32
- <div style="display: flex; gap: 1rem; margin-bottom: 1rem;">
33
- <button mat-stroked-button (click)="onGetData()">Get Data</button>
34
- <div style="flex:1"></div>
35
- <button mat-stroked-button color="accent" (click)="onUpdateData(data)">Update Data</button>
36
- <button mat-stroked-button color="warn" (click)="onRemoveData(data)">Remove Data</button>
37
- <button mat-stroked-button color="primary" (click)="onAddData()">Add Data</button>
38
- </div>
39
-
40
- <h3 style="margin: 0; margin-top: 1rem;">WebSocketMessageService Test</h3>
41
-
42
- <p style="font-size: 0.875rem; color: #666; margin: 0;">
43
- <strong>Note:</strong> "Fake SessionId" will be received and processed. "Current SessionId" will be filtered out (self-message).
44
- @if (data.length > 0) {
45
- <div>
46
- <table mat-table [dataSource]="data" style="border: 1px solid grey;">
47
- <ng-container matColumnDef="id">
48
- <th mat-header-cell *matHeaderCellDef> ID </th>
49
- <td mat-cell *matCellDef="let element"> {{element.id}} </td>
50
- </ng-container>
51
- <ng-container matColumnDef="spiffe">
52
- <th mat-header-cell *matHeaderCellDef> Spiffe </th>
53
- <td mat-cell *matCellDef="let element"> {{element.spiffe}} </td>
54
- </ng-container>
55
- <ng-container matColumnDef="name">
56
- <th mat-header-cell *matHeaderCellDef> Name </th>
57
- <td mat-cell *matCellDef="let element"> {{element.first_name}} {{element.last_name}}</td>
58
- </ng-container>
59
- <ng-container matColumnDef="email">
60
- <th mat-header-cell *matHeaderCellDef> Email </th>
61
- <td mat-cell *matCellDef="let element"> {{element.email}} </td>
62
- </ng-container>
63
- <tr mat-header-row *matHeaderRowDef="['id', 'spiffe', 'name', 'email']"></tr>
64
- <tr mat-row *matRowDef="let row; columns: ['id', 'spiffe', 'name', 'email'];"></tr>
65
- </table>
66
- <div style="border: 1px solid grey; padding: .5rem; border-top: none;">
67
- <h3 style="margin: 0;">Total Records {{ data.length }}</h3>
68
- </div>
69
- </div>
70
- } @else {
71
- <div style="margin-top: 1rem; font-style: italic;">
72
- No Data Available
73
- </div>
74
- }
75
-
76
- <div style="margin-bottom: 1rem; margin-top: 1rem;">
77
- <mat-divider></mat-divider>
78
- </div>
79
-
80
- <div style="display: flex; gap: 0.5rem; margin-bottom: 1rem;">
81
- <button mat-flat-button color="primary" (click)="onTestDirectStateMessage(63, true)">
82
- Test UPDATE (Fake Id)
83
- </button>
84
- <button mat-stroked-button (click)="onTestDirectStateMessage(63, false)">
85
- Test UPDATE (Current Id)
86
- </button>
87
- <button mat-stroked-button (click)="onTestDirectStateMessage(63, false, 'custom-session-123')">
88
- Test UPDATE (Custom Id)
89
- </button>
90
- </div>
91
-
92
- </div>
93
- }
94
-
@@ -1,41 +0,0 @@
1
- .user-chip--primary {
2
- background-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5)) !important;
3
- color: #fff !important;
4
- --mdc-evolution-chip-container-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5));
5
- --mdc-evolution-chip-label-text-color: #fff;
6
- }
7
-
8
- .user-chip--primary :is(
9
- .mdc-evolution-chip__text-label,
10
- .mdc-evolution-chip__action,
11
- .mdc-evolution-chip__cell,
12
- .mat-mdc-chip-action-label
13
- ) {
14
- color: #fff !important;
15
- }
16
-
17
- .user-chip--primary,
18
- .user-chip--primary * {
19
- color: #fff !important;
20
- }
21
-
22
- :host ::ng-deep .user-chip--primary {
23
- background-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5)) !important;
24
- color: #fff !important;
25
- --mdc-evolution-chip-container-color: var(--mdc-theme-primary, var(--md-sys-color-primary, #3f51b5));
26
- --mdc-evolution-chip-label-text-color: #fff;
27
-
28
- .mdc-evolution-chip__text-label,
29
- .mdc-evolution-chip__action,
30
- .mdc-evolution-chip__cell,
31
- .mat-mdc-chip-action-label,
32
- * {
33
- color: #fff !important;
34
- }
35
- }
36
-
37
- .box {
38
- padding: .5rem;
39
- border: 1px solid rgb(174, 174, 13);
40
- background-color: rgb(236, 236, 175);
41
- }
@@ -1,203 +0,0 @@
1
- import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
2
- import { WsDataControlComponent } from './ws-data-control.component';
3
- import { StateDataRequestService } from '../services/state-data-request.service';
4
- import { BehaviorSubject } from 'rxjs';
5
- import { MatChipsModule } from '@angular/material/chips';
6
- import { MatTableModule } from '@angular/material/table';
7
- import { MatButtonModule } from '@angular/material/button';
8
- import { MatDividerModule } from '@angular/material/divider';
9
- import { NoopAnimationsModule } from '@angular/platform-browser/animations';
10
- import { CommonModule } from '@angular/common';
11
-
12
- describe('WsDataControlComponent', () => {
13
- let component: WsDataControlComponent;
14
- let fixture: ComponentFixture<WsDataControlComponent>;
15
-
16
- // Mock Data
17
- const mockUser = { sessionId: 'session-123', name: 'Mike Boni' };
18
- const mockUsers = [mockUser, { sessionId: 'session-456', name: 'Other User' }];
19
- const mockData = [
20
- { id: 1, spiffe: 'wavecoders.com/developer/1111', first_name: 'John', last_name: 'Doe', email: 'john@test.com' },
21
- { id: 63, spiffe: 'wavecoders.com/developer/2222', first_name: 'mike', last_name: 'boni', email: 'mikeboni@hotmail.com' }
22
- ];
23
- const mockAction = { content: { user: mockUser, method: 'updated data' } };
24
-
25
- // Subjects to control the observables in the mock service
26
- const userSubject = new BehaviorSubject<any>(mockUser);
27
- const usersSubject = new BehaviorSubject<any[]>(mockUsers);
28
- const userActionSubject = new BehaviorSubject<any>(mockAction);
29
- const dataSubject = new BehaviorSubject<any[]>(mockData);
30
-
31
- // Mock Service Class
32
- class MockStateDataRequestService {
33
- user$ = userSubject.asObservable();
34
- userList$ = usersSubject.asObservable();
35
- userAction$ = userActionSubject.asObservable();
36
- data$ = dataSubject.asObservable();
37
-
38
- updateConnection(server: string, wsServer: string, jwtToken: string, user: any, path: (string|number)[]) {}
39
- getData() {}
40
- addData() {}
41
- updateData(data: any) {}
42
- deleteData(data: any) {}
43
- }
44
-
45
- let mockServiceInstance: MockStateDataRequestService;
46
-
47
- beforeEach(async () => {
48
- // Ensure mock data is available immediately
49
- dataSubject.next(mockData);
50
- userSubject.next(mockUser);
51
- usersSubject.next(mockUsers);
52
- userActionSubject.next(mockAction);
53
-
54
- // Create mock service instance
55
- mockServiceInstance = new MockStateDataRequestService();
56
-
57
- // Spy on methods
58
- spyOn(mockServiceInstance, 'updateConnection');
59
- spyOn(mockServiceInstance, 'getData');
60
- spyOn(mockServiceInstance, 'addData');
61
- spyOn(mockServiceInstance, 'updateData');
62
- spyOn(mockServiceInstance, 'deleteData');
63
-
64
- await TestBed.configureTestingModule({
65
- declarations: [WsDataControlComponent],
66
- imports: [
67
- CommonModule,
68
- MatChipsModule,
69
- MatTableModule,
70
- MatButtonModule,
71
- MatDividerModule,
72
- NoopAnimationsModule
73
- ],
74
- providers: [
75
- { provide: StateDataRequestService, useValue: mockServiceInstance }
76
- ]
77
- }).compileComponents();
78
-
79
- fixture = TestBed.createComponent(WsDataControlComponent);
80
- component = fixture.componentInstance;
81
-
82
- // Set required @Input properties
83
- component.server = 'http://api.test.com';
84
- component.wsServer = 'ws://ws.test.com';
85
- component.jwtToken = 'mock-jwt-token';
86
- component.user = mockUser;
87
- component.path = ['ai', 'tests'];
88
-
89
- // Ensure initial data is available for table rendering test
90
- fixture.detectChanges();
91
- });
92
-
93
- it('should create the component', () => {
94
- expect(component).toBeTruthy();
95
- });
96
-
97
- it('should call updateConnection and getData during initialization', () => {
98
- expect(mockServiceInstance.updateConnection).toHaveBeenCalledWith(
99
- component.server,
100
- component.wsServer,
101
- component.jwtToken,
102
- component.user,
103
- component.path
104
- );
105
- expect(mockServiceInstance.getData).toHaveBeenCalled();
106
- });
107
-
108
- it('should call getData when onGetData is triggered', () => {
109
- component.onGetData();
110
- // once during init, once during manual call
111
- expect(mockServiceInstance.getData).toHaveBeenCalledTimes(2);
112
- });
113
-
114
- it('should call addData when onAddData is triggered', () => {
115
- component.onAddData();
116
- expect(mockServiceInstance.addData).toHaveBeenCalled();
117
- });
118
-
119
- it('should call updateData with generated random spiffe when onUpdateData is triggered', () => {
120
- // Call the method - we can't easily mock RandomNumber, so we just verify updateData is called
121
- component.onUpdateData(mockData);
122
-
123
- expect(mockServiceInstance.updateData).toHaveBeenCalled();
124
-
125
- // Verify the data structure passed to updateData
126
- const callArgs = (mockServiceInstance.updateData as any).calls.mostRecent().args[0];
127
- expect(callArgs).toBeDefined();
128
- expect(callArgs.spiffe).toBeDefined();
129
- expect(callArgs.spiffe).toMatch(/^wavecoders\.com\/developer\/\d{4,5}$/);
130
- expect(callArgs.id).toBe(63);
131
- expect(callArgs.first_name).toBe('mike');
132
- expect(callArgs.last_name).toBe('boni');
133
- expect(callArgs.email).toBe('mikeboni@hotmail.com');
134
- });
135
-
136
- it('should call deleteData with the last record when onRemoveData is triggered', () => {
137
- component.onRemoveData(mockData);
138
- const lastRecord = mockData[mockData.length - 1];
139
- expect(mockServiceInstance.deleteData).toHaveBeenCalledWith(lastRecord);
140
- });
141
-
142
- it('should correctly verify if a user is the current user via isUser', () => {
143
- const userA = { sessionId: 'AAA' };
144
- const userB = { sessionId: 'AAA' };
145
- const userC = { sessionId: 'CCC' };
146
-
147
- expect(component.isUser(userA, userB)).toBeTrue();
148
- expect(component.isUser(userA, userC)).toBeFalse();
149
- });
150
-
151
- it('should handle userAction$ timing logic (reset after 3 seconds)', fakeAsync(() => {
152
- let currentAction: any;
153
- const sub = component.userAction$.subscribe(val => currentAction = val);
154
-
155
- // 1. Initial state (from BehaviorSubject)
156
- expect(currentAction).toEqual(mockAction);
157
-
158
- // 2. Push new action
159
- const newAction = { content: { user: mockUser, method: 'added data' } };
160
- userActionSubject.next(newAction);
161
- tick(); // process the pipe
162
- expect(currentAction).toEqual(newAction);
163
-
164
- // 3. Wait 3 seconds
165
- tick(3000);
166
- expect(currentAction).toBeNull();
167
-
168
- sub.unsubscribe();
169
- }));
170
-
171
- it('should render the table when data is available', fakeAsync(() => {
172
- // Initial setup
173
- fixture.detectChanges();
174
- tick();
175
-
176
- const compiled = fixture.nativeElement as HTMLElement;
177
-
178
- // Multiple rounds of change detection to ensure async pipes resolve
179
- for (let i = 0; i < 3; i++) {
180
- fixture.detectChanges();
181
- tick();
182
- }
183
-
184
- const table = compiled.querySelector('table');
185
- expect(table).toBeTruthy();
186
-
187
- // Give Angular Material table more time to render
188
- fixture.detectChanges();
189
- tick();
190
-
191
- // Check for table rows (header + data rows)
192
- const rows = compiled.querySelectorAll('tr');
193
- expect(rows.length).toBeGreaterThan(1);
194
- }));
195
-
196
- it('should display "No Data Available" when data list is empty', () => {
197
- dataSubject.next([]);
198
- fixture.detectChanges();
199
-
200
- const compiled = fixture.nativeElement as HTMLElement;
201
- expect(compiled.textContent).toContain('No Data Available');
202
- });
203
- });
@@ -1,144 +0,0 @@
1
- import { Component, inject, Input, OnInit } from '@angular/core';
2
- import { RandomNumber } from '../../../../services/utils/encryption/random';
3
-
4
- import { StateDataRequestService } from '../services/state-data-request.service';
5
- import { switchMap, timer, map, startWith } from 'rxjs';
6
- import { WebSocketMessageService } from '../../../../services/ws-manager-service/services/websocket-message.service';
7
- import { StateMessage } from '../../../../services/ws-manager-service/models/state-message.model';
8
-
9
- @Component({
10
- selector: 'app-ws-data-control',
11
- templateUrl: './ws-data-control.component.html',
12
- styleUrls: ['./ws-data-control.component.scss'],
13
- standalone: false
14
- })
15
- export class WsDataControlComponent implements OnInit {
16
-
17
- @Input() server!: string;
18
- @Input() wsServer!: string;
19
- @Input() jwtToken!: string;
20
- @Input() user!: any;
21
- @Input() path: (string|number)[] = ['ai','tests'];
22
-
23
- stateDataRequestService = inject(StateDataRequestService)
24
- webSocketMessageService = inject(WebSocketMessageService)
25
-
26
- user$ = this.stateDataRequestService.user$
27
- users$ = this.stateDataRequestService.userList$
28
-
29
- userAction$ = this.stateDataRequestService.userAction$
30
- .pipe(
31
- switchMap((action) =>
32
- timer(3 * 1000).pipe(
33
- map(() => null),
34
- startWith(action)
35
- )
36
- )
37
- );
38
-
39
- data$ = this.stateDataRequestService.data$;
40
-
41
- isUser = (user: any, userItem: any) => {
42
- return user.sessionId === userItem.sessionId
43
- }
44
-
45
- ngOnInit() {
46
- this.stateDataRequestService.updateConnection(this.server, this.wsServer, this.jwtToken, this.user, this.path);
47
- this.stateDataRequestService.getData()
48
- }
49
-
50
- onGetData() {
51
- this.stateDataRequestService.getData()
52
- }
53
-
54
- onAddData() {
55
- this.stateDataRequestService.addData()
56
- }
57
-
58
- onUpdateData(data: any[]) {
59
-
60
- const num = RandomNumber(1000, 9999)
61
-
62
- const newData = {
63
- "spiffe": `wavecoders.com/developer/${num}`,
64
- "id": 63,
65
- "last_name": "boni",
66
- "email": "mikeboni@hotmail.com",
67
- "first_name": "mike"
68
- }
69
-
70
- this.stateDataRequestService.updateData(newData)
71
-
72
- }
73
-
74
- onRemoveData(data: any) {
75
- const lastRec = data[data.length -1]
76
- this.stateDataRequestService.deleteData(lastRec)
77
- }
78
-
79
- /**
80
- * Test direct state message via WebSocketMessageService
81
- * Sends an UPDATE message that should trigger fetchRecord() in the state manager
82
- *
83
- * @param recordId - The record ID to update (default: 63)
84
- * @param useFakeSessionId - If true, uses a fake sessionId to avoid filtering (default: true)
85
- * @param customSessionId - Optional custom sessionId (overrides useFakeSessionId if provided)
86
- */
87
- onTestDirectStateMessage(recordId: number = 63, useFakeSessionId: boolean = true, customSessionId?: string) {
88
- // Get actual sessionId from sessionStorage (stored by HTTPManagerStateService)
89
- const actualSessionId = sessionStorage.getItem('WSID') || 'unknown';
90
-
91
- // Determine sessionId to use
92
- let sessionId: string;
93
- if (customSessionId) {
94
- sessionId = customSessionId;
95
- } else if (useFakeSessionId) {
96
- sessionId = `test-${Date.now()}`;
97
- } else {
98
- // Use actual sessionId (will be filtered out by receiver)
99
- sessionId = actualSessionId;
100
- }
101
-
102
- // Build StateMessage with same structure as CRUD operations
103
- const stateMessage: StateMessage = {
104
- sessionId: {
105
- id: sessionId,
106
- name: useFakeSessionId ? 'Test Sender' : (this.user?.name || 'Current User')
107
- },
108
- content: {
109
- method: 'UPDATE',
110
- path: ['ai', 'tests', recordId],
111
- user: {
112
- id: sessionId,
113
- name: useFakeSessionId ? 'Test Sender' : (this.user?.name || 'Current User')
114
- }
115
- }
116
- };
117
-
118
- console.log('🧪 [TEST] Sending direct state message:', {
119
- recordId,
120
- sessionId,
121
- actualSessionId,
122
- useFakeSessionId,
123
- stateMessage
124
- });
125
-
126
- const success = this.webSocketMessageService.sendStateMessage(
127
- ['ai', 'tests'],
128
- stateMessage
129
- );
130
-
131
- console.log('🧪 [TEST] Message sent:', {
132
- success,
133
- actualSessionId,
134
- sentSessionId: sessionId,
135
- expectedBehavior: success
136
- ? 'Server will broadcast to SYS-ai/tests subscribers'
137
- : 'Failed to send (check connection)',
138
- receiverBehavior: sessionId !== actualSessionId
139
- ? 'Receiver will process message and call fetchRecord()'
140
- : 'Receiver will filter out (sessionId match)'
141
- });
142
- }
143
-
144
- }