http-request-manager 18.15.34 → 18.16.1
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/fesm2022/http-request-manager.mjs +13688 -0
- package/fesm2022/http-request-manager.mjs.map +1 -0
- package/http-request-manager-18.16.0.tgz +0 -0
- package/package.json +15 -6
- package/types/http-request-manager.d.ts +3968 -0
- package/TEST_COVERAGE_SUMMARY.md +0 -458
- package/ng-package.json +0 -8
- package/src/docs/ADVANCED_WEBSOCKET.md +0 -633
- package/src/docs/ARCHITECTURE.md +0 -633
- package/src/docs/BATCH_REQUEST_README.md +0 -467
- package/src/docs/COMPLETE_API_REFERENCE.md +0 -1037
- package/src/docs/DATABASE_README.md +0 -1195
- package/src/docs/ENCRYPTION_README.md +0 -403
- package/src/docs/HTTP_MANAGER_README.md +0 -628
- package/src/docs/HTTP_SINGNALS_MANAGER_README.md +0 -654
- package/src/docs/HTTP_STATE_MANAGER_README.md +0 -1391
- package/src/docs/INTERCEPTOR_README.md +0 -549
- package/src/docs/LOCAL_STORAGE_README.md +0 -1056
- package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +0 -338
- package/src/docs/LOGGER_README.md +0 -310
- package/src/docs/MESSAGE_TRACKER_README.md +0 -518
- package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +0 -563
- package/src/docs/MODELS_README.md +0 -1264
- package/src/docs/SIGNAL_SERVICES_README.md +0 -238
- package/src/docs/SQL_DIXIE_README.md +0 -574
- package/src/docs/STORE_STATE_MANAGER_README.md +0 -556
- package/src/docs/STORE_STATE_SIGNALS_README.md +0 -600
- package/src/docs/UPLOAD_REQUEST_README.md +0 -324
- package/src/docs/UTILS_README.md +0 -1604
- package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +0 -799
- package/src/docs/WEBSOCKET_SIGNALS_README.md +0 -641
- package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +0 -201
- package/src/docs/WS_MANAGER_README.md +0 -613
- package/src/lib/http-request-manager.module.ts +0 -147
- package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -116
- 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 +0 -255
- package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -123
- package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
- package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -53
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
- package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -208
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +0 -200
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +0 -17
- package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +0 -214
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +0 -53
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +0 -60
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +0 -72
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +0 -28
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +0 -10
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +0 -29
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +0 -100
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +0 -22
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +0 -8
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +0 -19
- package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +0 -26
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +0 -30
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +0 -19
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +0 -25
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +0 -19
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +0 -24
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +0 -30
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +0 -49
- package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +0 -33
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +0 -279
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +0 -24
- package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +0 -461
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -100
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
- package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
- package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
- package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
- package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
- package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -622
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -106
- package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -687
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -418
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
- package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -576
- package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -89
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +0 -119
- 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 +0 -3
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +0 -16
- 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 +0 -3
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +0 -16
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +0 -31
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +0 -94
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +0 -41
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +0 -203
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +0 -144
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +0 -11
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +0 -102
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +0 -40
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +0 -230
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +0 -30
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +0 -172
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +0 -31
- package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +0 -239
- package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +0 -31
- package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +0 -32
- 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 +0 -84
- package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +0 -40
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +0 -3
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +0 -62
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +0 -83
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +0 -147
- package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +0 -168
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +0 -28
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +0 -10
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +0 -29
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +0 -100
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
- package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +0 -30
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +0 -19
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +0 -25
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +0 -19
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +0 -24
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +0 -30
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +0 -49
- package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +0 -33
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +0 -380
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +0 -24
- package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +0 -410
- package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +0 -28
- package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +0 -49
- 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 +0 -23
- package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +0 -36
- package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +0 -161
- package/src/lib/http-request-services-demo/upload-demo/models/index.ts +0 -1
- package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +0 -30
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +0 -89
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +0 -160
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +0 -101
- package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +0 -136
- package/src/lib/index.ts +0 -3
- package/src/lib/interceptors/credentials.interceptor.ts +0 -16
- package/src/lib/interceptors/index.ts +0 -6
- package/src/lib/interceptors/models/error-settings.model.ts +0 -22
- package/src/lib/interceptors/models/index.ts +0 -2
- package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
- package/src/lib/interceptors/request-error.interceptor.ts +0 -65
- package/src/lib/interceptors/request-header.interceptor.ts +0 -56
- package/src/lib/message-display/README.md +0 -509
- package/src/lib/message-display/index.ts +0 -4
- package/src/lib/message-display/models/action.model.ts +0 -27
- package/src/lib/message-display/models/communication-message.model.ts +0 -77
- package/src/lib/message-display/models/display-config.model.ts +0 -35
- package/src/lib/message-display/models/display-rule.interface.ts +0 -28
- package/src/lib/message-display/models/display-strategy.interface.ts +0 -8
- package/src/lib/message-display/models/index.ts +0 -6
- package/src/lib/message-display/models/slide.model.ts +0 -24
- package/src/lib/message-display/rules/default-display-rules.ts +0 -35
- package/src/lib/message-display/services/message-display-router.service.ts +0 -63
- package/src/lib/message-display/strategies/snackbar.strategy.ts +0 -46
- package/src/lib/models/batch-options.model.ts +0 -33
- package/src/lib/models/batch-progress.model.ts +0 -19
- package/src/lib/models/batch-request-state.model.ts +0 -40
- package/src/lib/models/batch-result.model.ts +0 -30
- package/src/lib/models/config-http-options.model.ts +0 -45
- package/src/lib/models/config-local-storage-options.model.ts +0 -27
- package/src/lib/models/config-options.model.ts +0 -27
- package/src/lib/models/config-token.model.ts +0 -9
- package/src/lib/models/data-type.enum.ts +0 -5
- package/src/lib/models/database-storage.model.ts +0 -24
- package/src/lib/models/index.ts +0 -16
- package/src/lib/models/retry-options.model.ts +0 -22
- package/src/lib/models/upload-validation-error.model.ts +0 -46
- package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +0 -246
- package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +0 -31
- package/src/lib/services/SQL-DixieJS service/index.ts +0 -4
- package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +0 -52
- package/src/lib/services/SQL-DixieJS service/models/index.ts +0 -3
- package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +0 -13
- package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +0 -3
- package/src/lib/services/SQL-DixieJS service/query-planner.ts +0 -284
- package/src/lib/services/SQL-DixieJS service/schema-validator.ts +0 -217
- package/src/lib/services/SQL-DixieJS service/sql-parser.ts +0 -35
- package/src/lib/services/database-manager-service/database.manager.service.ts +0 -384
- package/src/lib/services/database-manager-service/db.storage.service.ts +0 -240
- package/src/lib/services/database-manager-service/index.ts +0 -4
- package/src/lib/services/database-manager-service/models/index.ts +0 -2
- package/src/lib/services/database-manager-service/models/table-schema.ts +0 -33
- package/src/lib/services/index.ts +0 -20
- package/src/lib/services/local-storage-manager-service/index.ts +0 -4
- package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
- package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -567
- package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +0 -67
- package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +0 -437
- package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
- package/src/lib/services/local-storage-manager-service/models/index.ts +0 -6
- package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -35
- package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
- package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -32
- package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
- package/src/lib/services/request-manager-services/README.md +0 -282
- package/src/lib/services/request-manager-services/http-manager-signals.service.ts +0 -674
- package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -353
- package/src/lib/services/request-manager-services/http-manager.service.ts +0 -727
- package/src/lib/services/request-manager-services/index.ts +0 -8
- package/src/lib/services/request-manager-services/request-signals.service.ts +0 -372
- package/src/lib/services/request-manager-services/request.service.ts +0 -435
- package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
- package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
- package/src/lib/services/request-manager-services/rxjs-operators/index.ts +0 -4
- package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -35
- package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -468
- package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +0 -665
- package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -2395
- package/src/lib/services/request-manager-state-service/index.ts +0 -3
- package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -86
- package/src/lib/services/request-manager-state-service/models/index.ts +0 -14
- package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +0 -18
- package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +0 -21
- package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -37
- package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +0 -20
- package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +0 -23
- package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +0 -23
- package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +0 -23
- package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +0 -24
- package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +0 -13
- package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +0 -42
- package/src/lib/services/store-state-manager-service/index.ts +0 -4
- package/src/lib/services/store-state-manager-service/models/index.ts +0 -3
- package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +0 -30
- package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +0 -24
- package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +0 -169
- package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +0 -153
- package/src/lib/services/utils/app.service.spec.ts +0 -25
- package/src/lib/services/utils/app.service.ts +0 -21
- package/src/lib/services/utils/encryption/README.md +0 -79
- package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
- package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
- package/src/lib/services/utils/encryption/index.ts +0 -5
- package/src/lib/services/utils/encryption/random.ts +0 -81
- package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -106
- package/src/lib/services/utils/headers.service.spec.ts +0 -80
- package/src/lib/services/utils/headers.service.ts +0 -18
- package/src/lib/services/utils/index.ts +0 -9
- package/src/lib/services/utils/logger.service.ts +0 -90
- package/src/lib/services/utils/models/index.ts +0 -4
- package/src/lib/services/utils/models/normalized-request-options.model.ts +0 -24
- package/src/lib/services/utils/models/path-tracker-state.model.ts +0 -20
- package/src/lib/services/utils/models/query-params-tracker-options.model.ts +0 -24
- package/src/lib/services/utils/models/query-tracker-state.model.ts +0 -23
- package/src/lib/services/utils/object-merger.service.spec.ts +0 -18
- package/src/lib/services/utils/object-merger.service.ts +0 -78
- package/src/lib/services/utils/path-query.service.spec.ts +0 -117
- package/src/lib/services/utils/path-query.service.ts +0 -69
- package/src/lib/services/utils/query-params-tracker.service.ts +0 -442
- package/src/lib/services/utils/random-color.utils.ts +0 -83
- package/src/lib/services/utils/utils.service.spec.ts +0 -165
- package/src/lib/services/utils/utils.service.ts +0 -192
- package/src/lib/services/ws-manager-service/index.ts +0 -13
- package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +0 -147
- package/src/lib/services/ws-manager-service/message-tracker.service.ts +0 -477
- package/src/lib/services/ws-manager-service/models/channel-info.model.ts +0 -29
- package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +0 -24
- package/src/lib/services/ws-manager-service/models/channel-message.model.ts +0 -36
- package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +0 -6
- package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +0 -5
- package/src/lib/services/ws-manager-service/models/index.ts +0 -10
- package/src/lib/services/ws-manager-service/models/notification-message.model.ts +0 -29
- package/src/lib/services/ws-manager-service/models/public-message.model.ts +0 -18
- package/src/lib/services/ws-manager-service/models/state-message.model.ts +0 -18
- package/src/lib/services/ws-manager-service/models/ws-user.model.ts +0 -38
- package/src/lib/services/ws-manager-service/services/index.ts +0 -4
- package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +0 -129
- package/src/lib/services/ws-manager-service/services/websocket.service.ts +0 -434
- package/src/lib/services/ws-manager-service/websocket-service/index.ts +0 -1
- package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +0 -716
- package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +0 -596
- package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +0 -141
- package/src/public-api.ts +0 -19
- package/tsconfig.lib.json +0 -34
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import * as CryptoJS from 'crypto-js';
|
|
3
|
-
|
|
4
|
-
import { RandomSignature } from './random';
|
|
5
|
-
import { AppService } from '../app.service';
|
|
6
|
-
|
|
7
|
-
@Injectable({
|
|
8
|
-
providedIn: 'root'
|
|
9
|
-
})
|
|
10
|
-
export class SymmetricalEncryptionService {
|
|
11
|
-
|
|
12
|
-
appID: string; // APP SERVICE TO MANAGER ENCRYPTION KEY
|
|
13
|
-
|
|
14
|
-
private appService = inject(AppService)
|
|
15
|
-
|
|
16
|
-
constructor() {
|
|
17
|
-
// TODO: The APP ID is not a string, it is a function
|
|
18
|
-
this.appID = (this.appService.appID) ? this.appService.appID : ''
|
|
19
|
-
if(this.appID === '') console.warn('No App Key has been define')
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
generateCipherKey() {
|
|
23
|
-
return (RandomSignature().toString() + RandomSignature().toString()).substring(0, 8)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
encrypt(str: any, key = this.appID) {
|
|
27
|
-
|
|
28
|
-
if(!str || key === '') return ''
|
|
29
|
-
|
|
30
|
-
let _key = CryptoJS.enc.Utf8.parse(key)
|
|
31
|
-
let _iv = CryptoJS.enc.Utf8.parse(key)
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
|
|
35
|
-
const encrypted = CryptoJS.AES.encrypt(
|
|
36
|
-
JSON.stringify(str), _key, {
|
|
37
|
-
keySize: 16,
|
|
38
|
-
iv: _iv,
|
|
39
|
-
mode: CryptoJS.mode.ECB,
|
|
40
|
-
padding: CryptoJS.pad.Pkcs7
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
return encrypted.toString()
|
|
44
|
-
|
|
45
|
-
} catch(error: any) {
|
|
46
|
-
console.log(error)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
decrypt(str: string, key = this.appID) {
|
|
53
|
-
|
|
54
|
-
if(!str || key === '') return null
|
|
55
|
-
|
|
56
|
-
let _key = CryptoJS.enc.Utf8.parse(key)
|
|
57
|
-
let _iv = CryptoJS.enc.Utf8.parse(key)
|
|
58
|
-
|
|
59
|
-
try {
|
|
60
|
-
|
|
61
|
-
const decrypted = CryptoJS.AES.decrypt(
|
|
62
|
-
str, _key, {
|
|
63
|
-
keySize: 16,
|
|
64
|
-
iv: _iv,
|
|
65
|
-
mode: CryptoJS.mode.ECB,
|
|
66
|
-
padding: CryptoJS.pad.Pkcs7
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// Check if the decrypted data is valid before converting to UTF-8
|
|
70
|
-
const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
|
|
71
|
-
if (!decryptedStr) {
|
|
72
|
-
console.warn('Decryption resulted in empty string');
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return decryptedStr;
|
|
77
|
-
|
|
78
|
-
} catch(error: any) {
|
|
79
|
-
const message = String(error?.message || '');
|
|
80
|
-
if (message && !message.includes('Malformed UTF-8 data')) {
|
|
81
|
-
console.warn('Decryption failed');
|
|
82
|
-
}
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
createSignature(url: string, len = 16) {
|
|
90
|
-
const sig = CryptoJS.SHA256(url).toString(CryptoJS.enc.Hex)
|
|
91
|
-
return sig.substring(0, len).toUpperCase()
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
normalizeURL(url: string) {
|
|
95
|
-
const normalizedURL = url.replace(/(https?:\/\/)?(www\.)?/, '').replace(/\/+$/, '');
|
|
96
|
-
return normalizedURL;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
generateSignature(url: string) {
|
|
100
|
-
const normalizedURL = this.normalizeURL(url)
|
|
101
|
-
const hash = CryptoJS.SHA256(normalizedURL)
|
|
102
|
-
const signature = hash.toString(CryptoJS.enc.Hex)
|
|
103
|
-
return signature;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { HeadersService } from './headers.service';
|
|
4
|
-
|
|
5
|
-
describe('HeadersService', () => {
|
|
6
|
-
let service: HeadersService;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
TestBed.configureTestingModule({
|
|
10
|
-
providers: [HeadersService]
|
|
11
|
-
});
|
|
12
|
-
service = TestBed.inject(HeadersService);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should be created', () => {
|
|
16
|
-
expect(service).toBeTruthy();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should generate headers correctly', () => {
|
|
20
|
-
service.headers = { 'Content-Type': 'application/json' };
|
|
21
|
-
const customHeaders = { 'Authorization': 'Bearer token' };
|
|
22
|
-
const result = service.generateHeaders(customHeaders);
|
|
23
|
-
expect(result.headers.get('Content-Type')).toBe('application/json');
|
|
24
|
-
expect(result.headers.get('Authorization')).toBe('Bearer token');
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should override default headers with custom headers', () => {
|
|
28
|
-
service.headers = { 'Content-Type': 'application/json' };
|
|
29
|
-
const customHeaders = { 'Content-Type': 'text/plain' };
|
|
30
|
-
const result = service.generateHeaders(customHeaders);
|
|
31
|
-
expect(result.headers.get('Content-Type')).toBe('text/plain');
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should handle empty custom headers', () => {
|
|
35
|
-
service.headers = { 'Content-Type': 'application/json' };
|
|
36
|
-
const customHeaders = {};
|
|
37
|
-
const result = service.generateHeaders(customHeaders);
|
|
38
|
-
expect(result.headers.get('Content-Type')).toBe('application/json');
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('should handle empty default headers', () => {
|
|
42
|
-
service.headers = {};
|
|
43
|
-
const customHeaders = { 'Content-Type': 'text/plain' };
|
|
44
|
-
const result = service.generateHeaders(customHeaders);
|
|
45
|
-
expect(result.headers.get('Content-Type')).toBe('text/plain');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('should merge multiple headers correctly', () => {
|
|
49
|
-
service.headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' };
|
|
50
|
-
const customHeaders = { 'Authorization': 'Bearer token', 'Accept': 'text/plain' };
|
|
51
|
-
const result = service.generateHeaders(customHeaders);
|
|
52
|
-
expect(result.headers.get('Content-Type')).toBe('application/json');
|
|
53
|
-
expect(result.headers.get('Authorization')).toBe('Bearer token');
|
|
54
|
-
expect(result.headers.get('Accept')).toBe('text/plain');
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('should handle no headers', () => {
|
|
58
|
-
service.headers = {};
|
|
59
|
-
const customHeaders = {};
|
|
60
|
-
const result = service.generateHeaders(customHeaders);
|
|
61
|
-
expect(result.headers.keys().length).toBe(0);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('should prioritize custom headers over default headers', () => {
|
|
65
|
-
service.headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer defaultToken' };
|
|
66
|
-
const customHeaders = { 'Authorization': 'Bearer customToken' };
|
|
67
|
-
const result = service.generateHeaders(customHeaders);
|
|
68
|
-
expect(result.headers.get('Content-Type')).toBe('application/json');
|
|
69
|
-
expect(result.headers.get('Authorization')).toBe('Bearer customToken');
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('should add new custom headers to default headers', () => {
|
|
73
|
-
service.headers = { 'Content-Type': 'application/json' };
|
|
74
|
-
const customHeaders = { 'Authorization': 'Bearer token', 'Accept': 'application/xml' };
|
|
75
|
-
const result = service.generateHeaders(customHeaders);
|
|
76
|
-
expect(result.headers.get('Content-Type')).toBe('application/json');
|
|
77
|
-
expect(result.headers.get('Authorization')).toBe('Bearer token');
|
|
78
|
-
expect(result.headers.get('Accept')).toBe('application/xml');
|
|
79
|
-
});
|
|
80
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
@Injectable({
|
|
5
|
-
providedIn: 'root'
|
|
6
|
-
})
|
|
7
|
-
export class HeadersService {
|
|
8
|
-
|
|
9
|
-
headers = {}
|
|
10
|
-
|
|
11
|
-
generateHeaders(headers?: Record<string, string>): { headers: HttpHeaders } {
|
|
12
|
-
|
|
13
|
-
const allHeaders = headers ? { ...this.headers, ...headers } : {}
|
|
14
|
-
return { headers: new HttpHeaders(allHeaders) }
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * from './app.service';
|
|
2
|
-
export * from './headers.service';
|
|
3
|
-
export * from './path-query.service';
|
|
4
|
-
export * from './utils.service';
|
|
5
|
-
export * from './random-color.utils';
|
|
6
|
-
export * from './encryption/index';
|
|
7
|
-
export * from './logger.service';
|
|
8
|
-
export * from './models/index';
|
|
9
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Injectable, isDevMode } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* LoggerService for http-request-manager library
|
|
5
|
-
*
|
|
6
|
-
* Automatically enables debug logging in development mode,
|
|
7
|
-
* disables it in production mode.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* ```typescript
|
|
11
|
-
* constructor(private logger: LoggerService) {}
|
|
12
|
-
*
|
|
13
|
-
* this.logger.debug('WebSocket', 'Connected successfully');
|
|
14
|
-
* this.logger.info('HTTP', 'Request completed', { status: 200 });
|
|
15
|
-
* this.logger.warn('State', 'Cache miss for key', { key: 'user' });
|
|
16
|
-
* this.logger.error('Database', 'Connection failed', error);
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
@Injectable({
|
|
20
|
-
providedIn: 'root'
|
|
21
|
-
})
|
|
22
|
-
export class LoggerService {
|
|
23
|
-
private static readonly DEBUG_FLAG_KEY = 'HTTP_MGR_DEBUG';
|
|
24
|
-
private debugMode: boolean;
|
|
25
|
-
|
|
26
|
-
constructor() {
|
|
27
|
-
this.debugMode = isDevMode() && this.isDebugFlagEnabled();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Debug level logging - only shown in development mode
|
|
32
|
-
* Use for: Detailed diagnostic information, state changes, connection events
|
|
33
|
-
*/
|
|
34
|
-
debug(context: string, message: string, data?: any): void {
|
|
35
|
-
if (this.debugMode) {
|
|
36
|
-
console.log(`[HTTP-MGR DEBUG] ${context}: ${message}`, data ?? '');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Info level logging - only shown in development mode
|
|
42
|
-
* Use for: Important operational messages, successful operations
|
|
43
|
-
*/
|
|
44
|
-
info(context: string, message: string, data?: any): void {
|
|
45
|
-
if (this.debugMode) {
|
|
46
|
-
console.info(`[HTTP-MGR INFO] ${context}: ${message}`, data ?? '');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Warning level logging - always shown
|
|
52
|
-
* Use for: Potential issues, deprecated usage, recoverable errors
|
|
53
|
-
*/
|
|
54
|
-
warn(context: string, message: string, data?: any): void {
|
|
55
|
-
console.warn(`[HTTP-MGR WARN] ${context}: ${message}`, data ?? '');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Error level logging - always shown
|
|
60
|
-
* Use for: Actual errors, failures, exceptions
|
|
61
|
-
*/
|
|
62
|
-
error(context: string, message: string, data?: any): void {
|
|
63
|
-
console.error(`[HTTP-MGR ERROR] ${context}: ${message}`, data ?? '');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Check if debug mode is enabled (development mode)
|
|
68
|
-
*/
|
|
69
|
-
isDebugEnabled(): boolean {
|
|
70
|
-
return this.debugMode;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
private isDebugFlagEnabled(): boolean {
|
|
74
|
-
try {
|
|
75
|
-
if (typeof globalThis === 'undefined' || !globalThis.localStorage) {
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const value = globalThis.localStorage.getItem(LoggerService.DEBUG_FLAG_KEY);
|
|
80
|
-
if (value === null) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const normalized = value.trim().toLowerCase();
|
|
85
|
-
return !['0', 'false', 'off', 'no'].includes(normalized);
|
|
86
|
-
} catch {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export type QueryValue = string;
|
|
2
|
-
export type NormalizedQueryParams = Record<string, QueryValue>;
|
|
3
|
-
|
|
4
|
-
export interface NormalizedRequestOptionsInterface {
|
|
5
|
-
pathKey: string;
|
|
6
|
-
query: NormalizedQueryParams;
|
|
7
|
-
hasQuery: boolean;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class NormalizedRequestOptionsModel implements NormalizedRequestOptionsInterface {
|
|
11
|
-
constructor(
|
|
12
|
-
public pathKey: string = '',
|
|
13
|
-
public query: NormalizedQueryParams = {},
|
|
14
|
-
public hasQuery: boolean = false
|
|
15
|
-
) {}
|
|
16
|
-
|
|
17
|
-
static adapt(item?: any): NormalizedRequestOptionsModel {
|
|
18
|
-
return new NormalizedRequestOptionsModel(
|
|
19
|
-
item?.pathKey,
|
|
20
|
-
item?.query,
|
|
21
|
-
item?.hasQuery
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { QueryValue } from './normalized-request-options.model';
|
|
2
|
-
|
|
3
|
-
export interface PathTrackerStateInterface {
|
|
4
|
-
watchExpiresAt?: number;
|
|
5
|
-
consumedValuesByKey: Record<string, QueryValue[]>;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class PathTrackerStateModel implements PathTrackerStateInterface {
|
|
9
|
-
constructor(
|
|
10
|
-
public consumedValuesByKey: Record<string, QueryValue[]> = {},
|
|
11
|
-
public watchExpiresAt?: number
|
|
12
|
-
) {}
|
|
13
|
-
|
|
14
|
-
static adapt(item?: any): PathTrackerStateModel {
|
|
15
|
-
return new PathTrackerStateModel(
|
|
16
|
-
item?.consumedValuesByKey && typeof item.consumedValuesByKey === 'object' ? item.consumedValuesByKey : {},
|
|
17
|
-
item?.watchExpiresAt
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface QueryParamsTrackerOptionsInterface {
|
|
2
|
-
mode?: 'exact' | 'variation';
|
|
3
|
-
watchParams?: string[];
|
|
4
|
-
watchExpiresAt?: string | number;
|
|
5
|
-
watchParamsExpire?: string | number;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class QueryParamsTrackerOptionsModel implements QueryParamsTrackerOptionsInterface {
|
|
9
|
-
constructor(
|
|
10
|
-
public mode?: 'exact' | 'variation',
|
|
11
|
-
public watchParams?: string[],
|
|
12
|
-
public watchExpiresAt?: string | number,
|
|
13
|
-
public watchParamsExpire?: string | number
|
|
14
|
-
) {}
|
|
15
|
-
|
|
16
|
-
static adapt(item?: any): QueryParamsTrackerOptionsModel {
|
|
17
|
-
return new QueryParamsTrackerOptionsModel(
|
|
18
|
-
item?.mode,
|
|
19
|
-
Array.isArray(item?.watchParams) ? item.watchParams : [],
|
|
20
|
-
item?.watchExpiresAt,
|
|
21
|
-
item?.watchParamsExpire
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { PathTrackerStateInterface, PathTrackerStateModel } from './path-tracker-state.model';
|
|
2
|
-
|
|
3
|
-
export interface QueryTrackerStateInterface {
|
|
4
|
-
paths: Record<string, PathTrackerStateInterface>;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export class QueryTrackerStateModel implements QueryTrackerStateInterface {
|
|
8
|
-
constructor(
|
|
9
|
-
public paths: Record<string, PathTrackerStateInterface> = {}
|
|
10
|
-
) {}
|
|
11
|
-
|
|
12
|
-
static adapt(item?: any): QueryTrackerStateModel {
|
|
13
|
-
const paths: Record<string, PathTrackerStateInterface> = {};
|
|
14
|
-
|
|
15
|
-
if (item?.paths && typeof item.paths === 'object') {
|
|
16
|
-
Object.keys(item.paths).forEach((key) => {
|
|
17
|
-
paths[key] = PathTrackerStateModel.adapt(item.paths[key]);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return new QueryTrackerStateModel(paths);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/* tslint:disable:no-unused-variable */
|
|
2
|
-
|
|
3
|
-
import { TestBed, inject } from '@angular/core/testing';
|
|
4
|
-
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
|
5
|
-
import { ObjectMergerService } from './object-merger.service';
|
|
6
|
-
|
|
7
|
-
describe('Service: ObjectMerger', () => {
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
TestBed.configureTestingModule({
|
|
10
|
-
imports: [HttpClientTestingModule],
|
|
11
|
-
providers: [ObjectMergerService]
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should ...', inject([ObjectMergerService], (service: ObjectMergerService) => {
|
|
16
|
-
expect(service).toBeTruthy();
|
|
17
|
-
}));
|
|
18
|
-
});
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional, inject } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
import { ApiRequest } from '../request-manager-state-service/models';
|
|
4
|
-
import { SettingOptions } from '../local-storage-manager-service';
|
|
5
|
-
import { UtilsService } from './utils.service';
|
|
6
|
-
|
|
7
|
-
import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
|
|
8
|
-
import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
|
|
9
|
-
|
|
10
|
-
@Injectable({
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
})
|
|
13
|
-
export class ObjectMergerService {
|
|
14
|
-
|
|
15
|
-
utils = inject(UtilsService);
|
|
16
|
-
|
|
17
|
-
constructor(@Inject(CONFIG_SETTINGS_TOKEN) @Optional() private configOptions?: ConfigOptions) {
|
|
18
|
-
if (!this.configOptions) this.configOptions = ConfigOptions.adapt()
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
mergeOptions(options = ApiRequest.adapt()) {
|
|
22
|
-
|
|
23
|
-
const configForRoot = (this.configOptions?.httpRequestOptions) ? this.configOptions.httpRequestOptions : ConfigHTTPOptions.adapt()
|
|
24
|
-
const mergedOptions = ApiRequest.adapt(options)
|
|
25
|
-
|
|
26
|
-
mergedOptions.server = (options && options.server === '') ? configForRoot?.server || '' : options.server
|
|
27
|
-
|
|
28
|
-
mergedOptions.path = [ ...options.path || [], ...configForRoot?.path || [] ]
|
|
29
|
-
|
|
30
|
-
mergedOptions.headers = { ...options.headers || {}, ...configForRoot?.headers || {} }
|
|
31
|
-
|
|
32
|
-
mergedOptions.retry = (options && (options?.retry?.times !== 0 || options?.retry?.delay !== 3)) ? options.retry : configForRoot?.retry || { times: 0, delay: 3 };
|
|
33
|
-
|
|
34
|
-
mergedOptions.polling = (options && options?.polling !== 0) ? options.polling : configForRoot?.polling || 0;
|
|
35
|
-
|
|
36
|
-
mergedOptions.displayError = (options && options?.displayError) ? options.displayError : configForRoot?.displayError || false;
|
|
37
|
-
|
|
38
|
-
mergedOptions.stream = (options && options?.stream) ? options.stream : configForRoot?.stream || false;
|
|
39
|
-
|
|
40
|
-
return mergedOptions;
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
mergeStorageOptions(options = SettingOptions.adapt()) {
|
|
45
|
-
|
|
46
|
-
const configForRoot = (this.configOptions?.LocalStorageOptions) ? this.configOptions.LocalStorageOptions : LocalStorageOptions.adapt()
|
|
47
|
-
const configForRootOptions = configForRoot.options || LocalStorageOptions.adapt().options
|
|
48
|
-
|
|
49
|
-
const mergedOptions = SettingOptions.adapt(options)
|
|
50
|
-
|
|
51
|
-
// storage type
|
|
52
|
-
mergedOptions.storage = (options && (typeof options.storage !== 'undefined')) ? options.storage : (configForRootOptions?.storage ?? 0)
|
|
53
|
-
|
|
54
|
-
// expires: prefer explicit numeric expires; if not provided, compute from expiresIn string; otherwise use config default
|
|
55
|
-
// if an explicit, non-zero numeric expires is provided, use it
|
|
56
|
-
if (options && (typeof options.expires !== 'undefined') && options.expires !== null && Number(options.expires) > 0) {
|
|
57
|
-
mergedOptions.expires = Number(options.expires);
|
|
58
|
-
} else if (options && options.expiresIn) {
|
|
59
|
-
// compute numeric epoch from expiresIn string using UtilsService if available
|
|
60
|
-
try {
|
|
61
|
-
mergedOptions.expires = this.utils ? this.utils.expires(options.expiresIn) : 0;
|
|
62
|
-
} catch {
|
|
63
|
-
mergedOptions.expires = 0;
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
mergedOptions.expires = configForRootOptions?.expires ?? 0;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// keep expiresIn string if explicitly provided, otherwise use config default
|
|
70
|
-
mergedOptions.expiresIn = (options && (typeof options.expiresIn !== 'undefined')) ? options.expiresIn : (configForRootOptions?.expiresIn || '')
|
|
71
|
-
|
|
72
|
-
mergedOptions.encrypted = (options && (typeof options.encrypted !== 'undefined')) ? options.encrypted : (configForRootOptions?.encrypted || false)
|
|
73
|
-
|
|
74
|
-
return mergedOptions;
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
|
-
import { PathQueryService } from './path-query.service';
|
|
3
|
-
|
|
4
|
-
describe('PathQueryService', () => {
|
|
5
|
-
let service: PathQueryService;
|
|
6
|
-
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
TestBed.configureTestingModule({
|
|
9
|
-
providers: [PathQueryService]
|
|
10
|
-
});
|
|
11
|
-
service = TestBed.inject(PathQueryService);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('should be created', () => {
|
|
15
|
-
expect(service).toBeTruthy();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('should build API path with only server', () => {
|
|
19
|
-
const result = service.buildAPIPath('http://example.com');
|
|
20
|
-
expect(result).toBe('http://example.com');
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('should build API path with server and path params', () => {
|
|
24
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource']);
|
|
25
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('should build API path with server, path params, and query params', () => {
|
|
29
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', { query: 'value' }]);
|
|
30
|
-
expect(result).toBe('http://example.com/path/to/resource?query=value');
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('should build API path with server and query params', () => {
|
|
34
|
-
const result = service.buildAPIPath('http://example.com', [{ query: 'value' }]);
|
|
35
|
-
expect(result).toBe('http://example.com?query=value');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('should handle empty query params', () => {
|
|
39
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', {}]);
|
|
40
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should remove empty query params', () => {
|
|
44
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', { query: '' }]);
|
|
45
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('should clean URL path', () => {
|
|
49
|
-
const result = service.buildAPIPath('http://example.com', ['path', '', 'to', 'resource']);
|
|
50
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should handle null query params', () => {
|
|
54
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', null]);
|
|
55
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('should handle undefined query params', () => {
|
|
59
|
-
const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', undefined]);
|
|
60
|
-
expect(result).toBe('http://example.com/path/to/resource');
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('should build API path with server as string array and path params', () => {
|
|
64
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource']);
|
|
65
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('should build API path with server as string array, path params, and query params', () => {
|
|
69
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: 'value' }]);
|
|
70
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('should build API path with server as string array and query params', () => {
|
|
74
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], [{ query: 'value' }]);
|
|
75
|
-
expect(result).toBe('http://example.com/api/v1?query=value');
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it('should handle empty query params with server as string array', () => {
|
|
79
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', {}]);
|
|
80
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('should remove empty query params with server as string array', () => {
|
|
84
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: '' }]);
|
|
85
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('should clean URL path with server as string array', () => {
|
|
89
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', '', 'to', 'resource']);
|
|
90
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('should handle null query params with server as string array', () => {
|
|
94
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', null]);
|
|
95
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('should handle undefined query params with server as string array', () => {
|
|
99
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', undefined]);
|
|
100
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource');
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it('should handle multiple query params with server as string array', () => {
|
|
104
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query1: 'value1', query2: 'value2' }]);
|
|
105
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource?query1=value1&query2=value2');
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('should handle array query params with server as string array', () => {
|
|
109
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: ['value1', 'value2'] }]);
|
|
110
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value1%2Cvalue2');
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('should handle mixed path and query params with server as string array', () => {
|
|
114
|
-
const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', { query: 'value' }, 'to', 'resource']);
|
|
115
|
-
expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value');
|
|
116
|
-
});
|
|
117
|
-
});
|