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,641 @@
1
+ <!-- markdownlint-disable MD031 MD060 -->
2
+
3
+ # WebSocket Signals Manager Service
4
+
5
+ The `WebSocketSignalsManagerService` provides signal-based WebSocket connection management for modern Angular applications, offering both signals and observables for maximum compatibility.
6
+
7
+ ## Overview
8
+
9
+ This service is a **signal-based wrapper** around `WebSocketManagerService`, designed for Angular 19+ applications that want to use signals for WebSocket state while maintaining full backward compatibility.
10
+
11
+ ### Key Features
12
+
13
+ - ✅ **Signal-Based State** - Connection status, messages, channels as signals
14
+ - ✅ **Observable Interop** - Provides both signals and observables
15
+ - ✅ **Singleton Pattern** - Shares single WebSocket connection
16
+ - ✅ **Full API Parity** - All WebSocket methods available
17
+ - ✅ **Automatic Sync** - Stays in sync with WebSocketManagerService
18
+
19
+ ## Installation
20
+
21
+ ```typescript
22
+ import { WebSocketSignalsManagerService } from 'http-request-manager';
23
+ ```
24
+
25
+ ## Basic Usage
26
+
27
+ ### Connection Management Example
28
+
29
+ ```typescript
30
+ import { Component, inject, effect } from '@angular/core';
31
+ import { WebSocketSignalsManagerService } from 'http-request-manager';
32
+
33
+ @Component({
34
+ selector: 'app-chat',
35
+ template: `
36
+ <div class="chat">
37
+ <div class="status">
38
+ @if (connectionStatus()) {
39
+ <span class="connected">✓ Connected</span>
40
+ } @else {
41
+ <span class="disconnected">✗ Disconnected</span>
42
+ }
43
+ </div>
44
+
45
+ <div class="messages">
46
+ @if (message()) {
47
+ <div class="message">
48
+ {{ message().content }}
49
+ </div>
50
+ }
51
+ </div>
52
+
53
+ <div class="channels">
54
+ <h3>Channels ({{ channels().size }})</h3>
55
+ <ul>
56
+ @for (channel of channels(); track channel) {
57
+ <li>{{ channel }}</li>
58
+ }
59
+ </ul>
60
+ </div>
61
+ </div>
62
+ `
63
+ })
64
+ export class ChatComponent {
65
+ private wsManager = inject(WebSocketSignalsManagerService);
66
+
67
+ // Signals for reactive state
68
+ connectionStatus = this.wsManager.connectionStatus;
69
+ message = this.wsManager.messages;
70
+ channels = this.wsManager.subscribedChannels;
71
+
72
+ constructor() {
73
+ // Connect on init
74
+ this.wsManager.connect({
75
+ server: 'ws://localhost:8080',
76
+ path: ['chat']
77
+ }, 'jwt-token');
78
+
79
+ // React to connection changes
80
+ effect(() => {
81
+ const connected = this.connectionStatus();
82
+ console.log('Connection status:', connected);
83
+ });
84
+ }
85
+
86
+ sendMessage(content: string) {
87
+ this.wsManager.sendBroadcast({ content });
88
+ }
89
+
90
+ joinChannel(channel: string) {
91
+ this.wsManager.subscribeToChannel(channel);
92
+ }
93
+
94
+ leaveChannel(channel: string) {
95
+ this.wsManager.unsubscribeFromChannel(channel);
96
+ }
97
+
98
+ disconnect() {
99
+ this.wsManager.disconnect();
100
+ }
101
+ }
102
+ ```
103
+
104
+ ## API Reference
105
+
106
+ ### Connection Management
107
+
108
+ #### `connect(options: WSOptions, jwtToken: string): void`
109
+
110
+ Connects to WebSocket server.
111
+
112
+ ```typescript
113
+ wsManager.connect({
114
+ server: 'ws://localhost:8080',
115
+ path: ['chat', 'notifications']
116
+ }, 'jwt-token');
117
+ ```
118
+
119
+ #### `disconnect(): void`
120
+
121
+ Disconnects from WebSocket server.
122
+
123
+ ```typescript
124
+ wsManager.disconnect();
125
+ ```
126
+
127
+ ### Channel Subscription
128
+
129
+ #### `subscribeToChannel(channel: string): void`
130
+
131
+ Subscribes to a WebSocket channel.
132
+
133
+ ```typescript
134
+ wsManager.subscribeToChannel('chat-room-1');
135
+ ```
136
+
137
+ #### `subscribeToChannels(channels: string[]): void`
138
+
139
+ Subscribes to multiple channels.
140
+
141
+ ```typescript
142
+ wsManager.subscribeToChannels(['chat-1', 'chat-2', 'notifications']);
143
+ ```
144
+
145
+ #### `unsubscribeFromChannel(channel: string): void`
146
+
147
+ Unsubscribes from a channel.
148
+
149
+ ```typescript
150
+ wsManager.unsubscribeFromChannel('chat-room-1');
151
+ ```
152
+
153
+ #### `getSubscribedChannels(): Set<string>`
154
+
155
+ Gets currently subscribed channels.
156
+
157
+ ```typescript
158
+ channels = this.wsManager.getSubscribedChannels();
159
+ // Returns: Set { 'chat-1', 'chat-2' }
160
+ ```
161
+
162
+ ### Message Sending
163
+
164
+ #### `sendBroadcast(content: any): void`
165
+
166
+ Sends message to all connected clients.
167
+
168
+ ```typescript
169
+ wsManager.sendBroadcast({
170
+ type: 'announcement',
171
+ content: 'Hello everyone!'
172
+ });
173
+ ```
174
+
175
+ #### `sendMessageInChannel(channel: string, content: any): void`
176
+
177
+ Sends message in a specific channel.
178
+
179
+ ```typescript
180
+ wsManager.sendMessageInChannel('chat-1', {
181
+ type: 'message',
182
+ content: 'Hi there!'
183
+ });
184
+ ```
185
+
186
+ #### `sendChannelMessage(channel: string, content: any): void`
187
+
188
+ Sends channel message.
189
+
190
+ ```typescript
191
+ wsManager.sendChannelMessage('chat-1', {
192
+ text: 'Hello channel!'
193
+ });
194
+ ```
195
+
196
+ #### `sendChannelMessageToChannels(channels: string[], content: any): void`
197
+
198
+ Sends message to multiple channels.
199
+
200
+ ```typescript
201
+ wsManager.sendChannelMessageToChannels(
202
+ ['chat-1', 'chat-2'],
203
+ { text: 'Broadcast to multiple channels' }
204
+ );
205
+ ```
206
+
207
+ #### `sendMessageToUser(user: string, content: any): void`
208
+
209
+ Sends direct message to a user.
210
+
211
+ ```typescript
212
+ wsManager.sendMessageToUser('user123', {
213
+ type: 'direct',
214
+ content: 'Private message'
215
+ });
216
+ ```
217
+
218
+ ### Channel Management
219
+
220
+ #### `getAllChannels(): void`
221
+
222
+ Gets all available channels.
223
+
224
+ ```typescript
225
+ wsManager.getAllChannels();
226
+ ```
227
+
228
+ #### `createChannel(channel: string): void`
229
+
230
+ Creates a new channel.
231
+
232
+ ```typescript
233
+ wsManager.createChannel('new-chat-room');
234
+ ```
235
+
236
+ #### `deleteChannel(channel: string): void`
237
+
238
+ Deletes a channel.
239
+
240
+ ```typescript
241
+ wsManager.deleteChannel('old-chat-room');
242
+ ```
243
+
244
+ #### `getUsersInChannel(channel: string): void`
245
+
246
+ Gets users in a channel.
247
+
248
+ ```typescript
249
+ wsManager.getUsersInChannel('chat-1');
250
+ ```
251
+
252
+ ### Notification Methods
253
+
254
+ #### `createNotificationChannel(channel: string): void`
255
+
256
+ Creates notification channel.
257
+
258
+ ```typescript
259
+ wsManager.createNotificationChannel('user-notifications');
260
+ ```
261
+
262
+ #### `getNotificationChannels(): void`
263
+
264
+ Gets notification channels.
265
+
266
+ ```typescript
267
+ wsManager.getNotificationChannels();
268
+ ```
269
+
270
+ #### `getTodaysNotificationChannels(): void`
271
+
272
+ Gets today's notification channels.
273
+
274
+ ```typescript
275
+ wsManager.getTodaysNotificationChannels();
276
+ ```
277
+
278
+ #### `subscribeToNotificationChannel(channel: string, options?: any, user?: any): void`
279
+
280
+ Subscribes to notification channel.
281
+
282
+ ```typescript
283
+ wsManager.subscribeToNotificationChannel('alerts', {
284
+ priority: 'high'
285
+ }, 'user123');
286
+ ```
287
+
288
+ #### `unsubscribeFromNotificationChannel(channel: string): void`
289
+
290
+ Unsubscribes from notification channel.
291
+
292
+ ```typescript
293
+ wsManager.unsubscribeFromNotificationChannel('alerts');
294
+ ```
295
+
296
+ #### `sendNotification(channel: string, content: any): void`
297
+
298
+ Sends notification to channel.
299
+
300
+ ```typescript
301
+ wsManager.sendNotification('alerts', {
302
+ title: 'New Alert',
303
+ message: 'Something happened!'
304
+ });
305
+ ```
306
+
307
+ ### Signals
308
+
309
+ #### `connectionStatus: ReadonlySignal<boolean>`
310
+
311
+ Connection status signal.
312
+
313
+ ```typescript
314
+ connected = this.wsManager.connectionStatus;
315
+ // Usage: connected()
316
+ ```
317
+
318
+ #### `messages: ReadonlySignal<any>`
319
+
320
+ Latest message signal.
321
+
322
+ ```typescript
323
+ message = this.wsManager.messages;
324
+ // Usage: message()
325
+ ```
326
+
327
+ #### `subscribedChannels: ReadonlySignal<Set<string>>`
328
+
329
+ Subscribed channels signal.
330
+
331
+ ```typescript
332
+ channels = this.wsManager.subscribedChannels;
333
+ // Usage: channels()
334
+ ```
335
+
336
+ ### Observables (Interop)
337
+
338
+ #### `connectionStatus$: Observable<boolean>`
339
+
340
+ Connection status as observable.
341
+
342
+ ```typescript
343
+ this.wsManager.connectionStatus$.subscribe(connected => {
344
+ console.log('Connected:', connected);
345
+ });
346
+ ```
347
+
348
+ #### `messages$: Observable<any>`
349
+
350
+ Messages as observable stream.
351
+
352
+ ```typescript
353
+ this.wsManager.messages$.subscribe(message => {
354
+ console.log('New message:', message);
355
+ });
356
+ ```
357
+
358
+ #### `subscribedChannels$: Observable<Set<string>>`
359
+
360
+ Channels as observable.
361
+
362
+ ```typescript
363
+ this.wsManager.subscribedChannels$.subscribe(channels => {
364
+ console.log('Channels:', channels);
365
+ });
366
+ ```
367
+
368
+ ## Advanced Examples
369
+
370
+ ### Real-Time Chat Application
371
+
372
+ ```typescript
373
+ import { Component, inject, signal, computed, effect } from '@angular/core';
374
+ import { WebSocketSignalsManagerService } from 'http-request-manager';
375
+
376
+ interface ChatMessage {
377
+ id: string;
378
+ user: string;
379
+ content: string;
380
+ timestamp: string;
381
+ }
382
+
383
+ @Component({
384
+ selector: 'app-realtime-chat',
385
+ template: `
386
+ <div class="chat-container">
387
+ <header>
388
+ <h2>Chat Room</h2>
389
+ <span [class.connected]="connected()">
390
+ {{ connected() ? '🟢 Online' : '🔴 Offline' }}
391
+ </span>
392
+ </header>
393
+
394
+ <div class="messages-list">
395
+ @for (msg of messages(); track msg.id) {
396
+ <div class="message">
397
+ <strong>{{ msg.user }}</strong>
398
+ <span>{{ msg.content }}</span>
399
+ <small>{{ msg.timestamp | date:'short' }}</small>
400
+ </div>
401
+ }
402
+ </div>
403
+
404
+ <div class="message-input">
405
+ <input
406
+ [value]="messageText()"
407
+ (input)="messageText.set($any($event.target).value)"
408
+ placeholder="Type a message..."
409
+ (keydown.enter)="sendMessage()">
410
+ <button (click)="sendMessage()">Send</button>
411
+ </div>
412
+ </div>
413
+ `
414
+ })
415
+ export class RealtimeChatComponent {
416
+ private wsManager = inject(WebSocketSignalsManagerService);
417
+
418
+ // Local state
419
+ messageText = signal('');
420
+ messages = signal<ChatMessage[]>([]);
421
+
422
+ // From WebSocket manager
423
+ connected = this.wsManager.connectionStatus;
424
+ channels = this.wsManager.subscribedChannels;
425
+
426
+ constructor() {
427
+ // Connect to WebSocket
428
+ this.wsManager.connect({
429
+ server: 'ws://localhost:8080',
430
+ path: ['chat', 'general']
431
+ }, this.getJwtToken());
432
+
433
+ // Subscribe to channel
434
+ this.wsManager.subscribeToChannel('general');
435
+
436
+ // React to incoming messages
437
+ effect(() => {
438
+ const message = this.wsManager.messages();
439
+ if (message && message.type === 'chat') {
440
+ this.messages.update(msgs => [...msgs, message as ChatMessage]);
441
+ }
442
+ });
443
+ }
444
+
445
+ sendMessage() {
446
+ const text = this.messageText();
447
+ if (!text.trim()) return;
448
+
449
+ const message: ChatMessage = {
450
+ id: crypto.randomUUID(),
451
+ user: 'Current User',
452
+ content: text,
453
+ timestamp: new Date().toISOString()
454
+ };
455
+
456
+ this.wsManager.sendChannelMessage('general', message);
457
+ this.messageText.set('');
458
+ }
459
+
460
+ private getJwtToken(): string {
461
+ // Get JWT token from auth service
462
+ return 'your-jwt-token';
463
+ }
464
+ }
465
+ ```
466
+
467
+ ### Live Notifications
468
+
469
+ ```typescript
470
+ import { Injectable, inject, computed, signal } from '@angular/core';
471
+ import { WebSocketSignalsManagerService } from 'http-request-manager';
472
+
473
+ interface Notification {
474
+ id: string;
475
+ title: string;
476
+ message: string;
477
+ type: 'info' | 'warning' | 'error' | 'success';
478
+ timestamp: string;
479
+ read: boolean;
480
+ }
481
+
482
+ @Injectable({ providedIn: 'root' })
483
+ export class NotificationService {
484
+ private wsManager = inject(WebSocketSignalsManagerService);
485
+
486
+ private notificationsSignal = signal<Notification[]>([]);
487
+
488
+ // Public signals
489
+ notifications = this.notificationsSignal.asReadonly();
490
+ unreadCount = computed(() =>
491
+ this.notificationsSignal().filter(n => !n.read).length
492
+ );
493
+ hasUnread = computed(() => this.unreadCount() > 0);
494
+
495
+ constructor() {
496
+ // Connect to notifications channel
497
+ this.init();
498
+ }
499
+
500
+ private init() {
501
+ this.wsManager.connect({
502
+ server: 'ws://localhost:8080',
503
+ path: ['notifications']
504
+ }, this.getJwtToken());
505
+
506
+ this.wsManager.subscribeToNotificationChannel('user-notifications');
507
+
508
+ // React to notifications
509
+ const messages = this.wsManager.messages;
510
+
511
+ // In a real app, use effect or subscribe to messages$
512
+ this.wsManager.messages$.subscribe(message => {
513
+ if (message.type === 'notification') {
514
+ this.addNotification(message as Notification);
515
+ }
516
+ });
517
+ }
518
+
519
+ addNotification(notification: Notification) {
520
+ this.notificationsSignal.update(notifications => [
521
+ notification,
522
+ ...notifications
523
+ ]);
524
+ }
525
+
526
+ markAsRead(id: string) {
527
+ this.notificationsSignal.update(notifications =>
528
+ notifications.map(n =>
529
+ n.id === id ? { ...n, read: true } : n
530
+ )
531
+ );
532
+ }
533
+
534
+ markAllAsRead() {
535
+ this.notificationsSignal.update(notifications =>
536
+ notifications.map(n => ({ ...n, read: true }))
537
+ );
538
+ }
539
+
540
+ clearAll() {
541
+ this.notificationsSignal.set([]);
542
+ }
543
+
544
+ private getJwtToken(): string {
545
+ return 'your-jwt-token';
546
+ }
547
+ }
548
+ ```
549
+
550
+ ## Comparison with Non-Signal Version
551
+
552
+ | Feature | Non-Signal Version | Signal Version |
553
+ |---------|-------------------|----------------|
554
+ | **State Management** | BehaviorSubject | Angular Signals |
555
+ | **Connection Status** | `connectionStatus$` (Observable) | `connectionStatus` (Signal) + `connectionStatus$` |
556
+ | **Messages** | `messages$` (Observable) | `messages` (Signal) + `messages$` |
557
+ | **Channels** | `subscribedChannels$` | `subscribedChannels` (Signal) + `subscribedChannels$` |
558
+ | **Methods** | All WebSocket methods | Same methods |
559
+ | **Subscription Mgmt** | Manual | Automatic for signals |
560
+ | **Angular Version** | 14-18 | 19+ |
561
+
562
+ ## Best Practices
563
+
564
+ 1. **Use Signals in Templates**
565
+ ```typescript
566
+ // ✅ Good - Direct signal usage
567
+ template: `{{ connectionStatus() ? 'Connected' : 'Disconnected' }}`
568
+
569
+ // ❌ Avoid - Unnecessary observable conversion
570
+ connectionStatus$ = toObservable(this.wsManager.connectionStatus);
571
+ ```
572
+
573
+ 2. **Leverage Effect for Reactions**
574
+ ```typescript
575
+ // ✅ Good - React to message changes
576
+ effect(() => {
577
+ const message = this.wsManager.messages();
578
+ if (message) {
579
+ this.handleMessage(message);
580
+ }
581
+ });
582
+ ```
583
+
584
+ 3. **Use Both Signals and Observables**
585
+ ```typescript
586
+ // ✅ Good - Use what fits
587
+ signalValue = this.wsManager.connectionStatus(); // Signal
588
+ this.wsManager.messages$.subscribe(msg => {}); // Observable
589
+ ```
590
+
591
+ 4. **Manage Connection Lifecycle**
592
+ ```typescript
593
+ // ✅ Good - Connect on init, disconnect on destroy
594
+ constructor() {
595
+ this.wsManager.connect(options, token);
596
+ }
597
+
598
+ ngOnDestroy() {
599
+ this.wsManager.disconnect();
600
+ }
601
+ ```
602
+
603
+ ## Troubleshooting
604
+
605
+ ### Not Receiving Messages
606
+
607
+ **Problem**: Messages signal not updating
608
+
609
+ **Solution**: Ensure you're subscribed to the correct channel
610
+ ```typescript
611
+ wsManager.subscribeToChannel('your-channel');
612
+ ```
613
+
614
+ ### Connection Issues
615
+
616
+ **Problem**: Connection status stays false
617
+
618
+ **Solution**: Check WebSocket server URL and JWT token
619
+ ```typescript
620
+ wsManager.connect({
621
+ server: 'ws://localhost:8080', // Ensure correct URL
622
+ path: ['chat']
623
+ }, 'valid-jwt-token'); // Ensure valid token
624
+ ```
625
+
626
+ ### Multiple Connections
627
+
628
+ **Problem**: Multiple WebSocket connections created
629
+
630
+ **Solution**: The service uses singleton pattern - only one connection exists
631
+ ```typescript
632
+ // ✅ Good - Multiple instances share same connection
633
+ inject(WebSocketSignalsManagerService); // All share one connection
634
+ ```
635
+
636
+ ## Related Documentation
637
+
638
+ - [Signal Services Index](./SIGNAL_SERVICES_README.md)
639
+ - [Non-Signal WebSocket](./WS_MANAGER_README.md)
640
+ - [Message Tracker Signals](./MESSAGE_TRACKER_SIGNALS_README.md)
641
+ - [Advanced WebSocket Guide](./ADVANCED_WEBSOCKET.md)