@ledgerhq/dmk-ledger-wallet 0.0.0-develop-20260813001639 → 0.0.0-develop-20260815000734

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 (156) hide show
  1. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js +1 -1
  2. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js.map +3 -3
  3. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js +1 -1
  4. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js.map +3 -3
  5. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js +1 -1
  6. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js.map +3 -3
  7. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js +1 -1
  8. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js.map +3 -3
  9. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js +1 -1
  10. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js.map +2 -2
  11. package/lib/cjs/api/device-action/OsUpdate/Resolve/types.js +1 -1
  12. package/lib/cjs/api/device-action/OsUpdate/Resolve/types.js.map +2 -2
  13. package/lib/cjs/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.js +2 -0
  14. package/lib/cjs/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.js.map +7 -0
  15. package/lib/cjs/api/device-action/OsUpdate/Shared/OsUpdateUtils.js +2 -0
  16. package/lib/cjs/api/device-action/OsUpdate/Shared/OsUpdateUtils.js.map +7 -0
  17. package/lib/cjs/api/device-action/OsUpdate/{Resolve → Shared}/Substeps/GetOsVersion.js +1 -1
  18. package/lib/cjs/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.js.map +7 -0
  19. package/lib/cjs/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.test.js +2 -0
  20. package/lib/cjs/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.test.js.map +7 -0
  21. package/lib/cjs/api/device-action/OsUpdate/Shared/types.js +2 -0
  22. package/lib/cjs/api/device-action/OsUpdate/Shared/types.js.map +7 -0
  23. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.js +2 -0
  24. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.js.map +7 -0
  25. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.js +2 -0
  26. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.js.map +7 -0
  27. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.js +2 -0
  28. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.js.map +7 -0
  29. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.js +2 -0
  30. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.js.map +7 -0
  31. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.js +2 -0
  32. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.js.map +7 -0
  33. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.js +2 -0
  34. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.js.map +7 -0
  35. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.js +2 -0
  36. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.js.map +7 -0
  37. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/types.js +2 -0
  38. package/lib/cjs/api/device-action/OsUpdate/Update/FlashMcu/types.js.map +7 -0
  39. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.js +2 -0
  40. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.js.map +7 -0
  41. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.js +2 -0
  42. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.js.map +7 -0
  43. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.js +2 -0
  44. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.js.map +7 -0
  45. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.js +2 -0
  46. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.js.map +7 -0
  47. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/types.js +2 -0
  48. package/lib/cjs/api/device-action/OsUpdate/Update/InstallOsUpdate/types.js.map +7 -0
  49. package/lib/cjs/index.js +1 -1
  50. package/lib/cjs/index.js.map +3 -3
  51. package/lib/cjs/package.json +2 -1
  52. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js +1 -1
  53. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js.map +3 -3
  54. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js +1 -1
  55. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js.map +3 -3
  56. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js +1 -1
  57. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js.map +3 -3
  58. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js +1 -1
  59. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js.map +3 -3
  60. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js +1 -1
  61. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js.map +2 -2
  62. package/lib/esm/api/device-action/OsUpdate/Resolve/types.js +1 -1
  63. package/lib/esm/api/device-action/OsUpdate/Resolve/types.js.map +2 -2
  64. package/lib/esm/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.js +2 -0
  65. package/lib/esm/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.js.map +7 -0
  66. package/lib/esm/api/device-action/OsUpdate/Shared/OsUpdateUtils.js +2 -0
  67. package/lib/esm/api/device-action/OsUpdate/Shared/OsUpdateUtils.js.map +7 -0
  68. package/lib/esm/api/device-action/OsUpdate/{Resolve → Shared}/Substeps/GetOsVersion.js +1 -1
  69. package/lib/esm/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.js.map +7 -0
  70. package/lib/esm/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.test.js +2 -0
  71. package/lib/esm/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.test.js.map +7 -0
  72. package/lib/esm/api/device-action/OsUpdate/Shared/types.js +1 -0
  73. package/lib/esm/api/device-action/OsUpdate/Shared/types.js.map +7 -0
  74. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.js +2 -0
  75. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.js.map +7 -0
  76. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.js +2 -0
  77. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.js.map +7 -0
  78. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.js +2 -0
  79. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.js.map +7 -0
  80. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.js +2 -0
  81. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.js.map +7 -0
  82. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.js +2 -0
  83. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.js.map +7 -0
  84. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.js +2 -0
  85. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.js.map +7 -0
  86. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.js +2 -0
  87. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.js.map +7 -0
  88. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/types.js +2 -0
  89. package/lib/esm/api/device-action/OsUpdate/Update/FlashMcu/types.js.map +7 -0
  90. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.js +2 -0
  91. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.js.map +7 -0
  92. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.js +2 -0
  93. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.js.map +7 -0
  94. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.js +2 -0
  95. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.js.map +7 -0
  96. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.js +2 -0
  97. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.js.map +7 -0
  98. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/types.js +2 -0
  99. package/lib/esm/api/device-action/OsUpdate/Update/InstallOsUpdate/types.js.map +7 -0
  100. package/lib/esm/index.js +1 -1
  101. package/lib/esm/index.js.map +3 -3
  102. package/lib/esm/package.json +2 -1
  103. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.d.ts +1 -5
  104. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.d.ts.map +1 -1
  105. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.d.ts +1 -1
  106. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.d.ts.map +1 -1
  107. package/lib/types/api/device-action/OsUpdate/Resolve/types.d.ts +1 -34
  108. package/lib/types/api/device-action/OsUpdate/Resolve/types.d.ts.map +1 -1
  109. package/lib/types/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.d.ts +7 -0
  110. package/lib/types/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.d.ts.map +1 -0
  111. package/lib/types/api/device-action/OsUpdate/Shared/OsUpdateUtils.d.ts +3 -0
  112. package/lib/types/api/device-action/OsUpdate/Shared/OsUpdateUtils.d.ts.map +1 -0
  113. package/lib/types/api/device-action/OsUpdate/{Resolve → Shared}/Substeps/GetOsVersion.d.ts +1 -1
  114. package/lib/types/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.d.ts.map +1 -0
  115. package/lib/types/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.test.d.ts.map +1 -0
  116. package/lib/types/api/device-action/OsUpdate/Shared/types.d.ts +36 -0
  117. package/lib/types/api/device-action/OsUpdate/Shared/types.d.ts.map +1 -0
  118. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.d.ts +6 -0
  119. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.d.ts.map +1 -0
  120. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.d.ts +2 -0
  121. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceAction.test.d.ts.map +1 -0
  122. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.d.ts +14 -0
  123. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/FlashMcuDeviceActionErrors.d.ts.map +1 -0
  124. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.d.ts +12 -0
  125. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.d.ts.map +1 -0
  126. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.d.ts +2 -0
  127. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/FlashMcu.test.d.ts.map +1 -0
  128. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.d.ts +15 -0
  129. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.d.ts.map +1 -0
  130. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.d.ts +2 -0
  131. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/Substeps/ResolveMcuVersion.test.d.ts.map +1 -0
  132. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/types.d.ts +28 -0
  133. package/lib/types/api/device-action/OsUpdate/Update/FlashMcu/types.d.ts.map +1 -0
  134. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.d.ts +6 -0
  135. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.d.ts.map +1 -0
  136. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.d.ts +2 -0
  137. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/InstallOsUpdateDeviceAction.test.d.ts.map +1 -0
  138. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.d.ts +17 -0
  139. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.d.ts.map +1 -0
  140. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.d.ts +2 -0
  141. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/Substeps/InstallFirmware.test.d.ts.map +1 -0
  142. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/types.d.ts +29 -0
  143. package/lib/types/api/device-action/OsUpdate/Update/InstallOsUpdate/types.d.ts.map +1 -0
  144. package/lib/types/index.d.ts +5 -0
  145. package/lib/types/index.d.ts.map +1 -1
  146. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  147. package/package.json +8 -7
  148. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js.map +0 -7
  149. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js +0 -2
  150. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js.map +0 -7
  151. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js.map +0 -7
  152. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js +0 -2
  153. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js.map +0 -7
  154. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.d.ts.map +0 -1
  155. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.d.ts.map +0 -1
  156. /package/lib/types/api/device-action/OsUpdate/{Resolve → Shared}/Substeps/GetOsVersion.test.d.ts +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var D=(n,r)=>{for(var e in r)l(n,e,{get:r[e],enumerable:!0})},A=(n,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of O(r))!m.call(n,i)&&i!==e&&l(n,i,{get:()=>r[i],enumerable:!(a=v(r,i))||a.enumerable});return n};var g=n=>A(l({},"__esModule",{value:!0}),n);var S={};D(S,{ResolveOsUpdatePathDeviceAction:()=>R});module.exports=g(S);var s=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),t=require("xstate"),u=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),d=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion"),c=require("./Substeps/GetOsVersion"),h=require("./Substeps/ResolveOsUpdatePath"),o=require("./types");class R extends s.XStateDeviceAction{makeStateMachine(r){return(0,t.setup)({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:(0,d.waitForAppAndVersion)(r,this.input.unlockTimeout),goToDashboard:(0,u.goToDashboard)(r,this.input.unlockTimeout),getOsVersion:(0,t.fromPromise)((0,c.getOsVersion)(r)),resolveOsUpdatePath:(0,t.fromPromise)((0,h.resolveOsUpdatePath)(r))},guards:{isDeviceOnDashboard:({context:e})=>(0,s.isDashboardName)(e._internalState.currentApp),hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"ResolveOsUpdatePathDeviceAction",initial:"WaitForAppAndVersion",context:({input:e})=>({input:{unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:o.ResolveOsUpdatePathSteps.Idle},_internalState:{error:null,currentApp:null,getOsVersionResponse:null,osUpdates:[]}}),states:{WaitForAppAndVersion:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,currentApp:a.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"GetOsVersion"},{target:"GoToDashboard"}]},GoToDashboard:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:()=>e.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},GetOsVersion:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.GetOsVersion})}),invoke:{src:"getOsVersion",onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,getOsVersionResponse:a})})}),target:"CheckGetOsVersion"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetOsVersion:{always:[{guard:"hasError",target:"Error"},{target:"ResolveOsUpdatePath"}]},ResolveOsUpdatePath:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.ResolveOsUpdatePath})}),invoke:{src:"resolveOsUpdatePath",input:({context:e})=>({getOsVersionResponse:e._internalState.getOsVersionResponse}),onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,osUpdates:a})})}),target:"CheckResolveOsUpdatePath"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckResolveOsUpdatePath:{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)(e._internalState.osUpdates)})}}0&&(module.exports={ResolveOsUpdatePathDeviceAction});
1
+ "use strict";var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var D=(n,r)=>{for(var e in r)l(n,e,{get:r[e],enumerable:!0})},A=(n,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of O(r))!m.call(n,i)&&i!==e&&l(n,i,{get:()=>r[i],enumerable:!(a=v(r,i))||a.enumerable});return n};var g=n=>A(l({},"__esModule",{value:!0}),n);var S={};D(S,{ResolveOsUpdatePathDeviceAction:()=>R});module.exports=g(S);var s=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),t=require("xstate"),u=require("../../../device-action/OsUpdate/Shared/Substeps/GetOsVersion"),d=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),c=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion"),h=require("./Substeps/ResolveOsUpdatePath"),o=require("./types");class R extends s.XStateDeviceAction{makeStateMachine(r){return(0,t.setup)({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:(0,c.waitForAppAndVersion)(r,this.input.unlockTimeout),goToDashboard:(0,d.goToDashboard)(r,this.input.unlockTimeout),getOsVersion:(0,t.fromPromise)((0,u.getOsVersion)(r)),resolveOsUpdatePath:(0,t.fromPromise)((0,h.resolveOsUpdatePath)(r))},guards:{isDeviceOnDashboard:({context:e})=>(0,s.isDashboardName)(e._internalState.currentApp),hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"ResolveOsUpdatePathDeviceAction",initial:"WaitForAppAndVersion",context:({input:e})=>({input:{unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:o.ResolveOsUpdatePathSteps.Idle},_internalState:{error:null,currentApp:null,getOsVersionResponse:null,osUpdates:[]}}),states:{WaitForAppAndVersion:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,currentApp:a.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"GetOsVersion"},{target:"GoToDashboard"}]},GoToDashboard:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:()=>e.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},GetOsVersion:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.GetOsVersion})}),invoke:{src:"getOsVersion",onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,getOsVersionResponse:a})})}),target:"CheckGetOsVersion"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetOsVersion:{always:[{guard:"hasError",target:"Error"},{target:"ResolveOsUpdatePath"}]},ResolveOsUpdatePath:{entry:(0,t.assign)({intermediateValue:e=>({...e.context.intermediateValue,step:o.ResolveOsUpdatePathSteps.ResolveOsUpdatePath})}),invoke:{src:"resolveOsUpdatePath",input:({context:e})=>({getOsVersionResponse:e._internalState.getOsVersionResponse}),onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Left:a=>({...e.context._internalState,error:a}),Right:a=>({...e.context._internalState,osUpdates:a})})}),target:"CheckResolveOsUpdatePath"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckResolveOsUpdatePath:{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)(e._internalState.osUpdates)})}}0&&(module.exports={ResolveOsUpdatePathDeviceAction});
2
2
  //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type DeviceActionStateMachine,\n type InternalApi,\n isDashboardName,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nimport { getOsVersion } from \"./Substeps/GetOsVersion\";\nimport { resolveOsUpdatePath } from \"./Substeps/ResolveOsUpdatePath\";\nimport {\n type ResolveOsUpdatePathDAError,\n type ResolveOsUpdatePathDAInput,\n type ResolveOsUpdatePathDAIntermediateValue,\n type ResolveOsUpdatePathDAInternalState,\n type ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathSteps,\n} from \"./types\";\n\nexport class ResolveOsUpdatePathDeviceAction extends XStateDeviceAction<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n> {\n protected override makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n > {\n type types = StateMachineTypes<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n >;\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n output: {} as types[\"output\"],\n context: {} as types[\"context\"],\n } as types,\n actors: {\n waitForAppAndVersion: waitForAppAndVersion(\n internalApi,\n this.input.unlockTimeout,\n ),\n goToDashboard: goToDashboard(internalApi, this.input.unlockTimeout),\n getOsVersion: fromPromise(getOsVersion(internalApi)),\n resolveOsUpdatePath: fromPromise(resolveOsUpdatePath(internalApi)),\n },\n guards: {\n isDeviceOnDashboard: ({ context }) =>\n isDashboardName(context._internalState.currentApp),\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: \"ResolveOsUpdatePathDeviceAction\",\n initial: \"WaitForAppAndVersion\",\n context: ({ input }) => ({\n input: {\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: ResolveOsUpdatePathSteps.Idle,\n },\n _internalState: {\n error: null,\n currentApp: null,\n getOsVersionResponse: null,\n osUpdates: [],\n },\n }),\n states: {\n WaitForAppAndVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.WaitForAppAndVersion,\n }),\n }),\n invoke: {\n src: \"waitForAppAndVersion\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n currentApp: output.name,\n }),\n },\n );\n },\n }),\n target: \"CheckIfDeviceIsOnDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceIsOnDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDeviceOnDashboard\",\n target: \"GetOsVersion\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.GoToDashboard,\n }),\n }),\n invoke: {\n src: \"goToDashboard\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => _.context._internalState,\n },\n );\n },\n }),\n target: \"CheckGoToDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGoToDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"WaitForAppAndVersion\",\n },\n ],\n },\n GetOsVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.GetOsVersion,\n }),\n }),\n invoke: {\n src: \"getOsVersion\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (getOsVersionResponse) => ({\n ..._.context._internalState,\n getOsVersionResponse,\n }),\n },\n );\n },\n }),\n target: \"CheckGetOsVersion\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetOsVersion: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"ResolveOsUpdatePath\",\n },\n ],\n },\n ResolveOsUpdatePath: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.ResolveOsUpdatePath,\n }),\n }),\n invoke: {\n src: \"resolveOsUpdatePath\",\n input: ({ context }) => ({\n getOsVersionResponse:\n context._internalState.getOsVersionResponse!,\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (osUpdates) => ({\n ..._.context._internalState,\n osUpdates,\n }),\n },\n );\n },\n }),\n target: \"CheckResolveOsUpdatePath\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckResolveOsUpdatePath: {\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 context._internalState.error !== null\n ? Left(context._internalState.error)\n : Right(context._internalState.osUpdates),\n });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["ResolveOsUpdatePathDeviceAction_exports", "__export", "ResolveOsUpdatePathDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_GoToDashboard", "import_WaitForAppAndVersion", "import_GetOsVersion", "import_ResolveOsUpdatePath", "import_types", "internalApi", "context", "_", "input", "error", "output", "getOsVersionResponse", "osUpdates"]
