@ledgerhq/dmk-ledger-wallet 0.0.0-develop-20260728002407 → 0.0.0-develop-20260729002248
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/api/command/OsUpdate/Restore/RequestMasterConsentCommand.js +1 -1
- package/lib/cjs/api/command/OsUpdate/Restore/RequestMasterConsentCommand.js.map +3 -3
- package/lib/cjs/api/command/OsUpdate/Restore/RequestMasterConsentCommand.test.js +1 -1
- package/lib/cjs/api/command/OsUpdate/Restore/RequestMasterConsentCommand.test.js.map +3 -3
- package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js.map +3 -3
- package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js.map +3 -3
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.js.map +3 -3
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.test.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.test.js.map +3 -3
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/types.js +2 -0
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreBackup/types.js.map +7 -0
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.js.map +1 -1
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.test.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.test.js.map +2 -2
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.js.map +1 -1
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.js +1 -1
- package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.js.map +2 -2
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/index.js.map +3 -3
- package/lib/cjs/package.json +1 -1
- package/lib/esm/api/command/OsUpdate/Restore/RequestMasterConsentCommand.js +1 -1
- package/lib/esm/api/command/OsUpdate/Restore/RequestMasterConsentCommand.js.map +3 -3
- package/lib/esm/api/command/OsUpdate/Restore/RequestMasterConsentCommand.test.js +1 -1
- package/lib/esm/api/command/OsUpdate/Restore/RequestMasterConsentCommand.test.js.map +3 -3
- package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js.map +3 -3
- package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js.map +3 -3
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.js.map +3 -3
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.test.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.test.js.map +3 -3
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/types.js +2 -0
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreBackup/types.js.map +7 -0
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.js.map +1 -1
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.test.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.test.js.map +2 -2
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.js.map +1 -1
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.js +1 -1
- package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.js.map +2 -2
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +3 -3
- package/lib/esm/package.json +1 -1
- package/lib/types/api/command/OsUpdate/Restore/RequestMasterConsentCommand.d.ts +3 -1
- package/lib/types/api/command/OsUpdate/Restore/RequestMasterConsentCommand.d.ts.map +1 -1
- package/lib/types/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.d.ts.map +1 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.d.ts +1 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction.d.ts.map +1 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.d.ts +6 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.d.ts +13 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceActionErrors.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.d.ts +11 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/GetIsOnboarded.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.d.ts +5 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallLanguagePackage.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.d.ts +5 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/InstallOrUpdateApps.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.d.ts +17 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RequestMasterConsent.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.d.ts +6 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/RestoreAppsStorage.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.d.ts +6 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.d.ts +2 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/Substeps/UploadCustomLockScreen.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/types.d.ts +55 -0
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreBackup/types.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.d.ts.map +1 -1
- package/lib/types/api/device-action/OsUpdate/Shared/Substeps/GoToDashboard.test.d.ts.map +1 -0
- package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.d.ts.map +1 -1
- package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.d.ts.map +1 -1
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.js +0 -2
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.js.map +0 -7
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.js +0 -2
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.js.map +0 -7
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.js +0 -2
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.js.map +0 -7
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.js +0 -2
- package/lib/cjs/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.js.map +0 -7
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.js +0 -2
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.js.map +0 -7
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.js +0 -2
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.js.map +0 -7
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.js +0 -2
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.js.map +0 -7
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.js +0 -2
- package/lib/esm/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.js.map +0 -7
- package/lib/types/api/device-action/OsUpdate/Backup/Substeps/GoToDashboard.test.d.ts.map +0 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.d.ts +0 -5
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.d.ts.map +0 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.d.ts +0 -2
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/GoToDashboard.test.d.ts.map +0 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.d.ts +0 -5
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.d.ts.map +0 -1
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.d.ts +0 -2
- package/lib/types/api/device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/WaitForAppAndVersion.test.d.ts.map +0 -1
- /package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.js +0 -0
- /package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.js +0 -0
- /package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.js +0 -0
- /package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.js +0 -0
- /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.d.ts +0 -0
- /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/GoToDashboard.test.d.ts +0 -0
- /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.d.ts +0 -0
- /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/WaitForAppAndVersion.test.d.ts +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of i(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=p(e,o))||s.enumerable});return t};var g=t=>c(a({},"__esModule",{value:!0}),t);var A={};E(A,{MASTER_CONSENT_SUPPORTED_DEVICE_MODEL_IDS:()=>u,REQUEST_MASTER_CONSENT_ERRORS:()=>d,RequestMasterConsentCommand:()=>b,RequestMasterConsentCommandError:()=>C,isMasterConsentSupported:()=>R});module.exports=g(A);var r=require("@ledgerhq/device-management-kit");const u=new Set([r.DeviceModelId.STAX,r.DeviceModelId.FLEX,r.DeviceModelId.APEX]);function R(t){return u.has(t)}const d={5501:{message:"Consent failed"},5502:{message:"PIN not validated"}},m=(t,e)=>{if(!Number.isInteger(e)||e<0||e>255)throw new r.InvalidArgumentError(`${t} must be an integer between 0 and 255`)};class C extends r.DeviceExchangeError{constructor(e){super({tag:"RequestMasterConsentCommandError",...e})}}class b{name="RequestMasterConsent";args;header={cla:224,ins:111,p1:0,p2:0};constructor(e){m("appNumber",e.appNumber),m("appStorageNumber",e.appStorageNumber),this.args=e}getApdu(){const e={cla:this.header.cla,ins:this.header.ins,p1:this.header.p1,p2:this.header.p2};return new r.ApduBuilder(e).add8BitUIntToData(this.args.languagePackConsentEnabled?0:1).add8BitUIntToData(this.args.lockScreenPictureConsentEnabled?0:1).add8BitUIntToData(this.args.appNumber).add8BitUIntToData(this.args.appStorageNumber).build()}parseResponse(e){const n=new r.ApduParser(e);if(!r.CommandUtils.isSuccessResponse(e)){const s=n.encodeToHexaString(e.statusCode);return(0,r.isCommandErrorCode)(s,d)?(0,r.CommandResultFactory)({error:new C({...d[s],errorCode:s})}):(0,r.CommandResultFactory)({error:r.GlobalCommandErrorHandler.handle(e)})}return(0,r.CommandResultFactory)({data:void 0})}}0&&(module.exports={MASTER_CONSENT_SUPPORTED_DEVICE_MODEL_IDS,REQUEST_MASTER_CONSENT_ERRORS,RequestMasterConsentCommand,RequestMasterConsentCommandError,isMasterConsentSupported});
|
|
2
2
|
//# sourceMappingURL=RequestMasterConsentCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/command/OsUpdate/Restore/RequestMasterConsentCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandErrorArgs,\n type CommandErrors,\n type CommandResult,\n CommandResultFactory,\n CommandUtils,\n DeviceExchangeError,\n GlobalCommandErrorHandler,\n InvalidArgumentError,\n isCommandErrorCode,\n} from \"@ledgerhq/device-management-kit\";\n\nexport type RequestMasterConsentCommandArgs = {\n languagePackConsentEnabled: boolean;\n lockScreenPictureConsentEnabled: boolean;\n appNumber: number;\n appStorageNumber: number;\n};\nexport type RequestMasterConsentCommandErrorCodes = \"5501\" | \"5502\";\n\nexport type RequestMasterConsentCommandResult = CommandResult<\n void,\n RequestMasterConsentCommandErrorCodes\n>;\nexport const REQUEST_MASTER_CONSENT_ERRORS: CommandErrors<RequestMasterConsentCommandErrorCodes> =\n {\n \"5501\": { message: \"Consent failed\" },\n \"5502\": { message: \"PIN not validated\" },\n };\n\nconst assert8BitUInt = (name: string, value: number) => {\n if (!Number.isInteger(value) || value < 0x00 || value > 0xff) {\n throw new InvalidArgumentError(\n `${name} must be an integer between 0 and 255`,\n );\n }\n};\n\nexport class RequestMasterConsentCommandError extends DeviceExchangeError<RequestMasterConsentCommandErrorCodes> {\n constructor(args: CommandErrorArgs<RequestMasterConsentCommandErrorCodes>) {\n super({ tag: \"RequestMasterConsentCommandError\", ...args });\n }\n}\n\nexport class RequestMasterConsentCommand\n implements\n Command<\n void,\n RequestMasterConsentCommandArgs,\n RequestMasterConsentCommandErrorCodes\n >\n{\n readonly name = \"RequestMasterConsent\";\n\n readonly args: RequestMasterConsentCommandArgs;\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6f,\n p1: 0x00,\n p2: 0x00,\n };\n\n constructor(args: RequestMasterConsentCommandArgs) {\n assert8BitUInt(\"appNumber\", args.appNumber);\n assert8BitUInt(\"appStorageNumber\", args.appStorageNumber);\n this.args = args;\n }\n\n getApdu(): Apdu {\n const apduArgs: ApduBuilderArgs = {\n cla: this.header.cla,\n ins: this.header.ins,\n p1: this.header.p1,\n p2: this.header.p2,\n };\n return new ApduBuilder(apduArgs)\n .add8BitUIntToData(this.args.languagePackConsentEnabled ? 0x00 : 0x01)\n .add8BitUIntToData(\n this.args.lockScreenPictureConsentEnabled ? 0x00 : 0x01,\n )\n .add8BitUIntToData(this.args.appNumber)\n .add8BitUIntToData(this.args.appStorageNumber)\n .build();\n }\n\n parseResponse(apduResponse: ApduResponse): RequestMasterConsentCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, REQUEST_MASTER_CONSENT_ERRORS)) {\n return CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n ...REQUEST_MASTER_CONSENT_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,
|
|
6
|
-
"names": ["RequestMasterConsentCommand_exports", "__export", "REQUEST_MASTER_CONSENT_ERRORS", "RequestMasterConsentCommand", "RequestMasterConsentCommandError", "__toCommonJS", "import_device_management_kit", "assert8BitUInt", "name", "value", "args", "apduArgs", "apduResponse", "parser", "errorCode"]
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandErrorArgs,\n type CommandErrors,\n type CommandResult,\n CommandResultFactory,\n CommandUtils,\n DeviceExchangeError,\n DeviceModelId,\n GlobalCommandErrorHandler,\n InvalidArgumentError,\n isCommandErrorCode,\n} from \"@ledgerhq/device-management-kit\";\n\nexport const MASTER_CONSENT_SUPPORTED_DEVICE_MODEL_IDS: Set<DeviceModelId> =\n new Set([DeviceModelId.STAX, DeviceModelId.FLEX, DeviceModelId.APEX]);\n\nexport function isMasterConsentSupported(\n deviceModelId: DeviceModelId,\n): boolean {\n return MASTER_CONSENT_SUPPORTED_DEVICE_MODEL_IDS.has(deviceModelId);\n}\n\nexport type RequestMasterConsentCommandArgs = {\n languagePackConsentEnabled: boolean;\n lockScreenPictureConsentEnabled: boolean;\n appNumber: number;\n appStorageNumber: number;\n};\nexport type RequestMasterConsentCommandErrorCodes = \"5501\" | \"5502\";\n\nexport type RequestMasterConsentCommandResult = CommandResult<\n void,\n RequestMasterConsentCommandErrorCodes\n>;\nexport const REQUEST_MASTER_CONSENT_ERRORS: CommandErrors<RequestMasterConsentCommandErrorCodes> =\n {\n \"5501\": { message: \"Consent failed\" },\n \"5502\": { message: \"PIN not validated\" },\n };\n\nconst assert8BitUInt = (name: string, value: number) => {\n if (!Number.isInteger(value) || value < 0x00 || value > 0xff) {\n throw new InvalidArgumentError(\n `${name} must be an integer between 0 and 255`,\n );\n }\n};\n\nexport class RequestMasterConsentCommandError extends DeviceExchangeError<RequestMasterConsentCommandErrorCodes> {\n constructor(args: CommandErrorArgs<RequestMasterConsentCommandErrorCodes>) {\n super({ tag: \"RequestMasterConsentCommandError\", ...args });\n }\n}\n\nexport class RequestMasterConsentCommand\n implements\n Command<\n void,\n RequestMasterConsentCommandArgs,\n RequestMasterConsentCommandErrorCodes\n >\n{\n readonly name = \"RequestMasterConsent\";\n\n readonly args: RequestMasterConsentCommandArgs;\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6f,\n p1: 0x00,\n p2: 0x00,\n };\n\n constructor(args: RequestMasterConsentCommandArgs) {\n assert8BitUInt(\"appNumber\", args.appNumber);\n assert8BitUInt(\"appStorageNumber\", args.appStorageNumber);\n this.args = args;\n }\n\n getApdu(): Apdu {\n const apduArgs: ApduBuilderArgs = {\n cla: this.header.cla,\n ins: this.header.ins,\n p1: this.header.p1,\n p2: this.header.p2,\n };\n return new ApduBuilder(apduArgs)\n .add8BitUIntToData(this.args.languagePackConsentEnabled ? 0x00 : 0x01)\n .add8BitUIntToData(\n this.args.lockScreenPictureConsentEnabled ? 0x00 : 0x01,\n )\n .add8BitUIntToData(this.args.appNumber)\n .add8BitUIntToData(this.args.appStorageNumber)\n .build();\n }\n\n parseResponse(apduResponse: ApduResponse): RequestMasterConsentCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, REQUEST_MASTER_CONSENT_ERRORS)) {\n return CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n ...REQUEST_MASTER_CONSENT_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+CAAAE,EAAA,kCAAAC,EAAA,gCAAAC,EAAA,qCAAAC,EAAA,6BAAAC,IAAA,eAAAC,EAAAP,GAAA,IAAAQ,EAiBO,2CAEA,MAAMN,EACX,IAAI,IAAI,CAAC,gBAAc,KAAM,gBAAc,KAAM,gBAAc,IAAI,CAAC,EAE/D,SAASI,EACdG,EACS,CACT,OAAOP,EAA0C,IAAIO,CAAa,CACpE,CAcO,MAAMN,EACX,CACE,KAAQ,CAAE,QAAS,gBAAiB,EACpC,KAAQ,CAAE,QAAS,mBAAoB,CACzC,EAEIO,EAAiB,CAACC,EAAcC,IAAkB,CACtD,GAAI,CAAC,OAAO,UAAUA,CAAK,GAAKA,EAAQ,GAAQA,EAAQ,IACtD,MAAM,IAAI,uBACR,GAAGD,CAAI,uCACT,CAEJ,EAEO,MAAMN,UAAyC,qBAA2D,CAC/G,YAAYQ,EAA+D,CACzE,MAAM,CAAE,IAAK,mCAAoC,GAAGA,CAAK,CAAC,CAC5D,CACF,CAEO,MAAMT,CAOb,CACW,KAAO,uBAEP,KAEQ,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAEA,YAAYS,EAAuC,CACjDH,EAAe,YAAaG,EAAK,SAAS,EAC1CH,EAAe,mBAAoBG,EAAK,gBAAgB,EACxD,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,MAAMC,EAA4B,CAChC,IAAK,KAAK,OAAO,IACjB,IAAK,KAAK,OAAO,IACjB,GAAI,KAAK,OAAO,GAChB,GAAI,KAAK,OAAO,EAClB,EACA,OAAO,IAAI,cAAYA,CAAQ,EAC5B,kBAAkB,KAAK,KAAK,2BAA6B,EAAO,CAAI,EACpE,kBACC,KAAK,KAAK,gCAAkC,EAAO,CACrD,EACC,kBAAkB,KAAK,KAAK,SAAS,EACrC,kBAAkB,KAAK,KAAK,gBAAgB,EAC5C,MAAM,CACX,CAEA,cAAcC,EAA+D,CAC3E,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAC1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWd,CAA6B,KACtD,wBAAqB,CAC1B,MAAO,IAAIE,EAAiC,CAC1C,GAAGF,EAA8Bc,CAAS,EAC1C,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,SAAO,wBAAqB,CAC1B,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["RequestMasterConsentCommand_exports", "__export", "MASTER_CONSENT_SUPPORTED_DEVICE_MODEL_IDS", "REQUEST_MASTER_CONSENT_ERRORS", "RequestMasterConsentCommand", "RequestMasterConsentCommandError", "isMasterConsentSupported", "__toCommonJS", "import_device_management_kit", "deviceModelId", "assert8BitUInt", "name", "value", "args", "apduArgs", "apduResponse", "parser", "errorCode"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),t=require("./RequestMasterConsentCommand");describe("RequestMasterConsentCommand",()=>{describe("Name",()=>{it("name should be 'RequestMasterConsent'",()=>{const r=new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,appNumber:1,appStorageNumber:1});expect(r.name).toBe("RequestMasterConsent")})}),describe("Command",()=>{it("should return the correct APDU for requesting master consent",()=>{const r=new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,appNumber:1,appStorageNumber:1}),n=Uint8Array.from([224,111,0,0,4,0,0,1,1]),a=r.getApdu();expect(a.getRawApdu()).toEqual(n)}),it.each([{field:"appNumber",args:{appNumber:-1,appStorageNumber:1}},{field:"appNumber",args:{appNumber:256,appStorageNumber:1}},{field:"appNumber",args:{appNumber:1.5,appStorageNumber:1}},{field:"appStorageNumber",args:{appNumber:1,appStorageNumber:-1}},{field:"appStorageNumber",args:{appNumber:1,appStorageNumber:256}},{field:"appStorageNumber",args:{appNumber:1,appStorageNumber:1.5}}])("should throw when $field is not an 8-bit unsigned integer",({field:r,args:n})=>{const a=`${r} must be an integer between 0 and 255`;let o;try{new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,...n})}catch(s){o=s}expect(o).toBeInstanceOf(e.InvalidArgumentError),expect(o.originalError.message).toBe(a)}),it.each([e.DeviceModelId.STAX,e.DeviceModelId.FLEX,e.DeviceModelId.APEX])("should return true for %s",r=>{expect((0,t.isMasterConsentSupported)(r)).toBe(!0)}),it.each([e.DeviceModelId.NANO_X,e.DeviceModelId.NANO_SP])("should return false for %s",r=>{expect((0,t.isMasterConsentSupported)(r)).toBe(!1)})}),describe("Success response",()=>{it("should return the correct response",()=>{const r=new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,appNumber:1,appStorageNumber:1}),n={data:void 0,status:"SUCCESS"},a=r.parseResponse(new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:Uint8Array.from([])}));expect((0,e.isSuccessCommandResult)(a)).toBe(!0),expect(a).toEqual(n)})}),describe("Error response",()=>{it("should return a RequestMasterConsentCommandError for status 0x5501",()=>{const r=new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,appNumber:1,appStorageNumber:1}),n=(0,e.CommandResultFactory)({error:new t.RequestMasterConsentCommandError({message:"Consent failed",errorCode:"5501"})}),a=r.parseResponse(new e.ApduResponse({statusCode:Uint8Array.from([85,1]),data:Uint8Array.from([])}));expect(a).toEqual(n)}),it("should return a RequestMasterConsentCommandError for status 0x5502",()=>{const r=new t.RequestMasterConsentCommand({languagePackConsentEnabled:!0,lockScreenPictureConsentEnabled:!0,appNumber:1,appStorageNumber:1}),n=(0,e.CommandResultFactory)({error:new t.RequestMasterConsentCommandError({message:"PIN not validated",errorCode:"5502"})}),a=r.parseResponse(new e.ApduResponse({statusCode:Uint8Array.from([85,2]),data:Uint8Array.from([])}));expect(a).toEqual(n)})})});
|
|
2
2
|
//# sourceMappingURL=RequestMasterConsentCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/command/OsUpdate/Restore/RequestMasterConsentCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidArgumentError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n RequestMasterConsentCommand,\n RequestMasterConsentCommandError,\n} from \"./RequestMasterConsentCommand\";\n\ndescribe(\"RequestMasterConsentCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'RequestMasterConsent'\", () => {\n // ACT\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n\n // ASSERT\n expect(command.name).toBe(\"RequestMasterConsent\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for requesting master consent\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedApdu = Uint8Array.from([\n 0xe0, 0x6f, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x01,\n ]);\n\n // ACT\n const apdu = command.getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n\n it.each([\n {\n field: \"appNumber\",\n args: { appNumber: -1, appStorageNumber: 1 },\n },\n {\n field: \"appNumber\",\n args: { appNumber: 256, appStorageNumber: 1 },\n },\n {\n field: \"appNumber\",\n args: { appNumber: 1.5, appStorageNumber: 1 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: -1 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: 256 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: 1.5 },\n },\n ])(\n \"should throw when $field is not an 8-bit unsigned integer\",\n ({ field, args }) => {\n const expectedErrorMessage = `${field} must be an integer between 0 and 255`;\n\n // ACT\n let caughtError: unknown;\n try {\n new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n ...args,\n });\n } catch (error) {\n caughtError = error;\n }\n\n // ASSERT\n expect(caughtError).toBeInstanceOf(InvalidArgumentError);\n expect(\n (caughtError as InvalidArgumentError).originalError.message,\n ).toBe(expectedErrorMessage);\n },\n );\n });\n\n describe(\"Success response\", () => {\n it(\"should return the correct response\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = {\n data: undefined,\n status: \"SUCCESS\",\n };\n\n // ACT\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n }),\n );\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual(expectedResult);\n });\n });\n\n describe(\"Error response\", () => {\n it(\"should return a RequestMasterConsentCommandError for status 0x5501\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n message: \"Consent failed\",\n errorCode: \"5501\",\n }),\n });\n\n // ACT\n const commandResult = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x55, 0x01]),\n data: Uint8Array.from([]),\n }),\n );\n\n // ASSERT\n expect(commandResult).toEqual(expectedResult);\n });\n\n it(\"should return a RequestMasterConsentCommandError for status 0x5502\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n message: \"PIN not validated\",\n errorCode: \"5502\",\n }),\n });\n\n // ACT\n const commandResult = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x55, 0x02]),\n data: Uint8Array.from([]),\n }),\n );\n\n // ASSERT\n expect(commandResult).toEqual(expectedResult);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,
|
|
6
|
-
"names": ["import_device_management_kit", "import_RequestMasterConsentCommand", "command", "expectedApdu", "apdu", "field", "args", "expectedErrorMessage", "caughtError", "error", "expectedResult", "result", "commandResult"]
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n DeviceModelId,\n InvalidArgumentError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n isMasterConsentSupported,\n RequestMasterConsentCommand,\n RequestMasterConsentCommandError,\n} from \"./RequestMasterConsentCommand\";\n\ndescribe(\"RequestMasterConsentCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'RequestMasterConsent'\", () => {\n // ACT\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n\n // ASSERT\n expect(command.name).toBe(\"RequestMasterConsent\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for requesting master consent\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedApdu = Uint8Array.from([\n 0xe0, 0x6f, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x01,\n ]);\n\n // ACT\n const apdu = command.getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n\n it.each([\n {\n field: \"appNumber\",\n args: { appNumber: -1, appStorageNumber: 1 },\n },\n {\n field: \"appNumber\",\n args: { appNumber: 256, appStorageNumber: 1 },\n },\n {\n field: \"appNumber\",\n args: { appNumber: 1.5, appStorageNumber: 1 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: -1 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: 256 },\n },\n {\n field: \"appStorageNumber\",\n args: { appNumber: 1, appStorageNumber: 1.5 },\n },\n ])(\n \"should throw when $field is not an 8-bit unsigned integer\",\n ({ field, args }) => {\n const expectedErrorMessage = `${field} must be an integer between 0 and 255`;\n\n // ACT\n let caughtError: unknown;\n try {\n new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n ...args,\n });\n } catch (error) {\n caughtError = error;\n }\n\n // ASSERT\n expect(caughtError).toBeInstanceOf(InvalidArgumentError);\n expect(\n (caughtError as InvalidArgumentError).originalError.message,\n ).toBe(expectedErrorMessage);\n },\n );\n\n it.each([DeviceModelId.STAX, DeviceModelId.FLEX, DeviceModelId.APEX])(\n \"should return true for %s\",\n (deviceModelId) => {\n expect(isMasterConsentSupported(deviceModelId)).toBe(true);\n },\n );\n\n it.each([DeviceModelId.NANO_X, DeviceModelId.NANO_SP])(\n \"should return false for %s\",\n (deviceModelId) => {\n expect(isMasterConsentSupported(deviceModelId)).toBe(false);\n },\n );\n });\n\n describe(\"Success response\", () => {\n it(\"should return the correct response\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = {\n data: undefined,\n status: \"SUCCESS\",\n };\n\n // ACT\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n }),\n );\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual(expectedResult);\n });\n });\n\n describe(\"Error response\", () => {\n it(\"should return a RequestMasterConsentCommandError for status 0x5501\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n message: \"Consent failed\",\n errorCode: \"5501\",\n }),\n });\n\n // ACT\n const commandResult = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x55, 0x01]),\n data: Uint8Array.from([]),\n }),\n );\n\n // ASSERT\n expect(commandResult).toEqual(expectedResult);\n });\n\n it(\"should return a RequestMasterConsentCommandError for status 0x5502\", () => {\n // ARRANGE\n const command = new RequestMasterConsentCommand({\n languagePackConsentEnabled: true,\n lockScreenPictureConsentEnabled: true,\n appNumber: 1,\n appStorageNumber: 1,\n });\n const expectedResult = CommandResultFactory({\n error: new RequestMasterConsentCommandError({\n message: \"PIN not validated\",\n errorCode: \"5502\",\n }),\n });\n\n // ACT\n const commandResult = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x55, 0x02]),\n data: Uint8Array.from([]),\n }),\n );\n\n // ASSERT\n expect(commandResult).toEqual(expectedResult);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_RequestMasterConsentCommand", "command", "expectedApdu", "apdu", "field", "args", "expectedErrorMessage", "caughtError", "error", "deviceModelId", "expectedResult", "result", "commandResult"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var I=(o,r)=>{for(var e in r)c(o,e,{get:r[e],enumerable:!0})},E=(o,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of h(r))!C.call(o,s)&&s!==e&&c(o,s,{get:()=>r[s],enumerable:!(t=A(r,s))||t.enumerable});return o};var v=o=>E(c({},"__esModule",{value:!0}),o);var V={};I(V,{CreateBackupDeviceAction:()=>f});module.exports=v(V);var i=require("@ledgerhq/device-management-kit"),u=require("purify-ts"),a=require("xstate"),p=require("../../../customLockScreenUtils/screenSpecs"),l=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),d=require("../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen"),g=require("../../../device-action/OsUpdate/Backup/Substeps/GetIsOnboarded"),m=require("../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId"),k=require("../../../device-action/OsUpdate/Backup/Substeps/ListInstalledApps"),n=require("../../../device-action/OsUpdate/Backup/types"),S=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),D=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");class f extends i.XStateDeviceAction{makeStateMachine(r){return(0,a.setup)({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:(0,D.waitForAppAndVersion)(r,this.input.unlockTimeout),goToDashboard:(0,S.goToDashboard)(r,this.input.unlockTimeout),getIsOnboarded:(0,a.fromPromise)((0,g.getIsOnboarded)(r)),getLanguageId:(0,a.fromPromise)((0,m.getLanguageId)(r)),listInstalledApps:(0,k.listInstalledApps)(r,this.input.unlockTimeout),downloadCustomLockScreen:(0,d.downloadCustomLockScreenDevice)(r,this.input.unlockTimeout,!0),backupAppsStorage:(0,a.fromPromise)((0,l.backupAppsStorage)(r,this.getLoggerFactory(r)))},guards:{isDeviceOnDashboard:({context:e})=>(0,i.isDashboardName)(e._internalState.currentApp),isDeviceOnboarded:({context:e})=>e._internalState.isDeviceOnboarded,isCustomLockScreenFeatureSupported:()=>(0,p.isCustomLockScreenSupported)(r.getDeviceModel().id),hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:(0,a.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"CreateBackupDeviceAction",initial:"WaitForAppAndVersion",context:({input:e})=>({input:{unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:i.UserInteractionRequired.None,step:n.CreateBackupSteps.Idle},_internalState:{error:null,currentApp:null,isDeviceOnboarded:!1,languageId:void 0,installedApps:[],backupApps:[],clsHexImage:void 0}}),states:{WaitForAppAndVersion:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,currentApp:t.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"GetIsOnboarded"},{target:"GoToDashboard"}]},GoToDashboard:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:()=>e.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},GetIsOnboarded:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.GetIsOnboarded})}),invoke:{src:"getIsOnboarded",onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,isDeviceOnboarded:t})})}),target:"CheckGetIsOnboarded"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetIsOnboarded:{always:[{guard:"hasError",target:"Error"},{target:"GetLanguage"}]},GetLanguage:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.GetLanguage})}),invoke:{src:"getLanguageId",onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,languageId:t})})}),target:"CheckGetLanguage"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetLanguage:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfDeviceIsOnboarded"}]},CheckIfDeviceIsOnboarded:{always:[{guard:"isDeviceOnboarded",target:"ListInstalledApps"},{target:"Success"}]},ListInstalledApps:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.ListInstalledApps})}),invoke:{src:"listInstalledApps",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,installedApps:t.installedApps.filter(s=>s.name!=="")})})}),target:"CheckListInstalledApps"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckListInstalledApps:{always:[{guard:"hasError",target:"Error"},{target:"BackupAppsStorage"}]},BackupAppsStorage:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.BackupAppsStorage})}),invoke:{src:"backupAppsStorage",input:({context:e})=>({installedApps:e._internalState.installedApps}),onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,backupApps:t})})}),target:"CheckBackupAppsStorage"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckBackupAppsStorage:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfDeviceSupportCustomLockScreenFeature"}]},CheckIfDeviceSupportCustomLockScreenFeature:{always:[{guard:"isCustomLockScreenFeatureSupported",target:"DownloadCustomLockScreen"},{target:"Success"}]},DownloadCustomLockScreen:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:n.CreateBackupSteps.DownloadCustomLockScreen})}),invoke:{src:"downloadCustomLockScreen",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout,allowedEmpty:!0}),onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,clsHexImage:"imageData"in t&&t.imageData.length>0?(0,i.bufferToHexaString)(t.imageData,!0):void 0})})}),target:"CheckDownloadCustomLockScreen"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckDownloadCustomLockScreen:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.error!==null?(0,u.Left)(e._internalState.error):(0,u.Right)({languageId:e._internalState.languageId,installedApps:e._internalState.backupApps,clsHexImage:e._internalState.clsHexImage,createdAt:new Date})})}}0&&(module.exports={CreateBackupDeviceAction});
|
|
2
2
|
//# sourceMappingURL=CreateBackupDeviceAction.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n bufferToHexaString,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isDashboardName,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getIsOnboarded } from \"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Backup/Substeps/GoToDashboard\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Backup/Substeps/WaitForAppAndVersion\";\nimport {\n type CreateBackupDAError,\n type CreateBackupDAInput,\n type CreateBackupDAIntermediateValue,\n type CreateBackupDAInternalState,\n type CreateBackupDAOutput,\n CreateBackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\n\nexport class CreateBackupDeviceAction extends XStateDeviceAction<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n> {\n protected override makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n > {\n type types = StateMachineTypes<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n >;\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n output: {} as types[\"output\"],\n context: {} as types[\"context\"],\n } as types,\n actors: {\n waitForAppAndVersion: waitForAppAndVersion(\n internalAPI,\n this.input.unlockTimeout,\n ),\n goToDashboard: goToDashboard(internalAPI, this.input.unlockTimeout),\n getIsOnboarded: fromPromise(getIsOnboarded(internalAPI)),\n getLanguageId: fromPromise(getLanguageId(internalAPI)),\n listInstalledApps: listInstalledApps(\n internalAPI,\n this.input.unlockTimeout,\n ),\n downloadCustomLockScreen: downloadCustomLockScreenDevice(\n internalAPI,\n this.input.unlockTimeout,\n true,\n ),\n backupAppsStorage: fromPromise(\n backupAppsStorage(internalAPI, this.getLoggerFactory(internalAPI)),\n ),\n },\n guards: {\n isDeviceOnDashboard: ({ context }) =>\n isDashboardName(context._internalState.currentApp),\n isDeviceOnboarded: ({ context }) =>\n context._internalState.isDeviceOnboarded,\n isCustomLockScreenFeatureSupported: () =>\n [DeviceModelId.APEX, DeviceModelId.FLEX, DeviceModelId.STAX].includes(\n internalAPI.getDeviceModel().id,\n ),\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: should never happen\n }),\n }),\n },\n }).createMachine({\n id: \"CreateBackupDeviceAction\",\n initial: \"WaitForAppAndVersion\",\n context: ({ input }) => ({\n input: {\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: CreateBackupSteps.Idle,\n },\n _internalState: {\n error: null,\n currentApp: null,\n isDeviceOnboarded: false,\n languageId: undefined,\n installedApps: [],\n backupApps: [],\n clsHexImage: undefined,\n },\n }),\n states: {\n WaitForAppAndVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.WaitForAppAndVersion,\n }),\n }),\n invoke: {\n src: \"waitForAppAndVersion\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n currentApp: output.name,\n }),\n });\n },\n }),\n target: \"CheckIfDeviceIsOnDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceIsOnDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDeviceOnDashboard\",\n target: \"GetIsOnboarded\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GoToDashboard,\n }),\n }),\n invoke: {\n src: \"goToDashboard\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => _.context._internalState,\n });\n },\n }),\n target: \"CheckGoToDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGoToDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"WaitForAppAndVersion\",\n },\n ],\n },\n GetIsOnboarded: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GetIsOnboarded,\n }),\n }),\n invoke: {\n src: \"getIsOnboarded\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (isDeviceOnboarded) => ({\n ..._.context._internalState,\n isDeviceOnboarded,\n }),\n });\n },\n }),\n target: \"CheckGetIsOnboarded\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetIsOnboarded: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"GetLanguage\",\n },\n ],\n },\n GetLanguage: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GetLanguage,\n }),\n }),\n invoke: {\n src: \"getLanguageId\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (languageId) => ({\n ..._.context._internalState,\n languageId,\n }),\n });\n },\n }),\n target: \"CheckGetLanguage\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetLanguage: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfDeviceIsOnboarded\",\n },\n ],\n },\n CheckIfDeviceIsOnboarded: {\n always: [\n {\n guard: \"isDeviceOnboarded\",\n target: \"ListInstalledApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n ListInstalledApps: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.ListInstalledApps,\n }),\n }),\n invoke: {\n src: \"listInstalledApps\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n installedApps: output.installedApps.filter(\n (app) => app.name !== \"\",\n ),\n }),\n });\n },\n }),\n target: \"CheckListInstalledApps\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckListInstalledApps: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"BackupAppsStorage\",\n },\n ],\n },\n BackupAppsStorage: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.BackupAppsStorage,\n }),\n }),\n invoke: {\n src: \"backupAppsStorage\",\n input: ({ context }) => ({\n installedApps: context._internalState.installedApps,\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (backupApps) => ({\n ..._.context._internalState,\n backupApps,\n }),\n });\n },\n }),\n target: \"CheckBackupAppsStorage\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckBackupAppsStorage: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfDeviceSupportCustomLockScreenFeature\",\n },\n ],\n },\n CheckIfDeviceSupportCustomLockScreenFeature: {\n always: [\n {\n guard: \"isCustomLockScreenFeatureSupported\",\n target: \"DownloadCustomLockScreen\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n DownloadCustomLockScreen: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.DownloadCustomLockScreen,\n }),\n }),\n invoke: {\n src: \"downloadCustomLockScreen\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n allowedEmpty: true,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n clsHexImage:\n \"imageData\" in output && output.imageData.length > 0\n ? bufferToHexaString(output.imageData, true)\n : undefined,\n }),\n });\n },\n }),\n target: \"CheckDownloadCustomLockScreen\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckDownloadCustomLockScreen: {\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: ({ context }) => {\n if (context._internalState.error !== null) {\n return Left(context._internalState.error);\n }\n return Right({\n languageId: context._internalState.languageId,\n installedApps: context._internalState.backupApps,\n clsHexImage: context._internalState.clsHexImage,\n createdAt: new Date(),\n });\n },\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,
|
|
6
|
-
"names": ["CreateBackupDeviceAction_exports", "__export", "CreateBackupDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetIsOnboarded", "import_GetLanguageId", "
|
|
4
|
+
"sourcesContent": ["import {\n bufferToHexaString,\n type DeviceActionStateMachine,\n type InternalApi,\n isDashboardName,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isCustomLockScreenSupported } from \"@api/customLockScreenUtils/screenSpecs\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getIsOnboarded } from \"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport {\n type CreateBackupDAError,\n type CreateBackupDAInput,\n type CreateBackupDAIntermediateValue,\n type CreateBackupDAInternalState,\n type CreateBackupDAOutput,\n CreateBackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nexport class CreateBackupDeviceAction extends XStateDeviceAction<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n> {\n protected override makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n > {\n type types = StateMachineTypes<\n CreateBackupDAOutput,\n CreateBackupDAInput,\n CreateBackupDAError,\n CreateBackupDAIntermediateValue,\n CreateBackupDAInternalState\n >;\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n output: {} as types[\"output\"],\n context: {} as types[\"context\"],\n } as types,\n actors: {\n waitForAppAndVersion: waitForAppAndVersion(\n internalAPI,\n this.input.unlockTimeout,\n ),\n goToDashboard: goToDashboard(internalAPI, this.input.unlockTimeout),\n getIsOnboarded: fromPromise(getIsOnboarded(internalAPI)),\n getLanguageId: fromPromise(getLanguageId(internalAPI)),\n listInstalledApps: listInstalledApps(\n internalAPI,\n this.input.unlockTimeout,\n ),\n downloadCustomLockScreen: downloadCustomLockScreenDevice(\n internalAPI,\n this.input.unlockTimeout,\n true,\n ),\n backupAppsStorage: fromPromise(\n backupAppsStorage(internalAPI, this.getLoggerFactory(internalAPI)),\n ),\n },\n guards: {\n isDeviceOnDashboard: ({ context }) =>\n isDashboardName(context._internalState.currentApp),\n isDeviceOnboarded: ({ context }) =>\n context._internalState.isDeviceOnboarded,\n isCustomLockScreenFeatureSupported: () =>\n isCustomLockScreenSupported(internalAPI.getDeviceModel().id),\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: should never happen\n }),\n }),\n },\n }).createMachine({\n id: \"CreateBackupDeviceAction\",\n initial: \"WaitForAppAndVersion\",\n context: ({ input }) => ({\n input: {\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: CreateBackupSteps.Idle,\n },\n _internalState: {\n error: null,\n currentApp: null,\n isDeviceOnboarded: false,\n languageId: undefined,\n installedApps: [],\n backupApps: [],\n clsHexImage: undefined,\n },\n }),\n states: {\n WaitForAppAndVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.WaitForAppAndVersion,\n }),\n }),\n invoke: {\n src: \"waitForAppAndVersion\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n currentApp: output.name,\n }),\n });\n },\n }),\n target: \"CheckIfDeviceIsOnDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceIsOnDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDeviceOnDashboard\",\n target: \"GetIsOnboarded\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GoToDashboard,\n }),\n }),\n invoke: {\n src: \"goToDashboard\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => _.context._internalState,\n });\n },\n }),\n target: \"CheckGoToDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGoToDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"WaitForAppAndVersion\",\n },\n ],\n },\n GetIsOnboarded: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GetIsOnboarded,\n }),\n }),\n invoke: {\n src: \"getIsOnboarded\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (isDeviceOnboarded) => ({\n ..._.context._internalState,\n isDeviceOnboarded,\n }),\n });\n },\n }),\n target: \"CheckGetIsOnboarded\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetIsOnboarded: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"GetLanguage\",\n },\n ],\n },\n GetLanguage: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.GetLanguage,\n }),\n }),\n invoke: {\n src: \"getLanguageId\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (languageId) => ({\n ..._.context._internalState,\n languageId,\n }),\n });\n },\n }),\n target: \"CheckGetLanguage\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetLanguage: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfDeviceIsOnboarded\",\n },\n ],\n },\n CheckIfDeviceIsOnboarded: {\n always: [\n {\n guard: \"isDeviceOnboarded\",\n target: \"ListInstalledApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n ListInstalledApps: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.ListInstalledApps,\n }),\n }),\n invoke: {\n src: \"listInstalledApps\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n installedApps: output.installedApps.filter(\n (app) => app.name !== \"\",\n ),\n }),\n });\n },\n }),\n target: \"CheckListInstalledApps\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckListInstalledApps: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"BackupAppsStorage\",\n },\n ],\n },\n BackupAppsStorage: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.BackupAppsStorage,\n }),\n }),\n invoke: {\n src: \"backupAppsStorage\",\n input: ({ context }) => ({\n installedApps: context._internalState.installedApps,\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (backupApps) => ({\n ..._.context._internalState,\n backupApps,\n }),\n });\n },\n }),\n target: \"CheckBackupAppsStorage\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckBackupAppsStorage: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfDeviceSupportCustomLockScreenFeature\",\n },\n ],\n },\n CheckIfDeviceSupportCustomLockScreenFeature: {\n always: [\n {\n guard: \"isCustomLockScreenFeatureSupported\",\n target: \"DownloadCustomLockScreen\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n DownloadCustomLockScreen: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CreateBackupSteps.DownloadCustomLockScreen,\n }),\n }),\n invoke: {\n src: \"downloadCustomLockScreen\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n allowedEmpty: true,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CreateBackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n clsHexImage:\n \"imageData\" in output && output.imageData.length > 0\n ? bufferToHexaString(output.imageData, true)\n : undefined,\n }),\n });\n },\n }),\n target: \"CheckDownloadCustomLockScreen\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckDownloadCustomLockScreen: {\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: ({ context }) => {\n if (context._internalState.error !== null) {\n return Left(context._internalState.error);\n }\n return Right({\n languageId: context._internalState.languageId,\n installedApps: context._internalState.backupApps,\n clsHexImage: context._internalState.clsHexImage,\n createdAt: new Date(),\n });\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CreateBackupDeviceAction_exports", "__export", "CreateBackupDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_screenSpecs", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetIsOnboarded", "import_GetLanguageId", "import_ListInstalledApps", "import_types", "import_GoToDashboard", "import_WaitForAppAndVersion", "internalAPI", "context", "_", "input", "error", "output", "isDeviceOnboarded", "languageId", "app", "backupApps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var s=require("@ledgerhq/device-management-kit"),r=require("purify-ts"),I=require("xstate"),i=require("../../../device-action/__test-utils__/makeInternalApi"),d=require("../../../device-action/__test-utils__/testDeviceActionStates"),E=require("../../../device-action/OsUpdate/Backup/CreateBackupDeviceAction"),f=require("../../../device-action/OsUpdate/Backup/CreateBackupDeviceActionErrors"),V=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),
|
|
1
|
+
"use strict";var s=require("@ledgerhq/device-management-kit"),r=require("purify-ts"),I=require("xstate"),i=require("../../../device-action/__test-utils__/makeInternalApi"),d=require("../../../device-action/__test-utils__/testDeviceActionStates"),E=require("../../../device-action/OsUpdate/Backup/CreateBackupDeviceAction"),f=require("../../../device-action/OsUpdate/Backup/CreateBackupDeviceActionErrors"),V=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),h=require("../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen"),F=require("../../../device-action/OsUpdate/Backup/Substeps/GetIsOnboarded"),B=require("../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId"),b=require("../../../device-action/OsUpdate/Backup/Substeps/ListInstalledApps"),e=require("../../../device-action/OsUpdate/Backup/types"),G=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),C=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage");const t=p=>({status:s.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:p}}),w=p=>({status:s.DeviceActionStatus.Completed,output:{...p,createdAt:expect.any(Date)}}),L=p=>({status:s.DeviceActionStatus.Error,error:p}),R=p=>(0,I.createMachine)({initial:"ready",states:{ready:{after:{0:"done"},entry:(0,I.assign)({intermediateValue:()=>({requiredUserInteraction:s.UserInteractionRequired.None})})},done:{type:"final"}},output:p}),S=p=>R(()=>p);describe("BackupDeviceAction",()=>{const{getDeviceModel:p}=(0,i.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.resetAllMocks()});const A=(o="BOLOS")=>vi.mocked(C.waitForAppAndVersion).mockReturnValue(S((0,r.Right)({name:o,version:"1.0.0"}))),T=o=>{const n=[...o];vi.mocked(C.waitForAppAndVersion).mockReturnValue(R(()=>(0,r.Right)({name:n.shift()??"BOLOS",version:"1.0.0"})))},c=()=>vi.mocked(G.goToDashboard).mockReturnValue(S((0,r.Right)(void 0))),u=(o=!0)=>vi.mocked(F.getIsOnboarded).mockReturnValue(()=>Promise.resolve((0,r.Right)(o))),m=()=>vi.mocked(B.getLanguageId).mockReturnValue(()=>Promise.resolve((0,r.Right)(1))),k=()=>vi.mocked(b.listInstalledApps).mockReturnValue(S((0,r.Right)({installedApps:[{name:"TestApp",hash:"abc",hash_code_data:"code",flags:0}]}))),v=()=>vi.mocked(V.backupAppsStorage).mockReturnValue(()=>Promise.resolve((0,r.Right)([{appName:"TestApp",data:"0xappData"}]))),D=()=>vi.mocked(h.downloadCustomLockScreenDevice).mockReturnValue(S((0,r.Right)({imageData:new Uint8Array([1,2]),imageHash:"0102"}))),O=()=>p.mockReturnValue({id:s.DeviceModelId.STAX}),y=()=>p.mockReturnValue({id:s.DeviceModelId.NANO_X}),l=()=>new E.CreateBackupDeviceAction({input:{unlockTimeout:3e4}});describe("Success",()=>{it("should complete the full backup flow for a CLS-supported device",()=>new Promise((o,n)=>{A(),c(),u(),m(),k(),v(),D(),O();const a=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.BackupAppsStorage),t(e.CreateBackupSteps.DownloadCustomLockScreen),t(e.CreateBackupSteps.DownloadCustomLockScreen),w({languageId:1,installedApps:[{appName:"TestApp",data:"0xappData"}],clsHexImage:"0x0102"})];(0,d.testDeviceActionStates)(l(),a,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should skip ListInstalledApps and DownloadCustomLockScreen when device is unseeded",()=>new Promise((o,n)=>{A(),c(),u(!1),m(),k(),v(),D();const a=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),w({languageId:1,installedApps:[],clsHexImage:void 0})];(0,d.testDeviceActionStates)(l(),a,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should skip DownloadCustomLockScreen for devices that do not support CLS",()=>new Promise((o,n)=>{A(),c(),u(),m(),k(),v(),D(),y();const a=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.BackupAppsStorage),w({languageId:1,installedApps:[{appName:"TestApp",data:"0xappData"}],clsHexImage:void 0})];(0,d.testDeviceActionStates)(l(),a,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should go to dashboard and wait for app and version again when an app is open",()=>new Promise((o,n)=>{T(["Bitcoin","BOLOS"]),c(),u(),m(),k(),v(),D(),y();const a=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GoToDashboard),t(e.CreateBackupSteps.GoToDashboard),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.BackupAppsStorage),w({languageId:1,installedApps:[{appName:"TestApp",data:"0xappData"}],clsHexImage:void 0})];(0,d.testDeviceActionStates)(l(),a,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})}))}),describe("Error",()=>{it("should go to Error when getLanguageId returns Left",()=>new Promise((o,n)=>{A(),c(),u(),k();const a=new f.GetLanguageIdError(new Error("command failed"));vi.mocked(B.getLanguageId).mockReturnValue(()=>Promise.resolve((0,r.Left)(a)));const g=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),L(a)];(0,d.testDeviceActionStates)(l(),g,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should go to Error when listInstalledApps returns Left",()=>new Promise((o,n)=>{A(),c(),u(),m();const a=new s.UnknownDAError("listInstalledApps failed");vi.mocked(b.listInstalledApps).mockReturnValue(S((0,r.Left)(a)));const g=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),L(a)];(0,d.testDeviceActionStates)(l(),g,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should go to Error when backupAppsStorage returns Left",()=>new Promise((o,n)=>{A(),c(),u(),m(),k(),D();const a=new f.BackupAppsStorageError(new Error("storage failed"));vi.mocked(V.backupAppsStorage).mockReturnValue(()=>Promise.resolve((0,r.Left)(a)));const g=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.BackupAppsStorage),L(a)];(0,d.testDeviceActionStates)(l(),g,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})})),it("should go to Error when downloadCustomLockScreenDevice returns Left",()=>new Promise((o,n)=>{A(),c(),u(),m(),k(),v(),O();const a=new s.UnknownDAError("downloadCLS failed");vi.mocked(h.downloadCustomLockScreenDevice).mockReturnValue(S((0,r.Left)(a)));const g=[t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.WaitForAppAndVersion),t(e.CreateBackupSteps.GetIsOnboarded),t(e.CreateBackupSteps.GetLanguage),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.ListInstalledApps),t(e.CreateBackupSteps.BackupAppsStorage),t(e.CreateBackupSteps.DownloadCustomLockScreen),t(e.CreateBackupSteps.DownloadCustomLockScreen),L(a)];(0,d.testDeviceActionStates)(l(),g,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:n})}))})});
|
|
2
2
|
//# sourceMappingURL=CreateBackupDeviceAction.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n DeviceActionStatus,\n DeviceModelId,\n type TransportDeviceModel,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { CreateBackupDeviceAction } from \"@api/device-action/OsUpdate/Backup/CreateBackupDeviceAction\";\nimport {\n BackupAppsStorageError,\n GetLanguageIdError,\n} from \"@api/device-action/OsUpdate/Backup/CreateBackupDeviceActionErrors\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getIsOnboarded } from \"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Backup/Substeps/GoToDashboard\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Backup/Substeps/WaitForAppAndVersion\";\nimport {\n type Backup,\n type CreateBackupDAError,\n type CreateBackupDAState,\n CreateBackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\n\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GoToDashboard\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/WaitForAppAndVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\");\n\n// \u2500\u2500\u2500 State builders \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst pendingState = (step: CreateBackupSteps): CreateBackupDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (\n output: Omit<Backup, \"createdAt\">,\n): CreateBackupDAState => ({\n status: DeviceActionStatus.Completed,\n output: {\n ...output,\n createdAt: expect.any(Date) as Date,\n },\n});\n\nconst errorState = (error: CreateBackupDAError): CreateBackupDAState => ({\n status: DeviceActionStatus.Error,\n error,\n});\n\n// \u2500\u2500\u2500 Mock actor factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Creates a minimal XState machine that immediately completes (after 0 ms) with\n// the given Either output. The machine exposes the `intermediateValue` shape\n// required by the parent's `onSnapshot` handler.\n\nconst createMockActorMachineFromOutput = (\n output: () => Either<unknown, unknown>,\n) =>\n createMachine({\n initial: \"ready\",\n states: {\n ready: {\n after: { 0: \"done\" },\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n done: { type: \"final\" },\n },\n output,\n });\n\nconst createMockActorMachine = (output: Either<unknown, unknown>) =>\n createMockActorMachineFromOutput(() => output);\n\n// \u2500\u2500\u2500 Fixtures \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// \u2500\u2500\u2500 Tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"BackupDeviceAction\", () => {\n const { getDeviceModel: getDeviceModelMock } =\n makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n // \u2500\u2500\u2500 Setup helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const setupWaitForAppAndVersion = (appName = \"BOLOS\") =>\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(\n Right({\n name: appName,\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n\n const setupWaitForAppAndVersionSequence = (appNames: string[]) => {\n const remainingAppNames = [...appNames];\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachineFromOutput(() =>\n Right({\n name: remainingAppNames.shift() ?? \"BOLOS\",\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n };\n\n const setupGoToDashboard = () =>\n vi\n .mocked(goToDashboard)\n .mockReturnValue(\n createMockActorMachine(Right(undefined)) as unknown as ReturnType<\n typeof goToDashboard\n >,\n );\n\n const setupGetIsOnboarded = (isDeviceOnboarded = true) =>\n vi\n .mocked(getIsOnboarded)\n .mockReturnValue(() => Promise.resolve(Right(isDeviceOnboarded)));\n\n const setupGetLanguageId = () =>\n vi.mocked(getLanguageId).mockReturnValue(() => Promise.resolve(Right(1)));\n\n const setupListInstalledApps = () =>\n vi.mocked(listInstalledApps).mockReturnValue(\n createMockActorMachine(\n Right({\n installedApps: [\n { name: \"TestApp\", hash: \"abc\", hash_code_data: \"code\", flags: 0 },\n ],\n }),\n ) as unknown as ReturnType<typeof listInstalledApps>,\n );\n\n const setupBackupAppsStorage = () =>\n vi\n .mocked(backupAppsStorage)\n .mockReturnValue(() =>\n Promise.resolve(Right([{ appName: \"TestApp\", data: \"0xappData\" }])),\n );\n\n const setupDownloadCls = () =>\n vi\n .mocked(downloadCustomLockScreenDevice)\n .mockReturnValue(\n createMockActorMachine(\n Right({ imageData: new Uint8Array([0x01, 0x02]), imageHash: \"0102\" }),\n ) as unknown as ReturnType<typeof downloadCustomLockScreenDevice>,\n );\n\n const setupStaxModel = () =>\n getDeviceModelMock.mockReturnValue({\n id: DeviceModelId.STAX,\n } as TransportDeviceModel);\n\n const setupNanoXModel = () =>\n getDeviceModelMock.mockReturnValue({\n id: DeviceModelId.NANO_X,\n } as TransportDeviceModel);\n\n const makeDeviceAction = () =>\n new CreateBackupDeviceAction({\n input: {\n unlockTimeout: 30_000,\n },\n });\n\n // \u2500\u2500\u2500 Success \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n describe(\"Success\", () => {\n it(\"should complete the full backup flow for a CLS-supported device\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls();\n setupStaxModel();\n\n // State transitions:\n // GetLanguage \u2192 ListInstalledApps (\u00D72: enter + onSnapshot)\n // \u2192 BackupAppsStorage \u2192 DownloadCustomLockScreen (\u00D72: enter + onSnapshot) \u2192 Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: \"0x0102\",\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip ListInstalledApps and DownloadCustomLockScreen when device is unseeded\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded(false);\n setupGetLanguageId();\n setupListInstalledApps(); // registered in actors but never invoked (always guard fires first)\n setupBackupAppsStorage(); // registered in actors but never invoked\n setupDownloadCls(); // registered in actors but never invoked\n\n // CheckIfDeviceIsOnboarded.isDeviceOnboarded false \u2192 jumps directly to Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n completedState({\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip DownloadCustomLockScreen for devices that do not support CLS\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls(); // registered in actors but never invoked (always guard fires first)\n setupNanoXModel();\n\n // CheckIfDeviceSupportCustomLockScreenFeature.isCustomLockScreenFeatureSupported false \u2192 Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to dashboard and wait for app and version again when an app is open\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersionSequence([\"Bitcoin\", \"BOLOS\"]);\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls(); // registered in actors but never invoked (always guard fires first)\n setupNanoXModel();\n\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GoToDashboard),\n pendingState(CreateBackupSteps.GoToDashboard),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n\n // \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n describe(\"Error\", () => {\n it(\"should go to Error when getLanguageId returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupListInstalledApps(); // registered in actors but never invoked (always hasError guard fires first)\n const error = new GetLanguageIdError(new Error(\"command failed\"));\n vi.mocked(getLanguageId).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // getLanguageId Left \u2192 CheckIfDeviceIsOnboarded.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when listInstalledApps returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n const error = new UnknownDAError(\"listInstalledApps failed\");\n vi.mocked(listInstalledApps).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof listInstalledApps\n >,\n );\n\n // listInstalledApps Left \u2192 BackupAppsStorage.always hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when backupAppsStorage returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupDownloadCls(); // registered in actors but never invoked (always hasError guard fires first)\n const error = new BackupAppsStorageError(new Error(\"storage failed\"));\n vi.mocked(backupAppsStorage).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // backupAppsStorage Left \u2192 CheckIfDeviceSupportCustomLockScreenFeature.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when downloadCustomLockScreenDevice returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupStaxModel();\n const error = new UnknownDAError(\"downloadCLS failed\");\n vi.mocked(downloadCustomLockScreenDevice).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof downloadCustomLockScreenDevice\n >,\n );\n\n // downloadCustomLockScreen Left \u2192 CheckDownloadCustomLockScreen.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAMO,2CACPC,EAAyC,qBACzCC,EAAsC,kBAEtCC,EAAgD,6DAChDC,EAAuC,oEACvCC,EAAyC,uEACzCC,EAGO,6EACPC,EAAkC,yEAClCC,EAA+C,gFAC/CC,EAA+B,sEAC/BC,EAA8B,qEAC9BC,
|
|
6
|
-
"names": ["import_device_management_kit", "import_purify_ts", "import_xstate", "import_makeInternalApi", "import_testDeviceActionStates", "import_CreateBackupDeviceAction", "import_CreateBackupDeviceActionErrors", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetIsOnboarded", "import_GetLanguageId", "
|
|
4
|
+
"sourcesContent": ["import {\n DeviceActionStatus,\n DeviceModelId,\n type TransportDeviceModel,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { CreateBackupDeviceAction } from \"@api/device-action/OsUpdate/Backup/CreateBackupDeviceAction\";\nimport {\n BackupAppsStorageError,\n GetLanguageIdError,\n} from \"@api/device-action/OsUpdate/Backup/CreateBackupDeviceActionErrors\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getIsOnboarded } from \"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport {\n type Backup,\n type CreateBackupDAError,\n type CreateBackupDAState,\n CreateBackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GetIsOnboarded\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\");\n\n// \u2500\u2500\u2500 State builders \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst pendingState = (step: CreateBackupSteps): CreateBackupDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (\n output: Omit<Backup, \"createdAt\">,\n): CreateBackupDAState => ({\n status: DeviceActionStatus.Completed,\n output: {\n ...output,\n createdAt: expect.any(Date) as Date,\n },\n});\n\nconst errorState = (error: CreateBackupDAError): CreateBackupDAState => ({\n status: DeviceActionStatus.Error,\n error,\n});\n\n// \u2500\u2500\u2500 Mock actor factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Creates a minimal XState machine that immediately completes (after 0 ms) with\n// the given Either output. The machine exposes the `intermediateValue` shape\n// required by the parent's `onSnapshot` handler.\n\nconst createMockActorMachineFromOutput = (\n output: () => Either<unknown, unknown>,\n) =>\n createMachine({\n initial: \"ready\",\n states: {\n ready: {\n after: { 0: \"done\" },\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n done: { type: \"final\" },\n },\n output,\n });\n\nconst createMockActorMachine = (output: Either<unknown, unknown>) =>\n createMockActorMachineFromOutput(() => output);\n\n// \u2500\u2500\u2500 Fixtures \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// \u2500\u2500\u2500 Tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"BackupDeviceAction\", () => {\n const { getDeviceModel: getDeviceModelMock } =\n makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n // \u2500\u2500\u2500 Setup helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const setupWaitForAppAndVersion = (appName = \"BOLOS\") =>\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(\n Right({\n name: appName,\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n\n const setupWaitForAppAndVersionSequence = (appNames: string[]) => {\n const remainingAppNames = [...appNames];\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachineFromOutput(() =>\n Right({\n name: remainingAppNames.shift() ?? \"BOLOS\",\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n };\n\n const setupGoToDashboard = () =>\n vi\n .mocked(goToDashboard)\n .mockReturnValue(\n createMockActorMachine(Right(undefined)) as unknown as ReturnType<\n typeof goToDashboard\n >,\n );\n\n const setupGetIsOnboarded = (isDeviceOnboarded = true) =>\n vi\n .mocked(getIsOnboarded)\n .mockReturnValue(() => Promise.resolve(Right(isDeviceOnboarded)));\n\n const setupGetLanguageId = () =>\n vi.mocked(getLanguageId).mockReturnValue(() => Promise.resolve(Right(1)));\n\n const setupListInstalledApps = () =>\n vi.mocked(listInstalledApps).mockReturnValue(\n createMockActorMachine(\n Right({\n installedApps: [\n { name: \"TestApp\", hash: \"abc\", hash_code_data: \"code\", flags: 0 },\n ],\n }),\n ) as unknown as ReturnType<typeof listInstalledApps>,\n );\n\n const setupBackupAppsStorage = () =>\n vi\n .mocked(backupAppsStorage)\n .mockReturnValue(() =>\n Promise.resolve(Right([{ appName: \"TestApp\", data: \"0xappData\" }])),\n );\n\n const setupDownloadCls = () =>\n vi\n .mocked(downloadCustomLockScreenDevice)\n .mockReturnValue(\n createMockActorMachine(\n Right({ imageData: new Uint8Array([0x01, 0x02]), imageHash: \"0102\" }),\n ) as unknown as ReturnType<typeof downloadCustomLockScreenDevice>,\n );\n\n const setupStaxModel = () =>\n getDeviceModelMock.mockReturnValue({\n id: DeviceModelId.STAX,\n } as TransportDeviceModel);\n\n const setupNanoXModel = () =>\n getDeviceModelMock.mockReturnValue({\n id: DeviceModelId.NANO_X,\n } as TransportDeviceModel);\n\n const makeDeviceAction = () =>\n new CreateBackupDeviceAction({\n input: {\n unlockTimeout: 30_000,\n },\n });\n\n // \u2500\u2500\u2500 Success \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n describe(\"Success\", () => {\n it(\"should complete the full backup flow for a CLS-supported device\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls();\n setupStaxModel();\n\n // State transitions:\n // GetLanguage \u2192 ListInstalledApps (\u00D72: enter + onSnapshot)\n // \u2192 BackupAppsStorage \u2192 DownloadCustomLockScreen (\u00D72: enter + onSnapshot) \u2192 Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: \"0x0102\",\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip ListInstalledApps and DownloadCustomLockScreen when device is unseeded\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded(false);\n setupGetLanguageId();\n setupListInstalledApps(); // registered in actors but never invoked (always guard fires first)\n setupBackupAppsStorage(); // registered in actors but never invoked\n setupDownloadCls(); // registered in actors but never invoked\n\n // CheckIfDeviceIsOnboarded.isDeviceOnboarded false \u2192 jumps directly to Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n completedState({\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip DownloadCustomLockScreen for devices that do not support CLS\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls(); // registered in actors but never invoked (always guard fires first)\n setupNanoXModel();\n\n // CheckIfDeviceSupportCustomLockScreenFeature.isCustomLockScreenFeatureSupported false \u2192 Success\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to dashboard and wait for app and version again when an app is open\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersionSequence([\"Bitcoin\", \"BOLOS\"]);\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls(); // registered in actors but never invoked (always guard fires first)\n setupNanoXModel();\n\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GoToDashboard),\n pendingState(CreateBackupSteps.GoToDashboard),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n completedState({\n languageId: 1,\n installedApps: [{ appName: \"TestApp\", data: \"0xappData\" }],\n clsHexImage: undefined,\n }),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n\n // \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n describe(\"Error\", () => {\n it(\"should go to Error when getLanguageId returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupListInstalledApps(); // registered in actors but never invoked (always hasError guard fires first)\n const error = new GetLanguageIdError(new Error(\"command failed\"));\n vi.mocked(getLanguageId).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // getLanguageId Left \u2192 CheckIfDeviceIsOnboarded.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when listInstalledApps returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n const error = new UnknownDAError(\"listInstalledApps failed\");\n vi.mocked(listInstalledApps).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof listInstalledApps\n >,\n );\n\n // listInstalledApps Left \u2192 BackupAppsStorage.always hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when backupAppsStorage returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupDownloadCls(); // registered in actors but never invoked (always hasError guard fires first)\n const error = new BackupAppsStorageError(new Error(\"storage failed\"));\n vi.mocked(backupAppsStorage).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // backupAppsStorage Left \u2192 CheckIfDeviceSupportCustomLockScreenFeature.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should go to Error when downloadCustomLockScreenDevice returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGoToDashboard();\n setupGetIsOnboarded();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupStaxModel();\n const error = new UnknownDAError(\"downloadCLS failed\");\n vi.mocked(downloadCustomLockScreenDevice).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof downloadCustomLockScreenDevice\n >,\n );\n\n // downloadCustomLockScreen Left \u2192 CheckDownloadCustomLockScreen.hasError \u2192 Error\n const expectedStates: CreateBackupDAState[] = [\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.WaitForAppAndVersion),\n pendingState(CreateBackupSteps.GetIsOnboarded),\n pendingState(CreateBackupSteps.GetLanguage),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.ListInstalledApps),\n pendingState(CreateBackupSteps.BackupAppsStorage),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n pendingState(CreateBackupSteps.DownloadCustomLockScreen),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_purify_ts", "import_xstate", "import_makeInternalApi", "import_testDeviceActionStates", "import_CreateBackupDeviceAction", "import_CreateBackupDeviceActionErrors", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetIsOnboarded", "import_GetLanguageId", "import_ListInstalledApps", "import_types", "import_GoToDashboard", "import_WaitForAppAndVersion", "pendingState", "step", "completedState", "output", "errorState", "error", "createMockActorMachineFromOutput", "createMockActorMachine", "getDeviceModelMock", "setupWaitForAppAndVersion", "appName", "setupWaitForAppAndVersionSequence", "appNames", "remainingAppNames", "setupGoToDashboard", "setupGetIsOnboarded", "isDeviceOnboarded", "setupGetLanguageId", "setupListInstalledApps", "setupBackupAppsStorage", "setupDownloadCls", "setupStaxModel", "setupNanoXModel", "makeDeviceAction", "resolve", "reject", "expectedStates"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var D=(p,a)=>{for(var t in a)u(p,t,{get:a[t],enumerable:!0})},R=(p,a,t,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of h(a))!d.call(p,s)&&s!==t&&u(p,s,{get:()=>a[s],enumerable:!(r=m(a,s))||r.enumerable});return p};var E=p=>R(u({},"__esModule",{value:!0}),p);var x={};D(x,{RestoreAppsStorageDeviceAction:()=>I});module.exports=E(x);var n=require("@ledgerhq/device-management-kit"),i=require("purify-ts"),e=require("xstate"),g=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/CommitRestoreAppStorage"),S=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/
|
|
1
|
+
"use strict";var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var D=(p,a)=>{for(var t in a)u(p,t,{get:a[t],enumerable:!0})},R=(p,a,t,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of h(a))!d.call(p,s)&&s!==t&&u(p,s,{get:()=>a[s],enumerable:!(r=m(a,s))||r.enumerable});return p};var E=p=>R(u({},"__esModule",{value:!0}),p);var x={};D(x,{RestoreAppsStorageDeviceAction:()=>I});module.exports=E(x);var n=require("@ledgerhq/device-management-kit"),i=require("purify-ts"),e=require("xstate"),g=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/CommitRestoreAppStorage"),S=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/InitRestoreAppStorage"),A=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/Substeps/RestoreAppStorage"),o=require("../../../../device-action/OsUpdate/Restore/RestoreAppsStorage/types"),c=require("../../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),l=require("../../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");const y=p=>p.data!==void 0;class I extends n.XStateDeviceAction{makeStateMachine(a){return(0,e.setup)({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:(0,l.waitForAppAndVersion)(a,this.input.unlockTimeout),goToDashboard:(0,c.goToDashboard)(a,this.input.unlockTimeout),initRestoreAppStorage:(0,e.fromPromise)((0,S.initRestoreAppStorage)(a)),restoreAppStorage:(0,e.fromPromise)((0,A.restoreAppStorage)(a,this.getLoggerFactory(a))),commitRestoreAppStorage:(0,e.fromPromise)((0,g.commitRestoreAppStorage)(a))},guards:{isDeviceOnDashboard:({context:t})=>(0,n.isDashboardName)(t._internalState.currentApp),hasError:({context:t})=>t._internalState.error!==null,hasMoreAppsWithStorage:({context:t})=>t._internalState.appsWithStorage.length>0&&t._internalState.currentAppStorageIndex<t._internalState.appsWithStorage.length},actions:{assignErrorFromEvent:(0,e.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"RestoreAppsStorageDeviceAction",initial:"WaitForAppAndVersion",context:({input:t})=>({input:{backupApps:t.backupApps,unlockTimeout:t.unlockTimeout,isMasterConsentGranted:t.isMasterConsentGranted},intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:o.RestoreAppsStorageSteps.Idle},_internalState:{error:null,currentApp:null,appsWithStorage:[],currentAppStorageIndex:0,currentAppStorageName:null,currentAppStorageDataBytes:null,currentAppStorageDataLength:null,restoreAppsStorageResult:[]}}),states:{WaitForAppAndVersion:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:t})=>({unlockTimeout:t.input.unlockTimeout}),onSnapshot:{actions:(0,e.assign)({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:t.context.intermediateValue.step})})},onDone:{actions:(0,e.assign)({_internalState:t=>t.event.output.caseOf({Left:r=>({...t.context._internalState,error:r}),Right:r=>({...t.context._internalState,currentApp:r.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"FilterAppsWithStorage"},{target:"GoToDashboard"}]},GoToDashboard:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:t})=>({unlockTimeout:t.input.unlockTimeout}),onSnapshot:{actions:(0,e.assign)({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:t.context.intermediateValue.step})})},onDone:{actions:(0,e.assign)({_internalState:t=>t.event.output.caseOf({Left:r=>({...t.context._internalState,error:r}),Right:()=>t.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},FilterAppsWithStorage:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.FilterAppsWithStorage}),_internalState:t=>({...t.context._internalState,appsWithStorage:t.context.input.backupApps.filter(y)})}),always:{target:"CheckIfThereIsAppWithStorage"}},CheckIfThereIsAppWithStorage:{always:[{guard:"hasMoreAppsWithStorage",target:"ExtractAppData"},{target:"Success"}]},ExtractAppData:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.ExtractAppData}),_internalState:t=>{const r=t.context._internalState.appsWithStorage[t.context._internalState.currentAppStorageIndex],s=(0,n.hexaStringToBuffer)(r.data)??new Uint8Array(0);return{...t.context._internalState,currentAppStorageName:r.appName,currentAppStorageDataBytes:s,currentAppStorageDataLength:s.length}}}),always:{target:"InitRestoreAppStorage"}},InitRestoreAppStorage:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.InitRestoreAppStorage,requiredUserInteraction:t.context.input.isMasterConsentGranted?n.UserInteractionRequired.None:n.UserInteractionRequired.GrantConsent})}),exit:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,requiredUserInteraction:n.UserInteractionRequired.None})}),invoke:{src:"initRestoreAppStorage",input:({context:t})=>({appName:t._internalState.currentAppStorageName,appStorageDataLength:t._internalState.currentAppStorageDataLength}),onDone:[{guard:({event:t})=>t.output.isLeft(),actions:(0,e.assign)({_internalState:({event:t,context:r})=>({...r._internalState,error:t.output.extract()})}),target:"Error"},{guard:({event:t})=>t.output.extract()===o.InitRestoreAppStorageConsentResult.REJECTED,actions:(0,e.assign)({_internalState:({context:t})=>({...t._internalState,restoreAppsStorageResult:[...t._internalState.restoreAppsStorageResult,{appName:t._internalState.currentAppStorageName,restoredAppStorage:!1}],currentAppStorageIndex:t._internalState.currentAppStorageIndex+1,currentAppStorageName:null,currentAppStorageDataBytes:null,currentAppStorageDataLength:null})}),target:"CheckIfThereIsAppWithStorage"},{target:"RestoreAppStorage"}],onError:{actions:"assignErrorFromEvent",target:"Error"}}},RestoreAppStorage:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.RestoreAppStorage})}),invoke:{src:"restoreAppStorage",input:({context:t})=>({appStorageData:t._internalState.currentAppStorageDataBytes??new Uint8Array(0)}),onDone:{actions:(0,e.assign)({_internalState:t=>t.event.output.caseOf({Left:r=>({...t.context._internalState,error:r}),Right:()=>t.context._internalState})}),target:"CheckRestoreAppStorage"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckRestoreAppStorage:{always:[{guard:"hasError",target:"Error"},{target:"CommitRestoreAppStorage"}]},CommitRestoreAppStorage:{entry:(0,e.assign)({intermediateValue:t=>({...t.context.intermediateValue,step:o.RestoreAppsStorageSteps.CommitRestoreAppStorage})}),invoke:{src:"commitRestoreAppStorage",onDone:{actions:(0,e.assign)({_internalState:t=>t.event.output.caseOf({Left:r=>({...t.context._internalState,error:r}),Right:()=>({...t.context._internalState,restoreAppsStorageResult:[...t.context._internalState.restoreAppsStorageResult,{appName:t.context._internalState.currentAppStorageName,restoredAppStorage:!0}],currentAppStorageIndex:t.context._internalState.currentAppStorageIndex+1,currentAppStorageName:null,currentAppStorageDataBytes:null,currentAppStorageDataLength:null})})}),target:"CheckCommitRestoreAppStorage"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckCommitRestoreAppStorage:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfThereIsAppWithStorage"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.error!==null?(0,i.Left)(t._internalState.error):(0,i.Right)(t._internalState.restoreAppsStorageResult)})}}0&&(module.exports={RestoreAppsStorageDeviceAction});
|
|
2
2
|
//# sourceMappingURL=RestoreAppsStorageDeviceAction.js.map
|