@ledgerhq/dmk-ledger-wallet 0.2.0 → 0.3.0

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 (146) hide show
  1. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceAction.js +2 -0
  2. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceAction.js.map +7 -0
  3. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.js +2 -0
  4. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.js.map +7 -0
  5. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.js +2 -0
  6. package/lib/cjs/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.js.map +7 -0
  7. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.js +2 -0
  8. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.js.map +7 -0
  9. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.js +2 -0
  10. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.js.map +7 -0
  11. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.js +2 -0
  12. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.js.map +7 -0
  13. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.js +2 -0
  14. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.js.map +7 -0
  15. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.js +2 -0
  16. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.js.map +7 -0
  17. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.js +2 -0
  18. package/lib/cjs/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.js.map +7 -0
  19. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.js +2 -0
  20. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.js.map +7 -0
  21. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.js +2 -0
  22. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.js.map +7 -0
  23. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.js +2 -0
  24. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.js.map +7 -0
  25. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.js +2 -0
  26. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.js.map +7 -0
  27. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.js +2 -0
  28. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.js.map +7 -0
  29. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.js +2 -0
  30. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.js.map +7 -0
  31. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.js +2 -0
  32. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.js.map +7 -0
  33. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.js +2 -0
  34. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.js.map +7 -0
  35. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.js +2 -0
  36. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.js.map +7 -0
  37. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.js +2 -0
  38. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.js.map +7 -0
  39. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.js +2 -0
  40. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.js.map +7 -0
  41. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.js +2 -0
  42. package/lib/cjs/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.js.map +7 -0
  43. package/lib/cjs/api/device-action/OsUpdate/Backup/types.js +2 -0
  44. package/lib/cjs/api/device-action/OsUpdate/Backup/types.js.map +7 -0
  45. package/lib/cjs/index.js +1 -1
  46. package/lib/cjs/index.js.map +3 -3
  47. package/lib/cjs/package.json +2 -2
  48. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceAction.js +2 -0
  49. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceAction.js.map +7 -0
  50. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.js +2 -0
  51. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.js.map +7 -0
  52. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.js +2 -0
  53. package/lib/esm/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.js.map +7 -0
  54. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.js +2 -0
  55. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.js.map +7 -0
  56. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.js +2 -0
  57. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.js.map +7 -0
  58. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.js +2 -0
  59. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.js.map +7 -0
  60. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.js +2 -0
  61. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.js.map +7 -0
  62. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.js +2 -0
  63. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.js.map +7 -0
  64. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.js +2 -0
  65. package/lib/esm/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.js.map +7 -0
  66. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.js +2 -0
  67. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.js.map +7 -0
  68. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.js +2 -0
  69. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.js.map +7 -0
  70. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.js +2 -0
  71. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.js.map +7 -0
  72. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.js +2 -0
  73. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.js.map +7 -0
  74. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.js +2 -0
  75. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.js.map +7 -0
  76. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.js +2 -0
  77. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.js.map +7 -0
  78. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.js +2 -0
  79. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.js.map +7 -0
  80. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.js +2 -0
  81. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.js.map +7 -0
  82. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.js +2 -0
  83. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.js.map +7 -0
  84. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.js +2 -0
  85. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.js.map +7 -0
  86. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.js +2 -0
  87. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.js.map +7 -0
  88. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.js +2 -0
  89. package/lib/esm/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.js.map +7 -0
  90. package/lib/esm/api/device-action/OsUpdate/Backup/types.js +2 -0
  91. package/lib/esm/api/device-action/OsUpdate/Backup/types.js.map +7 -0
  92. package/lib/esm/index.js +1 -1
  93. package/lib/esm/index.js.map +3 -3
  94. package/lib/esm/package.json +2 -2
  95. package/lib/types/api/command/BackgroundImageCommandErrors.d.ts +3 -3
  96. package/lib/types/api/command/DeleteBackgroundImageCommand.d.ts +1 -1
  97. package/lib/types/api/command/FetchBackgroundImageChunkCommand.d.ts +1 -1
  98. package/lib/types/api/command/GetBackgroundImageHashCommand.d.ts +1 -1
  99. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceAction.d.ts +6 -0
  100. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceAction.d.ts.map +1 -0
  101. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.d.ts +2 -0
  102. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.d.ts.map +1 -0
  103. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.d.ts +23 -0
  104. package/lib/types/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.d.ts.map +1 -0
  105. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.d.ts +12 -0
  106. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.d.ts.map +1 -0
  107. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.d.ts +6 -0
  108. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.d.ts.map +1 -0
  109. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.d.ts +2 -0
  110. package/lib/types/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.d.ts.map +1 -0
  111. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.d.ts +11 -0
  112. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.d.ts.map +1 -0
  113. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.d.ts +2 -0
  114. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.d.ts.map +1 -0
  115. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.d.ts +12 -0
  116. package/lib/types/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.d.ts.map +1 -0
  117. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.d.ts +14 -0
  118. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.d.ts.map +1 -0
  119. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.d.ts +2 -0
  120. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.d.ts.map +1 -0
  121. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.d.ts +6 -0
  122. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.d.ts.map +1 -0
  123. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.d.ts +2 -0
  124. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.d.ts.map +1 -0
  125. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.d.ts +8 -0
  126. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.d.ts.map +1 -0
  127. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.d.ts +2 -0
  128. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.d.ts.map +1 -0
  129. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.d.ts +5 -0
  130. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.d.ts.map +1 -0
  131. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.d.ts +2 -0
  132. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.d.ts.map +1 -0
  133. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.d.ts +13 -0
  134. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.d.ts.map +1 -0
  135. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.d.ts +2 -0
  136. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.d.ts.map +1 -0
  137. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.d.ts +15 -0
  138. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.d.ts.map +1 -0
  139. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.d.ts +2 -0
  140. package/lib/types/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.test.d.ts.map +1 -0
  141. package/lib/types/api/device-action/OsUpdate/Backup/types.d.ts +43 -0
  142. package/lib/types/api/device-action/OsUpdate/Backup/types.d.ts.map +1 -0
  143. package/lib/types/index.d.ts +2 -0
  144. package/lib/types/index.d.ts.map +1 -1
  145. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  146. package/package.json +5 -5
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var I=(o,r)=>{for(var c in r)s(o,c,{get:r[c],enumerable:!0})},f=(o,r,c,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of B(r))!E.call(o,e)&&e!==c&&s(o,e,{get:()=>r[e],enumerable:!(u=A(r,e))||u.enumerable});return o};var h=o=>f(s({},"__esModule",{value:!0}),o);var x={};I(x,{BackupDeviceAction:()=>y});module.exports=h(x);var n=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),a=require("xstate"),l=require("../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorage"),d=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),k=require("../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen"),g=require("../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId"),S=require("../../../device-action/OsUpdate/Backup/Substeps/ListInstalledApps"),m=require("../../../device-action/OsUpdate/Backup/Substeps/LookForBackup"),v=require("../../../device-action/OsUpdate/Backup/Substeps/SaveBackup"),i=require("../../../device-action/OsUpdate/Backup/types");class y extends n.XStateDeviceAction{makeStateMachine(r){const{storage:c}=this.input,u=new l.DeviceBackupStorage(c);return(0,a.setup)({types:{input:{},output:{},context:{}},actors:{lookForBackup:(0,a.fromPromise)((0,m.lookForBackup)(u)),getLanguageId:(0,a.fromPromise)((0,g.getLanguageId)(r)),listInstalledApps:(0,S.listInstalledApps)(r,this.input.unlockTimeout),downloadCustomLockScreen:(0,k.downloadCustomLockScreenDevice)(r,this.input.unlockTimeout,!0),backupAppsStorage:(0,a.fromPromise)((0,d.backupAppsStorage)(r,this.getLoggerFactory(r))),saveBackup:(0,a.fromPromise)((0,v.saveBackup)(u))},guards:{hasBackup:({context:e})=>e._internalState.backupAlreadyExist===!0,isDeviceOnboarded:({context:e})=>e.input.isDeviceOnboarded,isCustomLockScreenFeatureSupported:()=>[n.DeviceModelId.APEX,n.DeviceModelId.FLEX,n.DeviceModelId.STAX].includes(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:"BackupDeviceAction",initial:"LookForBackup",context:({input:e})=>({input:{isDeviceOnboarded:e.isDeviceOnboarded,deviceId:e.deviceId,storage:e.storage,unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.BackupSteps.Idle},_internalState:{error:null,languageId:void 0,installedApps:[],backupApps:[],clsHexImage:void 0,backupAlreadyExist:!1}}),states:{LookForBackup:{invoke:{src:"lookForBackup",input:({context:e})=>({deviceId:e.input.deviceId}),onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,backupAlreadyExist:t})})}),target:"CheckIfBackupExist"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfBackupExist:{always:[{guard:"hasError",target:"Error"},{guard:"hasBackup",target:"Success"},{target:"GetLanguage"}]},GetLanguage:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:i.BackupSteps.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:"CheckIfDeviceIsOnboarded"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnboarded:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnboarded",target:"ListInstalledApps"},{target:"SaveBackup"}]},ListInstalledApps:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:i.BackupSteps.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(D=>D.name!=="")})})}),target:"BackupAppsStorage"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},BackupAppsStorage:{always:{guard:"hasError",target:"Error"},entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:i.BackupSteps.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:"CheckIfDeviceSupportCustomLockScreenFeature"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceSupportCustomLockScreenFeature:{always:[{guard:"hasError",target:"Error"},{guard:"isCustomLockScreenFeatureSupported",target:"DownloadCustomLockScreen"},{target:"SaveBackup"}]},DownloadCustomLockScreen:{entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:i.BackupSteps.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,n.bufferToHexaString)(t.imageData,!0):void 0})})}),target:"SaveBackup"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},SaveBackup:{always:{guard:"hasError",target:"Error"},entry:(0,a.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:i.BackupSteps.SaveBackup})}),invoke:{src:"saveBackup",input:({context:e})=>({deviceId:e.input.deviceId,backup:{languageId:e._internalState.languageId,installedApps:e._internalState.backupApps,clsHexImage:e._internalState.clsHexImage,createdAt:new Date}}),onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:()=>({...e.context._internalState})})}),target:"CheckSaveBackup"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckSaveBackup:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.error!==null?(0,p.Left)(e._internalState.error):(0,p.Right)(void 0)})}}0&&(module.exports={BackupDeviceAction});
2
+ //# sourceMappingURL=BackupDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/Backup/BackupDeviceAction.ts"],
4
+ "sourcesContent": ["import {\n bufferToHexaString,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\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 { DeviceBackupStorage } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport { lookForBackup } from \"@api/device-action/OsUpdate/Backup/Substeps/LookForBackup\";\nimport { saveBackup } from \"@api/device-action/OsUpdate/Backup/Substeps/SaveBackup\";\nimport {\n type BackupDAError,\n type BackupDAInput,\n type BackupDAIntermediateValue,\n type BackupDAInternalState,\n type BackupDAOutput,\n BackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\n\nexport class BackupDeviceAction extends XStateDeviceAction<\n BackupDAOutput,\n BackupDAInput,\n BackupDAError,\n BackupDAIntermediateValue,\n BackupDAInternalState\n> {\n protected override makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n BackupDAOutput,\n BackupDAInput,\n BackupDAError,\n BackupDAIntermediateValue,\n BackupDAInternalState\n > {\n type types = StateMachineTypes<\n BackupDAOutput,\n BackupDAInput,\n BackupDAError,\n BackupDAIntermediateValue,\n BackupDAInternalState\n >;\n\n const { storage } = this.input;\n const deviceBackupStorage = new DeviceBackupStorage(storage);\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 lookForBackup: fromPromise(lookForBackup(deviceBackupStorage)),\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 saveBackup: fromPromise(saveBackup(deviceBackupStorage)),\n },\n guards: {\n hasBackup: ({ context }) =>\n context._internalState.backupAlreadyExist === true,\n isDeviceOnboarded: ({ context }) => context.input.isDeviceOnboarded,\n isCustomLockScreenFeatureSupported: () =>\n [DeviceModelId.APEX, DeviceModelId.FLEX, DeviceModelId.STAX].includes(\n internalAPI.getDeviceModel().id,\n ),\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: should never happen\n }),\n }),\n },\n }).createMachine({\n id: \"BackupDeviceAction\",\n initial: \"LookForBackup\",\n context: ({ input }) => ({\n input: {\n isDeviceOnboarded: input.isDeviceOnboarded,\n deviceId: input.deviceId,\n storage: input.storage,\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: BackupSteps.Idle,\n },\n _internalState: {\n error: null,\n languageId: undefined,\n installedApps: [],\n backupApps: [],\n clsHexImage: undefined,\n backupAlreadyExist: false,\n },\n }),\n states: {\n LookForBackup: {\n invoke: {\n src: \"lookForBackup\",\n input: ({ context }) => ({\n deviceId: context.input.deviceId,\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<BackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (backupAlreadyExist) => ({\n ..._.context._internalState,\n backupAlreadyExist,\n }),\n });\n },\n }),\n target: \"CheckIfBackupExist\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfBackupExist: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"hasBackup\",\n target: \"Success\",\n },\n {\n target: \"GetLanguage\",\n },\n ],\n },\n GetLanguage: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: BackupSteps.GetLanguage,\n }),\n }),\n invoke: {\n src: \"getLanguageId\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<BackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (languageId) => ({\n ..._.context._internalState,\n languageId,\n }),\n });\n },\n }),\n target: \"CheckIfDeviceIsOnboarded\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceIsOnboarded: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDeviceOnboarded\",\n target: \"ListInstalledApps\",\n },\n {\n target: \"SaveBackup\",\n },\n ],\n },\n ListInstalledApps: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: BackupSteps.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<BackupDAInternalState>({\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: \"BackupAppsStorage\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n BackupAppsStorage: {\n always: {\n guard: \"hasError\",\n target: \"Error\",\n },\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: BackupSteps.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<BackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (backupApps) => ({\n ..._.context._internalState,\n backupApps,\n }),\n });\n },\n }),\n target: \"CheckIfDeviceSupportCustomLockScreenFeature\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceSupportCustomLockScreenFeature: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isCustomLockScreenFeatureSupported\",\n target: \"DownloadCustomLockScreen\",\n },\n {\n target: \"SaveBackup\",\n },\n ],\n },\n DownloadCustomLockScreen: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: BackupSteps.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<BackupDAInternalState>({\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: \"SaveBackup\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n SaveBackup: {\n always: {\n guard: \"hasError\",\n target: \"Error\",\n },\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: BackupSteps.SaveBackup,\n }),\n }),\n invoke: {\n src: \"saveBackup\",\n input: ({ context }) => ({\n deviceId: context.input.deviceId,\n backup: {\n languageId: context._internalState.languageId,\n installedApps: context._internalState.backupApps,\n clsHexImage: context._internalState.clsHexImage,\n createdAt: new Date(),\n },\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<BackupDAInternalState>({\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => ({\n ..._.context._internalState,\n }),\n });\n },\n }),\n target: \"CheckSaveBackup\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckSaveBackup: {\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(undefined);\n },\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["BackupDeviceAction_exports", "__export", "BackupDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_DeviceBackupStorage", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetLanguageId", "import_ListInstalledApps", "import_LookForBackup", "import_SaveBackup", "import_types", "internalAPI", "storage", "deviceBackupStorage", "context", "_", "input", "error", "backupAlreadyExist", "languageId", "output", "app", "backupApps"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),B=require("xstate"),c=require("../../../device-action/__test-utils__/makeInternalApi"),i=require("../../../device-action/__test-utils__/testDeviceActionStates"),V=require("../../../device-action/OsUpdate/Backup/BackupDeviceAction"),k=require("../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors"),E=require("../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage"),h=require("../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen"),y=require("../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId"),P=require("../../../device-action/OsUpdate/Backup/Substeps/ListInstalledApps"),D=require("../../../device-action/OsUpdate/Backup/Substeps/LookForBackup"),R=require("../../../device-action/OsUpdate/Backup/Substeps/SaveBackup"),e=require("../../../device-action/OsUpdate/Backup/types");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/LookForBackup");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage");vi.mock("@api/device-action/OsUpdate/Backup/Substeps/SaveBackup");const o=d=>({status:p.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:p.UserInteractionRequired.None,step:d}}),w=()=>({status:p.DeviceActionStatus.Completed,output:void 0}),S=d=>({status:p.DeviceActionStatus.Error,error:d}),L=d=>(0,B.createMachine)({initial:"ready",states:{ready:{after:{0:"done"},entry:(0,B.assign)({intermediateValue:()=>({requiredUserInteraction:p.UserInteractionRequired.None})})},done:{type:"final"}},output:()=>d}),x="device123",b={getItem:vi.fn(),setItem:vi.fn(),removeItem:vi.fn()};describe("BackupDeviceAction",()=>{const{getDeviceModel:d}=(0,c.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.resetAllMocks()});const l=()=>vi.mocked(D.lookForBackup).mockReturnValue(()=>Promise.resolve((0,s.Right)(!1))),m=()=>vi.mocked(y.getLanguageId).mockReturnValue(()=>Promise.resolve((0,s.Right)(1))),v=()=>vi.mocked(P.listInstalledApps).mockReturnValue(L((0,s.Right)({installedApps:[{name:"TestApp",hash:"abc",hash_code_data:"code",flags:0}]}))),A=()=>vi.mocked(E.backupAppsStorage).mockReturnValue(()=>Promise.resolve((0,s.Right)([{appName:"TestApp",data:"appData"}]))),g=()=>vi.mocked(h.downloadCustomLockScreenDevice).mockReturnValue(L((0,s.Right)({imageData:new Uint8Array([1,2]),imageHash:"0102"}))),f=()=>vi.mocked(R.saveBackup).mockReturnValue(()=>Promise.resolve((0,s.Right)(void 0))),I=()=>d.mockReturnValue({id:p.DeviceModelId.STAX}),C=()=>d.mockReturnValue({id:p.DeviceModelId.NANO_X}),u=(r=!0)=>new V.BackupDeviceAction({input:{isDeviceOnboarded:r,deviceId:x,storage:b,unlockTimeout:3e4}});describe("Success",()=>{it("should complete the full backup flow for a CLS-supported device",()=>new Promise((r,a)=>{l(),m(),v(),A(),g(),f(),I();const t=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.BackupAppsStorage),o(e.BackupSteps.DownloadCustomLockScreen),o(e.BackupSteps.DownloadCustomLockScreen),o(e.BackupSteps.SaveBackup),w()];(0,i.testDeviceActionStates)(u(),t,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should complete immediately when a valid backup already exists",()=>new Promise((r,a)=>{vi.mocked(D.lookForBackup).mockReturnValue(()=>Promise.resolve((0,s.Right)(!0)));const t=[o(e.BackupSteps.Idle),w()];(0,i.testDeviceActionStates)(u(),t,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should skip ListInstalledApps and DownloadCustomLockScreen when device is unseeded",()=>new Promise((r,a)=>{l(),m(),v(),A(),g(),f();const t=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.SaveBackup),w()];(0,i.testDeviceActionStates)(u(!1),t,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should skip DownloadCustomLockScreen for devices that do not support CLS",()=>new Promise((r,a)=>{l(),m(),v(),A(),g(),f(),C();const t=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.BackupAppsStorage),o(e.BackupSteps.SaveBackup),w()];(0,i.testDeviceActionStates)(u(),t,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})}))}),describe("Error",()=>{it("should go to Error when lookForBackup returns Left",()=>new Promise((r,a)=>{const t=new k.LookForBackupError(new Error("data storage failed"));vi.mocked(D.lookForBackup).mockReturnValue(()=>Promise.resolve((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when lookForBackup promise rejects",()=>new Promise((r,a)=>{const t=new Error("unexpected crash");vi.mocked(D.lookForBackup).mockReturnValue(()=>Promise.reject(t));const n=[o(e.BackupSteps.Idle),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when getLanguageId returns Left",()=>new Promise((r,a)=>{l(),v();const t=new k.GetLanguageIdError(new Error("command failed"));vi.mocked(y.getLanguageId).mockReturnValue(()=>Promise.resolve((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when listInstalledApps returns Left",()=>new Promise((r,a)=>{l(),m();const t=new p.UnknownDAError("listInstalledApps failed");vi.mocked(P.listInstalledApps).mockReturnValue(L((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when backupAppsStorage returns Left",()=>new Promise((r,a)=>{l(),m(),v(),g();const t=new k.BackupAppsStorageError(new Error("storage failed"));vi.mocked(E.backupAppsStorage).mockReturnValue(()=>Promise.resolve((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.BackupAppsStorage),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when downloadCustomLockScreenDevice returns Left",()=>new Promise((r,a)=>{l(),m(),v(),A(),I();const t=new p.UnknownDAError("downloadCLS failed");vi.mocked(h.downloadCustomLockScreenDevice).mockReturnValue(L((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.BackupAppsStorage),o(e.BackupSteps.DownloadCustomLockScreen),o(e.BackupSteps.DownloadCustomLockScreen),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})})),it("should go to Error when saveBackup returns Left",()=>new Promise((r,a)=>{l(),m(),v(),A(),g(),I();const t=new k.SaveBackupError(new Error("save failed"));vi.mocked(R.saveBackup).mockReturnValue(()=>Promise.resolve((0,s.Left)(t)));const n=[o(e.BackupSteps.Idle),o(e.BackupSteps.GetLanguage),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.ListInstalledApps),o(e.BackupSteps.BackupAppsStorage),o(e.BackupSteps.DownloadCustomLockScreen),o(e.BackupSteps.DownloadCustomLockScreen),o(e.BackupSteps.SaveBackup),S(t)];(0,i.testDeviceActionStates)(u(),n,(0,c.makeDeviceActionInternalApiMock)(),{onDone:r,onError:a})}))})});
2
+ //# sourceMappingURL=BackupDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/Backup/BackupDeviceAction.test.ts"],
4
+ "sourcesContent": ["import {\n DeviceActionStatus,\n DeviceModelId,\n type TransportDeviceModel,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type KeyValueStorage } 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 { BackupDeviceAction } from \"@api/device-action/OsUpdate/Backup/BackupDeviceAction\";\nimport {\n BackupAppsStorageError,\n GetLanguageIdError,\n LookForBackupError,\n SaveBackupError,\n} from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\nimport { lookForBackup } from \"@api/device-action/OsUpdate/Backup/Substeps/LookForBackup\";\nimport { saveBackup } from \"@api/device-action/OsUpdate/Backup/Substeps/SaveBackup\";\nimport {\n type BackupDAError,\n type BackupDAState,\n BackupSteps,\n} from \"@api/device-action/OsUpdate/Backup/types\";\n\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/LookForBackup\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\");\nvi.mock(\"@api/device-action/OsUpdate/Backup/Substeps/SaveBackup\");\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: BackupSteps): BackupDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (): BackupDAState => ({\n status: DeviceActionStatus.Completed,\n output: undefined,\n});\n\nconst errorState = (error: BackupDAError): BackupDAState => ({\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 createMockActorMachine = (output: Either<unknown, unknown>) =>\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: () => output,\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 DEVICE_ID = \"device123\";\n\nconst storage: KeyValueStorage = {\n getItem: vi.fn(),\n setItem: vi.fn(),\n removeItem: vi.fn(),\n};\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 setupNoExistingBackup = () =>\n vi\n .mocked(lookForBackup)\n .mockReturnValue(() => Promise.resolve(Right(false)));\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: \"appData\" }])),\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 setupSaveBackup = () =>\n vi\n .mocked(saveBackup)\n .mockReturnValue(() => Promise.resolve(Right(undefined)));\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 = (isDeviceOnboarded = true) =>\n new BackupDeviceAction({\n input: {\n isDeviceOnboarded,\n deviceId: DEVICE_ID,\n storage,\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 setupNoExistingBackup();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls();\n setupSaveBackup();\n setupStaxModel();\n\n // State transitions:\n // GetBackupIfExist \u2192 GetLanguage \u2192 ListInstalledApps (\u00D72: enter + onSnapshot)\n // \u2192 BackupAppsStorage \u2192 DownloadCustomLockScreen (\u00D72: enter + onSnapshot)\n // \u2192 SaveBackup \u2192 Success\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.BackupAppsStorage),\n pendingState(BackupSteps.DownloadCustomLockScreen),\n pendingState(BackupSteps.DownloadCustomLockScreen),\n pendingState(BackupSteps.SaveBackup),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"should complete immediately when a valid backup already exists\", () =>\n new Promise<void>((resolve, reject) => {\n vi.mocked(lookForBackup).mockReturnValue(() =>\n Promise.resolve(Right(true)),\n );\n\n // CheckIfBackupExist.hasBackup \u2192 immediately transitions to Success\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n completedState(),\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 setupNoExistingBackup();\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 setupSaveBackup();\n\n // ListInstalledApps.always isDeviceUnseeded \u2192 jumps directly to SaveBackup\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.SaveBackup),\n completedState(),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(false /* isDeviceOnboarded */),\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 setupNoExistingBackup();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls(); // registered in actors but never invoked (always guard fires first)\n setupSaveBackup();\n setupNanoXModel();\n\n // DownloadCustomLockScreen.always isCustomLockScreenFeatureNotSupported \u2192 SaveBackup\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.BackupAppsStorage),\n pendingState(BackupSteps.SaveBackup),\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 lookForBackup returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n const error = new LookForBackupError(new Error(\"data storage failed\"));\n vi.mocked(lookForBackup).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // CheckIfBackupExist.hasError \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\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 lookForBackup promise rejects\", () =>\n new Promise<void>((resolve, reject) => {\n const thrownError = new Error(\"unexpected crash\");\n vi.mocked(lookForBackup).mockReturnValue(() =>\n Promise.reject(thrownError),\n );\n\n // onError \u2192 assignErrorFromEvent \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n errorState(thrownError as unknown as BackupDAError),\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 getLanguageId returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupNoExistingBackup();\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 ListInstalledApps.always hasError \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.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 setupNoExistingBackup();\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: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.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 setupNoExistingBackup();\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 DownloadCustomLockScreen.always hasError \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.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 setupNoExistingBackup();\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 SaveBackup.always hasError \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.BackupAppsStorage),\n pendingState(BackupSteps.DownloadCustomLockScreen),\n pendingState(BackupSteps.DownloadCustomLockScreen),\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 saveBackup returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupNoExistingBackup();\n setupGetLanguageId();\n setupListInstalledApps();\n setupBackupAppsStorage();\n setupDownloadCls();\n setupStaxModel();\n const error = new SaveBackupError(new Error(\"save failed\"));\n vi.mocked(saveBackup).mockReturnValue(() =>\n Promise.resolve(Left(error)),\n );\n\n // saveBackup Left \u2192 CheckSaveBackup.always hasError \u2192 Error\n const expectedStates: BackupDAState[] = [\n pendingState(BackupSteps.Idle),\n pendingState(BackupSteps.GetLanguage),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.ListInstalledApps),\n pendingState(BackupSteps.BackupAppsStorage),\n pendingState(BackupSteps.DownloadCustomLockScreen),\n pendingState(BackupSteps.DownloadCustomLockScreen),\n pendingState(BackupSteps.SaveBackup),\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_BackupDeviceAction", "import_BackupDeviceActionErrors", "import_BackupAppsStorage", "import_DownloadCustomLockScreen", "import_GetLanguageId", "import_ListInstalledApps", "import_LookForBackup", "import_SaveBackup", "import_types", "pendingState", "step", "completedState", "errorState", "error", "createMockActorMachine", "output", "DEVICE_ID", "storage", "getDeviceModelMock", "setupNoExistingBackup", "setupGetLanguageId", "setupListInstalledApps", "setupBackupAppsStorage", "setupDownloadCls", "setupSaveBackup", "setupStaxModel", "setupNanoXModel", "makeDeviceAction", "isDeviceOnboarded", "resolve", "reject", "expectedStates", "thrownError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var a in r)e(o,a,{get:r[a],enumerable:!0})},u=(o,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of i(r))!k.call(o,n)&&n!==a&&e(o,n,{get:()=>r[n],enumerable:!(t=p(r,n))||t.enumerable});return o};var c=o=>u(e({},"__esModule",{value:!0}),o);var d={};E(d,{BackupAppsStorageError:()=>g,GetLanguageIdError:()=>s,LookForBackupError:()=>l,SaveBackupError:()=>m});module.exports=c(d);class l{_tag="LookForBackupError";originalError;constructor(r){this.originalError=r}}class s{_tag="GetLanguageIdError";originalError;constructor(r){this.originalError=r}}class g{_tag="BackupAppsStorageError";originalError;constructor(r){this.originalError=r}}class m{_tag="SaveBackupError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={BackupAppsStorageError,GetLanguageIdError,LookForBackupError,SaveBackupError});
2
+ //# sourceMappingURL=BackupDeviceActionErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/Backup/BackupDeviceActionErrors.ts"],
4
+ "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class LookForBackupError implements DmkError {\n readonly _tag = \"LookForBackupError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class GetLanguageIdError implements DmkError {\n readonly _tag = \"GetLanguageIdError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class BackupAppsStorageError implements DmkError {\n readonly _tag = \"BackupAppsStorageError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class SaveBackupError implements DmkError {\n readonly _tag = \"SaveBackupError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport type BackupDeviceActionErrors =\n | LookForBackupError\n | GetLanguageIdError\n | BackupAppsStorageError\n | SaveBackupError;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,oBAAAC,IAAA,eAAAC,EAAAN,GAEO,MAAMI,CAAuC,CACzC,KAAO,qBACP,cAET,YAAYG,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMJ,CAAuC,CACzC,KAAO,qBACP,cAET,YAAYI,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAML,CAA2C,CAC7C,KAAO,yBACP,cAET,YAAYK,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMF,CAAoC,CACtC,KAAO,kBACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["BackupDeviceActionErrors_exports", "__export", "BackupAppsStorageError", "GetLanguageIdError", "LookForBackupError", "SaveBackupError", "__toCommonJS", "originalError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var k=(o,r)=>{for(var i in r)a(o,i,{get:r[i],enumerable:!0})},E=(o,r,i,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of l(r))!s.call(o,n)&&n!==i&&a(o,n,{get:()=>r[n],enumerable:!(t=e(r,n))||t.enumerable});return o};var c=o=>E(a({},"__esModule",{value:!0}),o);var m={};k(m,{BackupDeserializationError:()=>u,BackupSerializationError:()=>p});module.exports=c(m);class p{_tag="BackupSerializationError";originalError;constructor(r){this.originalError=r}}class u{_tag="BackupDeserializationError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={BackupDeserializationError,BackupSerializationError});
2
+ //# sourceMappingURL=BackSerializerErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors.ts"],
4
+ "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class BackupSerializationError implements DmkError {\n readonly _tag = \"BackupSerializationError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class BackupDeserializationError implements DmkError {\n readonly _tag = \"BackupDeserializationError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,EAAA,6BAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAMG,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMH,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYG,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["BackSerializerErrors_exports", "__export", "BackupDeserializationError", "BackupSerializationError", "__toCommonJS", "originalError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var c in e)o(t,c,{get:e[c],enumerable:!0})},m=(t,e,c,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of s(e))!u.call(t,a)&&a!==c&&o(t,a,{get:()=>e[a],enumerable:!(n=p(e,a))||n.enumerable});return t};var l=t=>m(o({},"__esModule",{value:!0}),t);var f={};d(f,{deserialize:()=>g,serialize:()=>B});module.exports=l(f);var r=require("purify-ts"),i=require("../../../../device-action/OsUpdate/Backup/Storage/BackSerializerErrors");const k=r.Codec.interface({languageId:(0,r.optional)(r.number),installedApps:(0,r.array)(r.Codec.interface({appName:r.string,data:(0,r.optional)(r.string)})),clsHexImage:(0,r.optional)(r.string),createdAt:r.string}),B=t=>{try{return(0,r.Right)(JSON.stringify(t))}catch(e){return(0,r.Left)(new i.BackupSerializationError(e))}},g=t=>{try{return k.decode(JSON.parse(t)).mapLeft(e=>new i.BackupDeserializationError(e)).map(e=>({...e,createdAt:new Date(e.createdAt)}))}catch(e){return(0,r.Left)(new i.BackupDeserializationError(e))}};0&&(module.exports={deserialize,serialize});
2
+ //# sourceMappingURL=BackupSerializer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.ts"],
4
+ "sourcesContent": ["import {\n array,\n Codec,\n type Either,\n Left,\n number,\n optional,\n Right,\n string,\n} from \"purify-ts\";\n\nimport {\n BackupDeserializationError,\n BackupSerializationError,\n} from \"@api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors\";\nimport { type Backup } from \"@api/device-action/OsUpdate/Backup/types\";\n\ntype BackupData = Omit<Backup, \"createdAt\"> & { createdAt: string };\n\nconst backupCodec: Codec<BackupData> = Codec.interface({\n languageId: optional(number),\n installedApps: array(\n Codec.interface({\n appName: string,\n data: optional(string),\n }),\n ),\n clsHexImage: optional(string),\n createdAt: string,\n});\n\nexport const serialize = (\n backup: Backup,\n): Either<BackupSerializationError, string> => {\n try {\n return Right(JSON.stringify(backup));\n } catch (error) {\n return Left(new BackupSerializationError(error));\n }\n};\n\nexport const deserialize = (\n data: string,\n): Either<BackupDeserializationError, Backup> => {\n try {\n return backupCodec\n .decode(JSON.parse(data))\n .mapLeft((error) => new BackupDeserializationError(error))\n .map((backupData) => ({\n ...backupData,\n createdAt: new Date(backupData.createdAt),\n }));\n } catch (error) {\n return Left(new BackupDeserializationError(error));\n }\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,cAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EASO,qBAEPC,EAGO,2EAKP,MAAMC,EAAiC,QAAM,UAAU,CACrD,cAAY,YAAS,QAAM,EAC3B,iBAAe,SACb,QAAM,UAAU,CACd,QAAS,SACT,QAAM,YAAS,QAAM,CACvB,CAAC,CACH,EACA,eAAa,YAAS,QAAM,EAC5B,UAAW,QACb,CAAC,EAEYJ,EACXK,GAC6C,CAC7C,GAAI,CACF,SAAO,SAAM,KAAK,UAAUA,CAAM,CAAC,CACrC,OAASC,EAAO,CACd,SAAO,QAAK,IAAI,2BAAyBA,CAAK,CAAC,CACjD,CACF,EAEaP,EACXQ,GAC+C,CAC/C,GAAI,CACF,OAAOH,EACJ,OAAO,KAAK,MAAMG,CAAI,CAAC,EACvB,QAASD,GAAU,IAAI,6BAA2BA,CAAK,CAAC,EACxD,IAAKE,IAAgB,CACpB,GAAGA,EACH,UAAW,IAAI,KAAKA,EAAW,SAAS,CAC1C,EAAE,CACN,OAASF,EAAO,CACd,SAAO,QAAK,IAAI,6BAA2BA,CAAK,CAAC,CACnD,CACF",
6
+ "names": ["BackupSerializer_exports", "__export", "deserialize", "serialize", "__toCommonJS", "import_purify_ts", "import_BackSerializerErrors", "backupCodec", "backup", "error", "data", "backupData"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=require("../../../../device-action/OsUpdate/Backup/Storage/BackSerializerErrors"),r=require("../../../../device-action/OsUpdate/Backup/Storage/BackupSerializer");describe("BackupSerializer",()=>{describe("Serialize",()=>{describe("Success",()=>{it("should serialize a backup to a JSON string",()=>{const e={languageId:1,installedApps:[],clsHexImage:void 0,createdAt:new Date},t=JSON.stringify(e),a=(0,r.serialize)(e);expect(a.isRight()).toBe(!0),expect(a.extract()).toBe(t)})}),describe("Error",()=>{it("should return a BackupSerializationError when the backup is invalid",()=>{const e={languageId:1,installedApps:[],clsHexImage:void 0,createdAt:new Date};vi.spyOn(JSON,"stringify").mockImplementationOnce(()=>{throw new Error("Invalid JSON")});const t=(0,r.serialize)(e);expect(t.isLeft()).toBe(!0),expect(t.extract()).toBeInstanceOf(i.BackupSerializationError)})})}),describe("Deserialize",()=>{describe("Success",()=>{it("should deserialize a serialized backup",()=>{const e={languageId:1,installedApps:[{appName:"MyApp",data:void 0}],clsHexImage:void 0,createdAt:new Date("2024-01-01T00:00:00.000Z")},t=(0,r.serialize)(e).unsafeCoerce(),a=(0,r.deserialize)(t);expect(a.isRight()).toBe(!0),expect(a.extract()).toEqual(e)})}),describe("Error",()=>{it("should return a BackupDeserializationError when the JSON is invalid",()=>{const e=(0,r.deserialize)("not-valid-json{{{");expect(e.isLeft()).toBe(!0),expect(e.extract()).toBeInstanceOf(i.BackupDeserializationError)}),it("should return a BackupDeserializationError when the decoded shape does not match",()=>{const e=JSON.stringify({unexpected:"shape"}),t=(0,r.deserialize)(e);expect(t.isLeft()).toBe(!0),expect(t.extract()).toBeInstanceOf(i.BackupDeserializationError)})})})});
2
+ //# sourceMappingURL=BackupSerializer.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/BackupSerializer.test.ts"],
4
+ "sourcesContent": ["import {\n BackupDeserializationError,\n BackupSerializationError,\n} from \"@api/device-action/OsUpdate/Backup/Storage/BackSerializerErrors\";\nimport {\n deserialize,\n serialize,\n} from \"@api/device-action/OsUpdate/Backup/Storage/BackupSerializer\";\n\ndescribe(\"BackupSerializer\", () => {\n describe(\"Serialize\", () => {\n describe(\"Success\", () => {\n it(\"should serialize a backup to a JSON string\", () => {\n // ARRANGE\n const backup = {\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n createdAt: new Date(),\n };\n const expected = JSON.stringify(backup);\n\n // ACT\n const result = serialize(backup);\n\n // ASSERT\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toBe(expected);\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return a BackupSerializationError when the backup is invalid\", () => {\n // ARRANGE\n const backup = {\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n createdAt: new Date(),\n };\n vi.spyOn(JSON, \"stringify\").mockImplementationOnce(() => {\n throw new Error(\"Invalid JSON\");\n });\n\n // ACT\n const result = serialize(backup);\n\n // ASSERT\n expect(result.isLeft()).toBe(true);\n expect(result.extract()).toBeInstanceOf(BackupSerializationError);\n });\n });\n });\n\n describe(\"Deserialize\", () => {\n describe(\"Success\", () => {\n it(\"should deserialize a serialized backup\", () => {\n // ARRANGE\n const backup = {\n languageId: 1,\n installedApps: [{ appName: \"MyApp\", data: undefined }],\n clsHexImage: undefined,\n createdAt: new Date(\"2024-01-01T00:00:00.000Z\"),\n };\n const json = serialize(backup).unsafeCoerce();\n\n // ACT\n const result = deserialize(json);\n\n // ASSERT\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual(backup);\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return a BackupDeserializationError when the JSON is invalid\", () => {\n // ACT\n const result = deserialize(\"not-valid-json{{{\");\n\n // ASSERT\n expect(result.isLeft()).toBe(true);\n expect(result.extract()).toBeInstanceOf(BackupDeserializationError);\n });\n\n it(\"should return a BackupDeserializationError when the decoded shape does not match\", () => {\n // ARRANGE\n const json = JSON.stringify({ unexpected: \"shape\" });\n\n // ACT\n const result = deserialize(json);\n\n // ASSERT\n expect(result.isLeft()).toBe(true);\n expect(result.extract()).toBeInstanceOf(BackupDeserializationError);\n });\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAGO,2EACPC,EAGO,uEAEP,SAAS,mBAAoB,IAAM,CACjC,SAAS,YAAa,IAAM,CAC1B,SAAS,UAAW,IAAM,CACxB,GAAG,6CAA8C,IAAM,CAErD,MAAMC,EAAS,CACb,WAAY,EACZ,cAAe,CAAC,EAChB,YAAa,OACb,UAAW,IAAI,IACjB,EACMC,EAAW,KAAK,UAAUD,CAAM,EAGhCE,KAAS,aAAUF,CAAM,EAG/B,OAAOE,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,KAAKD,CAAQ,CACxC,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,sEAAuE,IAAM,CAE9E,MAAMD,EAAS,CACb,WAAY,EACZ,cAAe,CAAC,EAChB,YAAa,OACb,UAAW,IAAI,IACjB,EACA,GAAG,MAAM,KAAM,WAAW,EAAE,uBAAuB,IAAM,CACvD,MAAM,IAAI,MAAM,cAAc,CAChC,CAAC,EAGD,MAAME,KAAS,aAAUF,CAAM,EAG/B,OAAOE,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjC,OAAOA,EAAO,QAAQ,CAAC,EAAE,eAAe,0BAAwB,CAClE,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,SAAS,UAAW,IAAM,CACxB,GAAG,yCAA0C,IAAM,CAEjD,MAAMF,EAAS,CACb,WAAY,EACZ,cAAe,CAAC,CAAE,QAAS,QAAS,KAAM,MAAU,CAAC,EACrD,YAAa,OACb,UAAW,IAAI,KAAK,0BAA0B,CAChD,EACMG,KAAO,aAAUH,CAAM,EAAE,aAAa,EAGtCE,KAAS,eAAYC,CAAI,EAG/B,OAAOD,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QAAQF,CAAM,CACzC,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,sEAAuE,IAAM,CAE9E,MAAME,KAAS,eAAY,mBAAmB,EAG9C,OAAOA,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjC,OAAOA,EAAO,QAAQ,CAAC,EAAE,eAAe,4BAA0B,CACpE,CAAC,EAED,GAAG,mFAAoF,IAAM,CAE3F,MAAMC,EAAO,KAAK,UAAU,CAAE,WAAY,OAAQ,CAAC,EAG7CD,KAAS,eAAYC,CAAI,EAG/B,OAAOD,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjC,OAAOA,EAAO,QAAQ,CAAC,EAAE,eAAe,4BAA0B,CACpE,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_BackSerializerErrors", "import_BackupSerializer", "backup", "expected", "result", "json"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var k=(a,e)=>{for(var r in e)p(a,r,{get:e[r],enumerable:!0})},l=(a,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of E(e))!y.call(a,o)&&o!==r&&p(a,o,{get:()=>e[o],enumerable:!(t=m(e,o))||t.enumerable});return a};var B=a=>l(p({},"__esModule",{value:!0}),a);var d={};k(d,{DeviceBackupStorage:()=>v});module.exports=B(d);var n=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),i=require("../../../../device-action/OsUpdate/Backup/Storage/BackupSerializer"),c=require("../../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors");const u=`${n.DMK_STORAGE_PREFIX_KEY}-device-backup`;class v{constructor(e){this.storage=e}async getBackup(e){return(0,s.EitherAsync)(async({liftEither:r})=>{const t=await this.storage.getItem(`${u}-${e}`);return t?r((0,i.deserialize)(t)):null}).mapLeft(r=>new c.GetBackupError(r)).run()}async saveBackup(e,r){return(0,s.EitherAsync)(async({liftEither:t})=>{const o=await t((0,i.serialize)(r));await this.storage.setItem(`${u}-${e}`,o)}).mapLeft(t=>new c.SaveBackupError(t)).run()}}0&&(module.exports={DeviceBackupStorage});
2
+ //# sourceMappingURL=DeviceBackupStorage.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.ts"],
4
+ "sourcesContent": ["import {\n type DeviceId,\n DMK_STORAGE_PREFIX_KEY,\n type KeyValueStorage,\n} from \"@ledgerhq/device-management-kit\";\nimport { EitherAsync } from \"purify-ts\";\nimport { type Either } from \"purify-ts/Either\";\n\nimport {\n deserialize,\n serialize,\n} from \"@api/device-action/OsUpdate/Backup/Storage/BackupSerializer\";\nimport {\n GetBackupError,\n SaveBackupError,\n} from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors\";\nimport { type Backup } from \"@api/device-action/OsUpdate/Backup/types\";\n\nconst BACKUP_STORAGE_PREFIX_KEY = `${DMK_STORAGE_PREFIX_KEY}-device-backup`;\n\nexport class DeviceBackupStorage {\n constructor(private readonly storage: KeyValueStorage) {}\n\n async getBackup(\n deviceId: DeviceId,\n ): Promise<Either<GetBackupError, Backup | null>> {\n return EitherAsync(async ({ liftEither }) => {\n const data = await this.storage.getItem(\n `${BACKUP_STORAGE_PREFIX_KEY}-${deviceId}`,\n );\n if (!data) return null;\n return liftEither(deserialize(data));\n })\n .mapLeft((error) => new GetBackupError(error))\n .run();\n }\n\n async saveBackup(\n deviceId: DeviceId,\n backup: Backup,\n ): Promise<Either<SaveBackupError, void>> {\n return EitherAsync(async ({ liftEither }) => {\n const serialized = await liftEither(serialize(backup));\n await this.storage.setItem(\n `${BACKUP_STORAGE_PREFIX_KEY}-${deviceId}`,\n serialized,\n );\n })\n .mapLeft((error) => new SaveBackupError(error))\n .run();\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAA4B,qBAG5BC,EAGO,uEACPC,EAGO,gFAGP,MAAMC,EAA4B,GAAG,wBAAsB,iBAEpD,MAAMN,CAAoB,CAC/B,YAA6BO,EAA0B,CAA1B,aAAAA,CAA2B,CAExD,MAAM,UACJC,EACgD,CAChD,SAAO,eAAY,MAAO,CAAE,WAAAC,CAAW,IAAM,CAC3C,MAAMC,EAAO,MAAM,KAAK,QAAQ,QAC9B,GAAGJ,CAAyB,IAAIE,CAAQ,EAC1C,EACA,OAAKE,EACED,KAAW,eAAYC,CAAI,CAAC,EADjB,IAEpB,CAAC,EACE,QAASC,GAAU,IAAI,iBAAeA,CAAK,CAAC,EAC5C,IAAI,CACT,CAEA,MAAM,WACJH,EACAI,EACwC,CACxC,SAAO,eAAY,MAAO,CAAE,WAAAH,CAAW,IAAM,CAC3C,MAAMI,EAAa,MAAMJ,KAAW,aAAUG,CAAM,CAAC,EACrD,MAAM,KAAK,QAAQ,QACjB,GAAGN,CAAyB,IAAIE,CAAQ,GACxCK,CACF,CACF,CAAC,EACE,QAASF,GAAU,IAAI,kBAAgBA,CAAK,CAAC,EAC7C,IAAI,CACT,CACF",
6
+ "names": ["DeviceBackupStorage_exports", "__export", "DeviceBackupStorage", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_BackupSerializer", "import_DeviceBackupStorageErrors", "BACKUP_STORAGE_PREFIX_KEY", "storage", "deviceId", "liftEither", "data", "error", "backup", "serialized"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=require("../../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorage"),s=require("../../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors"),l=require("./BackupSerializer");describe("DeviceBackupStorage",()=>{const o={getItem:vi.fn(),setItem:vi.fn(),removeItem:vi.fn()},c=new p.DeviceBackupStorage(o);beforeEach(()=>{vi.resetAllMocks()}),describe("getBackup",()=>{const r=vi.mocked(o.getItem);describe("Success",()=>{it("should return backup when it exists",async()=>{const e={languageId:1,installedApps:[],clsHexImage:void 0,createdAt:new Date};r.mockResolvedValueOnce(JSON.stringify({...e,createdAt:e.createdAt.toISOString()}));const t=await c.getBackup("12345");expect(t.isRight()).toBe(!0),expect(t.extract()).toEqual(e)}),it("should return null when backup does not exist",async()=>{r.mockResolvedValueOnce(null);const e=await c.getBackup("12345");expect(e.isRight()).toBe(!0),expect(e.extract()).toBeNull()})}),describe("Error",()=>{it("should return error when getItem fails",async()=>{const e=new Error("storage read failed");r.mockRejectedValueOnce(e);const t=await c.getBackup("12345");expect(t.isLeft()).toBe(!0),t.mapLeft(a=>{expect(a).toBeInstanceOf(s.GetBackupError),expect(a.originalError).toBe(e)})})})}),describe("saveBackup",()=>{const r=vi.mocked(o.setItem),e={languageId:1,installedApps:[{appName:"app1",data:"deadbeef"}],clsHexImage:void 0,createdAt:new Date("2025-01-01T00:00:00.000Z")};describe("Success",()=>{it("should save backup",async()=>{r.mockResolvedValueOnce(void 0);const t=await c.saveBackup("12345",e);expect(t.isRight()).toBe(!0),expect(r).toHaveBeenCalledWith("dmk-device-backup-12345",JSON.stringify({...e,createdAt:e.createdAt.toISOString()}))})}),describe("Error",()=>{it("should return error when setItem fails",async()=>{const t=new Error("storage write failed");r.mockRejectedValueOnce(t);const a=await c.saveBackup("12345",e);expect(a.isLeft()).toBe(!0),a.mapLeft(n=>{expect(n).toBeInstanceOf(s.SaveBackupError),expect(n.originalError).toBe(t)})})}),describe("Chain saveBackup and getBackup",()=>{it("should read back the exact same backup that was saved",async()=>{const t=vi.mocked(o.getItem),a=vi.mocked(o.setItem),i={languageId:1,installedApps:[{appName:"app1",data:"deadbeef"}],clsHexImage:"0x1234567890",createdAt:new Date("2025-06-15T12:34:56.789Z")};a.mockResolvedValueOnce(void 0),await c.saveBackup("12345",i);const u=(0,l.serialize)(i);t.mockResolvedValueOnce(u.unsafeCoerce());const d=await c.getBackup("12345");expect(a).toHaveBeenCalledWith("dmk-device-backup-12345",u.unsafeCoerce()),expect(d.isRight()).toBe(!0),expect(d.extract()).toStrictEqual(i)})})})});
2
+ //# sourceMappingURL=DeviceBackupStorage.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage.test.ts"],
4
+ "sourcesContent": ["import { type KeyValueStorage } from \"@ledgerhq/device-management-kit\";\n\nimport { DeviceBackupStorage } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage\";\nimport {\n GetBackupError,\n SaveBackupError,\n} from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors\";\n\nimport { serialize } from \"./BackupSerializer\";\n\ndescribe(\"DeviceBackupStorage\", () => {\n const storage: KeyValueStorage = {\n getItem: vi.fn(),\n setItem: vi.fn(),\n removeItem: vi.fn(),\n };\n const deviceBackupStorage = new DeviceBackupStorage(storage);\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"getBackup\", () => {\n const getItemMock = vi.mocked(storage.getItem);\n\n describe(\"Success\", () => {\n it(\"should return backup when it exists\", async () => {\n const backup = {\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n createdAt: new Date(),\n };\n\n getItemMock.mockResolvedValueOnce(\n JSON.stringify({\n ...backup,\n createdAt: backup.createdAt.toISOString(),\n }),\n );\n const result = await deviceBackupStorage.getBackup(\"12345\");\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual(backup);\n });\n\n it(\"should return null when backup does not exist\", async () => {\n getItemMock.mockResolvedValueOnce(null);\n const result = await deviceBackupStorage.getBackup(\"12345\");\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toBeNull();\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return error when getItem fails\", async () => {\n const error = new Error(\"storage read failed\");\n getItemMock.mockRejectedValueOnce(error);\n\n const result = await deviceBackupStorage.getBackup(\"12345\");\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(GetBackupError);\n expect(e.originalError).toBe(error);\n });\n });\n });\n });\n\n describe(\"saveBackup\", () => {\n const setItemMock = vi.mocked(storage.setItem);\n\n const backup = {\n languageId: 1,\n installedApps: [{ appName: \"app1\", data: \"deadbeef\" }],\n clsHexImage: undefined,\n createdAt: new Date(\"2025-01-01T00:00:00.000Z\"),\n };\n\n describe(\"Success\", () => {\n it(\"should save backup\", async () => {\n setItemMock.mockResolvedValueOnce(undefined);\n\n const result = await deviceBackupStorage.saveBackup(\"12345\", backup);\n\n expect(result.isRight()).toBe(true);\n expect(setItemMock).toHaveBeenCalledWith(\n \"dmk-device-backup-12345\",\n JSON.stringify({\n ...backup,\n createdAt: backup.createdAt.toISOString(),\n }),\n );\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return error when setItem fails\", async () => {\n const error = new Error(\"storage write failed\");\n setItemMock.mockRejectedValueOnce(error);\n\n const result = await deviceBackupStorage.saveBackup(\"12345\", backup);\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(SaveBackupError);\n expect(e.originalError).toBe(error);\n });\n });\n });\n\n describe(\"Chain saveBackup and getBackup\", () => {\n it(\"should read back the exact same backup that was saved\", async () => {\n // ARRANGE\n const getItemMock = vi.mocked(storage.getItem);\n const setItemMock = vi.mocked(storage.setItem);\n\n const backupCreationDate = new Date(\"2025-06-15T12:34:56.789Z\");\n const originalBackup = {\n languageId: 1,\n installedApps: [{ appName: \"app1\", data: \"deadbeef\" }],\n clsHexImage: \"0x1234567890\",\n createdAt: backupCreationDate,\n };\n\n setItemMock.mockResolvedValueOnce(undefined);\n await deviceBackupStorage.saveBackup(\"12345\", originalBackup);\n\n const capturedBackup = serialize(originalBackup);\n\n getItemMock.mockResolvedValueOnce(capturedBackup.unsafeCoerce());\n const getResult = await deviceBackupStorage.getBackup(\"12345\");\n\n // ASSERT\n expect(setItemMock).toHaveBeenCalledWith(\n \"dmk-device-backup-12345\",\n capturedBackup.unsafeCoerce(),\n );\n expect(getResult.isRight()).toBe(true);\n expect(getResult.extract()).toStrictEqual(originalBackup);\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_DeviceBackupStorage", "import_DeviceBackupStorageErrors", "import_BackupSerializer", "storage", "deviceBackupStorage", "getItemMock", "backup", "result", "error", "e", "setItemMock", "originalBackup", "capturedBackup", "getResult"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var a in r)t(o,a,{get:r[a],enumerable:!0})},c=(o,r,a,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of l(r))!k.call(o,n)&&n!==a&&t(o,n,{get:()=>r[n],enumerable:!(e=i(r,n))||e.enumerable});return o};var p=o=>c(t({},"__esModule",{value:!0}),o);var m={};E(m,{GetBackupError:()=>s,SaveBackupError:()=>u});module.exports=p(m);class s{_tag="GetBackupError";originalError;constructor(r){this.originalError=r}}class u{_tag="SaveBackupError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={GetBackupError,SaveBackupError});
2
+ //# sourceMappingURL=DeviceBackupStorageErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors.ts"],
4
+ "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class GetBackupError implements DmkError {\n readonly _tag = \"GetBackupError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class SaveBackupError implements DmkError {\n readonly _tag = \"SaveBackupError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,oBAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAME,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYG,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMF,CAAoC,CACtC,KAAO,kBACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["DeviceBackupStorageErrors_exports", "__export", "GetBackupError", "SaveBackupError", "__toCommonJS", "originalError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var S=(a,p)=>{for(var r in p)c(a,r,{get:p[r],enumerable:!0})},d=(a,p,r,t)=>{if(p&&typeof p=="object"||typeof p=="function")for(let e of l(p))!k.call(a,e)&&e!==r&&c(a,e,{get:()=>p[e],enumerable:!(t=i(p,e))||t.enumerable});return a};var m=a=>d(c({},"__esModule",{value:!0}),a);var y={};S(y,{backupAppsStorage:()=>f});module.exports=m(y);var o=require("@ledgerhq/device-management-kit"),n=require("purify-ts"),u=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors");const B="0x",f=(a,p)=>async({input:r})=>{const{installedApps:t}=r,e=p("BackupAppStorageTask"),g=[];for(const A of t){const s=await new o.BackupAppStorageTask({appName:A.name},a,e).run();if(!(0,o.isSuccessCommandResult)(s))return(0,n.Left)(new u.BackupAppsStorageError(s.error.originalError));g.push({appName:A.name,data:s.data.appStorageData===B?void 0:s.data.appStorageData})}return(0,n.Right)(g)};0&&(module.exports={backupAppsStorage});
2
+ //# sourceMappingURL=BackupAppsStorage.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.ts"],
4
+ "sourcesContent": ["import {\n BackupAppStorageTask,\n type InstalledApp,\n type InternalApi,\n isSuccessCommandResult,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { BackupAppsStorageError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { type BackupApp } from \"@api/device-action/OsUpdate/Backup/types\";\n\nconst EMPTY_STORAGE = \"0x\";\n\ntype BackupAppsStorageHandlerArgs = {\n input: { installedApps: InstalledApp[] };\n};\n\ntype BackupAppsStorageHandlerResponse = Promise<\n Either<BackupAppsStorageError, BackupApp[]>\n>;\n\ntype BackupAppsStorageHandler = (\n args: BackupAppsStorageHandlerArgs,\n) => BackupAppsStorageHandlerResponse;\n\nexport const backupAppsStorage =\n (\n internalApi: InternalApi,\n loggerFactory: (tag: string) => LoggerPublisherService,\n ): BackupAppsStorageHandler =>\n async ({\n input,\n }: BackupAppsStorageHandlerArgs): BackupAppsStorageHandlerResponse => {\n const { installedApps } = input;\n const logger = loggerFactory(\"BackupAppStorageTask\");\n const backupApps: BackupApp[] = [];\n for (const installedApp of installedApps) {\n const backupAppStorageTaskResponse = await new BackupAppStorageTask(\n {\n appName: installedApp.name,\n },\n internalApi,\n logger,\n ).run();\n\n if (!isSuccessCommandResult(backupAppStorageTaskResponse)) {\n return Left(\n new BackupAppsStorageError(\n backupAppStorageTaskResponse.error.originalError,\n ),\n );\n }\n\n backupApps.push({\n appName: installedApp.name,\n data:\n backupAppStorageTaskResponse.data.appStorageData === EMPTY_STORAGE\n ? undefined\n : backupAppStorageTaskResponse.data.appStorageData,\n });\n }\n\n return Right(backupApps);\n };\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CACPC,EAAyC,qBAEzCC,EAAuC,uEAGvC,MAAMC,EAAgB,KAcTL,EACX,CACEM,EACAC,IAEF,MAAO,CACL,MAAAC,CACF,IAAsE,CACpE,KAAM,CAAE,cAAAC,CAAc,EAAID,EACpBE,EAASH,EAAc,sBAAsB,EAC7CI,EAA0B,CAAC,EACjC,UAAWC,KAAgBH,EAAe,CACxC,MAAMI,EAA+B,MAAM,IAAI,uBAC7C,CACE,QAASD,EAAa,IACxB,EACAN,EACAI,CACF,EAAE,IAAI,EAEN,GAAI,IAAC,0BAAuBG,CAA4B,EACtD,SAAO,QACL,IAAI,yBACFA,EAA6B,MAAM,aACrC,CACF,EAGFF,EAAW,KAAK,CACd,QAASC,EAAa,KACtB,KACEC,EAA6B,KAAK,iBAAmBR,EACjD,OACAQ,EAA6B,KAAK,cAC1C,CAAC,CACH,CAEA,SAAO,SAAMF,CAAU,CACzB",
6
+ "names": ["BackupAppsStorage_exports", "__export", "backupAppsStorage", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_BackupDeviceActionErrors", "EMPTY_STORAGE", "internalApi", "loggerFactory", "input", "installedApps", "logger", "backupApps", "installedApp", "backupAppStorageTaskResponse"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=require("@ledgerhq/device-management-kit"),i=require("../../../../device-action/__test-utils__/makeInternalApi"),d=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors"),n=require("../../../../device-action/OsUpdate/Backup/Substeps/BackupAppsStorage");vi.mock("@ledgerhq/device-management-kit",async e=>({...await e(),BackupAppStorageTask:vi.fn()}));describe("BackupAppStorage",()=>{const e=(0,i.makeDeviceActionInternalApiMock)(),c=vi.mocked(a.BackupAppStorageTask);beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return the list of installed apps and their storage",async()=>{const r=[{name:"app1",flags:0,hash:"hash1",hash_code_data:"hcd1"},{name:"app2",flags:0,hash:"hash2",hash_code_data:"hcd2"}],o=vi.fn().mockResolvedValueOnce((0,a.CommandResultFactory)({data:{appStorageData:"deadbeef"}})).mockResolvedValueOnce((0,a.CommandResultFactory)({data:{appStorageData:"cafebabe"}}));c.mockImplementation(()=>({run:o}));const t=await(0,n.backupAppsStorage)(e,e.loggerFactory)({input:{installedApps:r}});expect(t.isRight()).toBe(!0),expect(t.extract()).toEqual([{appName:"app1",data:"deadbeef"},{appName:"app2",data:"cafebabe"}])}),it("Should set data to undefined when appStorageData is '0x'",async()=>{const r=[{name:"app1",flags:0,hash:"hash1",hash_code_data:"hcd1"}],o=vi.fn().mockResolvedValueOnce((0,a.CommandResultFactory)({data:{appStorageData:"0x"}}));c.mockImplementation(()=>({run:o}));const t=await(0,n.backupAppsStorage)(e,e.loggerFactory)({input:{installedApps:r}});expect(t.isRight()).toBe(!0),expect(t.extract()).toEqual([{appName:"app1",data:void 0}])})}),describe("Error",()=>{it("Should return BackupAppsStorageError",async()=>{const r=[{name:"app1",flags:0,hash:"hash1",hash_code_data:"hcd1"}],o=new a.GlobalCommandError({errorCode:"6e00",...a.GLOBAL_ERRORS["6e00"]}),t=vi.fn().mockResolvedValueOnce((0,a.CommandResultFactory)({error:o}));c.mockImplementation(()=>({run:t}));const p=await(0,n.backupAppsStorage)(e,e.loggerFactory)({input:{installedApps:r}});expect(p.isLeft()).toBe(!0),p.mapLeft(s=>{expect(s).toBeInstanceOf(d.BackupAppsStorageError),expect(s.originalError).toBe(o.originalError)})})})});
2
+ //# sourceMappingURL=BackupAppsStorage.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage.test.ts"],
4
+ "sourcesContent": ["import {\n BackupAppStorageTask,\n CommandResultFactory,\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { BackupAppsStorageError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { backupAppsStorage } from \"@api/device-action/OsUpdate/Backup/Substeps/BackupAppsStorage\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n BackupAppStorageTask: vi.fn(),\n };\n});\n\ndescribe(\"BackupAppStorage\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const MockTask = vi.mocked(BackupAppStorageTask);\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"Success\", () => {\n it(\"Should return the list of installed apps and their storage\", async () => {\n const installedApps = [\n { name: \"app1\", flags: 0, hash: \"hash1\", hash_code_data: \"hcd1\" },\n { name: \"app2\", flags: 0, hash: \"hash2\", hash_code_data: \"hcd2\" },\n ];\n const runMock = vi\n .fn()\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { appStorageData: \"deadbeef\" } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { appStorageData: \"cafebabe\" } }),\n );\n MockTask.mockImplementation(() => ({ run: runMock }) as never);\n\n const result = await backupAppsStorage(\n apiMock,\n apiMock.loggerFactory!,\n )({ input: { installedApps } });\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual([\n { appName: \"app1\", data: \"deadbeef\" },\n { appName: \"app2\", data: \"cafebabe\" },\n ]);\n });\n\n it(\"Should set data to undefined when appStorageData is '0x'\", async () => {\n const installedApps = [\n { name: \"app1\", flags: 0, hash: \"hash1\", hash_code_data: \"hcd1\" },\n ];\n const runMock = vi\n .fn()\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { appStorageData: \"0x\" } }),\n );\n MockTask.mockImplementation(() => ({ run: runMock }) as never);\n\n const result = await backupAppsStorage(\n apiMock,\n apiMock.loggerFactory!,\n )({ input: { installedApps } });\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual([{ appName: \"app1\", data: undefined }]);\n });\n });\n describe(\"Error\", () => {\n it(\"Should return BackupAppsStorageError\", async () => {\n const installedApps = [\n { name: \"app1\", flags: 0, hash: \"hash1\", hash_code_data: \"hcd1\" },\n ];\n const error = new GlobalCommandError({\n errorCode: \"6e00\",\n ...GLOBAL_ERRORS[\"6e00\"],\n });\n const runMock = vi\n .fn()\n .mockResolvedValueOnce(CommandResultFactory({ error }));\n MockTask.mockImplementation(() => ({ run: runMock }) as never);\n\n const result = await backupAppsStorage(\n apiMock,\n apiMock.loggerFactory!,\n )({ input: { installedApps } });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(BackupAppsStorageError);\n expect(e.originalError).toBe(error.originalError);\n });\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAKO,2CAEPC,EAAgD,6DAChDC,EAAuC,uEACvCC,EAAkC,yEAElC,GAAG,KAAK,kCAAmC,MAAOC,IAGzC,CACL,GAFA,MAAMA,EAAiE,EAGvE,qBAAsB,GAAG,GAAG,CAC9B,EACD,EAED,SAAS,mBAAoB,IAAM,CACjC,MAAMC,KAAU,mCAAgC,EAC1CC,EAAW,GAAG,OAAO,sBAAoB,EAE/C,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,6DAA8D,SAAY,CAC3E,MAAMC,EAAgB,CACpB,CAAE,KAAM,OAAQ,MAAO,EAAG,KAAM,QAAS,eAAgB,MAAO,EAChE,CAAE,KAAM,OAAQ,MAAO,EAAG,KAAM,QAAS,eAAgB,MAAO,CAClE,EACMC,EAAU,GACb,GAAG,EACH,yBACC,wBAAqB,CAAE,KAAM,CAAE,eAAgB,UAAW,CAAE,CAAC,CAC/D,EACC,yBACC,wBAAqB,CAAE,KAAM,CAAE,eAAgB,UAAW,CAAE,CAAC,CAC/D,EACFF,EAAS,mBAAmB,KAAO,CAAE,IAAKE,CAAQ,EAAW,EAE7D,MAAMC,EAAS,QAAM,qBACnBJ,EACAA,EAAQ,aACV,EAAE,CAAE,MAAO,CAAE,cAAAE,CAAc,CAAE,CAAC,EAE9B,OAAOE,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QAAQ,CAC/B,CAAE,QAAS,OAAQ,KAAM,UAAW,EACpC,CAAE,QAAS,OAAQ,KAAM,UAAW,CACtC,CAAC,CACH,CAAC,EAED,GAAG,2DAA4D,SAAY,CACzE,MAAMF,EAAgB,CACpB,CAAE,KAAM,OAAQ,MAAO,EAAG,KAAM,QAAS,eAAgB,MAAO,CAClE,EACMC,EAAU,GACb,GAAG,EACH,yBACC,wBAAqB,CAAE,KAAM,CAAE,eAAgB,IAAK,CAAE,CAAC,CACzD,EACFF,EAAS,mBAAmB,KAAO,CAAE,IAAKE,CAAQ,EAAW,EAE7D,MAAMC,EAAS,QAAM,qBACnBJ,EACAA,EAAQ,aACV,EAAE,CAAE,MAAO,CAAE,cAAAE,CAAc,CAAE,CAAC,EAE9B,OAAOE,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAE,QAAS,OAAQ,KAAM,MAAU,CAAC,CAAC,CACzE,CAAC,CACH,CAAC,EACD,SAAS,QAAS,IAAM,CACtB,GAAG,uCAAwC,SAAY,CACrD,MAAMF,EAAgB,CACpB,CAAE,KAAM,OAAQ,MAAO,EAAG,KAAM,QAAS,eAAgB,MAAO,CAClE,EACMG,EAAQ,IAAI,qBAAmB,CACnC,UAAW,OACX,GAAG,gBAAc,MAAM,CACzB,CAAC,EACKF,EAAU,GACb,GAAG,EACH,yBAAsB,wBAAqB,CAAE,MAAAE,CAAM,CAAC,CAAC,EACxDJ,EAAS,mBAAmB,KAAO,CAAE,IAAKE,CAAQ,EAAW,EAE7D,MAAMC,EAAS,QAAM,qBACnBJ,EACAA,EAAQ,aACV,EAAE,CAAE,MAAO,CAAE,cAAAE,CAAc,CAAE,CAAC,EAE9B,OAAOE,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjCA,EAAO,QAASE,GAAM,CACpB,OAAOA,CAAC,EAAE,eAAe,wBAAsB,EAC/C,OAAOA,EAAE,aAAa,EAAE,KAAKD,EAAM,aAAa,CAClD,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_device_management_kit", "import_makeInternalApi", "import_BackupDeviceActionErrors", "import_BackupAppsStorage", "importOriginal", "apiMock", "MockTask", "installedApps", "runMock", "result", "error", "e"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(o,e)=>{for(var n in e)c(o,n,{get:e[n],enumerable:!0})},p=(o,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of m(e))!l.call(o,t)&&t!==n&&c(o,t,{get:()=>e[t],enumerable:!(a=i(e,t))||a.enumerable});return o};var s=o=>p(c({},"__esModule",{value:!0}),o);var D={};u(D,{downloadCustomLockScreenDevice:()=>k});module.exports=s(D);var r=require("../../../../device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction");const k=(o,e,n)=>new r.DownloadCustomLockScreenDeviceAction({input:{unlockTimeout:e,allowedEmpty:n}}).makeStateMachine(o);0&&(module.exports={downloadCustomLockScreenDevice});
2
+ //# sourceMappingURL=DownloadCustomLockScreen.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.ts"],
4
+ "sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\n\nimport { DownloadCustomLockScreenDeviceAction } from \"@api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction\";\n\ntype DownloadCustomLockScreenResult = ReturnType<\n DownloadCustomLockScreenDeviceAction[\"makeStateMachine\"]\n>;\n\nexport const downloadCustomLockScreenDevice = (\n internalAPI: InternalApi,\n unlockTimeout: number,\n allowedEmpty: boolean,\n): DownloadCustomLockScreenResult =>\n new DownloadCustomLockScreenDeviceAction({\n input: { unlockTimeout, allowedEmpty },\n }).makeStateMachine(internalAPI);\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oCAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAqD,4FAM9C,MAAMF,EAAiC,CAC5CG,EACAC,EACAC,IAEA,IAAI,uCAAqC,CACvC,MAAO,CAAE,cAAAD,EAAe,aAAAC,CAAa,CACvC,CAAC,EAAE,iBAAiBF,CAAW",
6
+ "names": ["DownloadCustomLockScreen_exports", "__export", "downloadCustomLockScreenDevice", "__toCommonJS", "import_DownloadCustomLockScreenDeviceAction", "internalAPI", "unlockTimeout", "allowedEmpty"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("../../../../device-action/__test-utils__/makeInternalApi"),i=require("../../../../device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction"),n=require("../../../../device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen");vi.mock("@api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction");describe("DownloadCustomLockScreen",()=>{const t=(0,r.makeDeviceActionInternalApiMock)(),c=vi.mocked(i.DownloadCustomLockScreenDeviceAction);beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return the custom lock screen from the device",()=>{const e=Symbol("stateMachine"),o=vi.fn().mockReturnValue(e);c.mockImplementation(()=>({makeStateMachine:o}));const a=(0,n.downloadCustomLockScreenDevice)(t,5e3,!0);expect(c).toHaveBeenCalledWith({input:{unlockTimeout:5e3,allowedEmpty:!0}}),expect(o).toHaveBeenCalledWith(t),expect(a).toBe(e)})}),describe("Error",()=>{it("Should return the error from the device action",()=>{const e=new Error("Device action failed"),o=vi.fn().mockImplementation(()=>{throw e});c.mockImplementation(()=>({makeStateMachine:o})),expect(()=>(0,n.downloadCustomLockScreenDevice)(t,5e3,!0)).toThrow(e)})})});
2
+ //# sourceMappingURL=DownloadCustomLockScreen.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen.test.ts"],
4
+ "sourcesContent": ["import { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { DownloadCustomLockScreenDeviceAction } from \"@api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction\";\nimport { downloadCustomLockScreenDevice } from \"@api/device-action/OsUpdate/Backup/Substeps/DownloadCustomLockScreen\";\n\nvi.mock(\n \"@api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction\",\n);\n\ndescribe(\"DownloadCustomLockScreen\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const MockDA = vi.mocked(DownloadCustomLockScreenDeviceAction);\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n describe(\"Success\", () => {\n it(\"Should return the custom lock screen from the device\", () => {\n const fakeStateMachine = Symbol(\"stateMachine\");\n const makeStateMachineMock = vi.fn().mockReturnValue(fakeStateMachine);\n MockDA.mockImplementation(\n () => ({ makeStateMachine: makeStateMachineMock }) as never,\n );\n\n const result = downloadCustomLockScreenDevice(apiMock, 5000, true);\n\n expect(MockDA).toHaveBeenCalledWith({\n input: { unlockTimeout: 5000, allowedEmpty: true },\n });\n expect(makeStateMachineMock).toHaveBeenCalledWith(apiMock);\n expect(result).toBe(fakeStateMachine);\n });\n });\n describe(\"Error\", () => {\n it(\"Should return the error from the device action\", () => {\n const error = new Error(\"Device action failed\");\n const makeStateMachineMock = vi.fn().mockImplementation(() => {\n throw error;\n });\n MockDA.mockImplementation(\n () => ({ makeStateMachine: makeStateMachineMock }) as never,\n );\n\n expect(() => downloadCustomLockScreenDevice(apiMock, 5000, true)).toThrow(\n error,\n );\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAgD,6DAChDC,EAAqD,4FACrDC,EAA+C,gFAE/C,GAAG,KACD,kFACF,EAEA,SAAS,2BAA4B,IAAM,CACzC,MAAMC,KAAU,mCAAgC,EAC1CC,EAAS,GAAG,OAAO,sCAAoC,EAE7D,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EACD,SAAS,UAAW,IAAM,CACxB,GAAG,uDAAwD,IAAM,CAC/D,MAAMC,EAAmB,OAAO,cAAc,EACxCC,EAAuB,GAAG,GAAG,EAAE,gBAAgBD,CAAgB,EACrED,EAAO,mBACL,KAAO,CAAE,iBAAkBE,CAAqB,EAClD,EAEA,MAAMC,KAAS,kCAA+BJ,EAAS,IAAM,EAAI,EAEjE,OAAOC,CAAM,EAAE,qBAAqB,CAClC,MAAO,CAAE,cAAe,IAAM,aAAc,EAAK,CACnD,CAAC,EACD,OAAOE,CAAoB,EAAE,qBAAqBH,CAAO,EACzD,OAAOI,CAAM,EAAE,KAAKF,CAAgB,CACtC,CAAC,CACH,CAAC,EACD,SAAS,QAAS,IAAM,CACtB,GAAG,iDAAkD,IAAM,CACzD,MAAMG,EAAQ,IAAI,MAAM,sBAAsB,EACxCF,EAAuB,GAAG,GAAG,EAAE,mBAAmB,IAAM,CAC5D,MAAME,CACR,CAAC,EACDJ,EAAO,mBACL,KAAO,CAAE,iBAAkBE,CAAqB,EAClD,EAEA,OAAO,OAAM,kCAA+BH,EAAS,IAAM,EAAI,CAAC,EAAE,QAChEK,CACF,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_makeInternalApi", "import_DownloadCustomLockScreenDeviceAction", "import_DownloadCustomLockScreen", "apiMock", "MockDA", "fakeStateMachine", "makeStateMachineMock", "result", "error"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var d=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var p=(n,e)=>{for(var a in e)d(n,a,{get:e[a],enumerable:!0})},l=(n,e,a,g)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!m.call(n,r)&&r!==a&&d(n,r,{get:()=>e[r],enumerable:!(g=i(e,r))||g.enumerable});return n};var I=n=>l(d({},"__esModule",{value:!0}),n);var G={};p(G,{getLanguageId:()=>L});module.exports=I(G);var t=require("@ledgerhq/device-management-kit"),o=require("purify-ts/Either"),s=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors");const L=n=>async()=>{const e=await n.sendCommand(new t.GetOsVersionCommand);return(0,t.isSuccessCommandResult)(e)?(0,o.Right)(e.data.langId):(0,o.Left)(new s.GetLanguageIdError(e.error.originalError))};0&&(module.exports={getLanguageId});
2
+ //# sourceMappingURL=GetLanguageId.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.ts"],
4
+ "sourcesContent": ["import {\n GetOsVersionCommand,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts/Either\";\n\nimport { GetLanguageIdError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\n\ntype GetLanguageIdHandlerResponse = Promise<\n Either<GetLanguageIdError, number | undefined>\n>;\n\ntype GetLanguageIdHandler = () => GetLanguageIdHandlerResponse;\n\nexport const getLanguageId =\n (internalApi: InternalApi): GetLanguageIdHandler =>\n async (): GetLanguageIdHandlerResponse => {\n const result = await internalApi.sendCommand(new GetOsVersionCommand());\n\n if (!isSuccessCommandResult(result)) {\n return Left(new GetLanguageIdError(result.error.originalError));\n }\n\n return Right(result.data.langId);\n };\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAAyC,4BAEzCC,EAAmC,uEAQ5B,MAAMJ,EACVK,GACD,SAA0C,CACxC,MAAMC,EAAS,MAAMD,EAAY,YAAY,IAAI,qBAAqB,EAEtE,SAAK,0BAAuBC,CAAM,KAI3B,SAAMA,EAAO,KAAK,MAAM,KAHtB,QAAK,IAAI,qBAAmBA,EAAO,MAAM,aAAa,CAAC,CAIlE",
6
+ "names": ["GetLanguageId_exports", "__export", "getLanguageId", "__toCommonJS", "import_device_management_kit", "import_Either", "import_BackupDeviceActionErrors", "internalApi", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),s=require("../../../../device-action/__test-utils__/makeInternalApi"),d=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors"),a=require("../../../../device-action/OsUpdate/Backup/Substeps/GetLanguageId");describe("GetLanguageId",()=>{const o=(0,s.makeDeviceActionInternalApiMock)(),{sendCommand:n}=o;beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return language Id",async()=>{n.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{langId:1}}));const r=await(0,a.getLanguageId)(o)();expect(r.isRight()).toBe(!0),expect(r.extract()).toBe(1)})}),describe("Error",()=>{it("Should return GetLanguageIdError",async()=>{const t=new e.GlobalCommandError({errorCode:"6e00",...e.GLOBAL_ERRORS["6e00"]});n.mockResolvedValueOnce((0,e.CommandResultFactory)({error:t}));const r=await(0,a.getLanguageId)(o)();expect(r.isLeft()).toBe(!0),r.mapLeft(c=>{expect(c).toBeInstanceOf(d.GetLanguageIdError),expect(c.originalError).toBe(t.originalError)})})})});
2
+ //# sourceMappingURL=GetLanguageId.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/GetLanguageId.test.ts"],
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { GetLanguageIdError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { getLanguageId } from \"@api/device-action/OsUpdate/Backup/Substeps/GetLanguageId\";\n\ndescribe(\"GetLanguageId\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const { sendCommand: sendCommandMock } = apiMock;\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"Success\", () => {\n it(\"Should return language Id\", async () => {\n const langId = 1;\n sendCommandMock.mockResolvedValueOnce(\n CommandResultFactory({ data: { langId } }),\n );\n\n const result = await getLanguageId(apiMock)();\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toBe(langId);\n });\n });\n describe(\"Error\", () => {\n it(\"Should return GetLanguageIdError\", async () => {\n const error = new GlobalCommandError({\n errorCode: \"6e00\",\n ...GLOBAL_ERRORS[\"6e00\"],\n });\n sendCommandMock.mockResolvedValueOnce(CommandResultFactory({ error }));\n\n const result = await getLanguageId(apiMock)();\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(GetLanguageIdError);\n expect(e.originalError).toBe(error.originalError);\n });\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAIO,2CAEPC,EAAgD,6DAChDC,EAAmC,uEACnCC,EAA8B,qEAE9B,SAAS,gBAAiB,IAAM,CAC9B,MAAMC,KAAU,mCAAgC,EAC1C,CAAE,YAAaC,CAAgB,EAAID,EAEzC,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,4BAA6B,SAAY,CAE1CC,EAAgB,yBACd,wBAAqB,CAAE,KAAM,CAAE,QAAO,CAAE,CAAC,CAC3C,EAEA,MAAMC,EAAS,QAAM,iBAAcF,CAAO,EAAE,EAE5C,OAAOE,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,KAAK,CAAM,CACtC,CAAC,CACH,CAAC,EACD,SAAS,QAAS,IAAM,CACtB,GAAG,mCAAoC,SAAY,CACjD,MAAMC,EAAQ,IAAI,qBAAmB,CACnC,UAAW,OACX,GAAG,gBAAc,MAAM,CACzB,CAAC,EACDF,EAAgB,yBAAsB,wBAAqB,CAAE,MAAAE,CAAM,CAAC,CAAC,EAErE,MAAMD,EAAS,QAAM,iBAAcF,CAAO,EAAE,EAE5C,OAAOE,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjCA,EAAO,QAASE,GAAM,CACpB,OAAOA,CAAC,EAAE,eAAe,oBAAkB,EAC3C,OAAOA,EAAE,aAAa,EAAE,KAAKD,EAAM,aAAa,CAClD,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_device_management_kit", "import_makeInternalApi", "import_BackupDeviceActionErrors", "import_GetLanguageId", "apiMock", "sendCommandMock", "result", "error", "e"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var r=(e,t)=>{for(var p in t)s(e,p,{get:t[p],enumerable:!0})},I=(e,t,p,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of A(t))!c.call(e,n)&&n!==p&&s(e,n,{get:()=>t[n],enumerable:!(i=a(t,n))||i.enumerable});return e};var o=e=>I(s({},"__esModule",{value:!0}),e);var m={};r(m,{listInstalledApps:()=>d});module.exports=o(m);var l=require("@ledgerhq/device-management-kit");const d=(e,t)=>new l.ListInstalledAppsDeviceAction({input:{unlockTimeout:t}}).makeStateMachine(e);0&&(module.exports={listInstalledApps});
2
+ //# sourceMappingURL=ListInstalledApps.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.ts"],
4
+ "sourcesContent": ["import {\n type InternalApi,\n ListInstalledAppsDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\n\ntype ListInstalledAppsResult = ReturnType<\n ListInstalledAppsDeviceAction[\"makeStateMachine\"]\n>;\n\nexport const listInstalledApps = (\n internalApi: InternalApi,\n unlockTimeout: number,\n): ListInstalledAppsResult =>\n new ListInstalledAppsDeviceAction({\n input: { unlockTimeout },\n }).makeStateMachine(internalApi);\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,2CAMA,MAAMF,EAAoB,CAC/BG,EACAC,IAEA,IAAI,gCAA8B,CAChC,MAAO,CAAE,cAAAA,CAAc,CACzB,CAAC,EAAE,iBAAiBD,CAAW",
6
+ "names": ["ListInstalledApps_exports", "__export", "listInstalledApps", "__toCommonJS", "import_device_management_kit", "internalApi", "unlockTimeout"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=require("@ledgerhq/device-management-kit"),a=require("../../../../device-action/__test-utils__/makeInternalApi"),n=require("../../../../device-action/OsUpdate/Backup/Substeps/ListInstalledApps");vi.mock("@ledgerhq/device-management-kit",async e=>({...await e(),ListInstalledAppsDeviceAction:vi.fn()}));describe("ListInstalledApps",()=>{const e=(0,a.makeDeviceActionInternalApiMock)(),i=vi.mocked(c.ListInstalledAppsDeviceAction);beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return the list on installed apps on the device",()=>{const t=Symbol("stateMachine"),o=vi.fn().mockReturnValue(t);i.mockImplementation(()=>({makeStateMachine:o}));const r=(0,n.listInstalledApps)(e,5e3);expect(i).toHaveBeenCalledWith({input:{unlockTimeout:5e3}}),expect(o).toHaveBeenCalledWith(e),expect(r).toBe(t)})}),describe("Error",()=>{it("Should return the error from the device action",()=>{const t=new Error("Device action failed"),o=vi.fn().mockImplementation(()=>{throw t});i.mockImplementation(()=>({makeStateMachine:o})),expect(()=>(0,n.listInstalledApps)(e,5e3)).toThrow(t)})})});
2
+ //# sourceMappingURL=ListInstalledApps.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps.test.ts"],
4
+ "sourcesContent": ["import { ListInstalledAppsDeviceAction } from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { listInstalledApps } from \"@api/device-action/OsUpdate/Backup/Substeps/ListInstalledApps\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n ListInstalledAppsDeviceAction: vi.fn(),\n };\n});\n\ndescribe(\"ListInstalledApps\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const MockDA = vi.mocked(ListInstalledAppsDeviceAction);\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n describe(\"Success\", () => {\n it(\"Should return the list on installed apps on the device\", () => {\n const fakeStateMachine = Symbol(\"stateMachine\");\n const makeStateMachineMock = vi.fn().mockReturnValue(fakeStateMachine);\n MockDA.mockImplementation(\n () => ({ makeStateMachine: makeStateMachineMock }) as never,\n );\n\n const result = listInstalledApps(apiMock, 5000);\n\n expect(MockDA).toHaveBeenCalledWith({ input: { unlockTimeout: 5000 } });\n expect(makeStateMachineMock).toHaveBeenCalledWith(apiMock);\n expect(result).toBe(fakeStateMachine);\n });\n });\n describe(\"Error\", () => {\n it(\"Should return the error from the device action\", () => {\n const error = new Error(\"Device action failed\");\n const makeStateMachineMock = vi.fn().mockImplementation(() => {\n throw error;\n });\n MockDA.mockImplementation(\n () => ({ makeStateMachine: makeStateMachineMock }) as never,\n );\n\n expect(() => listInstalledApps(apiMock, 5000)).toThrow(error);\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA8C,2CAE9CC,EAAgD,6DAChDC,EAAkC,yEAElC,GAAG,KAAK,kCAAmC,MAAOC,IAGzC,CACL,GAFA,MAAMA,EAAiE,EAGvE,8BAA+B,GAAG,GAAG,CACvC,EACD,EAED,SAAS,oBAAqB,IAAM,CAClC,MAAMC,KAAU,mCAAgC,EAC1CC,EAAS,GAAG,OAAO,+BAA6B,EAEtD,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EACD,SAAS,UAAW,IAAM,CACxB,GAAG,yDAA0D,IAAM,CACjE,MAAMC,EAAmB,OAAO,cAAc,EACxCC,EAAuB,GAAG,GAAG,EAAE,gBAAgBD,CAAgB,EACrED,EAAO,mBACL,KAAO,CAAE,iBAAkBE,CAAqB,EAClD,EAEA,MAAMC,KAAS,qBAAkBJ,EAAS,GAAI,EAE9C,OAAOC,CAAM,EAAE,qBAAqB,CAAE,MAAO,CAAE,cAAe,GAAK,CAAE,CAAC,EACtE,OAAOE,CAAoB,EAAE,qBAAqBH,CAAO,EACzD,OAAOI,CAAM,EAAE,KAAKF,CAAgB,CACtC,CAAC,CACH,CAAC,EACD,SAAS,QAAS,IAAM,CACtB,GAAG,iDAAkD,IAAM,CACzD,MAAMG,EAAQ,IAAI,MAAM,sBAAsB,EACxCF,EAAuB,GAAG,GAAG,EAAE,mBAAmB,IAAM,CAC5D,MAAME,CACR,CAAC,EACDJ,EAAO,mBACL,KAAO,CAAE,iBAAkBE,CAAqB,EAClD,EAEA,OAAO,OAAM,qBAAkBH,EAAS,GAAI,CAAC,EAAE,QAAQK,CAAK,CAC9D,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_device_management_kit", "import_makeInternalApi", "import_ListInstalledApps", "importOriginal", "apiMock", "MockDA", "fakeStateMachine", "makeStateMachineMock", "result", "error"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var i=(r,o)=>{for(var e in o)p(r,e,{get:o[e],enumerable:!0})},B=(r,o,e,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of u(o))!s.call(r,a)&&a!==e&&p(r,a,{get:()=>o[a],enumerable:!(t=k(o,a))||t.enumerable});return r};var d=r=>B(p({},"__esModule",{value:!0}),r);var F={};i(F,{lookForBackup:()=>m});module.exports=d(F);var c=require("purify-ts"),n=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors");const l=r=>{const o=Date.now()-new Date(r.createdAt).getTime(),e=24*60*60*1e3;return o>e},m=r=>async({input:o})=>(0,c.EitherAsync)(async({liftEither:e})=>{const{deviceId:t}=o,a=await e(await r.getBackup(t));return a!==null&&!l(a)}).mapLeft(e=>new n.LookForBackupError(e)).run();0&&(module.exports={lookForBackup});
2
+ //# sourceMappingURL=LookForBackup.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.ts"],
4
+ "sourcesContent": ["import { EitherAsync } from \"purify-ts\";\nimport { type Either } from \"purify-ts/Either\";\n\nimport { LookForBackupError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { type DeviceBackupStorage } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage\";\nimport { type Backup } from \"@api/device-action/OsUpdate/Backup/types\";\n\ntype LookForBackupHandlerArgs = {\n input: { deviceId: string };\n};\n\ntype LookForBackupHandlerResponse = Promise<\n Either<LookForBackupError, boolean>\n>;\n\ntype LookForBackupHandler = (\n args: LookForBackupHandlerArgs,\n) => LookForBackupHandlerResponse;\n\nconst isBackupExpired = (backup: Backup): boolean => {\n const backupAge = Date.now() - new Date(backup.createdAt).getTime();\n const ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;\n\n return backupAge > ONE_DAY_IN_MS;\n};\n\nexport const lookForBackup =\n (deviceBackupStorage: DeviceBackupStorage): LookForBackupHandler =>\n async ({ input }: LookForBackupHandlerArgs): LookForBackupHandlerResponse => {\n return EitherAsync(async ({ liftEither }) => {\n const { deviceId } = input;\n const backup = await liftEither(\n await deviceBackupStorage.getBackup(deviceId),\n );\n\n return backup !== null && !isBackupExpired(backup) ? true : false;\n })\n .mapLeft((error) => new LookForBackupError(error))\n .run();\n };\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4B,qBAG5BC,EAAmC,uEAgBnC,MAAMC,EAAmBC,GAA4B,CACnD,MAAMC,EAAY,KAAK,IAAI,EAAI,IAAI,KAAKD,EAAO,SAAS,EAAE,QAAQ,EAC5DE,EAAgB,GAAK,GAAK,GAAK,IAErC,OAAOD,EAAYC,CACrB,EAEaP,EACVQ,GACD,MAAO,CAAE,MAAAC,CAAM,OACN,eAAY,MAAO,CAAE,WAAAC,CAAW,IAAM,CAC3C,KAAM,CAAE,SAAAC,CAAS,EAAIF,EACfJ,EAAS,MAAMK,EACnB,MAAMF,EAAoB,UAAUG,CAAQ,CAC9C,EAEA,OAAON,IAAW,MAAQ,CAACD,EAAgBC,CAAM,CACnD,CAAC,EACE,QAASO,GAAU,IAAI,qBAAmBA,CAAK,CAAC,EAChD,IAAI",
6
+ "names": ["LookForBackup_exports", "__export", "lookForBackup", "__toCommonJS", "import_purify_ts", "import_BackupDeviceActionErrors", "isBackupExpired", "backup", "backupAge", "ONE_DAY_IN_MS", "deviceBackupStorage", "input", "liftEither", "deviceId", "error"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var s=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors"),n=require("../../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorage"),u=require("../../../../device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors"),r=require("../../../../device-action/OsUpdate/Backup/Substeps/LookForBackup");describe("LookForBackup",()=>{const i={getItem:vi.fn(),setItem:vi.fn(),removeItem:vi.fn()},o=vi.mocked(i.getItem),a=new n.DeviceBackupStorage(i);beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return true if a backup already exists and is not expired",async()=>{o.mockResolvedValueOnce(JSON.stringify({languageId:1,installedApps:[],clsHexImage:void 0,createdAt:new Date}));const e=await(0,r.lookForBackup)(a)({input:{deviceId:"12345"}});expect(e.isRight()).toBe(!0),expect(e.extract()).toBe(!0)}),it("Should return false if there is a backup but it's expired",async()=>{const e=new Date(Date.now()-1728e5);o.mockResolvedValueOnce(JSON.stringify({languageId:1,installedApps:[],clsHexImage:void 0,createdAt:e}));const t=await(0,r.lookForBackup)(a)({input:{deviceId:"12345"}});expect(t.isRight()).toBe(!0),expect(t.extract()).toBe(!1)})}),describe("Error",()=>{it("Should return LookForBackupError",async()=>{const e=new Error("data storage failed");o.mockRejectedValueOnce(e);const t=await(0,r.lookForBackup)(a)({input:{deviceId:"12345"}});expect(t.isLeft()).toBe(!0),t.mapLeft(c=>{expect(c).toBeInstanceOf(s.LookForBackupError),expect(c.originalError).toBeInstanceOf(u.GetBackupError),expect(c.originalError.originalError).toBe(e)})})})});
2
+ //# sourceMappingURL=LookForBackup.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/LookForBackup.test.ts"],
4
+ "sourcesContent": ["import { type KeyValueStorage } from \"@ledgerhq/device-management-kit\";\n\nimport { LookForBackupError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { DeviceBackupStorage } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage\";\nimport { GetBackupError } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorageErrors\";\nimport { lookForBackup } from \"@api/device-action/OsUpdate/Backup/Substeps/LookForBackup\";\n\ndescribe(\"LookForBackup\", () => {\n const storage: KeyValueStorage = {\n getItem: vi.fn(),\n setItem: vi.fn(),\n removeItem: vi.fn(),\n };\n\n const getItemMock = vi.mocked(storage.getItem);\n\n const deviceBackupStorage: DeviceBackupStorage = new DeviceBackupStorage(\n storage,\n );\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"Success\", () => {\n it(\"Should return true if a backup already exists and is not expired\", async () => {\n getItemMock.mockResolvedValueOnce(\n JSON.stringify({\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n createdAt: new Date(),\n }),\n );\n\n const result = await lookForBackup(deviceBackupStorage)({\n input: { deviceId: \"12345\" },\n });\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toBe(true);\n });\n\n it(\"Should return false if there is a backup but it's expired\", async () => {\n const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000);\n getItemMock.mockResolvedValueOnce(\n JSON.stringify({\n languageId: 1,\n installedApps: [],\n clsHexImage: undefined,\n createdAt: twoDaysAgo,\n }),\n );\n\n const result = await lookForBackup(deviceBackupStorage)({\n input: { deviceId: \"12345\" },\n });\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toBe(false);\n });\n });\n\n describe(\"Error\", () => {\n it(\"Should return LookForBackupError\", async () => {\n const error = new Error(\"data storage failed\");\n getItemMock.mockRejectedValueOnce(error);\n\n const result = await lookForBackup(deviceBackupStorage)({\n input: { deviceId: \"12345\" },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(LookForBackupError);\n expect(e.originalError).toBeInstanceOf(GetBackupError);\n expect((e.originalError as GetBackupError).originalError).toBe(error);\n });\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAmC,uEACnCC,EAAoC,0EACpCC,EAA+B,gFAC/BC,EAA8B,qEAE9B,SAAS,gBAAiB,IAAM,CAC9B,MAAMC,EAA2B,CAC/B,QAAS,GAAG,GAAG,EACf,QAAS,GAAG,GAAG,EACf,WAAY,GAAG,GAAG,CACpB,EAEMC,EAAc,GAAG,OAAOD,EAAQ,OAAO,EAEvCE,EAA2C,IAAI,sBACnDF,CACF,EAEA,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,mEAAoE,SAAY,CACjFC,EAAY,sBACV,KAAK,UAAU,CACb,WAAY,EACZ,cAAe,CAAC,EAChB,YAAa,OACb,UAAW,IAAI,IACjB,CAAC,CACH,EAEA,MAAME,EAAS,QAAM,iBAAcD,CAAmB,EAAE,CACtD,MAAO,CAAE,SAAU,OAAQ,CAC7B,CAAC,EAED,OAAOC,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,CACpC,CAAC,EAED,GAAG,4DAA6D,SAAY,CAC1E,MAAMC,EAAa,IAAI,KAAK,KAAK,IAAI,EAAI,MAAuB,EAChEH,EAAY,sBACV,KAAK,UAAU,CACb,WAAY,EACZ,cAAe,CAAC,EAChB,YAAa,OACb,UAAWG,CACb,CAAC,CACH,EAEA,MAAMD,EAAS,QAAM,iBAAcD,CAAmB,EAAE,CACtD,MAAO,CAAE,SAAU,OAAQ,CAC7B,CAAC,EAED,OAAOC,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAK,CACrC,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,mCAAoC,SAAY,CACjD,MAAME,EAAQ,IAAI,MAAM,qBAAqB,EAC7CJ,EAAY,sBAAsBI,CAAK,EAEvC,MAAMF,EAAS,QAAM,iBAAcD,CAAmB,EAAE,CACtD,MAAO,CAAE,SAAU,OAAQ,CAC7B,CAAC,EAED,OAAOC,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjCA,EAAO,QAASG,GAAM,CACpB,OAAOA,CAAC,EAAE,eAAe,oBAAkB,EAC3C,OAAOA,EAAE,aAAa,EAAE,eAAe,gBAAc,EACrD,OAAQA,EAAE,cAAiC,aAAa,EAAE,KAAKD,CAAK,CACtE,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_BackupDeviceActionErrors", "import_DeviceBackupStorage", "import_DeviceBackupStorageErrors", "import_LookForBackup", "storage", "getItemMock", "deviceBackupStorage", "result", "twoDaysAgo", "error", "e"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var k=(a,e)=>{for(var r in e)t(a,r,{get:e[r],enumerable:!0})},v=(a,e,r,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let p of s(e))!i.call(a,p)&&p!==r&&t(a,p,{get:()=>e[p],enumerable:!(c=u(e,p))||c.enumerable});return a};var B=a=>v(t({},"__esModule",{value:!0}),a);var m={};k(m,{saveBackup:()=>d});module.exports=B(m);var o=require("purify-ts/EitherAsync"),n=require("../../../../device-action/OsUpdate/Backup/BackupDeviceActionErrors");const d=a=>async({input:e})=>(0,o.EitherAsync)(async({liftEither:r})=>{const{deviceId:c,backup:p}=e;await r(await a.saveBackup(c,p))}).mapLeft(r=>new n.SaveBackupError(r)).run();0&&(module.exports={saveBackup});
2
+ //# sourceMappingURL=SaveBackup.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Backup/Substeps/SaveBackup.ts"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts/Either\";\nimport { EitherAsync } from \"purify-ts/EitherAsync\";\n\nimport { SaveBackupError } from \"@api/device-action/OsUpdate/Backup/BackupDeviceActionErrors\";\nimport { type DeviceBackupStorage } from \"@api/device-action/OsUpdate/Backup/Storage/DeviceBackupStorage\";\nimport { type Backup } from \"@api/device-action/OsUpdate/Backup/types\";\n\ntype SaveBackupHandlerArgs = {\n input: { deviceId: string; backup: Backup };\n};\n\ntype SaveBackupHandlerResponse = Promise<Either<SaveBackupError, void>>;\n\ntype SaveBackupHandler = (\n args: SaveBackupHandlerArgs,\n) => SaveBackupHandlerResponse;\n\nexport const saveBackup =\n (deviceBackupStorage: DeviceBackupStorage): SaveBackupHandler =>\n async ({ input }: SaveBackupHandlerArgs): SaveBackupHandlerResponse => {\n return EitherAsync(async ({ liftEither }) => {\n const { deviceId, backup } = input;\n await liftEither(await deviceBackupStorage.saveBackup(deviceId, backup));\n })\n .mapLeft((error) => new SaveBackupError(error))\n .run();\n };\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA4B,iCAE5BC,EAAgC,uEAczB,MAAMH,EACVI,GACD,MAAO,CAAE,MAAAC,CAAM,OACN,eAAY,MAAO,CAAE,WAAAC,CAAW,IAAM,CAC3C,KAAM,CAAE,SAAAC,EAAU,OAAAC,CAAO,EAAIH,EAC7B,MAAMC,EAAW,MAAMF,EAAoB,WAAWG,EAAUC,CAAM,CAAC,CACzE,CAAC,EACE,QAASC,GAAU,IAAI,kBAAgBA,CAAK,CAAC,EAC7C,IAAI",
6
+ "names": ["SaveBackup_exports", "__export", "saveBackup", "__toCommonJS", "import_EitherAsync", "import_BackupDeviceActionErrors", "deviceBackupStorage", "input", "liftEither", "deviceId", "backup", "error"]
7
+ }