http-request-manager 18.7.21 → 18.7.24

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 (198) hide show
  1. package/fesm2022/http-request-manager.mjs +7633 -0
  2. package/fesm2022/http-request-manager.mjs.map +1 -0
  3. package/http-request-manager-18.7.24.tgz +0 -0
  4. package/package.json +16 -5
  5. package/types/http-request-manager.d.ts +2277 -0
  6. package/ARCHITECTURE.md +0 -483
  7. package/DATABASE_README.md +0 -1176
  8. package/HTTP_MANAGER_README.md +0 -579
  9. package/HTTP_SINGNALS_MANAGER_README.md +0 -654
  10. package/HTTP_STATE_MANAGER_README.md +0 -948
  11. package/INTERCEPTOR_README.md +0 -549
  12. package/LOCAL_STORAGE_README.md +0 -1056
  13. package/STORE_STATE_MANAGER_README.md +0 -1322
  14. package/UTILS_README.md +0 -1186
  15. package/WS_MANAGER_README.md +0 -613
  16. package/ng-package.json +0 -8
  17. package/src/lib/http-request-manager.module.ts +0 -132
  18. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -65
  19. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  20. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -224
  21. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -114
  22. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  23. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -52
  24. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  25. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  26. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -206
  27. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +0 -200
  28. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +0 -17
  29. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +0 -212
  30. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  31. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  32. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  33. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  34. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  35. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  36. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  37. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  38. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  39. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  40. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  41. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  42. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  43. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  44. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  45. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  46. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  47. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  48. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  49. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -392
  50. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -24
  51. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -461
  52. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -393
  53. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  54. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -421
  55. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -87
  56. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +0 -120
  57. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  58. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +0 -3
  59. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +0 -16
  60. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  61. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +0 -3
  62. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +0 -16
  63. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +0 -31
  64. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +0 -72
  65. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +0 -41
  66. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +0 -205
  67. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +0 -77
  68. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +0 -11
  69. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +0 -96
  70. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +0 -31
  71. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +0 -229
  72. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +0 -30
  73. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +0 -172
  74. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +0 -31
  75. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +0 -239
  76. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +0 -31
  77. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +0 -32
  78. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  79. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +0 -84
  80. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +0 -41
  81. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +0 -3
  82. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +0 -83
  83. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +0 -147
  84. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +0 -158
  85. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  86. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  87. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  88. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +0 -28
  89. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +0 -10
  90. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  91. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  92. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  93. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  94. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  95. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  96. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +0 -30
  97. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +0 -19
  98. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +0 -25
  99. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +0 -19
  100. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +0 -24
  101. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +0 -30
  102. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +0 -49
  103. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +0 -33
  104. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +0 -380
  105. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +0 -24
  106. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +0 -410
  107. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +0 -28
  108. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +0 -48
  109. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  110. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +0 -23
  111. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +0 -36
  112. package/src/lib/index.ts +0 -3
  113. package/src/lib/interceptors/credentials.interceptor.ts +0 -16
  114. package/src/lib/interceptors/index.ts +0 -6
  115. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  116. package/src/lib/interceptors/models/index.ts +0 -2
  117. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  118. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  119. package/src/lib/interceptors/request-header.interceptor.ts +0 -53
  120. package/src/lib/models/config-http-options.model.ts +0 -42
  121. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  122. package/src/lib/models/config-options.model.ts +0 -27
  123. package/src/lib/models/config-token.model.ts +0 -9
  124. package/src/lib/models/data-type.enum.ts +0 -5
  125. package/src/lib/models/database-storage.model.ts +0 -24
  126. package/src/lib/models/index.ts +0 -12
  127. package/src/lib/models/retry-options.model.ts +0 -22
  128. package/src/lib/services/database-manager-service/database.manager.service.ts +0 -262
  129. package/src/lib/services/database-manager-service/db.storage.service.ts +0 -207
  130. package/src/lib/services/database-manager-service/index.ts +0 -4
  131. package/src/lib/services/database-manager-service/models/index.ts +0 -2
  132. package/src/lib/services/database-manager-service/models/table-schema.ts +0 -33
  133. package/src/lib/services/index.ts +0 -12
  134. package/src/lib/services/local-storage-manager-service/index.ts +0 -4
  135. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  136. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -426
  137. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +0 -67
  138. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +0 -345
  139. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  140. package/src/lib/services/local-storage-manager-service/models/index.ts +0 -6
  141. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -35
  142. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  143. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -32
  144. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  145. package/src/lib/services/request-manager-services/README.md +0 -268
  146. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +0 -246
  147. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -232
  148. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -274
  149. package/src/lib/services/request-manager-services/index.ts +0 -8
  150. package/src/lib/services/request-manager-services/request-signals.service.ts +0 -214
  151. package/src/lib/services/request-manager-services/request.service.ts +0 -309
  152. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  153. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  154. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +0 -4
  155. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -35
  156. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -436
  157. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -1321
  158. package/src/lib/services/request-manager-state-service/index.ts +0 -3
  159. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -61
  160. package/src/lib/services/request-manager-state-service/models/index.ts +0 -6
  161. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -22
  162. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +0 -13
  163. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +0 -39
  164. package/src/lib/services/store-state-manager-service/index.ts +0 -3
  165. package/src/lib/services/store-state-manager-service/models/index.ts +0 -2
  166. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +0 -24
  167. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +0 -88
  168. package/src/lib/services/utils/app.service.spec.ts +0 -25
  169. package/src/lib/services/utils/app.service.ts +0 -21
  170. package/src/lib/services/utils/encryption/README.md +0 -79
  171. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  172. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  173. package/src/lib/services/utils/encryption/index.ts +0 -5
  174. package/src/lib/services/utils/encryption/random.ts +0 -81
  175. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -93
  176. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  177. package/src/lib/services/utils/headers.service.ts +0 -18
  178. package/src/lib/services/utils/index.ts +0 -7
  179. package/src/lib/services/utils/object-merger.service.spec.ts +0 -18
  180. package/src/lib/services/utils/object-merger.service.ts +0 -78
  181. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  182. package/src/lib/services/utils/path-query.service.ts +0 -69
  183. package/src/lib/services/utils/random-color.utils.ts +0 -83
  184. package/src/lib/services/utils/utils.service.spec.ts +0 -165
  185. package/src/lib/services/utils/utils.service.ts +0 -192
  186. package/src/lib/services/ws-manager-service/index.ts +0 -4
  187. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +0 -24
  188. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +0 -24
  189. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +0 -24
  190. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +0 -5
  191. package/src/lib/services/ws-manager-service/models/index.ts +0 -5
  192. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +0 -38
  193. package/src/lib/services/ws-manager-service/services/index.ts +0 -3
  194. package/src/lib/services/ws-manager-service/services/websocket.service.ts +0 -392
  195. package/src/public-api.ts +0 -14
  196. package/tsconfig.lib.json +0 -32
  197. package/tsconfig.lib.prod.json +0 -10
  198. package/tsconfig.spec.json +0 -14
