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,435 @@
1
+ import { HttpClient, HttpEvent, HttpEventType, HttpHeaderResponse } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { BehaviorSubject, Observable, throwError } from 'rxjs';
4
+ import { catchError, delay, filter, finalize, map, tap } from 'rxjs/operators';
5
+
6
+ import { ApiRequest } from '../request-manager-state-service/models/api-request.model';
7
+ import { StreamType } from '../request-manager-state-service/models/stream-type.enum';
8
+ import { PathQueryService, HeadersService } from '../utils';
9
+ import { requestStreaming } from './rxjs-operators/request-streaming';
10
+ import { StreamConfigModel } from '../request-manager-state-service/models/stream-config.model';
11
+ import { StreamOutputModel } from '../request-manager-state-service/models/stream-output.model';
12
+ import { StreamProgressModel } from '../request-manager-state-service/models/stream-progress.model';
13
+ import { WebsocketService } from '../ws-manager-service';
14
+ import { InvalidFileInfoModel, UploadValidationErrorModel } from '../../models';
15
+
16
+
17
+ @Injectable({
18
+ providedIn: 'root'
19
+ })
20
+ export class RequestService extends WebsocketService {
21
+
22
+ private http = inject(HttpClient)
23
+
24
+ private pathQueryService = inject(PathQueryService)
25
+ private headersService = inject(HeadersService)
26
+
27
+ isPending = new BehaviorSubject<boolean>(false)
28
+ isPending$ = this.isPending.asObservable()
29
+
30
+ progress = new BehaviorSubject<number>(0)
31
+ progress$ = this.progress.asObservable()
32
+
33
+ streamProgress = new BehaviorSubject<StreamProgressModel>(StreamProgressModel.adapt({
34
+ received: 0,
35
+ total: undefined,
36
+ percent: 0,
37
+ stage: 'connecting'
38
+ }))
39
+ streamProgress$ = this.streamProgress.asObservable()
40
+
41
+ getRecordRequest<T>(options: ApiRequest): Observable<T>;
42
+ // Overload for non-streaming requests
43
+ getRecordRequest<T>(options: ApiRequest): Observable<T>;
44
+ // Overload for streaming requests
45
+ getRecordRequest<T>(options: ApiRequest & { stream: true }): Observable<T[]>;
46
+ // Implementation
47
+ getRecordRequest<T>(options: ApiRequest): Observable<any> {
48
+ const urlPath = this.buildUrlPath(options);
49
+ const headers = this.buildCombinedHeaders(options);
50
+
51
+ this.isPending.next(true);
52
+
53
+ return (options.stream)
54
+ ? this.http.get<any>(urlPath, {
55
+ ...headers,
56
+ observe: 'events',
57
+ responseType: 'text',
58
+ reportProgress: true
59
+ }).pipe(
60
+ // tap(data => console.log('STREAM DATA', data)),
61
+ requestStreaming(StreamConfigModel.adapt({ streamType: options.streamType || StreamType.NDJSON, totalHeader: 'X-Total-Count' })),
62
+ this.requestStreaming(options),
63
+ this.handleFinalize()
64
+ )
65
+ : this.http.get<T>(urlPath, headers).pipe(
66
+ this.request(options),
67
+ )
68
+ }
69
+
70
+ createRecordRequest<T>(options: ApiRequest, data: any): Observable<T>;
71
+ createRecordRequest<T>(options: ApiRequest & { stream: true }, data: any): Observable<T[]>;
72
+ createRecordRequest<T>(options: ApiRequest, data: any): Observable<T>;
73
+ createRecordRequest<T>(options: ApiRequest & { stream: true }, data: any): Observable<T[]>;
74
+ createRecordRequest<T>(options: ApiRequest, data: any): Observable<any> {
75
+
76
+ const urlPath = this.buildUrlPath(options);
77
+ const headers = this.buildCombinedHeaders(options);
78
+
79
+ this.isPending.next(true);
80
+
81
+ return (options.stream)
82
+ ? this.http.post<any>(urlPath, data, {
83
+ ...headers,
84
+ observe: 'events',
85
+ responseType: 'text',
86
+ reportProgress: true
87
+ }).pipe(
88
+ requestStreaming(StreamConfigModel.adapt({ streamType: options.streamType || StreamType.NDJSON, totalHeader: 'X-Total-Count' })),
89
+ this.requestStreaming(options),
90
+ this.handleFinalize()
91
+ )
92
+ : this.http.post<T>(urlPath, data, headers).pipe(
93
+ this.request(options),
94
+ )
95
+ }
96
+
97
+ updateRecordRequest<T>(options: ApiRequest, data: any): Observable<T> {
98
+ const urlPath = this.buildUrlPath(options);
99
+ const headers = this.buildHeaders(options);
100
+
101
+ this.isPending.next(true);
102
+
103
+ return this.http.put<any>(urlPath, data, headers).pipe(
104
+ this.request(options),
105
+ )
106
+ }
107
+
108
+ deleteRecordRequest<T>(options: ApiRequest): Observable<T> {
109
+
110
+ const urlPath = this.buildUrlPath(options);
111
+ const headers = this.buildHeaders(options);
112
+
113
+ this.isPending.next(true);
114
+
115
+ return this.http.delete<any>(urlPath, headers).pipe(
116
+ this.request(options),
117
+ )
118
+ }
119
+
120
+ // Helper functions
121
+ private buildUrlPath(options: ApiRequest): string {
122
+ return this.pathQueryService.buildAPIPath(options.server, options.path);
123
+ }
124
+
125
+ private buildHeaders(options: ApiRequest): any {
126
+ return this.headersService.generateHeaders(options.headers);
127
+ }
128
+
129
+ private buildCombinedHeaders(options: ApiRequest): any {
130
+ const headers = this.headersService.generateHeaders(options.headers)
131
+ return this.combineHeaders(headers, options.stream || false)
132
+ }
133
+
134
+ private request<T>(options: ApiRequest): (source: Observable<any>) => Observable<T> {
135
+ return (source$: Observable<any>): Observable<T> => {
136
+ return source$.pipe(
137
+ map(data => {
138
+ if (!data || (Array.isArray(data) && data.length === 0)) {
139
+ return data
140
+ }
141
+ if (options?.adapter) {
142
+ return Array.isArray(data)
143
+ ? data.map((item: any) => options.adapter(item))
144
+ : options.adapter(data)
145
+ }
146
+ return data
147
+ })
148
+ )
149
+ }
150
+ }
151
+
152
+ private requestStreaming<T>(options: ApiRequest): (source: Observable<StreamOutputModel<T>>) => Observable<T[]> {
153
+ return (source$: Observable<StreamOutputModel<T>>): Observable<T[]> => {
154
+ return source$.pipe(
155
+ tap(output => {
156
+ // Update progress from stream output
157
+ this.progress.next(output.progress.received);
158
+ this.streamProgress.next(output.progress);
159
+ }),
160
+ map(output => {
161
+ const data = output.data;
162
+ if (!data || (Array.isArray(data) && data.length === 0)) {
163
+ return data
164
+ }
165
+ if (options?.adapter) {
166
+ return data.map((item: any) => options.adapter(item))
167
+ }
168
+ return data
169
+ })
170
+ )
171
+ }
172
+ }
173
+
174
+ downloadFileRequest(options: ApiRequest): Observable<any> {
175
+
176
+ this.isPending.next(true);
177
+
178
+ const urlPath = this.buildUrlPath(options);
179
+
180
+ return this.http.get(urlPath, { responseType: 'blob', observe: 'events', reportProgress: true })
181
+ .pipe(
182
+ map((event: HttpEvent<any>) => {
183
+
184
+ this.isPending.next(true)
185
+
186
+ if (event instanceof HttpHeaderResponse) {
187
+ if(event.status !== 200) {
188
+ this.isPending.next(false)
189
+ throw new Error('Download failed');
190
+ }
191
+ }
192
+
193
+ // 0 Sent Request has been sent.
194
+ // 1 UploadProgress Upload is in progress.
195
+ // 2 ResponseHeader Response headers received.
196
+ // 3 DownloadProgress Download is in progress.
197
+ // 4 Response Response is fully received.
198
+ // 5 User Custom user event.
199
+
200
+ switch (event.type) {
201
+
202
+ case HttpEventType.DownloadProgress:
203
+
204
+ const status = (event.total) ? Math.round(event.loaded / (event.total || 1) * 100) : 100
205
+ this.progress.next(status)
206
+ return status
207
+
208
+ case HttpEventType.Response:
209
+
210
+ try {
211
+
212
+ const fileNamePath = (options?.saveAs) ? options.saveAs : (options.path) ? options.path[options.path.length - 1] : []
213
+ const fileContentHeader = options.fileContentHeader || 'Content-Disposition'
214
+ const header_content = event.headers.get(fileContentHeader);
215
+
216
+ // checks if header_content is not empty and splits the header_content to get the file name
217
+ // otherwise, it will use the fileDownload - contains the file name and extension
218
+ const file = (header_content) ? header_content.split('=')[1].substring(0, header_content.split('=')[1].length) : ''
219
+
220
+ const fileName = (file) ? file : fileNamePath
221
+
222
+ if (fileName === '') {
223
+ this.isPending.next(false);
224
+ throw new Error('Save File: (file name and extension) not found in Headers or Path');
225
+ }
226
+
227
+ this.downloadFile(fileName, event.body)
228
+ this.isPending.next(false)
229
+
230
+ return 100
231
+
232
+ } catch (error) {
233
+ throw new Error('Download failed');
234
+ }
235
+
236
+ default:
237
+ this.isPending.next(false)
238
+ return 0
239
+ }
240
+
241
+ }),
242
+ catchError(err => {
243
+ return throwError(() => err)
244
+ })
245
+ )
246
+ }
247
+
248
+ uploadFileRequest(options: ApiRequest): Observable<any> {
249
+ this.isPending.next(true);
250
+
251
+ const files = options.uploadFiles ? (Array.isArray(options.uploadFiles) ? options.uploadFiles : [options.uploadFiles]) : [];
252
+ const validation = this.validateUploadFiles(files, options);
253
+
254
+ if (validation.validFiles.length === 0) {
255
+ this.isPending.next(false);
256
+ return throwError(() => new UploadValidationErrorModel(
257
+ validation.invalidFiles,
258
+ 0,
259
+ files.length
260
+ ));
261
+ }
262
+
263
+ const fieldName = options.uploadFieldName || (files.length === 1 ? 'file' : 'files');
264
+ const formData = this.buildFormData(validation.validFiles, fieldName);
265
+ const urlPath = this.buildUrlPath(options);
266
+ const method = options.uploadHttpMethod || 'POST';
267
+
268
+ return this.http.request(method, urlPath, {
269
+ body: formData,
270
+ observe: 'events',
271
+ reportProgress: true
272
+ }).pipe(
273
+ map((event: HttpEvent<any>) => {
274
+ this.isPending.next(true);
275
+
276
+ switch (event.type) {
277
+ case HttpEventType.UploadProgress:
278
+ const status = event.total ? Math.round(event.loaded / (event.total || 1) * 100) : 0;
279
+ this.progress.next(status);
280
+ return null;
281
+
282
+ case HttpEventType.Response:
283
+ this.isPending.next(false);
284
+ this.progress.next(0);
285
+ return event.body;
286
+
287
+ default:
288
+ return null;
289
+ }
290
+ }),
291
+ filter((body: any) => body !== null),
292
+ catchError(err => {
293
+ this.isPending.next(false);
294
+ this.progress.next(0);
295
+ return throwError(() => err);
296
+ })
297
+ );
298
+ }
299
+
300
+ private validateUploadFiles(files: File[], options: ApiRequest): { validFiles: File[]; invalidFiles: InvalidFileInfoModel[] } {
301
+ const validFiles: File[] = [];
302
+ const invalidFiles: InvalidFileInfoModel[] = [];
303
+ let totalSize = 0;
304
+
305
+ for (const file of files) {
306
+ const errors: string[] = [];
307
+
308
+ if (options.allowedTypes && options.allowedTypes.length > 0) {
309
+ const isAllowed = options.allowedTypes.some(type => {
310
+ if (type.endsWith('/*')) {
311
+ return file.type.startsWith(type.replace('/*', '/'));
312
+ }
313
+ return file.type === type;
314
+ });
315
+ if (!isAllowed) {
316
+ errors.push('type not allowed');
317
+ }
318
+ }
319
+
320
+ const maxFileSize = options.maxFileSize !== undefined ? options.maxFileSize : Infinity;
321
+ if (file.size > maxFileSize) {
322
+ errors.push('exceeds maxFileSize');
323
+ }
324
+
325
+ if (errors.length > 0) {
326
+ invalidFiles.push(new InvalidFileInfoModel(file.name, file.size, file.type, errors));
327
+ } else {
328
+ validFiles.push(file);
329
+ totalSize += file.size;
330
+ }
331
+ }
332
+
333
+ const maxTotalSize = options.maxTotalSize !== undefined ? options.maxTotalSize : Infinity;
334
+ if (totalSize > maxTotalSize) {
335
+ return {
336
+ validFiles: [],
337
+ invalidFiles: [
338
+ new InvalidFileInfoModel(
339
+ 'total',
340
+ totalSize,
341
+ '',
342
+ ['exceeds maxTotalSize']
343
+ )
344
+ ]
345
+ };
346
+ }
347
+
348
+ return { validFiles, invalidFiles };
349
+ }
350
+
351
+ private buildFormData(files: File[], fieldName: string): FormData {
352
+ const formData = new FormData();
353
+ files.forEach((file) => {
354
+ formData.append(fieldName, file);
355
+ });
356
+ return formData;
357
+ }
358
+
359
+ private handleFinalize(): (source: Observable<any>) => Observable<any> {
360
+ return finalize(() => this.isPending.next(false));
361
+ }
362
+
363
+ private downloadFile(file:string, fileData: any) {
364
+
365
+ const navigatorAny = window.navigator as any
366
+
367
+ const extension = file.split('.')[1].toLowerCase()
368
+
369
+ var newBlob = new Blob([fileData], { type: this.createFileType(extension) })
370
+
371
+ if (navigatorAny.msSaveOrOpenBlob) {
372
+ navigatorAny.msSaveOrOpenBlob(newBlob, file)
373
+ } else {
374
+ const link = document.createElement('a')
375
+ const url = window.URL.createObjectURL(newBlob)
376
+ link.href = url
377
+ link.download = file
378
+ link.click()
379
+ window.URL.revokeObjectURL(url)
380
+ }
381
+
382
+ }
383
+
384
+ private createFileType(ext: any): string {
385
+
386
+ let fileType: string = ""
387
+
388
+ if (ext == 'pdf' || ext == 'csv') {
389
+ fileType = `application/${ext}`
390
+ }
391
+ else if (ext == 'jpeg' || ext == 'jpg' || ext == 'png') {
392
+ fileType = `image/${ext}`
393
+ }
394
+ else if (ext == 'txt') {
395
+ fileType = 'text/plain'
396
+ }
397
+
398
+ else if (ext == 'ppt' || ext == 'pot' || ext == 'pps' || ext == 'ppa') {
399
+ fileType = 'application/vnd.ms-powerpoint'
400
+ }
401
+ else if (ext == 'pptx') {
402
+ fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
403
+ }
404
+ else if (ext == 'doc' || ext == 'dot') {
405
+ fileType = 'application/msword'
406
+ }
407
+ else if (ext == 'docx') {
408
+ fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
409
+ }
410
+ else if (ext == 'xls' || ext == 'xlt' || ext == 'xla') {
411
+ fileType = 'application/vnd.ms-excel'
412
+ }
413
+ else if (ext == 'xlsx') {
414
+ fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
415
+ }
416
+
417
+ return fileType
418
+
419
+ }
420
+
421
+ private combineHeaders(headers: any, isStreaming: boolean) {
422
+
423
+ return (isStreaming) ?
424
+ {
425
+ ...headers,
426
+ observe: 'events',
427
+ responseType: 'text',
428
+ reportProgress: true,
429
+ Accept: 'text/event-stream'
430
+ }
431
+ : headers
432
+
433
+ }
434
+
435
+ }
@@ -0,0 +1,17 @@
1
+ import { Observable, defer, interval } from 'rxjs';
2
+ import { takeWhile, map, tap } from 'rxjs/operators';
3
+
4
+ export function countdown(duration: number): Observable<number> {
5
+
6
+ return defer(() => {
7
+
8
+ const currentCount = { current: duration }
9
+
10
+ return interval(1000).pipe(
11
+ map(() => --currentCount.current),
12
+ takeWhile(count => count >= 0)
13
+ )
14
+
15
+ })
16
+
17
+ }
@@ -0,0 +1,16 @@
1
+ import { Observable, timer } from 'rxjs';
2
+ import { retry } from 'rxjs/operators';
3
+
4
+ const DEFAULT_MAX_RETRIES = 3;
5
+
6
+ export function delayedRetry<T>(delayMs: number, maxRetry = DEFAULT_MAX_RETRIES) {
7
+ return (src: Observable<T>) =>
8
+ src.pipe(
9
+ retry({
10
+ count: maxRetry,
11
+ delay: () => timer(delayMs)
12
+ })
13
+ );
14
+ }
15
+
16
+
@@ -0,0 +1,4 @@
1
+ export * from "./countdown";
2
+ export * from "./delay-retry";
3
+ export * from "./request-polling";
4
+ export * from "./request-streaming";
@@ -0,0 +1,35 @@
1
+ import { Observable, interval } from 'rxjs';
2
+ import { mergeMap, startWith, takeUntil, tap } from 'rxjs/operators';
3
+
4
+ export function requestPolling<T>(pollInterval: number, stopCondition$: Observable<any>, isPending$: any) {
5
+ return (source: Observable<T>): Observable<T> => {
6
+ return interval(pollInterval * 1000)
7
+ .pipe(
8
+ startWith(0),
9
+ tap(() => {
10
+ try {
11
+ if (isPending$ && typeof isPending$.next === 'function') {
12
+ isPending$.next(true);
13
+ } else if (isPending$ && typeof isPending$.set === 'function') {
14
+ isPending$.set(true);
15
+ }
16
+ } catch (e) {
17
+ // no-op if setting fails
18
+ }
19
+ }),
20
+ mergeMap(() => source),
21
+ tap(() => {
22
+ try {
23
+ if (isPending$ && typeof isPending$.next === 'function') {
24
+ isPending$.next(false);
25
+ } else if (isPending$ && typeof isPending$.set === 'function') {
26
+ isPending$.set(false);
27
+ }
28
+ } catch (e) {
29
+ // no-op if setting fails
30
+ }
31
+ }),
32
+ takeUntil(stopCondition$),
33
+ );
34
+ };
35
+ }