@ledgerhq/dmk-ledger-wallet 0.0.0-develop-20260804002603 → 0.0.0-develop-20260807010949

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 (58) hide show
  1. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js +2 -0
  2. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js.map +7 -0
  3. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js +2 -0
  4. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js.map +7 -0
  5. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js +2 -0
  6. package/lib/cjs/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js.map +7 -0
  7. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js +2 -0
  8. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js.map +7 -0
  9. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js +2 -0
  10. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js.map +7 -0
  11. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js +2 -0
  12. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js.map +7 -0
  13. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js +2 -0
  14. package/lib/cjs/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js.map +7 -0
  15. package/lib/cjs/api/device-action/OsUpdate/Resolve/types.js +2 -0
  16. package/lib/cjs/api/device-action/OsUpdate/Resolve/types.js.map +7 -0
  17. package/lib/cjs/index.js +1 -1
  18. package/lib/cjs/index.js.map +3 -3
  19. package/lib/cjs/package.json +3 -1
  20. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js +2 -0
  21. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.js.map +7 -0
  22. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js +2 -0
  23. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.js.map +7 -0
  24. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js +2 -0
  25. package/lib/esm/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.js.map +7 -0
  26. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js +2 -0
  27. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.js.map +7 -0
  28. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js +2 -0
  29. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.js.map +7 -0
  30. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js +2 -0
  31. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.js.map +7 -0
  32. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js +2 -0
  33. package/lib/esm/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.js.map +7 -0
  34. package/lib/esm/api/device-action/OsUpdate/Resolve/types.js +2 -0
  35. package/lib/esm/api/device-action/OsUpdate/Resolve/types.js.map +7 -0
  36. package/lib/esm/index.js +1 -1
  37. package/lib/esm/index.js.map +3 -3
  38. package/lib/esm/package.json +3 -1
  39. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.d.ts +6 -0
  40. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.d.ts.map +1 -0
  41. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.d.ts +2 -0
  42. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction.test.d.ts.map +1 -0
  43. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.d.ts +13 -0
  44. package/lib/types/api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors.d.ts.map +1 -0
  45. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.d.ts +8 -0
  46. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.d.ts.map +1 -0
  47. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.d.ts +2 -0
  48. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.d.ts.map +1 -0
  49. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.d.ts +14 -0
  50. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.d.ts.map +1 -0
  51. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.d.ts +2 -0
  52. package/lib/types/api/device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath.test.d.ts.map +1 -0
  53. package/lib/types/api/device-action/OsUpdate/Resolve/types.d.ts +62 -0
  54. package/lib/types/api/device-action/OsUpdate/Resolve/types.d.ts.map +1 -0
  55. package/lib/types/index.d.ts +2 -0
  56. package/lib/types/index.d.ts.map +1 -1
  57. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  58. package/package.json +8 -6
