http-request-manager 18.7.20 → 18.7.21

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 (197) hide show
  1. package/ARCHITECTURE.md +483 -0
  2. package/DATABASE_README.md +1176 -0
  3. package/HTTP_MANAGER_README.md +579 -0
  4. package/HTTP_SINGNALS_MANAGER_README.md +654 -0
  5. package/HTTP_STATE_MANAGER_README.md +948 -0
  6. package/INTERCEPTOR_README.md +549 -0
  7. package/LOCAL_STORAGE_README.md +1056 -0
  8. package/STORE_STATE_MANAGER_README.md +1322 -0
  9. package/UTILS_README.md +1186 -0
  10. package/WS_MANAGER_README.md +613 -0
  11. package/ng-package.json +8 -0
  12. package/package.json +1 -12
  13. package/src/lib/http-request-manager.module.ts +132 -0
  14. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +65 -0
  15. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  16. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +224 -0
  17. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +114 -0
  18. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  19. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +52 -0
  20. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  21. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  22. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +206 -0
  23. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  24. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  25. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +212 -0
  26. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  27. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  28. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  29. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  30. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  31. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  32. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  33. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  34. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  35. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  36. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  37. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  38. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  39. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  40. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  41. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  42. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  43. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  44. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  45. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +392 -0
  46. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +24 -0
  47. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +461 -0
  48. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +393 -0
  49. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  50. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +421 -0
  51. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +87 -0
  52. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +120 -0
  53. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  54. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  55. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  56. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  57. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  58. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  59. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  60. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +72 -0
  61. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  62. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +205 -0
  63. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +77 -0
  64. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  65. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +96 -0
  66. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +31 -0
  67. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +229 -0
  68. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  69. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  70. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  71. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  72. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  73. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  74. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  75. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  76. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +41 -0
  77. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  78. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  79. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  80. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +158 -0
  81. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  82. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  83. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  84. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  85. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  86. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  87. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  88. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  89. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  90. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  91. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  92. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  93. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  94. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  95. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  96. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  97. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  98. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  99. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  100. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  101. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  102. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  103. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  104. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +48 -0
  105. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  106. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  107. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  108. package/src/lib/index.ts +3 -0
  109. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  110. package/src/lib/interceptors/index.ts +6 -0
  111. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  112. package/src/lib/interceptors/models/index.ts +2 -0
  113. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  114. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  115. package/src/lib/interceptors/request-header.interceptor.ts +53 -0
  116. package/src/lib/models/config-http-options.model.ts +42 -0
  117. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  118. package/src/lib/models/config-options.model.ts +27 -0
  119. package/src/lib/models/config-token.model.ts +9 -0
  120. package/src/lib/models/data-type.enum.ts +5 -0
  121. package/src/lib/models/database-storage.model.ts +24 -0
  122. package/src/lib/models/index.ts +12 -0
  123. package/src/lib/models/retry-options.model.ts +22 -0
  124. package/src/lib/services/database-manager-service/database.manager.service.ts +262 -0
  125. package/src/lib/services/database-manager-service/db.storage.service.ts +207 -0
  126. package/src/lib/services/database-manager-service/index.ts +4 -0
  127. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  128. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  129. package/src/lib/services/index.ts +12 -0
  130. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  131. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  132. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +426 -0
  133. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  134. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +345 -0
  135. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  136. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  137. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  138. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  139. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  140. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  141. package/src/lib/services/request-manager-services/README.md +268 -0
  142. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +246 -0
  143. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +232 -0
  144. package/src/lib/services/request-manager-services/http-manager.service.ts +274 -0
  145. package/src/lib/services/request-manager-services/index.ts +8 -0
  146. package/src/lib/services/request-manager-services/request-signals.service.ts +214 -0
  147. package/src/lib/services/request-manager-services/request.service.ts +309 -0
  148. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  149. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  150. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  151. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  152. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +436 -0
  153. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +1321 -0
  154. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  155. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +61 -0
  156. package/src/lib/services/request-manager-state-service/models/index.ts +6 -0
  157. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +22 -0
  158. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  159. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +39 -0
  160. package/src/lib/services/store-state-manager-service/index.ts +3 -0
  161. package/src/lib/services/store-state-manager-service/models/index.ts +2 -0
  162. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  163. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +88 -0
  164. package/src/lib/services/utils/app.service.spec.ts +25 -0
  165. package/src/lib/services/utils/app.service.ts +21 -0
  166. package/src/lib/services/utils/encryption/README.md +79 -0
  167. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  168. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  169. package/src/lib/services/utils/encryption/index.ts +5 -0
  170. package/src/lib/services/utils/encryption/random.ts +81 -0
  171. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +93 -0
  172. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  173. package/src/lib/services/utils/headers.service.ts +18 -0
  174. package/src/lib/services/utils/index.ts +7 -0
  175. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  176. package/src/lib/services/utils/object-merger.service.ts +78 -0
  177. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  178. package/src/lib/services/utils/path-query.service.ts +69 -0
  179. package/src/lib/services/utils/random-color.utils.ts +83 -0
  180. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  181. package/src/lib/services/utils/utils.service.ts +192 -0
  182. package/src/lib/services/ws-manager-service/index.ts +4 -0
  183. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +24 -0
  184. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  185. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +24 -0
  186. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  187. package/src/lib/services/ws-manager-service/models/index.ts +5 -0
  188. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  189. package/src/lib/services/ws-manager-service/services/index.ts +3 -0
  190. package/src/lib/services/ws-manager-service/services/websocket.service.ts +392 -0
  191. package/src/public-api.ts +14 -0
  192. package/tsconfig.lib.json +32 -0
  193. package/tsconfig.lib.prod.json +10 -0
  194. package/tsconfig.spec.json +14 -0
  195. package/fesm2022/http-request-manager.mjs +0 -7633
  196. package/fesm2022/http-request-manager.mjs.map +0 -1
  197. package/types/http-request-manager.d.ts +0 -2277
