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.
- package/README.md +2 -0
- package/TEST_COVERAGE_SUMMARY.md +458 -0
- package/ng-package.json +8 -0
- package/package.json +5 -13
- package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
- package/src/docs/ARCHITECTURE.md +633 -0
- package/src/docs/BATCH_REQUEST_README.md +467 -0
- package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
- package/src/docs/DATABASE_README.md +1195 -0
- package/src/docs/ENCRYPTION_README.md +403 -0
- package/src/docs/HTTP_MANAGER_README.md +628 -0
- package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
- package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
- package/src/docs/INTERCEPTOR_README.md +549 -0
- package/src/docs/LOCAL_STORAGE_README.md +1056 -0
- package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
- package/src/docs/LOGGER_README.md +310 -0
- package/src/docs/MESSAGE_TRACKER_README.md +518 -0
- package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
- package/src/docs/MODELS_README.md +1264 -0
- package/src/docs/SIGNAL_SERVICES_README.md +238 -0
- package/src/docs/SQL_DIXIE_README.md +574 -0
- package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
- package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
- package/src/docs/UPLOAD_REQUEST_README.md +324 -0
- package/src/docs/UTILS_README.md +1604 -0
- package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
- package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
- package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
- package/src/docs/WS_MANAGER_README.md +613 -0
- package/src/lib/http-request-manager.module.ts +147 -0
- package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
- package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
- package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
- package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
- package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
- package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
- package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
- package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
- package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
- package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
- package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
- package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
- package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
- package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
- package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
- package/src/lib/index.ts +3 -0
- package/src/lib/interceptors/credentials.interceptor.ts +16 -0
- package/src/lib/interceptors/index.ts +6 -0
- package/src/lib/interceptors/models/error-settings.model.ts +22 -0
- package/src/lib/interceptors/models/index.ts +2 -0
- package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
- package/src/lib/interceptors/request-error.interceptor.ts +65 -0
- package/src/lib/interceptors/request-header.interceptor.ts +56 -0
- package/src/lib/message-display/README.md +509 -0
- package/src/lib/message-display/index.ts +4 -0
- package/src/lib/message-display/models/action.model.ts +27 -0
- package/src/lib/message-display/models/communication-message.model.ts +77 -0
- package/src/lib/message-display/models/display-config.model.ts +35 -0
- package/src/lib/message-display/models/display-rule.interface.ts +28 -0
- package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
- package/src/lib/message-display/models/index.ts +6 -0
- package/src/lib/message-display/models/slide.model.ts +24 -0
- package/src/lib/message-display/rules/default-display-rules.ts +35 -0
- package/src/lib/message-display/services/message-display-router.service.ts +63 -0
- package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
- package/src/lib/models/batch-options.model.ts +33 -0
- package/src/lib/models/batch-progress.model.ts +19 -0
- package/src/lib/models/batch-request-state.model.ts +40 -0
- package/src/lib/models/batch-result.model.ts +30 -0
- package/src/lib/models/config-http-options.model.ts +45 -0
- package/src/lib/models/config-local-storage-options.model.ts +27 -0
- package/src/lib/models/config-options.model.ts +27 -0
- package/src/lib/models/config-token.model.ts +9 -0
- package/src/lib/models/data-type.enum.ts +5 -0
- package/src/lib/models/database-storage.model.ts +24 -0
- package/src/lib/models/index.ts +16 -0
- package/src/lib/models/retry-options.model.ts +22 -0
- package/src/lib/models/upload-validation-error.model.ts +46 -0
- package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
- package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
- package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
- package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
- package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
- package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
- package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
- package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
- package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
- package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
- package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
- package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
- package/src/lib/services/database-manager-service/index.ts +4 -0
- package/src/lib/services/database-manager-service/models/index.ts +2 -0
- package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
- package/src/lib/services/index.ts +20 -0
- package/src/lib/services/local-storage-manager-service/index.ts +4 -0
- package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
- package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
- package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
- package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
- package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
- package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
- package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
- package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
- package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
- package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
- package/src/lib/services/request-manager-services/README.md +282 -0
- package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
- package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
- package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
- package/src/lib/services/request-manager-services/index.ts +8 -0
- package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
- package/src/lib/services/request-manager-services/request.service.ts +435 -0
- package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
- package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
- package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
- package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
- package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
- package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
- package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
- package/src/lib/services/request-manager-state-service/index.ts +3 -0
- package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
- package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
- package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
- package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
- package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
- package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
- package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
- package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
- package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
- package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
- package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
- package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
- package/src/lib/services/store-state-manager-service/index.ts +4 -0
- package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
- package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
- package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
- package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
- package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
- package/src/lib/services/utils/app.service.spec.ts +25 -0
- package/src/lib/services/utils/app.service.ts +21 -0
- package/src/lib/services/utils/encryption/README.md +79 -0
- package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
- package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
- package/src/lib/services/utils/encryption/index.ts +5 -0
- package/src/lib/services/utils/encryption/random.ts +81 -0
- package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
- package/src/lib/services/utils/headers.service.spec.ts +80 -0
- package/src/lib/services/utils/headers.service.ts +18 -0
- package/src/lib/services/utils/index.ts +9 -0
- package/src/lib/services/utils/logger.service.ts +90 -0
- package/src/lib/services/utils/models/index.ts +4 -0
- package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
- package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
- package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
- package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
- package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
- package/src/lib/services/utils/object-merger.service.ts +78 -0
- package/src/lib/services/utils/path-query.service.spec.ts +117 -0
- package/src/lib/services/utils/path-query.service.ts +69 -0
- package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
- package/src/lib/services/utils/random-color.utils.ts +83 -0
- package/src/lib/services/utils/utils.service.spec.ts +165 -0
- package/src/lib/services/utils/utils.service.ts +192 -0
- package/src/lib/services/ws-manager-service/index.ts +13 -0
- package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
- package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
- package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
- package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
- package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
- package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
- package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
- package/src/lib/services/ws-manager-service/models/index.ts +10 -0
- package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
- package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
- package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
- package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
- package/src/lib/services/ws-manager-service/services/index.ts +4 -0
- package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
- package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
- package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
- package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
- package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
- package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
- package/src/public-api.ts +19 -0
- package/tsconfig.lib.json +34 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/fesm2022/http-request-manager.mjs +0 -13297
- package/fesm2022/http-request-manager.mjs.map +0 -1
- package/http-request-manager-18.15.32.tgz +0 -0
- package/types/http-request-manager.d.ts +0 -3875
|
@@ -0,0 +1,1037 @@
|
|
|
1
|
+
# HTTP Request Manager - Complete API Reference
|
|
2
|
+
|
|
3
|
+
A comprehensive guide to all services, methods, and features available in the HTTP Request Manager library.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
1. [HTTP Services](#http-services)
|
|
8
|
+
2. [State Management Services](#state-management-services)
|
|
9
|
+
3. [WebSocket Services](#websocket-services)
|
|
10
|
+
4. [Storage Services](#storage-services)
|
|
11
|
+
5. [Database Services](#database-services)
|
|
12
|
+
6. [Utility Services](#utility-services)
|
|
13
|
+
7. [Interceptors](#interceptors)
|
|
14
|
+
8. [Models & Configuration](#models--configuration)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## HTTP Services
|
|
19
|
+
|
|
20
|
+
### HTTPManagerService
|
|
21
|
+
|
|
22
|
+
**Location:** `services/request-manager-services/http-manager.service.ts`
|
|
23
|
+
|
|
24
|
+
**Description:** Core HTTP client service with Observable-based state management.
|
|
25
|
+
|
|
26
|
+
**Features:**
|
|
27
|
+
- HTTP CRUD operations (GET, POST, PUT, DELETE)
|
|
28
|
+
- Loading states (`isPending$`, `error$`, `data$`, `countdown$`)
|
|
29
|
+
- Configurable retry logic
|
|
30
|
+
- Polling with countdown timers
|
|
31
|
+
- Data adapters and mappers
|
|
32
|
+
- Streaming response support (NDJSON, SSE)
|
|
33
|
+
- File download with progress tracking
|
|
34
|
+
|
|
35
|
+
**Observable Properties:**
|
|
36
|
+
```typescript
|
|
37
|
+
data$: Observable<any> // Response data
|
|
38
|
+
isPending$: Observable<boolean> // Loading state
|
|
39
|
+
error$: Observable<any> // Error state
|
|
40
|
+
countdown$: Observable<number> // Polling countdown
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Methods:**
|
|
44
|
+
|
|
45
|
+
#### HTTP Request Methods
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
getRequest<T>(options?: ApiRequest, params?: any[]): Observable<T>
|
|
49
|
+
postRequest<T>(data: T, options: ApiRequest, params?: any[]): Observable<T>
|
|
50
|
+
putRequest<T>(data: T, options: ApiRequest, params?: any[]): Observable<T>
|
|
51
|
+
deleteRequest<T>(options: ApiRequest, params?: any[]): Observable<T>
|
|
52
|
+
downloadRequest<T>(options: ApiRequest, params?: any[], saveAs?: string): Observable<T>
|
|
53
|
+
uploadRequest<T>(files: File | File[], options: ApiRequest, params?: any[]): Observable<T>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### WebSocket Methods (delegated to WebSocketManagerService)
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
connect(options: WSOptions, jwtToken: string): void
|
|
60
|
+
disconnect(): void
|
|
61
|
+
subscribeToChannel(channel: string, userData?: any): void
|
|
62
|
+
subscribeToChannels(channels: string[], userData?: any): void
|
|
63
|
+
unsubscribeFromChannel(channel: string): void
|
|
64
|
+
getSubscribedChannels(): Set<string>
|
|
65
|
+
sendBroadcast(content: any): void
|
|
66
|
+
sendMessageInChannel(channel: string, content: any): void
|
|
67
|
+
sendChannelMessage(channel: string, content: any): void
|
|
68
|
+
sendChannelMessageToChannels(channels: string[], content: any): void
|
|
69
|
+
sendMessageToUser(user: string, content: any): void
|
|
70
|
+
getAllChannels(): void
|
|
71
|
+
createChannel(channel: string): void
|
|
72
|
+
deleteChannel(channel: string): void
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Usage Example:**
|
|
76
|
+
```typescript
|
|
77
|
+
import { HTTPManagerService, ApiRequest } from 'http-request-manager';
|
|
78
|
+
|
|
79
|
+
@Component({})
|
|
80
|
+
export class UsersComponent {
|
|
81
|
+
httpManager = inject(HTTPManagerService);
|
|
82
|
+
data$ = this.httpManager.data$;
|
|
83
|
+
isLoading$ = this.httpManager.isPending$;
|
|
84
|
+
|
|
85
|
+
ngOnInit() {
|
|
86
|
+
this.httpManager.getRequest(
|
|
87
|
+
ApiRequest.adapt({
|
|
88
|
+
path: ['users'],
|
|
89
|
+
retry: { times: 3, delay: 1 }
|
|
90
|
+
})
|
|
91
|
+
).subscribe();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### HTTPManagerSignalsService
|
|
99
|
+
|
|
100
|
+
**Location:** `services/request-manager-services/http-manager-signals.service.ts`
|
|
101
|
+
|
|
102
|
+
**Description:** Signal-based HTTP service with the same features as HTTPManagerService.
|
|
103
|
+
|
|
104
|
+
**Signal Properties:**
|
|
105
|
+
```typescript
|
|
106
|
+
data: Signal<any> // Response data
|
|
107
|
+
isPending: Signal<boolean> // Loading state
|
|
108
|
+
error: Signal<any> // Error state
|
|
109
|
+
countdown: Signal<number> // Polling countdown
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Methods:** Same as HTTPManagerService
|
|
113
|
+
|
|
114
|
+
**Usage Example:**
|
|
115
|
+
```typescript
|
|
116
|
+
import { HTTPManagerSignalsService, ApiRequest } from 'http-request-manager';
|
|
117
|
+
|
|
118
|
+
@Component({
|
|
119
|
+
template: `
|
|
120
|
+
<div *ngIf="isLoading()">Loading...</div>
|
|
121
|
+
<div *ngFor="let user of data()">{{ user.name }}</div>
|
|
122
|
+
`
|
|
123
|
+
})
|
|
124
|
+
export class UsersComponent {
|
|
125
|
+
httpManager = inject(HTTPManagerSignalsService);
|
|
126
|
+
data = this.httpManager.data;
|
|
127
|
+
isLoading = this.httpManager.isPending;
|
|
128
|
+
|
|
129
|
+
ngOnInit() {
|
|
130
|
+
this.httpManager.getRequest(
|
|
131
|
+
ApiRequest.adapt({ path: ['users'] })
|
|
132
|
+
).subscribe();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## State Management Services
|
|
140
|
+
|
|
141
|
+
### HTTPManagerStateService
|
|
142
|
+
|
|
143
|
+
**Location:** `services/request-manager-state-service/http-manager-state.store.ts`
|
|
144
|
+
|
|
145
|
+
**Description:** Comprehensive state management service combining HTTP requests, WebSocket real-time updates, and IndexedDB persistence. Extends NgRx ComponentStore.
|
|
146
|
+
|
|
147
|
+
**Extends:** `ComponentStore<APIStateManagerData<T>>`
|
|
148
|
+
|
|
149
|
+
**Features:**
|
|
150
|
+
- All HTTPManagerService features
|
|
151
|
+
- ComponentStore-based state management
|
|
152
|
+
- Automatic CRUD state updates
|
|
153
|
+
- WebSocket integration with channel prefixes
|
|
154
|
+
- IndexedDB caching with expiration
|
|
155
|
+
- Pagination support
|
|
156
|
+
- Real-time synchronization
|
|
157
|
+
- Database flush capability
|
|
158
|
+
|
|
159
|
+
**Observable Properties:**
|
|
160
|
+
```typescript
|
|
161
|
+
// From ComponentStore
|
|
162
|
+
data$: Observable<T[]> // Array data
|
|
163
|
+
page$: Observable<number> // Current page
|
|
164
|
+
totalPages$: Observable<number> // Total pages
|
|
165
|
+
percentage$: Observable<number> // Download percentage
|
|
166
|
+
|
|
167
|
+
// WebSocket
|
|
168
|
+
messages$: Observable<any> // All WS messages
|
|
169
|
+
userListByChannel$: Observable<Map<string, any[]>>
|
|
170
|
+
userList$: Observable<any[]> // Unique users
|
|
171
|
+
user$: Observable<WSUser|null> // Current user
|
|
172
|
+
channels$: Observable<string[]|null> // Subscribed channels
|
|
173
|
+
|
|
174
|
+
// Notifications
|
|
175
|
+
notificationChannels$: Observable<string[]> // In-memory channels
|
|
176
|
+
todaysNotificationChannels$: Observable<string[]> // DB channels
|
|
177
|
+
notificationMessages$: Observable<any[]> // Notification list
|
|
178
|
+
latestNotification$: Observable<any> // Latest notification
|
|
179
|
+
|
|
180
|
+
// Communication
|
|
181
|
+
communicationMessages$: Observable<any[]> // Channel messages
|
|
182
|
+
latestCommunicationMessages$: Observable<any|null>
|
|
183
|
+
userAction$: Observable<any|null> // WS-triggered actions
|
|
184
|
+
|
|
185
|
+
// Connection
|
|
186
|
+
connectionStatus$: Observable<boolean> // WS connection
|
|
187
|
+
wsRetryAttempts$: Observable<number> // Retry count
|
|
188
|
+
wsNextRetry$: Observable<number> // Next retry countdown
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Methods:**
|
|
192
|
+
|
|
193
|
+
#### State Management
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
initializeState(data: any): void
|
|
197
|
+
clearRecords(): void
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
#### CRUD Operations
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
fetchRecords(options?: RequestOptions): Effect
|
|
204
|
+
fetchRecord(options: RequestOptions, method: string): Effect
|
|
205
|
+
createRecord(data: any|null, options?: RequestOptions): Effect
|
|
206
|
+
updateRecord(data: any|null, options?: RequestOptions): Effect
|
|
207
|
+
deleteRecord(options?: RequestOptions): Effect
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**RequestOptions for fetchRecords/fetchStream:**
|
|
211
|
+
|
|
212
|
+
| Property | Type | Default | Description |
|
|
213
|
+
|----------|------|---------|-------------|
|
|
214
|
+
| `path` | `any[]` | `[]` | URL path segments |
|
|
215
|
+
| `headers` | `any` | `{}` | Custom HTTP headers |
|
|
216
|
+
| `forceRefresh` | `boolean` | `undefined` | Bypass query tracking and always make the API request |
|
|
217
|
+
| `ignoreQueryParams` | `string[]` | `[]` | Query parameter keys to exclude from request-change tracking |
|
|
218
|
+
| `queryParamsExpiresIn` | `string \| number` | `undefined` | Expiry duration for tracked query values (e.g., `'10s'`, `'5mn'`, `'1h'`) |
|
|
219
|
+
| `watchParams` | `string[]` | `undefined` | Specific query keys to watch for change detection (variation mode) |
|
|
220
|
+
| `watchExpiresAt` | `number` | `undefined` | Epoch timestamp when tracked values expire |
|
|
221
|
+
|
|
222
|
+
**Scope and behavior:**
|
|
223
|
+
- Database enabled (`DatabaseStorage` configured): tracker is active and can prevent repeated identical API calls until expiry resets tracked values.
|
|
224
|
+
- Database disabled: tracker is not enabled; requests go straight to API.
|
|
225
|
+
- `forceRefresh: true` bypasses tracking and always makes the API request.
|
|
226
|
+
|
|
227
|
+
#### Streaming
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
createStream(data: any|null, options?: RequestOptions): Effect
|
|
231
|
+
fetchStream(options?: RequestOptions): Effect
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### Database Operations
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
clearDatabase(): void
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Clear Database Example:**
|
|
241
|
+
```typescript
|
|
242
|
+
// Simple call - subscription handled internally
|
|
243
|
+
myStateService.clearDatabase();
|
|
244
|
+
|
|
245
|
+
// This will:
|
|
246
|
+
// 1. Clear all records from IndexedDB table
|
|
247
|
+
// 2. Clear in-memory state (set to empty array/object)
|
|
248
|
+
// 3. Log success/error to console
|
|
249
|
+
// 4. NOT re-fetch from API
|
|
250
|
+
// 5. NOT clear localStorage metadata
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
#### WebSocket Communication
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
wsCommunication(method: string, path?: string|number[]): void
|
|
257
|
+
wsMessaging(message: ChannelMessage, channels?: string[]): void
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### Channel Management
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
subscribeToChannel(channel: string): void
|
|
264
|
+
subscribeToChannels(channels: string[]): void
|
|
265
|
+
unsubscribeFromChannel(channel: string): void
|
|
266
|
+
getSubscribedChannels(): Set<string>
|
|
267
|
+
createChannel(channel: string): void
|
|
268
|
+
deleteChannel(channel: string): void
|
|
269
|
+
getAllChannels(): void
|
|
270
|
+
getUsersInChannel(channel: string): void
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
#### Message Channels (PUB- prefix)
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
subscribeToMessageChannel(channel: string): void
|
|
277
|
+
unsubscribeFromMessageChannel(channel: string): void
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### Notification Channels (MES- prefix)
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
createNotificationChannel(channel: string): void
|
|
284
|
+
getNotificationChannels(): void
|
|
285
|
+
getTodaysNotificationChannels(): void
|
|
286
|
+
subscribeToNotificationChannel(channel: string, options?: { startEpoch?: number; endEpoch?: number }, user?: any): void
|
|
287
|
+
unsubscribeFromNotificationChannel(channel: string): void
|
|
288
|
+
sendNotification(channel: string, content: any): void
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Usage Example:**
|
|
292
|
+
```typescript
|
|
293
|
+
import { HTTPManagerStateService, ApiRequest, DataType, DatabaseStorage } from 'http-request-manager';
|
|
294
|
+
|
|
295
|
+
@Injectable()
|
|
296
|
+
export class UsersStateService extends HTTPManagerStateService<User> {
|
|
297
|
+
constructor() {
|
|
298
|
+
super(
|
|
299
|
+
ApiRequest.adapt({
|
|
300
|
+
server: 'https://api.example.com',
|
|
301
|
+
path: ['users'],
|
|
302
|
+
adapter: User.adapt
|
|
303
|
+
}),
|
|
304
|
+
DataType.ARRAY,
|
|
305
|
+
DatabaseStorage.adapt({
|
|
306
|
+
table: 'users',
|
|
307
|
+
expiresIn: '1h'
|
|
308
|
+
})
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Component
|
|
314
|
+
@Component({})
|
|
315
|
+
export class UsersComponent {
|
|
316
|
+
usersStore = inject(UsersStateService);
|
|
317
|
+
data$ = this.usersStore.data$;
|
|
318
|
+
|
|
319
|
+
ngOnInit() {
|
|
320
|
+
this.usersStore.fetchRecords();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
onClearCache() {
|
|
324
|
+
this.usersStore.clearDatabase();
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
### StoreStateManagerService
|
|
332
|
+
|
|
333
|
+
**Location:** `services/store-state-manager-service/store-state-manager.service.ts`
|
|
334
|
+
|
|
335
|
+
**Description:** LocalStorage persistence with ComponentStore integration.
|
|
336
|
+
|
|
337
|
+
**Extends:** `ComponentStore<T>`
|
|
338
|
+
|
|
339
|
+
**Features:**
|
|
340
|
+
- Automatic state synchronization with LocalStorage
|
|
341
|
+
- Configurable model-based state
|
|
342
|
+
- Reactive updates via localStorage changes
|
|
343
|
+
|
|
344
|
+
**Methods:**
|
|
345
|
+
```typescript
|
|
346
|
+
init(options?: StateStorageOptions): void
|
|
347
|
+
restoreState(): Subscription
|
|
348
|
+
updateState(state: any): void
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Usage Example:**
|
|
352
|
+
```typescript
|
|
353
|
+
import { StoreStateManagerService, StateStorageOptions } from 'http-request-manager';
|
|
354
|
+
|
|
355
|
+
@Injectable()
|
|
356
|
+
export class AppStore extends StoreStateManagerService<AppState> {
|
|
357
|
+
constructor() {
|
|
358
|
+
super(StateStorageOptions.adapt({
|
|
359
|
+
store: 'app-state',
|
|
360
|
+
model: () => ({
|
|
361
|
+
theme: 'light',
|
|
362
|
+
language: 'en',
|
|
363
|
+
notifications: true
|
|
364
|
+
}),
|
|
365
|
+
options: SettingOptions.adapt({
|
|
366
|
+
storage: StorageType.GLOBAL,
|
|
367
|
+
encrypted: false,
|
|
368
|
+
expiresIn: '30d'
|
|
369
|
+
})
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## WebSocket Services
|
|
378
|
+
|
|
379
|
+
### WebSocketManagerService
|
|
380
|
+
|
|
381
|
+
**Location:** `services/ws-manager-service/websocket-service/websocket-manager.service.ts`
|
|
382
|
+
|
|
383
|
+
**Description:** Singleton WebSocket connection manager ensuring only ONE connection across ALL instances.
|
|
384
|
+
|
|
385
|
+
**Features:**
|
|
386
|
+
- Single static connection (shared across all instances)
|
|
387
|
+
- Connection lifecycle management
|
|
388
|
+
- Channel subscription tracking
|
|
389
|
+
- Session ID management (UUID per browser session)
|
|
390
|
+
- JWT authentication support
|
|
391
|
+
- Automatic reconnection handling
|
|
392
|
+
- Message replay support (lastSeenId)
|
|
393
|
+
|
|
394
|
+
**Static Properties:**
|
|
395
|
+
```typescript
|
|
396
|
+
private static socket: WebSocket | null
|
|
397
|
+
private static isConnecting: boolean
|
|
398
|
+
private static connectionInitialized: boolean
|
|
399
|
+
private static lastOptions: WSOptions | null
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**Observable Properties:**
|
|
403
|
+
```typescript
|
|
404
|
+
messages$: Observable<any> // All messages
|
|
405
|
+
connectionStatus$: Observable<boolean> // Connection state
|
|
406
|
+
subscribedChannels$: Observable<Set<string>>
|
|
407
|
+
onReconnect$: Observable<void> // Reconnect events
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Methods:**
|
|
411
|
+
|
|
412
|
+
#### Connection Management
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
connect(options: WSOptions, jwtToken: string): void
|
|
416
|
+
disconnect(): void
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
#### Subscription Management
|
|
420
|
+
|
|
421
|
+
```typescript
|
|
422
|
+
subscribeToChannel(channelName: string): void
|
|
423
|
+
subscribeToChannels(channelNames: string[]): void
|
|
424
|
+
unsubscribeFromChannel(channelName: string): void
|
|
425
|
+
getSubscribedChannels(): Set<string>
|
|
426
|
+
addSubscribedChannel(channelName: string): void
|
|
427
|
+
sendSubscribe(channelName: string, user: any): void
|
|
428
|
+
sendSubscribeWithLastSeen(channelName: string, user: any, lastSeenId: number): void
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
#### Messaging
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
sendBroadcast(content: any): void
|
|
435
|
+
sendMessageInChannel(channel: string, content: any): void
|
|
436
|
+
sendChannelMessage(channel: string, content: any): void
|
|
437
|
+
sendChannelMessageToChannels(channels: string[], content: any): void
|
|
438
|
+
sendMessageToUser(user: string, content: any): void
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
#### Channel Management
|
|
442
|
+
|
|
443
|
+
```typescript
|
|
444
|
+
createChannel(channel: string): void
|
|
445
|
+
deleteChannel(channel: string): void
|
|
446
|
+
getAllChannels(): void
|
|
447
|
+
getUsersInChannel(channel: string): void
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Usage Example:**
|
|
451
|
+
```typescript
|
|
452
|
+
import { WebSocketManagerService, WSOptions } from 'http-request-manager';
|
|
453
|
+
|
|
454
|
+
@Component({})
|
|
455
|
+
export class ChatComponent {
|
|
456
|
+
wsManager = inject(WebSocketManagerService);
|
|
457
|
+
|
|
458
|
+
ngOnInit() {
|
|
459
|
+
// Connection is singleton - only first call connects
|
|
460
|
+
this.wsManager.connect(
|
|
461
|
+
WSOptions.adapt({
|
|
462
|
+
wsServer: 'wss://ws.example.com',
|
|
463
|
+
id: 'chat-room',
|
|
464
|
+
user: { id: 'user123', name: 'John' }
|
|
465
|
+
}),
|
|
466
|
+
'jwt-token'
|
|
467
|
+
);
|
|
468
|
+
|
|
469
|
+
// Listen to messages
|
|
470
|
+
this.wsManager.messages$.subscribe(message => {
|
|
471
|
+
console.log('Received:', message);
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
// Subscribe to channel
|
|
475
|
+
this.wsManager.subscribeToChannel('chat-room');
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
sendMessage(content: any) {
|
|
479
|
+
this.wsManager.sendChannelMessage('chat-room', content);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
### MessageTrackerService
|
|
487
|
+
|
|
488
|
+
**Location:** `services/ws-manager-service/message-tracker.service.ts`
|
|
489
|
+
|
|
490
|
+
**Description:** Message history tracking and re-subscription management.
|
|
491
|
+
|
|
492
|
+
**Features:**
|
|
493
|
+
- Message history with persistence
|
|
494
|
+
- Last-seen message ID tracking
|
|
495
|
+
- Automatic re-subscription on reconnect
|
|
496
|
+
- Notification channel management
|
|
497
|
+
- Historical message retrieval
|
|
498
|
+
|
|
499
|
+
**Methods:**
|
|
500
|
+
```typescript
|
|
501
|
+
subscribeToChannel(channel: string, userData?: any): void
|
|
502
|
+
getNotificationChannels(): void
|
|
503
|
+
getTodaysNotificationChannels(): void
|
|
504
|
+
subscribeToNotificationChannel(channel: string, options?: any, user?: any): void
|
|
505
|
+
unsubscribeFromNotificationChannel(channel: string): void
|
|
506
|
+
sendNotification(channel: string, content: any): void
|
|
507
|
+
createNotificationChannel(channel: string): void
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## Storage Services
|
|
513
|
+
|
|
514
|
+
### LocalStorageManagerService
|
|
515
|
+
|
|
516
|
+
**Location:** `services/local-storage-manager-service/local-storage-manager.service.ts`
|
|
517
|
+
|
|
518
|
+
**Description:** LocalStorage and SessionStorage management with encryption and expiration.
|
|
519
|
+
|
|
520
|
+
**Extends:** `ComponentStore<State>`
|
|
521
|
+
|
|
522
|
+
**Features:**
|
|
523
|
+
- LocalStorage (GLOBAL) and SessionStorage (SESSION) support
|
|
524
|
+
- AES encryption for sensitive data
|
|
525
|
+
- Automatic expiration cleanup
|
|
526
|
+
- Reactive store$ observables
|
|
527
|
+
- Metadata tracking (settings, expires)
|
|
528
|
+
|
|
529
|
+
**Observable Properties:**
|
|
530
|
+
```typescript
|
|
531
|
+
stores$: Observable<StorageOption[]> // All store metadata
|
|
532
|
+
store$(name: string): Observable<any> // Store data observable
|
|
533
|
+
setting$(name: string): Observable<any> // Store settings observable
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
**Signal Methods:**
|
|
537
|
+
```typescript
|
|
538
|
+
signal<T>(key: string, defaultValue: T): WritableSignal<T>
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
**Methods:**
|
|
542
|
+
|
|
543
|
+
#### Store Management
|
|
544
|
+
|
|
545
|
+
```typescript
|
|
546
|
+
createStore(options: StoreOptions): void
|
|
547
|
+
updateStore(options: StoreOptions): void
|
|
548
|
+
deleteStore(options: { name: string }): void
|
|
549
|
+
resetStore(): void
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
#### Item Operations
|
|
553
|
+
|
|
554
|
+
```typescript
|
|
555
|
+
setItem(key: string, value: any, options?: SettingOptions): void
|
|
556
|
+
getItem(key: string): any
|
|
557
|
+
removeItem(key: string): void
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
#### Observable Methods
|
|
561
|
+
|
|
562
|
+
```typescript
|
|
563
|
+
store$(name: string): Observable<any>
|
|
564
|
+
setting$(name: string): Observable<any>
|
|
565
|
+
stores$: Observable<StorageOption[]>
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
**Usage Example:**
|
|
569
|
+
```typescript
|
|
570
|
+
import { LocalStorageManagerService, SettingOptions, StorageType } from 'http-request-manager';
|
|
571
|
+
|
|
572
|
+
@Component({})
|
|
573
|
+
export class SettingsComponent {
|
|
574
|
+
storage = inject(LocalStorageManagerService);
|
|
575
|
+
|
|
576
|
+
// Signal-based access
|
|
577
|
+
theme = this.storage.signal('theme', 'light');
|
|
578
|
+
language = this.storage.signal('language', 'en');
|
|
579
|
+
|
|
580
|
+
// Observable-based access
|
|
581
|
+
settings$ = this.storage.store$('user-preferences');
|
|
582
|
+
|
|
583
|
+
// Manual operations
|
|
584
|
+
saveSettings() {
|
|
585
|
+
this.storage.setItem('user-preferences', {
|
|
586
|
+
theme: this.theme(),
|
|
587
|
+
language: this.language()
|
|
588
|
+
}, SettingOptions.adapt({
|
|
589
|
+
storage: StorageType.GLOBAL,
|
|
590
|
+
encrypted: false,
|
|
591
|
+
expiresIn: '30d'
|
|
592
|
+
}));
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
---
|
|
598
|
+
|
|
599
|
+
### LocalStorageSignalsManagerService
|
|
600
|
+
|
|
601
|
+
**Location:** `services/local-storage-manager-service/local-storage-signals-manager.service.ts`
|
|
602
|
+
|
|
603
|
+
**Description:** Signal-optimized version of LocalStorageManagerService.
|
|
604
|
+
|
|
605
|
+
**Features:** Same as LocalStorageManagerService but with Signal-first API
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
## Database Services
|
|
610
|
+
|
|
611
|
+
### DatabaseManagerService
|
|
612
|
+
|
|
613
|
+
**Location:** `services/database-manager-service/database.manager.service.ts`
|
|
614
|
+
|
|
615
|
+
**Description:** IndexedDB wrapper using Dexie.js with Observable API.
|
|
616
|
+
|
|
617
|
+
**Extends:** `DbService` (Dexie.js wrapper)
|
|
618
|
+
|
|
619
|
+
**Features:**
|
|
620
|
+
- IndexedDB table management
|
|
621
|
+
- Observable-based CRUD operations
|
|
622
|
+
- Bulk operations
|
|
623
|
+
- Query support with filtering
|
|
624
|
+
- Schema inspection
|
|
625
|
+
|
|
626
|
+
**Methods:**
|
|
627
|
+
|
|
628
|
+
#### Table Management
|
|
629
|
+
|
|
630
|
+
```typescript
|
|
631
|
+
getDatabaseTables(): Observable<string[]>
|
|
632
|
+
databaseExists(): Observable<boolean>
|
|
633
|
+
hasDatabaseTable(tableName: string): Observable<boolean>
|
|
634
|
+
getDatabaseTable(tableName: string): Observable<any>
|
|
635
|
+
getDatabaseTableSchema(tableName: string): Observable<string[]>
|
|
636
|
+
createDatabaseTable(tableDef: TableSchemaDef): Observable<void>
|
|
637
|
+
updateDatabaseTableSchema(tableDef: TableSchemaDef): Observable<any>
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
#### CRUD Operations
|
|
641
|
+
|
|
642
|
+
```typescript
|
|
643
|
+
// Read
|
|
644
|
+
getTableRecords(table: string): Observable<any[]>
|
|
645
|
+
getTableRecord(table: string, id: number): Observable<any>
|
|
646
|
+
findTableRecords(table: string, column: string, value: any): Observable<any[]>
|
|
647
|
+
findTableRecord(table: string, column: string, value: any): Observable<any>
|
|
648
|
+
|
|
649
|
+
// Create
|
|
650
|
+
createTableRecord(table: string, record: any): Observable<any>
|
|
651
|
+
createTableRecords(table: string, records: any[]): Observable<any[]>
|
|
652
|
+
|
|
653
|
+
// Update
|
|
654
|
+
updateTableRecord(table: string, record: any): Observable<any>
|
|
655
|
+
updateTableRecords(table: string, records: any[]): Observable<any[]>
|
|
656
|
+
|
|
657
|
+
// Delete
|
|
658
|
+
deleteTableRecord(table: string, id: number): Observable<void>
|
|
659
|
+
deleteTableRecords(table: string, ids: number[]): Observable<void>
|
|
660
|
+
deleteTableRecordByColumn(table: string, column: string, value: any): Observable<void>
|
|
661
|
+
|
|
662
|
+
// Clear
|
|
663
|
+
clearTable(table: string): Observable<any>
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
**Clear Table Example:**
|
|
667
|
+
```typescript
|
|
668
|
+
import { DatabaseManagerService, TableSchemaDef } from 'http-request-manager';
|
|
669
|
+
|
|
670
|
+
@Component({})
|
|
671
|
+
export class DatabaseComponent {
|
|
672
|
+
dbManager = inject(DatabaseManagerService);
|
|
673
|
+
|
|
674
|
+
initializeTable() {
|
|
675
|
+
const tableDef = TableSchemaDef.adapt({
|
|
676
|
+
table: 'users',
|
|
677
|
+
schema: '++id, name, email, age, createdAt'
|
|
678
|
+
});
|
|
679
|
+
|
|
680
|
+
this.dbManager.createDatabaseTable(tableDef).subscribe();
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
addSampleData() {
|
|
684
|
+
const users = [
|
|
685
|
+
{ name: 'John', email: 'john@example.com', age: 30 },
|
|
686
|
+
{ name: 'Jane', email: 'jane@example.com', age: 25 }
|
|
687
|
+
];
|
|
688
|
+
|
|
689
|
+
this.dbManager.createTableRecords('users', users).subscribe();
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
loadData() {
|
|
693
|
+
this.dbManager.getTableRecords('users').subscribe(users => {
|
|
694
|
+
console.log('Users:', users);
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
clearData() {
|
|
699
|
+
this.dbManager.clearTable('users').subscribe(() => {
|
|
700
|
+
console.log('Table cleared');
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
## Utility Services
|
|
709
|
+
|
|
710
|
+
### UtilsService
|
|
711
|
+
|
|
712
|
+
**Location:** `services/utils/utils.service.ts`
|
|
713
|
+
|
|
714
|
+
**Description:** Collection of utility functions for common tasks.
|
|
715
|
+
|
|
716
|
+
**Methods:**
|
|
717
|
+
|
|
718
|
+
#### JSON Handling
|
|
719
|
+
|
|
720
|
+
```typescript
|
|
721
|
+
stringToJSON(str: string): any
|
|
722
|
+
JSONToString(obj: any): string
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
#### Type Checking
|
|
726
|
+
|
|
727
|
+
```typescript
|
|
728
|
+
isString(value: any): boolean
|
|
729
|
+
isObject(value: any): boolean
|
|
730
|
+
isJson(str: string): boolean
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
#### Expiration Management
|
|
734
|
+
|
|
735
|
+
```typescript
|
|
736
|
+
expires(duration: string): number // Convert '1h', '30mn' to epoch
|
|
737
|
+
hasExpired(epoch: number): boolean // Check if timestamp expired
|
|
738
|
+
timeRemaining(epoch: number): string // Time until expiration
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
#### Conversions
|
|
742
|
+
|
|
743
|
+
```typescript
|
|
744
|
+
base32ToHex(base32: string): string
|
|
745
|
+
binaryToHex(binary: string): string
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
#### Object Operations
|
|
749
|
+
|
|
750
|
+
```typescript
|
|
751
|
+
deepCompare(obj1: any, obj2: any): boolean
|
|
752
|
+
getProperty(obj: any, path: string): any
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
**Usage Example:**
|
|
756
|
+
```typescript
|
|
757
|
+
import { UtilsService } from 'http-request-manager';
|
|
758
|
+
|
|
759
|
+
utils = inject(UtilsService);
|
|
760
|
+
|
|
761
|
+
// Expiration
|
|
762
|
+
const expires = this.utils.expires('1h'); // Epoch timestamp
|
|
763
|
+
const hasExpired = this.utils.hasExpired(expires);
|
|
764
|
+
|
|
765
|
+
// JSON
|
|
766
|
+
const obj = this.utils.stringToJSON('{"name": "John"}');
|
|
767
|
+
const str = this.utils.JSONToString({ name: 'John' });
|
|
768
|
+
|
|
769
|
+
// Type checking
|
|
770
|
+
if (this.utils.isString(value)) { ... }
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
---
|
|
774
|
+
|
|
775
|
+
### ObjectMergerService
|
|
776
|
+
|
|
777
|
+
**Location:** `services/utils/object-merger.service.ts`
|
|
778
|
+
|
|
779
|
+
**Description:** Deep merge utility for objects.
|
|
780
|
+
|
|
781
|
+
**Methods:**
|
|
782
|
+
```typescript
|
|
783
|
+
merge(target: any, source: any): any
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
---
|
|
787
|
+
|
|
788
|
+
### SymmetricalEncryptionService
|
|
789
|
+
|
|
790
|
+
**Location:** `services/utils/encryption/symmetrical-encryption.service.ts`
|
|
791
|
+
|
|
792
|
+
**Description:** AES encryption/decryption utility.
|
|
793
|
+
|
|
794
|
+
**Methods:**
|
|
795
|
+
```typescript
|
|
796
|
+
encrypt(data: any, key: string): string
|
|
797
|
+
decrypt(encryptedData: string, key: string): any
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
---
|
|
801
|
+
|
|
802
|
+
## Interceptors
|
|
803
|
+
|
|
804
|
+
### RequestErrorInterceptor
|
|
805
|
+
|
|
806
|
+
**Description:** Handles HTTP error responses with toast notifications.
|
|
807
|
+
|
|
808
|
+
**Features:**
|
|
809
|
+
- 4xx errors → Warning toast
|
|
810
|
+
- 5xx errors → Error toast
|
|
811
|
+
- Detailed console logging
|
|
812
|
+
|
|
813
|
+
**Installation:**
|
|
814
|
+
```typescript
|
|
815
|
+
providers: [
|
|
816
|
+
{ provide: HTTP_INTERCEPTORS, useClass: RequestErrorInterceptor, multi: true }
|
|
817
|
+
]
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
### RequestHeadersInterceptor
|
|
823
|
+
|
|
824
|
+
**Description:** Automatically adds common headers to requests.
|
|
825
|
+
|
|
826
|
+
**Headers Added:**
|
|
827
|
+
- `Content-Type: application/json`
|
|
828
|
+
- `Accept-Language: {locale}-CA`
|
|
829
|
+
- `Current-Date: YYYY-MM-DD`
|
|
830
|
+
|
|
831
|
+
**Installation:**
|
|
832
|
+
```typescript
|
|
833
|
+
providers: [
|
|
834
|
+
{ provide: HTTP_INTERCEPTORS, useClass: RequestHeadersInterceptor, multi: true }
|
|
835
|
+
]
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
---
|
|
839
|
+
|
|
840
|
+
### CredentialsInterceptor
|
|
841
|
+
|
|
842
|
+
**Description:** Adds `withCredentials: true` to all requests.
|
|
843
|
+
|
|
844
|
+
**Installation:**
|
|
845
|
+
```typescript
|
|
846
|
+
providers: [
|
|
847
|
+
{ provide: HTTP_INTERCEPTORS, useClass: CredentialsInterceptor, multi: true }
|
|
848
|
+
]
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
---
|
|
852
|
+
|
|
853
|
+
### ProxyDebuggerInterceptor
|
|
854
|
+
|
|
855
|
+
**Description:** Logs request/response details for debugging.
|
|
856
|
+
|
|
857
|
+
**Installation:**
|
|
858
|
+
```typescript
|
|
859
|
+
providers: [
|
|
860
|
+
{ provide: HTTP_INTERCEPTORS, useClass: ProxyDebuggerInterceptor, multi: true }
|
|
861
|
+
]
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
---
|
|
865
|
+
|
|
866
|
+
## Models & Configuration
|
|
867
|
+
|
|
868
|
+
### ApiRequest
|
|
869
|
+
|
|
870
|
+
Configuration for HTTP requests.
|
|
871
|
+
|
|
872
|
+
```typescript
|
|
873
|
+
interface ApiRequest {
|
|
874
|
+
server: string; // Base URL
|
|
875
|
+
path: any[]; // Path segments
|
|
876
|
+
headers: any; // Custom headers
|
|
877
|
+
adapter: Function; // Response transformer
|
|
878
|
+
mapper: Function; // Request transformer
|
|
879
|
+
polling: number; // Polling interval (seconds)
|
|
880
|
+
retry: RetryOptions; // Retry config
|
|
881
|
+
stream: boolean; // Enable streaming
|
|
882
|
+
displayError: boolean; // Show error toast
|
|
883
|
+
saveAs: string; // Download filename
|
|
884
|
+
ws: WSOptions; // WebSocket config
|
|
885
|
+
}
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
### DatabaseStorage
|
|
889
|
+
|
|
890
|
+
Configuration for IndexedDB caching.
|
|
891
|
+
|
|
892
|
+
```typescript
|
|
893
|
+
interface DatabaseStorage {
|
|
894
|
+
table: string; // Table name
|
|
895
|
+
expiresIn: string; // '1h', '30mn', '5mn'
|
|
896
|
+
}
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
### WSOptions
|
|
900
|
+
|
|
901
|
+
WebSocket connection configuration.
|
|
902
|
+
|
|
903
|
+
```typescript
|
|
904
|
+
interface WSOptions {
|
|
905
|
+
wsServer: string; // WebSocket server URL
|
|
906
|
+
id: string; // Channel ID
|
|
907
|
+
user: any; // User info
|
|
908
|
+
channels?: string[]; // Additional channels
|
|
909
|
+
jwtToken?: string; // JWT token
|
|
910
|
+
retry?: { times: number; delay: number };
|
|
911
|
+
}
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### SettingOptions
|
|
915
|
+
|
|
916
|
+
LocalStorage configuration.
|
|
917
|
+
|
|
918
|
+
```typescript
|
|
919
|
+
interface SettingOptions {
|
|
920
|
+
storage: StorageType; // GLOBAL or SESSION
|
|
921
|
+
encrypted: boolean; // Enable encryption
|
|
922
|
+
expiresIn?: string; // Expiration duration
|
|
923
|
+
}
|
|
924
|
+
```
|
|
925
|
+
|
|
926
|
+
### TableSchemaDef
|
|
927
|
+
|
|
928
|
+
IndexedDB table schema definition.
|
|
929
|
+
|
|
930
|
+
```typescript
|
|
931
|
+
interface TableSchemaDef {
|
|
932
|
+
table: string; // Table name
|
|
933
|
+
schema: string; // Dexie schema (e.g., '++id, name, email')
|
|
934
|
+
}
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
### DataType
|
|
938
|
+
|
|
939
|
+
Enum for data structure type.
|
|
940
|
+
|
|
941
|
+
```typescript
|
|
942
|
+
enum DataType {
|
|
943
|
+
ARRAY = 'array', // List data
|
|
944
|
+
OBJECT = 'object' // Single object
|
|
945
|
+
}
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
### StorageType
|
|
949
|
+
|
|
950
|
+
Enum for storage location.
|
|
951
|
+
|
|
952
|
+
```typescript
|
|
953
|
+
enum StorageType {
|
|
954
|
+
GLOBAL = 'global', // LocalStorage
|
|
955
|
+
SESSION = 'session' // SessionStorage
|
|
956
|
+
}
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
---
|
|
960
|
+
|
|
961
|
+
## Quick Reference
|
|
962
|
+
|
|
963
|
+
### Service Injection
|
|
964
|
+
|
|
965
|
+
```typescript
|
|
966
|
+
// HTTP (Observable)
|
|
967
|
+
httpManager = inject(HTTPManagerService);
|
|
968
|
+
|
|
969
|
+
// HTTP (Signals)
|
|
970
|
+
httpManager = inject(HTTPManagerSignalsService);
|
|
971
|
+
|
|
972
|
+
// State Management
|
|
973
|
+
stateStore = inject(HTTPManagerStateService);
|
|
974
|
+
|
|
975
|
+
// WebSocket
|
|
976
|
+
wsManager = inject(WebSocketManagerService);
|
|
977
|
+
|
|
978
|
+
// LocalStorage
|
|
979
|
+
localStorage = inject(LocalStorageManagerService);
|
|
980
|
+
|
|
981
|
+
// IndexedDB
|
|
982
|
+
dbManager = inject(DatabaseManagerService);
|
|
983
|
+
|
|
984
|
+
// Utilities
|
|
985
|
+
utils = inject(UtilsService);
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
### Common Patterns
|
|
989
|
+
|
|
990
|
+
#### Fetch and Display
|
|
991
|
+
|
|
992
|
+
```typescript
|
|
993
|
+
// Observable
|
|
994
|
+
data$ = this.httpManager.data$;
|
|
995
|
+
httpManager.getRequest(ApiRequest.adapt({ path: ['users'] })).subscribe();
|
|
996
|
+
|
|
997
|
+
// Signal
|
|
998
|
+
data = this.httpManager.data;
|
|
999
|
+
httpManager.getRequest(ApiRequest.adapt({ path: ['users'] })).subscribe();
|
|
1000
|
+
```
|
|
1001
|
+
|
|
1002
|
+
#### Create Record
|
|
1003
|
+
|
|
1004
|
+
```typescript
|
|
1005
|
+
// State Service
|
|
1006
|
+
stateStore.createRecord(newData, { path: ['users'] });
|
|
1007
|
+
|
|
1008
|
+
// HTTP Service
|
|
1009
|
+
httpManager.postRequest(newData, ApiRequest.adapt({ path: ['users'] })).subscribe();
|
|
1010
|
+
```
|
|
1011
|
+
|
|
1012
|
+
#### Clear Cache
|
|
1013
|
+
|
|
1014
|
+
```typescript
|
|
1015
|
+
// Clear IndexedDB
|
|
1016
|
+
stateStore.clearDatabase();
|
|
1017
|
+
|
|
1018
|
+
// Clear specific table
|
|
1019
|
+
dbManager.clearTable('users').subscribe();
|
|
1020
|
+
```
|
|
1021
|
+
|
|
1022
|
+
#### WebSocket Messaging
|
|
1023
|
+
|
|
1024
|
+
```typescript
|
|
1025
|
+
// Connect (singleton)
|
|
1026
|
+
wsManager.connect(options, jwtToken);
|
|
1027
|
+
|
|
1028
|
+
// Subscribe
|
|
1029
|
+
wsManager.subscribeToChannel('chat-room');
|
|
1030
|
+
|
|
1031
|
+
// Send
|
|
1032
|
+
wsManager.sendChannelMessage('chat-room', { text: 'Hello' });
|
|
1033
|
+
```
|
|
1034
|
+
|
|
1035
|
+
---
|
|
1036
|
+
|
|
1037
|
+
This API reference provides comprehensive documentation for all services in the HTTP Request Manager library. For more detailed examples and use cases, refer to the individual README files in the `docs/` folder.
|