http-request-manager 18.15.32 → 18.15.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +2 -0
  2. package/TEST_COVERAGE_SUMMARY.md +458 -0
  3. package/ng-package.json +8 -0
  4. package/package.json +5 -13
  5. package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
  6. package/src/docs/ARCHITECTURE.md +633 -0
  7. package/src/docs/BATCH_REQUEST_README.md +467 -0
  8. package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
  9. package/src/docs/DATABASE_README.md +1195 -0
  10. package/src/docs/ENCRYPTION_README.md +403 -0
  11. package/src/docs/HTTP_MANAGER_README.md +628 -0
  12. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
  13. package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
  14. package/src/docs/INTERCEPTOR_README.md +549 -0
  15. package/src/docs/LOCAL_STORAGE_README.md +1056 -0
  16. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
  17. package/src/docs/LOGGER_README.md +310 -0
  18. package/src/docs/MESSAGE_TRACKER_README.md +518 -0
  19. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
  20. package/src/docs/MODELS_README.md +1264 -0
  21. package/src/docs/SIGNAL_SERVICES_README.md +238 -0
  22. package/src/docs/SQL_DIXIE_README.md +574 -0
  23. package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
  24. package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
  25. package/src/docs/UPLOAD_REQUEST_README.md +324 -0
  26. package/src/docs/UTILS_README.md +1604 -0
  27. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
  28. package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
  29. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
  30. package/src/docs/WS_MANAGER_README.md +613 -0
  31. package/src/lib/http-request-manager.module.ts +147 -0
  32. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
  33. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  34. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
  35. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
  36. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  37. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
  38. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  39. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  40. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
  41. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  42. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  43. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
  44. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
  45. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
  46. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
  65. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
  66. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  67. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  68. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  76. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  77. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  78. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  79. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  84. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  85. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
  86. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
  87. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
  88. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
  89. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  90. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
  91. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
  92. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
  93. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  94. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  121. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
  122. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  123. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  124. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  143. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  144. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  145. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
  146. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  148. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  149. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
  150. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
  151. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
  152. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
  153. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
  154. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
  155. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
  156. package/src/lib/index.ts +3 -0
  157. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  158. package/src/lib/interceptors/index.ts +6 -0
  159. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  160. package/src/lib/interceptors/models/index.ts +2 -0
  161. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  162. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  163. package/src/lib/interceptors/request-header.interceptor.ts +56 -0
  164. package/src/lib/message-display/README.md +509 -0
  165. package/src/lib/message-display/index.ts +4 -0
  166. package/src/lib/message-display/models/action.model.ts +27 -0
  167. package/src/lib/message-display/models/communication-message.model.ts +77 -0
  168. package/src/lib/message-display/models/display-config.model.ts +35 -0
  169. package/src/lib/message-display/models/display-rule.interface.ts +28 -0
  170. package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
  171. package/src/lib/message-display/models/index.ts +6 -0
  172. package/src/lib/message-display/models/slide.model.ts +24 -0
  173. package/src/lib/message-display/rules/default-display-rules.ts +35 -0
  174. package/src/lib/message-display/services/message-display-router.service.ts +63 -0
  175. package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
  176. package/src/lib/models/batch-options.model.ts +33 -0
  177. package/src/lib/models/batch-progress.model.ts +19 -0
  178. package/src/lib/models/batch-request-state.model.ts +40 -0
  179. package/src/lib/models/batch-result.model.ts +30 -0
  180. package/src/lib/models/config-http-options.model.ts +45 -0
  181. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  182. package/src/lib/models/config-options.model.ts +27 -0
  183. package/src/lib/models/config-token.model.ts +9 -0
  184. package/src/lib/models/data-type.enum.ts +5 -0
  185. package/src/lib/models/database-storage.model.ts +24 -0
  186. package/src/lib/models/index.ts +16 -0
  187. package/src/lib/models/retry-options.model.ts +22 -0
  188. package/src/lib/models/upload-validation-error.model.ts +46 -0
  189. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
  190. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
  191. package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
  192. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
  193. package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
  194. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
  195. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
  196. package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
  197. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
  198. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
  199. package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
  200. package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
  201. package/src/lib/services/database-manager-service/index.ts +4 -0
  202. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  203. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  204. package/src/lib/services/index.ts +20 -0
  205. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  206. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  207. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
  208. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  209. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
  210. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  211. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  212. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  213. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  214. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  215. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  216. package/src/lib/services/request-manager-services/README.md +282 -0
  217. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
  218. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
  219. package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
  220. package/src/lib/services/request-manager-services/index.ts +8 -0
  221. package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
  222. package/src/lib/services/request-manager-services/request.service.ts +435 -0
  223. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  224. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  225. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  226. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  227. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
  228. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
  229. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
  230. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  231. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
  232. package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
  233. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
  234. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
  235. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
  236. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
  237. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
  238. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
  239. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
  240. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
  241. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  242. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
  243. package/src/lib/services/store-state-manager-service/index.ts +4 -0
  244. package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
  245. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
  246. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  247. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
  248. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
  249. package/src/lib/services/utils/app.service.spec.ts +25 -0
  250. package/src/lib/services/utils/app.service.ts +21 -0
  251. package/src/lib/services/utils/encryption/README.md +79 -0
  252. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  253. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  254. package/src/lib/services/utils/encryption/index.ts +5 -0
  255. package/src/lib/services/utils/encryption/random.ts +81 -0
  256. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
  257. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  258. package/src/lib/services/utils/headers.service.ts +18 -0
  259. package/src/lib/services/utils/index.ts +9 -0
  260. package/src/lib/services/utils/logger.service.ts +90 -0
  261. package/src/lib/services/utils/models/index.ts +4 -0
  262. package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
  263. package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
  264. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
  265. package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
  266. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  267. package/src/lib/services/utils/object-merger.service.ts +78 -0
  268. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  269. package/src/lib/services/utils/path-query.service.ts +69 -0
  270. package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
  271. package/src/lib/services/utils/random-color.utils.ts +83 -0
  272. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  273. package/src/lib/services/utils/utils.service.ts +192 -0
  274. package/src/lib/services/ws-manager-service/index.ts +13 -0
  275. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
  276. package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
  277. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
  278. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  279. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
  280. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
  281. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  282. package/src/lib/services/ws-manager-service/models/index.ts +10 -0
  283. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
  284. package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
  285. package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
  286. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  287. package/src/lib/services/ws-manager-service/services/index.ts +4 -0
  288. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
  289. package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
  290. package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
  291. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
  292. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
  293. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
  294. package/src/public-api.ts +19 -0
  295. package/tsconfig.lib.json +34 -0
  296. package/tsconfig.lib.prod.json +10 -0
  297. package/tsconfig.spec.json +14 -0
  298. package/fesm2022/http-request-manager.mjs +0 -13297
  299. package/fesm2022/http-request-manager.mjs.map +0 -1
  300. package/http-request-manager-18.15.32.tgz +0 -0
  301. package/types/http-request-manager.d.ts +0 -3875
