@ledgerhq/device-management-kit 0.0.0-wrong-error-when-in-experimental-provider-20251021162636 → 0.0.0-z-intent-queue-7-20251204111630
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/lib/cjs/package.json +45 -40
- package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
- package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
- package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
- package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
- package/lib/cjs/src/api/command/Command.js +1 -1
- package/lib/cjs/src/api/command/Command.js.map +1 -1
- package/lib/cjs/src/api/command/Errors.js +1 -1
- package/lib/cjs/src/api/command/Errors.js.map +3 -3
- package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
- package/lib/cjs/src/api/command/model/CommandResult.js.map +1 -1
- package/lib/cjs/src/api/command/os/CloseAppCommand.js +1 -1
- package/lib/cjs/src/api/command/os/CloseAppCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/CloseAppCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/CloseAppCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js +1 -1
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +1 -1
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +1 -1
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/ListAppsCommand.js +1 -1
- package/lib/cjs/src/api/command/os/ListAppsCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/ListAppsCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/ListAppsCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +1 -1
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/os/LoadCertificateCommand.js +1 -1
- package/lib/cjs/src/api/command/os/LoadCertificateCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
- package/lib/cjs/src/api/command/os/OpenAppCommand.js +1 -1
- package/lib/cjs/src/api/command/os/OpenAppCommand.js.map +2 -2
- package/lib/cjs/src/api/command/os/OpenAppCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/OpenAppCommand.test.js.map +2 -2
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
- package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
- package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
- package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
- package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
- package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +1 -1
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -1
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +1 -1
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -1
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +1 -1
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +1 -1
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +2 -2
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +1 -1
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +2 -2
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +2 -2
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +2 -2
- package/lib/cjs/src/api/index.js +1 -1
- package/lib/cjs/src/api/index.js.map +2 -2
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
- package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +1 -1
- package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
- package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
- package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
- package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
- package/lib/cjs/src/api/secure-channel/task/types.js +1 -1
- package/lib/cjs/src/api/secure-channel/task/types.js.map +2 -2
- package/lib/cjs/src/api/secure-channel/utils.js +1 -1
- package/lib/cjs/src/api/secure-channel/utils.js.map +3 -3
- package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
- package/lib/cjs/src/api/secure-channel/utils.test.js.map +3 -3
- package/lib/cjs/src/api/transport/model/ConnectedDevice.js +1 -1
- package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +3 -3
- package/lib/cjs/src/api/transport/model/Errors.js +1 -1
- package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
- package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js +1 -1
- package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
- package/lib/cjs/src/internal/crypto/CryptoService.js +2 -0
- package/lib/cjs/src/internal/crypto/CryptoService.js.map +7 -0
- package/lib/cjs/src/internal/crypto/NobleCryptoService.js +2 -0
- package/lib/cjs/src/internal/crypto/NobleCryptoService.js.map +7 -0
- package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js +2 -0
- package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
- package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +1 -1
- package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
- package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
- package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js +2 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
- package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
- package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
- package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
- package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js +1 -1
- package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js.map +1 -1
- package/lib/cjs/src/internal/device-session/service/IntentQueueService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/IntentQueueService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js +2 -0
- package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
- package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
- package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
- package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
- package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
- package/lib/cjs/src/internal/discovery/di/discoveryTypes.js +1 -1
- package/lib/cjs/src/internal/discovery/di/discoveryTypes.js.map +2 -2
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
- package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
- package/lib/esm/package.json +45 -40
- package/lib/esm/src/api/DeviceManagementKit.js +1 -1
- package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
- package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
- package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
- package/lib/esm/src/api/command/Errors.js +1 -1
- package/lib/esm/src/api/command/Errors.js.map +3 -3
- package/lib/esm/src/api/command/model/CommandResult.js +1 -1
- package/lib/esm/src/api/command/model/CommandResult.js.map +1 -1
- package/lib/esm/src/api/command/os/CloseAppCommand.js +1 -1
- package/lib/esm/src/api/command/os/CloseAppCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/CloseAppCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/CloseAppCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js +1 -1
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +1 -1
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +1 -1
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/ListAppsCommand.js +1 -1
- package/lib/esm/src/api/command/os/ListAppsCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/ListAppsCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/ListAppsCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +1 -1
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/os/LoadCertificateCommand.js +1 -1
- package/lib/esm/src/api/command/os/LoadCertificateCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
- package/lib/esm/src/api/command/os/OpenAppCommand.js +1 -1
- package/lib/esm/src/api/command/os/OpenAppCommand.js.map +2 -2
- package/lib/esm/src/api/command/os/OpenAppCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/OpenAppCommand.test.js.map +2 -2
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
- package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
- package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
- package/lib/esm/src/api/device-action/os/Errors.js +1 -1
- package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +2 -2
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +2 -2
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +2 -2
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +1 -1
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +3 -3
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +1 -1
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +3 -3
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
- package/lib/esm/src/api/index.js +1 -1
- package/lib/esm/src/api/index.js.map +3 -3
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
- package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
- package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
- package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
- package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
- package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
- package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
- package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
- package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
- package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
- package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
- package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
- package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
- package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
- package/lib/esm/src/api/secure-channel/task/types.js +1 -1
- package/lib/esm/src/api/secure-channel/task/types.js.map +2 -2
- package/lib/esm/src/api/secure-channel/utils.js +1 -1
- package/lib/esm/src/api/secure-channel/utils.js.map +3 -3
- package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
- package/lib/esm/src/api/secure-channel/utils.test.js.map +3 -3
- package/lib/esm/src/api/transport/model/ConnectedDevice.js +1 -1
- package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +3 -3
- package/lib/esm/src/api/transport/model/Errors.js +1 -1
- package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
- package/lib/esm/src/api/transport/model/TransportConnectedDevice.js +1 -1
- package/lib/esm/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
- package/lib/esm/src/internal/crypto/CryptoService.js +1 -0
- package/lib/esm/src/internal/crypto/CryptoService.js.map +7 -0
- package/lib/esm/src/internal/crypto/NobleCryptoService.js +2 -0
- package/lib/esm/src/internal/crypto/NobleCryptoService.js.map +7 -0
- package/lib/esm/src/internal/crypto/NobleCryptoService.test.js +2 -0
- package/lib/esm/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
- package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +1 -1
- package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
- package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
- package/lib/esm/src/internal/device-session/model/DeviceSession.test.js +2 -0
- package/lib/esm/src/internal/device-session/model/DeviceSession.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
- package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
- package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
- package/lib/esm/src/internal/device-session/service/IntentQueueService.js +2 -0
- package/lib/esm/src/internal/device-session/service/IntentQueueService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js +2 -0
- package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
- package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
- package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
- package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
- package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
- package/lib/esm/src/internal/discovery/di/discoveryTypes.js +1 -1
- package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +2 -2
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
- package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
- package/lib/types/src/api/DeviceManagementKit.d.ts +22 -0
- package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
- package/lib/types/src/api/command/Command.d.ts +4 -0
- package/lib/types/src/api/command/Command.d.ts.map +1 -1
- package/lib/types/src/api/command/Errors.d.ts +2 -2
- package/lib/types/src/api/command/Errors.d.ts.map +1 -1
- package/lib/types/src/api/command/model/CommandResult.d.ts +3 -3
- package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
- package/lib/types/src/api/command/os/CloseAppCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/CloseAppCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/ListAppsCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/ListAppsCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/OpenAppCommand.d.ts +1 -0
- package/lib/types/src/api/command/os/OpenAppCommand.d.ts.map +1 -1
- package/lib/types/src/api/device-action/DeviceAction.d.ts +0 -1
- package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/Errors.d.ts +5 -0
- package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +1 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +3 -2
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +1 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +2 -2
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -1
- package/lib/types/src/api/index.d.ts +1 -1
- package/lib/types/src/api/index.d.ts.map +1 -1
- package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +1 -0
- package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +1 -0
- package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +1 -0
- package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +1 -0
- package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +1 -0
- package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +4 -0
- package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/task/types.d.ts +7 -0
- package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -1
- package/lib/types/src/api/secure-channel/utils.d.ts +18 -1
- package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +3 -2
- package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/Errors.d.ts +5 -0
- package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts +3 -1
- package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts.map +1 -1
- package/lib/types/src/internal/crypto/CryptoService.d.ts +12 -0
- package/lib/types/src/internal/crypto/CryptoService.d.ts.map +1 -0
- package/lib/types/src/internal/crypto/NobleCryptoService.d.ts +8 -0
- package/lib/types/src/internal/crypto/NobleCryptoService.d.ts.map +1 -0
- package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts +2 -0
- package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts.map +1 -0
- package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +1 -0
- package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +12 -2
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSession.test.d.ts +2 -0
- package/lib/types/src/internal/device-session/model/DeviceSession.test.d.ts.map +1 -0
- package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts +3 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +0 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts +1 -0
- package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts +7 -5
- package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts +28 -1
- package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts +101 -0
- package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts.map +1 -0
- package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts +2 -0
- package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts.map +1 -0
- package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts +19 -0
- package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +1 -0
- package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +3 -2
- package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts +32 -0
- package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts +2 -0
- package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts.map +1 -0
- package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +33 -28
- package/lib/cjs/src/internal/device-session/service/MutexService.js +0 -2
- package/lib/cjs/src/internal/device-session/service/MutexService.js.map +0 -7
- package/lib/cjs/src/internal/device-session/service/MutexService.test.js +0 -2
- package/lib/cjs/src/internal/device-session/service/MutexService.test.js.map +0 -7
- package/lib/esm/src/internal/device-session/service/MutexService.js +0 -2
- package/lib/esm/src/internal/device-session/service/MutexService.js.map +0 -7
- package/lib/esm/src/internal/device-session/service/MutexService.test.js +0 -2
- package/lib/esm/src/internal/device-session/service/MutexService.test.js.map +0 -7
- package/lib/types/src/internal/device-session/service/MutexService.d.ts +0 -6
- package/lib/types/src/internal/device-session/service/MutexService.d.ts.map +0 -1
- package/lib/types/src/internal/device-session/service/MutexService.test.d.ts +0 -2
- package/lib/types/src/internal/device-session/service/MutexService.test.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DeviceSessionStateType as o,DeviceStatus as i,isSuccessCommandResult as v}from"../../../api/index";import{SessionEvents as s}from"../../device-session/model/DeviceSessionEventDispatcher";class
|
|
1
|
+
import{DeviceSessionStateType as o,DeviceStatus as i,isSuccessCommandResult as v}from"../../../api/index";import{SessionEvents as s}from"../../device-session/model/DeviceSessionEventDispatcher";class D{constructor(e,n,t,a,r){this._sessionEventDispatcher=n;this._connectedDevice=t;this._deviceState=a;this.setDeviceSessionState=r;this._subscription=this._sessionEventDispatcher.listen().subscribe(c=>this.mapEventAction(c)),this._logger=e("device-session-state-handler")}_subscription;_logger;_pendingDeviceStatus=i.BUSY;_updateDeviceState(e){const n=this._parseDeviceStatus(e);if(n){const{sessionStateType:t,deviceStatus:a,currentApp:r}=n,c=this._deviceState.getValue();c.sessionStateType===o.Connected?this.setDeviceSessionState({sessionStateType:t,deviceStatus:a,deviceModelId:this._connectedDevice.deviceModel.id,currentApp:r,installedApps:[],isSecureConnectionAllowed:!1}):this.setDeviceSessionState({...c,sessionStateType:t,deviceStatus:a,deviceModelId:this._connectedDevice.deviceModel.id,currentApp:r})}}mapEventAction=e=>{const{eventName:n}=e;switch(n){case s.COMMAND_SUCCEEDED:return this._updateDeviceState(e.eventData);case s.DEVICE_STATE_UPDATE_BUSY:return this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:i.BUSY});case s.DEVICE_STATE_UPDATE_LOCKED:this._pendingDeviceStatus=i.LOCKED;return;case s.DEVICE_STATE_UPDATE_CONNECTED:this._pendingDeviceStatus=i.CONNECTED;return;case s.NEW_STATE:{const t=this._pendingDeviceStatus;return this._pendingDeviceStatus=i.BUSY,this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:t})}case s.DEVICE_STATE_UPDATE_UNKNOWN:return this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:i.BUSY});case s.REFRESH_NEEDED:return;default:{const t=n;throw new Error(`Unhandled context type ${t}`)}}};_parseDeviceStatus(e){return v(e)?{sessionStateType:o.ReadyWithoutSecureChannel,deviceStatus:i.CONNECTED,currentApp:{name:e.data.name,version:e.data.version}}:(this._logger.debug("Error while parsing APDU response",{data:{parsedResponse:e}}),null)}unsubscribe(){this._subscription.unsubscribe()}}export{D as DeviceSessionStateHandler};
|
|
2
2
|
//# sourceMappingURL=DeviceSessionStateHandler.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/device-session/model/DeviceSessionStateHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import { type BehaviorSubject, type Subscription } from \"rxjs\";\n\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport {\n DeviceSessionStateType,\n DeviceStatus,\n type GetAppAndVersionResponse,\n isSuccessCommandResult,\n type TransportConnectedDevice,\n} from \"@api/index\";\nimport { type CommandResult, type LoggerPublisherService } from \"@api/types\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\n\nexport type SetDeviceSessionStateFn = (state: DeviceSessionState) => void;\n\ntype NewDeviceStatus = {\n sessionStateType: DeviceSessionStateType;\n deviceStatus: DeviceStatus;\n currentApp: {\n name: string;\n version: string;\n };\n};\n\nexport class DeviceSessionStateHandler {\n private _subscription: Subscription;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n private _sessionEventDispatcher: DeviceSessionEventDispatcher,\n private _connectedDevice: TransportConnectedDevice,\n private _deviceState: BehaviorSubject<DeviceSessionState>,\n private setDeviceSessionState: SetDeviceSessionStateFn,\n ) {\n this._subscription = this._sessionEventDispatcher\n .listen()\n .subscribe((event) => this.mapEventAction(event));\n this._logger = loggerModuleFactory(\"device-session-state-handler\");\n }\n\n private _updateDeviceState(\n parsedResponse: CommandResult<GetAppAndVersionResponse>,\n ): void {\n const newDeviceStatus = this._parseDeviceStatus(parsedResponse);\n\n if (newDeviceStatus) {\n const { sessionStateType, deviceStatus, currentApp } = newDeviceStatus;\n const state = this._deviceState.getValue();\n if (state.sessionStateType === DeviceSessionStateType.Connected) {\n // When device is connected, initialize fields to default values\n this.setDeviceSessionState({\n sessionStateType,\n deviceStatus,\n deviceModelId: this._connectedDevice.deviceModel.id,\n currentApp,\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n } else {\n // When device is ready, keep un-modified state fields\n this.setDeviceSessionState({\n ...state,\n sessionStateType,\n deviceStatus,\n deviceModelId: this._connectedDevice.deviceModel.id,\n currentApp,\n });\n }\n }\n }\n\n private mapEventAction = (event: NewEvent) => {\n switch (
|
|
5
|
-
"mappings": "AAGA,OACE,0BAAAA,EACA,gBAAAC,EAEA,0BAAAC,MAEK,aAEP,OAGE,iBAAAC,MACK,8DAaA,MAAMC,CAA0B,
|
|
6
|
-
"names": ["DeviceSessionStateType", "DeviceStatus", "isSuccessCommandResult", "SessionEvents", "DeviceSessionStateHandler", "loggerModuleFactory", "_sessionEventDispatcher", "_connectedDevice", "_deviceState", "setDeviceSessionState", "event", "parsedResponse", "newDeviceStatus", "sessionStateType", "deviceStatus", "currentApp", "state"]
|
|
4
|
+
"sourcesContent": ["import { type BehaviorSubject, type Subscription } from \"rxjs\";\n\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport {\n DeviceSessionStateType,\n DeviceStatus,\n type GetAppAndVersionResponse,\n isSuccessCommandResult,\n type TransportConnectedDevice,\n} from \"@api/index\";\nimport { type CommandResult, type LoggerPublisherService } from \"@api/types\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\n\nexport type SetDeviceSessionStateFn = (state: DeviceSessionState) => void;\n\ntype NewDeviceStatus = {\n sessionStateType: DeviceSessionStateType;\n deviceStatus: DeviceStatus;\n currentApp: {\n name: string;\n version: string;\n };\n};\n\nexport class DeviceSessionStateHandler {\n private _subscription: Subscription;\n private readonly _logger: LoggerPublisherService;\n // BUSY is used as the default status when an intent fails, since it is not yet clear\n // whether the device is disconnected or simply unresponsive. The actual disconnection\n // status will be determined and notified asynchronously by the transport layer.\n private _pendingDeviceStatus: DeviceStatus = DeviceStatus.BUSY;\n\n constructor(\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n private _sessionEventDispatcher: DeviceSessionEventDispatcher,\n private _connectedDevice: TransportConnectedDevice,\n private _deviceState: BehaviorSubject<DeviceSessionState>,\n private setDeviceSessionState: SetDeviceSessionStateFn,\n ) {\n this._subscription = this._sessionEventDispatcher\n .listen()\n .subscribe((event) => this.mapEventAction(event));\n this._logger = loggerModuleFactory(\"device-session-state-handler\");\n }\n\n private _updateDeviceState(\n parsedResponse: CommandResult<GetAppAndVersionResponse>,\n ): void {\n const newDeviceStatus = this._parseDeviceStatus(parsedResponse);\n\n if (newDeviceStatus) {\n const { sessionStateType, deviceStatus, currentApp } = newDeviceStatus;\n const state = this._deviceState.getValue();\n if (state.sessionStateType === DeviceSessionStateType.Connected) {\n // When device is connected, initialize fields to default values\n this.setDeviceSessionState({\n sessionStateType,\n deviceStatus,\n deviceModelId: this._connectedDevice.deviceModel.id,\n currentApp,\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n } else {\n // When device is ready, keep un-modified state fields\n this.setDeviceSessionState({\n ...state,\n sessionStateType,\n deviceStatus,\n deviceModelId: this._connectedDevice.deviceModel.id,\n currentApp,\n });\n }\n }\n }\n\n private mapEventAction = (event: NewEvent) => {\n const { eventName } = event;\n switch (eventName) {\n case SessionEvents.COMMAND_SUCCEEDED:\n return this._updateDeviceState(event.eventData);\n case SessionEvents.DEVICE_STATE_UPDATE_BUSY:\n return this.setDeviceSessionState({\n ...this._deviceState.getValue(),\n deviceStatus: DeviceStatus.BUSY,\n });\n case SessionEvents.DEVICE_STATE_UPDATE_LOCKED:\n this._pendingDeviceStatus = DeviceStatus.LOCKED;\n return;\n case SessionEvents.DEVICE_STATE_UPDATE_CONNECTED:\n this._pendingDeviceStatus = DeviceStatus.CONNECTED;\n return;\n case SessionEvents.NEW_STATE: {\n // On new state, if an intent is successful,\n // we should have a DEVICE_STATE_UPDATE_LOCKED or DEVICE_STATE_UPDATE_CONNECTED as pending status event\n // If not, we should still have a BUSY status as fallback waiting for the transport to disconnect\n const newDeviceStatus = this._pendingDeviceStatus;\n this._pendingDeviceStatus = DeviceStatus.BUSY;\n return this.setDeviceSessionState({\n ...this._deviceState.getValue(),\n deviceStatus: newDeviceStatus,\n });\n }\n case SessionEvents.DEVICE_STATE_UPDATE_UNKNOWN:\n return this.setDeviceSessionState({\n ...this._deviceState.getValue(),\n deviceStatus: DeviceStatus.BUSY,\n });\n case SessionEvents.REFRESH_NEEDED:\n // This case is handled by the DeviceSessionRefresher\n return;\n default: {\n const uncoveredType: never = eventName;\n throw new Error(`Unhandled context type ${uncoveredType}`);\n }\n }\n };\n\n private _parseDeviceStatus(\n parsedResponse: CommandResult<GetAppAndVersionResponse>,\n ): NewDeviceStatus | null {\n if (isSuccessCommandResult(parsedResponse)) {\n return {\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: {\n name: parsedResponse.data.name,\n version: parsedResponse.data.version,\n },\n };\n } else {\n this._logger.debug(\"Error while parsing APDU response\", {\n data: { parsedResponse },\n });\n return null;\n }\n }\n\n public unsubscribe(): void {\n this._subscription.unsubscribe();\n }\n}\n"],
|
|
5
|
+
"mappings": "AAGA,OACE,0BAAAA,EACA,gBAAAC,EAEA,0BAAAC,MAEK,aAEP,OAGE,iBAAAC,MACK,8DAaA,MAAMC,CAA0B,CAQrC,YACEC,EACQC,EACAC,EACAC,EACAC,EACR,CAJQ,6BAAAH,EACA,sBAAAC,EACA,kBAAAC,EACA,2BAAAC,EAER,KAAK,cAAgB,KAAK,wBACvB,OAAO,EACP,UAAWC,GAAU,KAAK,eAAeA,CAAK,CAAC,EAClD,KAAK,QAAUL,EAAoB,8BAA8B,CACnE,CAlBQ,cACS,QAIT,qBAAqCJ,EAAa,KAelD,mBACNU,EACM,CACN,MAAMC,EAAkB,KAAK,mBAAmBD,CAAc,EAE9D,GAAIC,EAAiB,CACnB,KAAM,CAAE,iBAAAC,EAAkB,aAAAC,EAAc,WAAAC,CAAW,EAAIH,EACjDI,EAAQ,KAAK,aAAa,SAAS,EACrCA,EAAM,mBAAqBhB,EAAuB,UAEpD,KAAK,sBAAsB,CACzB,iBAAAa,EACA,aAAAC,EACA,cAAe,KAAK,iBAAiB,YAAY,GACjD,WAAAC,EACA,cAAe,CAAC,EAChB,0BAA2B,EAC7B,CAAC,EAGD,KAAK,sBAAsB,CACzB,GAAGC,EACH,iBAAAH,EACA,aAAAC,EACA,cAAe,KAAK,iBAAiB,YAAY,GACjD,WAAAC,CACF,CAAC,CAEL,CACF,CAEQ,eAAkBL,GAAoB,CAC5C,KAAM,CAAE,UAAAO,CAAU,EAAIP,EACtB,OAAQO,EAAW,CACjB,KAAKd,EAAc,kBACjB,OAAO,KAAK,mBAAmBO,EAAM,SAAS,EAChD,KAAKP,EAAc,yBACjB,OAAO,KAAK,sBAAsB,CAChC,GAAG,KAAK,aAAa,SAAS,EAC9B,aAAcF,EAAa,IAC7B,CAAC,EACH,KAAKE,EAAc,2BACjB,KAAK,qBAAuBF,EAAa,OACzC,OACF,KAAKE,EAAc,8BACjB,KAAK,qBAAuBF,EAAa,UACzC,OACF,KAAKE,EAAc,UAAW,CAI5B,MAAMS,EAAkB,KAAK,qBAC7B,YAAK,qBAAuBX,EAAa,KAClC,KAAK,sBAAsB,CAChC,GAAG,KAAK,aAAa,SAAS,EAC9B,aAAcW,CAChB,CAAC,CACH,CACA,KAAKT,EAAc,4BACjB,OAAO,KAAK,sBAAsB,CAChC,GAAG,KAAK,aAAa,SAAS,EAC9B,aAAcF,EAAa,IAC7B,CAAC,EACH,KAAKE,EAAc,eAEjB,OACF,QAAS,CACP,MAAMe,EAAuBD,EAC7B,MAAM,IAAI,MAAM,0BAA0BC,CAAa,EAAE,CAC3D,CACF,CACF,EAEQ,mBACNP,EACwB,CACxB,OAAIT,EAAuBS,CAAc,EAChC,CACL,iBAAkBX,EAAuB,0BACzC,aAAcC,EAAa,UAC3B,WAAY,CACV,KAAMU,EAAe,KAAK,KAC1B,QAASA,EAAe,KAAK,OAC/B,CACF,GAEA,KAAK,QAAQ,MAAM,oCAAqC,CACtD,KAAM,CAAE,eAAAA,CAAe,CACzB,CAAC,EACM,KAEX,CAEO,aAAoB,CACzB,KAAK,cAAc,YAAY,CACjC,CACF",
|
|
6
|
+
"names": ["DeviceSessionStateType", "DeviceStatus", "isSuccessCommandResult", "SessionEvents", "DeviceSessionStateHandler", "loggerModuleFactory", "_sessionEventDispatcher", "_connectedDevice", "_deviceState", "setDeviceSessionState", "event", "parsedResponse", "newDeviceStatus", "sessionStateType", "deviceStatus", "currentApp", "state", "eventName", "uncoveredType"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{BehaviorSubject as p,Subject as C}from"rxjs";import{expect as
|
|
1
|
+
import{BehaviorSubject as p,Subject as C}from"rxjs";import{expect as t}from"vitest";import{CommandResultStatus as S,DeviceModelId as u,DeviceSessionStateType as r,DeviceStatus as i}from"../../../api/index";import{SessionEvents as a}from"../../device-session/model/DeviceSessionEventDispatcher";import{DeviceSessionStateHandler as D}from"./DeviceSessionStateHandler";describe("DeviceSessionStateHandler",()=>{let e,v,c;const E=vi.fn(()=>c);let l,d,n,o;beforeEach(()=>{e=new C,v={listen:()=>e,dispatch:vi.fn()},c={error:vi.fn(),debug:vi.fn()},l={deviceModel:{id:"device-model-1"}},d=new p({sessionStateType:r.Connected,deviceStatus:i.CONNECTED,deviceModelId:u.NANO_X}),n=vi.fn(),o=new D(E,v,l,d,n)}),afterEach(()=>{o&&typeof o.unsubscribe=="function"&&o.unsubscribe()}),it("updates device state on COMMAND_SUCCEEDED event with a successful response",()=>{const s={data:{name:"TestApp",version:"1.0.0"},status:S.Success};e.next({eventName:a.COMMAND_SUCCEEDED,eventData:s}),t(n).toHaveBeenCalledWith({sessionStateType:r.ReadyWithoutSecureChannel,deviceStatus:i.CONNECTED,deviceModelId:"device-model-1",currentApp:{name:"TestApp",version:"1.0.0"},installedApps:[],isSecureConnectionAllowed:!1})}),it("updates device state on COMMAND_SUCCEEDED event when device is ready",()=>{d.next({sessionStateType:r.ReadyWithoutSecureChannel,deviceStatus:i.CONNECTED,deviceModelId:u.NANO_X,currentApp:{name:"",version:""},installedApps:["Bitcoin","Ethereum"],isSecureConnectionAllowed:!0});const s={data:{name:"TestApp",version:"1.0.0"},status:S.Success};e.next({eventName:a.COMMAND_SUCCEEDED,eventData:s}),t(n).toHaveBeenCalledWith({sessionStateType:r.ReadyWithoutSecureChannel,deviceStatus:i.CONNECTED,deviceModelId:"device-model-1",currentApp:{name:"TestApp",version:"1.0.0"},installedApps:["Bitcoin","Ethereum"],isSecureConnectionAllowed:!0})}),it("updates device state on DEVICE_STATE_UPDATE_BUSY event",()=>{e.next({eventName:a.DEVICE_STATE_UPDATE_BUSY}),t(n).toHaveBeenCalledWith(t.objectContaining({deviceStatus:i.BUSY}))}),it("updates device state on DEVICE_STATE_UPDATE_CONNECTED event",()=>{e.next({eventName:a.DEVICE_STATE_UPDATE_CONNECTED}),e.next({eventName:a.NEW_STATE}),t(n).toHaveBeenCalledWith(t.objectContaining({deviceStatus:i.CONNECTED}))}),it("logs error and does not update state if command result is unsuccessful",()=>{const s={data:null,error:{_tag:"SomeOtherError"}};e.next({eventName:a.COMMAND_SUCCEEDED,eventData:s}),t(c.debug).toHaveBeenCalledWith("Error while parsing APDU response",{data:{parsedResponse:s}}),t(n).not.toHaveBeenCalled()}),it("does not update state if command result is not a success",()=>{const s={data:null,error:{_tag:"SomeOtherError"}};e.next({eventName:a.COMMAND_SUCCEEDED,eventData:s}),t(n).not.toHaveBeenCalled()})});
|
|
2
2
|
//# sourceMappingURL=DeviceSessionStateHandler.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/device-session/model/DeviceSessionStateHandler.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { BehaviorSubject, Subject } from \"rxjs\";\nimport { expect, type Mock } from \"vitest\";\n\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport {\n CommandResultStatus,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@api/index\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n DeviceSessionStateHandler,\n type SetDeviceSessionStateFn,\n} from \"./DeviceSessionStateHandler\";\n\ndescribe(\"DeviceSessionStateHandler\", () => {\n let fakeEventSubject: Subject<NewEvent>;\n let fakeSessionEventDispatcher: DeviceSessionEventDispatcher;\n let mockLogger: {\n error: (message: string, meta?: Record<string, unknown>) => void;\n debug: (message: string, meta?: Record<string, unknown>) => void;\n };\n const mockLoggerModuleFactory = vi.fn(() => mockLogger);\n let fakeConnectedDevice: { deviceModel: { id: string } };\n let deviceState: BehaviorSubject<DeviceSessionState>;\n let setDeviceSessionState: Mock<SetDeviceSessionStateFn>;\n let handler: DeviceSessionStateHandler;\n\n beforeEach(() => {\n fakeEventSubject = new Subject<NewEvent>();\n //@ts-expect-error mock\n fakeSessionEventDispatcher = {\n listen: () => fakeEventSubject,\n dispatch: vi.fn(),\n };\n\n mockLogger = {\n error: vi.fn(),\n debug: vi.fn(),\n };\n\n fakeConnectedDevice = {\n deviceModel: {\n id: \"device-model-1\",\n },\n };\n\n deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n setDeviceSessionState = vi.fn();\n\n handler = new DeviceSessionStateHandler(\n //@ts-expect-error mock\n mockLoggerModuleFactory,\n fakeSessionEventDispatcher,\n fakeConnectedDevice,\n deviceState,\n setDeviceSessionState,\n );\n });\n\n afterEach(() => {\n if (handler && typeof handler.unsubscribe === \"function\") {\n handler.unsubscribe();\n }\n });\n\n it(\"updates device state on COMMAND_SUCCEEDED event with a successful response\", () => {\n // Given\n const fakeCommandResult = {\n data: {\n name: \"TestApp\",\n version: \"1.0.0\",\n },\n status: CommandResultStatus.Success,\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: \"device-model-1\",\n currentApp: { name: \"TestApp\", version: \"1.0.0\" },\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n });\n\n it(\"updates device state on COMMAND_SUCCEEDED event when device is ready\", () => {\n // Given\n deviceState.next({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: DeviceModelId.NANO_X,\n currentApp: { name: \"\", version: \"\" },\n installedApps: [\"Bitcoin\", \"Ethereum\"] as unknown as Application[],\n isSecureConnectionAllowed: true,\n });\n const fakeCommandResult = {\n data: {\n name: \"TestApp\",\n version: \"1.0.0\",\n },\n status: CommandResultStatus.Success,\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: \"device-model-1\",\n currentApp: { name: \"TestApp\", version: \"1.0.0\" },\n installedApps: [\"Bitcoin\", \"Ethereum\"] as unknown as Application[],\n isSecureConnectionAllowed: true,\n });\n });\n\n it(\"updates device state on DEVICE_STATE_UPDATE_BUSY event\", () => {\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith(\n expect.objectContaining({ deviceStatus: DeviceStatus.BUSY }),\n );\n });\n\n it(\"updates device state on DEVICE_STATE_UPDATE_CONNECTED event\", () => {\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith(\n expect.objectContaining({ deviceStatus: DeviceStatus.CONNECTED }),\n );\n });\n\n it(\"logs error and does not update state if command result is unsuccessful\", () => {\n // Given\n const fakeErrorCommandResult = {\n data: null,\n error: { _tag: \"SomeOtherError\" },\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeErrorCommandResult,\n });\n\n // Then\n expect(mockLogger.debug).toHaveBeenCalledWith(\n \"Error while parsing APDU response\",\n { data: { parsedResponse: fakeErrorCommandResult } },\n );\n expect(setDeviceSessionState).not.toHaveBeenCalled();\n });\n\n it(\"does not update state if command result is not a success\", () => {\n // Given\n const fakeErrorCommandResult = {\n data: null,\n error: { _tag: \"SomeOtherError\" },\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeErrorCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).not.toHaveBeenCalled();\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { BehaviorSubject, Subject } from \"rxjs\";\nimport { expect, type Mock } from \"vitest\";\n\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport {\n CommandResultStatus,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@api/index\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n DeviceSessionStateHandler,\n type SetDeviceSessionStateFn,\n} from \"./DeviceSessionStateHandler\";\n\ndescribe(\"DeviceSessionStateHandler\", () => {\n let fakeEventSubject: Subject<NewEvent>;\n let fakeSessionEventDispatcher: DeviceSessionEventDispatcher;\n let mockLogger: {\n error: (message: string, meta?: Record<string, unknown>) => void;\n debug: (message: string, meta?: Record<string, unknown>) => void;\n };\n const mockLoggerModuleFactory = vi.fn(() => mockLogger);\n let fakeConnectedDevice: { deviceModel: { id: string } };\n let deviceState: BehaviorSubject<DeviceSessionState>;\n let setDeviceSessionState: Mock<SetDeviceSessionStateFn>;\n let handler: DeviceSessionStateHandler;\n\n beforeEach(() => {\n fakeEventSubject = new Subject<NewEvent>();\n //@ts-expect-error mock\n fakeSessionEventDispatcher = {\n listen: () => fakeEventSubject,\n dispatch: vi.fn(),\n };\n\n mockLogger = {\n error: vi.fn(),\n debug: vi.fn(),\n };\n\n fakeConnectedDevice = {\n deviceModel: {\n id: \"device-model-1\",\n },\n };\n\n deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n setDeviceSessionState = vi.fn();\n\n handler = new DeviceSessionStateHandler(\n //@ts-expect-error mock\n mockLoggerModuleFactory,\n fakeSessionEventDispatcher,\n fakeConnectedDevice,\n deviceState,\n setDeviceSessionState,\n );\n });\n\n afterEach(() => {\n if (handler && typeof handler.unsubscribe === \"function\") {\n handler.unsubscribe();\n }\n });\n\n it(\"updates device state on COMMAND_SUCCEEDED event with a successful response\", () => {\n // Given\n const fakeCommandResult = {\n data: {\n name: \"TestApp\",\n version: \"1.0.0\",\n },\n status: CommandResultStatus.Success,\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: \"device-model-1\",\n currentApp: { name: \"TestApp\", version: \"1.0.0\" },\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n });\n\n it(\"updates device state on COMMAND_SUCCEEDED event when device is ready\", () => {\n // Given\n deviceState.next({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: DeviceModelId.NANO_X,\n currentApp: { name: \"\", version: \"\" },\n installedApps: [\"Bitcoin\", \"Ethereum\"] as unknown as Application[],\n isSecureConnectionAllowed: true,\n });\n const fakeCommandResult = {\n data: {\n name: \"TestApp\",\n version: \"1.0.0\",\n },\n status: CommandResultStatus.Success,\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: \"device-model-1\",\n currentApp: { name: \"TestApp\", version: \"1.0.0\" },\n installedApps: [\"Bitcoin\", \"Ethereum\"] as unknown as Application[],\n isSecureConnectionAllowed: true,\n });\n });\n\n it(\"updates device state on DEVICE_STATE_UPDATE_BUSY event\", () => {\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith(\n expect.objectContaining({ deviceStatus: DeviceStatus.BUSY }),\n );\n });\n\n it(\"updates device state on DEVICE_STATE_UPDATE_CONNECTED event\", () => {\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n\n // Trigger NEW_STATE to apply the pending status\n fakeEventSubject.next({\n eventName: SessionEvents.NEW_STATE,\n });\n\n // Then\n expect(setDeviceSessionState).toHaveBeenCalledWith(\n expect.objectContaining({ deviceStatus: DeviceStatus.CONNECTED }),\n );\n });\n\n it(\"logs error and does not update state if command result is unsuccessful\", () => {\n // Given\n const fakeErrorCommandResult = {\n data: null,\n error: { _tag: \"SomeOtherError\" },\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeErrorCommandResult,\n });\n\n // Then\n expect(mockLogger.debug).toHaveBeenCalledWith(\n \"Error while parsing APDU response\",\n { data: { parsedResponse: fakeErrorCommandResult } },\n );\n expect(setDeviceSessionState).not.toHaveBeenCalled();\n });\n\n it(\"does not update state if command result is not a success\", () => {\n // Given\n const fakeErrorCommandResult = {\n data: null,\n error: { _tag: \"SomeOtherError\" },\n };\n\n // When\n fakeEventSubject.next({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n //@ts-expect-error mock\n eventData: fakeErrorCommandResult,\n });\n\n // Then\n expect(setDeviceSessionState).not.toHaveBeenCalled();\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["BehaviorSubject", "Subject", "expect", "CommandResultStatus", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "SessionEvents", "DeviceSessionStateHandler", "fakeEventSubject", "fakeSessionEventDispatcher", "mockLogger", "mockLoggerModuleFactory", "fakeConnectedDevice", "deviceState", "setDeviceSessionState", "handler", "fakeCommandResult", "fakeErrorCommandResult"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var S=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var v=(r,e,s,i)=>{for(var o=i>1?void 0:i?a(e,s):e,n=r.length-1,c;n>=0;n--)(c=r[n])&&(o=(i?c(e,s,o):c(o))||o);return i&&o&&S(e,s,o),o},h=(r,e)=>(s,i)=>e(s,i,r);import{inject as l,injectable as u}from"inversify";import{Maybe as d}from"purify-ts";import{ReplaySubject as m}from"rxjs";import{DeviceSessionNotFound as g}from"../../device-session/model/Errors";import{loggerTypes as D}from"../../logger-publisher/di/loggerTypes";let t=class{_sessions;_sessionsSubject;_logger;constructor(e){this._sessions=[],this._sessionsSubject=new m,this._logger=e("DeviceSessionService")}get sessionsObs(){return this._sessionsSubject.asObservable()}addDeviceSession(e){return this._sessions.find(i=>i.id===e.id)?(this._logger.warn("DeviceSession already exists",{data:{deviceSession:e}}),this):(this._sessions.push(e),this._sessionsSubject.next(e),this._logger.info("DeviceSession added",{data:{sessionId:e.id}}),this)}removeDeviceSession(e){const s=this._sessions.find(i=>i.id===e);return s?(s.close(),this._sessions=this._sessions.filter(i=>i.id!==e),this._logger.info("DeviceSession removed",{data:{sessionId:e}}),this):(this._logger.warn("DeviceSession not found",{data:{sessionId:e}}),this)}getDeviceSessionById(e){return d.fromNullable(this._sessions.find(s=>s.id===e)).toEither(new g)}getDeviceSessionsByDeviceId(e){return d.fromPredicate(({length:s})=>s>0,this._sessions.filter(s=>s.connectedDevice.id===e)).toEither(new g)}getDeviceSessions(){return this._sessions}};t=v([u(),h(0,l(D.LoggerPublisherServiceFactory))],t);export{t as DefaultDeviceSessionService};
|
|
2
2
|
//# sourceMappingURL=DefaultDeviceSessionService.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/device-session/service/DefaultDeviceSessionService.ts"],
|
|
4
|
-
"sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultDeviceSessionService implements DeviceSessionService {\n private _sessions: DeviceSession[];\n private readonly
|
|
5
|
-
"mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,
|
|
6
|
-
"names": ["inject", "injectable", "Maybe", "ReplaySubject", "DeviceSessionNotFound", "loggerTypes", "DefaultDeviceSessionService", "loggerModuleFactory", "ReplaySubject", "deviceSession", "sessionId", "found", "Maybe", "DeviceSessionNotFound", "deviceId", "__decorateClass", "injectable", "__decorateParam", "inject", "loggerTypes"]
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Maybe } from \"purify-ts\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceId } from \"@api/types\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultDeviceSessionService implements DeviceSessionService {\n private _sessions: DeviceSession[];\n private readonly _sessionsSubject: ReplaySubject<DeviceSession>;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessions = [];\n this._sessionsSubject = new ReplaySubject();\n this._logger = loggerModuleFactory(\"DeviceSessionService\");\n }\n\n public get sessionsObs(): Observable<DeviceSession> {\n return this._sessionsSubject.asObservable();\n }\n\n addDeviceSession(deviceSession: DeviceSession): DeviceSessionService {\n const found = this._sessions.find((s) => s.id === deviceSession.id);\n if (found) {\n this._logger.warn(\"DeviceSession already exists\", {\n data: { deviceSession },\n });\n return this;\n }\n this._sessions.push(deviceSession);\n this._sessionsSubject.next(deviceSession);\n this._logger.info(\"DeviceSession added\", {\n data: { sessionId: deviceSession.id },\n });\n return this;\n }\n\n removeDeviceSession(sessionId: string): DeviceSessionService {\n const found = this._sessions.find((s) => s.id === sessionId);\n if (found) {\n found.close();\n this._sessions = this._sessions.filter((s) => s.id !== sessionId);\n this._logger.info(\"DeviceSession removed\", { data: { sessionId } });\n return this;\n }\n this._logger.warn(\"DeviceSession not found\", { data: { sessionId } });\n return this;\n }\n\n getDeviceSessionById(\n sessionId: string,\n ): Either<DeviceSessionNotFound, DeviceSession> {\n return Maybe.fromNullable(\n this._sessions.find((s) => s.id === sessionId),\n ).toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessionsByDeviceId(\n deviceId: DeviceId,\n ): Either<DeviceSessionNotFound, DeviceSession[]> {\n return Maybe.fromPredicate(\n ({ length }) => length > 0,\n this._sessions.filter((s) => s.connectedDevice.id === deviceId),\n ).toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessions(): DeviceSession[] {\n return this._sessions;\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,SAAAC,MAAa,YAC9B,OAAqB,iBAAAC,MAAqB,OAK1C,OAAS,yBAAAC,MAA6B,wCAEtC,OAAS,eAAAC,MAAmB,4CAGrB,IAAMC,EAAN,KAAkE,CAC/D,UACS,iBACA,QAEjB,YAEEC,EACA,CACA,KAAK,UAAY,CAAC,EAClB,KAAK,iBAAmB,IAAIC,EAC5B,KAAK,QAAUD,EAAoB,sBAAsB,CAC3D,CAEA,IAAW,aAAyC,CAClD,OAAO,KAAK,iBAAiB,aAAa,CAC5C,CAEA,iBAAiBE,EAAoD,CAEnE,OADc,KAAK,UAAU,KAAMC,GAAMA,EAAE,KAAOD,EAAc,EAAE,GAEhE,KAAK,QAAQ,KAAK,+BAAgC,CAChD,KAAM,CAAE,cAAAA,CAAc,CACxB,CAAC,EACM,OAET,KAAK,UAAU,KAAKA,CAAa,EACjC,KAAK,iBAAiB,KAAKA,CAAa,EACxC,KAAK,QAAQ,KAAK,sBAAuB,CACvC,KAAM,CAAE,UAAWA,EAAc,EAAG,CACtC,CAAC,EACM,KACT,CAEA,oBAAoBE,EAAyC,CAC3D,MAAMC,EAAQ,KAAK,UAAU,KAAMF,GAAMA,EAAE,KAAOC,CAAS,EAC3D,OAAIC,GACFA,EAAM,MAAM,EACZ,KAAK,UAAY,KAAK,UAAU,OAAQF,GAAMA,EAAE,KAAOC,CAAS,EAChE,KAAK,QAAQ,KAAK,wBAAyB,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC3D,OAET,KAAK,QAAQ,KAAK,0BAA2B,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC7D,KACT,CAEA,qBACEA,EAC8C,CAC9C,OAAOE,EAAM,aACX,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOF,CAAS,CAC/C,EAAE,SAAS,IAAIG,CAAuB,CACxC,CAEA,4BACEC,EACgD,CAChD,OAAOF,EAAM,cACX,CAAC,CAAE,OAAAG,CAAO,IAAMA,EAAS,EACzB,KAAK,UAAU,OAAQ,GAAM,EAAE,gBAAgB,KAAOD,CAAQ,CAChE,EAAE,SAAS,IAAID,CAAuB,CACxC,CAEA,mBAAqC,CACnC,OAAO,KAAK,SACd,CACF,EAlEaR,EAANW,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAY,6BAA6B,IANxCf",
|
|
6
|
+
"names": ["inject", "injectable", "Maybe", "ReplaySubject", "DeviceSessionNotFound", "loggerTypes", "DefaultDeviceSessionService", "loggerModuleFactory", "ReplaySubject", "deviceSession", "s", "sessionId", "found", "Maybe", "DeviceSessionNotFound", "deviceId", "length", "__decorateClass", "injectable", "__decorateParam", "inject", "loggerTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Either as
|
|
1
|
+
import{Either as l,Left as u}from"purify-ts";import{Observable as b}from"rxjs";import{connectedDeviceStubBuilder as p}from"../../../api/transport/model/TransportConnectedDevice.stub";import{DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS as r}from"../../device-session/data/DeviceSessionRefresherConst";import{deviceSessionStubBuilder as a}from"../../device-session/model/DeviceSession.stub";import{DeviceSessionNotFound as m}from"../../device-session/model/Errors";import{DefaultLoggerPublisherService as x}from"../../logger-publisher/service/DefaultLoggerPublisherService";import{AxiosManagerApiDataSource as E}from"../../manager-api/data/AxiosManagerApiDataSource";import{DefaultManagerApiService as y}from"../../manager-api/service/DefaultManagerApiService";import{DefaultSecureChannelDataSource as I}from"../../secure-channel/data/DefaultSecureChannelDataSource";import{DefaultSecureChannelService as A}from"../../secure-channel/service/DefaultSecureChannelService";import{DefaultDeviceSessionService as q}from"./DefaultDeviceSessionService";vi.mock("@internal/logger-publisher/service/DefaultLoggerPublisherService");vi.mock("@internal/manager-api/data/AxiosManagerApiDataSource");let e,s,i,v,d,g,t,f,c;describe("DefaultDeviceSessionService",()=>{s=new x([],"deviceSession"),g=new E({}),t=new y(g),f=new I({}),c=new A(f),beforeEach(()=>{vi.restoreAllMocks(),e=new q(()=>s),i=a({},()=>s,t,c,r)}),afterEach(()=>{i.close()}),it("should have an empty DeviceSession list",()=>{expect(e.getDeviceSessions()).toEqual([])}),describe("DeviceSessionService addDeviceSession",()=>{it("should add a DeviceSession if it does not already exist",()=>{e.addDeviceSession(i),expect(e.getDeviceSessions()).toEqual([i])}),it("should not add a DeviceSession if it already exists",()=>{e.addDeviceSession(i),e.addDeviceSession(i),expect(e.getDeviceSessions()).toEqual([i])})}),describe("DeviceSessionService removeDeviceSession",()=>{it("should remove the DeviceSession of given ID",()=>{e.addDeviceSession(i),e.removeDeviceSession(i.id),expect(e.getDeviceSessions()).toEqual([])}),it("should not remove the DeviceSession of given ID if it does not exist",()=>{e.addDeviceSession(i),e.removeDeviceSession("non-existent-id"),expect(e.getDeviceSessions()).toEqual([i])})}),describe("DeviceSessionService getDeviceSessionById",()=>{it("should get the DeviceSession of given ID if it exists",()=>{e.addDeviceSession(i),expect(e.getDeviceSessionById(i.id)).toEqual(l.of(i))}),it("should not get the DeviceSession if it does not exist",()=>{e.addDeviceSession(i),expect(e.getDeviceSessionById("non-existent-id")).toEqual(u(new m))})}),describe("DeviceSessionService getDeviceSessionsByDeviceId",()=>{it("should not get device sessions by deviceId if none exist",()=>{e.addDeviceSession(i),expect(e.getDeviceSessionsByDeviceId("non-existent-device-id")).toEqual(u(new m))}),it("should get a single device session by deviceId",()=>{e.addDeviceSession(i),expect(e.getDeviceSessionsByDeviceId(i.connectedDevice.id)).toEqual(l.of([i]))}),it("should get device sessions by deviceId",()=>{e.addDeviceSession(i),v=a({connectedDevice:p({id:"device-1"}),id:"session-1"},()=>s,t,c,r),d=a({connectedDevice:p({id:"device-1"}),id:"session-2"},()=>s,t,c,r),e.addDeviceSession(v),e.addDeviceSession(d),expect(e.getDeviceSessionsByDeviceId("device-1")).toEqual(l.of([v,d])),v.close(),d.close()})}),it("should get all sessions",()=>{e.addDeviceSession(i),expect(e.getDeviceSessions()).toEqual([i])}),it("should retrieve sessionObs",()=>{expect(e.sessionsObs).toBeInstanceOf(b)}),it("should emit new session",()=>new Promise((o,n)=>{const S=e.sessionsObs.subscribe({next(D){try{expect(D).toStrictEqual(i),S.unsubscribe(),o()}catch(h){n(h)}}});e.addDeviceSession(i)})),it("should emit previous added session",()=>{const o=a({id:"last-session"},()=>s,t,c,r),n=[];e.addDeviceSession(i),e.addDeviceSession(o);const S=e.sessionsObs.subscribe({next(D){n.push(D)}});o.close(),expect(n).toEqual([i,o]),S.unsubscribe()})});
|
|
2
2
|
//# sourceMappingURL=DefaultDeviceSessionService.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/device-session/service/DefaultDeviceSessionService.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Either, Left } from \"purify-ts\";\nimport { Observable } from \"rxjs\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { type DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport type { ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DefaultDeviceSessionService } from \"./DefaultDeviceSessionService\";\n\nvi.mock(\"@internal/logger-publisher/service/DefaultLoggerPublisherService\");\nvi.mock(\"@internal/manager-api/data/AxiosManagerApiDataSource\");\n\nlet sessionService: DefaultDeviceSessionService;\nlet loggerService: DefaultLoggerPublisherService;\nlet deviceSession: DeviceSession;\nlet managerApiDataSource: ManagerApiDataSource;\nlet managerApi: ManagerApiService;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\n\ndescribe(\"DefaultDeviceSessionService\", () => {\n
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,EAAQ,QAAAC,MAAY,YAC7B,OAAS,cAAAC,MAAkB,OAG3B,OAAS,4CAAAC,MAAgD,4DAEzD,OAAS,4BAAAC,MAAgC,oDACzC,OAAS,yBAAAC,MAA6B,wCACtC,OAAS,iCAAAC,MAAqC,mEAC9C,OAAS,6BAAAC,MAAiC,uDAE1C,OAAS,4BAAAC,MAAgC,yDAEzC,OAAS,kCAAAC,MAAsC,+DAE/C,OAAS,+BAAAC,MAAmC,+DAG5C,OAAS,+BAAAC,MAAmC,gCAE5C,GAAG,KAAK,kEAAkE,EAC1E,GAAG,KAAK,sDAAsD,EAE9D,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,SAAS,8BAA+B,IAAM,
|
|
6
|
-
"names": ["Either", "Left", "Observable", "DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS", "deviceSessionStubBuilder", "DeviceSessionNotFound", "DefaultLoggerPublisherService", "AxiosManagerApiDataSource", "DefaultManagerApiService", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "DefaultDeviceSessionService", "sessionService", "loggerService", "deviceSession", "managerApiDataSource", "managerApi", "secureChannelDataSource", "secureChannel", "resolve", "reject", "subscription", "emittedDeviceSession", "error", "lastDeviceSession", "emittedSessions"]
|
|
4
|
+
"sourcesContent": ["import { Either, Left } from \"purify-ts\";\nimport { Observable } from \"rxjs\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { connectedDeviceStubBuilder } from \"@api/transport/model/TransportConnectedDevice.stub\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { type DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport type { ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DefaultDeviceSessionService } from \"./DefaultDeviceSessionService\";\n\nvi.mock(\"@internal/logger-publisher/service/DefaultLoggerPublisherService\");\nvi.mock(\"@internal/manager-api/data/AxiosManagerApiDataSource\");\n\nlet sessionService: DefaultDeviceSessionService;\nlet loggerService: DefaultLoggerPublisherService;\nlet deviceSession: DeviceSession;\nlet deviceSession1: DeviceSession;\nlet deviceSession2: DeviceSession;\nlet managerApiDataSource: ManagerApiDataSource;\nlet managerApi: ManagerApiService;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\n\ndescribe(\"DefaultDeviceSessionService\", () => {\n // Initialize shared resources\n loggerService = new DefaultLoggerPublisherService([], \"deviceSession\");\n managerApiDataSource = new AxiosManagerApiDataSource({} as DmkConfig);\n managerApi = new DefaultManagerApiService(managerApiDataSource);\n secureChannelDataSource = new DefaultSecureChannelDataSource({} as DmkConfig);\n secureChannel = new DefaultSecureChannelService(secureChannelDataSource);\n\n beforeEach(() => {\n vi.restoreAllMocks();\n // Create a new instance before each test\n sessionService = new DefaultDeviceSessionService(() => loggerService);\n // Create a device session stub with default properties\n deviceSession = deviceSessionStubBuilder(\n {},\n () => loggerService,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n });\n\n afterEach(() => {\n deviceSession.close();\n });\n\n it(\"should have an empty DeviceSession list\", () => {\n expect(sessionService.getDeviceSessions()).toEqual([]);\n });\n\n describe(\"DeviceSessionService addDeviceSession\", () => {\n it(\"should add a DeviceSession if it does not already exist\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(sessionService.getDeviceSessions()).toEqual([deviceSession]);\n });\n it(\"should not add a DeviceSession if it already exists\", () => {\n sessionService.addDeviceSession(deviceSession);\n sessionService.addDeviceSession(deviceSession);\n expect(sessionService.getDeviceSessions()).toEqual([deviceSession]);\n });\n });\n\n describe(\"DeviceSessionService removeDeviceSession\", () => {\n it(\"should remove the DeviceSession of given ID\", () => {\n sessionService.addDeviceSession(deviceSession);\n sessionService.removeDeviceSession(deviceSession.id);\n expect(sessionService.getDeviceSessions()).toEqual([]);\n });\n it(\"should not remove the DeviceSession of given ID if it does not exist\", () => {\n sessionService.addDeviceSession(deviceSession);\n sessionService.removeDeviceSession(\"non-existent-id\");\n expect(sessionService.getDeviceSessions()).toEqual([deviceSession]);\n });\n });\n\n describe(\"DeviceSessionService getDeviceSessionById\", () => {\n it(\"should get the DeviceSession of given ID if it exists\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(sessionService.getDeviceSessionById(deviceSession.id)).toEqual(\n Either.of(deviceSession),\n );\n });\n it(\"should not get the DeviceSession if it does not exist\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(sessionService.getDeviceSessionById(\"non-existent-id\")).toEqual(\n Left(new DeviceSessionNotFound()),\n );\n });\n });\n\n describe(\"DeviceSessionService getDeviceSessionsByDeviceId\", () => {\n it(\"should not get device sessions by deviceId if none exist\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(\n sessionService.getDeviceSessionsByDeviceId(\"non-existent-device-id\"),\n ).toEqual(Left(new DeviceSessionNotFound()));\n });\n it(\"should get a single device session by deviceId\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(\n sessionService.getDeviceSessionsByDeviceId(\n deviceSession.connectedDevice.id,\n ),\n ).toEqual(Either.of([deviceSession]));\n });\n it(\"should get device sessions by deviceId\", () => {\n sessionService.addDeviceSession(deviceSession);\n deviceSession1 = deviceSessionStubBuilder(\n {\n connectedDevice: connectedDeviceStubBuilder({ id: \"device-1\" }),\n id: \"session-1\",\n },\n () => loggerService,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n\n deviceSession2 = deviceSessionStubBuilder(\n {\n connectedDevice: connectedDeviceStubBuilder({ id: \"device-1\" }),\n id: \"session-2\",\n },\n () => loggerService,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n sessionService.addDeviceSession(deviceSession1);\n sessionService.addDeviceSession(deviceSession2);\n expect(sessionService.getDeviceSessionsByDeviceId(\"device-1\")).toEqual(\n Either.of([deviceSession1, deviceSession2]),\n );\n deviceSession1.close();\n deviceSession2.close();\n });\n });\n\n it(\"should get all sessions\", () => {\n sessionService.addDeviceSession(deviceSession);\n expect(sessionService.getDeviceSessions()).toEqual([deviceSession]);\n });\n\n it(\"should retrieve sessionObs\", () => {\n expect(sessionService.sessionsObs).toBeInstanceOf(\n Observable<DeviceSession>,\n );\n });\n\n it(\"should emit new session\", () =>\n new Promise<void>((resolve, reject) => {\n const subscription = sessionService.sessionsObs.subscribe({\n next(emittedDeviceSession) {\n try {\n expect(emittedDeviceSession).toStrictEqual(deviceSession);\n subscription.unsubscribe();\n resolve();\n } catch (error) {\n reject(error);\n }\n },\n });\n sessionService.addDeviceSession(deviceSession);\n }));\n\n it(\"should emit previous added session\", () => {\n const lastDeviceSession = deviceSessionStubBuilder(\n { id: \"last-session\" },\n () => loggerService,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n const emittedSessions: DeviceSession[] = [];\n sessionService.addDeviceSession(deviceSession);\n sessionService.addDeviceSession(lastDeviceSession);\n\n const subscription = sessionService.sessionsObs.subscribe({\n next(emittedDeviceSession) {\n emittedSessions.push(emittedDeviceSession);\n },\n });\n lastDeviceSession.close();\n expect(emittedSessions).toEqual([deviceSession, lastDeviceSession]);\n subscription.unsubscribe();\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Either", "Left", "Observable", "connectedDeviceStubBuilder", "DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS", "deviceSessionStubBuilder", "DeviceSessionNotFound", "DefaultLoggerPublisherService", "AxiosManagerApiDataSource", "DefaultManagerApiService", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "DefaultDeviceSessionService", "sessionService", "loggerService", "deviceSession", "deviceSession1", "deviceSession2", "managerApiDataSource", "managerApi", "secureChannelDataSource", "secureChannel", "resolve", "reject", "subscription", "emittedDeviceSession", "error", "lastDeviceSession", "emittedSessions"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{finalize as r,Subject as u}from"rxjs";import{SessionEvents as i}from"../../device-session/model/DeviceSessionEventDispatcher";class p{constructor(e,t){this.loggerModuleFactory=e;this.sessionEventDispatcher=t;this._logger=this.loggerModuleFactory("IntentQueueService")}_logger;_queue=[];_isProcessing=!1;_currentSubscription=null;enqueue(e){this._logger.debug("Enqueueing intent",{data:{type:e.type}});const t=new u,s={intent:e,subject:t,isCancelled:!1};this._queue.push(s);const n=()=>{this._logger.debug("Cancelling intent",{data:{type:e.type}}),s.isCancelled=!0,this._queue[0]===s&&this._currentSubscription?(this._currentSubscription.unsubscribe(),this._currentSubscription=null,t.complete(),this._queue.shift(),this._isProcessing=!1,this._processQueue()):(!this._isProcessing||this._queue[0]!==s)&&t.complete()};return this._isProcessing||this._processQueue(),{observable:t.asObservable().pipe(r(()=>{this._logger.debug("Intent observable finalized",{data:{type:e.type}})})),cancel:n}}_processQueue(){if(this._isProcessing)return;if(this._queue.length===0){this.sessionEventDispatcher.dispatch({eventName:i.NEW_STATE});return}this.sessionEventDispatcher.dispatch({eventName:i.DEVICE_STATE_UPDATE_BUSY}),this._isProcessing=!0;const e=this._queue[0];if(e.isCancelled){this._logger.debug("Skipping cancelled intent",{data:{type:e.intent.type}}),e.subject.complete(),this._queue.shift(),this._isProcessing=!1,this._processQueue();return}this._logger.debug("Processing intent",{data:{type:e.intent.type}}),this._currentSubscription=e.intent.execute().subscribe({next:t=>{e.isCancelled||e.subject.next(t)},error:t=>{e.isCancelled||e.subject.error(t),this._onIntentComplete()},complete:()=>{e.isCancelled||e.subject.complete(),this._onIntentComplete()}})}_onIntentComplete(){this._logger.debug("Intent completed"),this._currentSubscription=null,this._queue.shift(),this._isProcessing=!1,this._processQueue()}}export{p as IntentQueueService};
|
|
2
|
+
//# sourceMappingURL=IntentQueueService.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/device-session/service/IntentQueueService.ts"],
|
|
4
|
+
"sourcesContent": ["import { finalize, type Observable, Subject, type Subscription } from \"rxjs\";\n\nimport {\n type DeviceSessionEventDispatcher,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\nimport { type LoggerPublisherService } from \"@root/src\";\n\nexport type IntentType = \"device-action\" | \"send-apdu\" | \"send-command\";\n\nexport type Intent<T> = {\n type: IntentType;\n execute: () => Observable<T>;\n};\n\ntype QueueItem<T> = {\n intent: Intent<T>;\n subject: Subject<T>;\n isCancelled: boolean;\n};\n\n/**\n * Intent Queue Service\n *\n * Manages a sequential queue of intents (device actions, APDUs, commands) that must be\n * executed one at a time. Each intent returns an Observable and a cancel function.\n *\n * @remarks\n * **Queue Processing:**\n * - Intents are processed in FIFO (First-In-First-Out) order\n * - Only one intent executes at a time (sequential processing)\n * - Subsequent intents wait for the current one to complete\n *\n * **Graphical Representation:**\n *\n * Normal Sequential Processing:\n * ```\n * Time \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500>\n *\n * Intent 1: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * Intent 2: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * Intent 3: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n *\n * Queue: [1,2,3] \u2192 [2,3] \u2192 [3] \u2192 []\n * ```\n *\n * Cancelling Currently Executing Intent:\n * ```\n * Time \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500>\n *\n * Intent 1: [\u2588\u2588\u2588\u2588XX]\n * Intent 2: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * Intent 3: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * \u2191 Intent 2 starts immediately\n * Queue: [1,2,3] \u2192 [2,3] \u2192 [3] \u2192 []\n * Cancel 1 \u2191\n * ```\n *\n * Cancelling Queued Intent:\n * ```\n * Time \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500>\n *\n * Intent 1: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * Intent 2: [CANCELLED]\n * Intent 3: [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n * \u2191 Intent 3 starts immediately\n * Queue: [1,2,3] \u2192 [1,3] \u2192 [3] \u2192 []\n * Cancel 2 \u2191\n * ```\n *\n * @example\n * ```typescript\n * const { observable, cancel } = intentQueue.enqueue({\n * type: \"device-action\",\n * execute: () => of(result)\n * });\n *\n * observable.subscribe({\n * next: (value) => console.log(value),\n * complete: () => console.log('Done')\n * });\n *\n * // Cancel if needed\n * cancel();\n * ```\n */\nexport class IntentQueueService {\n private readonly _logger: LoggerPublisherService;\n private readonly _queue: QueueItem<unknown>[] = [];\n private _isProcessing = false;\n private _currentSubscription: Subscription | null = null;\n\n constructor(\n private readonly loggerModuleFactory: (\n tag: string,\n ) => LoggerPublisherService,\n private readonly sessionEventDispatcher: DeviceSessionEventDispatcher,\n ) {\n this._logger = this.loggerModuleFactory(\"IntentQueueService\");\n }\n\n /**\n * Enqueues an intent and returns an observable that will emit the result\n * of the intent execution, along with a cancel function.\n */\n public enqueue<T>(intent: Intent<T>): {\n observable: Observable<T>;\n cancel: () => void;\n } {\n this._logger.debug(\"Enqueueing intent\", { data: { type: intent.type } });\n\n const subject = new Subject<T>();\n const queueItem: QueueItem<T> = {\n intent,\n subject,\n isCancelled: false,\n };\n\n this._queue.push(queueItem as QueueItem<unknown>);\n\n const cancel = () => {\n this._logger.debug(\"Cancelling intent\", { data: { type: intent.type } });\n queueItem.isCancelled = true;\n\n // If this is the currently executing intent, cancel the subscription\n if (this._queue[0] === queueItem && this._currentSubscription) {\n this._currentSubscription.unsubscribe();\n this._currentSubscription = null;\n subject.complete();\n this._queue.shift();\n this._isProcessing = false;\n this._processQueue();\n } else if (!this._isProcessing || this._queue[0] !== queueItem) {\n // If not currently executing, just complete the subject\n subject.complete();\n }\n };\n\n // Start processing if not already processing\n if (!this._isProcessing) {\n this._processQueue();\n }\n\n return {\n observable: subject.asObservable().pipe(\n finalize(() => {\n this._logger.debug(\"Intent observable finalized\", {\n data: { type: intent.type },\n });\n }),\n ),\n cancel,\n };\n }\n\n /**\n * Processes the queue sequentially.\n * Skips cancelled items and continues to the next one.\n */\n private _processQueue(): void {\n // If already processing or queue is empty, do nothing\n if (this._isProcessing) {\n return;\n }\n\n if (this._queue.length === 0) {\n this.sessionEventDispatcher.dispatch({\n eventName: SessionEvents.NEW_STATE,\n });\n return;\n }\n\n this.sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n\n this._isProcessing = true;\n\n // Get the next item from the queue\n const queueItem = this._queue[0] as QueueItem<unknown>;\n\n // Skip cancelled items\n if (queueItem.isCancelled) {\n this._logger.debug(\"Skipping cancelled intent\", {\n data: { type: queueItem.intent.type },\n });\n queueItem.subject.complete();\n this._queue.shift();\n this._isProcessing = false;\n this._processQueue();\n return;\n }\n\n this._logger.debug(\"Processing intent\", {\n data: { type: queueItem.intent.type },\n });\n\n // Execute the intent\n this._currentSubscription = queueItem.intent.execute().subscribe({\n next: (value) => {\n if (!queueItem.isCancelled) {\n queueItem.subject.next(value);\n }\n },\n error: (error) => {\n if (!queueItem.isCancelled) {\n queueItem.subject.error(error);\n }\n this._onIntentComplete();\n },\n complete: () => {\n if (!queueItem.isCancelled) {\n queueItem.subject.complete();\n }\n this._onIntentComplete();\n },\n });\n }\n\n /**\n * Called when an intent completes (either successfully or with error).\n * Removes the completed item from the queue and processes the next one.\n */\n private _onIntentComplete(): void {\n this._logger.debug(\"Intent completed\");\n this._currentSubscription = null;\n this._queue.shift();\n this._isProcessing = false;\n this._processQueue();\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,YAAAA,EAA2B,WAAAC,MAAkC,OAEtE,OAEE,iBAAAC,MACK,8DAiFA,MAAMC,CAAmB,CAM9B,YACmBC,EAGAC,EACjB,CAJiB,yBAAAD,EAGA,4BAAAC,EAEjB,KAAK,QAAU,KAAK,oBAAoB,oBAAoB,CAC9D,CAZiB,QACA,OAA+B,CAAC,EACzC,cAAgB,GAChB,qBAA4C,KAe7C,QAAWC,EAGhB,CACA,KAAK,QAAQ,MAAM,oBAAqB,CAAE,KAAM,CAAE,KAAMA,EAAO,IAAK,CAAE,CAAC,EAEvE,MAAMC,EAAU,IAAIN,EACdO,EAA0B,CAC9B,OAAAF,EACA,QAAAC,EACA,YAAa,EACf,EAEA,KAAK,OAAO,KAAKC,CAA+B,EAEhD,MAAMC,EAAS,IAAM,CACnB,KAAK,QAAQ,MAAM,oBAAqB,CAAE,KAAM,CAAE,KAAMH,EAAO,IAAK,CAAE,CAAC,EACvEE,EAAU,YAAc,GAGpB,KAAK,OAAO,CAAC,IAAMA,GAAa,KAAK,sBACvC,KAAK,qBAAqB,YAAY,EACtC,KAAK,qBAAuB,KAC5BD,EAAQ,SAAS,EACjB,KAAK,OAAO,MAAM,EAClB,KAAK,cAAgB,GACrB,KAAK,cAAc,IACV,CAAC,KAAK,eAAiB,KAAK,OAAO,CAAC,IAAMC,IAEnDD,EAAQ,SAAS,CAErB,EAGA,OAAK,KAAK,eACR,KAAK,cAAc,EAGd,CACL,WAAYA,EAAQ,aAAa,EAAE,KACjCP,EAAS,IAAM,CACb,KAAK,QAAQ,MAAM,8BAA+B,CAChD,KAAM,CAAE,KAAMM,EAAO,IAAK,CAC5B,CAAC,CACH,CAAC,CACH,EACA,OAAAG,CACF,CACF,CAMQ,eAAsB,CAE5B,GAAI,KAAK,cACP,OAGF,GAAI,KAAK,OAAO,SAAW,EAAG,CAC5B,KAAK,uBAAuB,SAAS,CACnC,UAAWP,EAAc,SAC3B,CAAC,EACD,MACF,CAEA,KAAK,uBAAuB,SAAS,CACnC,UAAWA,EAAc,wBAC3B,CAAC,EAED,KAAK,cAAgB,GAGrB,MAAMM,EAAY,KAAK,OAAO,CAAC,EAG/B,GAAIA,EAAU,YAAa,CACzB,KAAK,QAAQ,MAAM,4BAA6B,CAC9C,KAAM,CAAE,KAAMA,EAAU,OAAO,IAAK,CACtC,CAAC,EACDA,EAAU,QAAQ,SAAS,EAC3B,KAAK,OAAO,MAAM,EAClB,KAAK,cAAgB,GACrB,KAAK,cAAc,EACnB,MACF,CAEA,KAAK,QAAQ,MAAM,oBAAqB,CACtC,KAAM,CAAE,KAAMA,EAAU,OAAO,IAAK,CACtC,CAAC,EAGD,KAAK,qBAAuBA,EAAU,OAAO,QAAQ,EAAE,UAAU,CAC/D,KAAOE,GAAU,CACVF,EAAU,aACbA,EAAU,QAAQ,KAAKE,CAAK,CAEhC,EACA,MAAQC,GAAU,CACXH,EAAU,aACbA,EAAU,QAAQ,MAAMG,CAAK,EAE/B,KAAK,kBAAkB,CACzB,EACA,SAAU,IAAM,CACTH,EAAU,aACbA,EAAU,QAAQ,SAAS,EAE7B,KAAK,kBAAkB,CACzB,CACF,CAAC,CACH,CAMQ,mBAA0B,CAChC,KAAK,QAAQ,MAAM,kBAAkB,EACrC,KAAK,qBAAuB,KAC5B,KAAK,OAAO,MAAM,EAClB,KAAK,cAAgB,GACrB,KAAK,cAAc,CACrB,CACF",
|
|
6
|
+
"names": ["finalize", "Subject", "SessionEvents", "IntentQueueService", "loggerModuleFactory", "sessionEventDispatcher", "intent", "subject", "queueItem", "cancel", "value", "error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{of as b,Subject as x,throwError as h}from"rxjs";import{delay as l}from"rxjs/operators";import{DefaultLoggerPublisherService as y}from"../../logger-publisher/service/DefaultLoggerPublisherService";import{IntentQueueService as g}from"./IntentQueueService";let r,w,q;describe("IntentQueueService",()=>{beforeEach(()=>{w=new y([],"intent-queue-service");const e=()=>w;q={listen:()=>b(void 0).pipe(l(1)),dispatch:vi.fn()},r=new g(e,q)}),it("should enqueue an observable and emit each value",async()=>{const e={type:"device-action",execute:()=>b(1,2,3).pipe(l(1))},{observable:o}=r.enqueue(e),c=[];await new Promise(n=>{o.subscribe({next:s=>c.push(s),complete:()=>n()})}),expect(c).toEqual([1,2,3])}),it("should enqueue two observables and emit each value sequentially",async()=>{const e={type:"device-action",execute:()=>b("a","b").pipe(l(10))},o={type:"send-apdu",execute:()=>b("c","d")},{observable:c}=r.enqueue(e),{observable:u}=r.enqueue(o),n=[];await Promise.all([new Promise(s=>{c.subscribe({next:t=>n.push(t),complete:()=>s()})}),new Promise(s=>{u.subscribe({next:t=>n.push(t),complete:()=>s()})})]),expect(n).toEqual(["a","b","c","d"])}),it("should enqueue an observable and cancel it",async()=>{const e=new x,o={type:"device-action",execute:()=>e.asObservable()},{observable:c,cancel:u}=r.enqueue(o),n=[];let s=!1;c.subscribe({next:t=>n.push(t),complete:()=>{s=!0}}),e.next(1),e.next(2),u(),await new Promise(t=>setTimeout(t,10)),expect(n).toEqual([1,2]),expect(s).toBe(!0)}),it("should enqueue two observables and cancel the first one",async()=>{const e=new x,o={type:"device-action",execute:()=>e.asObservable()},c={type:"send-apdu",execute:()=>b("x","y").pipe(l(1))},{observable:u,cancel:n}=r.enqueue(o),{observable:s}=r.enqueue(c),t=[];let p=!1;u.subscribe({next:i=>t.push(i),complete:()=>{p=!0}});const a=new Promise(i=>{s.subscribe({next:m=>t.push(m),complete:()=>i()})});e.next("a"),e.next("b"),expect(t).toEqual(["a","b"]),n(),await new Promise(i=>setTimeout(i,10)),expect(p).toBe(!0),await a,expect(t).toEqual(["a","b","x","y"])}),it("should enqueue two observables and cancel the second one",async()=>{const e=[],o={type:"device-action",execute:()=>b("a","b").pipe(l(10))},c={type:"send-apdu",execute:()=>b("x","y").pipe(l(10))},{observable:u}=r.enqueue(o),{observable:n,cancel:s}=r.enqueue(c),t=new Promise(a=>{u.subscribe({next:i=>e.push(i),complete:()=>a()})});let p=!1;n.subscribe({next:a=>e.push(a),complete:()=>{p=!0}}),s(),await t,await new Promise(a=>setTimeout(a,20)),expect(e).toEqual(["a","b"]),expect(p).toBe(!0)}),it("should enqueue three observables and cancel the second one",async()=>{const e=[],o={type:"device-action",execute:()=>b("a","b").pipe(l(10))},c={type:"send-apdu",execute:()=>b("x","y").pipe(l(10))},u={type:"send-command",execute:()=>b("1","2").pipe(l(10))},{observable:n}=r.enqueue(o),{observable:s,cancel:t}=r.enqueue(c),{observable:p}=r.enqueue(u),a=new Promise(d=>{n.subscribe({next:v=>e.push(v),complete:()=>d()})});let i=!1;s.subscribe({next:d=>e.push(d),complete:()=>{i=!0}});const m=new Promise(d=>{p.subscribe({next:v=>e.push(v),complete:()=>d()})});t(),await a,expect(e).toEqual(["a","b"]),await m,expect(i).toBe(!0),expect(e).toEqual(["a","b","1","2"])}),it("should handle errors in intent execution",async()=>{const e=new Error("Test error"),o={type:"device-action",execute:()=>h(()=>e)},{observable:c}=r.enqueue(o);await expect(new Promise((u,n)=>{c.subscribe({error:s=>n(s)})})).rejects.toThrow("Test error")}),it("should continue processing queue after error",async()=>{const e=[],o=new Error("Test error"),c={type:"device-action",execute:()=>h(()=>o).pipe(l(10))},u={type:"send-apdu",execute:()=>b("success").pipe(l(10))},{observable:n}=r.enqueue(c),{observable:s}=r.enqueue(u);let t=!1;const p=new Promise(i=>{n.subscribe({next:m=>e.push(String(m)),error:m=>{expect(m).toEqual(o),t=!0,i()}})}),a=new Promise(i=>{s.subscribe({next:m=>e.push(m),complete:()=>i()})});await p,await a,expect(t).toBe(!0),expect(e).toEqual(["success"])})});
|
|
2
|
+
//# sourceMappingURL=IntentQueueService.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/device-session/service/IntentQueueService.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { of, Subject, throwError } from \"rxjs\";\nimport { delay } from \"rxjs/operators\";\n\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DeviceSessionEventDispatcher } from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\n\nimport { type Intent, IntentQueueService } from \"./IntentQueueService\";\n\nlet service: IntentQueueService;\nlet logger: LoggerPublisherService;\nlet mockSessionEventDispatcher: DeviceSessionEventDispatcher;\n\ndescribe(\"IntentQueueService\", () => {\n beforeEach(() => {\n logger = new DefaultLoggerPublisherService([], \"intent-queue-service\");\n const loggerFactory = () => logger;\n mockSessionEventDispatcher = {\n listen: () => of(undefined).pipe(delay(1)),\n dispatch: vi.fn(),\n } as unknown as DeviceSessionEventDispatcher;\n service = new IntentQueueService(loggerFactory, mockSessionEventDispatcher);\n });\n\n it(\"should enqueue an observable and emit each value\", async () => {\n // Arrange\n const intent: Intent<number> = {\n type: \"device-action\",\n execute: () => of(1, 2, 3).pipe(delay(1)), // Make it async\n };\n\n // Act\n const { observable } = service.enqueue(intent);\n const results: number[] = [];\n const promise = new Promise<void>((resolve) => {\n observable.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n // Wait for completion\n await promise;\n\n // Assert\n expect(results).toEqual([1, 2, 3]);\n });\n\n it(\"should enqueue two observables and emit each value sequentially\", async () => {\n // Arrange\n const intent1: Intent<string> = {\n type: \"device-action\",\n execute: () => of(\"a\", \"b\").pipe(delay(10)),\n };\n\n const intent2: Intent<string> = {\n type: \"send-apdu\",\n execute: () => of(\"c\", \"d\"),\n };\n\n // Act\n const { observable: obs1 } = service.enqueue(intent1);\n const { observable: obs2 } = service.enqueue(intent2);\n\n const results: string[] = [];\n\n await Promise.all([\n new Promise<void>((resolve) => {\n obs1.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n }),\n new Promise<void>((resolve) => {\n obs2.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n }),\n ]);\n\n // Assert\n expect(results).toEqual([\"a\", \"b\", \"c\", \"d\"]);\n });\n\n it(\"should enqueue an observable and cancel it\", async () => {\n // Arrange\n const subject = new Subject<number>();\n const intent: Intent<number> = {\n type: \"device-action\",\n execute: () => subject.asObservable(),\n };\n\n // Act\n const { observable, cancel } = service.enqueue(intent);\n const results: number[] = [];\n let completed = false;\n\n observable.subscribe({\n next: (value) => results.push(value),\n complete: () => {\n completed = true;\n },\n });\n\n // Emit some values\n subject.next(1);\n subject.next(2);\n\n // Cancel the intent\n cancel();\n\n // Wait a bit to ensure cancellation is processed\n await new Promise((resolve) => setTimeout(resolve, 10));\n\n // Assert\n expect(results).toEqual([1, 2]);\n expect(completed).toBe(true);\n });\n\n it(\"should enqueue two observables and cancel the first one\", async () => {\n // Arrange\n const subject1 = new Subject<string>();\n const intent1: Intent<string> = {\n type: \"device-action\",\n execute: () => subject1.asObservable(),\n };\n\n const intent2: Intent<string> = {\n type: \"send-apdu\",\n execute: () => of(\"x\", \"y\").pipe(delay(1)), // Make it async\n };\n\n // Act\n const { observable: obs1, cancel: cancel1 } = service.enqueue(intent1);\n const { observable: obs2 } = service.enqueue(intent2);\n\n const results: string[] = [];\n let completed1 = false;\n\n obs1.subscribe({\n next: (value) => results.push(value),\n complete: () => {\n completed1 = true;\n },\n });\n\n const Promise2 = new Promise<void>((resolve) => {\n obs2.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n // Emit some values from first intent\n subject1.next(\"a\");\n subject1.next(\"b\");\n\n expect(results).toEqual([\"a\", \"b\"]);\n\n // Cancel the first intent\n cancel1();\n\n // Wait a bit for cancellation to process and queue to continue\n await new Promise((resolve) => setTimeout(resolve, 10));\n expect(completed1).toBe(true);\n\n // Wait for second to complete\n await Promise2;\n expect(results).toEqual([\"a\", \"b\", \"x\", \"y\"]);\n });\n\n it(\"should enqueue two observables and cancel the second one\", async () => {\n // Arrange\n const results: string[] = [];\n const intent1: Intent<string> = {\n type: \"device-action\",\n execute: () => of(\"a\", \"b\").pipe(delay(10)),\n };\n\n const intent2: Intent<string> = {\n type: \"send-apdu\",\n execute: () => of(\"x\", \"y\").pipe(delay(10)),\n };\n\n // Act\n const { observable: obs1 } = service.enqueue(intent1);\n const { observable: obs2, cancel: cancel2 } = service.enqueue(intent2);\n\n const results1Promise = new Promise<void>((resolve) => {\n obs1.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n let completed2 = false;\n\n obs2.subscribe({\n next: (value) => results.push(value),\n complete: () => {\n completed2 = true;\n },\n });\n\n // Cancel the second intent before first completes\n cancel2();\n\n // Wait for first to complete\n await results1Promise;\n\n // Wait a bit for cancellation to be processed\n await new Promise((resolve) => setTimeout(resolve, 20));\n\n // Assert\n expect(results).toEqual([\"a\", \"b\"]);\n expect(completed2).toBe(true);\n });\n\n it(\"should enqueue three observables and cancel the second one\", async () => {\n // Arrange\n const results: string[] = [];\n const intent1: Intent<string> = {\n type: \"device-action\",\n execute: () => of(\"a\", \"b\").pipe(delay(10)),\n };\n\n const intent2: Intent<string> = {\n type: \"send-apdu\",\n execute: () => of(\"x\", \"y\").pipe(delay(10)),\n };\n\n const intent3: Intent<string> = {\n type: \"send-command\",\n execute: () => of(\"1\", \"2\").pipe(delay(10)),\n };\n\n // Act\n const { observable: obs1 } = service.enqueue(intent1);\n const { observable: obs2, cancel: cancel2 } = service.enqueue(intent2);\n const { observable: obs3 } = service.enqueue(intent3);\n\n const results1Promise = new Promise<void>((resolve) => {\n obs1.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n let completed2 = false;\n\n obs2.subscribe({\n next: (value) => results.push(value),\n complete: () => {\n completed2 = true;\n },\n });\n\n const results3Promise = new Promise<void>((resolve) => {\n obs3.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n // Cancel the second intent before first completes\n cancel2();\n\n // Wait for first and third to complete\n await results1Promise;\n expect(results).toEqual([\"a\", \"b\"]);\n await results3Promise;\n expect(completed2).toBe(true);\n expect(results).toEqual([\"a\", \"b\", \"1\", \"2\"]);\n });\n\n it(\"should handle errors in intent execution\", async () => {\n // Arrange\n const error = new Error(\"Test error\");\n const intent: Intent<number> = {\n type: \"device-action\",\n execute: () => throwError(() => error),\n };\n\n // Act\n const { observable } = service.enqueue(intent);\n\n // Assert\n await expect(\n new Promise((_, reject) => {\n observable.subscribe({\n error: (err) => reject(err),\n });\n }),\n ).rejects.toThrow(\"Test error\");\n });\n\n it(\"should continue processing queue after error\", async () => {\n // Arrange\n const results: string[] = [];\n const error = new Error(\"Test error\");\n const intent1: Intent<number> = {\n type: \"device-action\",\n execute: () => throwError(() => error).pipe(delay(10)),\n };\n\n const intent2: Intent<string> = {\n type: \"send-apdu\",\n execute: () => of(\"success\").pipe(delay(10)),\n };\n\n // Act\n const { observable: obs1 } = service.enqueue(intent1);\n const { observable: obs2 } = service.enqueue(intent2);\n\n let error1Caught = false;\n\n // Subscribe to both immediately\n const promise1 = new Promise<void>((resolve) => {\n obs1.subscribe({\n next: (value) => results.push(String(value)),\n error: (err) => {\n expect(err).toEqual(error);\n error1Caught = true;\n resolve();\n },\n });\n });\n\n const promise2 = new Promise<void>((resolve) => {\n obs2.subscribe({\n next: (value) => results.push(value),\n complete: () => resolve(),\n });\n });\n\n // Wait for both to complete\n await promise1;\n await promise2;\n\n // Assert\n expect(error1Caught).toBe(true);\n expect(results).toEqual([\"success\"]);\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,MAAAA,EAAI,WAAAC,EAAS,cAAAC,MAAkB,OACxC,OAAS,SAAAC,MAAa,iBAItB,OAAS,iCAAAC,MAAqC,mEAE9C,OAAsB,sBAAAC,MAA0B,uBAEhD,IAAIC,EACAC,EACAC,EAEJ,SAAS,qBAAsB,IAAM,CACnC,WAAW,IAAM,CACfD,EAAS,IAAIH,EAA8B,CAAC,EAAG,sBAAsB,EACrE,MAAMK,EAAgB,IAAMF,EAC5BC,EAA6B,CAC3B,OAAQ,IAAMR,EAAG,MAAS,EAAE,KAAKG,EAAM,CAAC,CAAC,EACzC,SAAU,GAAG,GAAG,CAClB,EACAG,EAAU,IAAID,EAAmBI,EAAeD,CAA0B,CAC5E,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjE,MAAME,EAAyB,CAC7B,KAAM,gBACN,QAAS,IAAMV,EAAG,EAAG,EAAG,CAAC,EAAE,KAAKG,EAAM,CAAC,CAAC,CAC1C,EAGM,CAAE,WAAAQ,CAAW,EAAIL,EAAQ,QAAQI,CAAM,EACvCE,EAAoB,CAAC,EAS3B,MARgB,IAAI,QAAeC,GAAY,CAC7CF,EAAW,UAAU,CACnB,KAAOG,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAMD,OAAOD,CAAO,EAAE,QAAQ,CAAC,EAAG,EAAG,CAAC,CAAC,CACnC,CAAC,EAED,GAAG,kEAAmE,SAAY,CAEhF,MAAMG,EAA0B,CAC9B,KAAM,gBACN,QAAS,IAAMf,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAEMa,EAA0B,CAC9B,KAAM,YACN,QAAS,IAAMhB,EAAG,IAAK,GAAG,CAC5B,EAGM,CAAE,WAAYiB,CAAK,EAAIX,EAAQ,QAAQS,CAAO,EAC9C,CAAE,WAAYG,CAAK,EAAIZ,EAAQ,QAAQU,CAAO,EAE9CJ,EAAoB,CAAC,EAE3B,MAAM,QAAQ,IAAI,CAChB,IAAI,QAAeC,GAAY,CAC7BI,EAAK,UAAU,CACb,KAAOH,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EACD,IAAI,QAAeA,GAAY,CAC7BK,EAAK,UAAU,CACb,KAAOJ,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,CACH,CAAC,EAGD,OAAOD,CAAO,EAAE,QAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,CAC9C,CAAC,EAED,GAAG,6CAA8C,SAAY,CAE3D,MAAMO,EAAU,IAAIlB,EACdS,EAAyB,CAC7B,KAAM,gBACN,QAAS,IAAMS,EAAQ,aAAa,CACtC,EAGM,CAAE,WAAAR,EAAY,OAAAS,CAAO,EAAId,EAAQ,QAAQI,CAAM,EAC/CE,EAAoB,CAAC,EAC3B,IAAIS,EAAY,GAEhBV,EAAW,UAAU,CACnB,KAAOG,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAM,CACdO,EAAY,EACd,CACF,CAAC,EAGDF,EAAQ,KAAK,CAAC,EACdA,EAAQ,KAAK,CAAC,EAGdC,EAAO,EAGP,MAAM,IAAI,QAASP,GAAY,WAAWA,EAAS,EAAE,CAAC,EAGtD,OAAOD,CAAO,EAAE,QAAQ,CAAC,EAAG,CAAC,CAAC,EAC9B,OAAOS,CAAS,EAAE,KAAK,EAAI,CAC7B,CAAC,EAED,GAAG,0DAA2D,SAAY,CAExE,MAAMC,EAAW,IAAIrB,EACfc,EAA0B,CAC9B,KAAM,gBACN,QAAS,IAAMO,EAAS,aAAa,CACvC,EAEMN,EAA0B,CAC9B,KAAM,YACN,QAAS,IAAMhB,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,CAAC,CAAC,CAC3C,EAGM,CAAE,WAAYc,EAAM,OAAQM,CAAQ,EAAIjB,EAAQ,QAAQS,CAAO,EAC/D,CAAE,WAAYG,CAAK,EAAIZ,EAAQ,QAAQU,CAAO,EAE9CJ,EAAoB,CAAC,EAC3B,IAAIY,EAAa,GAEjBP,EAAK,UAAU,CACb,KAAOH,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAM,CACdU,EAAa,EACf,CACF,CAAC,EAED,MAAMC,EAAW,IAAI,QAAeZ,GAAY,CAC9CK,EAAK,UAAU,CACb,KAAOJ,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAGDS,EAAS,KAAK,GAAG,EACjBA,EAAS,KAAK,GAAG,EAEjB,OAAOV,CAAO,EAAE,QAAQ,CAAC,IAAK,GAAG,CAAC,EAGlCW,EAAQ,EAGR,MAAM,IAAI,QAASV,GAAY,WAAWA,EAAS,EAAE,CAAC,EACtD,OAAOW,CAAU,EAAE,KAAK,EAAI,EAG5B,MAAMC,EACN,OAAOb,CAAO,EAAE,QAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,CAC9C,CAAC,EAED,GAAG,2DAA4D,SAAY,CAEzE,MAAMA,EAAoB,CAAC,EACrBG,EAA0B,CAC9B,KAAM,gBACN,QAAS,IAAMf,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAEMa,EAA0B,CAC9B,KAAM,YACN,QAAS,IAAMhB,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAGM,CAAE,WAAYc,CAAK,EAAIX,EAAQ,QAAQS,CAAO,EAC9C,CAAE,WAAYG,EAAM,OAAQQ,CAAQ,EAAIpB,EAAQ,QAAQU,CAAO,EAE/DW,EAAkB,IAAI,QAAed,GAAY,CACrDI,EAAK,UAAU,CACb,KAAOH,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAED,IAAIe,EAAa,GAEjBV,EAAK,UAAU,CACb,KAAOJ,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAM,CACdc,EAAa,EACf,CACF,CAAC,EAGDF,EAAQ,EAGR,MAAMC,EAGN,MAAM,IAAI,QAASd,GAAY,WAAWA,EAAS,EAAE,CAAC,EAGtD,OAAOD,CAAO,EAAE,QAAQ,CAAC,IAAK,GAAG,CAAC,EAClC,OAAOgB,CAAU,EAAE,KAAK,EAAI,CAC9B,CAAC,EAED,GAAG,6DAA8D,SAAY,CAE3E,MAAMhB,EAAoB,CAAC,EACrBG,EAA0B,CAC9B,KAAM,gBACN,QAAS,IAAMf,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAEMa,EAA0B,CAC9B,KAAM,YACN,QAAS,IAAMhB,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAEM0B,EAA0B,CAC9B,KAAM,eACN,QAAS,IAAM7B,EAAG,IAAK,GAAG,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC5C,EAGM,CAAE,WAAYc,CAAK,EAAIX,EAAQ,QAAQS,CAAO,EAC9C,CAAE,WAAYG,EAAM,OAAQQ,CAAQ,EAAIpB,EAAQ,QAAQU,CAAO,EAC/D,CAAE,WAAYc,CAAK,EAAIxB,EAAQ,QAAQuB,CAAO,EAE9CF,EAAkB,IAAI,QAAed,GAAY,CACrDI,EAAK,UAAU,CACb,KAAOH,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAED,IAAIe,EAAa,GAEjBV,EAAK,UAAU,CACb,KAAOJ,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAM,CACdc,EAAa,EACf,CACF,CAAC,EAED,MAAMG,EAAkB,IAAI,QAAelB,GAAY,CACrDiB,EAAK,UAAU,CACb,KAAOhB,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAGDa,EAAQ,EAGR,MAAMC,EACN,OAAOf,CAAO,EAAE,QAAQ,CAAC,IAAK,GAAG,CAAC,EAClC,MAAMmB,EACN,OAAOH,CAAU,EAAE,KAAK,EAAI,EAC5B,OAAOhB,CAAO,EAAE,QAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,CAC9C,CAAC,EAED,GAAG,2CAA4C,SAAY,CAEzD,MAAMoB,EAAQ,IAAI,MAAM,YAAY,EAC9BtB,EAAyB,CAC7B,KAAM,gBACN,QAAS,IAAMR,EAAW,IAAM8B,CAAK,CACvC,EAGM,CAAE,WAAArB,CAAW,EAAIL,EAAQ,QAAQI,CAAM,EAG7C,MAAM,OACJ,IAAI,QAAQ,CAACuB,EAAGC,IAAW,CACzBvB,EAAW,UAAU,CACnB,MAAQwB,GAAQD,EAAOC,CAAG,CAC5B,CAAC,CACH,CAAC,CACH,EAAE,QAAQ,QAAQ,YAAY,CAChC,CAAC,EAED,GAAG,+CAAgD,SAAY,CAE7D,MAAMvB,EAAoB,CAAC,EACrBoB,EAAQ,IAAI,MAAM,YAAY,EAC9BjB,EAA0B,CAC9B,KAAM,gBACN,QAAS,IAAMb,EAAW,IAAM8B,CAAK,EAAE,KAAK7B,EAAM,EAAE,CAAC,CACvD,EAEMa,EAA0B,CAC9B,KAAM,YACN,QAAS,IAAMhB,EAAG,SAAS,EAAE,KAAKG,EAAM,EAAE,CAAC,CAC7C,EAGM,CAAE,WAAYc,CAAK,EAAIX,EAAQ,QAAQS,CAAO,EAC9C,CAAE,WAAYG,CAAK,EAAIZ,EAAQ,QAAQU,CAAO,EAEpD,IAAIoB,EAAe,GAGnB,MAAMC,EAAW,IAAI,QAAexB,GAAY,CAC9CI,EAAK,UAAU,CACb,KAAOH,GAAUF,EAAQ,KAAK,OAAOE,CAAK,CAAC,EAC3C,MAAQqB,GAAQ,CACd,OAAOA,CAAG,EAAE,QAAQH,CAAK,EACzBI,EAAe,GACfvB,EAAQ,CACV,CACF,CAAC,CACH,CAAC,EAEKyB,EAAW,IAAI,QAAezB,GAAY,CAC9CK,EAAK,UAAU,CACb,KAAOJ,GAAUF,EAAQ,KAAKE,CAAK,EACnC,SAAU,IAAMD,EAAQ,CAC1B,CAAC,CACH,CAAC,EAGD,MAAMwB,EACN,MAAMC,EAGN,OAAOF,CAAY,EAAE,KAAK,EAAI,EAC9B,OAAOxB,CAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CACrC,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["of", "Subject", "throwError", "delay", "DefaultLoggerPublisherService", "IntentQueueService", "service", "logger", "mockSessionEventDispatcher", "loggerFactory", "intent", "observable", "results", "resolve", "value", "intent1", "intent2", "obs1", "obs2", "subject", "cancel", "completed", "subject1", "cancel1", "completed1", "Promise2", "cancel2", "results1Promise", "completed2", "intent3", "obs3", "results3Promise", "error", "_", "reject", "err", "error1Caught", "promise1", "promise2"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var v=(o,i,r,s)=>{for(var e=s>1?void 0:s?p(i,r):i,n=o.length-1,c;n>=0;n--)(c=o[n])&&(e=(s?c(i,r,e):c(e))||e);return s&&e&&a(i,r,e),e},g=(o,i)=>(r,s)=>i(r,s,o);import{inject as S,injectable as l}from"inversify";import{deviceSessionTypes as m}from"../../device-session/di/deviceSessionTypes";import{loggerTypes as y}from"../../logger-publisher/di/loggerTypes";let t=class{_sessionService;_logger;constructor(i,r){this._sessionService=i,this._logger=r("UnsafeBypassIntentQueueUseCase")}execute({sessionId:i,bypass:r}){this._sessionService.getDeviceSessionById(i).caseOf({Left:e=>{throw this._logger.error("Error getting session",{data:{error:e}}),e},Right:e=>{this._logger.warn(`UNSAFE: ${r?"Enabling":"Disabling"} intent queue bypass for session ${i}`),e._unsafeBypassIntentQueue(r)}})}};t=v([l(),g(0,S(m.DeviceSessionService)),g(1,S(y.LoggerPublisherServiceFactory))],t);export{t as UnsafeBypassIntentQueueUseCase};
|
|
2
|
+
//# sourceMappingURL=UnsafeBypassIntentQueueUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\nexport type UnsafeBypassIntentQueueUseCaseArgs = {\n sessionId: DeviceSessionId;\n bypass: boolean;\n};\n\n/**\n * UNSAFE: Bypasses the intent queue for a device session.\n * This allows intents to execute directly without being queued.\n * Use with caution as this can lead to race conditions.\n */\n@injectable()\nexport class UnsafeBypassIntentQueueUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"UnsafeBypassIntentQueueUseCase\");\n }\n\n execute({ sessionId, bypass }: UnsafeBypassIntentQueueUseCaseArgs): void {\n const errorOrDeviceSession =\n this._sessionService.getDeviceSessionById(sessionId);\n\n errorOrDeviceSession.caseOf({\n Left: (error) => {\n this._logger.error(\"Error getting session\", { data: { error } });\n throw error;\n },\n Right: (deviceSession) => {\n this._logger.warn(\n `UNSAFE: ${bypass ? \"Enabling\" : \"Disabling\"} intent queue bypass for session ${sessionId}`,\n );\n deviceSession._unsafeBypassIntentQueue(bypass);\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,sBAAAC,MAA0B,iDAEnC,OAAS,eAAAC,MAAmB,4CAarB,IAAMC,EAAN,KAAqC,CACzB,gBACA,QAEjB,YAEEC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,QAAUC,EAAc,gCAAgC,CAC/D,CAEA,QAAQ,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAA6C,CAErE,KAAK,gBAAgB,qBAAqBD,CAAS,EAEhC,OAAO,CAC1B,KAAOE,GAAU,CACf,WAAK,QAAQ,MAAM,wBAAyB,CAAE,KAAM,CAAE,MAAAA,CAAM,CAAE,CAAC,EACzDA,CACR,EACA,MAAQC,GAAkB,CACxB,KAAK,QAAQ,KACX,WAAWF,EAAS,WAAa,WAAW,oCAAoCD,CAAS,EAC3F,EACAG,EAAc,yBAAyBF,CAAM,CAC/C,CACF,CAAC,CACH,CACF,EA/BaJ,EAANO,EAAA,CADNC,EAAW,EAMPC,EAAA,EAAAC,EAAOC,EAAmB,oBAAoB,GAE9CF,EAAA,EAAAC,EAAOE,EAAY,6BAA6B,IAPxCZ",
|
|
6
|
+
"names": ["inject", "injectable", "deviceSessionTypes", "loggerTypes", "UnsafeBypassIntentQueueUseCase", "sessionService", "loggerFactory", "sessionId", "bypass", "error", "deviceSession", "__decorateClass", "injectable", "__decorateParam", "inject", "deviceSessionTypes", "loggerTypes"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ContainerModule as i}from"inversify";import{ConnectUseCase as C}from"../../discovery/use-case/ConnectUseCase";import{DisconnectUseCase as c}from"../../discovery/use-case/DisconnectUseCase";import{GetConnectedDeviceUseCase as r}from"../../discovery/use-case/GetConnectedDeviceUseCase";import{ListConnectedDevicesUseCase as n}from"../../discovery/use-case/ListConnectedDevicesUseCase";import{ListenToAvailableDevicesUseCase as U}from"../../discovery/use-case/ListenToAvailableDevicesUseCase";import{ListenToConnectedDeviceUseCase as
|
|
1
|
+
import{ContainerModule as i}from"inversify";import{ConnectUseCase as C}from"../../discovery/use-case/ConnectUseCase";import{DisconnectUseCase as c}from"../../discovery/use-case/DisconnectUseCase";import{GetConnectedDeviceUseCase as r}from"../../discovery/use-case/GetConnectedDeviceUseCase";import{ListConnectedDevicesUseCase as n}from"../../discovery/use-case/ListConnectedDevicesUseCase";import{ListenToAvailableDevicesUseCase as U}from"../../discovery/use-case/ListenToAvailableDevicesUseCase";import{ListenToConnectedDeviceUseCase as m}from"../../discovery/use-case/ListenToConnectedDeviceUseCase";import{ReconnectUseCase as v}from"../../discovery/use-case/ReconnectUseCase";import{StartDiscoveringUseCase as D}from"../../discovery/use-case/StartDiscoveringUseCase";import{StopDiscoveringUseCase as p}from"../../discovery/use-case/StopDiscoveringUseCase";import{StubUseCase as t}from"../../../../src/di.stub";import{discoveryTypes as e}from"./discoveryTypes";const w=({stub:a=!1})=>new i(({bind:o,rebindSync:s})=>{o(e.ConnectUseCase).to(C),o(e.DisconnectUseCase).to(c),o(e.ReconnectUseCase).to(v),o(e.StartDiscoveringUseCase).to(D),o(e.StopDiscoveringUseCase).to(p),o(e.GetConnectedDeviceUseCase).to(r),o(e.ListenToAvailableDevicesUseCase).to(U),o(e.ListenToConnectedDeviceUseCase).to(m),o(e.ListConnectedDevicesUseCase).to(n),a&&(s(e.ConnectUseCase).to(t),s(e.DisconnectUseCase).to(t),s(e.StartDiscoveringUseCase).to(t),s(e.StopDiscoveringUseCase).to(t),s(e.GetConnectedDeviceUseCase).to(t),s(e.ListenToAvailableDevicesUseCase).to(t),s(e.ListenToConnectedDeviceUseCase).to(t),s(e.ListConnectedDevicesUseCase).to(t))});export{w as discoveryModuleFactory};
|
|
2
2
|
//# sourceMappingURL=discoveryModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/discovery/di/discoveryModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const discoveryModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule(({ bind, rebindSync }) => {\n bind(discoveryTypes.ConnectUseCase).to(ConnectUseCase);\n bind(discoveryTypes.DisconnectUseCase).to(DisconnectUseCase);\n bind(discoveryTypes.StartDiscoveringUseCase).to(StartDiscoveringUseCase);\n bind(discoveryTypes.StopDiscoveringUseCase).to(StopDiscoveringUseCase);\n bind(discoveryTypes.GetConnectedDeviceUseCase).to(\n GetConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListenToAvailableDevicesUseCase).to(\n ListenToAvailableDevicesUseCase,\n );\n bind(discoveryTypes.ListenToConnectedDeviceUseCase).to(\n ListenToConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListConnectedDevicesUseCase).to(\n ListConnectedDevicesUseCase,\n );\n\n if (stub) {\n rebindSync(discoveryTypes.ConnectUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.DisconnectUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.StartDiscoveringUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.StopDiscoveringUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.GetConnectedDeviceUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.ListenToAvailableDevicesUseCase).to(\n StubUseCase,\n );\n rebindSync(discoveryTypes.ListenToConnectedDeviceUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.ListConnectedDevicesUseCase).to(StubUseCase);\n }\n });\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,8CAC/B,OAAS,qBAAAC,MAAyB,iDAClC,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,+BAAAC,MAAmC,2DAC5C,OAAS,mCAAAC,MAAuC,+DAChD,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,0BAAAC,MAA8B,sDACvC,OAAS,eAAAC,MAAmB,oBAE5B,OAAS,kBAAAC,MAAsB,mBAMxB,MAAMC,EAAyB,CAAC,CAAE,KAAAC,EAAO,EAAM,IACpD,
|
|
6
|
-
"names": ["ContainerModule", "ConnectUseCase", "DisconnectUseCase", "GetConnectedDeviceUseCase", "ListConnectedDevicesUseCase", "ListenToAvailableDevicesUseCase", "ListenToConnectedDeviceUseCase", "StartDiscoveringUseCase", "StopDiscoveringUseCase", "StubUseCase", "discoveryTypes", "discoveryModuleFactory", "stub", "bind", "rebindSync"]
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport { ReconnectUseCase } from \"@internal/discovery/use-case/ReconnectUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const discoveryModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule(({ bind, rebindSync }) => {\n bind(discoveryTypes.ConnectUseCase).to(ConnectUseCase);\n bind(discoveryTypes.DisconnectUseCase).to(DisconnectUseCase);\n bind(discoveryTypes.ReconnectUseCase).to(ReconnectUseCase);\n bind(discoveryTypes.StartDiscoveringUseCase).to(StartDiscoveringUseCase);\n bind(discoveryTypes.StopDiscoveringUseCase).to(StopDiscoveringUseCase);\n bind(discoveryTypes.GetConnectedDeviceUseCase).to(\n GetConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListenToAvailableDevicesUseCase).to(\n ListenToAvailableDevicesUseCase,\n );\n bind(discoveryTypes.ListenToConnectedDeviceUseCase).to(\n ListenToConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListConnectedDevicesUseCase).to(\n ListConnectedDevicesUseCase,\n );\n\n if (stub) {\n rebindSync(discoveryTypes.ConnectUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.DisconnectUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.StartDiscoveringUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.StopDiscoveringUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.GetConnectedDeviceUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.ListenToAvailableDevicesUseCase).to(\n StubUseCase,\n );\n rebindSync(discoveryTypes.ListenToConnectedDeviceUseCase).to(StubUseCase);\n rebindSync(discoveryTypes.ListConnectedDevicesUseCase).to(StubUseCase);\n }\n });\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,8CAC/B,OAAS,qBAAAC,MAAyB,iDAClC,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,+BAAAC,MAAmC,2DAC5C,OAAS,mCAAAC,MAAuC,+DAChD,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,oBAAAC,MAAwB,gDACjC,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,0BAAAC,MAA8B,sDACvC,OAAS,eAAAC,MAAmB,oBAE5B,OAAS,kBAAAC,MAAsB,mBAMxB,MAAMC,EAAyB,CAAC,CAAE,KAAAC,EAAO,EAAM,IACpD,IAAIb,EAAgB,CAAC,CAAE,KAAAc,EAAM,WAAAC,CAAW,IAAM,CAC5CD,EAAKH,EAAe,cAAc,EAAE,GAAGV,CAAc,EACrDa,EAAKH,EAAe,iBAAiB,EAAE,GAAGT,CAAiB,EAC3DY,EAAKH,EAAe,gBAAgB,EAAE,GAAGJ,CAAgB,EACzDO,EAAKH,EAAe,uBAAuB,EAAE,GAAGH,CAAuB,EACvEM,EAAKH,EAAe,sBAAsB,EAAE,GAAGF,CAAsB,EACrEK,EAAKH,EAAe,yBAAyB,EAAE,GAC7CR,CACF,EACAW,EAAKH,EAAe,+BAA+B,EAAE,GACnDN,CACF,EACAS,EAAKH,EAAe,8BAA8B,EAAE,GAClDL,CACF,EACAQ,EAAKH,EAAe,2BAA2B,EAAE,GAC/CP,CACF,EAEIS,IACFE,EAAWJ,EAAe,cAAc,EAAE,GAAGD,CAAW,EACxDK,EAAWJ,EAAe,iBAAiB,EAAE,GAAGD,CAAW,EAC3DK,EAAWJ,EAAe,uBAAuB,EAAE,GAAGD,CAAW,EACjEK,EAAWJ,EAAe,sBAAsB,EAAE,GAAGD,CAAW,EAChEK,EAAWJ,EAAe,yBAAyB,EAAE,GAAGD,CAAW,EACnEK,EAAWJ,EAAe,+BAA+B,EAAE,GACzDD,CACF,EACAK,EAAWJ,EAAe,8BAA8B,EAAE,GAAGD,CAAW,EACxEK,EAAWJ,EAAe,2BAA2B,EAAE,GAAGD,CAAW,EAEzE,CAAC",
|
|
6
|
+
"names": ["ContainerModule", "ConnectUseCase", "DisconnectUseCase", "GetConnectedDeviceUseCase", "ListConnectedDevicesUseCase", "ListenToAvailableDevicesUseCase", "ListenToConnectedDeviceUseCase", "ReconnectUseCase", "StartDiscoveringUseCase", "StopDiscoveringUseCase", "StubUseCase", "discoveryTypes", "discoveryModuleFactory", "stub", "bind", "rebindSync"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Container as
|
|
1
|
+
import{Container as f}from"inversify";import{TransportMock as l}from"../../../api/transport/model/__mocks__/TransportMock";import{deviceModelModuleFactory as C}from"../../device-model/di/deviceModelModule";import{deviceSessionModuleFactory as d}from"../../device-session/di/deviceSessionModule";import{ConnectUseCase as U}from"../../discovery/use-case/ConnectUseCase";import{DisconnectUseCase as v}from"../../discovery/use-case/DisconnectUseCase";import{ListConnectedDevicesUseCase as g}from"../../discovery/use-case/ListConnectedDevicesUseCase";import{ListenToAvailableDevicesUseCase as u}from"../../discovery/use-case/ListenToAvailableDevicesUseCase";import{ReconnectUseCase as y}from"../../discovery/use-case/ReconnectUseCase";import{StartDiscoveringUseCase as D}from"../../discovery/use-case/StartDiscoveringUseCase";import{StopDiscoveringUseCase as k}from"../../discovery/use-case/StopDiscoveringUseCase";import{loggerModuleFactory as M}from"../../logger-publisher/di/loggerModule";import{managerApiModuleFactory as b}from"../../manager-api/di/managerApiModule";import{secureChannelModuleFactory as F}from"../../secure-channel/di/secureChannelModule";import{transportModuleFactory as h}from"../../transport/di/transportModule";import{discoveryModuleFactory as x}from"./discoveryModule";import{discoveryTypes as o}from"./discoveryTypes";describe("discoveryModuleFactory",()=>{let e,t,s;beforeEach(()=>{t=x({stub:!1}),e=new f,s=new l,e.loadSync(t,M(),C({stub:!1}),d(),h({transports:[vi.fn().mockImplementation(()=>s)]}),b({config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url"}}),F({config:{webSocketUrl:"http://fake-websocket.url"}}))}),it("should return the device module",()=>{expect(t).toBeDefined()}),it("should return none mocked use cases",()=>{const r=e.get(o.StartDiscoveringUseCase);expect(r).toBeInstanceOf(D);const n=e.get(o.StopDiscoveringUseCase);expect(n).toBeInstanceOf(k);const c=e.get(o.DisconnectUseCase);expect(c).toBeInstanceOf(v);const i=e.get(o.ConnectUseCase);expect(i).toBeInstanceOf(U);const a=e.get(o.ListenToAvailableDevicesUseCase);expect(a).toBeInstanceOf(u);const m=e.get(o.ListConnectedDevicesUseCase);expect(m).toBeInstanceOf(g);const p=e.get(o.ReconnectUseCase);expect(p).toBeInstanceOf(y)})});
|
|
2
2
|
//# sourceMappingURL=discoveryModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/discovery/di/discoveryModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type DmkConfig, type Transport } from \"@api/types\";\nimport { deviceModelModuleFactory } from \"@internal/device-model/di/deviceModelModule\";\nimport { deviceSessionModuleFactory } from \"@internal/device-session/di/deviceSessionModule\";\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { loggerModuleFactory } from \"@internal/logger-publisher/di/loggerModule\";\nimport { managerApiModuleFactory } from \"@internal/manager-api/di/managerApiModule\";\nimport { secureChannelModuleFactory } from \"@internal/secure-channel/di/secureChannelModule\";\nimport { transportModuleFactory } from \"@internal/transport/di/transportModule\";\n\nimport { discoveryModuleFactory } from \"./discoveryModule\";\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ndescribe(\"discoveryModuleFactory\", () => {\n let container: Container;\n let mod: ReturnType<typeof discoveryModuleFactory>;\n let transport: Transport;\n beforeEach(() => {\n mod = discoveryModuleFactory({ stub: false });\n container = new Container();\n transport = new TransportMock();\n\n container.loadSync(\n mod,\n // The following modules are injected into discovery module\n loggerModuleFactory(),\n deviceModelModuleFactory({ stub: false }),\n deviceSessionModuleFactory(),\n transportModuleFactory({\n transports: [vi.fn().mockImplementation(() => transport)],\n }),\n managerApiModuleFactory({\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n } as DmkConfig,\n }),\n secureChannelModuleFactory({\n config: {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig,\n }),\n );\n });\n it(\"should return the device module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return none mocked use cases\", () => {\n const startDiscoveringUseCase = container.get(\n discoveryTypes.StartDiscoveringUseCase,\n );\n expect(startDiscoveringUseCase).toBeInstanceOf(StartDiscoveringUseCase);\n\n const stopDiscoveringUseCase = container.get(\n discoveryTypes.StopDiscoveringUseCase,\n );\n expect(stopDiscoveringUseCase).toBeInstanceOf(StopDiscoveringUseCase);\n\n const disconnectUseCase = container.get(discoveryTypes.DisconnectUseCase);\n expect(disconnectUseCase).toBeInstanceOf(DisconnectUseCase);\n\n const connectUseCase = container.get(discoveryTypes.ConnectUseCase);\n expect(connectUseCase).toBeInstanceOf(ConnectUseCase);\n\n const listenToAvailableDevicesUseCase = container.get(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n );\n expect(listenToAvailableDevicesUseCase).toBeInstanceOf(\n ListenToAvailableDevicesUseCase,\n );\n const listConnectedDevicesUseCase = container.get(\n discoveryTypes.ListConnectedDevicesUseCase,\n );\n expect(listConnectedDevicesUseCase).toBeInstanceOf(\n ListConnectedDevicesUseCase,\n );\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,iBAAAC,MAAqB,+CAE9B,OAAS,4BAAAC,MAAgC,8CACzC,OAAS,8BAAAC,MAAkC,kDAC3C,OAAS,kBAAAC,MAAsB,8CAC/B,OAAS,qBAAAC,MAAyB,iDAClC,OAAS,+BAAAC,MAAmC,2DAC5C,OAAS,mCAAAC,MAAuC,+DAChD,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,0BAAAC,MAA8B,sDACvC,OAAS,uBAAAC,MAA2B,6CACpC,OAAS,2BAAAC,MAA+B,4CACxC,OAAS,8BAAAC,MAAkC,kDAC3C,OAAS,0BAAAC,MAA8B,yCAEvC,OAAS,0BAAAC,MAA8B,oBACvC,OAAS,kBAAAC,MAAsB,mBAE/B,SAAS,yBAA0B,IAAM,CACvC,IAAIC,EACAC,EACAC,EACJ,WAAW,IAAM,CACfD,EAAMH,EAAuB,CAAE,KAAM,EAAM,CAAC,EAC5CE,EAAY,
|
|
6
|
-
"names": ["Container", "TransportMock", "deviceModelModuleFactory", "deviceSessionModuleFactory", "ConnectUseCase", "DisconnectUseCase", "ListConnectedDevicesUseCase", "ListenToAvailableDevicesUseCase", "StartDiscoveringUseCase", "StopDiscoveringUseCase", "loggerModuleFactory", "managerApiModuleFactory", "secureChannelModuleFactory", "transportModuleFactory", "discoveryModuleFactory", "discoveryTypes", "container", "mod", "transport", "startDiscoveringUseCase", "stopDiscoveringUseCase", "disconnectUseCase", "connectUseCase", "listenToAvailableDevicesUseCase", "listConnectedDevicesUseCase"]
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type DmkConfig, type Transport } from \"@api/types\";\nimport { deviceModelModuleFactory } from \"@internal/device-model/di/deviceModelModule\";\nimport { deviceSessionModuleFactory } from \"@internal/device-session/di/deviceSessionModule\";\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { ReconnectUseCase } from \"@internal/discovery/use-case/ReconnectUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { loggerModuleFactory } from \"@internal/logger-publisher/di/loggerModule\";\nimport { managerApiModuleFactory } from \"@internal/manager-api/di/managerApiModule\";\nimport { secureChannelModuleFactory } from \"@internal/secure-channel/di/secureChannelModule\";\nimport { transportModuleFactory } from \"@internal/transport/di/transportModule\";\n\nimport { discoveryModuleFactory } from \"./discoveryModule\";\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ndescribe(\"discoveryModuleFactory\", () => {\n let container: Container;\n let mod: ReturnType<typeof discoveryModuleFactory>;\n let transport: Transport;\n beforeEach(() => {\n mod = discoveryModuleFactory({ stub: false });\n container = new Container();\n transport = new TransportMock();\n\n container.loadSync(\n mod,\n // The following modules are injected into discovery module\n loggerModuleFactory(),\n deviceModelModuleFactory({ stub: false }),\n deviceSessionModuleFactory(),\n transportModuleFactory({\n transports: [vi.fn().mockImplementation(() => transport)],\n }),\n managerApiModuleFactory({\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n } as DmkConfig,\n }),\n secureChannelModuleFactory({\n config: {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig,\n }),\n );\n });\n it(\"should return the device module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return none mocked use cases\", () => {\n const startDiscoveringUseCase = container.get(\n discoveryTypes.StartDiscoveringUseCase,\n );\n expect(startDiscoveringUseCase).toBeInstanceOf(StartDiscoveringUseCase);\n\n const stopDiscoveringUseCase = container.get(\n discoveryTypes.StopDiscoveringUseCase,\n );\n expect(stopDiscoveringUseCase).toBeInstanceOf(StopDiscoveringUseCase);\n\n const disconnectUseCase = container.get(discoveryTypes.DisconnectUseCase);\n expect(disconnectUseCase).toBeInstanceOf(DisconnectUseCase);\n\n const connectUseCase = container.get(discoveryTypes.ConnectUseCase);\n expect(connectUseCase).toBeInstanceOf(ConnectUseCase);\n\n const listenToAvailableDevicesUseCase = container.get(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n );\n expect(listenToAvailableDevicesUseCase).toBeInstanceOf(\n ListenToAvailableDevicesUseCase,\n );\n const listConnectedDevicesUseCase = container.get(\n discoveryTypes.ListConnectedDevicesUseCase,\n );\n expect(listConnectedDevicesUseCase).toBeInstanceOf(\n ListConnectedDevicesUseCase,\n );\n const reconnectUseCase = container.get(discoveryTypes.ReconnectUseCase);\n expect(reconnectUseCase).toBeInstanceOf(ReconnectUseCase);\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,iBAAAC,MAAqB,+CAE9B,OAAS,4BAAAC,MAAgC,8CACzC,OAAS,8BAAAC,MAAkC,kDAC3C,OAAS,kBAAAC,MAAsB,8CAC/B,OAAS,qBAAAC,MAAyB,iDAClC,OAAS,+BAAAC,MAAmC,2DAC5C,OAAS,mCAAAC,MAAuC,+DAChD,OAAS,oBAAAC,MAAwB,gDACjC,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,0BAAAC,MAA8B,sDACvC,OAAS,uBAAAC,MAA2B,6CACpC,OAAS,2BAAAC,MAA+B,4CACxC,OAAS,8BAAAC,MAAkC,kDAC3C,OAAS,0BAAAC,MAA8B,yCAEvC,OAAS,0BAAAC,MAA8B,oBACvC,OAAS,kBAAAC,MAAsB,mBAE/B,SAAS,yBAA0B,IAAM,CACvC,IAAIC,EACAC,EACAC,EACJ,WAAW,IAAM,CACfD,EAAMH,EAAuB,CAAE,KAAM,EAAM,CAAC,EAC5CE,EAAY,IAAIjB,EAChBmB,EAAY,IAAIlB,EAEhBgB,EAAU,SACRC,EAEAP,EAAoB,EACpBT,EAAyB,CAAE,KAAM,EAAM,CAAC,EACxCC,EAA2B,EAC3BW,EAAuB,CACrB,WAAY,CAAC,GAAG,GAAG,EAAE,mBAAmB,IAAMK,CAAS,CAAC,CAC1D,CAAC,EACDP,EAAwB,CACtB,OAAQ,CACN,cAAe,kBACf,QAAS,sBACX,CACF,CAAC,EACDC,EAA2B,CACzB,OAAQ,CACN,aAAc,2BAChB,CACF,CAAC,CACH,CACF,CAAC,EACD,GAAG,kCAAmC,IAAM,CAC1C,OAAOK,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAME,EAA0BH,EAAU,IACxCD,EAAe,uBACjB,EACA,OAAOI,CAAuB,EAAE,eAAeX,CAAuB,EAEtE,MAAMY,EAAyBJ,EAAU,IACvCD,EAAe,sBACjB,EACA,OAAOK,CAAsB,EAAE,eAAeX,CAAsB,EAEpE,MAAMY,EAAoBL,EAAU,IAAID,EAAe,iBAAiB,EACxE,OAAOM,CAAiB,EAAE,eAAejB,CAAiB,EAE1D,MAAMkB,EAAiBN,EAAU,IAAID,EAAe,cAAc,EAClE,OAAOO,CAAc,EAAE,eAAenB,CAAc,EAEpD,MAAMoB,EAAkCP,EAAU,IAChDD,EAAe,+BACjB,EACA,OAAOQ,CAA+B,EAAE,eACtCjB,CACF,EACA,MAAMkB,EAA8BR,EAAU,IAC5CD,EAAe,2BACjB,EACA,OAAOS,CAA2B,EAAE,eAClCnB,CACF,EACA,MAAMoB,EAAmBT,EAAU,IAAID,EAAe,gBAAgB,EACtE,OAAOU,CAAgB,EAAE,eAAelB,CAAgB,CAC1D,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["Container", "TransportMock", "deviceModelModuleFactory", "deviceSessionModuleFactory", "ConnectUseCase", "DisconnectUseCase", "ListConnectedDevicesUseCase", "ListenToAvailableDevicesUseCase", "ReconnectUseCase", "StartDiscoveringUseCase", "StopDiscoveringUseCase", "loggerModuleFactory", "managerApiModuleFactory", "secureChannelModuleFactory", "transportModuleFactory", "discoveryModuleFactory", "discoveryTypes", "container", "mod", "transport", "startDiscoveringUseCase", "stopDiscoveringUseCase", "disconnectUseCase", "connectUseCase", "listenToAvailableDevicesUseCase", "listConnectedDevicesUseCase", "reconnectUseCase"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={StartDiscoveringUseCase:Symbol.for("StartDiscoveringUseCase"),StopDiscoveringUseCase:Symbol.for("StopDiscoveringUseCase"),ConnectUseCase:Symbol.for("ConnectUseCase"),DisconnectUseCase:Symbol.for("DisconnectUseCase"),GetConnectedDeviceUseCase:Symbol.for("GetConnectedDeviceUseCase"),ListenToAvailableDevicesUseCase:Symbol.for("ListenToAvailableDevicesUseCase"),ListenToConnectedDeviceUseCase:Symbol.for("ListenToConnectedDeviceUseCase"),ListConnectedDevicesUseCase:Symbol.for("ListConnectedDevicesUseCase")};export{e as discoveryTypes};
|
|
1
|
+
const e={StartDiscoveringUseCase:Symbol.for("StartDiscoveringUseCase"),StopDiscoveringUseCase:Symbol.for("StopDiscoveringUseCase"),ConnectUseCase:Symbol.for("ConnectUseCase"),DisconnectUseCase:Symbol.for("DisconnectUseCase"),GetConnectedDeviceUseCase:Symbol.for("GetConnectedDeviceUseCase"),ListenToAvailableDevicesUseCase:Symbol.for("ListenToAvailableDevicesUseCase"),ListenToConnectedDeviceUseCase:Symbol.for("ListenToConnectedDeviceUseCase"),ListConnectedDevicesUseCase:Symbol.for("ListConnectedDevicesUseCase"),ReconnectUseCase:Symbol.for("ReconnectUseCase")};export{e as discoveryTypes};
|
|
2
2
|
//# sourceMappingURL=discoveryTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/discovery/di/discoveryTypes.ts"],
|
|
4
|
-
"sourcesContent": ["export const discoveryTypes = {\n StartDiscoveringUseCase: Symbol.for(\"StartDiscoveringUseCase\"),\n StopDiscoveringUseCase: Symbol.for(\"StopDiscoveringUseCase\"),\n ConnectUseCase: Symbol.for(\"ConnectUseCase\"),\n DisconnectUseCase: Symbol.for(\"DisconnectUseCase\"),\n GetConnectedDeviceUseCase: Symbol.for(\"GetConnectedDeviceUseCase\"),\n ListenToAvailableDevicesUseCase: Symbol.for(\n \"ListenToAvailableDevicesUseCase\",\n ),\n ListenToConnectedDeviceUseCase: Symbol.for(\"ListenToConnectedDeviceUseCase\"),\n ListConnectedDevicesUseCase: Symbol.for(\"ListConnectedDevicesUseCase\"),\n};\n"],
|
|
5
|
-
"mappings": "AAAO,MAAMA,EAAiB,CAC5B,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,eAAgB,OAAO,IAAI,gBAAgB,EAC3C,kBAAmB,OAAO,IAAI,mBAAmB,EACjD,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,gCAAiC,OAAO,IACtC,iCACF,EACA,+BAAgC,OAAO,IAAI,gCAAgC,EAC3E,4BAA6B,OAAO,IAAI,6BAA6B,
|
|
4
|
+
"sourcesContent": ["export const discoveryTypes = {\n StartDiscoveringUseCase: Symbol.for(\"StartDiscoveringUseCase\"),\n StopDiscoveringUseCase: Symbol.for(\"StopDiscoveringUseCase\"),\n ConnectUseCase: Symbol.for(\"ConnectUseCase\"),\n DisconnectUseCase: Symbol.for(\"DisconnectUseCase\"),\n GetConnectedDeviceUseCase: Symbol.for(\"GetConnectedDeviceUseCase\"),\n ListenToAvailableDevicesUseCase: Symbol.for(\n \"ListenToAvailableDevicesUseCase\",\n ),\n ListenToConnectedDeviceUseCase: Symbol.for(\"ListenToConnectedDeviceUseCase\"),\n ListConnectedDevicesUseCase: Symbol.for(\"ListConnectedDevicesUseCase\"),\n ReconnectUseCase: Symbol.for(\"ReconnectUseCase\"),\n};\n"],
|
|
5
|
+
"mappings": "AAAO,MAAMA,EAAiB,CAC5B,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,eAAgB,OAAO,IAAI,gBAAgB,EAC3C,kBAAmB,OAAO,IAAI,mBAAmB,EACjD,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,gCAAiC,OAAO,IACtC,iCACF,EACA,+BAAgC,OAAO,IAAI,gCAAgC,EAC3E,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,iBAAkB,OAAO,IAAI,kBAAkB,CACjD",
|
|
6
6
|
"names": ["discoveryTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var S=Object.defineProperty;var
|
|
1
|
+
var S=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=(c,e,s,i)=>{for(var o=i>1?void 0:i?g(e,s):e,r=c.length-1,n;r>=0;r--)(n=c[r])&&(o=(i?n(e,s,o):n(o))||o);return i&&o&&S(e,s,o),o},t=(c,e)=>(s,i)=>e(s,i,c);import{inject as a,injectable as m}from"inversify";import{EitherAsync as h}from"purify-ts";import{TransportNotSupportedError as d}from"../../../api/transport/model/Errors";import{deviceSessionTypes as l}from"../../device-session/di/deviceSessionTypes";import{DeviceSession as f}from"../../device-session/model/DeviceSession";import{loggerTypes as D}from"../../logger-publisher/di/loggerTypes";import{managerApiTypes as y}from"../../manager-api/di/managerApiTypes";import{secureChannelTypes as u}from"../../secure-channel/di/secureChannelTypes";import{transportDiTypes as _}from"../../transport/di/transportDiTypes";let v=class{_transportService;_sessionService;_loggerFactory;_managerApi;_secureChannel;_logger;constructor(e,s,i,o,r){this._sessionService=s,this._transportService=e,this._loggerFactory=i,this._logger=i("ConnectUseCase"),this._managerApi=o,this._secureChannel=r}handleDeviceDisconnect(e){this._sessionService.getDeviceSessionsByDeviceId(e).ifRight(s=>{s.forEach(i=>{this._sessionService.removeDeviceSession(i.id),this._logger.info("Session removed",{data:{deviceId:e,sessionId:i.id}})})})}async execute({device:e,sessionRefresherOptions:s}){const i=this._transportService.getTransport(e.transport),o="sessionId"in e?e.sessionId:void 0;return h.liftEither(i.toEither(new d(new Error("Unknown transport")))).chain(async r=>r.connect({deviceId:e.id,onDisconnect:n=>this.handleDeviceDisconnect(n)})).ifLeft(r=>{this._logger.error("Error connecting to device",{data:{deviceId:e.id,error:r}})}).map(async r=>{const n=new f({connectedDevice:r,id:o},this._loggerFactory,this._managerApi,this._secureChannel,s);return this._sessionService.addDeviceSession(n),await n.initialiseSession(),n.id}).caseOf({Left:r=>{throw r},Right:r=>r})}};v=p([m(),t(0,a(_.TransportService)),t(1,a(l.DeviceSessionService)),t(2,a(D.LoggerPublisherServiceFactory)),t(3,a(y.ManagerApiService)),t(4,a(u.SecureChannelService))],v);export{v as ConnectUseCase};
|
|
2
2
|
//# sourceMappingURL=ConnectUseCase.js.map
|