package/ARCHITECTURE.md DELETED
@@ -1,483 +0,0 @@
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)
85
- ├── Features:
86
- │ ├── HTTP CRUD Operations
87
- │ ├── Loading States (isPending$, error$, data$)
88
- │ ├── Retry Logic
89
- │ ├── Polling with Countdown
90
- │ ├── Adapters & Mappers
91
- │ └── Stream Handling
92
-
93
- ├── HTTPManagerSignalsService
94
- │ └── Same as HTTPManagerService but with Angular Signals
95
-
96
- └── HTTPManagerStateService (extends ComponentStore)
97
- ├── Inherits all HTTPManagerService features
98
- ├── ComponentStore Integration
99
- ├── CRUD with Auto State Updates
100
- ├── WebSocket Integration
101
- │ ├── SYS- channels (State sync)
102
- │ ├── PUB- channels (Messaging)
103
- │ └── MES- channels (Notifications)
104
- ├── IndexedDB Caching
105
- ├── Pagination Support
106
- └── Real-time Updates
107
- ```
108
-
109
- ## Data Flow
110
-
111
- ### HTTP Request Flow
112
-
113
- ```
114
- Component
115
-
116
- ├─> Call Service Method (e.g., fetchRecords())
117
-
118
-
119
- HTTPManagerStateService
120
-
121
- ├─> Build ApiRequest
122
- │ ├─> Apply Mapper (if provided)
123
- │ └─> Add Headers
124
-
125
-
126
- HTTPManagerService
127
-
128
- ├─> Check Polling
129
- ├─> Execute HTTP Request (HttpClient)
130
-
131
-
132
- Interceptors
133
-
134
- ├─> RequestHeadersInterceptor (add headers)
135
- ├─> WithCredentialsInterceptor (add credentials)
136
- └─> RequestErrorInterceptor (handle errors)
137
-
138
-
139
- Backend Server
140
-
141
- ├─> Process Request
142
- └─> Return Response
143
-
144
-
145
- HTTPManagerService
146
-
147
- ├─> Apply Adapter (transform data)
148
- ├─> Update isPending$ = false
149
- ├─> Update data$ with new data
150
-
151
-
152
- HTTPManagerStateService
153
-
154
- ├─> Update ComponentStore state
155
- └─> Save to IndexedDB (if configured)
156
-
157
-
158
- Component
159
-
160
- └─> Display updated data via data$ observable
161
- ```
162
-
163
- ### WebSocket Message Flow
164
-
165
- ```
166
- Component
167
-
168
- └─> Send Message (e.g., sendNotification())
169
-
170
-
171
- HTTPManagerStateService
172
-
173
- └─> Add Channel Prefix (MES-, PUB-, or SYS-)
174
-
175
-
176
- WebsocketService
177
-
178
- ├─> Format Message
179
- │ ├─> type: 'notification'
180
- │ ├─> channel: 'MES-alerts'
181
- │ ├─> content: { message: '...' }
182
- │ └─> sessionId: { id, name, email }
183
-
184
- └─> Send via WebSocket
185
-
186
-
187
- Backend WebSocket Server
188
-
189
- ├─> Validate Channel & User
190
- ├─> Store in Database (for MES- channels)
191
- └─> Broadcast to Subscribers
192
-
193
-
194
- All Connected Clients (Subscribers)
195
-
196
- ├─> WebsocketService receives message
197
-
198
-
199
- HTTPManagerStateService
200
-
201
- ├─> Update ComponentStore
202
- └─> Emit via notificationMessages$
203
-
204
-
205
- Component
206
-
207
- └─> Display notification in UI
208
- ```
209
-
210
- ## Channel Architecture
211
-
212
- ### Channel Types and Data Flow
213
-
214
- ```
215
- ┌─────────────────────────────────────────────────────────────────┐
216
- │ Client Application │
217
- ├─────────────────────────────────────────────────────────────────┤
218
- │ │
219
- │ Component calls: │
220
- │ ┌──────────────────────────────────────────────────────────┐ │
221
- │ │ stateService.subscribeToChannel('general') (PUB)│ │
222
- │ │ stateService.subscribeToNotificationChannel('alerts') (MES)│ │
223
- │ │ stateService.fetchRecords() (SYS)│ │
224
- │ └──────────────────────────────────────────────────────────┘ │
225
- │ │ │
226
- │ ▼ │
227
- │ ┌──────────────────────────────────────────────────────────┐ │
228
- │ │ HTTPManagerStateService │ │
229
- │ │ - Adds appropriate prefix (PUB-, MES-, SYS-) │ │
230
- │ │ - Routes to WebsocketService │ │
231
- │ └──────────────────────────────────────────────────────────┘ │
232
- │ │ │
233
- │ ▼ │
234
- │ ┌──────────────────────────────────────────────────────────┐ │
235
- │ │ WebsocketService │ │
236
- │ │ - Manages connection lifecycle │ │
237
- │ │ - Sends subscription messages │ │
238
- │ │ - Receives and routes messages │ │
239
- │ └──────────────────────────────────────────────────────────┘ │
240
- │ │ │
241
- └────────────────────────────┼─────────────────────────────────────┘
242
-
243
-
244
- ┌─────────────────────────────────────────────────────────────────┐
245
- │ WebSocket Server │
246
- ├─────────────────────────────────────────────────────────────────┤
247
- │ │
248
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
249
- │ │ PUB- Channel │ │ MES- Channel │ │ SYS- Channel │ │
250
- │ │ │ │ │ │ │ │
251
- │ │ In-Memory │ │ DB Persisted │ │ State Sync │ │
252
- │ │ Broadcasting │ │ Notifications│ │ Private │ │
253
- │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
254
- │ │ │ │ │
255
- │ ▼ ▼ ▼ │
256
- │ ┌────────────────────────────────────────────────┐ │
257
- │ │ Channel Subscribers (Set<WebSocket>) │ │
258
- │ └────────────────────────────────────────────────┘ │
259
- │ │ │ │ │
260
- │ └──────────────────┴──────────────────┘ │
261
- │ │ │
262
- │ ▼ │
263
- │ ┌─────────────────────────────────────────────────┐ │
264
- │ │ Broadcast to All Subscribers │ │
265
- │ └─────────────────────────────────────────────────┘ │
266
- │ │
267
- │ For MES- channels: │
268
- │ ┌─────────────────────────────────────────────────┐ │
269
- │ │ 1. Store in SQLite Database │ │
270
- │ │ 2. Broadcast to current subscribers │ │
271
- │ │ 3. Retrieve historical data on new subscription│ │
272
- │ └─────────────────────────────────────────────────┘ │
273
- │ │
274
- └───────────────────────────────────────────────────────────────────┘
275
- ```
276
-
277
- ## State Management Flow
278
-
279
- ```
280
- ┌─────────────────────────────────────────────────────────────┐
281
- │ ComponentStore │
282
- │ (HTTPManagerStateService extends this) │
283
- ├─────────────────────────────────────────────────────────────┤
284
- │ │
285
- │ State Interface: │
286
- │ { │
287
- │ records: T[], // Array of entities │
288
- │ record: T | null, // Single selected entity │
289
- │ page: number, // Current page │
290
- │ totalPages: number, // Total pages │
291
- │ isPending: boolean, // Loading state │
292
- │ error: any // Error state │
293
- │ } │
294
- │ │
295
- │ Selectors (Observables): │
296
- │ ├─> data$ (all records) │
297
- │ ├─> record$ (single record) │
298
- │ ├─> selectRecord$(id) (specific record) │
299
- │ ├─> page$ │
300
- │ └─> totalPages$ │
301
- │ │
302
- │ Updaters (State Mutations): │
303
- │ ├─> updateRecordsState(records[]) │
304
- │ ├─> addRecordState(record) │
305
- │ ├─> updateRecordState(record) │
306
- │ ├─> deleteRecordState(id) │
307
- │ └─> setError(error) │
308
- │ │
309
- │ Effects (Side Effects): │
310
- │ ├─> fetchRecords() → HTTP GET │
311
- │ ├─> createRecord() → HTTP POST → addRecordState() │
312
- │ ├─> updateRecord() → HTTP PUT → updateRecordState() │
313
- │ ├─> deleteRecord() → HTTP DELETE → deleteRecordState() │
314
- │ └─> WebSocket messages → auto state updates │
315
- │ │
316
- └───────────────────────────────────────────────────────────────┘
317
- ```
318
-
319
- ## Caching Strategy
320
-
321
- ```
322
- ┌────────────────────────────────────────────────────────────┐
323
- │ Fetch Records Request │
324
- └──────────────────────┬─────────────────────────────────────┘
325
-
326
-
327
- ┌─────────────────────────┐
328
- │ DatabaseStorage Config? │
329
- └────────┬────────────────┘
330
-
331
- ┌───────┴────────┐
332
- │ │
333
- YES NO
334
- │ │
335
- ▼ ▼
336
- ┌──────────────────┐ ┌──────────────┐
337
- │Check IndexedDB │ │Fetch from │
338
- │for cached data │ │Server (HTTP) │
339
- └────┬─────────────┘ └──────┬───────┘
340
- │ │
341
- ▼ │
342
- ┌──────────────┐ │
343
- │Cache Valid? │ │
344
- └──┬───────────┘ │
345
- │ │
346
- ┌──┴──┐ │
347
- │ YES │ NO │
348
- │ │ │
349
- ▼ ▼ │
350
- │ ┌──────────────┐ │
351
- │ │Fetch from │ │
352
- │ │Server │ │
353
- │ └──────┬───────┘ │
354
- │ │ │
355
- │ ▼ │
356
- │ ┌──────────────┐ │
357
- │ │Save to │ │
358
- │ │IndexedDB │ │
359
- │ └──────┬───────┘ │
360
- │ │ │
361
- └─────────┴──────────────────┘
362
-
363
-
364
- ┌──────────────────────────┐
365
- │Update ComponentStore │
366
- │and emit via data$ │
367
- └──────────────────────────┘
368
- ```
369
-
370
- ## Integration Points
371
-
372
- ### Backend Requirements
373
-
374
- For full functionality, the backend server must:
375
-
376
- 1. **HTTP REST API**
377
- - CRUD endpoints for entities
378
- - JSON request/response format
379
- - Support for standard HTTP methods (GET, POST, PUT, DELETE)
380
-
381
- 2. **WebSocket Server**
382
- - Accept WebSocket connections with optional JWT authentication
383
- - Handle message types: `subscribe`, `unsubscribe`, `message`, `notification`, etc.
384
- - Broadcast messages to channel subscribers
385
- - Maintain channel subscriptions per connection
386
-
387
- 3. **Database (for MES- channels)**
388
- - Store notifications with: id, channel, user_name, created (epoch), message (JSON)
389
- - Support queries by channel and date range
390
- - Provide endpoints for:
391
- - GET today's notification channels
392
- - GET previous day's notification channels
393
- - GET notifications by channel with date filters
394
-
395
- ### Example Backend Structure
396
-
397
- See `gtlc-websockets` server implementation for reference:
398
- - `ws-server.js` - Main server with HTTP and WebSocket setup
399
- - `middleware/websocket-service.js` - WebSocket message handlers
400
- - `middleware/notification-db.js` - SQLite database operations
401
-
402
- ---
403
-
404
- ## Security Considerations
405
-
406
- 1. **JWT Authentication**: WebSocket connections can require JWT tokens
407
- 2. **Encrypted Storage**: LocalStorage can use AES encryption with APP_ID
408
- 3. **Channel Access Control**: Backend validates user permissions for channels
409
- 4. **HTTPS/WSS**: Production deployments should use secure protocols
410
- 5. **Data Validation**: All inputs are validated on server side
411
-
412
- ---
413
-
414
- ## Performance Optimizations
415
-
416
- 1. **IndexedDB Caching**: Reduces server load and improves offline capability
417
- 2. **Polling with Countdown**: Visual feedback prevents duplicate requests
418
- 3. **Connection Pooling**: WebSocket reuses single connection for all channels
419
- 4. **Debounced Updates**: State updates batched when possible
420
- 5. **Lazy Loading**: Services loaded only when needed
421
-
422
- ---
423
-
424
- ## Migration Guide
425
-
426
- ### From HTTPClient to HTTPManagerService
427
-
428
- ```typescript
429
- // Before (HttpClient)
430
- http.get('api/users').subscribe(users => {
431
- this.users = users;
432
- this.loading = false;
433
- });
434
-
435
- // After (HTTPManagerService)
436
- httpManager.getRequest(
437
- ApiRequest.adapt({ path: ['users'] })
438
- ).subscribe();
439
-
440
- data$ = this.httpManager.data$;
441
- isLoading$ = this.httpManager.isPending$;
442
- ```
443
-
444
- ### From Manual State to HTTPManagerStateService
445
-
446
- ```typescript
447
- // Before (Manual State)
448
- users: User[] = [];
449
- loading = false;
450
-
451
- loadUsers() {
452
- this.loading = true;
453
- this.http.get('api/users').subscribe(users => {
454
- this.users = users;
455
- this.loading = false;
456
- });
457
- }
458
-
459
- addUser(user: User) {
460
- this.http.post('api/users', user).subscribe(newUser => {
461
- this.users = [...this.users, newUser];
462
- });
463
- }
464
-
465
- // After (HTTPManagerStateService)
466
- @Injectable()
467
- export class UsersStore extends HTTPManagerStateService<User> {
468
- constructor() {
469
- super(ApiRequest.adapt({ path: ['users'] }), DataType.ARRAY);
470
- }
471
-
472
- loadUsers() { this.fetchRecords(); }
473
- addUser(user: User) { this.createRecord(user); }
474
- }
475
-
476
- // Component
477
- data$ = this.usersStore.data$;
478
- isLoading$ = this.usersStore.isPending$;
479
- ```
480
-
481
- ---
482
-
483
- This architecture provides a scalable, maintainable foundation for Angular applications with comprehensive data management capabilities.