@@ -0,0 +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});
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +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})}))})});
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +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});
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceActionErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +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});
2
+ //# sourceMappingURL=GetOsVersion.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Resolve/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/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\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,qFAQ3B,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_ResolveOsUpdatePathDeviceActionErrors", "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/Resolve/ResolveOsUpdatePathDeviceActionErrors"),s=require("../../../../device-action/OsUpdate/Resolve/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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion.test.ts"],
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { GetOsVersionError } from \"@api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors\";\nimport { getOsVersion } from \"@api/device-action/OsUpdate/Resolve/Substeps/GetOsVersion\";\n\ndescribe(\"GetOsVersion\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const { sendCommand: sendCommandMock } = apiMock;\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"Success\", () => {\n it(\"Should return the OS version response\", async () => {\n const osVersion = {\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 };\n sendCommandMock.mockResolvedValueOnce(\n CommandResultFactory({ data: osVersion }),\n );\n\n const result = await getOsVersion(apiMock)();\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual(osVersion);\n });\n });\n\n describe(\"Error\", () => {\n it(\"Should return GetOsVersionError\", async () => {\n const error = new GlobalCommandError({\n errorCode: \"6e00\",\n ...GLOBAL_ERRORS[\"6e00\"],\n });\n sendCommandMock.mockResolvedValueOnce(CommandResultFactory({ error }));\n\n const result = await getOsVersion(apiMock)();\n\n expect(result.isLeft()).toBe(true);\n result.mapLeft((e) => {\n expect(e).toBeInstanceOf(GetOsVersionError);\n expect(e.originalError).toBe(error.originalError);\n });\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAIO,2CAEPC,EAAgD,6DAChDC,EAAkC,qFAClCC,EAA6B,qEAE7B,SAAS,eAAgB,IAAM,CAC7B,MAAMC,KAAU,mCAAgC,EAC1C,CAAE,YAAaC,CAAgB,EAAID,EAEzC,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,wCAAyC,SAAY,CACtD,MAAME,EAAY,CAChB,aAAc,GACd,MAAO,GACP,SAAU,UACV,WAAY,UACZ,YAAa,OACb,UAAW,QACX,QAAS,IAAI,WAAW,CAAC,IAAM,EAAM,EAAM,CAAI,CAAC,EAChD,eAAgB,OAChB,qBAAsB,OACtB,UAAW,KACX,OAAQ,EACR,aAAc,OACd,mBAAoB,CAClB,eAAgB,GAChB,mBAAoB,GACpB,oBAAqB,GACrB,mCAAoC,GACpC,0BAA2B,GAC3B,YAAa,GACb,gBAAiB,GACjB,iBAAkB,EACpB,CACF,EACAD,EAAgB,yBACd,wBAAqB,CAAE,KAAMC,CAAU,CAAC,CAC1C,EAEA,MAAMC,EAAS,QAAM,gBAAaH,CAAO,EAAE,EAE3C,OAAOG,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QAAQD,CAAS,CAC5C,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,kCAAmC,SAAY,CAChD,MAAME,EAAQ,IAAI,qBAAmB,CACnC,UAAW,OACX,GAAG,gBAAc,MAAM,CACzB,CAAC,EACDH,EAAgB,yBAAsB,wBAAqB,CAAE,MAAAG,CAAM,CAAC,CAAC,EAErE,MAAMD,EAAS,QAAM,gBAAaH,CAAO,EAAE,EAE3C,OAAOG,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjCA,EAAO,QAASE,GAAM,CACpB,OAAOA,CAAC,EAAE,eAAe,mBAAiB,EAC1C,OAAOA,EAAE,aAAa,EAAE,KAAKD,EAAM,aAAa,CAClD,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_device_management_kit", "import_makeInternalApi", "import_ResolveOsUpdatePathDeviceActionErrors", "import_GetOsVersion", "apiMock", "sendCommandMock", "osVersion", "result", "error", "e"]
7
+ }
@@ -0,0 +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});
2
+ //# sourceMappingURL=ResolveOsUpdatePath.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +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")})})})});
2
+ //# sourceMappingURL=ResolveOsUpdatePath.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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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",
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
+ }
@@ -0,0 +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});
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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",
6
+ "names": ["types_exports", "__export", "ResolveOsUpdatePathSteps", "__toCommonJS"]
7
+ }
package/lib/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var u=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var V=(t,o)=>{for(var c in o)u(t,c,{get:o[c],enumerable:!0})},F=(t,o,c,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of O(o))!w.call(t,a)&&a!==c&&u(t,a,{get:()=>o[a],enumerable:!(i=q(o,a))||i.enumerable});return t};var T=t=>F(u({},"__esModule",{value:!0}),t);var M={};V(M,{BackupAppStorageCommand:()=>g.BackupAppStorageCommand,BackupAppStorageTask:()=>U.BackupAppStorageTask,CleanDeviceDeviceAction:()=>y.CleanDeviceDeviceAction,CommitRestoreAppStorageCommand:()=>m.CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError:()=>m.CommitRestoreAppStorageCommandError,CreateBackupDeviceAction:()=>v.CreateBackupDeviceAction,CustomLockScreenDeviceInternalErrorDAError:()=>e.CustomLockScreenDeviceInternalErrorDAError,DeviceInRecoveryModeDAError:()=>e.DeviceInRecoveryModeDAError,DownloadCustomLockScreenDeviceAction:()=>l.DownloadCustomLockScreenDeviceAction,GetAppStorageInfoCommand:()=>k.GetAppStorageInfoCommand,GetCustomLockScreenInfoDeviceAction:()=>f.GetCustomLockScreenInfoDeviceAction,ImageCropError:()=>p.ImageCropError,ImageResizeError:()=>p.ImageResizeError,ImageSizeLoadingError:()=>p.ImageSizeLoadingError,InitRestoreAppStorageCommand:()=>n.InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError:()=>n.InitRestoreAppStorageCommandError,InvalidCustomLockScreenImageDataDAError:()=>e.InvalidCustomLockScreenImageDataDAError,InvalidCustomLockScreenStateDAError:()=>e.InvalidCustomLockScreenStateDAError,NoCustomLockScreenImageDAError:()=>e.NoCustomLockScreenImageDAError,RemoveCustomLockScreenDeviceAction:()=>E.RemoveCustomLockScreenDeviceAction,RequestMasterConsentCommand:()=>I.RequestMasterConsentCommand,RestoreAppStorageCommand:()=>s.RestoreAppStorageCommand,RestoreAppStorageCommandError:()=>s.RestoreAppStorageCommandError,RestoreAppStorageTask:()=>G.RestoreAppStorageTask,RestoreAppsStorageDeviceAction:()=>L.RestoreAppsStorageDeviceAction,RestoreBackupDeviceAction:()=>x.RestoreBackupDeviceAction,UploadCustomLockScreenDeviceAction:()=>B.UploadCustomLockScreenDeviceAction,centerCropResizeImage:()=>S.centerCropResizeImage,decodeImageFromDevice:()=>A.decodeImageFromDevice,encodeImageForDevice:()=>d.encodeImageForDevice,getScreenSpecs:()=>r.getScreenSpecs,getScreenVisibleAreaDimensions:()=>r.getScreenVisibleAreaDimensions,isCustomLockScreenSupported:()=>r.isCustomLockScreenSupported,loadImageFromFile:()=>C.loadImageFromFile,processImage:()=>D.convertToGrayscale,renderPixelDataToImage:()=>R.renderPixelDataToImage});module.exports=T(M);var A=require("./api/customLockScreenUtils/codec/decodeImageFromDevice"),d=require("./api/customLockScreenUtils/codec/encodeImageForDevice"),C=require("./api/customLockScreenUtils/fit/canvasUtils"),S=require("./api/customLockScreenUtils/fit/imageFit"),D=require("./api/customLockScreenUtils/grayscale/grayscaleDithering"),R=require("./api/customLockScreenUtils/grayscale/pixelDataRenderer"),r=require("./api/customLockScreenUtils/screenSpecs"),p=require("./api/customLockScreenUtils/types"),e=require("./api/device-action/customLockScreenDeviceActionErrors"),g=require("./api/command/OsUpdate/Backup/BackupAppStorageCommand"),k=require("./api/command/OsUpdate/Backup/GetAppStorageInfoCommand"),m=require("./api/command/OsUpdate/Restore/CommitRestoreAppStorageCommand"),n=require("./api/command/OsUpdate/Restore/InitRestoreAppStorageCommand"),I=require("./api/command/OsUpdate/Restore/RequestMasterConsentCommand"),s=require("./api/command/OsUpdate/Restore/RestoreAppStorageCommand"),l=require("./api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction"),f=require("./api/device-action/GetCustomLockScreenInfo/GetCustomLockScreenInfoDeviceAction"),v=require("./api/device-action/OsUpdate/Backup/CreateBackupDeviceAction"),y=require("./api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction"),L=require("./api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction"),x=require("./api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction"),E=require("./api/device-action/RemoveCustomLockScreen/RemoveCustomLockScreenDeviceAction"),B=require("./api/device-action/UploadCustomLockScreen/UploadCustomLockScreenDeviceAction"),U=require("./api/task/OsUpdate/Backup/BackupAppStorageTask"),G=require("./api/task/OsUpdate/Restore/RestoreAppStorageTask");0&&(module.exports={BackupAppStorageCommand,BackupAppStorageTask,CleanDeviceDeviceAction,CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError,CreateBackupDeviceAction,CustomLockScreenDeviceInternalErrorDAError,DeviceInRecoveryModeDAError,DownloadCustomLockScreenDeviceAction,GetAppStorageInfoCommand,GetCustomLockScreenInfoDeviceAction,ImageCropError,ImageResizeError,ImageSizeLoadingError,InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError,InvalidCustomLockScreenImageDataDAError,InvalidCustomLockScreenStateDAError,NoCustomLockScreenImageDAError,RemoveCustomLockScreenDeviceAction,RequestMasterConsentCommand,RestoreAppStorageCommand,RestoreAppStorageCommandError,RestoreAppStorageTask,RestoreAppsStorageDeviceAction,RestoreBackupDeviceAction,UploadCustomLockScreenDeviceAction,centerCropResizeImage,decodeImageFromDevice,encodeImageForDevice,getScreenSpecs,getScreenVisibleAreaDimensions,isCustomLockScreenSupported,loadImageFromFile,processImage,renderPixelDataToImage});
1
+ "use strict";var u=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var V=(t,o)=>{for(var s in o)u(t,s,{get:o[s],enumerable:!0})},w=(t,o,s,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of P(o))!h.call(t,a)&&a!==s&&u(t,a,{get:()=>o[a],enumerable:!(i=q(o,a))||i.enumerable});return t};var F=t=>w(u({},"__esModule",{value:!0}),t);var T={};V(T,{BackupAppStorageCommand:()=>l.BackupAppStorageCommand,BackupAppStorageTask:()=>O.BackupAppStorageTask,CleanDeviceDeviceAction:()=>y.CleanDeviceDeviceAction,CommitRestoreAppStorageCommand:()=>c.CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError:()=>c.CommitRestoreAppStorageCommandError,CreateBackupDeviceAction:()=>f.CreateBackupDeviceAction,CustomLockScreenDeviceInternalErrorDAError:()=>e.CustomLockScreenDeviceInternalErrorDAError,DeviceInRecoveryModeDAError:()=>e.DeviceInRecoveryModeDAError,DownloadCustomLockScreenDeviceAction:()=>k.DownloadCustomLockScreenDeviceAction,GetAppStorageInfoCommand:()=>g.GetAppStorageInfoCommand,GetCustomLockScreenInfoDeviceAction:()=>v.GetCustomLockScreenInfoDeviceAction,ImageCropError:()=>p.ImageCropError,ImageResizeError:()=>p.ImageResizeError,ImageSizeLoadingError:()=>p.ImageSizeLoadingError,InitRestoreAppStorageCommand:()=>n.InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError:()=>n.InitRestoreAppStorageCommandError,InvalidCustomLockScreenImageDataDAError:()=>e.InvalidCustomLockScreenImageDataDAError,InvalidCustomLockScreenStateDAError:()=>e.InvalidCustomLockScreenStateDAError,NoCustomLockScreenImageDAError:()=>e.NoCustomLockScreenImageDAError,RemoveCustomLockScreenDeviceAction:()=>U.RemoveCustomLockScreenDeviceAction,RequestMasterConsentCommand:()=>I.RequestMasterConsentCommand,ResolveOsUpdatePathDeviceAction:()=>L.ResolveOsUpdatePathDeviceAction,RestoreAppStorageCommand:()=>m.RestoreAppStorageCommand,RestoreAppStorageCommandError:()=>m.RestoreAppStorageCommandError,RestoreAppStorageTask:()=>G.RestoreAppStorageTask,RestoreAppsStorageDeviceAction:()=>x.RestoreAppsStorageDeviceAction,RestoreBackupDeviceAction:()=>E.RestoreBackupDeviceAction,UploadCustomLockScreenDeviceAction:()=>B.UploadCustomLockScreenDeviceAction,centerCropResizeImage:()=>S.centerCropResizeImage,decodeImageFromDevice:()=>A.decodeImageFromDevice,encodeImageForDevice:()=>d.encodeImageForDevice,getScreenSpecs:()=>r.getScreenSpecs,getScreenVisibleAreaDimensions:()=>r.getScreenVisibleAreaDimensions,isCustomLockScreenSupported:()=>r.isCustomLockScreenSupported,loadImageFromFile:()=>D.loadImageFromFile,processImage:()=>C.convertToGrayscale,renderPixelDataToImage:()=>R.renderPixelDataToImage});module.exports=F(T);var A=require("./api/customLockScreenUtils/codec/decodeImageFromDevice"),d=require("./api/customLockScreenUtils/codec/encodeImageForDevice"),D=require("./api/customLockScreenUtils/fit/canvasUtils"),S=require("./api/customLockScreenUtils/fit/imageFit"),C=require("./api/customLockScreenUtils/grayscale/grayscaleDithering"),R=require("./api/customLockScreenUtils/grayscale/pixelDataRenderer"),r=require("./api/customLockScreenUtils/screenSpecs"),p=require("./api/customLockScreenUtils/types"),e=require("./api/device-action/customLockScreenDeviceActionErrors"),l=require("./api/command/OsUpdate/Backup/BackupAppStorageCommand"),g=require("./api/command/OsUpdate/Backup/GetAppStorageInfoCommand"),c=require("./api/command/OsUpdate/Restore/CommitRestoreAppStorageCommand"),n=require("./api/command/OsUpdate/Restore/InitRestoreAppStorageCommand"),I=require("./api/command/OsUpdate/Restore/RequestMasterConsentCommand"),m=require("./api/command/OsUpdate/Restore/RestoreAppStorageCommand"),k=require("./api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction"),v=require("./api/device-action/GetCustomLockScreenInfo/GetCustomLockScreenInfoDeviceAction"),f=require("./api/device-action/OsUpdate/Backup/CreateBackupDeviceAction"),y=require("./api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction"),L=require("./api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction"),x=require("./api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction"),E=require("./api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction"),U=require("./api/device-action/RemoveCustomLockScreen/RemoveCustomLockScreenDeviceAction"),B=require("./api/device-action/UploadCustomLockScreen/UploadCustomLockScreenDeviceAction"),O=require("./api/task/OsUpdate/Backup/BackupAppStorageTask"),G=require("./api/task/OsUpdate/Restore/RestoreAppStorageTask");0&&(module.exports={BackupAppStorageCommand,BackupAppStorageTask,CleanDeviceDeviceAction,CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError,CreateBackupDeviceAction,CustomLockScreenDeviceInternalErrorDAError,DeviceInRecoveryModeDAError,DownloadCustomLockScreenDeviceAction,GetAppStorageInfoCommand,GetCustomLockScreenInfoDeviceAction,ImageCropError,ImageResizeError,ImageSizeLoadingError,InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError,InvalidCustomLockScreenImageDataDAError,InvalidCustomLockScreenStateDAError,NoCustomLockScreenImageDAError,RemoveCustomLockScreenDeviceAction,RequestMasterConsentCommand,ResolveOsUpdatePathDeviceAction,RestoreAppStorageCommand,RestoreAppStorageCommandError,RestoreAppStorageTask,RestoreAppsStorageDeviceAction,RestoreBackupDeviceAction,UploadCustomLockScreenDeviceAction,centerCropResizeImage,decodeImageFromDevice,encodeImageForDevice,getScreenSpecs,getScreenVisibleAreaDimensions,isCustomLockScreenSupported,loadImageFromFile,processImage,renderPixelDataToImage});
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// Custom Lock Screen Utilities - Codec (device binary format)\nexport type { DecodeImageFromDeviceResult } from \"./api/customLockScreenUtils/codec/decodeImageFromDevice\";\nexport { decodeImageFromDevice } from \"./api/customLockScreenUtils/codec/decodeImageFromDevice\";\nexport type { EncodeImageForDeviceArgs } from \"./api/customLockScreenUtils/codec/encodeImageForDevice\";\nexport { encodeImageForDevice } from \"./api/customLockScreenUtils/codec/encodeImageForDevice\";\n\n// Custom Lock Screen Utilities - Fit (resize/crop to screen)\n// Note: These functions require a Web runtime environment (browser)\nexport { loadImageFromFile } from \"./api/customLockScreenUtils/fit/canvasUtils\";\nexport { centerCropResizeImage } from \"./api/customLockScreenUtils/fit/imageFit\";\n\n// Custom Lock Screen Utilities - Grayscale (color conversion & dithering)\n// Note: These functions require a Web runtime environment (browser)\nexport { convertToGrayscale as processImage } from \"./api/customLockScreenUtils/grayscale/grayscaleDithering\";\nexport { renderPixelDataToImage } from \"./api/customLockScreenUtils/grayscale/pixelDataRenderer\";\n\n// Custom Lock Screen Utilities - Screen Specs\nexport type {\n CLSSupportedDeviceModelId,\n ScreenSpecs,\n} from \"./api/customLockScreenUtils/screenSpecs\";\nexport {\n getScreenSpecs,\n getScreenVisibleAreaDimensions,\n isCustomLockScreenSupported,\n} from \"./api/customLockScreenUtils/screenSpecs\";\n\n// Custom Lock Screen Utilities - Types\nexport type {\n CenteredResult,\n DitheringAlgorithm,\n ImageDimensions,\n ProcessImageArgs,\n ProcessorResult,\n RenderPixelDataToImageArgs,\n RenderPixelDataToImageResult,\n} from \"./api/customLockScreenUtils/types\";\nexport {\n ImageCropError,\n ImageResizeError,\n ImageSizeLoadingError,\n} from \"./api/customLockScreenUtils/types\";\nexport {\n CustomLockScreenDeviceInternalErrorDAError,\n DeviceInRecoveryModeDAError,\n type DownloadCommandsDAError,\n InvalidCustomLockScreenImageDataDAError,\n InvalidCustomLockScreenStateDAError,\n NoCustomLockScreenImageDAError,\n type RemoveCommandDAError,\n type UploadCommandsDAError,\n} from \"./api/device-action/customLockScreenDeviceActionErrors\";\n\n// Device Actions\nexport {\n BackupAppStorageCommand,\n type BackupAppStorageCommandErrorCodes,\n type BackupAppStorageCommandResponse,\n type BackupAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Backup/BackupAppStorageCommand\";\nexport {\n GetAppStorageInfoCommand,\n type GetAppStorageInfoCommandArgs,\n type GetAppStorageInfoCommandErrorCodes,\n type GetAppStorageInfoCommandResponse,\n type GetAppStorageInfoCommandResult,\n} from \"./api/command/OsUpdate/Backup/GetAppStorageInfoCommand\";\nexport {\n CommitRestoreAppStorageCommand,\n CommitRestoreAppStorageCommandError,\n type CommitRestoreAppStorageCommandErrorCodes,\n type CommitRestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/CommitRestoreAppStorageCommand\";\nexport {\n InitRestoreAppStorageCommand,\n type InitRestoreAppStorageCommandArgs,\n InitRestoreAppStorageCommandError,\n type InitRestoreAppStorageCommandErrorCodes,\n type InitRestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/InitRestoreAppStorageCommand\";\nexport {\n RequestMasterConsentCommand,\n type RequestMasterConsentCommandArgs,\n type RequestMasterConsentCommandErrorCodes,\n type RequestMasterConsentCommandResult,\n} from \"./api/command/OsUpdate/Restore/RequestMasterConsentCommand\";\nexport {\n RestoreAppStorageCommand,\n type RestoreAppStorageCommandArgs,\n RestoreAppStorageCommandError,\n type RestoreAppStorageCommandErrorCodes,\n type RestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/RestoreAppStorageCommand\";\nexport { DownloadCustomLockScreenDeviceAction } from \"./api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction\";\nexport type {\n DownloadCustomLockScreenDAError,\n DownloadCustomLockScreenDAInput,\n DownloadCustomLockScreenDAIntermediateValue,\n DownloadCustomLockScreenDAOutput,\n DownloadCustomLockScreenDARequiredInteraction,\n DownloadCustomLockScreenDAState,\n} from \"./api/device-action/DownloadCustomLockScreen/types\";\nexport { GetCustomLockScreenInfoDeviceAction } from \"./api/device-action/GetCustomLockScreenInfo/GetCustomLockScreenInfoDeviceAction\";\nexport type {\n GetCustomLockScreenInfoDAError,\n GetCustomLockScreenInfoDAInput,\n GetCustomLockScreenInfoDAIntermediateValue,\n GetCustomLockScreenInfoDAOutput,\n GetCustomLockScreenInfoDARequiredInteraction,\n GetCustomLockScreenInfoDAState,\n} from \"./api/device-action/GetCustomLockScreenInfo/types\";\nexport { CreateBackupDeviceAction } from \"./api/device-action/OsUpdate/Backup/CreateBackupDeviceAction\";\nexport type {\n CreateBackupDAError,\n CreateBackupDAInput,\n CreateBackupDAIntermediateValue,\n CreateBackupDAOutput,\n CreateBackupDARequiredInteraction,\n CreateBackupDAState,\n CreateBackupSteps,\n} from \"./api/device-action/OsUpdate/Backup/types\";\nexport { CleanDeviceDeviceAction } from \"./api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction\";\nexport type {\n CleanDeviceDAError,\n CleanDeviceDAInput,\n CleanDeviceDAIntermediateValue,\n CleanDeviceDAOutput,\n CleanDeviceDARequiredInteraction,\n CleanDeviceDAState,\n} from \"./api/device-action/OsUpdate/CleanDevice/types\";\nexport { RestoreAppsStorageDeviceAction } from \"./api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction\";\nexport type {\n RestoreAppsStorageDAError,\n RestoreAppsStorageDAInput,\n RestoreAppsStorageDAIntermediateValue,\n RestoreAppsStorageDAOutput,\n RestoreAppsStorageDARequiredInteraction,\n RestoreAppsStorageDAState,\n RestoreAppsStorageSteps,\n RestoreAppStorageResult,\n} from \"./api/device-action/OsUpdate/Restore/RestoreAppsStorage/types\";\nexport { RestoreBackupDeviceAction } from \"./api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction\";\nexport type {\n RestoreAppResult,\n RestoreBackupDAError,\n RestoreBackupDAInput,\n RestoreBackupDAIntermediateValue,\n RestoreBackupDAOutput,\n RestoreBackupDARequiredInteraction,\n RestoreBackupDAState,\n RestoreBackupSteps,\n} from \"./api/device-action/OsUpdate/Restore/RestoreBackup/types\";\nexport { RemoveCustomLockScreenDeviceAction } from \"./api/device-action/RemoveCustomLockScreen/RemoveCustomLockScreenDeviceAction\";\nexport type {\n RemoveCustomLockScreenDAError,\n RemoveCustomLockScreenDAInput,\n RemoveCustomLockScreenDAIntermediateValue,\n RemoveCustomLockScreenDAOutput,\n RemoveCustomLockScreenDARequiredInteraction,\n RemoveCustomLockScreenDAState,\n} from \"./api/device-action/RemoveCustomLockScreen/types\";\nexport type {\n UploadCustomLockScreenDAError,\n UploadCustomLockScreenDAInput,\n UploadCustomLockScreenDAIntermediateValue,\n UploadCustomLockScreenDAOutput,\n UploadCustomLockScreenDARequiredInteraction,\n UploadCustomLockScreenDAState,\n} from \"./api/device-action/UploadCustomLockScreen/types\";\nexport { UploadCustomLockScreenDeviceAction } from \"./api/device-action/UploadCustomLockScreen/UploadCustomLockScreenDeviceAction\";\nexport { BackupAppStorageTask } from \"./api/task/OsUpdate/Backup/BackupAppStorageTask\";\nexport {\n RestoreAppStorageTask,\n type RestoreAppStorageTaskArgs,\n type RestoreAppStorageTaskError,\n} from \"./api/task/OsUpdate/Restore/RestoreAppStorageTask\";\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,spEAAAE,EAAAF,GAEA,IAAAG,EAAsC,mEAEtCC,EAAqC,kEAIrCC,EAAkC,uDAClCC,EAAsC,oDAItCC,EAAmD,oEACnDC,EAAuC,mEAOvCC,EAIO,mDAYPC,EAIO,6CACPC,EASO,kEAGPC,EAKO,iEACPC,EAMO,kEACPC,EAKO,yEACPC,EAMO,uEACPC,EAKO,sEACPC,EAMO,mEACPC,EAAqD,6FASrDC,EAAoD,2FASpDC,EAAyC,wEAUzCC,EAAwC,4EASxCC,EAA+C,kGAW/CC,EAA0C,wFAW1CC,EAAmD,yFAiBnDC,EAAmD,yFACnDC,EAAqC,2DACrCC,EAIO",
6
- "names": ["index_exports", "__export", "__toCommonJS", "import_decodeImageFromDevice", "import_encodeImageForDevice", "import_canvasUtils", "import_imageFit", "import_grayscaleDithering", "import_pixelDataRenderer", "import_screenSpecs", "import_types", "import_customLockScreenDeviceActionErrors", "import_BackupAppStorageCommand", "import_GetAppStorageInfoCommand", "import_CommitRestoreAppStorageCommand", "import_InitRestoreAppStorageCommand", "import_RequestMasterConsentCommand", "import_RestoreAppStorageCommand", "import_DownloadCustomLockScreenDeviceAction", "import_GetCustomLockScreenInfoDeviceAction", "import_CreateBackupDeviceAction", "import_CleanDeviceDeviceAction", "import_RestoreAppsStorageDeviceAction", "import_RestoreBackupDeviceAction", "import_RemoveCustomLockScreenDeviceAction", "import_UploadCustomLockScreenDeviceAction", "import_BackupAppStorageTask", "import_RestoreAppStorageTask"]
4
+ "sourcesContent": ["// Custom Lock Screen Utilities - Codec (device binary format)\nexport type { DecodeImageFromDeviceResult } from \"./api/customLockScreenUtils/codec/decodeImageFromDevice\";\nexport { decodeImageFromDevice } from \"./api/customLockScreenUtils/codec/decodeImageFromDevice\";\nexport type { EncodeImageForDeviceArgs } from \"./api/customLockScreenUtils/codec/encodeImageForDevice\";\nexport { encodeImageForDevice } from \"./api/customLockScreenUtils/codec/encodeImageForDevice\";\n\n// Custom Lock Screen Utilities - Fit (resize/crop to screen)\n// Note: These functions require a Web runtime environment (browser)\nexport { loadImageFromFile } from \"./api/customLockScreenUtils/fit/canvasUtils\";\nexport { centerCropResizeImage } from \"./api/customLockScreenUtils/fit/imageFit\";\n\n// Custom Lock Screen Utilities - Grayscale (color conversion & dithering)\n// Note: These functions require a Web runtime environment (browser)\nexport { convertToGrayscale as processImage } from \"./api/customLockScreenUtils/grayscale/grayscaleDithering\";\nexport { renderPixelDataToImage } from \"./api/customLockScreenUtils/grayscale/pixelDataRenderer\";\n\n// Custom Lock Screen Utilities - Screen Specs\nexport type {\n CLSSupportedDeviceModelId,\n ScreenSpecs,\n} from \"./api/customLockScreenUtils/screenSpecs\";\nexport {\n getScreenSpecs,\n getScreenVisibleAreaDimensions,\n isCustomLockScreenSupported,\n} from \"./api/customLockScreenUtils/screenSpecs\";\n\n// Custom Lock Screen Utilities - Types\nexport type {\n CenteredResult,\n DitheringAlgorithm,\n ImageDimensions,\n ProcessImageArgs,\n ProcessorResult,\n RenderPixelDataToImageArgs,\n RenderPixelDataToImageResult,\n} from \"./api/customLockScreenUtils/types\";\nexport {\n ImageCropError,\n ImageResizeError,\n ImageSizeLoadingError,\n} from \"./api/customLockScreenUtils/types\";\nexport {\n CustomLockScreenDeviceInternalErrorDAError,\n DeviceInRecoveryModeDAError,\n type DownloadCommandsDAError,\n InvalidCustomLockScreenImageDataDAError,\n InvalidCustomLockScreenStateDAError,\n NoCustomLockScreenImageDAError,\n type RemoveCommandDAError,\n type UploadCommandsDAError,\n} from \"./api/device-action/customLockScreenDeviceActionErrors\";\n\n// Device Actions\nexport {\n BackupAppStorageCommand,\n type BackupAppStorageCommandErrorCodes,\n type BackupAppStorageCommandResponse,\n type BackupAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Backup/BackupAppStorageCommand\";\nexport {\n GetAppStorageInfoCommand,\n type GetAppStorageInfoCommandArgs,\n type GetAppStorageInfoCommandErrorCodes,\n type GetAppStorageInfoCommandResponse,\n type GetAppStorageInfoCommandResult,\n} from \"./api/command/OsUpdate/Backup/GetAppStorageInfoCommand\";\nexport {\n CommitRestoreAppStorageCommand,\n CommitRestoreAppStorageCommandError,\n type CommitRestoreAppStorageCommandErrorCodes,\n type CommitRestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/CommitRestoreAppStorageCommand\";\nexport {\n InitRestoreAppStorageCommand,\n type InitRestoreAppStorageCommandArgs,\n InitRestoreAppStorageCommandError,\n type InitRestoreAppStorageCommandErrorCodes,\n type InitRestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/InitRestoreAppStorageCommand\";\nexport {\n RequestMasterConsentCommand,\n type RequestMasterConsentCommandArgs,\n type RequestMasterConsentCommandErrorCodes,\n type RequestMasterConsentCommandResult,\n} from \"./api/command/OsUpdate/Restore/RequestMasterConsentCommand\";\nexport {\n RestoreAppStorageCommand,\n type RestoreAppStorageCommandArgs,\n RestoreAppStorageCommandError,\n type RestoreAppStorageCommandErrorCodes,\n type RestoreAppStorageCommandResult,\n} from \"./api/command/OsUpdate/Restore/RestoreAppStorageCommand\";\nexport { DownloadCustomLockScreenDeviceAction } from \"./api/device-action/DownloadCustomLockScreen/DownloadCustomLockScreenDeviceAction\";\nexport type {\n DownloadCustomLockScreenDAError,\n DownloadCustomLockScreenDAInput,\n DownloadCustomLockScreenDAIntermediateValue,\n DownloadCustomLockScreenDAOutput,\n DownloadCustomLockScreenDARequiredInteraction,\n DownloadCustomLockScreenDAState,\n} from \"./api/device-action/DownloadCustomLockScreen/types\";\nexport { GetCustomLockScreenInfoDeviceAction } from \"./api/device-action/GetCustomLockScreenInfo/GetCustomLockScreenInfoDeviceAction\";\nexport type {\n GetCustomLockScreenInfoDAError,\n GetCustomLockScreenInfoDAInput,\n GetCustomLockScreenInfoDAIntermediateValue,\n GetCustomLockScreenInfoDAOutput,\n GetCustomLockScreenInfoDARequiredInteraction,\n GetCustomLockScreenInfoDAState,\n} from \"./api/device-action/GetCustomLockScreenInfo/types\";\nexport { CreateBackupDeviceAction } from \"./api/device-action/OsUpdate/Backup/CreateBackupDeviceAction\";\nexport type {\n CreateBackupDAError,\n CreateBackupDAInput,\n CreateBackupDAIntermediateValue,\n CreateBackupDAOutput,\n CreateBackupDARequiredInteraction,\n CreateBackupDAState,\n CreateBackupSteps,\n} from \"./api/device-action/OsUpdate/Backup/types\";\nexport { CleanDeviceDeviceAction } from \"./api/device-action/OsUpdate/CleanDevice/CleanDeviceDeviceAction\";\nexport type {\n CleanDeviceDAError,\n CleanDeviceDAInput,\n CleanDeviceDAIntermediateValue,\n CleanDeviceDAOutput,\n CleanDeviceDARequiredInteraction,\n CleanDeviceDAState,\n} from \"./api/device-action/OsUpdate/CleanDevice/types\";\nexport { ResolveOsUpdatePathDeviceAction } from \"./api/device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction\";\nexport type {\n ResolveOsUpdatePathDAError,\n ResolveOsUpdatePathDAInput,\n ResolveOsUpdatePathDAIntermediateValue,\n ResolveOsUpdatePathDAOutput,\n ResolveOsUpdatePathDARequiredInteraction,\n ResolveOsUpdatePathDAState,\n ResolveOsUpdatePathSteps,\n} from \"./api/device-action/OsUpdate/Resolve/types\";\nexport { RestoreAppsStorageDeviceAction } from \"./api/device-action/OsUpdate/Restore/RestoreAppsStorage/RestoreAppsStorageDeviceAction\";\nexport type {\n RestoreAppsStorageDAError,\n RestoreAppsStorageDAInput,\n RestoreAppsStorageDAIntermediateValue,\n RestoreAppsStorageDAOutput,\n RestoreAppsStorageDARequiredInteraction,\n RestoreAppsStorageDAState,\n RestoreAppsStorageSteps,\n RestoreAppStorageResult,\n} from \"./api/device-action/OsUpdate/Restore/RestoreAppsStorage/types\";\nexport { RestoreBackupDeviceAction } from \"./api/device-action/OsUpdate/Restore/RestoreBackup/RestoreBackupDeviceAction\";\nexport type {\n RestoreAppResult,\n RestoreBackupDAError,\n RestoreBackupDAInput,\n RestoreBackupDAIntermediateValue,\n RestoreBackupDAOutput,\n RestoreBackupDARequiredInteraction,\n RestoreBackupDAState,\n RestoreBackupSteps,\n} from \"./api/device-action/OsUpdate/Restore/RestoreBackup/types\";\nexport { RemoveCustomLockScreenDeviceAction } from \"./api/device-action/RemoveCustomLockScreen/RemoveCustomLockScreenDeviceAction\";\nexport type {\n RemoveCustomLockScreenDAError,\n RemoveCustomLockScreenDAInput,\n RemoveCustomLockScreenDAIntermediateValue,\n RemoveCustomLockScreenDAOutput,\n RemoveCustomLockScreenDARequiredInteraction,\n RemoveCustomLockScreenDAState,\n} from \"./api/device-action/RemoveCustomLockScreen/types\";\nexport type {\n UploadCustomLockScreenDAError,\n UploadCustomLockScreenDAInput,\n UploadCustomLockScreenDAIntermediateValue,\n UploadCustomLockScreenDAOutput,\n UploadCustomLockScreenDARequiredInteraction,\n UploadCustomLockScreenDAState,\n} from \"./api/device-action/UploadCustomLockScreen/types\";\nexport { UploadCustomLockScreenDeviceAction } from \"./api/device-action/UploadCustomLockScreen/UploadCustomLockScreenDeviceAction\";\nexport { BackupAppStorageTask } from \"./api/task/OsUpdate/Backup/BackupAppStorageTask\";\nexport {\n RestoreAppStorageTask,\n type RestoreAppStorageTaskArgs,\n type RestoreAppStorageTaskError,\n} from \"./api/task/OsUpdate/Restore/RestoreAppStorageTask\";\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4tEAAAE,EAAAF,GAEA,IAAAG,EAAsC,mEAEtCC,EAAqC,kEAIrCC,EAAkC,uDAClCC,EAAsC,oDAItCC,EAAmD,oEACnDC,EAAuC,mEAOvCC,EAIO,mDAYPC,EAIO,6CACPC,EASO,kEAGPC,EAKO,iEACPC,EAMO,kEACPC,EAKO,yEACPC,EAMO,uEACPC,EAKO,sEACPC,EAMO,mEACPC,EAAqD,6FASrDC,EAAoD,2FASpDC,EAAyC,wEAUzCC,EAAwC,4EASxCC,EAAgD,gFAUhDC,EAA+C,kGAW/CC,EAA0C,wFAW1CC,EAAmD,yFAiBnDC,EAAmD,yFACnDC,EAAqC,2DACrCC,EAIO",
6
+ "names": ["index_exports", "__export", "__toCommonJS", "import_decodeImageFromDevice", "import_encodeImageForDevice", "import_canvasUtils", "import_imageFit", "import_grayscaleDithering", "import_pixelDataRenderer", "import_screenSpecs", "import_types", "import_customLockScreenDeviceActionErrors", "import_BackupAppStorageCommand", "import_GetAppStorageInfoCommand", "import_CommitRestoreAppStorageCommand", "import_InitRestoreAppStorageCommand", "import_RequestMasterConsentCommand", "import_RestoreAppStorageCommand", "import_DownloadCustomLockScreenDeviceAction", "import_GetCustomLockScreenInfoDeviceAction", "import_CreateBackupDeviceAction", "import_CleanDeviceDeviceAction", "import_ResolveOsUpdatePathDeviceAction", "import_RestoreAppsStorageDeviceAction", "import_RestoreBackupDeviceAction", "import_RemoveCustomLockScreenDeviceAction", "import_UploadCustomLockScreenDeviceAction", "import_BackupAppStorageTask", "import_RestoreAppStorageTask"]
7
7
  }