@@ -0,0 +1,56 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
3
+ import { Observable, Subscription } from 'rxjs';
4
+ import { LangChangeEvent, TranslateService } from '@ngx-translate/core';
5
+
6
+ @Injectable()
7
+ export class RequestHeadersInterceptor implements HttpInterceptor {
8
+
9
+ subscriptions = new Subscription()
10
+ language = 'en-CA'
11
+
12
+ get currentDate() {
13
+
14
+ const date = new Date()
15
+
16
+ const year = date.getFullYear()
17
+ const month = String(date.getMonth() + 1).padStart(2, '0')
18
+ const day = String(date.getDate()).padStart(2, '0')
19
+
20
+ return `${year}-${month}-${day}`
21
+
22
+ }
23
+
24
+ constructor(
25
+ private translate: TranslateService
26
+ ) {
27
+ this.subscriptions.add(
28
+ this.translate.onLangChange
29
+ .subscribe((params: LangChangeEvent) => {
30
+ this.language = `${params.lang}-CA`
31
+ })
32
+ )
33
+ }
34
+
35
+ intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
36
+
37
+ // Don't override Content-Type for FormData (file uploads) — let browser set multipart/form-data
38
+ const skipContentType = request.body instanceof FormData;
39
+
40
+ request = request.clone({
41
+ setHeaders: {
42
+ ...(skipContentType ? {} : { 'Content-Type': 'application/json' }),
43
+ 'Accept-Language': this.language || 'en-CA',
44
+ 'Current-Date': this.currentDate
45
+ }
46
+ })
47
+
48
+ return next.handle(request)
49
+
50
+ }
51
+
52
+ ngOnDestroy() {
53
+ this.subscriptions.unsubscribe()
54
+ }
55
+ }
56
+
@@ -0,0 +1,509 @@
1
+ # Message Display System
2
+
3
+ A flexible, client-side message display system for WebSocket messages that determines presentation based on message content using rule-based routing.
4
+
5
+ ## Overview
6
+
7
+ The Message Display System provides a pluggable architecture for displaying WebSocket messages in different formats (snackbar, dialog, carousel, banner) based on configurable rules. The system is **fully client-side** - no server changes are required.
8
+
9
+ ## Features
10
+
11
+ ✅ **Rule-based routing** - First-match-wins rule evaluation
12
+ ✅ **Multiple display types** - Snackbar, Dialog, Carousel, Banner (extensible)
13
+ ✅ **Markdown support** - Optional markdown rendering for rich content
14
+ ✅ **Backward compatible** - Existing messages work without changes
15
+ ✅ **Zero server changes** - All logic is client-side
16
+ ✅ **Configurable** - Customize rules and strategies
17
+
18
+ ## Architecture
19
+
20
+ ```
21
+ WebSocket Message
22
+
23
+
24
+ MessageDisplayRouterService
25
+
26
+ ├─→ Evaluates rules (first match wins)
27
+ ├─→ Selects strategy
28
+
29
+
30
+ Strategy (Snackbar / Dialog / Carousel / Banner)
31
+
32
+
33
+ Display Component (MatSnackBar / MatDialog / Custom)
34
+ ```
35
+
36
+ ## Usage
37
+
38
+ ### Basic Usage (Automatic)
39
+
40
+ Messages are automatically routed based on rules. No code changes needed in components:
41
+
42
+ ```typescript
43
+ // In ws-messaging.component.ts (already configured)
44
+ this.latestCommunicationMessages$.subscribe((message) => {
45
+ this.messageDisplayService.display(message);
46
+ });
47
+ ```
48
+
49
+ ### Message Payload Structure
50
+
51
+ ```typescript
52
+ {
53
+ type: "channelMessage",
54
+ content: {
55
+ // Optional: Explicit display configuration
56
+ displayConfig?: {
57
+ type: 'snackbar' | 'dialog' | 'carousel' | 'banner',
58
+ supportsMarkdown?: boolean,
59
+ stackable?: boolean,
60
+ autoDismiss?: number
61
+ },
62
+
63
+ // Content
64
+ title?: string,
65
+ message: string,
66
+
67
+ // Rich media
68
+ slides?: Slide[],
69
+ image?: string,
70
+
71
+ // Metadata for rule matching
72
+ severity?: 'low' | 'medium' | 'high' | 'critical',
73
+ category?: string,
74
+ messageType?: string,
75
+
76
+ // Actions
77
+ actions?: Action[]
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### Examples
83
+
84
+ #### 1. Simple Message (Default - Snackbar)
85
+
86
+ ```typescript
87
+ {
88
+ type: "channelMessage",
89
+ content: {
90
+ message: "Hello world"
91
+ }
92
+ }
93
+ // → Displays as snackbar (default rule)
94
+ ```
95
+
96
+ #### 2. Dialog with Markdown
97
+
98
+ ```typescript
99
+ {
100
+ type: "channelMessage",
101
+ content: {
102
+ displayConfig: {
103
+ type: 'dialog',
104
+ supportsMarkdown: true
105
+ },
106
+ title: 'Update',
107
+ message: '# Heading\n\n**Bold text** and *italics*'
108
+ }
109
+ }
110
+ // → Displays as dialog with rendered markdown
111
+ ```
112
+
113
+ #### 3. Carousel
114
+
115
+ ```typescript
116
+ {
117
+ type: "channelMessage",
118
+ content: {
119
+ displayConfig: {
120
+ type: 'carousel',
121
+ supportsMarkdown: true
122
+ },
123
+ slides: [
124
+ { title: 'Slide 1', message: 'Content 1' },
125
+ { title: 'Slide 2', message: 'Content 2' }
126
+ ]
127
+ }
128
+ }
129
+ // → Displays as carousel with navigation
130
+ ```
131
+
132
+ #### 4. Error Message (Semantic Rule)
133
+
134
+ ```typescript
135
+ {
136
+ type: "channelMessage",
137
+ content: {
138
+ severity: 'error',
139
+ message: 'Something went wrong'
140
+ }
141
+ }
142
+ // → Displays as dialog (error severity rule)
143
+ ```
144
+
145
+ ## Default Rules
146
+
147
+ Rules are evaluated in order - first match wins:
148
+
149
+ 1. **Explicit displayConfig.type** - `carousel`, `dialog`, `banner`
150
+ 2. **Content-based** - Has slides → carousel, Has images → dialog
151
+ 3. **Semantic** - Error severity → dialog, System category → banner, Chat → snackbar
152
+ 4. **Default** - Fallback to snackbar
153
+
154
+ ## Customizing Rules
155
+
156
+ You can override the default rules:
157
+
158
+ ```typescript
159
+ // In your app module or component
160
+ const customRules: DisplayRule[] = [
161
+ {
162
+ id: 'urgent-messages',
163
+ match: (msg) => msg.content?.severity === 'critical',
164
+ display: { type: 'dialog', stackable: false }
165
+ },
166
+ // ... more custom rules
167
+ // Default MUST be last
168
+ {
169
+ id: 'default',
170
+ match: () => true,
171
+ display: { type: 'snackbar' }
172
+ }
173
+ ];
174
+
175
+ // Inject and set rules
176
+ const routerService = inject(MessageDisplayRouterService);
177
+ routerService.setRules(customRules);
178
+ ```
179
+
180
+ ## Adding Custom Strategies
181
+
182
+ ```typescript
183
+ @Injectable()
184
+ export class CustomStrategy implements IDisplayStrategy {
185
+ name = 'custom';
186
+
187
+ canHandle(message: CommunicationMessage): boolean {
188
+ return message.content?.messageType === 'special';
189
+ }
190
+
191
+ display(message: CommunicationMessage, config: DisplayConfig): void {
192
+ // Your custom display logic
193
+ }
194
+ }
195
+
196
+ // Register the strategy
197
+ const routerService = inject(MessageDisplayRouterService);
198
+ routerService.registerStrategies([inject(CustomStrategy)]);
199
+ ```
200
+
201
+ ---
202
+
203
+ ## How to Add New Display Types (Step-by-Step Guide)
204
+
205
+ To add a new display type (e.g., Dialog, Carousel, Banner), follow these steps:
206
+
207
+ ### Step 1: Add Display Type to the Type Union
208
+
209
+ **File:** `models/display-config.model.ts`
210
+
211
+ ```typescript
212
+ export type DisplayType = 'snackbar' | 'dialog' | 'carousel' | 'banner' | 'inline' | 'YOUR_TYPE';
213
+ ```
214
+
215
+ ### Step 2: Create the Display Component (if needed)
216
+
217
+ For complex display types (like dialogs, carousels), create an Angular component:
218
+
219
+ **File:** `components/your-component/your-component.component.ts`
220
+
221
+ ```typescript
222
+ import { Component, Inject, Input } from '@angular/core';
223
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
224
+ import { CommunicationMessage } from '../models/communication-message.model';
225
+
226
+ @Component({
227
+ selector: 'app-your-component',
228
+ templateUrl: './your-component.component.html',
229
+ styleUrls: ['./your-component.component.scss'],
230
+ standalone: false
231
+ })
232
+ export class YourComponent {
233
+ @Input() message: CommunicationMessage;
234
+
235
+ constructor(@Inject(MAT_DIALOG_DATA) public data: any) {}
236
+ }
237
+ ```
238
+
239
+ **File:** `components/your-component/your-component.component.html`
240
+
241
+ ```html
242
+ <h2>{{ data.content?.title }}</h2>
243
+ <p>{{ data.content?.message }}</p>
244
+ ```
245
+
246
+ ### Step 3: Create the Strategy
247
+
248
+ **File:** `strategies/your.strategy.ts`
249
+
250
+ ```typescript
251
+ import { Injectable, inject } from '@angular/core';
252
+ import { IDisplayStrategy } from '../models/display-strategy.interface';
253
+ import { CommunicationMessage } from '../models/communication-message.model';
254
+ import { DisplayConfig } from '../models/display-config.model';
255
+ import { YourComponent } from '../components/your-component/your-component.component';
256
+ import { MatDialog } from '@angular/material/dialog';
257
+
258
+ @Injectable()
259
+ export class YourStrategy implements IDisplayStrategy {
260
+ name = 'your_type';
261
+
262
+ private dialog = inject(MatDialog);
263
+
264
+ canHandle(message: CommunicationMessage): boolean {
265
+ return message.content?.displayConfig?.type === 'your_type';
266
+ }
267
+
268
+ display(message: CommunicationMessage, config: DisplayConfig): void {
269
+ this.dialog.open(YourComponent, {
270
+ data: message,
271
+ width: config.width || '600px',
272
+ disableClose: false,
273
+ panelClass: 'your-dialog-class'
274
+ });
275
+ }
276
+ }
277
+ ```
278
+
279
+ ### Step 4: Add Default Rules
280
+
281
+ **File:** `rules/default-display-rules.ts`
282
+
283
+ Add your rule in the appropriate position (order matters!):
284
+
285
+ ```typescript
286
+ export const defaultDisplayRules: DisplayRule[] = [
287
+ // 1. Explicit display types (highest priority)
288
+ {
289
+ id: 'your-type',
290
+ name: 'Your Display Type',
291
+ match: (message) => message.content?.displayConfig?.type === 'your_type',
292
+ display: {
293
+ type: 'your_type',
294
+ supportsMarkdown: true,
295
+ stackable: false,
296
+ width: '600px'
297
+ }
298
+ },
299
+
300
+ // 2. Content-based rules
301
+ // ... existing rules ...
302
+
303
+ // 3. Default (must be last)
304
+ {
305
+ id: 'default',
306
+ name: 'Default (Snackbar)',
307
+ match: () => true,
308
+ display: {
309
+ type: 'snackbar',
310
+ supportsMarkdown: false,
311
+ stackable: true,
312
+ autoDismiss: 3000
313
+ }
314
+ }
315
+ ];
316
+ ```
317
+
318
+ ### Step 5: Register the Strategy
319
+
320
+ **File:** `services/message-display-router.service.ts`
321
+
322
+ ```typescript
323
+ import { Injectable, inject } from '@angular/core';
324
+ import { IDisplayStrategy } from '../models/display-strategy.interface';
325
+ import { DisplayRule } from '../models/display-rule.interface';
326
+ import { CommunicationMessage } from '../models/communication-message.model';
327
+ import { defaultDisplayRules } from '../rules/default-display-rules';
328
+ import { SnackbarStrategy } from '../strategies/snackbar.strategy';
329
+ import { YourStrategy } from '../strategies/your.strategy'; // NEW
330
+
331
+ @Injectable({ providedIn: 'root' })
332
+ export class MessageDisplayRouterService {
333
+
334
+ private snackbarStrategy = inject(SnackbarStrategy);
335
+ private yourStrategy = inject(YourStrategy); // NEW
336
+
337
+ // All available strategies
338
+ private strategies: IDisplayStrategy[] = [
339
+ this.snackbarStrategy,
340
+ this.yourStrategy // NEW - add your strategy here
341
+ ];
342
+
343
+ // Rules are evaluated in order - first match wins
344
+ private rules: DisplayRule[] = defaultDisplayRules;
345
+
346
+ display(message: CommunicationMessage): void {
347
+ console.log('📨 MessageDisplayRouterService: Processing message:', message);
348
+
349
+ // Find FIRST matching rule (order matters!)
350
+ const matchingRule = this.rules.find(rule => rule.match(message));
351
+
352
+ // Get the rule (will be 'default' if nothing else matches)
353
+ const rule = matchingRule || this.rules[this.rules.length - 1];
354
+
355
+ console.log(`🎯 MessageDisplayRouterService: Matched rule '${rule.id}' (${rule.name})`);
356
+ console.log(` → Display type: ${rule.display.type}`);
357
+
358
+ // Get strategy for the display type
359
+ const strategy = this.strategies.find(s => s.name === rule.display.type);
360
+
361
+ if (!strategy) {
362
+ console.warn(`⚠️ MessageDisplayRouterService: No strategy found for type '${rule.display.type}', falling back to snackbar`);
363
+ this.snackbarStrategy.display(message, rule.display);
364
+ return;
365
+ }
366
+
367
+ // Execute display
368
+ console.log(`🚀 MessageDisplayRouterService: Executing ${strategy.name} strategy`);
369
+ strategy.display(message, rule.display);
370
+ }
371
+
372
+ registerStrategies(strategies: IDisplayStrategy[]): void {
373
+ this.strategies.push(...strategies);
374
+ }
375
+
376
+ setRules(rules: DisplayRule[]): void {
377
+ this.rules = rules;
378
+ }
379
+ }
380
+ ```
381
+
382
+ ### Step 6: Update Module Imports (if needed)
383
+
384
+ **File:** `http-request-manager.module.ts`
385
+
386
+ Add any required module imports:
387
+
388
+ ```typescript
389
+ import { NgModule } from '@angular/core';
390
+ import { MatDialogModule } from '@angular/material/dialog';
391
+ import { MarkdownModule } from 'ngx-markdown';
392
+ // ... other imports
393
+
394
+ @NgModule({
395
+ imports: [
396
+ CommonModule,
397
+ MatDialogModule, // For dialogs
398
+ MarkdownModule.forChild(), // For markdown support
399
+ // ... other modules
400
+ ]
401
+ })
402
+ export class HttpRequestManagerModule {}
403
+ ```
404
+
405
+ ### Step 7: Test Your Display Type
406
+
407
+ Create a test message:
408
+
409
+ ```typescript
410
+ {
411
+ type: "channelMessage",
412
+ content: {
413
+ displayConfig: {
414
+ type: 'your_type',
415
+ supportsMarkdown: true
416
+ },
417
+ title: 'Test Title',
418
+ message: 'Test message content'
419
+ }
420
+ }
421
+ ```
422
+
423
+ Send it via WebSocket and verify it displays correctly.
424
+
425
+ ---
426
+
427
+ ## Quick Reference: Strategy Implementation Checklist
428
+
429
+ - [ ] Add display type to `DisplayType` union
430
+ - [ ] Create component (if needed for complex UI)
431
+ - [ ] Create strategy class implementing `IDisplayStrategy`
432
+ - [ ] Add rule to `default-display-rules.ts`
433
+ - [ ] Register strategy in `MessageDisplayRouterService`
434
+ - [ ] Add required module imports
435
+ - [ ] Test with sample message
436
+
437
+ ---
438
+
439
+ ## Current Implementation Status
440
+
441
+ ### ✅ Phase 1: Core Infrastructure (COMPLETE)
442
+ - [x] Models and interfaces
443
+ - [x] Default display rules
444
+ - [x] MessageDisplayRouterService
445
+ - [x] SnackbarStrategy
446
+ - [x] Integration with ws-messaging.component
447
+
448
+ ### 🚧 Phase 2: Dialog Support (TODO)
449
+ - [ ] RichContentDialogComponent
450
+ - [ ] DialogStrategy
451
+ - [ ] MarkdownModule integration
452
+
453
+ ### 🚧 Phase 3: Carousel & Banner (TODO)
454
+ - [ ] CarouselDialogComponent
455
+ - [ ] CarouselStrategy
456
+ - [ ] BannerComponent
457
+ - [ ] BannerStrategy
458
+
459
+ ### 🚧 Phase 4: Configuration API (TODO)
460
+ - [ ] forRoot() configuration
461
+ - [ ] Injection tokens for customization
462
+
463
+ ## Files
464
+
465
+ ```
466
+ message-display/
467
+ ├── models/
468
+ │ ├── display-config.model.ts
469
+ │ ├── display-rule.interface.ts
470
+ │ ├── display-strategy.interface.ts
471
+ │ ├── communication-message.model.ts
472
+ │ ├── slide.model.ts
473
+ │ ├── action.model.ts
474
+ │ └── index.ts
475
+ ├── services/
476
+ │ └── message-display-router.service.ts
477
+ ├── strategies/
478
+ │ └── snackbar.strategy.ts
479
+ ├── rules/
480
+ │ └── default-display-rules.ts
481
+ └── index.ts
482
+ ```
483
+
484
+ ## Dependencies
485
+
486
+ - `toast-message-display` - For snackbar display
487
+ - `@angular/material` - For dialog components (future)
488
+ - `ngx-markdown` - For markdown rendering (future)
489
+
490
+ ## Testing
491
+
492
+ ```bash
493
+ # Run tests for http-request-manager
494
+ ng test http-request-manager
495
+
496
+ # Test specific component
497
+ ng test --include='**/message-display/**/*.spec.ts'
498
+ ```
499
+
500
+ ## Future Enhancements
501
+
502
+ - Dialog strategy with markdown support
503
+ - Carousel strategy with slide navigation
504
+ - Banner strategy for persistent notifications
505
+ - Custom component registration
506
+ - Action callback handling
507
+ - Link click handling in markdown
508
+ - Stacking behavior configuration
509
+ - Animation configuration
@@ -0,0 +1,4 @@
1
+ export * from './models';
2
+ export * from './services/message-display-router.service';
3
+ export * from './strategies/snackbar.strategy';
4
+ export * from './rules/default-display-rules';
@@ -0,0 +1,27 @@
1
+ export interface ActionInterface {
2
+ label: string;
3
+ action: 'close' | 'navigate' | 'callback' | 'custom';
4
+ target?: string;
5
+ callback?: string;
6
+ primary?: boolean;
7
+ }
8
+
9
+ export class Action implements ActionInterface {
10
+ constructor(
11
+ public label: string = '',
12
+ public action: 'close' | 'navigate' | 'callback' | 'custom' = 'close',
13
+ public target?: string,
14
+ public callback?: string,
15
+ public primary?: boolean
16
+ ) {}
17
+
18
+ static adapt(item?: any): Action {
19
+ return new Action(
20
+ item?.label,
21
+ item?.action,
22
+ item?.target,
23
+ item?.callback,
24
+ item?.primary
25
+ );
26
+ }
27
+ }
@@ -0,0 +1,77 @@
1
+ import { Slide } from './slide.model';
2
+ import { Action } from './action.model';
3
+ import { DisplayConfig } from './display-config.model';
4
+
5
+ export interface MessageContentInterface {
6
+ displayConfig?: DisplayConfig;
7
+ title?: string;
8
+ message: string;
9
+ slides?: Slide[];
10
+ image?: string;
11
+ images?: string[];
12
+ actions?: Action[];
13
+ messageType?: string;
14
+ icon?: string;
15
+ data?: any;
16
+ }
17
+
18
+ export class MessageContent implements MessageContentInterface {
19
+ constructor(
20
+ public displayConfig?: DisplayConfig,
21
+ public title?: string,
22
+ public message: string = '',
23
+ public slides?: Slide[],
24
+ public image?: string,
25
+ public images?: string[],
26
+ public actions?: Action[],
27
+ public messageType?: string,
28
+ public icon?: string,
29
+ public data?: any
30
+ ) {}
31
+
32
+ static adapt(item?: any): MessageContent {
33
+ return new MessageContent(
34
+ item?.displayConfig ? DisplayConfig.adapt(item.displayConfig) : undefined,
35
+ item?.title,
36
+ item?.message,
37
+ item?.slides ? item.slides.map((slideItem: any) => Slide.adapt(slideItem)) : [],
38
+ item?.image,
39
+ item?.images,
40
+ item?.actions ? item.actions.map((actionItem: any) => Action.adapt(actionItem)) : [],
41
+ item?.messageType,
42
+ item?.icon,
43
+ item?.data
44
+ );
45
+ }
46
+ }
47
+
48
+ export interface CommunicationMessageInterface {
49
+ type: string;
50
+ messageId?: number;
51
+ channel?: string;
52
+ sessionId?: { id: string };
53
+ timestamp?: string;
54
+ content: MessageContent;
55
+ }
56
+
57
+ export class CommunicationMessage implements CommunicationMessageInterface {
58
+ constructor(
59
+ public type: string = '',
60
+ public messageId?: number,
61
+ public channel?: string,
62
+ public sessionId?: { id: string },
63
+ public timestamp?: string,
64
+ public content: MessageContent = MessageContent.adapt()
65
+ ) {}
66
+
67
+ static adapt(item?: any): CommunicationMessage {
68
+ return new CommunicationMessage(
69
+ item?.type,
70
+ item?.messageId,
71
+ item?.channel,
72
+ item?.sessionId,
73
+ item?.timestamp,
74
+ item?.content ? MessageContent.adapt(item.content) : MessageContent.adapt()
75
+ );
76
+ }
77
+ }
@@ -0,0 +1,35 @@
1
+ export type DisplayType = 'snackbar' | 'dialog' | 'carousel' | 'banner' | 'inline';
2
+
3
+ export interface DisplayConfigInterface {
4
+ type: DisplayType;
5
+ supportsMarkdown?: boolean;
6
+ stackable?: boolean;
7
+ queueBehavior?: 'replace' | 'queue' | 'ignore';
8
+ autoDismiss?: number;
9
+ width?: string;
10
+ height?: string;
11
+ }
12
+
13
+ export class DisplayConfig implements DisplayConfigInterface {
14
+ constructor(
15
+ public type: DisplayType = 'snackbar',
16
+ public supportsMarkdown?: boolean,
17
+ public stackable?: boolean,
18
+ public queueBehavior?: 'replace' | 'queue' | 'ignore',
19
+ public autoDismiss?: number,
20
+ public width?: string,
21
+ public height?: string
22
+ ) {}
23
+
24
+ static adapt(item?: any): DisplayConfig {
25
+ return new DisplayConfig(
26
+ item?.type,
27
+ item?.supportsMarkdown,
28
+ item?.stackable,
29
+ item?.queueBehavior,
30
+ item?.autoDismiss,
31
+ item?.width,
32
+ item?.height
33
+ );
34
+ }
35
+ }