@ledgerhq/dmk-ledger-wallet 0.0.0-develop-20260729002248 → 0.0.0-develop-20260731002630

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.
Files changed (97) hide show
  1. package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js +1 -1
  2. package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js.map +3 -3
  3. package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js +1 -1
  4. package/lib/cjs/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js.map +3 -3
  5. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.js +2 -0
  6. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.js.map +7 -0
  7. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.js +2 -0
  8. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.js.map +7 -0
  9. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.js +2 -0
  10. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.js.map +7 -0
  11. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.js +2 -0
  12. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.js.map +7 -0
  13. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.js +2 -0
  14. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.js.map +7 -0
  15. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.js +2 -0
  16. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.js.map +7 -0
  17. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.js +2 -0
  18. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.js.map +7 -0
  19. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.js +2 -0
  20. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.js.map +7 -0
  21. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.js +2 -0
  22. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.js.map +7 -0
  23. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.js +2 -0
  24. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.js.map +7 -0
  25. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/types.js +2 -0
  26. package/lib/cjs/api/device-action/OsUpdate/CleanDevice/types.js.map +7 -0
  27. package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.js.map +1 -1
  28. package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.js +1 -1
  29. package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.js.map +2 -2
  30. package/lib/cjs/index.js +1 -1
  31. package/lib/cjs/index.js.map +3 -3
  32. package/lib/cjs/package.json +1 -1
  33. package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js +1 -1
  34. package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.js.map +3 -3
  35. package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js +1 -1
  36. package/lib/esm/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.test.js.map +3 -3
  37. package/lib/esm/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.js +2 -0
  38. package/lib/esm/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.js.map +7 -0
  39. package/lib/esm/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.js +2 -0
  40. package/lib/esm/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.js.map +7 -0
  41. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.js +2 -0
  42. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.js.map +7 -0
  43. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.js +2 -0
  44. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.js.map +7 -0
  45. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.js +2 -0
  46. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.js.map +7 -0
  47. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.js +2 -0
  48. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.js.map +7 -0
  49. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.js +2 -0
  50. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.js.map +7 -0
  51. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.js +2 -0
  52. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.js.map +7 -0
  53. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.js +2 -0
  54. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.js.map +7 -0
  55. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.js +2 -0
  56. package/lib/esm/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.js.map +7 -0
  57. package/lib/esm/api/device-action/OsUpdate/CleanDevice/types.js +2 -0
  58. package/lib/esm/api/device-action/OsUpdate/CleanDevice/types.js.map +7 -0
  59. package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.js.map +1 -1
  60. package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.js +1 -1
  61. package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.js.map +2 -2
  62. package/lib/esm/index.js +1 -1
  63. package/lib/esm/index.js.map +3 -3
  64. package/lib/esm/package.json +1 -1
  65. package/lib/types/api/device-action/OsUpdate/Backup/CreateBackupDeviceAction.d.ts.map +1 -1
  66. package/lib/types/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.d.ts +6 -0
  67. package/lib/types/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.d.ts.map +1 -0
  68. package/lib/types/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.d.ts +2 -0
  69. package/lib/types/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.d.ts.map +1 -0
  70. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.d.ts +7 -0
  71. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.d.ts.map +1 -0
  72. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.d.ts +2 -0
  73. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack.test.d.ts.map +1 -0
  74. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.d.ts +6 -0
  75. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.d.ts.map +1 -0
  76. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.d.ts +2 -0
  77. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo.test.d.ts.map +1 -0
  78. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.d.ts +6 -0
  79. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.d.ts.map +1 -0
  80. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.d.ts +2 -0
  81. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen.test.d.ts.map +1 -0
  82. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.d.ts +5 -0
  83. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.d.ts.map +1 -0
  84. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.d.ts +2 -0
  85. package/lib/types/api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp.test.d.ts.map +1 -0
  86. package/lib/types/api/device-action/OsUpdate/CleanDevice/types.d.ts +33 -0
  87. package/lib/types/api/device-action/OsUpdate/CleanDevice/types.d.ts.map +1 -0
  88. package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.d.ts.map +1 -1
  89. package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.d.ts.map +1 -1
  90. package/lib/types/index.d.ts +2 -0
  91. package/lib/types/index.d.ts.map +1 -1
  92. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  93. package/package.json +5 -5
  94. /package/lib/cjs/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.js +0 -0
  95. /package/lib/esm/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.js +0 -0
  96. /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.d.ts +0 -0
  97. /package/lib/types/api/device-action/OsUpdate/{Backup → Shared}/Substeps/ListInstalledApps.test.d.ts +0 -0
