http-request-manager 18.15.33 → 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 (300) hide show
  1. package/TEST_COVERAGE_SUMMARY.md +458 -0
  2. package/ng-package.json +8 -0
  3. package/package.json +4 -13
  4. package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
  5. package/src/docs/ARCHITECTURE.md +633 -0
  6. package/src/docs/BATCH_REQUEST_README.md +467 -0
  7. package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
  8. package/src/docs/DATABASE_README.md +1195 -0
  9. package/src/docs/ENCRYPTION_README.md +403 -0
  10. package/src/docs/HTTP_MANAGER_README.md +628 -0
  11. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
  12. package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
  13. package/src/docs/INTERCEPTOR_README.md +549 -0
  14. package/src/docs/LOCAL_STORAGE_README.md +1056 -0
  15. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
  16. package/src/docs/LOGGER_README.md +310 -0
  17. package/src/docs/MESSAGE_TRACKER_README.md +518 -0
  18. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
  19. package/src/docs/MODELS_README.md +1264 -0
  20. package/src/docs/SIGNAL_SERVICES_README.md +238 -0
  21. package/src/docs/SQL_DIXIE_README.md +574 -0
  22. package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
  23. package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
  24. package/src/docs/UPLOAD_REQUEST_README.md +324 -0
  25. package/src/docs/UTILS_README.md +1604 -0
  26. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
  27. package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
  28. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
  29. package/src/docs/WS_MANAGER_README.md +613 -0
  30. package/src/lib/http-request-manager.module.ts +147 -0
  31. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
  32. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  33. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
  34. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
  35. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  36. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
  37. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  38. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  39. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
  40. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  41. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  42. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
  43. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
  44. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
  45. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
  46. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
  65. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  66. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  67. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  68. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  76. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  77. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  78. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  79. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  84. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
  85. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
  86. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
  87. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
  88. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  89. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
  90. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
  91. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
  92. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  93. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  94. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
  121. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  122. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  123. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  124. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  143. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  144. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
  145. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  146. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  148. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
  149. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
  150. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
  151. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
  152. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
  153. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
  154. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
  155. package/src/lib/index.ts +3 -0
  156. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  157. package/src/lib/interceptors/index.ts +6 -0
  158. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  159. package/src/lib/interceptors/models/index.ts +2 -0
  160. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  161. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  162. package/src/lib/interceptors/request-header.interceptor.ts +56 -0
  163. package/src/lib/message-display/README.md +509 -0
  164. package/src/lib/message-display/index.ts +4 -0
  165. package/src/lib/message-display/models/action.model.ts +27 -0
  166. package/src/lib/message-display/models/communication-message.model.ts +77 -0
  167. package/src/lib/message-display/models/display-config.model.ts +35 -0
  168. package/src/lib/message-display/models/display-rule.interface.ts +28 -0
  169. package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
  170. package/src/lib/message-display/models/index.ts +6 -0
  171. package/src/lib/message-display/models/slide.model.ts +24 -0
  172. package/src/lib/message-display/rules/default-display-rules.ts +35 -0
  173. package/src/lib/message-display/services/message-display-router.service.ts +63 -0
  174. package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
  175. package/src/lib/models/batch-options.model.ts +33 -0
  176. package/src/lib/models/batch-progress.model.ts +19 -0
  177. package/src/lib/models/batch-request-state.model.ts +40 -0
  178. package/src/lib/models/batch-result.model.ts +30 -0
  179. package/src/lib/models/config-http-options.model.ts +45 -0
  180. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  181. package/src/lib/models/config-options.model.ts +27 -0
  182. package/src/lib/models/config-token.model.ts +9 -0
  183. package/src/lib/models/data-type.enum.ts +5 -0
  184. package/src/lib/models/database-storage.model.ts +24 -0
  185. package/src/lib/models/index.ts +16 -0
  186. package/src/lib/models/retry-options.model.ts +22 -0
  187. package/src/lib/models/upload-validation-error.model.ts +46 -0
  188. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
  189. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
  190. package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
  191. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
  192. package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
  193. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
  194. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
  195. package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
  196. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
  197. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
  198. package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
  199. package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
  200. package/src/lib/services/database-manager-service/index.ts +4 -0
  201. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  202. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  203. package/src/lib/services/index.ts +20 -0
  204. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  205. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  206. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
  207. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  208. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
  209. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  210. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  211. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  212. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  213. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  214. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  215. package/src/lib/services/request-manager-services/README.md +282 -0
  216. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
  217. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
  218. package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
  219. package/src/lib/services/request-manager-services/index.ts +8 -0
  220. package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
  221. package/src/lib/services/request-manager-services/request.service.ts +435 -0
  222. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  223. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  224. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  225. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  226. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
  227. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
  228. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
  229. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  230. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
  231. package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
  232. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
  233. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
  234. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
  235. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
  236. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
  237. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
  238. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
  239. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
  240. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  241. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
  242. package/src/lib/services/store-state-manager-service/index.ts +4 -0
  243. package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
  244. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
  245. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  246. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
  247. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
  248. package/src/lib/services/utils/app.service.spec.ts +25 -0
  249. package/src/lib/services/utils/app.service.ts +21 -0
  250. package/src/lib/services/utils/encryption/README.md +79 -0
  251. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  252. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  253. package/src/lib/services/utils/encryption/index.ts +5 -0
  254. package/src/lib/services/utils/encryption/random.ts +81 -0
  255. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
  256. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  257. package/src/lib/services/utils/headers.service.ts +18 -0
  258. package/src/lib/services/utils/index.ts +9 -0
  259. package/src/lib/services/utils/logger.service.ts +90 -0
  260. package/src/lib/services/utils/models/index.ts +4 -0
  261. package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
  262. package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
  263. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
  264. package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
  265. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  266. package/src/lib/services/utils/object-merger.service.ts +78 -0
  267. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  268. package/src/lib/services/utils/path-query.service.ts +69 -0
  269. package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
  270. package/src/lib/services/utils/random-color.utils.ts +83 -0
  271. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  272. package/src/lib/services/utils/utils.service.ts +192 -0
  273. package/src/lib/services/ws-manager-service/index.ts +13 -0
  274. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
  275. package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
  276. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
  277. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  278. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
  279. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
  280. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  281. package/src/lib/services/ws-manager-service/models/index.ts +10 -0
  282. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
  283. package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
  284. package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
  285. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  286. package/src/lib/services/ws-manager-service/services/index.ts +4 -0
  287. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
  288. package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
  289. package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
  290. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
  291. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
  292. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
  293. package/src/public-api.ts +19 -0
  294. package/tsconfig.lib.json +34 -0
  295. package/tsconfig.lib.prod.json +10 -0
  296. package/tsconfig.spec.json +14 -0
  297. package/fesm2022/http-request-manager.mjs +0 -13688
  298. package/fesm2022/http-request-manager.mjs.map +0 -1
  299. package/http-request-manager-18.15.33.tgz +0 -0
  300. package/types/http-request-manager.d.ts +0 -3968