4
+ "sourcesContent": ["import {\n type DeviceActionStateMachine,\n type InternalApi,\n isDashboardName,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { getOsVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/GetOsVersion\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nimport { resolveOsUpdatePath } from \"./Substeps/ResolveOsUpdatePath\";\nimport {\n type ResolveOsUpdatePathDAError,\n type ResolveOsUpdatePathDAInput,\n type ResolveOsUpdatePathDAIntermediateValue,\n type ResolveOsUpdatePathDAInternalState,\n type ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathSteps,\n} from \"./types\";\n\nexport class ResolveOsUpdatePathDeviceAction extends XStateDeviceAction<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n> {\n protected override makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n > {\n type types = StateMachineTypes<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAInternalState\n >;\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n output: {} as types[\"output\"],\n context: {} as types[\"context\"],\n } as types,\n actors: {\n waitForAppAndVersion: waitForAppAndVersion(\n internalApi,\n this.input.unlockTimeout,\n ),\n goToDashboard: goToDashboard(internalApi, this.input.unlockTimeout),\n getOsVersion: fromPromise(getOsVersion(internalApi)),\n resolveOsUpdatePath: fromPromise(resolveOsUpdatePath(internalApi)),\n },\n guards: {\n isDeviceOnDashboard: ({ context }) =>\n isDashboardName(context._internalState.currentApp),\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: \"ResolveOsUpdatePathDeviceAction\",\n initial: \"WaitForAppAndVersion\",\n context: ({ input }) => ({\n input: {\n unlockTimeout: input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: ResolveOsUpdatePathSteps.Idle,\n },\n _internalState: {\n error: null,\n currentApp: null,\n getOsVersionResponse: null,\n osUpdates: [],\n },\n }),\n states: {\n WaitForAppAndVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.WaitForAppAndVersion,\n }),\n }),\n invoke: {\n src: \"waitForAppAndVersion\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (output) => ({\n ..._.context._internalState,\n currentApp: output.name,\n }),\n },\n );\n },\n }),\n target: \"CheckIfDeviceIsOnDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckIfDeviceIsOnDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDeviceOnDashboard\",\n target: \"GetOsVersion\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.GoToDashboard,\n }),\n }),\n invoke: {\n src: \"goToDashboard\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: _.context.intermediateValue.step,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: () => _.context._internalState,\n },\n );\n },\n }),\n target: \"CheckGoToDashboard\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGoToDashboard: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"WaitForAppAndVersion\",\n },\n ],\n },\n GetOsVersion: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.GetOsVersion,\n }),\n }),\n invoke: {\n src: \"getOsVersion\",\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (getOsVersionResponse) => ({\n ..._.context._internalState,\n getOsVersionResponse,\n }),\n },\n );\n },\n }),\n target: \"CheckGetOsVersion\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckGetOsVersion: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"ResolveOsUpdatePath\",\n },\n ],\n },\n ResolveOsUpdatePath: {\n entry: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n step: ResolveOsUpdatePathSteps.ResolveOsUpdatePath,\n }),\n }),\n invoke: {\n src: \"resolveOsUpdatePath\",\n input: ({ context }) => ({\n getOsVersionResponse:\n context._internalState.getOsVersionResponse!,\n }),\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ResolveOsUpdatePathDAInternalState>(\n {\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n Right: (osUpdates) => ({\n ..._.context._internalState,\n osUpdates,\n }),\n },\n );\n },\n }),\n target: \"CheckResolveOsUpdatePath\",\n },\n onError: {\n actions: \"assignErrorFromEvent\",\n target: \"Error\",\n },\n },\n },\n CheckResolveOsUpdatePath: {\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 context._internalState.error !== null\n ? Left(context._internalState.error)\n : Right(context._internalState.osUpdates),\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ResolveOsUpdatePathDeviceAction_exports", "__export", "ResolveOsUpdatePathDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_GetOsVersion", "import_GoToDashboard", "import_WaitForAppAndVersion", "import_ResolveOsUpdatePath", "import_types", "internalApi", "context", "_", "input", "error", "output", "getOsVersionResponse", "osUpdates"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=require("@ledgerhq/device-management-kit"),a=require("purify-ts"),O=require("xstate"),d=require("../../../device-action/__test-utils__/makeInternalApi"),c=require("../../../device-action/__test-utils__/testDeviceActionStates"),U=require("../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction"),f=require("../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors"),k=require("../../../device-action/OsUpdate/Resolve/Substeps/GetOsVersion"),D=require("../../../device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath"),e=require("../../../device-action/OsUpdate/Resolve/types"),P=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),v=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard");vi.mock("@api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion");vi.mock("@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath");const o=n=>({status:i.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:i.UserInteractionRequired.None,step:n}}),S=n=>({status:i.DeviceActionStatus.Completed,output:n}),A=n=>({status:i.DeviceActionStatus.Error,error:n}),y=n=>(0,O.createMachine)({initial:"ready",states:{ready:{after:{0:"done"},entry:(0,O.assign)({intermediateValue:()=>({requiredUserInteraction:i.UserInteractionRequired.None})})},done:{type:"final"}},output:n}),w=n=>y(()=>n);describe("ResolveOsUpdatePathDeviceAction",()=>{const n={isBootloader:!1,isOsu:!1,targetId:857735172,seTargetId:857735172,mcuTargetId:void 0,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"5.24",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:0,recoverState:void 0,secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}},V=[{osuFirmware:{id:200,notes:"Update notes",perso:"perso",firmware:"osu",firmwareKey:"osu-key",hash:"osu-hash",nextFinalFirmware:300},finalFirmware:{id:300,version:"1.4.0",perso:"perso",firmware:"final",firmwareKey:"final-key",hash:"final-hash",bytes:123,mcuVersions:[1]},shouldFlashMcu:!1}];beforeEach(()=>{vi.resetAllMocks()});const l=(t="BOLOS")=>vi.mocked(v.waitForAppAndVersion).mockReturnValue(w((0,a.Right)({name:t,version:"1.0.0"}))),F=t=>{const s=[...t];vi.mocked(v.waitForAppAndVersion).mockReturnValue(y(()=>(0,a.Right)({name:s.shift()??"BOLOS",version:"1.0.0"})))},R=(t=(0,a.Right)(void 0))=>vi.mocked(P.goToDashboard).mockReturnValue(w(t)),h=(t=(0,a.Right)(n))=>vi.mocked(k.getOsVersion).mockReturnValue(()=>Promise.resolve(t)),m=(t=(0,a.Right)(V))=>vi.mocked(D.resolveOsUpdatePath).mockReturnValue(()=>Promise.resolve(t)),u=()=>new U.ResolveOsUpdatePathDeviceAction({input:{unlockTimeout:3e4}});describe("Success",()=>{it("Should complete the resolve flow when the device is already on dashboard",()=>new Promise((t,s)=>{l(),h(),m();const r=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),S(V)];(0,c.testDeviceActionStates)(u(),r,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to dashboard and wait for app and version again when an app is open",()=>new Promise((t,s)=>{F(["Bitcoin","BOLOS"]),R(),h(),m();const r=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),S(V)];(0,c.testDeviceActionStates)(u(),r,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})}))}),describe("Error",()=>{it("Should go to Error when waitForAppAndVersion returns Left",()=>new Promise((t,s)=>{const r=new i.UnknownDAError("waitForAppAndVersion failed");vi.mocked(v.waitForAppAndVersion).mockReturnValue(w((0,a.Left)(r)));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when goToDashboard returns Left",()=>new Promise((t,s)=>{l("Bitcoin");const r=new i.UnknownDAError("goToDashboard failed");R((0,a.Left)(r));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.GoToDashboard),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when getOsVersion returns Left",()=>new Promise((t,s)=>{l();const r=new f.GetOsVersionError(new Error("command failed"));h((0,a.Left)(r)),m();const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when resolveOsUpdatePath returns Left",()=>new Promise((t,s)=>{l(),h();const r=new f.ResolveOsUpdatePathError(new Error("manager api failed"));m((0,a.Left)(r));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})}))})});
1
+ "use strict";var i=require("@ledgerhq/device-management-kit"),a=require("purify-ts"),O=require("xstate"),d=require("../../../device-action/__test-utils__/makeInternalApi"),c=require("../../../device-action/__test-utils__/testDeviceActionStates"),R=require("../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction"),U=require("../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors"),k=require("../../../device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath"),e=require("../../../device-action/OsUpdate/Resolve/types"),D=require("../../../device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors"),P=require("../../../device-action/OsUpdate/Shared/Substeps/GetOsVersion"),y=require("../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard"),v=require("../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard");vi.mock("@api/device-action/OsUpdate/Shared/Substeps/GetOsVersion");vi.mock("@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath");const o=n=>({status:i.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:i.UserInteractionRequired.None,step:n}}),S=n=>({status:i.DeviceActionStatus.Completed,output:n}),A=n=>({status:i.DeviceActionStatus.Error,error:n}),F=n=>(0,O.createMachine)({initial:"ready",states:{ready:{after:{0:"done"},entry:(0,O.assign)({intermediateValue:()=>({requiredUserInteraction:i.UserInteractionRequired.None})})},done:{type:"final"}},output:n}),V=n=>F(()=>n);describe("ResolveOsUpdatePathDeviceAction",()=>{const n={isBootloader:!1,isOsu:!1,targetId:857735172,seTargetId:857735172,mcuTargetId:void 0,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"5.24",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:0,recoverState:void 0,secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}},f=[{osuFirmware:{id:200,notes:"Update notes",perso:"perso",firmware:"osu",firmwareKey:"osu-key",hash:"osu-hash",nextFinalFirmware:300},finalFirmware:{id:300,version:"1.4.0",perso:"perso",firmware:"final",firmwareKey:"final-key",hash:"final-hash",bytes:123,mcuVersions:[1]},shouldFlashMcu:!1}];beforeEach(()=>{vi.resetAllMocks()});const l=(t="BOLOS")=>vi.mocked(v.waitForAppAndVersion).mockReturnValue(V((0,a.Right)({name:t,version:"1.0.0"}))),g=t=>{const s=[...t];vi.mocked(v.waitForAppAndVersion).mockReturnValue(F(()=>(0,a.Right)({name:s.shift()??"BOLOS",version:"1.0.0"})))},w=(t=(0,a.Right)(void 0))=>vi.mocked(y.goToDashboard).mockReturnValue(V(t)),m=(t=(0,a.Right)(n))=>vi.mocked(P.getOsVersion).mockReturnValue(()=>Promise.resolve(t)),h=(t=(0,a.Right)(f))=>vi.mocked(k.resolveOsUpdatePath).mockReturnValue(()=>Promise.resolve(t)),u=()=>new R.ResolveOsUpdatePathDeviceAction({input:{unlockTimeout:3e4}});describe("Success",()=>{it("Should complete the resolve flow when the device is already on dashboard",()=>new Promise((t,s)=>{l(),m(),h();const r=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),S(f)];(0,c.testDeviceActionStates)(u(),r,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to dashboard and wait for app and version again when an app is open",()=>new Promise((t,s)=>{g(["Bitcoin","BOLOS"]),w(),m(),h();const r=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),S(f)];(0,c.testDeviceActionStates)(u(),r,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})}))}),describe("Error",()=>{it("Should go to Error when waitForAppAndVersion returns Left",()=>new Promise((t,s)=>{const r=new i.UnknownDAError("waitForAppAndVersion failed");vi.mocked(v.waitForAppAndVersion).mockReturnValue(V((0,a.Left)(r)));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when goToDashboard returns Left",()=>new Promise((t,s)=>{l("Bitcoin");const r=new i.UnknownDAError("goToDashboard failed");w((0,a.Left)(r));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GoToDashboard),o(e.ResolveOsUpdatePathSteps.GoToDashboard),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when getOsVersion returns Left",()=>new Promise((t,s)=>{l();const r=new D.GetOsVersionError(new Error("command failed"));m((0,a.Left)(r)),h();const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})})),it("Should go to Error when resolveOsUpdatePath returns Left",()=>new Promise((t,s)=>{l(),m();const r=new U.ResolveOsUpdatePathError(new Error("manager api failed"));h((0,a.Left)(r));const p=[o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.WaitForAppAndVersion),o(e.ResolveOsUpdatePathSteps.GetOsVersion),o(e.ResolveOsUpdatePathSteps.ResolveOsUpdatePath),A(r)];(0,c.testDeviceActionStates)(u(),p,(0,d.makeDeviceActionInternalApiMock)(),{onDone:t,onError:s})}))})});
2
2
  //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.ts"],
4
- "sourcesContent": ["import {\n DeviceActionStatus,\n type GetOsVersionResponse,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { ResolveOsUpdatePathDeviceAction } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction\";\nimport {\n GetOsVersionError,\n ResolveOsUpdatePathError,\n} from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { getOsVersion } from \"@api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion\";\nimport { resolveOsUpdatePath } from \"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\";\nimport {\n type OsUpdate,\n type ResolveOsUpdatePathDAError,\n type ResolveOsUpdatePathDAState,\n ResolveOsUpdatePathSteps,\n} from \"@api/device-action/OsUpdate/Resolve/types\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\n\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\");\nvi.mock(\"@api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\");\n\nconst pendingState = (\n step: ResolveOsUpdatePathSteps,\n): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (output: OsUpdate[]): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Completed,\n output,\n});\n\nconst errorState = (\n error: ResolveOsUpdatePathDAError,\n): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Error,\n error,\n});\n\nconst createMockActorMachineFromOutput = (\n output: () => Either<unknown, unknown>,\n) =>\n createMachine({\n initial: \"ready\",\n states: {\n ready: {\n after: { 0: \"done\" },\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n done: { type: \"final\" },\n },\n output,\n });\n\nconst createMockActorMachine = (output: Either<unknown, unknown>) =>\n createMockActorMachineFromOutput(() => output);\n\ndescribe(\"ResolveOsUpdatePathDeviceAction\", () => {\n const getOsVersionResponse = {\n isBootloader: false,\n isOsu: false,\n targetId: 0x33200004,\n seTargetId: 0x33200004,\n mcuTargetId: undefined,\n seVersion: \"1.3.0\",\n seFlags: new Uint8Array([0xe6, 0x00, 0x00, 0x00]),\n mcuSephVersion: \"5.24\",\n mcuBootloaderVersion: \"0.48\",\n hwVersion: \"00\",\n langId: 0,\n recoverState: undefined,\n secureElementFlags: {\n isPinValidated: true,\n hasMcuSerialNumber: true,\n hasValidCertificate: true,\n isCustomAuthorityConnectionAllowed: false,\n isSecureConnectionAllowed: false,\n isOnboarded: true,\n isMcuCodeSigned: true,\n isInRecoveryMode: false,\n },\n } satisfies GetOsVersionResponse;\n\n const osUpdates = [\n {\n osuFirmware: {\n id: 200,\n notes: \"Update notes\",\n perso: \"perso\",\n firmware: \"osu\",\n firmwareKey: \"osu-key\",\n hash: \"osu-hash\",\n nextFinalFirmware: 300,\n },\n finalFirmware: {\n id: 300,\n version: \"1.4.0\",\n perso: \"perso\",\n firmware: \"final\",\n firmwareKey: \"final-key\",\n hash: \"final-hash\",\n bytes: 123,\n mcuVersions: [1],\n },\n shouldFlashMcu: false,\n },\n ] satisfies OsUpdate[];\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n const setupWaitForAppAndVersion = (appName = \"BOLOS\") =>\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(\n Right({\n name: appName,\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n\n const setupWaitForAppAndVersionSequence = (appNames: string[]) => {\n const remainingAppNames = [...appNames];\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachineFromOutput(() =>\n Right({\n name: remainingAppNames.shift() ?? \"BOLOS\",\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n };\n\n const setupGoToDashboard = (\n output: Either<unknown, unknown> = Right(undefined),\n ) =>\n vi\n .mocked(goToDashboard)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof goToDashboard\n >,\n );\n\n const setupGetOsVersion = (\n result: Either<unknown, GetOsVersionResponse> = Right(getOsVersionResponse),\n ) =>\n vi\n .mocked(getOsVersion)\n .mockReturnValue(\n () =>\n Promise.resolve(result) as ReturnType<\n ReturnType<typeof getOsVersion>\n >,\n );\n\n const setupResolveOsUpdatePath = (\n result: Either<unknown, OsUpdate[]> = Right(osUpdates),\n ) =>\n vi\n .mocked(resolveOsUpdatePath)\n .mockReturnValue(\n () =>\n Promise.resolve(result) as ReturnType<\n ReturnType<typeof resolveOsUpdatePath>\n >,\n );\n\n const makeDeviceAction = () =>\n new ResolveOsUpdatePathDeviceAction({\n input: {\n unlockTimeout: 30_000,\n },\n });\n\n describe(\"Success\", () => {\n it(\"Should complete the resolve flow when the device is already on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGetOsVersion();\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\n completedState(osUpdates),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to dashboard and wait for app and version again when an app is open\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersionSequence([\"Bitcoin\", \"BOLOS\"]);\n setupGoToDashboard();\n setupGetOsVersion();\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\n completedState(osUpdates),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n\n describe(\"Error\", () => {\n it(\"Should go to Error when waitForAppAndVersion returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n const error = new UnknownDAError(\"waitForAppAndVersion failed\");\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof waitForAppAndVersion\n >,\n );\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to Error when goToDashboard returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion(\"Bitcoin\");\n const error = new UnknownDAError(\"goToDashboard failed\");\n setupGoToDashboard(Left(error));\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to Error when getOsVersion returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n const error = new GetOsVersionError(new Error(\"command failed\"));\n setupGetOsVersion(Left(error));\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\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 resolveOsUpdatePath returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGetOsVersion();\n const error = new ResolveOsUpdatePathError(\n new Error(\"manager api failed\"),\n );\n setupResolveOsUpdatePath(Left(error));\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\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_ResolveOsUpdatePathDeviceAction", "import_ResolveOsUpdatePathDeviceActionErrors", "import_GetOsVersion", "import_ResolveOsUpdatePath", "import_types", "import_GoToDashboard", "import_WaitForAppAndVersion", "pendingState", "step", "completedState", "output", "errorState", "error", "createMockActorMachineFromOutput", "createMockActorMachine", "getOsVersionResponse", "osUpdates", "setupWaitForAppAndVersion", "appName", "setupWaitForAppAndVersionSequence", "appNames", "remainingAppNames", "setupGoToDashboard", "setupGetOsVersion", "result", "setupResolveOsUpdatePath", "makeDeviceAction", "resolve", "reject", "expectedStates"]
4
+ "sourcesContent": ["import {\n DeviceActionStatus,\n type GetOsVersionResponse,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { ResolveOsUpdatePathDeviceAction } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction\";\nimport { ResolveOsUpdatePathError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { resolveOsUpdatePath } from \"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\";\nimport {\n type ResolveOsUpdatePathDAError,\n type ResolveOsUpdatePathDAState,\n ResolveOsUpdatePathSteps,\n} from \"@api/device-action/OsUpdate/Resolve/types\";\nimport { GetOsVersionError } from \"@api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors\";\nimport { getOsVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/GetOsVersion\";\nimport { goToDashboard } from \"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\";\nimport { waitForAppAndVersion } from \"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\";\nimport { type OsUpdate } from \"@api/device-action/OsUpdate/Shared/types\";\n\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/GoToDashboard\");\nvi.mock(\"@api/device-action/OsUpdate/Shared/Substeps/GetOsVersion\");\nvi.mock(\"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\");\n\nconst pendingState = (\n step: ResolveOsUpdatePathSteps,\n): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step,\n },\n});\n\nconst completedState = (output: OsUpdate[]): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Completed,\n output,\n});\n\nconst errorState = (\n error: ResolveOsUpdatePathDAError,\n): ResolveOsUpdatePathDAState => ({\n status: DeviceActionStatus.Error,\n error,\n});\n\nconst createMockActorMachineFromOutput = (\n output: () => Either<unknown, unknown>,\n) =>\n createMachine({\n initial: \"ready\",\n states: {\n ready: {\n after: { 0: \"done\" },\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n done: { type: \"final\" },\n },\n output,\n });\n\nconst createMockActorMachine = (output: Either<unknown, unknown>) =>\n createMockActorMachineFromOutput(() => output);\n\ndescribe(\"ResolveOsUpdatePathDeviceAction\", () => {\n const getOsVersionResponse = {\n isBootloader: false,\n isOsu: false,\n targetId: 0x33200004,\n seTargetId: 0x33200004,\n mcuTargetId: undefined,\n seVersion: \"1.3.0\",\n seFlags: new Uint8Array([0xe6, 0x00, 0x00, 0x00]),\n mcuSephVersion: \"5.24\",\n mcuBootloaderVersion: \"0.48\",\n hwVersion: \"00\",\n langId: 0,\n recoverState: undefined,\n secureElementFlags: {\n isPinValidated: true,\n hasMcuSerialNumber: true,\n hasValidCertificate: true,\n isCustomAuthorityConnectionAllowed: false,\n isSecureConnectionAllowed: false,\n isOnboarded: true,\n isMcuCodeSigned: true,\n isInRecoveryMode: false,\n },\n } satisfies GetOsVersionResponse;\n\n const osUpdates = [\n {\n osuFirmware: {\n id: 200,\n notes: \"Update notes\",\n perso: \"perso\",\n firmware: \"osu\",\n firmwareKey: \"osu-key\",\n hash: \"osu-hash\",\n nextFinalFirmware: 300,\n },\n finalFirmware: {\n id: 300,\n version: \"1.4.0\",\n perso: \"perso\",\n firmware: \"final\",\n firmwareKey: \"final-key\",\n hash: \"final-hash\",\n bytes: 123,\n mcuVersions: [1],\n },\n shouldFlashMcu: false,\n },\n ] satisfies OsUpdate[];\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n const setupWaitForAppAndVersion = (appName = \"BOLOS\") =>\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(\n Right({\n name: appName,\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n\n const setupWaitForAppAndVersionSequence = (appNames: string[]) => {\n const remainingAppNames = [...appNames];\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachineFromOutput(() =>\n Right({\n name: remainingAppNames.shift() ?? \"BOLOS\",\n version: \"1.0.0\",\n }),\n ) as unknown as ReturnType<typeof waitForAppAndVersion>,\n );\n };\n\n const setupGoToDashboard = (\n output: Either<unknown, unknown> = Right(undefined),\n ) =>\n vi\n .mocked(goToDashboard)\n .mockReturnValue(\n createMockActorMachine(output) as unknown as ReturnType<\n typeof goToDashboard\n >,\n );\n\n const setupGetOsVersion = (\n result: Either<unknown, GetOsVersionResponse> = Right(getOsVersionResponse),\n ) =>\n vi\n .mocked(getOsVersion)\n .mockReturnValue(\n () =>\n Promise.resolve(result) as ReturnType<\n ReturnType<typeof getOsVersion>\n >,\n );\n\n const setupResolveOsUpdatePath = (\n result: Either<unknown, OsUpdate[]> = Right(osUpdates),\n ) =>\n vi\n .mocked(resolveOsUpdatePath)\n .mockReturnValue(\n () =>\n Promise.resolve(result) as ReturnType<\n ReturnType<typeof resolveOsUpdatePath>\n >,\n );\n\n const makeDeviceAction = () =>\n new ResolveOsUpdatePathDeviceAction({\n input: {\n unlockTimeout: 30_000,\n },\n });\n\n describe(\"Success\", () => {\n it(\"Should complete the resolve flow when the device is already on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGetOsVersion();\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\n completedState(osUpdates),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to dashboard and wait for app and version again when an app is open\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersionSequence([\"Bitcoin\", \"BOLOS\"]);\n setupGoToDashboard();\n setupGetOsVersion();\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\n completedState(osUpdates),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n });\n\n describe(\"Error\", () => {\n it(\"Should go to Error when waitForAppAndVersion returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n const error = new UnknownDAError(\"waitForAppAndVersion failed\");\n vi.mocked(waitForAppAndVersion).mockReturnValue(\n createMockActorMachine(Left(error)) as unknown as ReturnType<\n typeof waitForAppAndVersion\n >,\n );\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to Error when goToDashboard returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion(\"Bitcoin\");\n const error = new UnknownDAError(\"goToDashboard failed\");\n setupGoToDashboard(Left(error));\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n pendingState(ResolveOsUpdatePathSteps.GoToDashboard),\n errorState(error),\n ];\n\n testDeviceActionStates(\n makeDeviceAction(),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n { onDone: resolve, onError: reject },\n );\n }));\n\n it(\"Should go to Error when getOsVersion returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n const error = new GetOsVersionError(new Error(\"command failed\"));\n setupGetOsVersion(Left(error));\n setupResolveOsUpdatePath();\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\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 resolveOsUpdatePath returns Left\", () =>\n new Promise<void>((resolve, reject) => {\n setupWaitForAppAndVersion();\n setupGetOsVersion();\n const error = new ResolveOsUpdatePathError(\n new Error(\"manager api failed\"),\n );\n setupResolveOsUpdatePath(Left(error));\n\n const expectedStates: ResolveOsUpdatePathDAState[] = [\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.WaitForAppAndVersion),\n pendingState(ResolveOsUpdatePathSteps.GetOsVersion),\n pendingState(ResolveOsUpdatePathSteps.ResolveOsUpdatePath),\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_ResolveOsUpdatePathDeviceAction", "import_ResolveOsUpdatePathDeviceActionErrors", "import_ResolveOsUpdatePath", "import_types", "import_OsUpdateDeviceActionErrors", "import_GetOsVersion", "import_GoToDashboard", "import_WaitForAppAndVersion", "pendingState", "step", "completedState", "output", "errorState", "error", "createMockActorMachineFromOutput", "createMockActorMachine", "getOsVersionResponse", "osUpdates", "setupWaitForAppAndVersion", "appName", "setupWaitForAppAndVersionSequence", "appNames", "remainingAppNames", "setupGoToDashboard", "setupGetOsVersion", "result", "setupResolveOsUpdatePath", "makeDeviceAction", "resolve", "reject", "expectedStates"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var n in r)t(o,n,{get:r[n],enumerable:!0})},p=(o,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of i(r))!l.call(o,e)&&e!==n&&t(o,e,{get:()=>r[e],enumerable:!(s=a(r,e))||s.enumerable});return o};var m=o=>p(t({},"__esModule",{value:!0}),o);var O={};E(O,{GetOsVersionError:()=>d,ResolveOsUpdatePathError:()=>k});module.exports=m(O);class d{_tag="GetOsVersionError";originalError;constructor(r){this.originalError=r}}class k{_tag="ResolveOsUpdatePathError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={GetOsVersionError,ResolveOsUpdatePathError});
1
+ "use strict";var s=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var l=(o,r)=>{for(var t in r)s(o,t,{get:r[t],enumerable:!0})},E=(o,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of p(r))!i.call(o,e)&&e!==t&&s(o,e,{get:()=>r[e],enumerable:!(a=n(r,e))||a.enumerable});return o};var m=o=>E(s({},"__esModule",{value:!0}),o);var O={};l(O,{ResolveOsUpdatePathError:()=>d});module.exports=m(O);class d{_tag="ResolveOsUpdatePathError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={ResolveOsUpdatePathError});
2
2
  //# sourceMappingURL=ResolveOsUpdatePathDeviceActionErrors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class GetOsVersionError implements DmkError {\n readonly _tag = \"GetOsVersionError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport class ResolveOsUpdatePathError implements DmkError {\n readonly _tag = \"ResolveOsUpdatePathError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport type ResolveOsUpdatePathDAErrors =\n | GetOsVersionError\n | ResolveOsUpdatePathError;\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,6BAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAME,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYG,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMF,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
- "names": ["ResolveOsUpdatePathDeviceActionErrors_exports", "__export", "GetOsVersionError", "ResolveOsUpdatePathError", "__toCommonJS", "originalError"]
4
+ "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nimport { type GetOsVersionError } from \"@api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors\";\n\nexport class ResolveOsUpdatePathError implements DmkError {\n readonly _tag = \"ResolveOsUpdatePathError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n\nexport type ResolveOsUpdatePathDAErrors =\n | GetOsVersionError\n | ResolveOsUpdatePathError;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAIO,MAAME,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["ResolveOsUpdatePathDeviceActionErrors_exports", "__export", "ResolveOsUpdatePathError", "__toCommonJS", "originalError"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var y=(t,r)=>{for(var e in r)c(t,e,{get:r[e],enumerable:!0})},f=(t,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of g(r))!U.call(t,s)&&s!==e&&c(t,s,{get:()=>r[s],enumerable:!(a=w(r,s))||a.enumerable});return t};var R=t=>f(c({},"__esModule",{value:!0}),t);var b={};y(b,{resolveOsUpdatePath:()=>E});module.exports=R(b);var i=require("purify-ts"),l=require("semver"),u=require("../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors");const A=5,E=t=>({input:{getOsVersionResponse:r}})=>(0,i.EitherAsync)(async({liftEither:e,fromPromise:a})=>{const s=await a(F(t));let d=await e(O(s,r.mcuSephVersion));const h=await a(M(t,r));let o=(await a(P(t,r,h))).extractNullable();const m=[];for(;o&&m.length<A;){const p=await a(I(t,o)),v=!p.mcuVersions.includes(d);v&&(d=await e(O(s,V(s,p)))),m.push({osuFirmware:o,finalFirmware:p,shouldFlashMcu:v}),o=(await a(L(t,h,p))).extractNullable()}return m}).run(),n=t=>new u.ResolveOsUpdatePathError(t),F=t=>t.getManagerApiService().getMcuList().map(r=>r.map(e=>({id:e.id,name:e.name,fromBootloaderVersion:e.fromBootloaderVersion}))).mapLeft(n),O=(t,r)=>i.Maybe.fromNullable(t.find(e=>e.name===r)).map(e=>e.id).toEither(new u.ResolveOsUpdatePathError(`No MCU firmware found for version ${r}`)),V=(t,r)=>t.filter(e=>r.mcuVersions.includes(e.id)).reduce((e,a)=>{const s=(0,l.coerce)(a.name)?.version;return s&&(!e||(0,l.compare)(s,e.version)>0)?{name:a.name,version:s}:e},null)?.name??null,M=(t,r)=>t.getManagerApiService().getDeviceVersion(r).mapLeft(n),P=(t,r,e)=>{const a=t.getManagerApiService();return r.isOsu?a.getOsuFirmwareVersion(r,e).map(i.Just).mapLeft(n):a.getFirmwareVersion(r,e).chain(s=>a.getLatestFirmwareVersion(s,e)).mapLeft(n)},I=(t,r)=>t.getManagerApiService().getNextFirmwareVersion(r).map(e=>({id:e.id,perso:e.perso,version:e.version,bytes:e.bytes,firmware:e.firmware,firmwareKey:e.firmwareKey,hash:e.hash,mcuVersions:e.mcuVersions})).mapLeft(n),L=(t,r,e)=>t.getManagerApiService().getLatestFirmwareVersion(e,r).mapLeft(n);0&&(module.exports={resolveOsUpdatePath});
1
+ "use strict";var c=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var R=(r,t)=>{for(var e in t)c(r,e,{get:t[e],enumerable:!0})},A=(r,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of U(t))!y.call(r,s)&&s!==e&&c(r,s,{get:()=>t[s],enumerable:!(a=w(t,s))||a.enumerable});return r};var E=r=>A(c({},"__esModule",{value:!0}),r);var L={};R(L,{resolveOsUpdatePath:()=>f});module.exports=E(L);var o=require("purify-ts"),d=require("../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors"),O=require("../../../../device-action/OsUpdate/Shared/OsUpdateUtils");const M=5,f=r=>({input:{getOsVersionResponse:t}})=>(0,o.EitherAsync)(async({liftEither:e,fromPromise:a})=>{const s=await a(P(r));let m=await e(v(s,t.mcuSephVersion));const u=await a(F(r,t));let n=(await a(V(r,t,u))).extractNullable();const l=[];for(;n&&l.length<M;){const p=await a(I(r,n)),h=!p.mcuVersions.includes(m);if(h){const g=r.getManagerApiService().getProvider();m=await e(v(s,(0,O.bestCompatibleMcu)(s,p,g)?.name??null))}l.push({osuFirmware:n,finalFirmware:p,shouldFlashMcu:h}),n=(await a(b(r,u,p))).extractNullable()}return l}).run(),i=r=>new d.ResolveOsUpdatePathError(r),P=r=>r.getManagerApiService().getMcuList().map(t=>t.map(e=>({id:e.id,name:e.name,fromBootloaderVersion:e.fromBootloaderVersion,providers:e.providers}))).mapLeft(i),v=(r,t)=>o.Maybe.fromNullable(r.find(e=>e.name===t)).map(e=>e.id).toEither(new d.ResolveOsUpdatePathError(`No MCU firmware found for version ${t}`)),F=(r,t)=>r.getManagerApiService().getDeviceVersion(t).mapLeft(i),V=(r,t,e)=>{const a=r.getManagerApiService();return t.isOsu?a.getOsuFirmwareVersion(t,e).map(o.Just).mapLeft(i):a.getFirmwareVersion(t,e).chain(s=>a.getLatestFirmwareVersion(s,e)).mapLeft(i)},I=(r,t)=>r.getManagerApiService().getNextFirmwareVersion(t).map(e=>({id:e.id,perso:e.perso,version:e.version,bytes:e.bytes,firmware:e.firmware,firmwareKey:e.firmwareKey,hash:e.hash,mcuVersions:e.mcuVersions})).mapLeft(i),b=(r,t,e)=>r.getManagerApiService().getLatestFirmwareVersion(e,t).mapLeft(i);0&&(module.exports={resolveOsUpdatePath});
2
2
  //# sourceMappingURL=ResolveOsUpdatePath.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.ts"],
4
- "sourcesContent": ["import {\n type GetOsVersionResponse,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Just, Maybe } from \"purify-ts\";\nimport { coerce, compare } from \"semver\";\n\nimport { ResolveOsUpdatePathError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport {\n type FinalFirmware,\n type McuFirmware,\n type OsuFirmware,\n type OsUpdate,\n} from \"@api/device-action/OsUpdate/Resolve/types\";\n\ntype ResolveOsUpdatePathHandlerInput = {\n getOsVersionResponse: GetOsVersionResponse;\n};\n\ntype ResolveOsUpdatePathHandlerResponse = Promise<\n Either<ResolveOsUpdatePathError, OsUpdate[]>\n>;\n\ntype ResolveOsUpdatePathHandler = ({\n input,\n}: {\n input: ResolveOsUpdatePathHandlerInput;\n}) => ResolveOsUpdatePathHandlerResponse;\n\ntype DeviceVersion = {\n id: number;\n};\n\n/**\n * Limit the number of OS updates to 5 to avoid infinite loops.\n * In practice, it should never be more than that.\n */\nconst MAX_OS_UPDATES_LIMIT = 5;\n\nexport const resolveOsUpdatePath =\n (internalApi: InternalApi): ResolveOsUpdatePathHandler =>\n ({ input: { getOsVersionResponse } }): ResolveOsUpdatePathHandlerResponse =>\n EitherAsync<ResolveOsUpdatePathError, OsUpdate[]>(\n async ({ liftEither, fromPromise }) => {\n const mcuList = await fromPromise(getMcuList(internalApi));\n let mcuId = await liftEither(\n resolveMcuId(mcuList, getOsVersionResponse.mcuSephVersion),\n );\n const deviceVersion = await fromPromise(\n getDeviceVersion(internalApi, getOsVersionResponse),\n );\n let osuFirmware = (\n await fromPromise(\n getOsuFirmware(internalApi, getOsVersionResponse, deviceVersion),\n )\n ).extractNullable();\n\n const osUpdates: OsUpdate[] = [];\n\n while (osuFirmware && osUpdates.length < MAX_OS_UPDATES_LIMIT) {\n const finalFirmware = await fromPromise(\n getNextFirmware(internalApi, osuFirmware),\n );\n const shouldFlashMcu = !finalFirmware.mcuVersions.includes(mcuId);\n\n if (shouldFlashMcu) {\n mcuId = await liftEither(\n resolveMcuId(\n mcuList,\n latestCompatibleMcuName(mcuList, finalFirmware),\n ),\n );\n }\n\n osUpdates.push({ osuFirmware, finalFirmware, shouldFlashMcu });\n\n osuFirmware = (\n await fromPromise(\n getNextOsuFirmware(internalApi, deviceVersion, finalFirmware),\n )\n ).extractNullable();\n }\n\n return osUpdates;\n },\n ).run();\n\nconst toResolveOsUpdatePathError = (error: unknown): ResolveOsUpdatePathError =>\n new ResolveOsUpdatePathError(error);\n\nconst getMcuList = (\n internalApi: InternalApi,\n): EitherAsync<ResolveOsUpdatePathError, McuFirmware[]> =>\n internalApi\n .getManagerApiService()\n .getMcuList()\n .map((mcuList) =>\n mcuList.map((mcu) => ({\n id: mcu.id,\n name: mcu.name,\n fromBootloaderVersion: mcu.fromBootloaderVersion,\n })),\n )\n .mapLeft(toResolveOsUpdatePathError);\n\nconst resolveMcuId = (\n mcuList: McuFirmware[],\n mcuName: string | null,\n): Either<ResolveOsUpdatePathError, number> =>\n Maybe.fromNullable(mcuList.find((mcu) => mcu.name === mcuName))\n .map((mcu) => mcu.id)\n .toEither(\n new ResolveOsUpdatePathError(\n `No MCU firmware found for version ${mcuName}`,\n ),\n );\n\nconst latestCompatibleMcuName = (\n mcuList: McuFirmware[],\n finalFirmware: FinalFirmware,\n): string | null =>\n mcuList\n .filter((mcu) => finalFirmware.mcuVersions.includes(mcu.id))\n .reduce<{ name: string; version: string } | null>((latestMcu, mcu) => {\n const version = coerce(mcu.name)?.version;\n\n if (!version) {\n return latestMcu;\n }\n\n if (!latestMcu || compare(version, latestMcu.version) > 0) {\n return { name: mcu.name, version };\n }\n\n return latestMcu;\n }, null)?.name ?? null;\n\nconst getDeviceVersion = (\n internalApi: InternalApi,\n getOsVersionResponse: GetOsVersionResponse,\n): EitherAsync<ResolveOsUpdatePathError, DeviceVersion> => {\n const managerApi = internalApi.getManagerApiService();\n return managerApi\n .getDeviceVersion(getOsVersionResponse)\n .mapLeft(toResolveOsUpdatePathError);\n};\n\nconst getOsuFirmware = (\n internalApi: InternalApi,\n getOsVersionResponse: GetOsVersionResponse,\n deviceVersion: DeviceVersion,\n): EitherAsync<ResolveOsUpdatePathError, Maybe<OsuFirmware>> => {\n const managerApi = internalApi.getManagerApiService();\n return getOsVersionResponse.isOsu\n ? managerApi\n .getOsuFirmwareVersion(getOsVersionResponse, deviceVersion)\n .map(Just)\n .mapLeft(toResolveOsUpdatePathError)\n : managerApi\n .getFirmwareVersion(getOsVersionResponse, deviceVersion)\n .chain((firmwareVersion) =>\n managerApi.getLatestFirmwareVersion(firmwareVersion, deviceVersion),\n )\n .mapLeft(toResolveOsUpdatePathError);\n};\n\nconst getNextFirmware = (\n internalApi: InternalApi,\n osuFirmware: OsuFirmware,\n): EitherAsync<ResolveOsUpdatePathError, FinalFirmware> =>\n internalApi\n .getManagerApiService()\n .getNextFirmwareVersion(osuFirmware)\n .map((nextFirmware) => ({\n id: nextFirmware.id,\n perso: nextFirmware.perso,\n version: nextFirmware.version,\n bytes: nextFirmware.bytes,\n firmware: nextFirmware.firmware,\n firmwareKey: nextFirmware.firmwareKey,\n hash: nextFirmware.hash,\n mcuVersions: nextFirmware.mcuVersions,\n }))\n .mapLeft(toResolveOsUpdatePathError);\n\nconst getNextOsuFirmware = (\n internalApi: InternalApi,\n deviceVersion: DeviceVersion,\n finalFirmware: FinalFirmware,\n): EitherAsync<ResolveOsUpdatePathError, Maybe<OsuFirmware>> => {\n const managerApi = internalApi.getManagerApiService();\n return managerApi\n .getLatestFirmwareVersion(finalFirmware, deviceVersion)\n .mapLeft(toResolveOsUpdatePathError);\n};\n"],
5
- "mappings": "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",
6
- "names": ["ResolveOsUpdatePath_exports", "__export", "resolveOsUpdatePath", "__toCommonJS", "import_purify_ts", "import_semver", "import_ResolveOsUpdatePathDeviceActionErrors", "MAX_OS_UPDATES_LIMIT", "internalApi", "getOsVersionResponse", "liftEither", "fromPromise", "mcuList", "getMcuList", "mcuId", "resolveMcuId", "deviceVersion", "getDeviceVersion", "osuFirmware", "getOsuFirmware", "osUpdates", "finalFirmware", "getNextFirmware", "shouldFlashMcu", "latestCompatibleMcuName", "getNextOsuFirmware", "toResolveOsUpdatePathError", "error", "mcu", "mcuName", "latestMcu", "version", "managerApi", "firmwareVersion", "nextFirmware"]
4
+ "sourcesContent": ["import {\n type GetOsVersionResponse,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Just, Maybe } from \"purify-ts\";\n\nimport { ResolveOsUpdatePathError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { bestCompatibleMcu } from \"@api/device-action/OsUpdate/Shared/OsUpdateUtils\";\nimport {\n type FinalFirmware,\n type McuFirmware,\n type OsuFirmware,\n type OsUpdate,\n} from \"@api/device-action/OsUpdate/Shared/types\";\n\ntype ResolveOsUpdatePathHandlerInput = {\n getOsVersionResponse: GetOsVersionResponse;\n};\n\ntype ResolveOsUpdatePathHandlerResponse = Promise<\n Either<ResolveOsUpdatePathError, OsUpdate[]>\n>;\n\ntype ResolveOsUpdatePathHandler = ({\n input,\n}: {\n input: ResolveOsUpdatePathHandlerInput;\n}) => ResolveOsUpdatePathHandlerResponse;\n\ntype DeviceVersion = {\n id: number;\n};\n\n/**\n * Limit the number of OS updates to 5 to avoid infinite loops.\n * In practice, it should never be more than that.\n */\nconst MAX_OS_UPDATES_LIMIT = 5;\n\nexport const resolveOsUpdatePath =\n (internalApi: InternalApi): ResolveOsUpdatePathHandler =>\n ({ input: { getOsVersionResponse } }): ResolveOsUpdatePathHandlerResponse =>\n EitherAsync<ResolveOsUpdatePathError, OsUpdate[]>(\n async ({ liftEither, fromPromise }) => {\n const mcuList = await fromPromise(getMcuList(internalApi));\n let mcuId = await liftEither(\n resolveMcuId(mcuList, getOsVersionResponse.mcuSephVersion),\n );\n const deviceVersion = await fromPromise(\n getDeviceVersion(internalApi, getOsVersionResponse),\n );\n let osuFirmware = (\n await fromPromise(\n getOsuFirmware(internalApi, getOsVersionResponse, deviceVersion),\n )\n ).extractNullable();\n\n const osUpdates: OsUpdate[] = [];\n\n while (osuFirmware && osUpdates.length < MAX_OS_UPDATES_LIMIT) {\n const finalFirmware = await fromPromise(\n getNextFirmware(internalApi, osuFirmware),\n );\n const shouldFlashMcu = !finalFirmware.mcuVersions.includes(mcuId);\n\n if (shouldFlashMcu) {\n const provider = internalApi.getManagerApiService().getProvider();\n mcuId = await liftEither(\n resolveMcuId(\n mcuList,\n bestCompatibleMcu(mcuList, finalFirmware, provider)?.name ??\n null,\n ),\n );\n }\n\n osUpdates.push({ osuFirmware, finalFirmware, shouldFlashMcu });\n\n osuFirmware = (\n await fromPromise(\n getNextOsuFirmware(internalApi, deviceVersion, finalFirmware),\n )\n ).extractNullable();\n }\n\n return osUpdates;\n },\n ).run();\n\nconst toResolveOsUpdatePathError = (error: unknown): ResolveOsUpdatePathError =>\n new ResolveOsUpdatePathError(error);\n\nconst getMcuList = (\n internalApi: InternalApi,\n): EitherAsync<ResolveOsUpdatePathError, McuFirmware[]> =>\n internalApi\n .getManagerApiService()\n .getMcuList()\n .map((mcuList) =>\n mcuList.map((mcu) => ({\n id: mcu.id,\n name: mcu.name,\n fromBootloaderVersion: mcu.fromBootloaderVersion,\n providers: mcu.providers,\n })),\n )\n .mapLeft(toResolveOsUpdatePathError);\n\nconst resolveMcuId = (\n mcuList: McuFirmware[],\n mcuName: string | null,\n): Either<ResolveOsUpdatePathError, number> =>\n Maybe.fromNullable(mcuList.find((mcu) => mcu.name === mcuName))\n .map((mcu) => mcu.id)\n .toEither(\n new ResolveOsUpdatePathError(\n `No MCU firmware found for version ${mcuName}`,\n ),\n );\n\nconst getDeviceVersion = (\n internalApi: InternalApi,\n getOsVersionResponse: GetOsVersionResponse,\n): EitherAsync<ResolveOsUpdatePathError, DeviceVersion> => {\n const managerApi = internalApi.getManagerApiService();\n return managerApi\n .getDeviceVersion(getOsVersionResponse)\n .mapLeft(toResolveOsUpdatePathError);\n};\n\nconst getOsuFirmware = (\n internalApi: InternalApi,\n getOsVersionResponse: GetOsVersionResponse,\n deviceVersion: DeviceVersion,\n): EitherAsync<ResolveOsUpdatePathError, Maybe<OsuFirmware>> => {\n const managerApi = internalApi.getManagerApiService();\n return getOsVersionResponse.isOsu\n ? managerApi\n .getOsuFirmwareVersion(getOsVersionResponse, deviceVersion)\n .map(Just)\n .mapLeft(toResolveOsUpdatePathError)\n : managerApi\n .getFirmwareVersion(getOsVersionResponse, deviceVersion)\n .chain((firmwareVersion) =>\n managerApi.getLatestFirmwareVersion(firmwareVersion, deviceVersion),\n )\n .mapLeft(toResolveOsUpdatePathError);\n};\n\nconst getNextFirmware = (\n internalApi: InternalApi,\n osuFirmware: OsuFirmware,\n): EitherAsync<ResolveOsUpdatePathError, FinalFirmware> =>\n internalApi\n .getManagerApiService()\n .getNextFirmwareVersion(osuFirmware)\n .map((nextFirmware) => ({\n id: nextFirmware.id,\n perso: nextFirmware.perso,\n version: nextFirmware.version,\n bytes: nextFirmware.bytes,\n firmware: nextFirmware.firmware,\n firmwareKey: nextFirmware.firmwareKey,\n hash: nextFirmware.hash,\n mcuVersions: nextFirmware.mcuVersions,\n }))\n .mapLeft(toResolveOsUpdatePathError);\n\nconst getNextOsuFirmware = (\n internalApi: InternalApi,\n deviceVersion: DeviceVersion,\n finalFirmware: FinalFirmware,\n): EitherAsync<ResolveOsUpdatePathError, Maybe<OsuFirmware>> => {\n const managerApi = internalApi.getManagerApiService();\n return managerApi\n .getLatestFirmwareVersion(finalFirmware, deviceVersion)\n .mapLeft(toResolveOsUpdatePathError);\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAIA,IAAAI,EAAsD,qBAEtDC,EAAyC,qFACzCC,EAAkC,4DA8BlC,MAAMC,EAAuB,EAEhBL,EACVM,GACD,CAAC,CAAE,MAAO,CAAE,qBAAAC,CAAqB,CAAE,OACjC,eACE,MAAO,CAAE,WAAAC,EAAY,YAAAC,CAAY,IAAM,CACrC,MAAMC,EAAU,MAAMD,EAAYE,EAAWL,CAAW,CAAC,EACzD,IAAIM,EAAQ,MAAMJ,EAChBK,EAAaH,EAASH,EAAqB,cAAc,CAC3D,EACA,MAAMO,EAAgB,MAAML,EAC1BM,EAAiBT,EAAaC,CAAoB,CACpD,EACA,IAAIS,GACF,MAAMP,EACJQ,EAAeX,EAAaC,EAAsBO,CAAa,CACjE,GACA,gBAAgB,EAElB,MAAMI,EAAwB,CAAC,EAE/B,KAAOF,GAAeE,EAAU,OAASb,GAAsB,CAC7D,MAAMc,EAAgB,MAAMV,EAC1BW,EAAgBd,EAAaU,CAAW,CAC1C,EACMK,EAAiB,CAACF,EAAc,YAAY,SAASP,CAAK,EAEhE,GAAIS,EAAgB,CAClB,MAAMC,EAAWhB,EAAY,qBAAqB,EAAE,YAAY,EAChEM,EAAQ,MAAMJ,EACZK,EACEH,KACA,qBAAkBA,EAASS,EAAeG,CAAQ,GAAG,MACnD,IACJ,CACF,CACF,CAEAJ,EAAU,KAAK,CAAE,YAAAF,EAAa,cAAAG,EAAe,eAAAE,CAAe,CAAC,EAE7DL,GACE,MAAMP,EACJc,EAAmBjB,EAAaQ,EAAeK,CAAa,CAC9D,GACA,gBAAgB,CACpB,CAEA,OAAOD,CACT,CACF,EAAE,IAAI,EAEJM,EAA8BC,GAClC,IAAI,2BAAyBA,CAAK,EAE9Bd,EACJL,GAEAA,EACG,qBAAqB,EACrB,WAAW,EACX,IAAKI,GACJA,EAAQ,IAAKgB,IAAS,CACpB,GAAIA,EAAI,GACR,KAAMA,EAAI,KACV,sBAAuBA,EAAI,sBAC3B,UAAWA,EAAI,SACjB,EAAE,CACJ,EACC,QAAQF,CAA0B,EAEjCX,EAAe,CACnBH,EACAiB,IAEA,QAAM,aAAajB,EAAQ,KAAMgB,GAAQA,EAAI,OAASC,CAAO,CAAC,EAC3D,IAAKD,GAAQA,EAAI,EAAE,EACnB,SACC,IAAI,2BACF,qCAAqCC,CAAO,EAC9C,CACF,EAEEZ,EAAmB,CACvBT,EACAC,IAEmBD,EAAY,qBAAqB,EAEjD,iBAAiBC,CAAoB,EACrC,QAAQiB,CAA0B,EAGjCP,EAAiB,CACrBX,EACAC,EACAO,IAC8D,CAC9D,MAAMc,EAAatB,EAAY,qBAAqB,EACpD,OAAOC,EAAqB,MACxBqB,EACG,sBAAsBrB,EAAsBO,CAAa,EACzD,IAAI,MAAI,EACR,QAAQU,CAA0B,EACrCI,EACG,mBAAmBrB,EAAsBO,CAAa,EACtD,MAAOe,GACND,EAAW,yBAAyBC,EAAiBf,CAAa,CACpE,EACC,QAAQU,CAA0B,CAC3C,EAEMJ,EAAkB,CACtBd,EACAU,IAEAV,EACG,qBAAqB,EACrB,uBAAuBU,CAAW,EAClC,IAAKc,IAAkB,CACtB,GAAIA,EAAa,GACjB,MAAOA,EAAa,MACpB,QAASA,EAAa,QACtB,MAAOA,EAAa,MACpB,SAAUA,EAAa,SACvB,YAAaA,EAAa,YAC1B,KAAMA,EAAa,KACnB,YAAaA,EAAa,WAC5B,EAAE,EACD,QAAQN,CAA0B,EAEjCD,EAAqB,CACzBjB,EACAQ,EACAK,IAEmBb,EAAY,qBAAqB,EAEjD,yBAAyBa,EAAeL,CAAa,EACrD,QAAQU,CAA0B",
6
+ "names": ["ResolveOsUpdatePath_exports", "__export", "resolveOsUpdatePath", "__toCommonJS", "import_purify_ts", "import_ResolveOsUpdatePathDeviceActionErrors", "import_OsUpdateUtils", "MAX_OS_UPDATES_LIMIT", "internalApi", "getOsVersionResponse", "liftEither", "fromPromise", "mcuList", "getMcuList", "mcuId", "resolveMcuId", "deviceVersion", "getDeviceVersion", "osuFirmware", "getOsuFirmware", "osUpdates", "finalFirmware", "getNextFirmware", "shouldFlashMcu", "provider", "getNextOsuFirmware", "toResolveOsUpdatePathError", "error", "mcu", "mcuName", "managerApi", "firmwareVersion", "nextFirmware"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=require("purify-ts"),V=require("../../../../device-action/__test-utils__/makeInternalApi"),f=require("../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors"),c=require("../../../../device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath");const r=i=>(0,s.EitherAsync)(()=>Promise.resolve(i)),g=i=>(0,s.EitherAsync)(({throwE:n})=>Promise.resolve(n(i)));describe("ResolveOsUpdatePath",()=>{const i=(0,V.makeDeviceActionInternalApiMock)(),n={isBootloader:!1,isOsu:!1,targetId:857735172,seTargetId:857735172,mcuTargetId:void 0,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"1.0.0",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:0,recoverState:void 0,secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}},l={id:17,target_id:"857735172",name:"Ledger Stax"},p={id:100,version:"1.3.0",perso:"perso",firmware:null,firmwareKey:null,hash:null,bytes:null,mcuVersions:[1]},o={id:200,notes:"Update notes",perso:"perso",firmware:"osu",firmwareKey:"osu-key",hash:"osu-hash",nextFinalFirmware:300},w={...o,id:201,nextFinalFirmware:301},u={id:300,version:"1.4.0",perso:"perso",firmware:"final",firmwareKey:"final-key",hash:"final-hash",bytes:123,mcuVersions:[1]},d={...u,id:301,version:"1.5.0",mcuVersions:[3]},F=[{id:1,name:"1.0.0",fromBootloaderVersion:"0.0"},{id:3,name:"3.0.0",fromBootloaderVersion:"0.0"}],e={getMcuList:vi.fn(),getDeviceVersion:vi.fn(),getFirmwareVersion:vi.fn(),getOsuFirmwareVersion:vi.fn(),getLatestFirmwareVersion:vi.fn(),getNextFirmwareVersion:vi.fn()};beforeEach(()=>{vi.resetAllMocks(),i.getManagerApiService.mockReturnValue(e),e.getMcuList.mockReturnValue(r(F)),e.getDeviceVersion.mockReturnValue(r(l)),e.getFirmwareVersion.mockReturnValue(r(p)),e.getLatestFirmwareVersion.mockReturnValue(r((0,s.Just)(o))),e.getOsuFirmwareVersion.mockReturnValue(r(o)),e.getNextFirmwareVersion.mockReturnValue(r(u))}),describe("Success",()=>{it("Should return an empty update path when no firmware update is available",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r(s.Nothing));const t=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:n}});expect(t.extract()).toEqual([]),expect(e.getDeviceVersion).toHaveBeenCalledWith(n),expect(e.getFirmwareVersion).toHaveBeenCalledWith(n,l),expect(e.getLatestFirmwareVersion).toHaveBeenCalledWith(p,l),expect(e.getNextFirmwareVersion).not.toHaveBeenCalled()}),it("Should resolve a single update without MCU flash when the final firmware supports the current MCU",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(o))).mockReturnValueOnce(r(s.Nothing));const t=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:n}});expect(t.extract()).toEqual([{osuFirmware:o,finalFirmware:u,shouldFlashMcu:!1}])}),it("Should resolve OSU mode from the OSU firmware endpoint",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r(s.Nothing));const t={...n,isOsu:!0},a=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:t}});expect(a.extract()).toEqual([{osuFirmware:o,finalFirmware:u,shouldFlashMcu:!1}]),expect(e.getOsuFirmwareVersion).toHaveBeenCalledWith(t,l),expect(e.getFirmwareVersion).not.toHaveBeenCalled()}),it("Should resolve multiple updates and flag the one requiring an MCU flash",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(o))).mockReturnValueOnce(r((0,s.Just)(w))).mockReturnValueOnce(r(s.Nothing)),e.getNextFirmwareVersion.mockReturnValueOnce(r(u)).mockReturnValueOnce(r(d));const t=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:n}});expect(t.extract()).toEqual([{osuFirmware:o,finalFirmware:u,shouldFlashMcu:!1},{osuFirmware:w,finalFirmware:d,shouldFlashMcu:!0}]),expect(e.getDeviceVersion).toHaveBeenCalledTimes(1),expect(e.getLatestFirmwareVersion).toHaveBeenNthCalledWith(2,u,l)}),it("Should resolve the latest compatible MCU when MCU names are not strict semver",async()=>{const t=[{id:1,name:"1.0",fromBootloaderVersion:"0.0"},{id:2,name:"1.1",fromBootloaderVersion:"0.0"},{id:3,name:"1.2",fromBootloaderVersion:"0.0"}],a={...u,mcuVersions:[2,3]},m={...d,mcuVersions:[3]};e.getMcuList.mockReturnValueOnce(r(t)),e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(o))).mockReturnValueOnce(r((0,s.Just)(w))).mockReturnValueOnce(r(s.Nothing)),e.getNextFirmwareVersion.mockReturnValueOnce(r(a)).mockReturnValueOnce(r(m));const h=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:{...n,mcuSephVersion:"1.0"}}});expect(h.extract()).toEqual([{osuFirmware:o,finalFirmware:a,shouldFlashMcu:!0},{osuFirmware:w,finalFirmware:m,shouldFlashMcu:!1}])})}),describe("Error",()=>{it("Should return ResolveOsUpdatePathError when the MCU list cannot be fetched",async()=>{const t=new Error("mcu list failed");e.getMcuList.mockReturnValueOnce(g(t));const a=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:n}});expect(a.isLeft()).toBe(!0),a.mapLeft(m=>{expect(m).toBeInstanceOf(f.ResolveOsUpdatePathError),expect(m.originalError).toBe(t)})}),it("Should return ResolveOsUpdatePathError when the current MCU version is unknown",async()=>{const t=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:{...n,mcuSephVersion:"9.9.9"}}});expect(t.isLeft()).toBe(!0),t.mapLeft(a=>{expect(a).toBeInstanceOf(f.ResolveOsUpdatePathError),expect(a.originalError).toBe("No MCU firmware found for version 9.9.9")})}),it("Should return ResolveOsUpdatePathError when no compatible MCU can be resolved for the next firmware",async()=>{e.getNextFirmwareVersion.mockReturnValueOnce(r({...u,mcuVersions:[42]}));const t=await(0,c.resolveOsUpdatePath)(i)({input:{getOsVersionResponse:n}});expect(t.isLeft()).toBe(!0),t.mapLeft(a=>{expect(a).toBeInstanceOf(f.ResolveOsUpdatePathError),expect(a.originalError).toBe("No MCU firmware found for version null")})})})});
1
+ "use strict";var s=require("purify-ts"),F=require("../../../../device-action/__test-utils__/makeInternalApi"),p=require("../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors"),c=require("../../../../device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath");const r=d=>(0,s.EitherAsync)(()=>Promise.resolve(d)),v=d=>(0,s.EitherAsync)(({throwE:a})=>Promise.resolve(a(d)));describe("ResolveOsUpdatePath",()=>{const a=(0,F.makeDeviceActionInternalApiMock)(),o={isBootloader:!1,isOsu:!1,targetId:857735172,seTargetId:857735172,mcuTargetId:void 0,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"1.0.0",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:0,recoverState:void 0,secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}},l={id:17,target_id:"857735172",name:"Ledger Stax"},V={id:100,version:"1.3.0",perso:"perso",firmware:null,firmwareKey:null,hash:null,bytes:null,mcuVersions:[1]},n={id:200,notes:"Update notes",perso:"perso",firmware:"osu",firmwareKey:"osu-key",hash:"osu-hash",nextFinalFirmware:300},w={...n,id:201,nextFinalFirmware:301},u={id:300,version:"1.4.0",perso:"perso",firmware:"final",firmwareKey:"final-key",hash:"final-hash",bytes:123,mcuVersions:[1]},f={...u,id:301,version:"1.5.0",mcuVersions:[3]},h=[{id:1,name:"1.0.0",fromBootloaderVersion:"0.0",providers:[1]},{id:3,name:"3.0.0",fromBootloaderVersion:"0.0",providers:[1,2]}],e={getMcuList:vi.fn(),getDeviceVersion:vi.fn(),getFirmwareVersion:vi.fn(),getOsuFirmwareVersion:vi.fn(),getLatestFirmwareVersion:vi.fn(),getNextFirmwareVersion:vi.fn(),getProvider:vi.fn()};beforeEach(()=>{vi.resetAllMocks(),a.getManagerApiService.mockReturnValue(e),e.getMcuList.mockReturnValue(r(h)),e.getDeviceVersion.mockReturnValue(r(l)),e.getFirmwareVersion.mockReturnValue(r(V)),e.getLatestFirmwareVersion.mockReturnValue(r((0,s.Just)(n))),e.getOsuFirmwareVersion.mockReturnValue(r(n)),e.getNextFirmwareVersion.mockReturnValue(r(u)),e.getProvider.mockReturnValue(1)}),describe("Success",()=>{it("Should return an empty update path when no firmware update is available",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r(s.Nothing));const t=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:o}});expect(t.extract()).toEqual([]),expect(e.getDeviceVersion).toHaveBeenCalledWith(o),expect(e.getFirmwareVersion).toHaveBeenCalledWith(o,l),expect(e.getLatestFirmwareVersion).toHaveBeenCalledWith(V,l),expect(e.getNextFirmwareVersion).not.toHaveBeenCalled()}),it("Should resolve a single update without MCU flash when the final firmware supports the current MCU",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(n))).mockReturnValueOnce(r(s.Nothing));const t=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:o}});expect(t.extract()).toEqual([{osuFirmware:n,finalFirmware:u,shouldFlashMcu:!1}])}),it("Should resolve OSU mode from the OSU firmware endpoint",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r(s.Nothing));const t={...o,isOsu:!0},i=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:t}});expect(i.extract()).toEqual([{osuFirmware:n,finalFirmware:u,shouldFlashMcu:!1}]),expect(e.getOsuFirmwareVersion).toHaveBeenCalledWith(t,l),expect(e.getFirmwareVersion).not.toHaveBeenCalled()}),it("Should resolve multiple updates and flag the one requiring an MCU flash",async()=>{e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(n))).mockReturnValueOnce(r((0,s.Just)(w))).mockReturnValueOnce(r(s.Nothing)),e.getNextFirmwareVersion.mockReturnValueOnce(r(u)).mockReturnValueOnce(r(f));const t=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:o}});expect(t.extract()).toEqual([{osuFirmware:n,finalFirmware:u,shouldFlashMcu:!1},{osuFirmware:w,finalFirmware:f,shouldFlashMcu:!0}]),expect(e.getDeviceVersion).toHaveBeenCalledTimes(1),expect(e.getLatestFirmwareVersion).toHaveBeenNthCalledWith(2,u,l)}),it("Should resolve the latest compatible MCU when MCU names are not strict semver",async()=>{const t=[{id:1,name:"1.0",fromBootloaderVersion:"0.0",providers:[1]},{id:2,name:"1.1",fromBootloaderVersion:"0.0",providers:[1,2]},{id:3,name:"1.2",fromBootloaderVersion:"0.0",providers:[1,2,3]}],i={...u,mcuVersions:[2,3]},m={...f,mcuVersions:[3]};e.getMcuList.mockReturnValueOnce(r(t)),e.getLatestFirmwareVersion.mockReturnValueOnce(r((0,s.Just)(n))).mockReturnValueOnce(r((0,s.Just)(w))).mockReturnValueOnce(r(s.Nothing)),e.getNextFirmwareVersion.mockReturnValueOnce(r(i)).mockReturnValueOnce(r(m));const g=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:{...o,mcuSephVersion:"1.0"}}});expect(g.extract()).toEqual([{osuFirmware:n,finalFirmware:i,shouldFlashMcu:!0},{osuFirmware:w,finalFirmware:m,shouldFlashMcu:!1}])})}),describe("Error",()=>{it("Should return ResolveOsUpdatePathError when the MCU list cannot be fetched",async()=>{const t=new Error("mcu list failed");e.getMcuList.mockReturnValueOnce(v(t));const i=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:o}});expect(i.isLeft()).toBe(!0),i.mapLeft(m=>{expect(m).toBeInstanceOf(p.ResolveOsUpdatePathError),expect(m.originalError).toBe(t)})}),it("Should return ResolveOsUpdatePathError when the current MCU version is unknown",async()=>{const t=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:{...o,mcuSephVersion:"9.9.9"}}});expect(t.isLeft()).toBe(!0),t.mapLeft(i=>{expect(i).toBeInstanceOf(p.ResolveOsUpdatePathError),expect(i.originalError).toBe("No MCU firmware found for version 9.9.9")})}),it("Should return ResolveOsUpdatePathError when no compatible MCU can be resolved for the next firmware",async()=>{e.getNextFirmwareVersion.mockReturnValueOnce(r({...u,mcuVersions:[42]}));const t=await(0,c.resolveOsUpdatePath)(a)({input:{getOsVersionResponse:o}});expect(t.isLeft()).toBe(!0),t.mapLeft(i=>{expect(i).toBeInstanceOf(p.ResolveOsUpdatePathError),expect(i.originalError).toBe("No MCU firmware found for version null")})})})});
2
2
  //# sourceMappingURL=ResolveOsUpdatePath.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.ts"],