@@ -1,2 +1,2 @@
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});
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"),n=require("../../../device-action/OsUpdate/Backup/types"),k=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),S=require("../../../device-action/OsUpdate/Shared/Substeps/ListInstalledApps"),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,k.goToDashboard)(r,this.input.unlockTimeout),getIsOnboarded:(0,a.fromPromise)((0,g.getIsOnboarded)(r)),getLanguageId:(0,a.fromPromise)((0,m.getLanguageId)(r)),listInstalledApps:(0,S.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 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"]
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 {\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 { listInstalledApps } from \"@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps\";\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_types", "import_GoToDashboard", "import_ListInstalledApps", "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"),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})}))})});
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"),h=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),V=require("../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen"),F=require("../../../device-action/OsUpdate/Backup/Substeps/GetIsOnboarded"),B=require("../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId"),e=require("../../../device-action/OsUpdate/Backup/types"),G=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),b=require("../../../device-action/OsUpdate/Shared/Substeps/ListInstalledApps"),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/Shared/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(h.backupAppsStorage).mockReturnValue(()=>Promise.resolve((0,r.Right)([{appName:"TestApp",data:"0xappData"}]))),D=()=>vi.mocked(V.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(h.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(V.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 { 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"]
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 {\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 { listInstalledApps } from \"@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps\";\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/Shared/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_types", "import_GoToDashboard", "import_ListInstalledApps", "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
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var u=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var f=(o,r)=>{for(var e in r)u(o,e,{get:r[e],enumerable:!0})},E=(o,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of A(r))!C.call(o,i)&&i!==e&&u(o,i,{get:()=>r[i],enumerable:!(n=v(r,i))||n.enumerable});return o};var L=o=>E(u({},"__esModule",{value:!0}),o);var V={};f(V,{CleanDeviceDeviceAction:()=>I});module.exports=L(V);var s=require("@ledgerhq/device-management-kit"),c=require("purify-ts"),t=require("xstate"),l=require("../../../customLockScreenUtils/screenSpecs"),p=require("../../../device-action/customLockScreenDeviceActionErrors"),m=require("../../../device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack"),d=require("../../../device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo"),S=require("../../../device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen"),D=require("../../../device-action/OsUpdate/CleanDevice/Substeps/UninstallApp"),a=require("../../../device-action/OsUpdate/CleanDevice/types"),g=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),k=require("../../../device-action/OsUpdate/Shared/Substeps/ListInstalledApps"),h=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");class I extends s.XStateDeviceAction{makeStateMachine(r){return(0,t.setup)({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:(0,h.waitForAppAndVersion)(r,this.input.unlockTimeout),goToDashboard:(0,g.goToDashboard)(r,this.input.unlockTimeout),listInstalledApps:(0,k.listInstalledApps)(r,this.input.unlockTimeout),uninstallApp:(0,D.uninstallApp)(r,this.input.unlockTimeout),deleteLanguagePack:(0,t.fromPromise)((0,m.deleteLanguagePack)(r)),getCustomLockScreenInfo:(0,d.getCustomLockScreenInfo)(r,this.input.unlockTimeout),removeCustomLockScreen:(0,S.removeCustomLockScreen)(r,this.input.unlockTimeout)},guards:{isDeviceOnDashboard:({context:e})=>(0,s.isDashboardName)(e._internalState.currentApp),hasError:({context:e})=>e._internalState.error!==null,hasMoreAppsToUninstall:({context:e})=>e._internalState.currentAppIndex<e._internalState.installedApps.length,isCustomLockScreenFeatureSupported:()=>(0,l.isCustomLockScreenSupported)(r.getDeviceModel().id),hasCustomLockScreen:({context:e})=>e._internalState.hasCustomLockScreen},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"CleanDeviceDeviceAction",initial:"WaitForAppAndVersion",context:({input:e})=>({input:{unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:a.CleanDeviceSteps.Idle},_internalState:{error:null,currentApp:null,installedApps:[],currentAppIndex:0,uninstalledApps:[],languagePackRemoved:void 0,customLockScreenRemoved:void 0,hasCustomLockScreen:!1}}),states:{WaitForAppAndVersion:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:n=>({...e.context._internalState,currentApp:n.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"ListInstalledApps"},{target:"GoToDashboard"}]},GoToDashboard:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:()=>e.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},ListInstalledApps:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.ListInstalledApps})}),invoke:{src:"listInstalledApps",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:n=>({...e.context._internalState,installedApps:n.installedApps.filter(i=>i.name!==""),currentAppIndex:0})})}),target:"CheckListInstalledApps"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckListInstalledApps:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfThereAreMoreAppsToUninstall"}]},CheckIfThereAreMoreAppsToUninstall:{always:[{guard:"hasMoreAppsToUninstall",target:"UninstallApp"},{target:"DeleteLanguagePack"}]},UninstallApp:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.UninstallApps})}),invoke:{src:"uninstallApp",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout,appName:e._internalState.installedApps[e._internalState.currentAppIndex].name}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:()=>({...e.context._internalState,currentAppIndex:e.context._internalState.currentAppIndex+1})})}),target:"CheckUninstallApp"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckUninstallApp:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfThereAreMoreAppsToUninstall"}]},DeleteLanguagePack:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.DeleteLanguagePack})}),invoke:{src:"deleteLanguagePack",onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:()=>({...e.context._internalState})})}),target:"CheckDeleteLanguagePack"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckDeleteLanguagePack:{always:[{guard:"hasError",target:"Error"},{target:"CheckIfDeviceSupportsCustomLockScreenFeature"}]},CheckIfDeviceSupportsCustomLockScreenFeature:{always:[{guard:"isCustomLockScreenFeatureSupported",target:"GetCustomLockScreenInfo"},{target:"Success"}]},GetCustomLockScreenInfo:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.GetCustomLockScreenInfo})}),invoke:{src:"getCustomLockScreenInfo",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>({...e.context._internalState,error:n}),Right:n=>({...e.context._internalState,hasCustomLockScreen:n.hasCustomLockScreen})})}),target:"CheckGetCustomLockScreenInfo"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetCustomLockScreenInfo:{always:[{guard:"hasError",target:"Error"},{guard:"hasCustomLockScreen",target:"RemoveCustomLockScreen"},{target:"Success"}]},RemoveCustomLockScreen:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:a.CleanDeviceSteps.RemoveCustomLockScreen})}),invoke:{src:"removeCustomLockScreen",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:n=>n instanceof p.NoCustomLockScreenImageDAError?{...e.context._internalState,customLockScreenRemoved:!0}:{...e.context._internalState,error:n},Right:()=>({...e.context._internalState})})}),target:"CheckRemoveCustomLockScreen"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckRemoveCustomLockScreen:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.error!==null?(0,c.Left)(e._internalState.error):(0,c.Right)(void 0)})}}0&&(module.exports={CleanDeviceDeviceAction});
2
+ //# sourceMappingURL=CleanDeviceDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.ts"],
4
+ "sourcesContent": ["import {\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 { NoCustomLockScreenImageDAError } from \"@api/device-action/customLockScreenDeviceActionErrors\";\nimport { deleteLanguagePack } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack\";\nimport { getCustomLockScreenInfo } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo\";\nimport { removeCustomLockScreen } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen\";\nimport { uninstallApp } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp\";\nimport {\n type CleanDeviceDAError,\n type CleanDeviceDAInput,\n type CleanDeviceDAIntermediateValue,\n type CleanDeviceDAInternalState,\n type CleanDeviceDAOutput,\n CleanDeviceSteps,\n} from \"@api/device-action/OsUpdate/CleanDevice/types\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nexport class CleanDeviceDeviceAction extends XStateDeviceAction<\n CleanDeviceDAOutput,\n CleanDeviceDAInput,\n CleanDeviceDAError,\n CleanDeviceDAIntermediateValue,\n CleanDeviceDAInternalState\n> {\n protected override makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n CleanDeviceDAOutput,\n CleanDeviceDAInput,\n CleanDeviceDAError,\n CleanDeviceDAIntermediateValue,\n CleanDeviceDAInternalState\n > {\n type types = StateMachineTypes<\n CleanDeviceDAOutput,\n CleanDeviceDAInput,\n CleanDeviceDAError,\n CleanDeviceDAIntermediateValue,\n CleanDeviceDAInternalState\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 listInstalledApps: listInstalledApps(\n internalAPI,\n this.input.unlockTimeout,\n ),\n uninstallApp: uninstallApp(internalAPI, this.input.unlockTimeout),\n deleteLanguagePack: fromPromise(deleteLanguagePack(internalAPI)),\n getCustomLockScreenInfo: getCustomLockScreenInfo(\n internalAPI,\n this.input.unlockTimeout,\n ),\n removeCustomLockScreen: removeCustomLockScreen(\n internalAPI,\n this.input.unlockTimeout,\n ),\n },\n guards: {\n isDeviceOnDashboard: ({ context }) =>\n isDashboardName(context._internalState.currentApp),\n hasError: ({ context }) => context._internalState.error !== null,\n hasMoreAppsToUninstall: ({ context }) =>\n context._internalState.currentAppIndex <\n context._internalState.installedApps.length,\n isCustomLockScreenFeatureSupported: () =>\n isCustomLockScreenSupported(internalAPI.getDeviceModel().id),\n hasCustomLockScreen: ({ context }) =>\n context._internalState.hasCustomLockScreen,\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: \"CleanDeviceDeviceAction\",\n initial: \"WaitForAppAndVersion\",\n context: ({ input }) => ({\n input: {\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: CleanDeviceSteps.Idle,\n },\n _internalState: {\n error: null,\n currentApp: null,\n installedApps: [],\n currentAppIndex: 0,\n uninstalledApps: [] as string[],\n languagePackRemoved: undefined,\n customLockScreenRemoved: undefined,\n hasCustomLockScreen: false,\n },\n }),\n states: {\n WaitForAppAndVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.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<CleanDeviceDAInternalState>({\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: \"ListInstalledApps\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.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<CleanDeviceDAInternalState>({\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 ListInstalledApps: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.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<CleanDeviceDAInternalState>({\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 currentAppIndex: 0,\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: \"CheckIfThereAreMoreAppsToUninstall\",\n },\n ],\n },\n CheckIfThereAreMoreAppsToUninstall: {\n always: [\n {\n guard: \"hasMoreAppsToUninstall\",\n target: \"UninstallApp\",\n },\n {\n target: \"DeleteLanguagePack\",\n },\n ],\n },\n UninstallApp: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.UninstallApps,\n }),\n }),\n invoke: {\n src: \"uninstallApp\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n appName:\n context._internalState.installedApps[\n context._internalState.currentAppIndex\n ]!.name,\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<CleanDeviceDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => ({\n ..._.context._internalState,\n currentAppIndex:\n _.context._internalState.currentAppIndex + 1,\n }),\n });\n },\n }),\n target: \"CheckUninstallApp\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckUninstallApp: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfThereAreMoreAppsToUninstall\",\n },\n ],\n },\n DeleteLanguagePack: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.DeleteLanguagePack,\n }),\n }),\n invoke: {\n src: \"deleteLanguagePack\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<CleanDeviceDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => ({\n ..._.context._internalState,\n }),\n });\n },\n }),\n target: \"CheckDeleteLanguagePack\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckDeleteLanguagePack: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"CheckIfDeviceSupportsCustomLockScreenFeature\",\n },\n ],\n },\n CheckIfDeviceSupportsCustomLockScreenFeature: {\n always: [\n {\n guard: \"isCustomLockScreenFeatureSupported\",\n target: \"GetCustomLockScreenInfo\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n GetCustomLockScreenInfo: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.GetCustomLockScreenInfo,\n }),\n }),\n invoke: {\n src: \"getCustomLockScreenInfo\",\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<CleanDeviceDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n hasCustomLockScreen: output.hasCustomLockScreen,\n }),\n });\n },\n }),\n target: \"CheckGetCustomLockScreenInfo\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetCustomLockScreenInfo: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"hasCustomLockScreen\",\n target: \"RemoveCustomLockScreen\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n RemoveCustomLockScreen: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: CleanDeviceSteps.RemoveCustomLockScreen,\n }),\n }),\n invoke: {\n src: \"removeCustomLockScreen\",\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<CleanDeviceDAInternalState>({\n Left: (error) =>\n error instanceof NoCustomLockScreenImageDAError\n ? {\n ..._.context._internalState,\n customLockScreenRemoved: true,\n }\n : {\n ..._.context._internalState,\n error,\n },\n Right: () => ({\n ..._.context._internalState,\n }),\n });\n },\n }),\n target: \"CheckRemoveCustomLockScreen\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckRemoveCustomLockScreen: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: { type: \"final\" },\n Error: { type: \"final\" },\n },\n output: ({ context }) => {\n if (context._internalState.error !== null) {\n return Left(context._internalState.error);\n }\n return Right(undefined);\n },\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CleanDeviceDeviceAction_exports", "__export", "CleanDeviceDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_screenSpecs", "import_customLockScreenDeviceActionErrors", "import_DeleteLanguagePack", "import_GetCustomLockScreenInfo", "import_RemoveCustomLockScreen", "import_UninstallApp", "import_types", "import_GoToDashboard", "import_ListInstalledApps", "import_WaitForAppAndVersion", "internalAPI", "context", "_", "input", "error", "output", "app"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=require("@ledgerhq/device-management-kit"),r=require("purify-ts"),C=require("xstate"),i=require("../../../device-action/__test-utils__/makeInternalApi"),c=require("../../../device-action/__test-utils__/testDeviceActionStates"),E=require("../../../device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction"),R=require("../../../device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack"),W=require("../../../device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo"),P=require("../../../device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen"),y=require("../../../device-action/OsUpdate/CleanDevice/Substeps/UninstallApp"),e=require("../../../device-action/OsUpdate/CleanDevice/types"),b=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),T=require("../../../device-action/OsUpdate/Shared/Substeps/ListInstalledApps"),g=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps");vi.mock("@api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp");vi.mock("@api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack");vi.mock("@api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo");vi.mock("@api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen");const D=p=>({flags:0,hash:`hash-${p}`,hash_code_data:`code-${p}`,name:p}),n=p=>({status:a.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None,step:p}}),S=()=>({status:a.DeviceActionStatus.Completed,output:void 0}),k=p=>({status:a.DeviceActionStatus.Error,error:p}),V=p=>(0,C.createMachine)({initial:"ready",states:{ready:{after:{0:"done"},entry:(0,C.assign)({intermediateValue:()=>({requiredUserInteraction:a.UserInteractionRequired.None})})},done:{type:"final"}},output:p}),L=p=>V(()=>p);describe("CleanDeviceDeviceAction",()=>{const{getDeviceModel:p}=(0,i.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.resetAllMocks()});const u=(o="BOLOS")=>vi.mocked(g.waitForAppAndVersion).mockReturnValue(L((0,r.Right)({name:o,version:"1.0.0"}))),U=o=>{const s=[...o];vi.mocked(g.waitForAppAndVersion).mockReturnValue(V(()=>(0,r.Right)({name:s.shift()??"BOLOS",version:"1.0.0"})))},F=(o=(0,r.Right)(void 0))=>vi.mocked(b.goToDashboard).mockReturnValue(L(o)),A=(o=(0,r.Right)({installedApps:[]}))=>vi.mocked(T.listInstalledApps).mockReturnValue(L(o)),w=(o=[(0,r.Right)(void 0)])=>{const s=[...o];vi.mocked(y.uninstallApp).mockReturnValue(V(()=>s.shift()??(0,r.Right)(void 0)))},m=(o=(0,r.Right)(void 0))=>vi.mocked(R.deleteLanguagePack).mockReturnValue(()=>Promise.resolve(o)),f=(o=(0,r.Right)({hasCustomLockScreen:!0}))=>vi.mocked(W.getCustomLockScreenInfo).mockReturnValue(L(o)),v=(o=(0,r.Right)(void 0))=>vi.mocked(P.removeCustomLockScreen).mockReturnValue(L(o)),h=()=>p.mockReturnValue({id:a.DeviceModelId.STAX}),I=()=>p.mockReturnValue({id:a.DeviceModelId.NANO_X}),d=()=>new E.CleanDeviceDeviceAction({input:{unlockTimeout:3e4}});describe("Success",()=>{it("should uninstall every app, delete the language pack and remove the CLS on a CLS-supported device",()=>new Promise((o,s)=>{u(),A((0,r.Right)({installedApps:[D("App1"),D("App2")]})),w([(0,r.Right)(void 0),(0,r.Right)(void 0)]),m(),h(),f(),v();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.DeleteLanguagePack),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.RemoveCustomLockScreen),n(e.CleanDeviceSteps.RemoveCustomLockScreen),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should filter out apps with an empty name before uninstalling",()=>new Promise((o,s)=>{u(),A((0,r.Right)({installedApps:[D(""),D("App1")]})),w([(0,r.Right)(void 0)]),m(),I();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.DeleteLanguagePack),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should skip the uninstall loop when there are no installed apps",()=>new Promise((o,s)=>{u(),A(),w(),m(),h(),f(),v();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.RemoveCustomLockScreen),n(e.CleanDeviceSteps.RemoveCustomLockScreen),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should skip RemoveCustomLockScreen for devices that do not support the feature",()=>new Promise((o,s)=>{u(),A(),m(),I(),v();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should skip RemoveCustomLockScreen when the device has no custom lock screen to remove",()=>new Promise((o,s)=>{u(),A(),m(),h(),f((0,r.Right)({hasCustomLockScreen:!1})),v();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to dashboard and wait for app and version again when an app is open",()=>new Promise((o,s)=>{U(["Bitcoin","BOLOS"]),F(),A(),m(),I();const t=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.GoToDashboard),n(e.CleanDeviceSteps.GoToDashboard),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),S()];(0,c.testDeviceActionStates)(d(),t,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})}))}),describe("Error",()=>{it("should go to Error when waitForAppAndVersion returns Left",()=>new Promise((o,s)=>{const t=new a.UnknownDAError("waitForAppAndVersion failed");vi.mocked(g.waitForAppAndVersion).mockReturnValue(L((0,r.Left)(t)));const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to Error when goToDashboard returns Left",()=>new Promise((o,s)=>{u("Bitcoin");const t=new a.UnknownDAError("goToDashboard failed");F((0,r.Left)(t));const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.GoToDashboard),n(e.CleanDeviceSteps.GoToDashboard),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to Error when listInstalledApps returns Left",()=>new Promise((o,s)=>{u();const t=new a.UnknownDAError("listInstalledApps failed");A((0,r.Left)(t));const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should abort immediately when uninstalling an app fails, without uninstalling the remaining apps",()=>new Promise((o,s)=>{u(),A((0,r.Right)({installedApps:[D("App1"),D("App2")]}));const t=new a.UnknownDAError("uninstallApp failed");w([(0,r.Left)(t),(0,r.Right)(void 0)]);const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.UninstallApps),n(e.CleanDeviceSteps.UninstallApps),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to Error when deleteLanguagePack returns Left",()=>new Promise((o,s)=>{u(),A();const t=new a.DeleteLanguagePackDAError("Invalid LANG_ID value.");m((0,r.Left)(t));const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to Error when getCustomLockScreenInfo returns Left",()=>new Promise((o,s)=>{u(),A(),m(),h();const t=new a.UnknownDAError("getCustomLockScreenInfo failed");f((0,r.Left)(t)),v();const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})})),it("should go to Error when removeCustomLockScreen fails",()=>new Promise((o,s)=>{u(),A(),m(),h(),f();const t=new a.UnknownDAError("removeCustomLockScreen failed");v((0,r.Left)(t));const l=[n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.WaitForAppAndVersion),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.ListInstalledApps),n(e.CleanDeviceSteps.DeleteLanguagePack),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.GetCustomLockScreenInfo),n(e.CleanDeviceSteps.RemoveCustomLockScreen),n(e.CleanDeviceSteps.RemoveCustomLockScreen),k(t)];(0,c.testDeviceActionStates)(d(),l,(0,i.makeDeviceActionInternalApiMock)(),{onDone:o,onError:s})}))})});
2
+ //# sourceMappingURL=CleanDeviceDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction.test.ts"],
4
+ "sourcesContent": ["import {\n DeleteLanguagePackDAError,\n DeviceActionStatus,\n DeviceModelId,\n type InstalledApp,\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 { CleanDeviceDeviceAction } from \"@api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction\";\nimport { deleteLanguagePack } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack\";\nimport { getCustomLockScreenInfo } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo\";\nimport { removeCustomLockScreen } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen\";\nimport { uninstallApp } from \"@api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp\";\nimport {\n type CleanDeviceDAError,\n type CleanDeviceDAState,\n CleanDeviceSteps,\n} from \"@api/device-action/OsUpdate/CleanDevice/types\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/ListInstalledApps\");\nvi.mock(\"@api/device-action/OsUpdate/CleanDevice/Substeps/UninstallApp\");\nvi.mock(\"@api/device-action/OsUpdate/CleanDevice/Substeps/DeleteLanguagePack\");\nvi.mock(\n \"@api/device-action/OsUpdate/CleanDevice/Substeps/GetCustomLockScreenInfo\",\n);\nvi.mock(\n \"@api/device-action/OsUpdate/CleanDevice/Substeps/RemoveCustomLockScreen\",\n);\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\nconst makeInstalledApp = (name: string): InstalledApp => ({\n flags: 0,\n hash: `hash-${name}`,\n hash_code_data: `code-${name}`,\n name,\n});\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: CleanDeviceSteps): CleanDeviceDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (): CleanDeviceDAState => ({\n status: DeviceActionStatus.Completed,\n output: undefined,\n});\n\nconst errorState = (error: CleanDeviceDAError): CleanDeviceDAState => ({\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 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(\"CleanDeviceDeviceAction\", () => {\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\n .mocked(waitForAppAndVersion)\n .mockReturnValue(\n createMockActorMachine(\n Right({ name: appName, version: \"1.0.0\" }),\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 output: Either<unknown, unknown> = Right(undefined),\n ) =>\n vi\n .mocked(goToDashboard)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof goToDashboard\n >,\n );\n\n const setupListInstalledApps = (\n output: Either<unknown, unknown> = Right({ installedApps: [] }),\n ) =>\n vi\n .mocked(listInstalledApps)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof listInstalledApps\n >,\n );\n\n const setupUninstallApp = (\n results: Either<unknown, unknown>[] = [Right(undefined)],\n ) => {\n const queue = [...results];\n vi.mocked(uninstallApp).mockReturnValue(\n createMockActorMachineFromOutput(\n () => queue.shift() ?? Right(undefined),\n ) as unknown as ReturnType<typeof uninstallApp>,\n );\n };\n\n const setupDeleteLanguagePack = (\n result: Either<DeleteLanguagePackDAError, void> = Right(undefined),\n ) =>\n vi\n .mocked(deleteLanguagePack)\n .mockReturnValue(() => Promise.resolve(result));\n\n const setupGetCustomLockScreenInfo = (\n output: Either<unknown, unknown> = Right({ hasCustomLockScreen: true }),\n ) =>\n vi\n .mocked(getCustomLockScreenInfo)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof getCustomLockScreenInfo\n >,\n );\n\n const setupRemoveCustomLockScreen = (\n output: Either<unknown, unknown> = Right(undefined),\n ) =>\n vi\n .mocked(removeCustomLockScreen)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof removeCustomLockScreen\n >,\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 CleanDeviceDeviceAction({\n input: { unlockTimeout: 30_000 },\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 uninstall every app, delete the language pack and remove the CLS on a CLS-supported device\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps(\n Right({\n installedApps: [makeInstalledApp(\"App1\"), makeInstalledApp(\"App2\")],\n }),\n );\n setupUninstallApp([Right(undefined), Right(undefined)]);\n setupDeleteLanguagePack();\n setupStaxModel();\n setupGetCustomLockScreenInfo();\n setupRemoveCustomLockScreen();\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should filter out apps with an empty name before uninstalling\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps(\n Right({\n installedApps: [makeInstalledApp(\"\"), makeInstalledApp(\"App1\")],\n }),\n );\n setupUninstallApp([Right(undefined)]);\n setupDeleteLanguagePack();\n setupNanoXModel();\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip the uninstall loop when there are no installed apps\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n setupUninstallApp(); // registered in actors but never invoked\n setupDeleteLanguagePack();\n setupStaxModel();\n setupGetCustomLockScreenInfo();\n setupRemoveCustomLockScreen();\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip RemoveCustomLockScreen for devices that do not support the feature\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n setupDeleteLanguagePack();\n setupNanoXModel();\n setupRemoveCustomLockScreen(); // registered in actors but never invoked\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should skip RemoveCustomLockScreen when the device has no custom lock screen to remove\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n setupDeleteLanguagePack();\n setupStaxModel();\n setupGetCustomLockScreenInfo(Right({ hasCustomLockScreen: false }));\n setupRemoveCustomLockScreen(); // registered in actors but never invoked\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n completedState(),\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 setupListInstalledApps();\n setupDeleteLanguagePack();\n setupNanoXModel();\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.GoToDashboard),\n pendingState(CleanDeviceSteps.GoToDashboard),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n completedState(),\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 waitForAppAndVersion returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n const error = new UnknownDAError(\"waitForAppAndVersion failed\");\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof waitForAppAndVersion\n >,\n );\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\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 goToDashboard returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion(\"Bitcoin\");\n const error = new UnknownDAError(\"goToDashboard failed\");\n setupGoToDashboard(Left(error));\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.GoToDashboard),\n pendingState(CleanDeviceSteps.GoToDashboard),\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 const error = new UnknownDAError(\"listInstalledApps failed\");\n setupListInstalledApps(Left(error));\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.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 abort immediately when uninstalling an app fails, without uninstalling the remaining apps\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps(\n Right({\n installedApps: [makeInstalledApp(\"App1\"), makeInstalledApp(\"App2\")],\n }),\n );\n const error = new UnknownDAError(\"uninstallApp failed\");\n setupUninstallApp([Left(error), Right(undefined)]);\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.UninstallApps),\n pendingState(CleanDeviceSteps.UninstallApps),\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 deleteLanguagePack returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n const error = new DeleteLanguagePackDAError(\"Invalid LANG_ID value.\");\n setupDeleteLanguagePack(Left(error));\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\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 getCustomLockScreenInfo returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n setupDeleteLanguagePack();\n setupStaxModel();\n const error = new UnknownDAError(\"getCustomLockScreenInfo failed\");\n setupGetCustomLockScreenInfo(Left(error));\n setupRemoveCustomLockScreen(); // registered in actors but never invoked\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\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 removeCustomLockScreen fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupListInstalledApps();\n setupDeleteLanguagePack();\n setupStaxModel();\n setupGetCustomLockScreenInfo();\n const error = new UnknownDAError(\"removeCustomLockScreen failed\");\n setupRemoveCustomLockScreen(Left(error));\n\n const expectedStates: CleanDeviceDAState[] = [\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.WaitForAppAndVersion),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.ListInstalledApps),\n pendingState(CleanDeviceSteps.DeleteLanguagePack),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.GetCustomLockScreenInfo),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\n pendingState(CleanDeviceSteps.RemoveCustomLockScreen),\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_CleanDeviceDeviceAction", "import_DeleteLanguagePack", "import_GetCustomLockScreenInfo", "import_RemoveCustomLockScreen", "import_UninstallApp", "import_types", "import_GoToDashboard", "import_ListInstalledApps", "import_WaitForAppAndVersion", "makeInstalledApp", "name", "pendingState", "step", "completedState", "errorState", "error", "createMockActorMachineFromOutput", "output", "createMockActorMachine", "getDeviceModelMock", "setupWaitForAppAndVersion", "appName", "setupWaitForAppAndVersionSequence", "appNames", "remainingAppNames", "setupGoToDashboard", "setupListInstalledApps", "setupUninstallApp", "results", "queue", "setupDeleteLanguagePack", "result", "setupGetCustomLockScreenInfo", "setupRemoveCustomLockScreen", "setupStaxModel", "setupNanoXModel", "makeDeviceAction", "resolve", "reject", "expectedStates"]
7
+ }