@@ -0,0 +1,633 @@
1
+ # HTTP Request Manager - Architecture Overview
2
+
3
+ ## System Architecture
4
+
5
+ ```
6
+ ┌─────────────────────────────────────────────────────────────────┐
7
+ │ Angular Application │
8
+ ├─────────────────────────────────────────────────────────────────┤
9
+ │ │
10
+ │ ┌────────────────┐ ┌────────────────┐ ┌──────────────────┐ │
11
+ │ │ Components │ │ Components │ │ Components │ │
12
+ │ │ (Signals) │ │ (Observables) │ │ (State Store) │ │
13
+ │ └───────┬────────┘ └───────┬────────┘ └────────┬─────────┘ │
14
+ │ │ │ │ │
15
+ │ ▼ ▼ ▼ │
16
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
17
+ │ │HTTPManager │ │HTTPManager │ │HTTPManager │ │
18
+ │ │SignalsService│ │Service │ │StateService │ │
19
+ │ └──────┬───────┘ └──────┬───────┘ └────────┬─────────┘ │
20
+ │ │ │ │ │
21
+ │ └───────────────────┴──────────────────────┘ │
22
+ │ │ │
23
+ │ ▼ │
24
+ │ ┌─────────────────┐ │
25
+ │ │ HttpClient │ │
26
+ │ │ (Angular) │ │
27
+ │ └────────┬────────┘ │
28
+ │ │ │
29
+ ├─────────────────────────────┼───────────────────────────────────┤
30
+ │ │ │
31
+ │ ┌──────────────────────────┼──────────────────────┐ │
32
+ │ │ Local Storage Layer │ │
33
+ │ ├──────────────────────────┼──────────────────────┤ │
34
+ │ │ │ │ │
35
+ │ │ ┌────────────────┐ │ ┌─────────────┐ │ │
36
+ │ │ │LocalStorage │ │ │IndexedDB │ │ │
37
+ │ │ │Manager Service │ │ │(Dexie.js) │ │ │
38
+ │ │ └────────────────┘ │ └─────────────┘ │ │
39
+ │ │ │ │ │
40
+ │ └──────────────────────────┼──────────────────────┘ │
41
+ │ │ │
42
+ │ ┌──────────────────────────┼─────────────────────┐ │
43
+ │ │ WebSocket Layer │ │
44
+ │ ├──────────────────────────┼─────────────────────┤ │
45
+ │ │ │ │ │
46
+ │ │ ┌─────────────────────────────────────┐ │ │
47
+ │ │ │ WebsocketService │ │ │
48
+ │ │ │ - Connection Management │ │ │
49
+ │ │ │ - Channel Subscriptions │ │ │
50
+ │ │ │ - Message Routing │ │ │
51
+ │ │ │ - Authentication (JWT) │ │ │
52
+ │ │ └─────────────────────────────────────┘ │ │
53
+ │ │ │ │
54
+ │ └────────────────────────────────────────────────┘ │
55
+ │ │ │
56
+ └─────────────────────────────┼───────────────────────────────────┘
57
+
58
+
59
+ ┌──────────────────────────────┐
60
+ │ Backend Server │
61
+ ├──────────────────────────────┤
62
+ │ │
63
+ │ ┌────────────────────────┐ │
64
+ │ │ HTTP REST API │ │
65
+ │ │ (Express/Node.js) │ │
66
+ │ └────────────────────────┘ │
67
+ │ │
68
+ │ ┌────────────────────────┐ │
69
+ │ │ WebSocket Server │ │
70
+ │ │ (ws library) │ │
71
+ │ └────────────────────────┘ │
72
+ │ │
73
+ │ ┌────────────────────────┐ │
74
+ │ │ SQLite Database │ │
75
+ │ │ (Notifications) │ │
76
+ │ └────────────────────────┘ │
77
+ │ │
78
+ └──────────────────────────────┘
79
+ ```
80
+
81
+ ## Service Hierarchy
82
+
83
+ ```
84
+ HTTPManagerService (Base - extends RequestService)
85
+ ├── Location: services/request-manager-services/http-manager.service.ts
86
+ ├── Features:
87
+ │ ├── HTTP CRUD Operations (GET, POST, PUT, DELETE)
88
+ │ ├── Loading States (isPending$, error$, data$, countdown$)
89
+ │ ├── Retry Logic with delayedRetry operator
90
+ │ ├── Polling with Countdown (requestPolling operator)
91
+ │ ├── Adapters & Mappers for data transformation
92
+ │ ├── Stream Handling (NDJSON, SSE)
93
+ │ └── File Download with progress tracking
94
+
95
+ ├── HTTPManagerSignalsService
96
+ │ ├── Location: services/request-manager-services/http-manager-signals.service.ts
97
+ │ └── Same as HTTPManagerService but with Angular Signals
98
+ │ ├── data: Signal<any>
99
+ │ ├── isPending: Signal<boolean>
100
+ │ ├── error: Signal<any>
101
+ │ └── countdown: Signal<number>
102
+
103
+ └── HTTPManagerStateService (extends ComponentStore)
104
+ ├── Location: services/request-manager-state-service/http-manager-state.store.ts
105
+ ├── Inherits all HTTPManagerService features
106
+ ├── ComponentStore Integration (NgRx)
107
+ ├── CRUD with Auto State Updates
108
+ ├── WebSocket Integration (via WebSocketManagerService singleton)
109
+ │ ├── SYS- channels (State sync - private)
110
+ │ ├── PUB- channels (Messaging - public)
111
+ │ └── MES- channels (Notifications - persisted)
112
+ ├── IndexedDB Caching (via DatabaseManagerService)
113
+ ├── Pagination Support
114
+ ├── Real-time Updates
115
+ └── clearDatabase() method for flushing cache
116
+
117
+ StoreStateManagerService (extends ComponentStore)
118
+ ├── Location: services/store-state-manager-service/store-state-manager.service.ts
119
+ └── Features:
120
+ ├── LocalStorage persistence with ComponentStore
121
+ ├── Automatic state synchronization
122
+ ├── Configurable model-based state
123
+ └── Reactive updates via localStorage changes
124
+
125
+ LocalStorageManagerService (extends ComponentStore)
126
+ ├── Location: services/local-storage-manager-service/local-storage-manager.service.ts
127
+ └── Features:
128
+ ├── LocalStorage & SessionStorage management
129
+ ├── AES encryption support
130
+ ├── Expiration management with auto-cleanup
131
+ ├── Reactive store$ observables
132
+ ├── Signal-based API (signal(), computed())
133
+ └── Metadata tracking (settings, expires)
134
+
135
+ LocalStorageSignalsManagerService
136
+ ├── Location: services/local-storage-manager-service/local-storage-signals-manager.service.ts
137
+ └── Same as LocalStorageManagerService but Signal-optimized
138
+
139
+ DatabaseManagerService (extends DbService/Dexie.js)
140
+ ├── Location: services/database-manager-service/database.manager.service.ts
141
+ └── Features:
142
+ ├── IndexedDB wrapper via Dexie.js
143
+ ├── Observable-based CRUD operations
144
+ ├── Table management (create, check, schema inspection)
145
+ ├── Bulk operations (bulkPut, bulkDelete)
146
+ ├── Query support (where, equals, filter)
147
+ └── clearTable() method for flushing tables
148
+
149
+ WebSocketManagerService (Singleton)
150
+ ├── Location: services/ws-manager-service/websocket-service/websocket-manager.service.ts
151
+ └── Features:
152
+ ├── Single connection across ALL instances (static)
153
+ ├── Connection lifecycle management
154
+ ├── Channel subscription tracking
155
+ ├── Message broadcasting via BehaviorSubject
156
+ ├── Session ID management (UUID per browser session)
157
+ ├── JWT authentication support
158
+ ├── Automatic reconnection handling
159
+ └── Message replay support (lastSeenId)
160
+
161
+ MessageTrackerService
162
+ ├── Location: services/ws-manager-service/message-tracker.service.ts
163
+ └── Features:
164
+ ├── Message history tracking
165
+ ├── Last-seen message ID persistence
166
+ ├── Automatic re-subscription on reconnect
167
+ ├── Notification channel management
168
+ └── Historical message retrieval
169
+ ```
170
+
171
+ ## Data Flow
172
+
173
+ ### HTTP Request Flow
174
+
175
+ ```
176
+ Component
177
+
178
+ ├─> Call Service Method (e.g., fetchRecords())
179
+
180
+
181
+ HTTPManagerStateService
182
+
183
+ ├─> Build ApiRequest
184
+ │ ├─> Apply Mapper (if provided)
185
+ │ └─> Add Headers
186
+
187
+
188
+ HTTPManagerService
189
+
190
+ ├─> Check Polling
191
+ ├─> Execute HTTP Request (HttpClient)
192
+
193
+
194
+ Interceptors
195
+
196
+ ├─> RequestHeadersInterceptor (add headers)
197
+ ├─> WithCredentialsInterceptor (add credentials)
198
+ └─> RequestErrorInterceptor (handle errors)
199
+
200
+
201
+ Backend Server
202
+
203
+ ├─> Process Request
204
+ └─> Return Response
205
+
206
+
207
+ HTTPManagerService
208
+
209
+ ├─> Apply Adapter (transform data)
210
+ ├─> Update isPending$ = false
211
+ ├─> Update data$ with new data
212
+
213
+
214
+ HTTPManagerStateService
215
+
216
+ ├─> Update ComponentStore state
217
+ └─> Save to IndexedDB (if configured)
218
+
219
+
220
+ Component
221
+
222
+ └─> Display updated data via data$ observable
223
+ ```
224
+
225
+ ### WebSocket Message Flow
226
+
227
+ ```
228
+ Component
229
+
230
+ └─> Send Message (e.g., sendNotification())
231
+
232
+
233
+ HTTPManagerStateService
234
+
235
+ └─> Add Channel Prefix (MES-, PUB-, or SYS-)
236
+
237
+
238
+ WebsocketService
239
+
240
+ ├─> Format Message
241
+ │ ├─> type: 'notification'
242
+ │ ├─> channel: 'MES-alerts'
243
+ │ ├─> content: { message: '...' }
244
+ │ └─> sessionId: { id, name, email }
245
+
246
+ └─> Send via WebSocket
247
+
248
+
249
+ Backend WebSocket Server
250
+
251
+ ├─> Validate Channel & User
252
+ ├─> Store in Database (for MES- channels)
253
+ └─> Broadcast to Subscribers
254
+
255
+
256
+ All Connected Clients (Subscribers)
257
+
258
+ ├─> WebsocketService receives message
259
+
260
+
261
+ HTTPManagerStateService
262
+
263
+ ├─> Update ComponentStore
264
+ └─> Emit via notificationMessages$
265
+
266
+
267
+ Component
268
+
269
+ └─> Display notification in UI
270
+ ```
271
+
272
+ ## Channel Architecture
273
+
274
+ ### Channel Types and Data Flow
275
+
276
+ ```
277
+ ┌─────────────────────────────────────────────────────────────────┐
278
+ │ Client Application │
279
+ ├─────────────────────────────────────────────────────────────────┤
280
+ │ |
281
+ │ Component calls: │
282
+ │ ┌──────────────────────────────────────────────────────────┐ │
283
+ │ │ stateService.subscribeToChannel('general') (PUB)│ │
284
+ │ │ stateService.subscribeToNotificationChannel('alerts') (MES)│ │
285
+ │ │ stateService.fetchRecords() (SYS)│ │
286
+ │ └──────────────────────────────────────────────────────────┘ │
287
+ │ │ │
288
+ │ ▼ │
289
+ │ ┌──────────────────────────────────────────────────────────┐ │
290
+ │ │ HTTPManagerStateService │ │
291
+ │ │ - Adds appropriate prefix (PUB-, MES-, SYS-) │ │
292
+ │ │ - Routes to WebsocketService │ │
293
+ │ └──────────────────────────────────────────────────────────┘ │
294
+ │ │ │
295
+ │ ▼ │
296
+ │ ┌──────────────────────────────────────────────────────────┐ │
297
+ │ │ WebsocketService │ │
298
+ │ │ - Manages connection lifecycle │ │
299
+ │ │ - Sends subscription messages │ │
300
+ │ │ - Receives and routes messages │ │
301
+ │ └──────────────────────────────────────────────────────────┘ │
302
+ │ │ │
303
+ └────────────────────────────┼─────────────────────────────────────┘
304
+
305
+
306
+ ┌─────────────────────────────────────────────────────────────────┐
307
+ │ WebSocket Server │
308
+ ├─────────────────────────────────────────────────────────────────┤
309
+ │ │
310
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
311
+ │ │ PUB- Channel │ │ MES- Channel │ │ SYS- Channel │ │
312
+ │ │ │ │ │ │ │ │
313
+ │ │ In-Memory │ │ DB Persisted │ │ State Sync │ │
314
+ │ │ Broadcasting │ │ Notifications│ │ Private │ │
315
+ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
316
+ │ │ │ │ │
317
+ │ ▼ ▼ ▼ │
318
+ │ ┌────────────────────────────────────────────────┐ │
319
+ │ │ Channel Subscribers (Set<WebSocket>) │ │
320
+ │ └────────────────────────────────────────────────┘ │
321
+ │ │ │ │ │
322
+ │ └──────────────────┴──────────────────┘ │
323
+ │ │ │
324
+ │ ▼ │
325
+ │ ┌─────────────────────────────────────────────────┐ │
326
+ │ │ Broadcast to All Subscribers │ │
327
+ │ └─────────────────────────────────────────────────┘ │
328
+ │ │
329
+ │ For MES- channels: │
330
+ │ ┌─────────────────────────────────────────────────┐ │
331
+ │ │ 1. Store in SQLite Database │ │
332
+ │ │ 2. Broadcast to current subscribers │ │
333
+ │ │ 3. Retrieve historical data on new subscription│ │
334
+ │ └─────────────────────────────────────────────────┘ │
335
+ │ │
336
+ └───────────────────────────────────────────────────────────────────┘
337
+ ```
338
+
339
+ ## State Management Flow
340
+
341
+ ```
342
+ ┌─────────────────────────────────────────────────────────────┐
343
+ │ ComponentStore │
344
+ │ (HTTPManagerStateService extends this) │
345
+ ├─────────────────────────────────────────────────────────────┤
346
+ │ │
347
+ │ State Interface: │
348
+ │ { │
349
+ │ records: T[], // Array of entities │
350
+ │ record: T | null, // Single selected entity │
351
+ │ page: number, // Current page │
352
+ │ totalPages: number, // Total pages │
353
+ │ isPending: boolean, // Loading state │
354
+ │ error: any // Error state │
355
+ │ } │
356
+ │ │
357
+ │ Selectors (Observables): │
358
+ │ ├─> data$ (all records) │
359
+ │ ├─> record$ (single record) │
360
+ │ ├─> selectRecord$(id) (specific record) │
361
+ │ ├─> page$ │
362
+ │ └─> totalPages$ │
363
+ │ │
364
+ │ Updaters (State Mutations): │
365
+ │ ├─> updateRecordsState(records[]) │
366
+ │ ├─> addRecordState(record) │
367
+ │ ├─> updateRecordState(record) │
368
+ │ ├─> deleteRecordState(id) │
369
+ │ └─> setError(error) │
370
+ │ │
371
+ │ Effects (Side Effects): │
372
+ │ ├─> fetchRecords() → HTTP GET │
373
+ │ ├─> createRecord() → HTTP POST → addRecordState() │
374
+ │ ├─> updateRecord() → HTTP PUT → updateRecordState() │
375
+ │ ├─> deleteRecord() → HTTP DELETE → deleteRecordState() │
376
+ │ └─> WebSocket messages → auto state updates │
377
+ │ │
378
+ └───────────────────────────────────────────────────────────────┘
379
+ ```
380
+
381
+ ## Caching Strategy
382
+
383
+ ```
384
+ ┌────────────────────────────────────────────────────────────┐
385
+ │ Fetch Records Request │
386
+ └──────────────────────┬─────────────────────────────────────┘
387
+
388
+
389
+ ┌─────────────────────────┐
390
+ │ DatabaseStorage Config? │
391
+ └────────┬────────────────┘
392
+
393
+ ┌───────┴────────┐
394
+ │ │
395
+ YES NO
396
+ │ │
397
+ ▼ ▼
398
+ ┌──────────────────┐ ┌──────────────┐
399
+ │Check IndexedDB │ │Fetch from │
400
+ │for cached data │ │Server (HTTP) │
401
+ └────┬─────────────┘ └──────┬───────┘
402
+ │ │
403
+ ▼ │
404
+ ┌──────────────┐ │
405
+ │Cache Valid? │ │
406
+ └──┬───────────┘ │
407
+ │ │
408
+ ┌──┴──┐ │
409
+ │ YES │ NO │
410
+ │ │ │
411
+ ▼ ▼ │
412
+ │ ┌──────────────┐ │
413
+ │ │Fetch from │ │
414
+ │ │Server │ │
415
+ │ └──────┬───────┘ │
416
+ │ │ │
417
+ │ ▼ │
418
+ │ ┌──────────────┐ │
419
+ │ │Save to │ │
420
+ │ │IndexedDB │ │
421
+ │ └──────┬───────┘ │
422
+ │ │ │
423
+ └─────────┴──────────────────┘
424
+
425
+
426
+ ┌──────────────────────────┐
427
+ │Update ComponentStore │
428
+ │and emit via data$ │
429
+ └──────────────────────────┘
430
+ ```
431
+
432
+ ## File Structure
433
+
434
+ ```
435
+ projects/http-request-manager/
436
+ ├── src/
437
+ │ ├── lib/
438
+ │ │ ├── services/
439
+ │ │ │ ├── request-manager-services/
440
+ │ │ │ │ ├── http-manager.service.ts # Base HTTP service (Observable)
441
+ │ │ │ │ ├── http-manager-signals.service.ts # HTTP service (Signals)
442
+ │ │ │ │ ├── request.service.ts # Base request service
443
+ │ │ │ │ ├── request-signals.service.ts # Base request service (Signals)
444
+ │ │ │ │ └── rxjs-operators/ # Custom RxJS operators
445
+ │ │ │ │
446
+ │ │ │ ├── request-manager-state-service/
447
+ │ │ │ │ ├── http-manager-state.store.ts # State management (ComponentStore)
448
+ │ │ │ │ └── models/ # Type definitions
449
+ │ │ │ │
450
+ │ │ │ ├── store-state-manager-service/
451
+ │ │ │ │ ├── store-state-manager.service.ts # LocalStorage + ComponentStore
452
+ │ │ │ │ └── models/
453
+ │ │ │ │
454
+ │ │ │ ├── local-storage-manager-service/
455
+ │ │ │ │ ├── local-storage-manager.service.ts # LocalStorage/SessionStorage
456
+ │ │ │ │ ├── local-storage-signals-manager.service.ts # Signals API
457
+ │ │ │ │ └── models/
458
+ │ │ │ │
459
+ │ │ │ ├── database-manager-service/
460
+ │ │ │ │ ├── database.manager.service.ts # IndexedDB (Dexie.js)
461
+ │ │ │ │ ├── db.storage.service.ts # Dexie.js wrapper
462
+ │ │ │ │ └── models/
463
+ │ │ │ │
464
+ │ │ │ ├── ws-manager-service/
465
+ │ │ │ │ ├── websocket-service/
466
+ │ │ │ │ │ └── websocket-manager.service.ts # Singleton WS connection
467
+ │ │ │ │ ├── services/
468
+ │ │ │ │ │ └── websocket.service.ts # Legacy WS service
469
+ │ │ │ │ ├── message-tracker.service.ts # Message history & replay
470
+ │ │ │ │ └── models/
471
+ │ │ │ │
472
+ │ │ │ ├── utils/ # Utility services
473
+ │ │ │ │ ├── utils.service.ts
474
+ │ │ │ │ ├── object-merger.service.ts
475
+ │ │ │ │ ├── encryption/ # Encryption utilities
476
+ │ │ │ │ └── app.service.ts
477
+ │ │ │ │
478
+ │ │ │ └── index.ts # Service exports
479
+ │ │ │
480
+ │ │ ├── interceptors/
481
+ │ │ │ ├── request-error.interceptor.ts # Error handling + toasts
482
+ │ │ │ ├── request-header.interceptor.ts # Auto headers
483
+ │ │ │ ├── credentials.interceptor.ts # withCredentials
484
+ │ │ │ ├── proxy-debugger.interceptor.ts # Debug logging
485
+ │ │ │ └── models/
486
+ │ │ │
487
+ │ │ ├── models/ # Shared models
488
+ │ │ │ ├── api-request.model.ts
489
+ │ │ │ ├── database-storage.model.ts
490
+ │ │ │ ├── data-type.enum.ts
491
+ │ │ │ ├── retry-options.model.ts
492
+ │ │ │ ├── config-options.model.ts
493
+ │ │ │ └── index.ts
494
+ │ │ │
495
+ │ │ ├── http-request-services-demo/ # Demo components
496
+ │ │ │ ├── request-manager-demo/
497
+ │ │ │ ├── request-manager-state-demo/
498
+ │ │ │ ├── request-signals-manager-demo/
499
+ │ │ │ ├── database-data-demo/
500
+ │ │ │ ├── local-storage-demo/
501
+ │ │ │ └── local-storage-signals-demo/
502
+ │ │ │
503
+ │ │ ├── http-request-manager.module.ts # Module definition
504
+ │ │ └── index.ts # Public API
505
+ │ │
506
+ │ └── docs/ # Documentation
507
+ │ ├── HTTP_MANAGER_README.md
508
+ │ ├── HTTP_STATE_MANAGER_README.md
509
+ │ ├── HTTP_SINGNALS_MANAGER_README.md
510
+ │ ├── WS_MANAGER_README.md
511
+ │ ├── DATABASE_README.md
512
+ │ ├── LOCAL_STORAGE_README.md
513
+ │ ├── UTILS_README.md
514
+ │ └── INTERCEPTOR_README.md
515
+
516
+ ├── ARCHITECTURE.md # This file
517
+ ├── README.md # Main documentation
518
+ ├── package.json
519
+ └── ng-package.json # ng-packagr config
520
+ ```
521
+
522
+ ### Backend Requirements
523
+
524
+ For full functionality, the backend server must:
525
+
526
+ 1. **HTTP REST API**
527
+ - CRUD endpoints for entities
528
+ - JSON request/response format
529
+ - Support for standard HTTP methods (GET, POST, PUT, DELETE)
530
+
531
+ 2. **WebSocket Server**
532
+ - Accept WebSocket connections with optional JWT authentication
533
+ - Handle message types: `subscribe`, `unsubscribe`, `message`, `notification`, etc.
534
+ - Broadcast messages to channel subscribers
535
+ - Maintain channel subscriptions per connection
536
+
537
+ 3. **Database (for MES- channels)**
538
+ - Store notifications with: id, channel, user_name, created (epoch), message (JSON)
539
+ - Support queries by channel and date range
540
+ - Provide endpoints for:
541
+ - GET today's notification channels
542
+ - GET previous day's notification channels
543
+ - GET notifications by channel with date filters
544
+
545
+ ### Example Backend Structure
546
+
547
+ See `gtlc-websockets` server implementation for reference:
548
+ - `ws-server.js` - Main server with HTTP and WebSocket setup
549
+ - `middleware/websocket-service.js` - WebSocket message handlers
550
+ - `middleware/notification-db.js` - SQLite database operations
551
+
552
+ ---
553
+
554
+ ## Security Considerations
555
+
556
+ 1. **JWT Authentication**: WebSocket connections can require JWT tokens
557
+ 2. **Encrypted Storage**: LocalStorage can use AES encryption with APP_ID
558
+ 3. **Channel Access Control**: Backend validates user permissions for channels
559
+ 4. **HTTPS/WSS**: Production deployments should use secure protocols
560
+ 5. **Data Validation**: All inputs are validated on server side
561
+
562
+ ---
563
+
564
+ ## Performance Optimizations
565
+
566
+ 1. **IndexedDB Caching**: Reduces server load and improves offline capability
567
+ 2. **Polling with Countdown**: Visual feedback prevents duplicate requests
568
+ 3. **Connection Pooling**: WebSocket reuses single connection for all channels
569
+ 4. **Debounced Updates**: State updates batched when possible
570
+ 5. **Lazy Loading**: Services loaded only when needed
571
+
572
+ ---
573
+
574
+ ## Migration Guide
575
+
576
+ ### From HTTPClient to HTTPManagerService
577
+
578
+ ```typescript
579
+ // Before (HttpClient)
580
+ http.get('api/users').subscribe(users => {
581
+ this.users = users;
582
+ this.loading = false;
583
+ });
584
+
585
+ // After (HTTPManagerService)
586
+ httpManager.getRequest(
587
+ ApiRequest.adapt({ path: ['users'] })
588
+ ).subscribe();
589
+
590
+ data$ = this.httpManager.data$;
591
+ isLoading$ = this.httpManager.isPending$;
592
+ ```
593
+
594
+ ### From Manual State to HTTPManagerStateService
595
+
596
+ ```typescript
597
+ // Before (Manual State)
598
+ users: User[] = [];
599
+ loading = false;
600
+
601
+ loadUsers() {
602
+ this.loading = true;
603
+ this.http.get('api/users').subscribe(users => {
604
+ this.users = users;
605
+ this.loading = false;
606
+ });
607
+ }
608
+
609
+ addUser(user: User) {
610
+ this.http.post('api/users', user).subscribe(newUser => {
611
+ this.users = [...this.users, newUser];
612
+ });
613
+ }
614
+
615
+ // After (HTTPManagerStateService)
616
+ @Injectable()
617
+ export class UsersStore extends HTTPManagerStateService<User> {
618
+ constructor() {
619
+ super(ApiRequest.adapt({ path: ['users'] }), DataType.ARRAY);
620
+ }
621
+
622
+ loadUsers() { this.fetchRecords(); }
623
+ addUser(user: User) { this.createRecord(user); }
624
+ }
625
+
626
+ // Component
627
+ data$ = this.usersStore.data$;
628
+ isLoading$ = this.usersStore.isPending$;
629
+ ```
630
+
631
+ ---
632
+
633
+ This architecture provides a scalable, maintainable foundation for Angular applications with comprehensive data management capabilities.