4
- "sourcesContent": ["import { type GetOsVersionResponse } from \"@ledgerhq/device-management-kit\";\nimport { EitherAsync, Just, Nothing } from \"purify-ts\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { ResolveOsUpdatePathError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { resolveOsUpdatePath } from \"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\";\nimport {\n type FinalFirmware,\n type McuFirmware,\n type OsuFirmware,\n} from \"@api/device-action/OsUpdate/Resolve/types\";\n\nconst rightAsync = <T>(value: T) =>\n EitherAsync<unknown, T>(() => Promise.resolve(value));\n\nconst leftAsync = (error: unknown) =>\n EitherAsync<unknown, never>(({ throwE }) => Promise.resolve(throwE(error)));\n\ndescribe(\"ResolveOsUpdatePath\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n const getOsVersionResponse = {\n isBootloader: false,\n isOsu: false,\n targetId: 0x33200004,\n seTargetId: 0x33200004,\n mcuTargetId: undefined,\n seVersion: \"1.3.0\",\n seFlags: new Uint8Array([0xe6, 0x00, 0x00, 0x00]),\n mcuSephVersion: \"1.0.0\",\n mcuBootloaderVersion: \"0.48\",\n hwVersion: \"00\",\n langId: 0,\n recoverState: undefined,\n secureElementFlags: {\n isPinValidated: true,\n hasMcuSerialNumber: true,\n hasValidCertificate: true,\n isCustomAuthorityConnectionAllowed: false,\n isSecureConnectionAllowed: false,\n isOnboarded: true,\n isMcuCodeSigned: true,\n isInRecoveryMode: false,\n },\n } satisfies GetOsVersionResponse;\n\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n name: \"Ledger Stax\",\n };\n\n const currentFirmware = {\n id: 100,\n version: \"1.3.0\",\n perso: \"perso\",\n firmware: null,\n firmwareKey: null,\n hash: null,\n bytes: null,\n mcuVersions: [1],\n } satisfies FinalFirmware;\n\n const firstOsuFirmware = {\n id: 200,\n notes: \"Update notes\",\n perso: \"perso\",\n firmware: \"osu\",\n firmwareKey: \"osu-key\",\n hash: \"osu-hash\",\n nextFinalFirmware: 300,\n } satisfies OsuFirmware;\n\n const secondOsuFirmware = {\n ...firstOsuFirmware,\n id: 201,\n nextFinalFirmware: 301,\n } satisfies OsuFirmware;\n\n const firstFinalFirmware = {\n id: 300,\n version: \"1.4.0\",\n perso: \"perso\",\n firmware: \"final\",\n firmwareKey: \"final-key\",\n hash: \"final-hash\",\n bytes: 123,\n mcuVersions: [1],\n } satisfies FinalFirmware;\n\n const secondFinalFirmware = {\n ...firstFinalFirmware,\n id: 301,\n version: \"1.5.0\",\n mcuVersions: [3],\n } satisfies FinalFirmware;\n\n const mcuList = [\n {\n id: 1,\n name: \"1.0.0\",\n fromBootloaderVersion: \"0.0\",\n },\n {\n id: 3,\n name: \"3.0.0\",\n fromBootloaderVersion: \"0.0\",\n },\n ] satisfies McuFirmware[];\n\n const managerApiMock = {\n getMcuList: vi.fn(),\n getDeviceVersion: vi.fn(),\n getFirmwareVersion: vi.fn(),\n getOsuFirmwareVersion: vi.fn(),\n getLatestFirmwareVersion: vi.fn(),\n getNextFirmwareVersion: vi.fn(),\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.getManagerApiService.mockReturnValue(managerApiMock as never);\n managerApiMock.getMcuList.mockReturnValue(rightAsync(mcuList));\n managerApiMock.getDeviceVersion.mockReturnValue(rightAsync(deviceVersion));\n managerApiMock.getFirmwareVersion.mockReturnValue(\n rightAsync(currentFirmware),\n );\n managerApiMock.getLatestFirmwareVersion.mockReturnValue(\n rightAsync(Just(firstOsuFirmware)),\n );\n managerApiMock.getOsuFirmwareVersion.mockReturnValue(\n rightAsync(firstOsuFirmware),\n );\n managerApiMock.getNextFirmwareVersion.mockReturnValue(\n rightAsync(firstFinalFirmware),\n );\n });\n\n describe(\"Success\", () => {\n it(\"Should return an empty update path when no firmware update is available\", async () => {\n managerApiMock.getLatestFirmwareVersion.mockReturnValueOnce(\n rightAsync(Nothing),\n );\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([]);\n expect(managerApiMock.getDeviceVersion).toHaveBeenCalledWith(\n getOsVersionResponse,\n );\n expect(managerApiMock.getFirmwareVersion).toHaveBeenCalledWith(\n getOsVersionResponse,\n deviceVersion,\n );\n expect(managerApiMock.getLatestFirmwareVersion).toHaveBeenCalledWith(\n currentFirmware,\n deviceVersion,\n );\n expect(managerApiMock.getNextFirmwareVersion).not.toHaveBeenCalled();\n });\n\n it(\"Should resolve a single update without MCU flash when the final firmware supports the current MCU\", async () => {\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n ]);\n });\n\n it(\"Should resolve OSU mode from the OSU firmware endpoint\", async () => {\n managerApiMock.getLatestFirmwareVersion.mockReturnValueOnce(\n rightAsync(Nothing),\n );\n\n const osVersionResponse = {\n ...getOsVersionResponse,\n isOsu: true,\n } satisfies GetOsVersionResponse;\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse: osVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n ]);\n expect(managerApiMock.getOsuFirmwareVersion).toHaveBeenCalledWith(\n osVersionResponse,\n deviceVersion,\n );\n expect(managerApiMock.getFirmwareVersion).not.toHaveBeenCalled();\n });\n\n it(\"Should resolve multiple updates and flag the one requiring an MCU flash\", async () => {\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Just(secondOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n managerApiMock.getNextFirmwareVersion\n .mockReturnValueOnce(rightAsync(firstFinalFirmware))\n .mockReturnValueOnce(rightAsync(secondFinalFirmware));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n {\n osuFirmware: secondOsuFirmware,\n finalFirmware: secondFinalFirmware,\n shouldFlashMcu: true,\n },\n ]);\n expect(managerApiMock.getDeviceVersion).toHaveBeenCalledTimes(1);\n expect(managerApiMock.getLatestFirmwareVersion).toHaveBeenNthCalledWith(\n 2,\n firstFinalFirmware,\n deviceVersion,\n );\n });\n\n it(\"Should resolve the latest compatible MCU when MCU names are not strict semver\", async () => {\n const managerMcuList = [\n {\n id: 1,\n name: \"1.0\",\n fromBootloaderVersion: \"0.0\",\n },\n {\n id: 2,\n name: \"1.1\",\n fromBootloaderVersion: \"0.0\",\n },\n {\n id: 3,\n name: \"1.2\",\n fromBootloaderVersion: \"0.0\",\n },\n ] satisfies McuFirmware[];\n const finalFirmwareRequiringMcuFlash = {\n ...firstFinalFirmware,\n mcuVersions: [2, 3],\n } satisfies FinalFirmware;\n const finalFirmwareSupportingLatestMcu = {\n ...secondFinalFirmware,\n mcuVersions: [3],\n } satisfies FinalFirmware;\n\n managerApiMock.getMcuList.mockReturnValueOnce(rightAsync(managerMcuList));\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Just(secondOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n managerApiMock.getNextFirmwareVersion\n .mockReturnValueOnce(rightAsync(finalFirmwareRequiringMcuFlash))\n .mockReturnValueOnce(rightAsync(finalFirmwareSupportingLatestMcu));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: {\n getOsVersionResponse: {\n ...getOsVersionResponse,\n mcuSephVersion: \"1.0\",\n },\n },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: finalFirmwareRequiringMcuFlash,\n shouldFlashMcu: true,\n },\n {\n osuFirmware: secondOsuFirmware,\n finalFirmware: finalFirmwareSupportingLatestMcu,\n shouldFlashMcu: false,\n },\n ]);\n });\n });\n\n describe(\"Error\", () => {\n it(\"Should return ResolveOsUpdatePathError when the MCU list cannot be fetched\", async () => {\n const error = new Error(\"mcu list failed\");\n managerApiMock.getMcuList.mockReturnValueOnce(leftAsync(error));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(error);\n });\n });\n\n it(\"Should return ResolveOsUpdatePathError when the current MCU version is unknown\", async () => {\n const result = await resolveOsUpdatePath(apiMock)({\n input: {\n getOsVersionResponse: {\n ...getOsVersionResponse,\n mcuSephVersion: \"9.9.9\",\n },\n },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(\"No MCU firmware found for version 9.9.9\");\n });\n });\n\n it(\"Should return ResolveOsUpdatePathError when no compatible MCU can be resolved for the next firmware\", async () => {\n managerApiMock.getNextFirmwareVersion.mockReturnValueOnce(\n rightAsync({\n ...firstFinalFirmware,\n mcuVersions: [42],\n }),\n );\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(\"No MCU firmware found for version null\");\n });\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type GetOsVersionResponse } from \"@ledgerhq/device-management-kit\";\nimport { EitherAsync, Just, Nothing } from \"purify-ts\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { ResolveOsUpdatePathError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { resolveOsUpdatePath } from \"@api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath\";\nimport {\n type FinalFirmware,\n type McuFirmware,\n type OsuFirmware,\n} from \"@api/device-action/OsUpdate/Shared/types\";\n\nconst rightAsync = <T>(value: T) =>\n EitherAsync<unknown, T>(() => Promise.resolve(value));\n\nconst leftAsync = (error: unknown) =>\n EitherAsync<unknown, never>(({ throwE }) => Promise.resolve(throwE(error)));\n\ndescribe(\"ResolveOsUpdatePath\", () => {\n const DEFAULT_MANAGER_API_PROVIDER = 1;\n\n const apiMock = makeDeviceActionInternalApiMock();\n\n const getOsVersionResponse = {\n isBootloader: false,\n isOsu: false,\n targetId: 0x33200004,\n seTargetId: 0x33200004,\n mcuTargetId: undefined,\n seVersion: \"1.3.0\",\n seFlags: new Uint8Array([0xe6, 0x00, 0x00, 0x00]),\n mcuSephVersion: \"1.0.0\",\n mcuBootloaderVersion: \"0.48\",\n hwVersion: \"00\",\n langId: 0,\n recoverState: undefined,\n secureElementFlags: {\n isPinValidated: true,\n hasMcuSerialNumber: true,\n hasValidCertificate: true,\n isCustomAuthorityConnectionAllowed: false,\n isSecureConnectionAllowed: false,\n isOnboarded: true,\n isMcuCodeSigned: true,\n isInRecoveryMode: false,\n },\n } satisfies GetOsVersionResponse;\n\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n name: \"Ledger Stax\",\n };\n\n const currentFirmware = {\n id: 100,\n version: \"1.3.0\",\n perso: \"perso\",\n firmware: null,\n firmwareKey: null,\n hash: null,\n bytes: null,\n mcuVersions: [1],\n } satisfies FinalFirmware;\n\n const firstOsuFirmware = {\n id: 200,\n notes: \"Update notes\",\n perso: \"perso\",\n firmware: \"osu\",\n firmwareKey: \"osu-key\",\n hash: \"osu-hash\",\n nextFinalFirmware: 300,\n } satisfies OsuFirmware;\n\n const secondOsuFirmware = {\n ...firstOsuFirmware,\n id: 201,\n nextFinalFirmware: 301,\n } satisfies OsuFirmware;\n\n const firstFinalFirmware = {\n id: 300,\n version: \"1.4.0\",\n perso: \"perso\",\n firmware: \"final\",\n firmwareKey: \"final-key\",\n hash: \"final-hash\",\n bytes: 123,\n mcuVersions: [1],\n } satisfies FinalFirmware;\n\n const secondFinalFirmware = {\n ...firstFinalFirmware,\n id: 301,\n version: \"1.5.0\",\n mcuVersions: [3],\n } satisfies FinalFirmware;\n\n const mcuList = [\n {\n id: 1,\n name: \"1.0.0\",\n fromBootloaderVersion: \"0.0\",\n providers: [1],\n },\n {\n id: 3,\n name: \"3.0.0\",\n fromBootloaderVersion: \"0.0\",\n providers: [1, 2],\n },\n ] satisfies McuFirmware[];\n\n const managerApiMock = {\n getMcuList: vi.fn(),\n getDeviceVersion: vi.fn(),\n getFirmwareVersion: vi.fn(),\n getOsuFirmwareVersion: vi.fn(),\n getLatestFirmwareVersion: vi.fn(),\n getNextFirmwareVersion: vi.fn(),\n getProvider: vi.fn(),\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.getManagerApiService.mockReturnValue(managerApiMock as never);\n managerApiMock.getMcuList.mockReturnValue(rightAsync(mcuList));\n managerApiMock.getDeviceVersion.mockReturnValue(rightAsync(deviceVersion));\n managerApiMock.getFirmwareVersion.mockReturnValue(\n rightAsync(currentFirmware),\n );\n managerApiMock.getLatestFirmwareVersion.mockReturnValue(\n rightAsync(Just(firstOsuFirmware)),\n );\n managerApiMock.getOsuFirmwareVersion.mockReturnValue(\n rightAsync(firstOsuFirmware),\n );\n managerApiMock.getNextFirmwareVersion.mockReturnValue(\n rightAsync(firstFinalFirmware),\n );\n managerApiMock.getProvider.mockReturnValue(DEFAULT_MANAGER_API_PROVIDER);\n });\n\n describe(\"Success\", () => {\n it(\"Should return an empty update path when no firmware update is available\", async () => {\n managerApiMock.getLatestFirmwareVersion.mockReturnValueOnce(\n rightAsync(Nothing),\n );\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([]);\n expect(managerApiMock.getDeviceVersion).toHaveBeenCalledWith(\n getOsVersionResponse,\n );\n expect(managerApiMock.getFirmwareVersion).toHaveBeenCalledWith(\n getOsVersionResponse,\n deviceVersion,\n );\n expect(managerApiMock.getLatestFirmwareVersion).toHaveBeenCalledWith(\n currentFirmware,\n deviceVersion,\n );\n expect(managerApiMock.getNextFirmwareVersion).not.toHaveBeenCalled();\n });\n\n it(\"Should resolve a single update without MCU flash when the final firmware supports the current MCU\", async () => {\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n ]);\n });\n\n it(\"Should resolve OSU mode from the OSU firmware endpoint\", async () => {\n managerApiMock.getLatestFirmwareVersion.mockReturnValueOnce(\n rightAsync(Nothing),\n );\n\n const osVersionResponse = {\n ...getOsVersionResponse,\n isOsu: true,\n } satisfies GetOsVersionResponse;\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse: osVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n ]);\n expect(managerApiMock.getOsuFirmwareVersion).toHaveBeenCalledWith(\n osVersionResponse,\n deviceVersion,\n );\n expect(managerApiMock.getFirmwareVersion).not.toHaveBeenCalled();\n });\n\n it(\"Should resolve multiple updates and flag the one requiring an MCU flash\", async () => {\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Just(secondOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n managerApiMock.getNextFirmwareVersion\n .mockReturnValueOnce(rightAsync(firstFinalFirmware))\n .mockReturnValueOnce(rightAsync(secondFinalFirmware));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: firstFinalFirmware,\n shouldFlashMcu: false,\n },\n {\n osuFirmware: secondOsuFirmware,\n finalFirmware: secondFinalFirmware,\n shouldFlashMcu: true,\n },\n ]);\n expect(managerApiMock.getDeviceVersion).toHaveBeenCalledTimes(1);\n expect(managerApiMock.getLatestFirmwareVersion).toHaveBeenNthCalledWith(\n 2,\n firstFinalFirmware,\n deviceVersion,\n );\n });\n\n it(\"Should resolve the latest compatible MCU when MCU names are not strict semver\", async () => {\n const managerMcuList = [\n {\n id: 1,\n name: \"1.0\",\n fromBootloaderVersion: \"0.0\",\n providers: [1],\n },\n {\n id: 2,\n name: \"1.1\",\n fromBootloaderVersion: \"0.0\",\n providers: [1, 2],\n },\n {\n id: 3,\n name: \"1.2\",\n fromBootloaderVersion: \"0.0\",\n providers: [1, 2, 3],\n },\n ] satisfies McuFirmware[];\n const finalFirmwareRequiringMcuFlash = {\n ...firstFinalFirmware,\n mcuVersions: [2, 3],\n } satisfies FinalFirmware;\n const finalFirmwareSupportingLatestMcu = {\n ...secondFinalFirmware,\n mcuVersions: [3],\n } satisfies FinalFirmware;\n\n managerApiMock.getMcuList.mockReturnValueOnce(rightAsync(managerMcuList));\n managerApiMock.getLatestFirmwareVersion\n .mockReturnValueOnce(rightAsync(Just(firstOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Just(secondOsuFirmware)))\n .mockReturnValueOnce(rightAsync(Nothing));\n managerApiMock.getNextFirmwareVersion\n .mockReturnValueOnce(rightAsync(finalFirmwareRequiringMcuFlash))\n .mockReturnValueOnce(rightAsync(finalFirmwareSupportingLatestMcu));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: {\n getOsVersionResponse: {\n ...getOsVersionResponse,\n mcuSephVersion: \"1.0\",\n },\n },\n });\n\n expect(result.extract()).toEqual([\n {\n osuFirmware: firstOsuFirmware,\n finalFirmware: finalFirmwareRequiringMcuFlash,\n shouldFlashMcu: true,\n },\n {\n osuFirmware: secondOsuFirmware,\n finalFirmware: finalFirmwareSupportingLatestMcu,\n shouldFlashMcu: false,\n },\n ]);\n });\n });\n\n describe(\"Error\", () => {\n it(\"Should return ResolveOsUpdatePathError when the MCU list cannot be fetched\", async () => {\n const error = new Error(\"mcu list failed\");\n managerApiMock.getMcuList.mockReturnValueOnce(leftAsync(error));\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(error);\n });\n });\n\n it(\"Should return ResolveOsUpdatePathError when the current MCU version is unknown\", async () => {\n const result = await resolveOsUpdatePath(apiMock)({\n input: {\n getOsVersionResponse: {\n ...getOsVersionResponse,\n mcuSephVersion: \"9.9.9\",\n },\n },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(\"No MCU firmware found for version 9.9.9\");\n });\n });\n\n it(\"Should return ResolveOsUpdatePathError when no compatible MCU can be resolved for the next firmware\", async () => {\n managerApiMock.getNextFirmwareVersion.mockReturnValueOnce(\n rightAsync({\n ...firstFinalFirmware,\n mcuVersions: [42],\n }),\n );\n\n const result = await resolveOsUpdatePath(apiMock)({\n input: { getOsVersionResponse },\n });\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(ResolveOsUpdatePathError);\n expect(e.originalError).toBe(\"No MCU firmware found for version null\");\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_purify_ts", "import_makeInternalApi", "import_ResolveOsUpdatePathDeviceActionErrors", "import_ResolveOsUpdatePath", "rightAsync", "value", "leftAsync", "error", "throwE", "apiMock", "getOsVersionResponse", "deviceVersion", "currentFirmware", "firstOsuFirmware", "secondOsuFirmware", "firstFinalFirmware", "secondFinalFirmware", "mcuList", "managerApiMock", "result", "osVersionResponse", "managerMcuList", "finalFirmwareRequiringMcuFlash", "finalFirmwareSupportingLatestMcu", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(r,e)=>{for(var a in e)n(r,a,{get:e[a],enumerable:!0})},A=(r,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of d(e))!l.call(r,t)&&t!==a&&n(r,t,{get:()=>e[t],enumerable:!(s=p(e,t))||s.enumerable});return r};var m=r=>A(n({},"__esModule",{value:!0}),r);var D={};u(D,{ResolveOsUpdatePathSteps:()=>i});module.exports=m(D);var i=(o=>(o.Idle="idle",o.WaitForAppAndVersion="waitForAppAndVersion",o.GoToDashboard="goToDashboard",o.GetOsVersion="getOsVersion",o.ResolveOsUpdatePath="resolveOsUpdatePath",o))(i||{});0&&(module.exports={ResolveOsUpdatePathSteps});
1
+ "use strict";var p=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var D=(t,e)=>{for(var a in e)p(t,a,{get:e[a],enumerable:!0})},l=(t,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d(e))!A.call(t,r)&&r!==a&&p(t,r,{get:()=>e[r],enumerable:!(s=i(e,r))||s.enumerable});return t};var u=t=>l(p({},"__esModule",{value:!0}),t);var O={};D(O,{ResolveOsUpdatePathSteps:()=>n});module.exports=u(O);var n=(o=>(o.Idle="idle",o.WaitForAppAndVersion="waitForAppAndVersion",o.GoToDashboard="goToDashboard",o.GetOsVersion="getOsVersion",o.ResolveOsUpdatePath="resolveOsUpdatePath",o))(n||{});0&&(module.exports={ResolveOsUpdatePathSteps});
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/OsUpdate/Resolve/types.ts"],
4
- "sourcesContent": ["import {\n type DeviceActionState,\n type GetOsVersionResponse,\n type GoToDashboardDAError,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDARequiredInteraction,\n type UserInteractionRequired,\n type WaitForAppAndVersionDAError,\n type WaitForAppAndVersionDAIntermediateValue,\n type WaitForAppAndVersionDARequiredInteraction,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type ResolveOsUpdatePathDAErrors } from \"./ResolveOsUpdatePathDeviceActionErrors\";\n\nexport type McuFirmware = {\n id: number;\n name: string;\n fromBootloaderVersion: string;\n};\n\nexport type BaseFirmware = {\n id: number;\n perso: string;\n hash: string | null;\n};\n\nexport type OsuFirmware = BaseFirmware & {\n notes: string | null;\n firmware: string;\n firmwareKey: string;\n nextFinalFirmware: number;\n};\n\nexport type FinalFirmware = BaseFirmware & {\n version: string;\n bytes: number | null;\n firmware: string | null;\n firmwareKey: string | null;\n mcuVersions: number[];\n};\n\nexport type OsUpdate = {\n osuFirmware: OsuFirmware;\n finalFirmware: FinalFirmware;\n shouldFlashMcu: boolean;\n};\n\nexport type DeviceInfos = {\n targetId: number;\n seVersion: string;\n mcuSephVersion: string;\n isOsu: boolean;\n};\n\nexport type ResolveOsUpdatePathDAInput = {\n unlockTimeout: number;\n};\n\nexport type ResolveOsUpdatePathDAOutput = OsUpdate[];\n\nexport type ResolveOsUpdatePathDAError =\n | WaitForAppAndVersionDAError\n | GoToDashboardDAError\n | ResolveOsUpdatePathDAErrors;\n\nexport type ResolveOsUpdatePathDAIntermediateValue = (\n | WaitForAppAndVersionDAIntermediateValue\n | GoToDashboardDAIntermediateValue\n | {\n readonly requiredUserInteraction: ResolveOsUpdatePathDARequiredInteraction;\n }\n) & {\n step: ResolveOsUpdatePathSteps;\n};\n\nexport type ResolveOsUpdatePathDARequiredInteraction =\n | WaitForAppAndVersionDARequiredInteraction\n | GoToDashboardDARequiredInteraction\n | UserInteractionRequired.None;\n\nexport type ResolveOsUpdatePathDAInternalState = {\n error: ResolveOsUpdatePathDAError | null;\n currentApp: string | null;\n getOsVersionResponse: GetOsVersionResponse | null;\n osUpdates: OsUpdate[];\n};\n\nexport type ResolveOsUpdatePathDAState = DeviceActionState<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue\n>;\n\nexport enum ResolveOsUpdatePathSteps {\n Idle = \"idle\",\n WaitForAppAndVersion = \"waitForAppAndVersion\",\n GoToDashboard = \"goToDashboard\",\n GetOsVersion = \"getOsVersion\",\n ResolveOsUpdatePath = \"resolveOsUpdatePath\",\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GA6FO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,qBAAuB,uBACvBA,EAAA,cAAgB,gBAChBA,EAAA,aAAe,eACfA,EAAA,oBAAsB,sBALZA,OAAA",
4
+ "sourcesContent": ["import {\n type DeviceActionState,\n type GetOsVersionResponse,\n type GoToDashboardDAError,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDARequiredInteraction,\n type UserInteractionRequired,\n type WaitForAppAndVersionDAError,\n type WaitForAppAndVersionDAIntermediateValue,\n type WaitForAppAndVersionDARequiredInteraction,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type OsUpdate } from \"@api/device-action/OsUpdate/Shared/types\";\n\nimport { type ResolveOsUpdatePathDAErrors } from \"./ResolveOsUpdatePathDeviceActionErrors\";\n\nexport type ResolveOsUpdatePathDAInput = {\n unlockTimeout: number;\n};\n\nexport type ResolveOsUpdatePathDAOutput = OsUpdate[];\n\nexport type ResolveOsUpdatePathDAError =\n | WaitForAppAndVersionDAError\n | GoToDashboardDAError\n | ResolveOsUpdatePathDAErrors;\n\nexport type ResolveOsUpdatePathDAIntermediateValue = (\n | WaitForAppAndVersionDAIntermediateValue\n | GoToDashboardDAIntermediateValue\n | {\n readonly requiredUserInteraction: ResolveOsUpdatePathDARequiredInteraction;\n }\n) & {\n step: ResolveOsUpdatePathSteps;\n};\n\nexport type ResolveOsUpdatePathDARequiredInteraction =\n | WaitForAppAndVersionDARequiredInteraction\n | GoToDashboardDARequiredInteraction\n | UserInteractionRequired.None;\n\nexport type ResolveOsUpdatePathDAInternalState = {\n error: ResolveOsUpdatePathDAError | null;\n currentApp: string | null;\n getOsVersionResponse: GetOsVersionResponse | null;\n osUpdates: OsUpdate[];\n};\n\nexport type ResolveOsUpdatePathDAState = DeviceActionState<\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAIntermediateValue\n>;\n\nexport enum ResolveOsUpdatePathSteps {\n Idle = \"idle\",\n WaitForAppAndVersion = \"waitForAppAndVersion\",\n GoToDashboard = \"goToDashboard\",\n GetOsVersion = \"getOsVersion\",\n ResolveOsUpdatePath = \"resolveOsUpdatePath\",\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAuDO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,qBAAuB,uBACvBA,EAAA,cAAgB,gBAChBA,EAAA,aAAe,eACfA,EAAA,oBAAsB,sBALZA,OAAA",
6
6
  "names": ["types_exports", "__export", "ResolveOsUpdatePathSteps", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var m=(o,r)=>{for(var e in r)t(o,e,{get:r[e],enumerable:!0})},E=(o,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of a(r))!l.call(o,n)&&n!==e&&t(o,n,{get:()=>r[n],enumerable:!(i=s(r,n))||i.enumerable});return o};var k=o=>E(t({},"__esModule",{value:!0}),o);var c={};m(c,{GetOsVersionError:()=>p});module.exports=k(c);class p{_tag="GetOsVersionError";originalError;constructor(r){this.originalError=r}}0&&(module.exports={GetOsVersionError});
2
+ //# sourceMappingURL=OsUpdateDeviceActionErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors.ts"],
4
+ "sourcesContent": ["import { type DmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class GetOsVersionError implements DmkError {\n readonly _tag = \"GetOsVersionError\";\n readonly originalError?: unknown;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAEO,MAAME,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYE,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["OsUpdateDeviceActionErrors_exports", "__export", "GetOsVersionError", "__toCommonJS", "originalError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(n,r)=>{for(var o in r)t(n,o,{get:r[o],enumerable:!0})},F=(n,r,o,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of c(r))!l.call(n,i)&&i!==o&&t(n,i,{get:()=>r[i],enumerable:!(e=a(r,i))||e.enumerable});return n};var p=n=>F(t({},"__esModule",{value:!0}),n);var f={};u(f,{bestCompatibleMcu:()=>d});module.exports=p(f);var s=require("semver");const w=1,E=new Set(["none","noneee","rien",""]),d=(n,r,o=w)=>n.filter(e=>r.mcuVersions.includes(e.id)&&e.providers.includes(o)&&!E.has(e.fromBootloaderVersion)).reduce((e,i)=>{const m=(0,s.coerce)(i.name)?.version;return m&&(!e||(0,s.compare)(m,e.version)>0)?{...i,version:m}:e},null);0&&(module.exports={bestCompatibleMcu});
2
+ //# sourceMappingURL=OsUpdateUtils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/OsUpdate/Shared/OsUpdateUtils.ts"],
4
+ "sourcesContent": ["import { coerce, compare } from \"semver\";\n\nimport {\n type FinalFirmware,\n type McuFirmware,\n} from \"@api/device-action/OsUpdate/Shared/types\";\n\nconst DEFAULT_MANAGER_API_PROVIDER = 1;\n\n/*\n * List of from_bootloader_versions that are excluded.\n */\nconst EXCLUDED_FROM_BOOTLOADER_VERSIONS = new Set([\n \"none\",\n \"noneee\",\n \"rien\",\n \"\",\n]);\n\nexport const bestCompatibleMcu = (\n mcuList: McuFirmware[],\n finalFirmware: FinalFirmware,\n provider: number = DEFAULT_MANAGER_API_PROVIDER,\n): McuFirmware | null =>\n mcuList\n .filter(\n (mcu) =>\n finalFirmware.mcuVersions.includes(mcu.id) &&\n mcu.providers.includes(provider) &&\n !EXCLUDED_FROM_BOOTLOADER_VERSIONS.has(mcu.fromBootloaderVersion),\n )\n .reduce<(McuFirmware & { version: string }) | null>((latestMcu, mcu) => {\n const version = coerce(mcu.name)?.version;\n\n if (!version) {\n return latestMcu;\n }\n\n if (!latestMcu || compare(version, latestMcu.version) > 0) {\n return {\n ...mcu,\n version,\n };\n }\n\n return latestMcu;\n }, null);\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,kBAOhC,MAAMC,EAA+B,EAK/BC,EAAoC,IAAI,IAAI,CAChD,OACA,SACA,OACA,EACF,CAAC,EAEYJ,EAAoB,CAC/BK,EACAC,EACAC,EAAmBJ,IAEnBE,EACG,OACEG,GACCF,EAAc,YAAY,SAASE,EAAI,EAAE,GACzCA,EAAI,UAAU,SAASD,CAAQ,GAC/B,CAACH,EAAkC,IAAII,EAAI,qBAAqB,CACpE,EACC,OAAmD,CAACC,EAAWD,IAAQ,CACtE,MAAME,KAAU,UAAOF,EAAI,IAAI,GAAG,QAElC,OAAKE,IAID,CAACD,MAAa,WAAQC,EAASD,EAAU,OAAO,EAAI,GAC/C,CACL,GAAGD,EACH,QAAAE,CACF,EAPOD,CAWX,EAAG,IAAI",
6
+ "names": ["OsUpdateUtils_exports", "__export", "bestCompatibleMcu", "__toCommonJS", "import_semver", "DEFAULT_MANAGER_API_PROVIDER", "EXCLUDED_FROM_BOOTLOADER_VERSIONS", "mcuList", "finalFirmware", "provider", "mcu", "latestMcu", "version"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var n in e)i(r,n,{get:e[n],enumerable:!0})},l=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of O(e))!V.call(r,s)&&s!==n&&i(r,s,{get:()=>e[s],enumerable:!(a=m(e,s))||a.enumerable});return r};var G=r=>l(i({},"__esModule",{value:!0}),r);var y={};d(y,{getOsVersion:()=>R});module.exports=G(y);var o=require("@ledgerhq/device-management-kit"),t=require("purify-ts/Either"),p=require("../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors");const R=r=>async()=>{const e=await r.sendCommand(new o.GetOsVersionCommand);return(0,o.isSuccessCommandResult)(e)?(0,t.Right)(e.data):(0,t.Left)(new p.GetOsVersionError(e.error.originalError))};0&&(module.exports={getOsVersion});
1
+ "use strict";var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var n in e)i(r,n,{get:e[n],enumerable:!0})},l=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of O(e))!V.call(r,s)&&s!==n&&i(r,s,{get:()=>e[s],enumerable:!(a=m(e,s))||a.enumerable});return r};var G=r=>l(i({},"__esModule",{value:!0}),r);var y={};d(y,{getOsVersion:()=>R});module.exports=G(y);var o=require("@ledgerhq/device-management-kit"),t=require("purify-ts/Either"),p=require("../../../../device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors");const R=r=>async()=>{const e=await r.sendCommand(new o.GetOsVersionCommand);return(0,o.isSuccessCommandResult)(e)?(0,t.Right)(e.data):(0,t.Left)(new p.GetOsVersionError(e.error.originalError))};0&&(module.exports={getOsVersion});
2
2
  //# sourceMappingURL=GetOsVersion.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Shared/Substeps/GetOsVersion.ts"],