@@ -3,6 +3,7 @@
3
3
  "@ledgerhq/signer-utils": "workspace:*",
4
4
  "pako": "^2.1.0",
5
5
  "purify-ts": "catalog:",
6
+ "semver": "catalog:",
6
7
  "xstate": "catalog:"
7
8
  },
8
9
  "devDependencies": {
@@ -13,6 +14,7 @@
13
14
  "@ledgerhq/tsconfig-dsdk": "workspace:*",
14
15
  "@ledgerhq/vitest-config-dmk": "workspace:*",
15
16
  "@types/pako": "^2.0.3",
17
+ "@types/semver": "catalog:",
16
18
  "ts-node": "catalog:"
17
19
  },
18
20
  "exports": {
@@ -56,5 +58,5 @@
56
58
  "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
59
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
58
60
  },
59
- "version": "0.0.0-develop-20260804002603"
61
+ "version": "0.0.0-develop-20260807010949"
60
62
  }
@@ -0,0 +1,2 @@
1
+ import{isDashboardName as s,UserInteractionRequired as i,XStateDeviceAction as p}from"@ledgerhq/device-management-kit";import{Left as l,Right as u}from"purify-ts";import{assign as a,fromPromise as o,setup as d}from"xstate";import{goToDashboard as c}from"../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard";import{waitForAppAndVersion as h}from"../../../device-action/OsUpdate/Shared/Substeps/WaitForAppAndVersion";import{getOsVersion as v}from"./Substeps/GetOsVersion";import{resolveOsUpdatePath as O}from"./Substeps/ResolveOsUpdatePath";import{ResolveOsUpdatePathSteps as r}from"./types";class E extends p{makeStateMachine(n){return d({types:{input:{},output:{},context:{}},actors:{waitForAppAndVersion:h(n,this.input.unlockTimeout),goToDashboard:c(n,this.input.unlockTimeout),getOsVersion:o(v(n)),resolveOsUpdatePath:o(O(n))},guards:{isDeviceOnDashboard:({context:e})=>s(e._internalState.currentApp),hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:a({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"ResolveOsUpdatePathDeviceAction",initial:"WaitForAppAndVersion",context:({input:e})=>({input:{unlockTimeout:e.unlockTimeout},intermediateValue:{requiredUserInteraction:i.None,step:r.Idle},_internalState:{error:null,currentApp:null,getOsVersionResponse:null,osUpdates:[]}}),states:{WaitForAppAndVersion:{entry:a({intermediateValue:e=>({...e.context.intermediateValue,step:r.WaitForAppAndVersion})}),invoke:{src:"waitForAppAndVersion",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:a({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:a({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,currentApp:t.name})})}),target:"CheckIfDeviceIsOnDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckIfDeviceIsOnDashboard:{always:[{guard:"hasError",target:"Error"},{guard:"isDeviceOnDashboard",target:"GetOsVersion"},{target:"GoToDashboard"}]},GoToDashboard:{entry:a({intermediateValue:e=>({...e.context.intermediateValue,step:r.GoToDashboard})}),invoke:{src:"goToDashboard",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout}),onSnapshot:{actions:a({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:e.context.intermediateValue.step})})},onDone:{actions:a({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:()=>e.context._internalState})}),target:"CheckGoToDashboard"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGoToDashboard:{always:[{guard:"hasError",target:"Error"},{target:"WaitForAppAndVersion"}]},GetOsVersion:{entry:a({intermediateValue:e=>({...e.context.intermediateValue,step:r.GetOsVersion})}),invoke:{src:"getOsVersion",onDone:{actions:a({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,getOsVersionResponse:t})})}),target:"CheckGetOsVersion"},onError:{actions:"assignErrorFromEvent",target:"Error"}}},CheckGetOsVersion:{always:[{guard:"hasError",target:"Error"},{target:"ResolveOsUpdatePath"}]},ResolveOsUpdatePath:{entry:a({intermediateValue:e=>({...e.context.intermediateValue,step:r.ResolveOsUpdatePath})}),invoke:{src:"resolveOsUpdatePath",input:({context:e})=>({getOsVersionResponse:e._internalState.getOsVersionResponse}),onDone:{actions:a({_internalState:e=>e.event.output.caseOf({Left:t=>({...e.context._internalState,error:t}),Right:t=>({...e.context._internalState,osUpdates:t})})}),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?l(e._internalState.error):u(e._internalState.osUpdates)})}}export{E as ResolveOsUpdatePathDeviceAction};
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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": ["isDashboardName", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "goToDashboard", "waitForAppAndVersion", "getOsVersion", "resolveOsUpdatePath", "ResolveOsUpdatePathSteps", "ResolveOsUpdatePathDeviceAction", "internalApi", "context", "_", "input", "error", "output", "getOsVersionResponse", "osUpdates"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceActionStatus as V,UnknownDAError as R,UserInteractionRequired as U}from"@ledgerhq/device-management-kit";import{Left as m,Right as c}from"purify-ts";import{assign as P,createMachine as y}from"xstate";import{makeDeviceActionInternalApiMock as p}from"../../../device-action/__test-utils__/makeInternalApi";import{testDeviceActionStates as d}from"../../../device-action/__test-utils__/testDeviceActionStates";import{ResolveOsUpdatePathDeviceAction as F}from"../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceAction";import{GetOsVersionError as g,ResolveOsUpdatePathError as E}from"../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors";import{getOsVersion as b}from"../../../device-action/OsUpdate/Resolve/Substeps/GetOsVersion";import{resolveOsUpdatePath as T}from"../../../device-action/OsUpdate/Resolve/Substeps/ResolveOsUpdatePath";import{ResolveOsUpdatePathSteps as e}from"../../../device-action/OsUpdate/Resolve/types";import{goToDashboard as W}from"../../../device-action/OsUpdate/Shared/Substeps/GoToDashboard";import{waitForAppAndVersion as O}from"../../../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:V.Pending,intermediateValue:{requiredUserInteraction:U.None,step:n}}),S=n=>({status:V.Completed,output:n}),A=n=>({status:V.Error,error:n}),k=n=>y({initial:"ready",states:{ready:{after:{0:"done"},entry:P({intermediateValue:()=>({requiredUserInteraction:U.None})})},done:{type:"final"}},output:n}),f=n=>k(()=>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 u=(t="BOLOS")=>vi.mocked(O).mockReturnValue(f(c({name:t,version:"1.0.0"}))),D=t=>{const s=[...t];vi.mocked(O).mockReturnValue(k(()=>c({name:s.shift()??"BOLOS",version:"1.0.0"})))},w=(t=c(void 0))=>vi.mocked(W).mockReturnValue(f(t)),l=(t=c(n))=>vi.mocked(b).mockReturnValue(()=>Promise.resolve(t)),h=(t=c(v))=>vi.mocked(T).mockReturnValue(()=>Promise.resolve(t)),i=()=>new F({input:{unlockTimeout:3e4}});describe("Success",()=>{it("Should complete the resolve flow when the device is already on dashboard",()=>new Promise((t,s)=>{u(),l(),h();const r=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GetOsVersion),o(e.ResolveOsUpdatePath),S(v)];d(i(),r,p(),{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)=>{D(["Bitcoin","BOLOS"]),w(),l(),h();const r=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GoToDashboard),o(e.GoToDashboard),o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GetOsVersion),o(e.ResolveOsUpdatePath),S(v)];d(i(),r,p(),{onDone:t,onError:s})}))}),describe("Error",()=>{it("Should go to Error when waitForAppAndVersion returns Left",()=>new Promise((t,s)=>{const r=new R("waitForAppAndVersion failed");vi.mocked(O).mockReturnValue(f(m(r)));const a=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),A(r)];d(i(),a,p(),{onDone:t,onError:s})})),it("Should go to Error when goToDashboard returns Left",()=>new Promise((t,s)=>{u("Bitcoin");const r=new R("goToDashboard failed");w(m(r));const a=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GoToDashboard),o(e.GoToDashboard),A(r)];d(i(),a,p(),{onDone:t,onError:s})})),it("Should go to Error when getOsVersion returns Left",()=>new Promise((t,s)=>{u();const r=new g(new Error("command failed"));l(m(r)),h();const a=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GetOsVersion),A(r)];d(i(),a,p(),{onDone:t,onError:s})})),it("Should go to Error when resolveOsUpdatePath returns Left",()=>new Promise((t,s)=>{u(),l();const r=new E(new Error("manager api failed"));h(m(r));const a=[o(e.WaitForAppAndVersion),o(e.WaitForAppAndVersion),o(e.GetOsVersion),o(e.ResolveOsUpdatePath),A(r)];d(i(),a,p(),{onDone:t,onError:s})}))})});
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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": ["DeviceActionStatus", "UnknownDAError", "UserInteractionRequired", "Left", "Right", "assign", "createMachine", "makeDeviceActionInternalApiMock", "testDeviceActionStates", "ResolveOsUpdatePathDeviceAction", "GetOsVersionError", "ResolveOsUpdatePathError", "getOsVersion", "resolveOsUpdatePath", "ResolveOsUpdatePathSteps", "goToDashboard", "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
+ }
@@ -0,0 +1,2 @@
1
+ class e{_tag="GetOsVersionError";originalError;constructor(r){this.originalError=r}}class n{_tag="ResolveOsUpdatePathError";originalError;constructor(r){this.originalError=r}}export{e as GetOsVersionError,n as ResolveOsUpdatePathError};
2
+ //# sourceMappingURL=ResolveOsUpdatePathDeviceActionErrors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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": "AAEO,MAAMA,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYC,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF,CAEO,MAAMC,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYD,EAAyB,CACnC,KAAK,cAAgBA,CACvB,CACF",
6
+ "names": ["GetOsVersionError", "originalError", "ResolveOsUpdatePathError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{GetOsVersionCommand as s,isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{Left as o,Right as t}from"purify-ts/Either";import{GetOsVersionError as i}from"../../../../device-action/OsUpdate/Resolve/ResolveOsUpdatePathDeviceActionErrors";const O=r=>async()=>{const e=await r.sendCommand(new s);return n(e)?t(e.data):o(new i(e.error.originalError))};export{O as getOsVersion};
2
+ //# sourceMappingURL=GetOsVersion.js.map