@@ -0,0 +1,132 @@
1
+ import { HTTP_INTERCEPTORS } from '@angular/common/http';
2
+ import { ModuleWithProviders, NgModule } from '@angular/core';
3
+
4
+
5
+ import { WithCredentialsInterceptor, RequestHeadersInterceptor } from './interceptors';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+
8
+ import { CommonModule } from '@angular/common';
9
+
10
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
12
+ import { MatButtonModule } from '@angular/material/button';
13
+ import { MatChipsModule } from '@angular/material/chips';
14
+ import { MatDividerModule } from '@angular/material/divider';
15
+ import { MatFormFieldModule } from '@angular/material/form-field';
16
+ import { MatIconModule } from '@angular/material/icon';
17
+ import { MatInputModule } from '@angular/material/input';
18
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
19
+ import { MatSelectModule } from '@angular/material/select';
20
+ import { MatSidenavModule } from '@angular/material/sidenav';
21
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
22
+ import { MatMenuModule } from '@angular/material/menu';
23
+ import { MatToolbarModule } from '@angular/material/toolbar';
24
+ import { MatTableModule } from '@angular/material/table';
25
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
26
+ import { MatDatepickerModule } from '@angular/material/datepicker';
27
+ import { MatNativeDateModule } from '@angular/material/core';
28
+ import { ProxyDebuggerInterceptor } from './interceptors/proxy-debugger.interceptor';
29
+ import { MatTabsModule } from '@angular/material/tabs';
30
+
31
+ import { ConfigOptions } from './models';
32
+ import { CONFIG_SETTINGS_TOKEN } from './models/config-token.model';
33
+ import { HTTPManagerService, LocalStorageManagerService } from './services';
34
+
35
+ import { FileDownloaderModule } from './http-request-services-demo/request-manager-demo/file-downloader/file-download.module';
36
+ import { ToastMessageDisplayModule, ToastMessageDisplayService } from 'toast-message-display';
37
+
38
+ // Fix: Import components directly instead of from public-api to avoid circular dependency
39
+ import { HttpRequestServicesDemoComponent } from './http-request-services-demo/http-request-services-demo.component';
40
+ import { DatabaseDataDemoComponent } from './http-request-services-demo/database-data-demo/database-data-demo.component';
41
+ import { LocalStorageDemoComponent } from './http-request-services-demo/local-storage-demo/local-storage-demo.component';
42
+ import { RequestManagerDemoComponent } from './http-request-services-demo/request-manager-demo/request-manager-demo.component';
43
+ import { RequestManagerStateDemoComponent } from './http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component';
44
+
45
+ import { LocalStorageSignalsDemoComponent } from './http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component';
46
+ import { RequestManagerWsDemoComponent } from './http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component';
47
+ import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
48
+ import { StoreStateManagerDemoComponent } from './http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component';
49
+
50
+ import { WsDataControlComponent } from './http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component';
51
+ import { WsMessagingComponent } from './http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component';
52
+ import { WsNotificationsComponent } from './http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component';
53
+ import { WsAiMessagingComponent } from './http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component';
54
+ import { WsChatsComponent } from './http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component';
55
+
56
+ // import { MessengerChatModule } from 'src/app/components/messenger-chat/messenger-chat.module';
57
+ // import { StoreStateManagerModule } from "src/app/beta_components/store-state-manager/store-state-manager.module";
58
+
59
+
60
+ @NgModule({
61
+ imports: [
62
+ CommonModule,
63
+ ToastMessageDisplayModule,
64
+ FormsModule,
65
+ ReactiveFormsModule,
66
+ MatButtonModule,
67
+ MatTabsModule,
68
+ MatSelectModule,
69
+ MatChipsModule,
70
+ MatMenuModule,
71
+ MatIconModule,
72
+ MatTableModule,
73
+ MatButtonToggleModule,
74
+ MatAutocompleteModule,
75
+ MatProgressBarModule,
76
+ MatSlideToggleModule,
77
+ MatDividerModule,
78
+ MatFormFieldModule,
79
+ MatInputModule,
80
+ MatToolbarModule,
81
+ MatSlideToggleModule,
82
+ TranslateModule.forRoot(),
83
+ MatSidenavModule,
84
+ MatDatepickerModule,
85
+ MatNativeDateModule,
86
+ FileDownloaderModule,
87
+ // MessengerChatModule,
88
+ // StoreStateManagerModule
89
+ ],
90
+ declarations: [
91
+ HttpRequestServicesDemoComponent,
92
+ RequestManagerStateDemoComponent,
93
+ RequestManagerDemoComponent,
94
+ RequestSignalsManagerDemoComponent,
95
+ LocalStorageDemoComponent,
96
+ LocalStorageSignalsDemoComponent,
97
+ RequestManagerWsDemoComponent,
98
+ StoreStateManagerDemoComponent,
99
+ DatabaseDataDemoComponent,
100
+ WsDataControlComponent,
101
+ WsMessagingComponent,
102
+ WsNotificationsComponent,
103
+ WsAiMessagingComponent,
104
+ WsChatsComponent,
105
+ ],
106
+ exports: [
107
+ HttpRequestServicesDemoComponent,
108
+ ],
109
+ providers: [
110
+ { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },
111
+ { provide: HTTP_INTERCEPTORS, useClass: RequestHeadersInterceptor, multi: true },
112
+ { provide: HTTP_INTERCEPTORS, useClass: ProxyDebuggerInterceptor, multi: true },
113
+ { provide: CONFIG_SETTINGS_TOKEN, useValue: ConfigOptions.adapt() },
114
+ HTTPManagerService, LocalStorageManagerService,
115
+ ToastMessageDisplayService
116
+ ],
117
+ })
118
+ export class HttpRequestManagerModule {
119
+
120
+ static forRoot(config: ConfigOptions = ConfigOptions.adapt()): ModuleWithProviders<HttpRequestManagerModule> {
121
+ return {
122
+ ngModule: HttpRequestManagerModule,
123
+ providers: [
124
+ { provide: CONFIG_SETTINGS_TOKEN, useValue: ConfigOptions.adapt(config) },
125
+ HTTPManagerService, LocalStorageManagerService //all services that need access to config
126
+ ],
127
+ };
128
+ }
129
+
130
+ }
131
+
132
+
@@ -0,0 +1,65 @@
1
+ <div style="padding: 2rem;">
2
+
3
+ <h2>
4
+ Database Manager Service Demo
5
+ </h2>
6
+
7
+ <div style="margin-bottom: 1rem; display: flex; gap: 1rem;">
8
+ <button mat-stroked-button
9
+ color="primary"
10
+ (click)="clearAllData()"
11
+ >
12
+ Clear Data
13
+ </button>
14
+ <button mat-stroked-button
15
+ color="primary"
16
+ (click)="updateData()"
17
+ >
18
+ Update Data
19
+ </button>
20
+ <div style="flex:1"></div>
21
+ <button
22
+ mat-stroked-button
23
+ color="warn"
24
+ [disabled]="!dataToDisplay.length"
25
+ (click)="removeData()"
26
+ >
27
+ Remove Data
28
+ </button>
29
+ <button mat-stroked-button
30
+ color="primary"
31
+ (click)="addData()"
32
+ >
33
+ Add Data
34
+ </button>
35
+ </div>
36
+
37
+ <div class="table-container">
38
+ <table mat-table [dataSource]="dataSource">
39
+
40
+ <ng-container matColumnDef="id">
41
+ <th mat-header-cell *matHeaderCellDef>ID</th>
42
+ <td mat-cell *matCellDef="let element">{{element.id}}</td>
43
+ </ng-container>
44
+
45
+ <ng-container matColumnDef="last_name">
46
+ <th mat-header-cell *matHeaderCellDef>Last Name</th>
47
+ <td mat-cell *matCellDef="let element">{{element.last_name}}</td>
48
+ </ng-container>
49
+
50
+ <ng-container matColumnDef="age">
51
+ <th mat-header-cell *matHeaderCellDef>Age</th>
52
+ <td mat-cell *matCellDef="let element">{{element.age}}</td>
53
+ </ng-container>
54
+
55
+ <ng-container matColumnDef="amount">
56
+ <th mat-header-cell *matHeaderCellDef>Amount</th>
57
+ <td mat-cell *matCellDef="let element">{{element.amount | currency}}</td>
58
+ </ng-container>
59
+
60
+ <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
61
+ <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
62
+ </table>
63
+ </div>
64
+
65
+ </div>
@@ -0,0 +1,224 @@
1
+ import { Component, OnInit, inject, OnDestroy } from '@angular/core';
2
+ import { Subject, Observable, ReplaySubject } from 'rxjs';
3
+ import { tap } from 'rxjs/operators';
4
+ import { DataSource } from '@angular/cdk/collections';
5
+
6
+ import { TableSchemaDef } from '../../services/database-manager-service/models/table-schema';
7
+ import { DatabaseManagerService } from '../../services/database-manager-service';
8
+
9
+ export interface TableRecord {
10
+ id: number;
11
+ last_name: string;
12
+ age: number;
13
+ amount: number;
14
+ }
15
+
16
+ @Component({
17
+ selector: 'app-database-data-demo',
18
+ templateUrl: './database-data-demo.component.html',
19
+ styleUrls: ['./database-data-demo.component.scss'],
20
+ standalone: false
21
+ })
22
+ export class DatabaseDataDemoComponent implements OnInit, OnDestroy {
23
+
24
+ db = inject(DatabaseManagerService)
25
+ private destroy$ = new Subject<void>();
26
+
27
+ dataToDisplay: TableRecord[] = [];
28
+ dataSource = new DatabaseDataSource(this.dataToDisplay);
29
+ displayedColumns: string[] = ['id', 'last_name', 'age', 'amount'];
30
+
31
+ names = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis'];
32
+
33
+ constructor() { }
34
+
35
+ ngOnDestroy() {
36
+ this.destroy$.next();
37
+ this.destroy$.complete();
38
+ }
39
+
40
+ addData() {
41
+
42
+ const newRecord: TableRecord = {
43
+ id: Math.max(...this.dataToDisplay.map(r => r.id), 0) + 1,
44
+ last_name: this.names[Math.floor(Math.random() * this.names.length)],
45
+ age: Math.floor(Math.random() * 80) + 18,
46
+ amount: Math.floor(Math.random() * 1000)
47
+ };
48
+
49
+ this.dataToDisplay = [...this.dataToDisplay, newRecord];
50
+ this.db.createTableRecord('sample_table', newRecord).subscribe(
51
+ () => this.refreshData()
52
+ );
53
+
54
+ }
55
+
56
+ removeData() {
57
+ if (this.dataToDisplay.length > 0) {
58
+ const removedRecord = this.dataToDisplay[this.dataToDisplay.length - 1];
59
+ this.dataToDisplay = this.dataToDisplay.slice(0, -1);
60
+ this.db.deleteTableRecord('sample_table', removedRecord.id).subscribe(
61
+ () => this.refreshData()
62
+ );
63
+ }
64
+ }
65
+
66
+ updateData() {
67
+
68
+ if (this.dataToDisplay.length === 0) return;
69
+
70
+ const randomIndex = Math.floor(Math.random() * this.dataToDisplay.length);
71
+ const recordToUpdate = this.dataToDisplay[randomIndex];
72
+
73
+ const updatedRecord: TableRecord = {
74
+ ...recordToUpdate,
75
+ last_name: this.names[Math.floor(Math.random() * this.names.length)],
76
+ age: Math.floor(Math.random() * 80) + 18,
77
+ amount: Math.floor(Math.random() * 1000)
78
+ };
79
+
80
+ this.dataToDisplay = this.dataToDisplay.map((r, index) =>
81
+ index === randomIndex ? updatedRecord : r
82
+ );
83
+
84
+ this.db.updateTableRecord('sample_table', updatedRecord).subscribe(
85
+ () => this.refreshData()
86
+ );
87
+
88
+ }
89
+
90
+ clearAllData() {
91
+ if (this.dataToDisplay.length === 0) return;
92
+
93
+ const idsToDelete = this.dataToDisplay.map(r => r.id);
94
+ this.dataToDisplay = [];
95
+
96
+ this.db.deleteTableRecords('sample_table', idsToDelete).subscribe(
97
+ () => this.refreshData()
98
+ );
99
+ }
100
+
101
+ private refreshData() {
102
+ this.db.getTableRecords('sample_table').subscribe(
103
+ (records: any) => {
104
+ this.dataToDisplay = records || [];
105
+ this.dataSource.setData(this.dataToDisplay);
106
+ }
107
+ );
108
+ }
109
+
110
+ ngOnInit() {
111
+
112
+ const tableDef = TableSchemaDef.adapt({
113
+ table: 'sample_table',
114
+ schema: '++id, last_name, age, amount'
115
+ });
116
+
117
+ this.db.createDatabaseTable(tableDef).subscribe(() => {
118
+ console.log('Database Table Initialized');
119
+
120
+ // hasTable
121
+ this.db.hasDatabaseTable('sample_table')
122
+ .subscribe(data => console.log('hasDatabaseTable:', data))
123
+
124
+ // Tables
125
+ this.db.getDatabaseTables()
126
+ .subscribe(data => console.log('getDatabaseTables:', data))
127
+
128
+ // getTable
129
+ this.db.getDatabaseTable('sample_table')
130
+ .subscribe(data => console.log('getDatabaseTable:', data))
131
+
132
+ // Table Schema
133
+ this.db.getDatabaseTableSchema('sample_table')
134
+ .subscribe(data => console.log('getDatabaseTableSchema:', data))
135
+
136
+ // Insert Table Records
137
+ const records = [
138
+ { id: 1, age: 12, last_name: 'Bonifacio', amount: 80 },
139
+ { id: 2, age: 15, last_name: 'Johns', amount: 700 },
140
+ { id: 3, age: 22, last_name: 'Kims', amount: 234 },
141
+ { id: 4, age: 45, last_name: 'Harrys', amount: 1200 },
142
+ ]
143
+
144
+ this.db.createTableRecords('sample_table', records).subscribe(() => {
145
+ this.refreshData();
146
+ });
147
+ });
148
+ }
149
+
150
+ createTable(tableDef: TableSchemaDef) {
151
+ return this.db.createDatabaseTable(tableDef)
152
+ }
153
+
154
+ // CRUD
155
+ findTableRecords(table: string, column: string, value: any) {
156
+ return this.db.findTableRecords(table, column, value)
157
+ .pipe(
158
+ tap((data: any) => console.log('findTableRecords:', data))
159
+ )
160
+ }
161
+
162
+ findTableRecord(table: string, column: string, value: any) {
163
+ return this.db.findTableRecord(table, column, value)
164
+ .pipe(
165
+ tap((data: any) => console.log('findTableRecord:', data))
166
+ )
167
+ }
168
+
169
+ getTableRecords(table: string) {
170
+ return this.db.getTableRecords(table)
171
+ .pipe(
172
+ tap((data: any) => console.log('getTableRecords:', data))
173
+ )
174
+ }
175
+
176
+ getTableRecord(table: string, id: number) {
177
+ return this.db.getTableRecord(table, id)
178
+ .pipe(
179
+ tap((data: any) => console.log('getTableRecord:', data))
180
+ )
181
+ }
182
+
183
+ createTableRecord<T>(table: string, record: T) {
184
+ return this.db.createTableRecord(table, record)
185
+ .pipe(
186
+ tap((data: any) => console.log('createTableRecord:', data))
187
+ )
188
+ }
189
+
190
+ updateTableRecord<T>(table: string, record: T) {
191
+ return this.db.updateTableRecord(table, record)
192
+ .pipe(
193
+ tap((data: any) => console.log('updateTableRecord:', data))
194
+ )
195
+ }
196
+
197
+ deleteTableRecord<T>(table: string, id: number) {
198
+ return this.db.deleteTableRecord(table, id)
199
+ .pipe(
200
+ tap((data: any) => console.log('deleteTableRecord:', data))
201
+ )
202
+ }
203
+
204
+ }
205
+
206
+ class DatabaseDataSource extends DataSource<TableRecord> {
207
+ private _dataStream = new ReplaySubject<TableRecord[]>();
208
+
209
+ constructor(initialData: TableRecord[]) {
210
+ super();
211
+ this.setData(initialData);
212
+ }
213
+
214
+ connect(): Observable<TableRecord[]> {
215
+ return this._dataStream;
216
+ }
217
+
218
+ disconnect() {}
219
+
220
+ setData(data: TableRecord[]) {
221
+ this._dataStream.next(data);
222
+ }
223
+
224
+ }
@@ -0,0 +1,114 @@
1
+ <mat-toolbar style="display:flex">
2
+ <div>Http Request Manager Services</div>
3
+ <div style="flex:1"></div>
4
+ <button mat-stroked-button [matMenuTriggerFor]="menu">Services</button>
5
+ <mat-menu #menu="matMenu">
6
+ @for (type of requestTypes; track type; let i = $index) {
7
+ @if (type?.divider) {
8
+ <div
9
+ style="margin-top: .5rem; margin-bottom: .5rem;"
10
+ >
11
+ <mat-divider></mat-divider>
12
+ </div>
13
+ }
14
+ <button
15
+ mat-menu-item
16
+ (click)="onSelected(i)"
17
+ [disabled]="type.disabled"
18
+ >
19
+ {{ type.name }}
20
+ </button>
21
+ }
22
+
23
+ </mat-menu>
24
+ </mat-toolbar>
25
+
26
+ <span>
27
+ @switch (selectedService) {
28
+ @case ('http_service') {
29
+ <p>
30
+ <ng-container *ngTemplateOutlet="HTTP_OPTIONS"></ng-container>
31
+ <app-request-manager-demo
32
+ [server]="server"
33
+ [adapter]="adapter"
34
+ [mapper]="mapper"
35
+ ></app-request-manager-demo>
36
+ </p>
37
+ }
38
+ <!-- <p *ngSwitchCase="'http_signals_service'">
39
+ <ng-container *ngTemplateOutlet="HTTP_OPTIONS"></ng-container>
40
+ <app-request-signals-manager-demo></app-request-signals-manager-demo>
41
+ </p> -->
42
+ @case ('http_state_service') {
43
+ <p>
44
+ <ng-container *ngTemplateOutlet="HTTP_OPTIONS"></ng-container>
45
+ <app-request-manager-state-demo
46
+ [server]="server"
47
+ [adapter]="adapter"
48
+ [mapper]="mapper"
49
+ ></app-request-manager-state-demo>
50
+ </p>
51
+ }
52
+ @case ('http_state_service_ws') {
53
+ <p>
54
+ <ng-container *ngTemplateOutlet="HTTP_OPTIONS"></ng-container>
55
+ <app-request-manager-ws-demo
56
+ [server]="server"
57
+ [wsServer]="wsServer"
58
+ [jwtToken]="jwtToken"
59
+ [user]="user"
60
+ [wsChannel]="wsChannel"
61
+ [path]="path"
62
+ ></app-request-manager-ws-demo>
63
+ </p>
64
+ }
65
+ @case ('database_service') {
66
+ <p>
67
+ <app-database-data-demo></app-database-data-demo>
68
+ </p>
69
+ }
70
+ @case ('local_storage_service') {
71
+ <p>
72
+ <ng-container *ngTemplateOutlet="LOCAL_OPTIONS"></ng-container>
73
+ <app-local-storage-demo></app-local-storage-demo>
74
+ </p>
75
+ }
76
+ <!-- <p *ngSwitchCase="'local_storage_signals_service'">
77
+ <ng-container *ngTemplateOutlet="LOCAL_OPTIONS"></ng-container>
78
+ <app-local-storage-signals-demo></app-local-storage-signals-demo>
79
+ </p> -->
80
+ @case ('store_state_manager') {
81
+ <p>
82
+ <ng-container *ngTemplateOutlet="LOCAL_OPTIONS"></ng-container>
83
+ <app-store-state-manager-demo></app-store-state-manager-demo>
84
+ </p>
85
+ }
86
+ @default {
87
+ <p>
88
+ Other
89
+ </p>
90
+ }
91
+ }
92
+ </span>
93
+
94
+ <ng-template #HTTP_OPTIONS>
95
+ @if (injectionOptions?.httpRequestOptions) {
96
+ <div class="box">
97
+ <h3 style="font-weight: bold;">Injection Token Detected - HTTP Options</h3>
98
+ {{ injectionOptions?.httpRequestOptions| json }}
99
+ </div>
100
+ }
101
+ </ng-template>
102
+
103
+ <ng-template #LOCAL_OPTIONS>
104
+ @if (injectionOptions?.LocalStorageOptions) {
105
+ <ng-container class="box">
106
+ <div class="box">
107
+ <h3 style="font-weight: bold;">Injection Token Detected - LocalStorage Options</h3>
108
+ {{ injectionOptions?.LocalStorageOptions| json }}
109
+ </div>
110
+ </ng-container>
111
+ }
112
+ </ng-template>
113
+
114
+
@@ -0,0 +1,6 @@
1
+ .box {
2
+ padding: 1rem;
3
+ background-color: whitesmoke;
4
+ border: thin gray solid;
5
+ margin-top: 1rem;
6
+ }
@@ -0,0 +1,52 @@
1
+ import { Component, Inject, Input, OnInit } from '@angular/core';
2
+
3
+ import { CONFIG_SETTINGS_TOKEN } from '../models/config-token.model';
4
+ import { ConfigOptions } from '../models/config-options.model';
5
+ import { UserData } from './request-manager-ws-demo/models/user-data.model';
6
+
7
+ @Component({
8
+ selector: 'app-http-request-services-demo',
9
+ templateUrl: './http-request-services-demo.component.html',
10
+ styleUrls: ['./http-request-services-demo.component.scss'],
11
+ standalone: false
12
+ })
13
+ export class HttpRequestServicesDemoComponent implements OnInit {
14
+
15
+ @Input() wsServer = 'ws:'
16
+ @Input() jwtToken = ''
17
+ @Input() server = 'http:'
18
+ @Input() user?: UserData
19
+ @Input() path: string[] = ['ai','tests'];
20
+ @Input() wsChannel: string = '';
21
+
22
+ @Input() adapter?: Function
23
+ @Input() mapper?: Function
24
+
25
+ requestTypes = [
26
+ { name: "Http Service", value: 'http_service' },
27
+ // { name: "Http Signals Service", value: 'http_signals_service', new: true },
28
+ { name: "Http State Service", value: 'http_state_service' },
29
+ { name: "Http State Service - Websockets", value: 'http_state_service_ws', new: false },
30
+ { name: "Database Service", value: 'database_service', divider: true, disabled: false },
31
+ { name: "Local Storage Service", value: 'local_storage_service' },
32
+ // { name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
33
+ { name: "Store State Manager Service", value: 'store_state_manager', new: true },
34
+ ]
35
+
36
+ selectedService = this.requestTypes[5].value //menu selection default
37
+
38
+ injectionOptions?: ConfigOptions
39
+
40
+ constructor(
41
+ @Inject(CONFIG_SETTINGS_TOKEN) private configOptions?: ConfigOptions
42
+ ) { }
43
+
44
+ ngOnInit() {
45
+ if(this.configOptions) this.injectionOptions = this.configOptions
46
+ }
47
+
48
+ onSelected(type: number) {
49
+ this.selectedService = this.requestTypes[type].value
50
+ }
51
+
52
+ }