@ledgerhq/device-management-kit 0.0.0-develop-20250430001202 → 0.0.0-develop-20250502001149
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/src/api/DeviceManagementKit.test.js +1 -1
- package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
- package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
- package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
- package/lib/cjs/src/api/DmkConfig.js +1 -1
- package/lib/cjs/src/api/DmkConfig.js.map +1 -1
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +3 -3
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +2 -0
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
- package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.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/__test-utils__/setupTestMachine.js +1 -1
- package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
- 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 +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
- package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +1 -1
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
- package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
- package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
- package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
- package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
- package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
- package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
- package/lib/cjs/src/api/device-model/model/DeviceModel.js +1 -1
- package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +2 -2
- package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +1 -1
- package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
- package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
- package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +2 -2
- package/lib/cjs/src/api/index.js +1 -1
- package/lib/cjs/src/api/index.js.map +3 -3
- 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 +3 -3
- 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 +3 -3
- package/lib/cjs/src/api/types.js +1 -1
- package/lib/cjs/src/api/types.js.map +1 -1
- package/lib/cjs/src/di.js +1 -1
- package/lib/cjs/src/di.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 +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/manager-api/data/AxiosManagerApiDataSource.js +1 -1
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js +1 -1
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
- package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
- package/lib/cjs/src/internal/manager-api/model/Application.js +1 -1
- package/lib/cjs/src/internal/manager-api/model/Application.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
- package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/model/Firmware.js +1 -1
- package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/model/Language.js +2 -0
- package/lib/cjs/src/internal/manager-api/model/Language.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/model/Params.js +1 -1
- package/lib/cjs/src/internal/manager-api/model/Params.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +1 -1
- package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +1 -1
- package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js +1 -1
- package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js.map +3 -3
- package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js +1 -1
- package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +3 -3
- package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
- package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
- package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
- package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
- package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +1 -1
- package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
- package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
- package/lib/cjs/src/internal/transport/di/transportModule.test.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/DeviceManagementKitBuilder.js +1 -1
- package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +3 -3
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +3 -3
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +2 -0
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
- package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.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/__test-utils__/setupTestMachine.js +1 -1
- package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
- 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 +2 -0
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js +1 -0
- package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
- package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
- package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
- package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
- package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
- package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
- package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
- package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
- package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
- package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
- package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
- package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
- package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
- package/lib/esm/src/api/device-model/model/DeviceModel.js +1 -1
- package/lib/esm/src/api/device-model/model/DeviceModel.js.map +2 -2
- package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +1 -1
- package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
- package/lib/esm/src/api/device-session/DeviceSessionState.js +1 -1
- package/lib/esm/src/api/device-session/DeviceSessionState.js.map +2 -2
- package/lib/esm/src/api/index.js +1 -1
- package/lib/esm/src/api/index.js.map +3 -3
- 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 +3 -3
- 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 +3 -3
- package/lib/esm/src/di.js +1 -1
- package/lib/esm/src/di.js.map +3 -3
- package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
- package/lib/esm/src/internal/device-session/model/DeviceSession.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/manager-api/data/AxiosManagerApiDataSource.js +1 -1
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
- package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js +1 -1
- package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
- package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
- package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
- package/lib/esm/src/internal/manager-api/model/Application.js +1 -1
- package/lib/esm/src/internal/manager-api/model/Application.js.map +1 -1
- package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
- package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
- package/lib/esm/src/internal/manager-api/model/Language.js +1 -0
- package/lib/esm/src/internal/manager-api/model/Language.js.map +7 -0
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
- package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js +1 -1
- package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js.map +3 -3
- package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js +1 -1
- package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +3 -3
- package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
- package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
- package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
- package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
- package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
- package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -1
- package/lib/types/src/api/DmkConfig.d.ts +1 -0
- package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +16 -0
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +30 -2
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +24 -0
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/device-action/DeviceAction.d.ts +2 -0
- 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/__test-utils__/setupTestMachine.d.ts +5 -0
- package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/Errors.d.ts +10 -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 +58 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts +2 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +27 -0
- package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +3 -4
- package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts +40 -0
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts +2 -0
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +64 -0
- package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts +15 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts +2 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +25 -0
- package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +30 -0
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +31 -0
- package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +18 -0
- package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts +21 -0
- package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts.map +1 -0
- package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
- package/lib/types/src/api/device-model/model/DeviceModel.d.ts +2 -0
- package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -1
- package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -1
- package/lib/types/src/api/device-session/DeviceSessionState.d.ts +93 -0
- package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
- package/lib/types/src/api/index.d.ts +5 -1
- package/lib/types/src/api/index.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/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/types.d.ts +4 -1
- package/lib/types/src/api/types.d.ts.map +1 -1
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +1 -0
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +20 -4
- package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +41 -6
- package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts +104 -18
- package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +5 -0
- package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/model/Application.d.ts +12 -12
- package/lib/types/src/internal/manager-api/model/Application.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/model/Const.d.ts +1 -0
- package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/model/Firmware.d.ts +17 -3
- package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/model/Language.d.ts +12 -0
- package/lib/types/src/internal/manager-api/model/Language.d.ts.map +1 -0
- package/lib/types/src/internal/manager-api/model/Params.d.ts +20 -0
- package/lib/types/src/internal/manager-api/model/Params.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts +7 -1
- package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +39 -1
- package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts +3 -1
- package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts.map +1 -1
- package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +2 -2
- package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
- package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +3 -3
- package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupGetDeviceMetadataMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OutOfMemoryDAError } from \"@api/device-action/os/Errors\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { SecureChannelEventPayload } from \"@api/secure-channel/task/types\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nimport { InstallOrUpdateAppsDeviceAction } from \"./InstallOrUpdateAppsDeviceAction\";\nimport type { InstallOrUpdateAppsDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\n \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\",\n);\n\ndescribe(\"InstallOrUpdateAppsDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const buildInstallPlanMock = vi.fn();\n const predictOutOfMemoryMock = vi.fn();\n const installAppMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n buildInstallPlan: buildInstallPlanMock,\n predictOutOfMemory: predictOutOfMemoryMock,\n installApp: installAppMock,\n };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n });\n\n describe(\"success cases\", () => {\n it(\"Install two applications\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n installAppMock\n .mockReturnValueOnce(\n of(\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.5 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1 },\n },\n ),\n )\n .mockReturnValueOnce(\n of(\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.25 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.75 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1 },\n },\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp install first app\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0.5,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp install second app\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 0.25,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 0.75,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n successfullyInstalled: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as unknown as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"No install is needed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Solana\", \"Bitcoin\", \"XRP\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n successfullyInstalled: [],\n alreadyInstalled: [\"Ethereum\", \"Solana\", \"Bitcoin\", \"XRP\"],\n missingApplications: [\"MyShitCoin\"],\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n\n describe(\"error cases\", () => {\n it(\"Update device metadata failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock(\n {\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput,\n true,\n );\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [{ name: \"Bitcoin\" }],\n allowMissingApplication: false,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"GetDeviceMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Build install plan failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [{ name: \"Bitcoin\" }],\n allowMissingApplication: false,\n },\n });\n\n buildInstallPlanMock.mockResolvedValueOnce({\n error: new UnknownDAError(\"BuildInstallPlan failed\"),\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"BuildInstallPlan failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Predict out of memory failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n error: new UnknownDAError(\"PredictOutOfMemory failed\"),\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"PredictOutOfMemory failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Is out of memory\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: true,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new OutOfMemoryDAError(\n \"Not enough memory for those applications\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Go to dashboard failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Install app failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n installAppMock.mockReturnValue(\n concat(\n of({\n type: SecureChannelEventType.Exchange,\n payload: {\n data: new Uint8Array([0x00, 0x01, 0x02, 0x03]),\n } as SecureChannelEventPayload[\"Exchange\"],\n }),\n throwError(() => new UnknownDAError(\"Secure channel error\")),\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"Secure channel error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_rxjs", "import_DeviceStatus", "import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_DeviceSessionState", "import_types", "import_InstallOrUpdateAppsDeviceAction", "apiMock", "buildInstallPlanMock", "predictOutOfMemoryMock", "installAppMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "installPlan", "expectedStates"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var s=(t,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of i(e))!l.call(t,r)&&r!==o&&n(t,r,{get:()=>e[r],enumerable:!(a=p(e,r))||a.enumerable});return t};var d=t=>s(n({},"__esModule",{value:!0}),t);var c={};module.exports=d(c);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/InstallOrUpdateApps/types.ts"],
|
|
4
|
+
"sourcesContent": ["import type { CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport type { DeviceModelId } from \"@api/device/DeviceModel\";\nimport type { DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport type { OutOfMemoryDAError } from \"@api/device-action/os/Errors\";\nimport type {\n GetDeviceMetadataDAError,\n GetDeviceMetadataDARequiredInteraction,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { GoToDashboardDARequiredInteraction } from \"@api/device-action/os/GoToDashboard/types\";\nimport type { GoToDashboardDAInput } from \"@api/device-action/os/GoToDashboard/types\";\nimport type { InstallAppDAError } from \"@api/secure-channel/device-action/InstallApp/types\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\n/**\n * An application version used as application constraint should either be a valid semantic versioning formatted\n * string, or \"latest\" to ensure the app is always up-to-date.\n */\nexport type ApplicationVersionConstraint =\n | `${number}.${number}.${number}`\n | `${number}.${number}.${number}-${string}`\n | `${number}.${number}.${number}+${string}`\n | `${number}.${number}.${number}-${string}+${string}`\n | \"latest\";\n\nexport type ApplicationConstraint = {\n /**\n * Required minimal version of the application, if already installed on the device.\n */\n readonly minVersion: ApplicationVersionConstraint;\n\n /**\n * List of device models that require the minVersion.\n */\n readonly applicableModels?: DeviceModelId[];\n\n /**\n * List of device models that do not require the minVersion.\n */\n readonly exemptModels?: DeviceModelId[];\n};\n\nexport type ApplicationDependency = {\n /**\n * Name of the application to install.\n */\n readonly name: string;\n\n /**\n * List of constraints for the application.\n * If no constraints are provided, no version checks are performed.\n * If the current device model is not concerned by any listed contraints, no version checks are performed.\n */\n readonly constraints?: ApplicationConstraint[];\n};\n\nexport type InstallPlan = {\n readonly installPlan: Application[];\n readonly alreadyInstalled: string[];\n readonly missingApplications: string[];\n readonly currentIndex: number;\n readonly currentProgress: number;\n};\n\nexport type InstallOrUpdateAppsDAOutput = {\n readonly successfullyInstalled: Application[];\n readonly alreadyInstalled: string[];\n readonly missingApplications: string[];\n};\n\nexport type InstallOrUpdateAppsDAInput = GoToDashboardDAInput & {\n readonly applications: ApplicationDependency[];\n readonly allowMissingApplication: boolean;\n};\n\nexport type InstallOrUpdateAppsDAError =\n | GetDeviceMetadataDAError\n | InstallAppDAError\n | OutOfMemoryDAError\n | CommandErrorResult[\"error\"];\n\nexport type InstallOrUpdateAppsDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | GetDeviceMetadataDARequiredInteraction;\n\nexport type InstallOrUpdateAppsDAIntermediateValue = {\n requiredUserInteraction: InstallOrUpdateAppsDARequiredInteraction;\n installPlan: InstallPlan | null;\n};\n\nexport type InstallOrUpdateAppsDAState = DeviceActionState<\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var S=(o,e)=>{for(var a in e)u(o,a,{get:e[a],enumerable:!0})},g=(o,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of L(e))!y.call(o,r)&&r!==a&&u(o,r,{get:()=>e[r],enumerable:!(s=D(e,r))||s.enumerable});return o};var x=o=>g(u({},"__esModule",{value:!0}),o);var v={};S(v,{ListAppsDeviceAction:()=>E});module.exports=x(v);var p=require("purify-ts"),n=require("xstate"),c=require("../../../command/model/CommandResult"),l=require("../../../command/os/ListAppsCommand"),i=require("../../../device-action/model/UserInteractionRequired"),A=require("../../../device-action/os/Const"),m=require("../../../device-action/os/GoToDashboard/GoToDashboardDeviceAction"),d=require("../../../device-action/xstate-utils/XStateDeviceAction");class E extends d.XStateDeviceAction{makeStateMachine(e){const{listApps:a}=this.extractDependencies(e),s=this.input.unlockTimeout??A.DEFAULT_UNLOCK_TIMEOUT_MS,r=new m.GoToDashboardDeviceAction({input:{unlockTimeout:s}}).makeStateMachine(e);return(0,n.setup)({types:{input:{unlockTimeout:s},context:{},output:{}},actors:{listApps:(0,n.fromPromise)(a),goToDashboard:r},guards:{hasError:({context:t})=>t._internalState.error!==null,hasMoreApps:t=>t.context._internalState.shouldContinue},actions:{assignAllowListApps:(0,n.assign)({intermediateValue:t=>({requiredUserInteraction:i.UserInteractionRequired.AllowListApps})}),assignErrorFromEvent:(0,n.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"ListAppsDeviceAction",initial:"DeviceReady",context:t=>({input:{unlockTimeout:t.input.unlockTimeout},intermediateValue:{requiredUserInteraction:i.UserInteractionRequired.None},_internalState:{error:null,apps:[],shouldContinue:!1}}),states:{DeviceReady:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"dashboard",src:"goToDashboard",input:t=>({unlockTimeout:t.context.input.unlockTimeout}),onSnapshot:{actions:(0,n.assign)({intermediateValue:t=>t.event.snapshot.context.intermediateValue})},onDone:{target:"GoToDashboardCheck",actions:(0,n.assign)({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:h=>({...t.context._internalState,error:h})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"ListApps"}]},ListApps:{entry:"assignAllowListApps",invoke:{src:"listApps",input:t=>!1,onDone:{target:"Continue",actions:(0,n.assign)({_internalState:t=>(0,c.isSuccessCommandResult)(t.event.output)?{...t.context._internalState,apps:t.context._internalState.apps.concat(t.event.output.data),shouldContinue:t.event.output.data.length
|
|
1
|
+
"use strict";var u=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var S=(o,e)=>{for(var a in e)u(o,a,{get:e[a],enumerable:!0})},g=(o,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of L(e))!y.call(o,r)&&r!==a&&u(o,r,{get:()=>e[r],enumerable:!(s=D(e,r))||s.enumerable});return o};var x=o=>g(u({},"__esModule",{value:!0}),o);var v={};S(v,{ListAppsDeviceAction:()=>E});module.exports=x(v);var p=require("purify-ts"),n=require("xstate"),c=require("../../../command/model/CommandResult"),l=require("../../../command/os/ListAppsCommand"),i=require("../../../device-action/model/UserInteractionRequired"),A=require("../../../device-action/os/Const"),m=require("../../../device-action/os/GoToDashboard/GoToDashboardDeviceAction"),d=require("../../../device-action/xstate-utils/XStateDeviceAction");class E extends d.XStateDeviceAction{makeStateMachine(e){const{listApps:a}=this.extractDependencies(e),s=this.input.unlockTimeout??A.DEFAULT_UNLOCK_TIMEOUT_MS,r=new m.GoToDashboardDeviceAction({input:{unlockTimeout:s}}).makeStateMachine(e);return(0,n.setup)({types:{input:{unlockTimeout:s},context:{},output:{}},actors:{listApps:(0,n.fromPromise)(a),goToDashboard:r},guards:{hasError:({context:t})=>t._internalState.error!==null,hasMoreApps:t=>t.context._internalState.shouldContinue},actions:{assignAllowListApps:(0,n.assign)({intermediateValue:t=>({requiredUserInteraction:i.UserInteractionRequired.AllowListApps})}),assignErrorFromEvent:(0,n.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"ListAppsDeviceAction",initial:"DeviceReady",context:t=>({input:{unlockTimeout:t.input.unlockTimeout},intermediateValue:{requiredUserInteraction:i.UserInteractionRequired.None},_internalState:{error:null,apps:[],shouldContinue:!1}}),states:{DeviceReady:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"dashboard",src:"goToDashboard",input:t=>({unlockTimeout:t.context.input.unlockTimeout}),onSnapshot:{actions:(0,n.assign)({intermediateValue:t=>t.event.snapshot.context.intermediateValue})},onDone:{target:"GoToDashboardCheck",actions:(0,n.assign)({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:h=>({...t.context._internalState,error:h})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"ListApps"}]},ListApps:{entry:"assignAllowListApps",invoke:{src:"listApps",input:t=>!1,onDone:{target:"Continue",actions:(0,n.assign)({_internalState:t=>(0,c.isSuccessCommandResult)(t.event.output)?{...t.context._internalState,apps:t.context._internalState.apps.concat(t.event.output.data),shouldContinue:t.event.output.data.length>=2}:{...t.context._internalState,error:t.event.output.error},intermediateValue:t=>({...t.context.intermediateValue,requiredUserInteraction:i.UserInteractionRequired.None})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListAppsCheck:{always:[{target:"Error",guard:"hasError"},"ListAppsContinue"]},ListAppsContinue:{invoke:{src:"listApps",input:t=>!0,onDone:{target:"Continue",actions:(0,n.assign)({_internalState:t=>(0,c.isSuccessCommandResult)(t.event.output)?{...t.context._internalState,apps:t.context._internalState.apps.concat(t.event.output.data),shouldContinue:t.event.output.data.length>=2}:{...t.context._internalState,error:t.event.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Continue:{always:[{target:"ListAppsContinue",guard:"hasMoreApps"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:t=>t.context._internalState.error?(0,p.Left)(t.context._internalState.error):(0,p.Right)(t.context._internalState.apps)})}extractDependencies(e){return{listApps:async({input:s})=>{const r=new l.ListAppsCommand({isContinue:s});return e.sendCommand(r)}}}}0&&(module.exports={ListAppsDeviceAction});
|
|
2
2
|
//# sourceMappingURL=ListAppsDeviceAction.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/api/device-action/os/ListApps/ListAppsDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type AppResponse,\n ListAppsCommand,\n type ListAppsCommandResult,\n} from \"@api/command/os/ListAppsCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n} from \"./types\";\n\ntype ListAppsMachineInternalState = {\n readonly error: ListAppsDAError | null;\n readonly apps: AppResponse[];\n readonly shouldContinue: boolean;\n};\n\nexport type MachineDependencies = {\n readonly listApps: ({\n input,\n }: {\n input: boolean;\n }) => Promise<ListAppsCommandResult>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class ListAppsDeviceAction extends XStateDeviceAction<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n > {\n type types = StateMachineTypes<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n >;\n\n const { listApps } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listApps: fromPromise<ListAppsCommandResult, boolean>(listApps),\n goToDashboard: goToDashboardMachine,\n },\n guards: {\n hasError: ({ context }: { context: types[\"context\"] }) => {\n return context._internalState.error !== null;\n },\n hasMoreApps: (_) => _.context._internalState.shouldContinue,\n },\n actions: {\n assignAllowListApps: assign({\n intermediateValue: (_) =>\n ({\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QBkCWsAuBBADj2AImAG6oDGYWZGqA9gHYB0RpFASmAIYQCeAxAG0ADAF1EoHLVioaDcSAAeiAIwBOIYwAcANgDsyzat2HlAJgDMegDQgeKg412ntAVm3mdp1af0uAvn42aJi4+CzklNR0TADitAAqtAScsAAWAEa0nABOEHwQDGCMqPTEtADWRRApGVm5wmJIIJLSsvTySgguquaMACy6rvrKfSOqfTZ2CKZC2v3K2ou6xn2mms7+gSDB2HiEJBFUbYxxiclpmTl5YNnZtNmMOAA2nBgAZvcAtozVF3UQDXkLRk0Q6iG6vQGQ2UIzGE1siE0ykYLiEaLRuiECxcbmUASC6F2YQOFCO0ROCSSNUuuQAwqkwGRyoJRECpCC5E1OsosZpHAZBi5zKpuhjJohTBZHBt3N5UapVGp8dtCaF9qxIsdTlS-ld6YzmQJlI0JOy2mCEDyHPpNILhaKhLpxQg+kI+ZjzGZdD0seYPMqdmrwqSogxGIG9vlCsVShUihHiRqyWGE7AECUymRXtEGoCmsDzVyVAM+cpzGtzKjvdp1ppnZWNNosW4+sLNEJUdo+gHVXtg5ryam+Dc7g9nq8Ptlvqn+8mmKn07Gs21c6z82bQUXLSXGGWK1XVDW1s6XMZ+kKzLaZk3XD2Qn2SQOU738HwFJhXkVOG8MDcABTKKiaIAJR8DOj5zuGL6wHmpqtJuoDcjue6aA21a1s6ejIuo2imDiCy6H0PS6HeRLqocobztBtIMDQ9AAK5gFG9BFBmcZQfeiYUccqY0fQdGMYumbZgwq4ms0G6cohKiaC4pZCOMQjlu4bguPWqyMJKrhdpKmLLNopFBhBlEcWRfECUxI73I8LzvF8plGUmJm8bRJSCWxy45qIsESfBUmKBKMzIjMnpyTitp+uY9ZyburYWDCfQ1ro5aGQ+TnHOZblMT5BYIQFlqoaojDaCK5iuq2XY1s6iW6I4h54bJlheKlXEhhlrkMdlxpsn57RbgYbiMLMeFrLpMxCiewqOOV4xEai6x4sq9C0BAcDyOB6V5bl-mdAAtNozq7S4jAKqdFgKdW+4teRbXkv2HDcFMcEcn10kuqYzowrVTjaR4TXrNds4mdq5y1FcPUvRaazHaVl5Cq66hqQiCDjJpMplQYmijClWwbdx5Ig9S-z6kyEOFm97bIqsh4KsKZYlQdyOSnywrluYsxDJTmwEpxN1PlRvNk3l3IGMiOIDB2ZWtq6H3I5WtV9BePhYm6gymIDxk8dRHWMULO0SlicyyYBPRlt4jXRXM2hqN6lg8j0GubWGmWdXrr35QsOhDbJh5+l44XwlM5hOCixhej4Ip9Ei3a49BQPHAAyvRZAULA8Drr1UM4nMMxeM4NaoR4TrI0KOczX0cWKo7+NhgAorc9xu1DoxFYBuE6O2OgKfWZ46EYimzAsXYBAEQA */\n id: \"ListAppsDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n apps: [],\n shouldContinue: false,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"GoToDashboard\",\n },\n },\n GoToDashboard: {\n invoke: {\n id: \"dashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ListAppsMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"ListApps\",\n },\n ],\n },\n ListApps: {\n // NOTE: This is a timeout that is currently not used\n // We need to discuss this as a team, how do we want to\n // handle the case when the user does not validate or reject on the device\n // after: {\n // 15000: \"Error\",\n // actions: assign({\n // _internalState: (_) => ({\n // error: new UnknownDAError(\"ListAppsTimeout\"),\n // }),\n // }),\n // },\n entry: \"assignAllowListApps\",\n invoke: {\n src: \"listApps\",\n input: (_) => false,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length === 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n \"ListAppsContinue\",\n ],\n },\n ListAppsContinue: {\n invoke: {\n src: \"listApps\",\n input: (_) => true,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length === 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Continue: {\n always: [\n {\n target: \"ListAppsContinue\",\n guard: \"hasMoreApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error) {\n return Left(_.context._internalState.error);\n }\n\n return Right(_.context._internalState.apps);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const listApps = async ({ input }: { input: boolean }) => {\n const command = new ListAppsCommand({ isContinue: input });\n return internalApi.sendCommand(command);\n };\n\n return {\n listApps,\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4B,qBAC5BC,EAA2C,kBAE3CC,EAAuC,4CACvCC,EAIO,2CAEPC,EAAwC,4DACxCC,EAA0C,uCAC1CC,EAA0C,yEAE1CC,EAGO,8DA2BA,MAAMT,UAA6B,oBAMxC,CACA,iBACEU,EAOA,CASA,KAAM,CAAE,SAAAC,CAAS,EAAI,KAAK,oBAAoBD,CAAW,EAEnDE,EAAgB,KAAK,MAAM,eAAiB,4BAE5CC,EAAuB,IAAI,4BAA0B,CACzD,MAAO,CACL,cAAAD,CACF,CACF,CAAC,EAAE,iBAAiBF,CAAW,EAE/B,SAAO,SAAM,CACX,MAAO,CACL,MAAO,CACL,cAAAE,CACF,EACA,QAAS,CAAC,EACV,OAAQ,CAAC,CACX,EACA,OAAQ,CACN,YAAU,eAA4CD,CAAQ,EAC9D,cAAeE,CACjB,EACA,OAAQ,CACN,SAAU,CAAC,CAAE,QAAAC,CAAQ,IACZA,EAAQ,eAAe,QAAU,KAE1C,YAAcC,GAAMA,EAAE,QAAQ,eAAe,cAC/C,EACA,QAAS,CACP,uBAAqB,UAAO,CAC1B,kBAAoBA,IACjB,CACC,wBAAyB,0BAAwB,aACnD,EACJ,CAAC,EACD,wBAAsB,UAAO,CAC3B,eAAiBA,IAAO,CACtB,GAAGA,EAAE,QAAQ,eACb,MAAOA,EAAE,MAAM,KACjB,EACF,CAAC,CACH,CACF,CAAC,EAAE,cAAc,CAEf,GAAI,uBACJ,QAAS,cACT,QAAUA,IACD,CACL,MAAO,CACL,cAAeA,EAAE,MAAM,aACzB,EACA,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,eAAgB,CACd,MAAO,KACP,KAAM,CAAC,EACP,eAAgB,EAClB,CACF,GAEF,OAAQ,CACN,YAAa,CACX,OAAQ,CACN,OAAQ,eACV,CACF,EACA,cAAe,CACb,OAAQ,CACN,GAAI,YACJ,IAAK,gBACL,MAAQA,IAAO,CACb,cAAeA,EAAE,QAAQ,MAAM,aACjC,GACA,WAAY,CACV,WAAS,UAAO,CACd,kBAAoBA,GAClBA,EAAE,MAAM,SAAS,QAAQ,iBAC7B,CAAC,CACH,EACA,OAAQ,CACN,OAAQ,qBACR,WAAS,UAAO,CACd,eAAiBA,GACRA,EAAE,MAAM,OAAO,OAAqC,CACzD,MAAO,IAAMA,EAAE,QAAQ,eACvB,KAAOC,IAAW,CAChB,GAAGD,EAAE,QAAQ,eACb,MAAAC,CACF,EACF,CAAC,CAEL,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,mBAAoB,CAClB,OAAQ,CACN,CACE,OAAQ,QACR,MAAO,UACT,EACA,CACE,OAAQ,UACV,CACF,CACF,EACA,SAAU,CAYR,MAAO,sBACP,OAAQ,CACN,IAAK,WACL,MAAQD,GAAM,GACd,OAAQ,CACN,OAAQ,WACR,WAAS,UAAO,CACd,eAAiBA,MACX,0BAAuBA,EAAE,MAAM,MAAM,EAChC,CACL,GAAGA,EAAE,QAAQ,eACb,KAAMA,EAAE,QAAQ,eAAe,KAAK,OAClCA,EAAE,MAAM,OAAO,IACjB,EACA,eAAgBA,EAAE,MAAM,OAAO,KAAK,
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type AppResponse,\n ListAppsCommand,\n type ListAppsCommandResult,\n} from \"@api/command/os/ListAppsCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n} from \"./types\";\n\ntype ListAppsMachineInternalState = {\n readonly error: ListAppsDAError | null;\n readonly apps: AppResponse[];\n readonly shouldContinue: boolean;\n};\n\nexport type MachineDependencies = {\n readonly listApps: ({\n input,\n }: {\n input: boolean;\n }) => Promise<ListAppsCommandResult>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class ListAppsDeviceAction extends XStateDeviceAction<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n > {\n type types = StateMachineTypes<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n >;\n\n const { listApps } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listApps: fromPromise<ListAppsCommandResult, boolean>(listApps),\n goToDashboard: goToDashboardMachine,\n },\n guards: {\n hasError: ({ context }: { context: types[\"context\"] }) => {\n return context._internalState.error !== null;\n },\n hasMoreApps: (_) => _.context._internalState.shouldContinue,\n },\n actions: {\n assignAllowListApps: assign({\n intermediateValue: (_) =>\n ({\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QBkCWsAuBBADj2AImAG6oDGYWZGqA9gHYB0RpFASmAIYQCeAxAG0ADAF1EoHLVioaDcSAAeiAIwBOIYwAcANgDsyzat2HlAJgDMegDQgeKg412ntAVm3mdp1af0uAvn42aJi4+CzklNR0TADitAAqtAScsAAWAEa0nABOEHwQDGCMqPTEtADWRRApGVm5wmJIIJLSsvTySgguquaMACy6rvrKfSOqfTZ2CKZC2v3K2ou6xn2mms7+gSDB2HiEJBFUbYxxiclpmTl5YNnZtNmMOAA2nBgAZvcAtozVF3UQDXkLRk0Q6iG6vQGQ2UIzGE1siE0ykYLiEaLRuiECxcbmUASC6F2YQOFCO0ROCSSNUuuQAwqkwGRyoJRECpCC5E1OsosZpHAZBi5zKpuhjJohTBZHBt3N5UapVGp8dtCaF9qxIsdTlS-ld6YzmQJlI0JOy2mCEDyHPpNILhaKhLpxQg+kI+ZjzGZdD0seYPMqdmrwqSogxGIG9vlCsVShUihHiRqyWGE7AECUymRXtEGoCmsDzVyVAM+cpzGtzKjvdp1ppnZWNNosW4+sLNEJUdo+gHVXtg5ryam+Dc7g9nq8Ptlvqn+8mmKn07Gs21c6z82bQUXLSXGGWK1XVDW1s6XMZ+kKzLaZk3XD2Qn2SQOU738HwFJhXkVOG8MDcABTKKiaIAJR8DOj5zuGL6wHmpqtJuoDcjue6aA21a1s6ejIuo2imDiCy6H0PS6HeRLqocobztBtIMDQ9AAK5gFG9BFBmcZQfeiYUccqY0fQdGMYumbZgwq4ms0G6cohKiaC4pZCOMQjlu4bguPWqyMJKrhdpKmLLNopFBhBlEcWRfECUxI73I8LzvF8plGUmJm8bRJSCWxy45qIsESfBUmKBKMzIjMnpyTitp+uY9ZyburYWDCfQ1ro5aGQ+TnHOZblMT5BYIQFlqoaojDaCK5iuq2XY1s6iW6I4h54bJlheKlXEhhlrkMdlxpsn57RbgYbiMLMeFrLpMxCiewqOOV4xEai6x4sq9C0BAcDyOB6V5bl-mdAAtNozq7S4jAKqdFgKdW+4teRbXkv2HDcFMcEcn10kuqYzowrVTjaR4TXrNds4mdq5y1FcPUvRaazHaVl5Cq66hqQiCDjJpMplQYmijClWwbdx5Ig9S-z6kyEOFm97bIqsh4KsKZYlQdyOSnywrluYsxDJTmwEpxN1PlRvNk3l3IGMiOIDB2ZWtq6H3I5WtV9BePhYm6gymIDxk8dRHWMULO0SlicyyYBPRlt4jXRXM2hqN6lg8j0GubWGmWdXrr35QsOhDbJh5+l44XwlM5hOCixhej4Ip9Ei3a49BQPHAAyvRZAULA8Drr1UM4nMMxeM4NaoR4TrI0KOczX0cWKo7+NhgAorc9xu1DoxFYBuE6O2OgKfWZ46EYimzAsXYBAEQA */\n id: \"ListAppsDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n apps: [],\n shouldContinue: false,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"GoToDashboard\",\n },\n },\n GoToDashboard: {\n invoke: {\n id: \"dashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ListAppsMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"ListApps\",\n },\n ],\n },\n ListApps: {\n // NOTE: This is a timeout that is currently not used\n // We need to discuss this as a team, how do we want to\n // handle the case when the user does not validate or reject on the device\n // after: {\n // 15000: \"Error\",\n // actions: assign({\n // _internalState: (_) => ({\n // error: new UnknownDAError(\"ListAppsTimeout\"),\n // }),\n // }),\n // },\n entry: \"assignAllowListApps\",\n invoke: {\n src: \"listApps\",\n input: (_) => false,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length >= 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n \"ListAppsContinue\",\n ],\n },\n ListAppsContinue: {\n invoke: {\n src: \"listApps\",\n input: (_) => true,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length >= 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Continue: {\n always: [\n {\n target: \"ListAppsContinue\",\n guard: \"hasMoreApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error) {\n return Left(_.context._internalState.error);\n }\n\n return Right(_.context._internalState.apps);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const listApps = async ({ input }: { input: boolean }) => {\n const command = new ListAppsCommand({ isContinue: input });\n return internalApi.sendCommand(command);\n };\n\n return {\n listApps,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ListAppsDeviceAction_exports", "__export", "ListAppsDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_CommandResult", "import_ListAppsCommand", "import_UserInteractionRequired", "import_Const", "import_GoToDashboardDeviceAction", "import_XStateDeviceAction", "internalApi", "listApps", "unlockTimeout", "goToDashboardMachine", "context", "_", "error", "input", "command"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var g=(p,t)=>{for(var i in t)l(p,i,{get:t[i],enumerable:!0})},y=(p,t,i,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!f.call(p,r)&&r!==i&&l(p,r,{get:()=>t[r],enumerable:!(c=I(t,r))||c.enumerable});return p};var E=p=>y(l({},"__esModule",{value:!0}),p);var k={};g(k,{OpenAppWithDependenciesDeviceAction:()=>W});module.exports=E(k);var s=require("purify-ts"),n=require("xstate"),o=require("../../../device-action/model/UserInteractionRequired"),d=require("../../../device-action/os/Const"),m=require("../../../device-action/os/Errors"),A=require("../../../device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction"),h=require("../../../device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction"),D=require("../../../device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),O=require("../../../device-action/xstate-utils/XStateDeviceAction");class W extends O.XStateDeviceAction{makeStateMachine(t){const i=this.input.unlockTimeout??d.DEFAULT_UNLOCK_TIMEOUT_MS,c=new A.GetDeviceMetadataDeviceAction({input:{unlockTimeout:i,useSecureChannel:!0,forceUpdate:!1}}).makeStateMachine(t),r=new h.InstallOrUpdateAppsDeviceAction({input:{unlockTimeout:i,applications:[...this.input.dependencies,this.input.application],allowMissingApplication:!1}}).makeStateMachine(t),v=new D.OpenAppDeviceAction({input:{unlockTimeout:i,appName:this.input.application.name,compatibleAppNames:this.input.compatibleAppNames}}).makeStateMachine(t);return(0,n.setup)({types:{input:{unlockTimeout:i},context:{},output:{}},actors:{getMetadata:c,installApps:r,openApp:v},guards:{hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:(0,n.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"OpenAppWithDependenciesDeviceAction",initial:"DeviceReady",context:e=>({input:{application:e.input.application,dependencies:e.input.dependencies,compatibleAppNames:e.input.compatibleAppNames,requireLatestFirmware:e.input.requireLatestFirmware,unlockTimeout:e.input.unlockTimeout},intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,installPlan:null},_internalState:{error:null,deviceMetadata:null,installResult:null}}),states:{DeviceReady:{always:[{target:"GetDeviceMetadata"}]},GetDeviceMetadata:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{id:"getMetadata",src:"getMetadata",input:e=>({unlockTimeout:e.context.input.unlockTimeout,useSecureChannel:!0,forceUpdate:!1}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GetDeviceMetadataCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:a=>e.context.input.requireLatestFirmware&&a.firmwareUpdateContext.availableUpdate!==void 0?{...e.context._internalState,error:new m.UnsupportedFirmwareDAError("Firmware is not the latest version")}:{...e.context._internalState,deviceMetadata:a},Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallDependencies"}]},InstallDependencies:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{src:"installApps",input:e=>({unlockTimeout:e.context.input.unlockTimeout,applications:[...e.context.input.dependencies,e.context.input.application],allowMissingApplication:!1}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:e.event.snapshot.context.intermediateValue.installPlan})})},onDone:{target:"InstallDependenciesCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:a=>({...e.context._internalState,installResult:a}),Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},InstallDependenciesCheck:{always:[{guard:"hasError",target:"Error"},{target:"OpenApp"}]},OpenApp:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{src:"openApp",input:e=>({unlockTimeout:e.context.input.unlockTimeout,appName:e.context.input.application.name,compatibleAppNames:this.input.compatibleAppNames}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:null})})},onDone:{target:"OpenAppCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},OpenAppCheck:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:e=>{const{context:a}=e,{error:u,deviceMetadata:M,installResult:S}=a._internalState;return u?(0,s.Left)(u):(0,s.Right)({deviceMetadata:M,installResult:S})}})}}0&&(module.exports={OpenAppWithDependenciesDeviceAction});
|
|
2
|
+
//# sourceMappingURL=OpenAppWithDependenciesDeviceAction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.ts"],
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, setup } from \"xstate\";\n\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { UnsupportedFirmwareDAError } from \"@api/device-action/os/Errors\";\nimport { GetDeviceMetadataDeviceAction } from \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport { InstallOrUpdateAppsDeviceAction } from \"@api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction\";\nimport type { InstallOrUpdateAppsDAOutput } from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n type OpenAppWithDependenciesDAError,\n type OpenAppWithDependenciesDAInput,\n type OpenAppWithDependenciesDAIntermediateValue,\n type OpenAppWithDependenciesDAOutput,\n} from \"./types\";\n\ntype OpenAppWithDependenciesMachineInternalState = {\n readonly error: OpenAppWithDependenciesDAError | null;\n readonly deviceMetadata: GetDeviceMetadataDAOutput | null;\n readonly installResult: InstallOrUpdateAppsDAOutput | null;\n};\n\nexport class OpenAppWithDependenciesDeviceAction extends XStateDeviceAction<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n > {\n type types = StateMachineTypes<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n >;\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const getMetadataMachine = new GetDeviceMetadataDeviceAction({\n input: {\n unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n },\n }).makeStateMachine(internalApi);\n\n const installAppsMachine = new InstallOrUpdateAppsDeviceAction({\n input: {\n unlockTimeout,\n applications: [...this.input.dependencies, this.input.application],\n allowMissingApplication: false,\n },\n }).makeStateMachine(internalApi);\n\n const openAppMachine = new OpenAppDeviceAction({\n input: {\n unlockTimeout,\n appName: this.input.application.name,\n compatibleAppNames: this.input.compatibleAppNames,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getMetadata: getMetadataMachine,\n installApps: installAppsMachine,\n openApp: openAppMachine,\n },\n guards: {\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n id: \"OpenAppWithDependenciesDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n application: _.input.application,\n dependencies: _.input.dependencies,\n compatibleAppNames: _.input.compatibleAppNames,\n requireLatestFirmware: _.input.requireLatestFirmware,\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n _internalState: {\n error: null,\n deviceMetadata: null,\n installResult: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: [\n {\n target: \"GetDeviceMetadata\",\n },\n ],\n },\n GetDeviceMetadata: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"getMetadata\",\n src: \"getMetadata\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GetDeviceMetadataCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: (data) => {\n if (\n _.context.input.requireLatestFirmware &&\n data.firmwareUpdateContext.availableUpdate !==\n undefined\n ) {\n return {\n ..._.context._internalState,\n error: new UnsupportedFirmwareDAError(\n \"Firmware is not the latest version\",\n ),\n };\n } else {\n return {\n ..._.context._internalState,\n deviceMetadata: data,\n };\n }\n },\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetDeviceMetadataCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"InstallDependencies\",\n },\n ],\n },\n InstallDependencies: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n src: \"installApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n applications: [\n ..._.context.input.dependencies,\n _.context.input.application,\n ],\n allowMissingApplication: false,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n installPlan:\n _.event.snapshot.context.intermediateValue.installPlan,\n }),\n }),\n },\n onDone: {\n target: \"InstallDependenciesCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: (data) => ({\n ..._.context._internalState,\n installResult: data,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n InstallDependenciesCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"OpenApp\",\n },\n ],\n },\n OpenApp: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n src: \"openApp\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n appName: _.context.input.application.name,\n compatibleAppNames: this.input.compatibleAppNames,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n installPlan: null,\n }),\n }),\n },\n onDone: {\n target: \"OpenAppCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n OpenAppCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (args) => {\n const { context } = args;\n const { error, deviceMetadata, installResult } = context._internalState;\n if (error) {\n return Left(error);\n }\n return Right({\n deviceMetadata: deviceMetadata!,\n installResult: installResult!,\n });\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["OpenAppWithDependenciesDeviceAction_exports", "__export", "OpenAppWithDependenciesDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_GetDeviceMetadataDeviceAction", "import_InstallOrUpdateAppsDeviceAction", "import_OpenAppDeviceAction", "import_XStateDeviceAction", "internalApi", "unlockTimeout", "getMetadataMachine", "installAppsMachine", "openAppMachine", "context", "_", "data", "error", "args", "deviceMetadata", "installResult"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var D=require("../../../device-action/__test-utils__/makeInternalApi"),n=require("../../../device-action/__test-utils__/setupTestMachine"),p=require("../../../device-action/__test-utils__/testDeviceActionStates"),e=require("../../../device-action/model/DeviceActionState"),t=require("../../../device-action/model/UserInteractionRequired"),d=require("../../../device-action/os/Errors"),l=require("./OpenAppWithDependenciesDeviceAction");vi.mock("@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction");vi.mock("@api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction");vi.mock("@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction");describe("OpenAppWithDependenciesDeviceAction",()=>{const c=(0,D.makeDeviceActionInternalApiMock)(),u={firmwareUpdateContext:{}},s={requiredUserInteraction:t.UserInteractionRequired.None,installPlan:{installPlan:[{versionName:"1inch"}],alreadyInstalled:["Ethereum","Uniswap"],missingApplications:[""],currentIndex:0,currentProgress:.5}},m={successfullyInstalled:[{versionName:"1inch"}],alreadyInstalled:["Ethereum","Uniswap"],missingApplications:[""]};beforeEach(()=>{vi.clearAllMocks()}),describe("success cases",()=>{it("Open app with dependencies",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u),(0,n.setupInstallOrUpdateAppsMock)(m,s),(0,n.setupOpenAppMock)();const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.ConfirmOpenApp,installPlan:null},status:e.DeviceActionStatus.Pending},{output:{deviceMetadata:u,installResult:m},status:e.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})}))}),describe("error cases",()=>{it("Get device metadata error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u,!0);const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("GetDeviceMetadata failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})})),it("Unsupported firmware",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)({firmwareUpdateContext:{availableUpdate:"mockUpdate"}});const r=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!0}}),A=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnsupportedFirmwareDAError("Firmware is not the latest version"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(r,A,c,{onDone:a,onError:i})})),it("Install apps error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)({firmwareUpdateContext:{availableUpdate:"mockUpdate"}}),(0,n.setupInstallOrUpdateAppsMock)(m,s,!0);const r=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),A=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("InstallOrUpdateApps failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(r,A,c,{onDone:a,onError:i})})),it("Open app error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u),(0,n.setupInstallOrUpdateAppsMock)(m,s),(0,n.setupOpenAppMock)(!0);const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.ConfirmOpenApp,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("OpenApp failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})}))})});
|
|
2
|
+
//# sourceMappingURL=OpenAppWithDependenciesDeviceAction.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport {\n setupGetDeviceMetadataMock,\n setupInstallOrUpdateAppsMock,\n setupOpenAppMock,\n} from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n UnknownDAError,\n UnsupportedFirmwareDAError,\n} from \"@api/device-action/os/Errors\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { InstallOrUpdateAppsDAIntermediateValue } from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nimport { OpenAppWithDependenciesDeviceAction } from \"./OpenAppWithDependenciesDeviceAction\";\nimport type { OpenAppWithDependenciesDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\");\nvi.mock(\n \"@api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction\",\n);\nvi.mock(\n \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\",\n);\n\ndescribe(\"OpenAppWithDependenciesDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n const DEVICE_METADATA = {\n firmwareUpdateContext: {},\n } as unknown as GetDeviceMetadataDAOutput;\n\n const INSTALL_INTERMEDIATE_VALUE: InstallOrUpdateAppsDAIntermediateValue = {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n installPlan: [{ versionName: \"1inch\" }] as unknown as Application[],\n alreadyInstalled: [\"Ethereum\", \"Uniswap\"],\n missingApplications: [\"\"],\n currentIndex: 0,\n currentProgress: 0.5,\n },\n };\n\n const INSTALL_RESULT = {\n successfullyInstalled: [\n { versionName: \"1inch\" },\n ] as unknown as Application[],\n alreadyInstalled: [\"Ethereum\", \"Uniswap\"],\n missingApplications: [\"\"],\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"success cases\", () => {\n it(\"Open app with dependencies\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock(DEVICE_METADATA);\n setupInstallOrUpdateAppsMock(\n INSTALL_RESULT,\n INSTALL_INTERMEDIATE_VALUE,\n );\n setupOpenAppMock();\n const deviceAction = new OpenAppWithDependenciesDeviceAction({\n input: {\n application: { name: \"Ethereum\" },\n dependencies: [{ name: \"Uniswap\" }, { name: \"1inch\" }],\n requireLatestFirmware: false,\n },\n });\n\n const expectedStates: Array<OpenAppWithDependenciesDAState> = [\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallOrUpdateApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: INSTALL_INTERMEDIATE_VALUE,\n status: DeviceActionStatus.Pending,\n },\n // OpenApp\n {\n intermediateValue: INSTALL_INTERMEDIATE_VALUE,\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n deviceMetadata: DEVICE_METADATA,\n installResult: INSTALL_RESULT,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n\n describe(\"error cases\", () => {\n it(\"Get device metadata error\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock(DEVICE_METADATA, true);\n const deviceAction = new OpenAppWithDependenciesDeviceAction({\n input: {\n application: { name: \"Ethereum\" },\n dependencies: [{ name: \"Uniswap\" }, { name: \"1inch\" }],\n requireLatestFirmware: false,\n },\n });\n\n const expectedStates: Array<OpenAppWithDependenciesDAState> = [\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"GetDeviceMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Unsupported firmware\", () =>\n new Promise<void>((resolve, reject) => {\n const metadataWithUpdate = {\n firmwareUpdateContext: {\n availableUpdate: \"mockUpdate\",\n },\n } as unknown as GetDeviceMetadataDAOutput;\n setupGetDeviceMetadataMock(metadataWithUpdate);\n const deviceAction = new OpenAppWithDependenciesDeviceAction({\n input: {\n application: { name: \"Ethereum\" },\n dependencies: [{ name: \"Uniswap\" }, { name: \"1inch\" }],\n requireLatestFirmware: true,\n },\n });\n\n const expectedStates: Array<OpenAppWithDependenciesDAState> = [\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnsupportedFirmwareDAError(\n \"Firmware is not the latest version\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Install apps error\", () =>\n new Promise<void>((resolve, reject) => {\n const metadataWithUpdate = {\n firmwareUpdateContext: {\n availableUpdate: \"mockUpdate\",\n },\n } as unknown as GetDeviceMetadataDAOutput;\n setupGetDeviceMetadataMock(metadataWithUpdate);\n setupInstallOrUpdateAppsMock(\n INSTALL_RESULT,\n INSTALL_INTERMEDIATE_VALUE,\n true,\n );\n const deviceAction = new OpenAppWithDependenciesDeviceAction({\n input: {\n application: { name: \"Ethereum\" },\n dependencies: [{ name: \"Uniswap\" }, { name: \"1inch\" }],\n requireLatestFirmware: false,\n },\n });\n\n const expectedStates: Array<OpenAppWithDependenciesDAState> = [\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallOrUpdateApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: INSTALL_INTERMEDIATE_VALUE,\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"InstallOrUpdateApps failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Open app error\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock(DEVICE_METADATA);\n setupInstallOrUpdateAppsMock(\n INSTALL_RESULT,\n INSTALL_INTERMEDIATE_VALUE,\n );\n setupOpenAppMock(true);\n const deviceAction = new OpenAppWithDependenciesDeviceAction({\n input: {\n application: { name: \"Ethereum\" },\n dependencies: [{ name: \"Uniswap\" }, { name: \"1inch\" }],\n requireLatestFirmware: false,\n },\n });\n\n const expectedStates: Array<OpenAppWithDependenciesDAState> = [\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallOrUpdateApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: INSTALL_INTERMEDIATE_VALUE,\n status: DeviceActionStatus.Pending,\n },\n // OpenApp\n {\n intermediateValue: INSTALL_INTERMEDIATE_VALUE,\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"OpenApp failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_OpenAppWithDependenciesDeviceAction", "apiMock", "DEVICE_METADATA", "INSTALL_INTERMEDIATE_VALUE", "INSTALL_RESULT", "resolve", "reject", "deviceAction", "expectedStates"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var c=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let p of o(e))!A.call(t,p)&&p!==i&&r(t,p,{get:()=>e[p],enumerable:!(n=a(e,p))||n.enumerable});return t};var d=t=>c(r({},"__esModule",{value:!0}),t);var D={};module.exports=d(D);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/OpenAppWithDependencies/types.ts"],
|
|
4
|
+
"sourcesContent": ["import type { CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport type { DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport type {\n UnknownDAError,\n UnsupportedFirmwareDAError,\n} from \"@api/device-action/os/Errors\";\nimport type {\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDARequiredInteraction,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { GetDeviceStatusDAInput } from \"@api/device-action/os/GetDeviceStatus/types\";\nimport type {\n ApplicationDependency,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDARequiredInteraction,\n InstallPlan,\n} from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport type {\n OpenAppDAError,\n OpenAppDARequiredInteraction,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\n\nexport type OpenAppWithDependenciesDAOutput = {\n deviceMetadata: GetDeviceMetadataDAOutput;\n installResult: InstallOrUpdateAppsDAOutput;\n};\n\nexport type OpenAppWithDependenciesDAInput = GetDeviceStatusDAInput & {\n readonly application: ApplicationDependency;\n readonly dependencies: ApplicationDependency[];\n readonly compatibleAppNames?: string[];\n readonly requireLatestFirmware?: boolean;\n};\n\nexport type OpenAppWithDependenciesDAError =\n | InstallOrUpdateAppsDAError\n | OpenAppDAError\n | UnknownDAError\n | UnsupportedFirmwareDAError\n | CommandErrorResult[\"error\"];\n\nexport type OpenAppWithDependenciesDARequiredInteraction =\n | GetDeviceMetadataDARequiredInteraction\n | InstallOrUpdateAppsDARequiredInteraction\n | OpenAppDARequiredInteraction;\n\nexport type OpenAppWithDependenciesDAIntermediateValue = {\n requiredUserInteraction: OpenAppWithDependenciesDARequiredInteraction;\n installPlan: InstallPlan | null;\n};\n\nexport type OpenAppWithDependenciesDAState = DeviceActionState<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var I=(l,e)=>{for(var n in e)c(l,n,{get:e[n],enumerable:!0})},y=(l,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of A(e))!g.call(l,i)&&i!==n&&c(l,i,{get:()=>e[i],enumerable:!(t=v(e,i))||t.enumerable});return l};var M=l=>y(c({},"__esModule",{value:!0}),l);var P={};I(P,{BuildAppsInstallPlanTask:()=>D});module.exports=M(P);var f=require("semver"),p=require("../../device-action/os/Errors"),m=require("../../device-session/DeviceSessionState");class D{constructor(e,n){this.api=e;this.args=n;const t=e.getDeviceModel();this.deviceModelId=t.id}deviceModelId;run(){const e=this.api.getDeviceSessionState();if(e.sessionStateType===m.DeviceSessionStateType.Connected)return{error:new p.UnknownDAError("Invalid device state")};if(e.catalog===void 0)return{error:new p.UnknownDAError("Device apps metadata not fetched")};let n=[],t=[],i=[];for(const a of this.args.applications){const s=e.catalog.applications.find(r=>r.versionName===a.name),o=e.installedApps.find(r=>r.versionName===a.name);if(o!==void 0&&this.validateConstraint(o,s,a.constraints)){t=[...t,a.name];continue}if(s!==void 0)n=[...n,s];else if(this.args.allowMissingApplication)i=[...i,a.name];else return{error:new p.UnknownDAError(`Application ${a.name} not found in the catalog`)}}return n=[...n.reduce((a,s)=>{const o=s.parentName;if(o){const r=e.catalog.applications.find(d=>d.versionName===o),u=e.installedApps.find(d=>d.versionName===o);if(r&&!u)return[...a,r]}return a},[]),...n],{installPlan:n.filter((a,s)=>n.findIndex(o=>o.versionName===a.versionName)===s),missingApplications:i,alreadyInstalled:t}}validateConstraint(e,n,t){if(t===void 0)return!0;for(const i of t)if(!(i.exemptModels!==void 0&&i.exemptModels.includes(this.deviceModelId))&&!(i.applicableModels!==void 0&&!i.applicableModels.includes(this.deviceModelId)))return i.minVersion==="latest"?!n||(0,f.gte)(e.version,n.version):(0,f.gte)(e.version,i.minVersion);return!0}}0&&(module.exports={BuildAppsInstallPlanTask});
|
|
2
|
+
//# sourceMappingURL=BuildAppsInstallPlanTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/device-action/task/BuildAppsInstallPlanTask.ts"],
|
|
4
|
+
"sourcesContent": ["import { gte } from \"semver\";\n\nimport type { DeviceModelId } from \"@api/device/DeviceModel\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport type {\n ApplicationConstraint,\n ApplicationDependency,\n} from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nexport type BuildAppsInstallPlanTaskArgs = {\n /**\n * List of applications to install or update\n */\n readonly applications: ApplicationDependency[];\n\n /**\n * Indicates if the device action should fail if an application is missing from the app store.\n */\n readonly allowMissingApplication: boolean;\n};\n\nexport type BuildAppsInstallPlanTaskResult =\n | {\n installPlan: Application[];\n alreadyInstalled: string[];\n missingApplications: string[];\n }\n | {\n error: UnknownDAError;\n };\n\nexport class BuildAppsInstallPlanTask {\n private readonly deviceModelId: DeviceModelId;\n\n constructor(\n private readonly api: InternalApi,\n private readonly args: BuildAppsInstallPlanTaskArgs,\n ) {\n const deviceModel = api.getDeviceModel();\n this.deviceModelId = deviceModel.id;\n }\n\n run(): BuildAppsInstallPlanTaskResult {\n // Get device session state.\n const deviceState = this.api.getDeviceSessionState();\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return { error: new UnknownDAError(\"Invalid device state\") };\n }\n\n // Ensure the device metadata were correctly fetched.\n if (deviceState.catalog === undefined) {\n return { error: new UnknownDAError(\"Device apps metadata not fetched\") };\n }\n\n // Build the install plan\n let installPlan: Application[] = [];\n let alreadyInstalled: string[] = [];\n let missingApplications: string[] = [];\n for (const app of this.args.applications) {\n // Get app entry from catalog and from installed apps\n const catalogApp = deviceState.catalog.applications.find(\n (a) => a.versionName === app.name,\n );\n const installedApp = deviceState.installedApps.find(\n (a) => a.versionName === app.name,\n );\n\n // If app is already installed, with validated constraints, continue the iteration\n if (\n installedApp !== undefined &&\n this.validateConstraint(installedApp, catalogApp, app.constraints)\n ) {\n alreadyInstalled = [...alreadyInstalled, app.name];\n continue;\n }\n\n // Handle the catalog application\n if (catalogApp !== undefined) {\n // Add the catalog application to the install plan\n installPlan = [...installPlan, catalogApp];\n } else if (this.args.allowMissingApplication) {\n missingApplications = [...missingApplications, app.name];\n } else {\n // Fail immediately if missing application is not allowed\n return {\n error: new UnknownDAError(\n `Application ${app.name} not found in the catalog`,\n ),\n };\n }\n }\n\n // Find installPlan dependencies\n const dependencies = installPlan.reduce((apps, app) => {\n const dependency = app.parentName;\n if (dependency) {\n const catalogApp = deviceState.catalog!.applications.find(\n (a) => a.versionName === dependency,\n );\n const installedApp = deviceState.installedApps.find(\n (a) => a.versionName === dependency,\n );\n if (catalogApp && !installedApp) {\n return [...apps, catalogApp];\n }\n }\n return apps;\n }, [] as Application[]);\n\n // Reorder and deduplicate the install plan with its dependencies first\n installPlan = [...dependencies, ...installPlan];\n const reorderedInstallPlan = installPlan.filter(\n (app, index) =>\n installPlan.findIndex((a) => a.versionName === app.versionName) ===\n index,\n );\n\n return {\n installPlan: reorderedInstallPlan,\n missingApplications,\n alreadyInstalled,\n };\n }\n\n private validateConstraint(\n app: Application,\n catalogApp?: Application,\n constraints?: ApplicationConstraint[],\n ): boolean {\n if (constraints === undefined) {\n // No constraint\n return true;\n }\n\n // Validate the constraint\n for (const constraint of constraints) {\n // Is current device exempt from the constraint?\n if (\n constraint.exemptModels !== undefined &&\n constraint.exemptModels.includes(this.deviceModelId)\n ) {\n continue;\n }\n\n // Is current device not applicable for the constraint?\n if (\n constraint.applicableModels !== undefined &&\n !constraint.applicableModels.includes(this.deviceModelId)\n ) {\n continue;\n }\n\n // Validate the min version\n if (constraint.minVersion === \"latest\") {\n return !catalogApp || gte(app.version, catalogApp.version);\n } else {\n return gte(app.version, constraint.minVersion);\n }\n }\n\n // No constraint for the device\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoB,kBAIpBC,EAA+B,wCAK/BC,EAAuC,kDAyBhC,MAAMJ,CAAyB,CAGpC,YACmBK,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,EAEjB,MAAMC,EAAcF,EAAI,eAAe,EACvC,KAAK,cAAgBE,EAAY,EACnC,CARiB,cAUjB,KAAsC,CAEpC,MAAMC,EAAc,KAAK,IAAI,sBAAsB,EACnD,GAAIA,EAAY,mBAAqB,yBAAuB,UAC1D,MAAO,CAAE,MAAO,IAAI,iBAAe,sBAAsB,CAAE,EAI7D,GAAIA,EAAY,UAAY,OAC1B,MAAO,CAAE,MAAO,IAAI,iBAAe,kCAAkC,CAAE,EAIzE,IAAIC,EAA6B,CAAC,EAC9BC,EAA6B,CAAC,EAC9BC,EAAgC,CAAC,EACrC,UAAWC,KAAO,KAAK,KAAK,aAAc,CAExC,MAAMC,EAAaL,EAAY,QAAQ,aAAa,KACjDM,GAAMA,EAAE,cAAgBF,EAAI,IAC/B,EACMG,EAAeP,EAAY,cAAc,KAC5CM,GAAMA,EAAE,cAAgBF,EAAI,IAC/B,EAGA,GACEG,IAAiB,QACjB,KAAK,mBAAmBA,EAAcF,EAAYD,EAAI,WAAW,EACjE,CACAF,EAAmB,CAAC,GAAGA,EAAkBE,EAAI,IAAI,EACjD,QACF,CAGA,GAAIC,IAAe,OAEjBJ,EAAc,CAAC,GAAGA,EAAaI,CAAU,UAChC,KAAK,KAAK,wBACnBF,EAAsB,CAAC,GAAGA,EAAqBC,EAAI,IAAI,MAGvD,OAAO,CACL,MAAO,IAAI,iBACT,eAAeA,EAAI,IAAI,2BACzB,CACF,CAEJ,CAoBA,OAAAH,EAAc,CAAC,GAjBMA,EAAY,OAAO,CAACO,EAAMJ,IAAQ,CACrD,MAAMK,EAAaL,EAAI,WACvB,GAAIK,EAAY,CACd,MAAMJ,EAAaL,EAAY,QAAS,aAAa,KAClDM,GAAMA,EAAE,cAAgBG,CAC3B,EACMF,EAAeP,EAAY,cAAc,KAC5CM,GAAMA,EAAE,cAAgBG,CAC3B,EACA,GAAIJ,GAAc,CAACE,EACjB,MAAO,CAAC,GAAGC,EAAMH,CAAU,CAE/B,CACA,OAAOG,CACT,EAAG,CAAC,CAAkB,EAGU,GAAGP,CAAW,EAOvC,CACL,YAP2BA,EAAY,OACvC,CAACG,EAAKM,IACJT,EAAY,UAAWK,GAAMA,EAAE,cAAgBF,EAAI,WAAW,IAC9DM,CACJ,EAIE,oBAAAP,EACA,iBAAAD,CACF,CACF,CAEQ,mBACNE,EACAC,EACAM,EACS,CACT,GAAIA,IAAgB,OAElB,MAAO,GAIT,UAAWC,KAAcD,EAEvB,GACE,EAAAC,EAAW,eAAiB,QAC5BA,EAAW,aAAa,SAAS,KAAK,aAAa,IAOnD,EAAAA,EAAW,mBAAqB,QAChC,CAACA,EAAW,iBAAiB,SAAS,KAAK,aAAa,GAM1D,OAAIA,EAAW,aAAe,SACrB,CAACP,MAAc,OAAID,EAAI,QAASC,EAAW,OAAO,KAElD,OAAID,EAAI,QAASQ,EAAW,UAAU,EAKjD,MAAO,EACT,CACF",
|
|
6
|
+
"names": ["BuildAppsInstallPlanTask_exports", "__export", "BuildAppsInstallPlanTask", "__toCommonJS", "import_semver", "import_Errors", "import_DeviceSessionState", "api", "args", "deviceModel", "deviceState", "installPlan", "alreadyInstalled", "missingApplications", "app", "catalogApp", "a", "installedApp", "apps", "dependency", "index", "constraints", "constraint"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=require("../../device/DeviceModel"),a=require("../../device/DeviceStatus"),r=require("../../device-action/__test-utils__/makeInternalApi"),t=require("../../device-action/os/Errors"),i=require("../../device-session/DeviceSessionState"),s=require("./BuildAppsInstallPlanTask");describe("BuildAppsInstallPlanTask",()=>{const e=(0,r.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.clearAllMocks(),e.getDeviceModel.mockReturnValue({id:o.DeviceModelId.NANO_X})}),it("Success with no changes needed",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"},{name:"Bitcoin"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[],alreadyInstalled:["Ethereum","Bitcoin"],missingApplications:[]})}),it("Success with no constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.1.0"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"},{name:"Solana"},{name:"Cardano"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Solana",version:"1.2.0"},{versionName:"Cardano",version:"1.1.0"}],alreadyInstalled:["Ethereum"],missingApplications:[]})}),it("Success with applicable constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.2.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"Cardano",version:"1.1.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"1.6.0",applicableModels:[o.DeviceModelId.NANO_X]}]},{name:"Bitcoin",constraints:[{minVersion:"1.2.1",exemptModels:[o.DeviceModelId.NANO_S]}]},{name:"Solana",constraints:[{minVersion:"1.2.0"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"}],alreadyInstalled:[],missingApplications:[]})}),it("Success with non-applicable constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.2.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"Cardano",version:"1.1.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"1.6.0",exemptModels:[o.DeviceModelId.NANO_X]}]},{name:"Bitcoin",constraints:[{minVersion:"1.2.1",applicableModels:[o.DeviceModelId.NANO_S]}]},{name:"Cardano",constraints:[{minVersion:"1.1.0"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[],alreadyInstalled:["Ethereum","Bitcoin","Cardano"],missingApplications:[]})}),it("Success with applicable constraints latest version",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"MyShitCoin",version:"0.0.1"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"latest"}]},{name:"Bitcoin",constraints:[{minVersion:"latest"}]},{name:"MyShitCoin",constraints:[{minVersion:"latest"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0"}],alreadyInstalled:["Bitcoin","MyShitCoin"],missingApplications:[]})}),it("Success with dependencies",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"AlreadyInstalledDep",version:"1.2.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0",parentName:void 0},{versionName:"Solana",version:"1.2.0",parentName:void 0},{versionName:"MyEthShitCoin",version:"0.0.1",parentName:"Ethereum"},{versionName:"MySolShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"MyPumpFunShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"Cardano",version:"1.2.0",parentName:void 0},{versionName:"AlreadyInstalledDep",version:"1.2.0",parentName:"Cardano"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"MyEthShitCoin"},{name:"MySolShitCoin"},{name:"Solana"},{name:"MyPumpFunShitCoin"},{name:"AlreadyInstalledDep"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0",parentName:void 0},{versionName:"Solana",version:"1.2.0",parentName:void 0},{versionName:"MyEthShitCoin",version:"0.0.1",parentName:"Ethereum"},{versionName:"MySolShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"MyPumpFunShitCoin",version:"0.0.1",parentName:"Solana"}],alreadyInstalled:["AlreadyInstalledDep"],missingApplications:[]})}),it("Success with allowed missing applications",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"}],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"},{name:"Solana"},{name:"Cardano"}],allowMissingApplication:!0}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Solana",version:"1.2.0"}],alreadyInstalled:["Ethereum"],missingApplications:["Cardano"]})}),it("Error when device is in incorrect state",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.Connected,deviceStatus:a.DeviceStatus.CONNECTED});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new t.UnknownDAError("Invalid device state")})}),it("Error when device session was not populated",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[]});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new t.UnknownDAError("Device apps metadata not fetched")})}),it("Error when an app is not found in the catalog",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[],catalog:{applications:[],languagePackages:[]}});const n=new s.BuildAppsInstallPlanTask(e,{applications:[{name:"Ethereum"},{name:"Bitcoin"},{name:"Solana"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new t.UnknownDAError("Application Ethereum not found in the catalog")})})});
|
|
2
|
+
//# sourceMappingURL=BuildAppsInstallPlanTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/device-action/task/BuildAppsInstallPlanTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport type { TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nimport { BuildAppsInstallPlanTask } from \"./BuildAppsInstallPlanTask\";\n\ndescribe(\"BuildAppsInstallPlanTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceModel.mockReturnValue({\n id: DeviceModelId.NANO_X,\n } as unknown as TransportDeviceModel);\n });\n\n it(\"Success with no changes needed\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }, { name: \"Bitcoin\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Bitcoin\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with no constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"Cardano\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ],\n alreadyInstalled: [\"Ethereum\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with applicable constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.2.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n {\n name: \"Ethereum\",\n constraints: [\n { minVersion: \"1.6.0\", applicableModels: [DeviceModelId.NANO_X] },\n ],\n },\n {\n name: \"Bitcoin\",\n constraints: [\n { minVersion: \"1.2.1\", exemptModels: [DeviceModelId.NANO_S] },\n ],\n },\n { name: \"Solana\", constraints: [{ minVersion: \"1.2.0\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n ],\n alreadyInstalled: [],\n missingApplications: [],\n });\n });\n\n it(\"Success with non-applicable constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.2.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n {\n name: \"Ethereum\",\n constraints: [\n { minVersion: \"1.6.0\", exemptModels: [DeviceModelId.NANO_X] },\n ],\n },\n {\n name: \"Bitcoin\",\n constraints: [\n { minVersion: \"1.2.1\", applicableModels: [DeviceModelId.NANO_S] },\n ],\n },\n { name: \"Cardano\", constraints: [{ minVersion: \"1.1.0\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Bitcoin\", \"Cardano\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with applicable constraints latest version\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\", constraints: [{ minVersion: \"latest\" }] },\n { name: \"Bitcoin\", constraints: [{ minVersion: \"latest\" }] },\n { name: \"MyShitCoin\", constraints: [{ minVersion: \"latest\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [{ versionName: \"Ethereum\", version: \"1.6.0\" }],\n alreadyInstalled: [\"Bitcoin\", \"MyShitCoin\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with dependencies\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"AlreadyInstalledDep\", version: \"1.2.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\", parentName: undefined },\n { versionName: \"Solana\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"MyEthShitCoin\",\n version: \"0.0.1\",\n parentName: \"Ethereum\",\n },\n {\n versionName: \"MySolShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n {\n versionName: \"MyPumpFunShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n { versionName: \"Cardano\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"AlreadyInstalledDep\",\n version: \"1.2.0\",\n parentName: \"Cardano\",\n },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"MyEthShitCoin\" },\n { name: \"MySolShitCoin\" },\n { name: \"Solana\" },\n { name: \"MyPumpFunShitCoin\" },\n { name: \"AlreadyInstalledDep\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Ethereum\", version: \"1.6.0\", parentName: undefined },\n { versionName: \"Solana\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"MyEthShitCoin\",\n version: \"0.0.1\",\n parentName: \"Ethereum\",\n },\n {\n versionName: \"MySolShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n {\n versionName: \"MyPumpFunShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n ],\n alreadyInstalled: [\"AlreadyInstalledDep\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with allowed missing applications\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"Cardano\" },\n ],\n allowMissingApplication: true,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [{ versionName: \"Solana\", version: \"1.2.0\" }],\n alreadyInstalled: [\"Ethereum\"],\n missingApplications: [\"Cardano\"],\n });\n });\n\n it(\"Error when device is in incorrect state\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Invalid device state\"),\n });\n });\n\n it(\"Error when device session was not populated\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Device apps metadata not fetched\"),\n });\n });\n\n it(\"Error when an app is not found in the catalog\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [] as unknown as Application[],\n catalog: {\n applications: [] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Bitcoin\" },\n { name: \"Solana\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\n \"Application Ethereum not found in the catalog\",\n ),\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_DeviceModel", "import_DeviceStatus", "import_makeInternalApi", "import_Errors", "import_DeviceSessionState", "import_BuildAppsInstallPlanTask", "apiMock", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var R=(n,t)=>{for(var i in t)d(n,i,{get:t[i],enumerable:!0})},V=(n,t,i,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of L(t))!I.call(n,s)&&s!==i&&d(n,s,{get:()=>t[s],enumerable:!(p=k(t,s))||p.enumerable});return n};var F=n=>V(d({},"__esModule",{value:!0}),n);var x={};R(x,{GetApplicationsMetadataTask:()=>P});module.exports=F(x);var h=require("semver"),m=require("../../command/Errors"),r=require("../../command/model/CommandResult"),v=require("../../command/os/ListLanguagePackCommand");const M="0000000000000000000000000000000000000000000000000000000000000000";class P{constructor(t,i){this.api=t;this.args=i}async run(){const t=this.args.installedApps.filter(a=>this.isApplication(a)),i=this.api.getManagerApiService(),p=t.map(a=>a.hash),s=await i.getAppsByHash(p).chain(a=>i.getAppList(this.args.firmwareVersion.metadata).map(e=>({applications:a,catalog:e})));if(s.isLeft())return(0,r.CommandResultFactory)({error:new m.InvalidStatusWordError("Cannot get the application catalog")});const{applications:u,catalog:l}=s.unsafeCoerce(),y=u.reduce((a,e,o)=>{if(e!==null)return[...a,e];const g=t[o],f=l.find(w=>w.versionName===g.name);return f?[...a,f]:a},[]),C=u.filter(a=>a!==null).reduce((a,e)=>{const o=l.find(g=>g.versionName===e.versionName);return o&&(0,h.gt)(o.version,e.version)?[...a,o]:a},[]);let c=[];for(let a=0;;a++){const e=await this.api.sendCommand(new v.ListLanguagePackCommand({firstChunk:a===0}));if(!(0,r.isSuccessCommandResult)(e)||e.data===void 0)break;c=[...c,e.data]}const A=await i.getLanguagePackages(this.args.deviceVersion,this.args.firmware);return A.isRight()?(0,r.CommandResultFactory)({data:{applications:y,applicationsUpdates:C,installedLanguages:c,catalog:{applications:l,languagePackages:A.extract()}}}):(0,r.CommandResultFactory)({error:new m.InvalidStatusWordError("Cannot get the languages catalog")})}isApplication(t){return t.hashCode!==M}}0&&(module.exports={GetApplicationsMetadataTask});
|
|
2
|
+
//# sourceMappingURL=GetApplicationsMetadataTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/device-action/task/GetApplicationsMetadataTask.ts"],
|
|
4
|
+
"sourcesContent": ["import { gt } from \"semver\";\n\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { ListLanguagePackCommand } from \"@api/command/os/ListLanguagePackCommand\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type Catalog,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nexport type InstalledApp = {\n hash: string;\n hashCode: string;\n name: string;\n};\n\nexport type GetApplicationsMetadataTaskArgs = {\n deviceVersion: DeviceVersion;\n firmware: FinalFirmware;\n firmwareVersion: FirmwareVersion;\n installedApps: InstalledApp[];\n};\n\nexport type GetApplicationsMetadataTaskResult = CommandResult<{\n applications: Application[];\n applicationsUpdates: Application[];\n installedLanguages: InstalledLanguagePackage[];\n catalog: Catalog;\n}>;\n\nconst ZERO_HASH =\n \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nexport class GetApplicationsMetadataTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: GetApplicationsMetadataTaskArgs,\n ) {}\n\n async run(): Promise<GetApplicationsMetadataTaskResult> {\n // Get applications metadata\n const installedApps = this.args.installedApps.filter((app) =>\n this.isApplication(app),\n );\n const manager = this.api.getManagerApiService();\n const appHashes = installedApps.map((app) => app.hash);\n const result = await manager\n .getAppsByHash(appHashes)\n .chain((applications) =>\n manager\n .getAppList(this.args.firmwareVersion.metadata!)\n .map((catalog) => ({ applications, catalog })),\n );\n if (result.isLeft()) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the application catalog\"),\n });\n }\n const { applications, catalog } = result.unsafeCoerce();\n\n // Complete applications metadata using the catalog if needed\n const appsWithMetadata = applications.reduce((apps, app, index) => {\n if (app !== null) {\n // Is the app hash was found in app store, append its metadata\n return [...apps, app];\n }\n // For apps with non-deterministic hash (ie. Security Key, sideloaded app, ...),\n // use metadata of latest version from the catalog\n const installedApp = installedApps[index]!;\n const catalogApp = catalog.find(\n (c) => c.versionName === installedApp.name,\n );\n return catalogApp ? [...apps, catalogApp] : apps;\n }, [] as Application[]);\n\n // Filter apps metadata and catalog\n const filteredApps = applications.filter((app) => app !== null);\n const filteredCatalog = filteredApps.reduce((apps, app) => {\n const catalogApp = catalog.find((c) => c.versionName === app.versionName);\n if (catalogApp && gt(catalogApp.version, app.version)) {\n return [...apps, catalogApp];\n }\n return apps;\n }, [] as Application[]);\n\n // Get install language packages\n let installedLanguages: InstalledLanguagePackage[] = [];\n for (let i = 0; ; i++) {\n const language = await this.api.sendCommand(\n new ListLanguagePackCommand({ firstChunk: i === 0 }),\n );\n if (!isSuccessCommandResult(language) || language.data === undefined) {\n break;\n }\n installedLanguages = [...installedLanguages, language.data];\n }\n\n // Get all the available language packs for the device\n const languages = await manager.getLanguagePackages(\n this.args.deviceVersion,\n this.args.firmware,\n );\n if (languages.isRight()) {\n // Return the application metadata\n return CommandResultFactory({\n data: {\n applications: appsWithMetadata,\n applicationsUpdates: filteredCatalog,\n installedLanguages,\n catalog: {\n applications: catalog,\n languagePackages: languages.extract(),\n },\n },\n });\n } else {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the languages catalog\"),\n });\n }\n }\n\n private isApplication(app: InstalledApp): boolean {\n // Applications with no \"code\" hash are not real applications\n // (typically a language package).\n return app.hashCode !== ZERO_HASH;\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,kBAEnBC,EAAuC,+BACvCC,EAIO,4CACPC,EAAwC,mDA+BxC,MAAMC,EACJ,mEAEK,MAAMN,CAA4B,CACvC,YACmBO,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,CAChB,CAEH,MAAM,KAAkD,CAEtD,MAAMC,EAAgB,KAAK,KAAK,cAAc,OAAQC,GACpD,KAAK,cAAcA,CAAG,CACxB,EACMC,EAAU,KAAK,IAAI,qBAAqB,EACxCC,EAAYH,EAAc,IAAKC,GAAQA,EAAI,IAAI,EAC/CG,EAAS,MAAMF,EAClB,cAAcC,CAAS,EACvB,MAAOE,GACNH,EACG,WAAW,KAAK,KAAK,gBAAgB,QAAS,EAC9C,IAAKI,IAAa,CAAE,aAAAD,EAAc,QAAAC,CAAQ,EAAE,CACjD,EACF,GAAIF,EAAO,OAAO,EAChB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,oCAAoC,CACxE,CAAC,EAEH,KAAM,CAAE,aAAAC,EAAc,QAAAC,CAAQ,EAAIF,EAAO,aAAa,EAGhDG,EAAmBF,EAAa,OAAO,CAACG,EAAMP,EAAKQ,IAAU,CACjE,GAAIR,IAAQ,KAEV,MAAO,CAAC,GAAGO,EAAMP,CAAG,EAItB,MAAMS,EAAeV,EAAcS,CAAK,EAClCE,EAAaL,EAAQ,KACxBM,GAAMA,EAAE,cAAgBF,EAAa,IACxC,EACA,OAAOC,EAAa,CAAC,GAAGH,EAAMG,CAAU,EAAIH,CAC9C,EAAG,CAAC,CAAkB,EAIhBK,EADeR,EAAa,OAAQJ,GAAQA,IAAQ,IAAI,EACzB,OAAO,CAACO,EAAMP,IAAQ,CACzD,MAAMU,EAAaL,EAAQ,KAAMM,GAAMA,EAAE,cAAgBX,EAAI,WAAW,EACxE,OAAIU,MAAc,MAAGA,EAAW,QAASV,EAAI,OAAO,EAC3C,CAAC,GAAGO,EAAMG,CAAU,EAEtBH,CACT,EAAG,CAAC,CAAkB,EAGtB,IAAIM,EAAiD,CAAC,EACtD,QAASC,EAAI,GAAKA,IAAK,CACrB,MAAMC,EAAW,MAAM,KAAK,IAAI,YAC9B,IAAI,0BAAwB,CAAE,WAAYD,IAAM,CAAE,CAAC,CACrD,EACA,GAAI,IAAC,0BAAuBC,CAAQ,GAAKA,EAAS,OAAS,OACzD,MAEFF,EAAqB,CAAC,GAAGA,EAAoBE,EAAS,IAAI,CAC5D,CAGA,MAAMC,EAAY,MAAMf,EAAQ,oBAC9B,KAAK,KAAK,cACV,KAAK,KAAK,QACZ,EACA,OAAIe,EAAU,QAAQ,KAEb,wBAAqB,CAC1B,KAAM,CACJ,aAAcV,EACd,oBAAqBM,EACrB,mBAAAC,EACA,QAAS,CACP,aAAcR,EACd,iBAAkBW,EAAU,QAAQ,CACtC,CACF,CACF,CAAC,KAEM,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,kCAAkC,CACtE,CAAC,CAEL,CAEQ,cAAchB,EAA4B,CAGhD,OAAOA,EAAI,WAAaJ,CAC1B,CACF",
|
|
6
|
+
"names": ["GetApplicationsMetadataTask_exports", "__export", "GetApplicationsMetadataTask", "__toCommonJS", "import_semver", "import_Errors", "import_CommandResult", "import_ListLanguagePackCommand", "ZERO_HASH", "api", "args", "installedApps", "app", "manager", "appHashes", "result", "applications", "catalog", "appsWithMetadata", "apps", "index", "installedApp", "catalogApp", "c", "filteredCatalog", "installedLanguages", "i", "language", "languages"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("purify-ts"),g=require("../../command/Errors"),e=require("../../command/model/CommandResult"),c=require("../../device-action/__test-utils__/data"),d=require("../../device-action/__test-utils__/makeInternalApi"),o=require("./GetApplicationsMetadataTask");describe("GetApplicationsMetadataTask",()=>{const t=(0,d.makeDeviceActionInternalApiMock)(),m={id:7},h={id:361,version:"1.6.0",perso:"perso_11"},A={mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:"metadata"},w=[{name:"Ethereum",hash:"hash2",hashCode:"hashCode"},{name:"Language",hash:"hash3",hashCode:"0000000000000000000000000000000000000000000000000000000000000000"}],u=[c.ETH_APP_METADATA],p=[c.BTC_APP_METADATA,c.ETH_APP_METADATA],l=["fr","eng","it"],i={deviceVersion:m,firmware:h,firmwareVersion:A,installedApps:w},n={getAppsByHash:vi.fn(),getAppList:vi.fn(),getLanguagePackages:vi.fn()};beforeEach(()=>{vi.clearAllMocks(),t.sendCommand.mockResolvedValue((0,e.CommandResultFactory)({data:void 0})),t.getManagerApiService.mockReturnValue(n),n.getAppsByHash.mockReturnValue((0,s.EitherAsync)(async()=>u)),n.getAppList.mockReturnValue((0,s.EitherAsync)(async()=>p)),n.getLanguagePackages.mockReturnValue((0,s.EitherAsync)(async()=>l))}),it("Success without updates",async()=>{const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({data:{applications:u,applicationsUpdates:[],installedLanguages:[],catalog:{applications:p,languagePackages:l}}}))}),it("Success without languages",async()=>{t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{id:1,size:15}})).mockResolvedValueOnce((0,e.CommandResultFactory)({data:{id:2,size:17}}));const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({data:{applications:u,applicationsUpdates:[],installedLanguages:[{id:1,size:15},{id:2,size:17}],catalog:{applications:p,languagePackages:l}}}))}),it("Success with an available update",async()=>{const a={...c.BTC_APP_METADATA,version:"1.0.0"};n.getAppsByHash.mockReturnValue((0,s.EitherAsync)(async()=>[a]));const r=await new o.GetApplicationsMetadataTask(t,i).run();expect(r).toStrictEqual((0,e.CommandResultFactory)({data:{applications:[a],applicationsUpdates:[c.BTC_APP_METADATA],installedLanguages:[],catalog:{applications:p,languagePackages:l}}})),expect(n.getAppsByHash).toHaveBeenCalledWith(["hash2"])}),it("Success with app hash not found",async()=>{n.getAppsByHash.mockReturnValue((0,s.EitherAsync)(async()=>[null]));const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({data:{applications:u,applicationsUpdates:[],installedLanguages:[],catalog:{applications:p,languagePackages:l}}}))}),it("should fail when apps hash cannot by retrieved",async()=>{n.getAppsByHash.mockReturnValueOnce((0,s.EitherAsync)(async({throwE:r})=>{r(new Error("error"))}));const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({error:new g.InvalidStatusWordError("Cannot get the application catalog")}))}),it("should fail when apps list cannot by retrieved",async()=>{n.getAppList.mockReturnValueOnce((0,s.EitherAsync)(async({throwE:r})=>{r(new Error("error"))}));const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({error:new g.InvalidStatusWordError("Cannot get the application catalog")}))}),it("should fail when languages cannot by retrieved",async()=>{n.getLanguagePackages.mockReturnValueOnce((0,s.EitherAsync)(async({throwE:r})=>{r(new Error("error"))}));const a=await new o.GetApplicationsMetadataTask(t,i).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({error:new g.InvalidStatusWordError("Cannot get the languages catalog")}))})});
|
|
2
|
+
//# sourceMappingURL=GetApplicationsMetadataTask.test.js.map
|