4
+ "sourcesContent": ["import {\n GetOsVersionCommand,\n type GetOsVersionResponse,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts/Either\";\n\nimport { GetOsVersionError } from \"@api/device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors\";\n\ntype GetOsVersionHandlerResponse = Promise<\n Either<GetOsVersionError, GetOsVersionResponse>\n>;\n\ntype GetOsVersionHandler = () => GetOsVersionHandlerResponse;\n\nexport const getOsVersion =\n (internalApi: InternalApi): GetOsVersionHandler =>\n async (): GetOsVersionHandlerResponse => {\n const result = await internalApi.sendCommand(new GetOsVersionCommand());\n\n if (!isSuccessCommandResult(result)) {\n return Left(new GetOsVersionError(result.error.originalError));\n }\n\n return Right(result.data);\n };\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAKO,2CACPC,EAAyC,4BAEzCC,EAAkC,yEAQ3B,MAAMJ,EACVK,GACD,SAAyC,CACvC,MAAMC,EAAS,MAAMD,EAAY,YAAY,IAAI,qBAAqB,EAEtE,SAAK,0BAAuBC,CAAM,KAI3B,SAAMA,EAAO,IAAI,KAHf,QAAK,IAAI,oBAAkBA,EAAO,MAAM,aAAa,CAAC,CAIjE",
6
+ "names": ["GetOsVersion_exports", "__export", "getOsVersion", "__toCommonJS", "import_device_management_kit", "import_Either", "import_OsUpdateDeviceActionErrors", "internalApi", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),a=require("../../../../device-action/__test-utils__/makeInternalApi"),c=require("../../../../device-action/OsUpdate/Shared/OsUpdateDeviceActionErrors"),s=require("../../../../device-action/OsUpdate/Shared/Substeps/GetOsVersion");describe("GetOsVersion",()=>{const t=(0,a.makeDeviceActionInternalApiMock)(),{sendCommand:n}=t;beforeEach(()=>{vi.resetAllMocks()}),describe("Success",()=>{it("Should return the OS version response",async()=>{const r={isBootloader:!1,isOsu:!1,targetId:857735172,seTargetId:857735172,mcuTargetId:void 0,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"5.24",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:0,recoverState:void 0,secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}};n.mockResolvedValueOnce((0,e.CommandResultFactory)({data:r}));const o=await(0,s.getOsVersion)(t)();expect(o.isRight()).toBe(!0),expect(o.extract()).toEqual(r)})}),describe("Error",()=>{it("Should return GetOsVersionError",async()=>{const r=new e.GlobalCommandError({errorCode:"6e00",...e.GLOBAL_ERRORS["6e00"]});n.mockResolvedValueOnce((0,e.CommandResultFactory)({error:r}));const o=await(0,s.getOsVersion)(t)();expect(o.isLeft()).toBe(!0),o.mapLeft(i=>{expect(i).toBeInstanceOf(c.GetOsVersionError),expect(i.originalError).toBe(r.originalError)})})})});
2
+ //# sourceMappingURL=GetOsVersion.test.js.map