@ledgerhq/device-management-kit 0.0.0-fix-rn-ble-20250502082216 → 0.0.0-hid-candidate-20250523130730

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 (284) hide show
  1. package/lib/cjs/package.json +22 -23
  2. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  4. package/lib/cjs/src/api/command/di/commandModule.js +1 -1
  5. package/lib/cjs/src/api/command/di/commandModule.js.map +3 -3
  6. package/lib/cjs/src/api/command/di/commandModule.test.js +1 -1
  7. package/lib/cjs/src/api/command/di/commandModule.test.js.map +2 -2
  8. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  9. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  10. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  11. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  12. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  13. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  14. package/lib/cjs/src/api/device-action/di/deviceActionModule.js +1 -1
  15. package/lib/cjs/src/api/device-action/di/deviceActionModule.js.map +3 -3
  16. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js +1 -1
  17. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  18. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  19. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  20. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  21. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  22. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +1 -1
  23. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  24. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  25. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
  26. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +1 -1
  27. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
  28. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +1 -1
  29. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  30. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  31. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  32. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  33. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +2 -0
  34. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  35. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  36. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  37. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  38. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  39. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +2 -0
  40. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  41. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  42. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  43. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  44. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  45. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +1 -1
  46. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  47. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  48. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  49. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  50. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  51. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  52. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  53. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  54. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  55. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  56. package/lib/cjs/src/api/device-model/model/DeviceModel.js +1 -1
  57. package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +2 -2
  58. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +1 -1
  59. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  60. package/lib/cjs/src/api/index.js +1 -1
  61. package/lib/cjs/src/api/index.js.map +3 -3
  62. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
  63. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  64. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
  65. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  66. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  67. package/lib/cjs/src/api/types.js +1 -1
  68. package/lib/cjs/src/api/types.js.map +1 -1
  69. package/lib/cjs/src/di.js +1 -1
  70. package/lib/cjs/src/di.js.map +2 -2
  71. package/lib/cjs/src/internal/config/di/configModule.js +1 -1
  72. package/lib/cjs/src/internal/config/di/configModule.js.map +3 -3
  73. package/lib/cjs/src/internal/config/di/configModule.test.js +1 -1
  74. package/lib/cjs/src/internal/config/di/configModule.test.js.map +2 -2
  75. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +1 -1
  76. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  77. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  78. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  79. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  80. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  81. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  82. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  83. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  84. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +2 -2
  85. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  86. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  87. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  88. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  89. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  90. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  91. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  92. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  93. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js +1 -1
  94. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  95. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  96. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  97. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  98. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  99. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  100. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  101. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  102. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  103. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  104. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  105. package/lib/cjs/src/internal/send/di/sendModule.js +1 -1
  106. package/lib/cjs/src/internal/send/di/sendModule.js.map +3 -3
  107. package/lib/cjs/src/internal/send/di/sendModule.test.js +1 -1
  108. package/lib/cjs/src/internal/send/di/sendModule.test.js.map +2 -2
  109. package/lib/cjs/src/internal/transport/di/transportModule.js +1 -1
  110. package/lib/cjs/src/internal/transport/di/transportModule.js.map +3 -3
  111. package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
  112. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +2 -2
  113. package/lib/esm/package.json +22 -23
  114. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  115. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  116. package/lib/esm/src/api/command/di/commandModule.js +1 -1
  117. package/lib/esm/src/api/command/di/commandModule.js.map +3 -3
  118. package/lib/esm/src/api/command/di/commandModule.test.js +1 -1
  119. package/lib/esm/src/api/command/di/commandModule.test.js.map +2 -2
  120. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  121. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  122. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  123. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  124. package/lib/esm/src/api/device-action/di/deviceActionModule.js +1 -1
  125. package/lib/esm/src/api/device-action/di/deviceActionModule.js.map +3 -3
  126. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js +1 -1
  127. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  128. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  129. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  130. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  131. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  132. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  133. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  134. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  135. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  136. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  137. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  138. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
  139. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  140. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  141. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  142. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  143. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  144. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
  145. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  146. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  147. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  148. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  149. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  150. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  151. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  152. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  153. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  154. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  155. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  156. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  157. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  158. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  159. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  160. package/lib/esm/src/api/device-model/model/DeviceModel.js +1 -1
  161. package/lib/esm/src/api/device-model/model/DeviceModel.js.map +2 -2
  162. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +1 -1
  163. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  164. package/lib/esm/src/api/index.js +1 -1
  165. package/lib/esm/src/api/index.js.map +3 -3
  166. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
  167. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  168. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
  169. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  170. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  171. package/lib/esm/src/di.js +1 -1
  172. package/lib/esm/src/di.js.map +2 -2
  173. package/lib/esm/src/internal/config/di/configModule.js +1 -1
  174. package/lib/esm/src/internal/config/di/configModule.js.map +3 -3
  175. package/lib/esm/src/internal/config/di/configModule.test.js +1 -1
  176. package/lib/esm/src/internal/config/di/configModule.test.js.map +2 -2
  177. package/lib/esm/src/internal/device-model/di/deviceModelModule.js +1 -1
  178. package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  179. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  180. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  181. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  182. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  183. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  184. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  185. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  186. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +2 -2
  187. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  188. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  189. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  190. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  191. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  192. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  193. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  194. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  195. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js +1 -1
  196. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  197. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  198. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  199. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  200. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  201. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  202. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  203. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  204. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  205. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  206. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  207. package/lib/esm/src/internal/send/di/sendModule.js +1 -1
  208. package/lib/esm/src/internal/send/di/sendModule.js.map +3 -3
  209. package/lib/esm/src/internal/send/di/sendModule.test.js +1 -1
  210. package/lib/esm/src/internal/send/di/sendModule.test.js.map +2 -2
  211. package/lib/esm/src/internal/transport/di/transportModule.js +1 -1
  212. package/lib/esm/src/internal/transport/di/transportModule.js.map +3 -3
  213. package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
  214. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
  215. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
  216. package/lib/types/src/api/apdu/utils/ApduParser.d.ts.map +1 -1
  217. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  218. package/lib/types/src/api/command/di/commandModule.d.ts.map +1 -1
  219. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
  220. package/lib/types/src/api/command/utils/CommandErrors.d.ts.map +1 -1
  221. package/lib/types/src/api/device-action/DeviceAction.d.ts +2 -0
  222. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  223. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  224. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +5 -0
  225. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  226. package/lib/types/src/api/device-action/di/deviceActionModule.d.ts.map +1 -1
  227. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +1 -1
  228. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  229. package/lib/types/src/api/device-action/os/Errors.d.ts +10 -0
  230. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  231. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +5 -6
  232. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
  233. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +3 -4
  234. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
  235. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts +40 -0
  236. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -0
  237. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts +2 -0
  238. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts.map +1 -0
  239. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +64 -0
  240. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -0
  241. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts +15 -0
  242. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -0
  243. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts +2 -0
  244. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts.map +1 -0
  245. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +25 -0
  246. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -0
  247. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +1 -1
  248. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  249. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +30 -0
  250. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -0
  251. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts +2 -0
  252. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts.map +1 -0
  253. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts +21 -0
  254. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts.map +1 -0
  255. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts +2 -0
  256. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts.map +1 -0
  257. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
  258. package/lib/types/src/api/device-model/model/DeviceModel.d.ts +2 -0
  259. package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -1
  260. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -1
  261. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -1
  262. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -1
  263. package/lib/types/src/api/index.d.ts +4 -1
  264. package/lib/types/src/api/index.d.ts.map +1 -1
  265. package/lib/types/src/api/transport/model/Errors.d.ts +5 -0
  266. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  267. package/lib/types/src/api/types.d.ts +3 -1
  268. package/lib/types/src/api/types.d.ts.map +1 -1
  269. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  270. package/lib/types/src/di.d.ts.map +1 -1
  271. package/lib/types/src/internal/config/di/configModule.d.ts.map +1 -1
  272. package/lib/types/src/internal/device-model/di/deviceModelModule.d.ts.map +1 -1
  273. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  274. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  275. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  276. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts.map +1 -1
  277. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  278. package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
  279. package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
  280. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -1
  281. package/lib/types/src/internal/send/di/sendModule.d.ts.map +1 -1
  282. package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
  283. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  284. package/package.json +14 -15
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.ts"],
4
- "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports:0 */\nimport { Left, Right } from \"purify-ts\";\nimport { type Mock } from \"vitest\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport {\n type DeviceActionState,\n DeviceActionStatus,\n} from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type Command } from \"@api/types\";\nimport { UnknownDeviceExchangeError } from \"@root/src\";\n\nimport { CallTaskInAppDeviceAction } from \"./CallTaskInAppDeviceAction\";\nimport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAOutput,\n} from \"./CallTaskInAppDeviceActionTypes\";\n\nvi.mock(\n \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\",\n async (importOriginal) => {\n const original =\n await importOriginal<\n typeof import(\"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\")\n >();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n ...original.OpenAppDeviceAction,\n makeStateMachine: vi.fn(),\n })),\n };\n },\n);\n\nconst setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as Mock).mockImplementation(() => ({\n makeStateMachine: vi.fn().mockImplementation(() =>\n createMachine({\n initial: \"pending\",\n states: {\n pending: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n }),\n after: {\n 0: \"done\",\n },\n },\n done: {\n type: \"final\",\n },\n },\n output: () => (error ? Left(error) : Right(undefined)),\n }),\n ),\n }));\n};\n\ndescribe(\"CallTaskInAppDeviceAction\", () => {\n const callMyTask = vi.fn();\n\n const extractDependenciesMock = () => ({\n callTask: callMyTask,\n });\n\n const { sendCommand: apiSendCommandMock } = makeDeviceActionInternalApiMock();\n\n const commandParams = {\n paramString: \"aParameter\",\n paramNumber: 1234,\n };\n const mockedCommandResponse = {\n aNumber: 5678,\n aString: \"mockedResponseString\",\n };\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"without mocking extractDependencies\", () => {\n it(\"should call sendCommand on internalApi with the correct parameters\", async () => {\n setupOpenAppDAMock();\n apiSendCommandMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n });\n await new Promise<void>((resolve, reject) => {\n deviceAction\n ._execute(makeDeviceActionInternalApiMock())\n .observable.subscribe({\n error: () => reject(),\n complete: () => resolve(),\n next: () => {},\n });\n });\n\n expect(apiSendCommandMock).toHaveBeenCalledWith(\n new TestCommand(commandParams),\n );\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should error and output the error if the open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock(new UnknownDAError(\"Mocked error\"));\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n }),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should error and output an error if the call task fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"success cases\", () => {\n it(\"should succeed and output the command result if the send command succeeds\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({ data: mockedCommandResponse }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: mockedCommandResponse,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should succeed while skipping OpenApp\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({ data: mockedCommandResponse }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: mockedCommandResponse,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n\ntype MyCommandResponse = {\n aNumber: number;\n aString: string;\n};\n\ntype MyCommandParams = {\n paramString: string;\n paramNumber: number;\n};\n\nclass TestCommand implements Command<MyCommandResponse, MyCommandParams> {\n params: MyCommandParams;\n constructor(params: MyCommandParams) {\n this.params = params;\n }\n getApdu(): Apdu {\n return new ApduBuilder({ cla: 0x00, ins: 0x01, p1: 0x02, p2: 0x03 })\n .add32BitUIntToData(this.params.paramNumber)\n .addAsciiStringToData(this.params.paramString)\n .build();\n }\n parseResponse() {\n return CommandResultFactory({ data: { aNumber: 1, aString: \"aString\" } });\n }\n}\n\ntype MyCommandCallTaskDAState = DeviceActionState<\n CallTaskInAppDAOutput<MyCommandResponse>,\n CallTaskInAppDAError<UnknownDAError>,\n CallTaskInAppDAIntermediateValue<\n UserInteractionRequired.None | UserInteractionRequired.VerifyAddress\n >\n>;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports:0 */\nimport { Left, Right } from \"purify-ts\";\nimport { type Mock } from \"vitest\";\nimport { assign, createMachine } from \"xstate\";\n\nimport { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport {\n type DeviceActionState,\n DeviceActionStatus,\n} from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type Command } from \"@api/types\";\nimport { UnknownDeviceExchangeError } from \"@root/src\";\n\nimport { CallTaskInAppDeviceAction } from \"./CallTaskInAppDeviceAction\";\nimport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAOutput,\n} from \"./CallTaskInAppDeviceActionTypes\";\n\nvi.mock(\n \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\",\n async (importOriginal) => {\n const original =\n await importOriginal<\n typeof import(\"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\")\n >();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n ...original.OpenAppDeviceAction,\n makeStateMachine: vi.fn(),\n })),\n };\n },\n);\n\nconst setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as Mock).mockImplementation(() => ({\n makeStateMachine: vi.fn().mockImplementation(() =>\n createMachine({\n initial: \"pending\",\n states: {\n pending: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n }),\n after: {\n 0: \"done\",\n },\n },\n done: {\n type: \"final\",\n },\n },\n output: () => (error ? Left(error) : Right(undefined)),\n }),\n ),\n }));\n};\n\ndescribe(\"CallTaskInAppDeviceAction\", () => {\n const callMyTask = vi.fn();\n\n const extractDependenciesMock = () => ({\n callTask: callMyTask,\n });\n\n const { sendCommand: apiSendCommandMock } = makeDeviceActionInternalApiMock();\n\n const commandParams = {\n paramString: \"aParameter\",\n paramNumber: 1234,\n };\n const mockedCommandResponse = {\n aNumber: 5678,\n aString: \"mockedResponseString\",\n };\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"without mocking extractDependencies\", () => {\n it(\"should call sendCommand on internalApi with the correct parameters\", async () => {\n setupOpenAppDAMock();\n apiSendCommandMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n });\n await new Promise<void>((resolve, reject) => {\n deviceAction\n ._execute(makeDeviceActionInternalApiMock())\n .observable.subscribe({\n error: () => reject(),\n complete: () => resolve(),\n next: () => {},\n });\n });\n\n expect(apiSendCommandMock).toHaveBeenCalledWith(\n new TestCommand(commandParams),\n );\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should error and output the error if the open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock(new UnknownDAError(\"Mocked error\"));\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n }),\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should error and output an error if the call task fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"success cases\", () => {\n it(\"should succeed and output the command result if the send command succeeds\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({ data: mockedCommandResponse }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: mockedCommandResponse,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should succeed while skipping OpenApp\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n callMyTask.mockResolvedValue(\n CommandResultFactory({ data: mockedCommandResponse }),\n );\n\n const deviceAction = new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n await internalApi.sendCommand(new TestCommand(commandParams)),\n appName: \"MyApp\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockImplementation(\n extractDependenciesMock,\n );\n\n const expectedStates: MyCommandCallTaskDAState[] = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: mockedCommandResponse,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n\ntype MyCommandResponse = {\n aNumber: number;\n aString: string;\n};\n\ntype MyCommandParams = {\n paramString: string;\n paramNumber: number;\n};\n\nclass TestCommand implements Command<MyCommandResponse, MyCommandParams> {\n params: MyCommandParams;\n constructor(params: MyCommandParams) {\n this.params = params;\n }\n getApdu(): Apdu {\n return new ApduBuilder({ cla: 0x00, ins: 0x01, p1: 0x02, p2: 0x03 })\n .add32BitUIntToData(this.params.paramNumber)\n .addAsciiStringToData(this.params.paramString)\n .build();\n }\n parseResponse() {\n return CommandResultFactory({ data: { aNumber: 1, aString: \"aString\" } });\n }\n}\n\ntype MyCommandCallTaskDAState = DeviceActionState<\n CallTaskInAppDAOutput<MyCommandResponse>,\n CallTaskInAppDAError<UnknownDAError>,\n CallTaskInAppDAIntermediateValue<\n UserInteractionRequired.None | UserInteractionRequired.VerifyAddress\n >\n>;\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_purify_ts", "import_xstate", "import_ApduBuilder", "import_CommandResult", "import_makeInternalApi", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_OpenAppDeviceAction", "import_src", "import_CallTaskInAppDeviceAction", "importOriginal", "original", "setupOpenAppDAMock", "error", "callMyTask", "extractDependenciesMock", "apiSendCommandMock", "commandParams", "mockedCommandResponse", "deviceAction", "internalApi", "TestCommand", "resolve", "reject", "expectedStates", "params"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.ts"],
4
- "sourcesContent": ["import {\n type CommandErrorResult,\n type CommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type OpenAppDAError,\n type OpenAppDAIntermediateValue,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\n\nexport type CallTaskInAppDAOutput<TaskResponse> = TaskResponse;\n\nexport type CallTaskInAppDAInput<\n TaskResponse,\n TaskErrorCodes,\n UserInteraction,\n> = {\n readonly task: (\n internalApi: InternalApi,\n ) => Promise<CommandResult<TaskResponse, TaskErrorCodes>>;\n readonly appName: string;\n readonly requiredUserInteraction: UserInteraction;\n readonly compatibleAppNames?: string[];\n readonly skipOpenApp?: boolean;\n};\n\nexport type CallTaskInAppDAError<TaskErrorCodes = void> =\n | OpenAppDAError\n | CommandErrorResult<TaskErrorCodes>[\"error\"];\n\nexport type CallTaskInAppDAIntermediateValue<UserInteraction> =\n | { readonly requiredUserInteraction: UserInteraction }\n | OpenAppDAIntermediateValue;\n\nexport type CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes> = {\n readonly taskResponse: TaskResponse | null;\n readonly error: CallTaskInAppDAError<TaskErrorCodes> | null;\n};\n"],
4
+ "sourcesContent": ["import {\n type CommandErrorResult,\n type CommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type OpenAppDAError,\n type OpenAppDAIntermediateValue,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\n\nexport type CallTaskInAppDAOutput<TaskResponse> = TaskResponse;\n\nexport type CallTaskInAppDAInput<\n TaskResponse,\n TaskErrorCodes,\n UserInteraction,\n> = {\n readonly task: (\n internalApi: InternalApi,\n ) => Promise<CommandResult<TaskResponse, TaskErrorCodes>>;\n readonly appName: string;\n readonly skipOpenApp: boolean;\n readonly requiredUserInteraction: UserInteraction;\n readonly compatibleAppNames?: string[];\n};\n\nexport type CallTaskInAppDAError<TaskErrorCodes = void> =\n | OpenAppDAError\n | CommandErrorResult<TaskErrorCodes>[\"error\"];\n\nexport type CallTaskInAppDAIntermediateValue<UserInteraction> =\n | { readonly requiredUserInteraction: UserInteraction }\n | OpenAppDAIntermediateValue;\n\nexport type CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes> = {\n readonly taskResponse: TaskResponse | null;\n readonly error: CallTaskInAppDAError<TaskErrorCodes> | null;\n};\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["CallTaskInAppDeviceActionTypes_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,r)=>{for(var n in r)i(o,n,{get:r[n],enumerable:!0})},s=(o,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of a(r))!l.call(o,e)&&e!==n&&i(o,e,{get:()=>r[e],enumerable:!(t=E(r,e))||t.enumerable});return o};var d=o=>s(i({},"__esModule",{value:!0}),o);var k={};c(k,{DeviceLockedError:()=>m,DeviceNotOnboardedError:()=>g,UnknownDAError:()=>D});module.exports=d(k);class g{_tag="DeviceNotOnboardedError";originalError;constructor(r){this.originalError=new Error(r??"Device not onboarded.")}}class m{_tag="DeviceLockedError";originalError;constructor(r){this.originalError=new Error(r??"Device locked.")}}class D{_tag="UnknownDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}0&&(module.exports={DeviceLockedError,DeviceNotOnboardedError,UnknownDAError});
1
+ "use strict";var i=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var l=(o,r)=>{for(var e in r)i(o,e,{get:r[e],enumerable:!0})},c=(o,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of a(r))!s.call(o,n)&&n!==e&&i(o,n,{get:()=>r[n],enumerable:!(t=E(r,n))||t.enumerable});return o};var m=o=>c(i({},"__esModule",{value:!0}),o);var y={};l(y,{DeviceLockedError:()=>g,DeviceNotOnboardedError:()=>d,OutOfMemoryDAError:()=>p,UnknownDAError:()=>k,UnsupportedFirmwareDAError:()=>D});module.exports=m(y);class d{_tag="DeviceNotOnboardedError";originalError;constructor(r){this.originalError=new Error(r??"Device not onboarded.")}}class g{_tag="DeviceLockedError";originalError;constructor(r){this.originalError=new Error(r??"Device locked.")}}class D{_tag="UnsupportedFirmwareDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class p{_tag="OutOfMemoryDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class k{_tag="UnknownDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}0&&(module.exports={DeviceLockedError,DeviceNotOnboardedError,OutOfMemoryDAError,UnknownDAError,UnsupportedFirmwareDAError});
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/os/Errors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class DeviceNotOnboardedError implements DmkError {\n readonly _tag = \"DeviceNotOnboardedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device not onboarded.\");\n }\n}\n\nexport class DeviceLockedError implements DmkError {\n readonly _tag = \"DeviceLockedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device locked.\");\n }\n}\n\nexport class UnknownDAError implements DmkError {\n readonly _tag = \"UnknownDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,4BAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAL,GAEO,MAAMG,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYG,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMJ,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYI,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMF,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYE,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF",
6
- "names": ["Errors_exports", "__export", "DeviceLockedError", "DeviceNotOnboardedError", "UnknownDAError", "__toCommonJS", "message"]
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class DeviceNotOnboardedError implements DmkError {\n readonly _tag = \"DeviceNotOnboardedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device not onboarded.\");\n }\n}\n\nexport class DeviceLockedError implements DmkError {\n readonly _tag = \"DeviceLockedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device locked.\");\n }\n}\n\nexport class UnsupportedFirmwareDAError implements DmkError {\n readonly _tag = \"UnsupportedFirmwareDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class OutOfMemoryDAError implements DmkError {\n readonly _tag = \"OutOfMemoryDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class UnknownDAError implements DmkError {\n readonly _tag = \"UnknownDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,4BAAAC,EAAA,uBAAAC,EAAA,mBAAAC,EAAA,+BAAAC,IAAA,eAAAC,EAAAP,GAEO,MAAMG,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYK,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMN,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYM,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMF,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYE,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMJ,CAAuC,CACzC,KAAO,qBACP,cAET,YAAYI,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMH,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYG,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF",
6
+ "names": ["Errors_exports", "__export", "DeviceLockedError", "DeviceNotOnboardedError", "OutOfMemoryDAError", "UnknownDAError", "UnsupportedFirmwareDAError", "__toCommonJS", "message"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var s=(t,e,p,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of n(e))!d.call(t,a)&&a!==p&&o(t,a,{get:()=>e[a],enumerable:!(r=i(e,a))||r.enumerable});return t};var l=t=>s(o({},"__esModule",{value:!0}),t);var D={};module.exports=l(D);
1
+ "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var s=(t,e,p,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of n(e))!d.call(t,a)&&a!==p&&o(t,a,{get:()=>e[a],enumerable:!(r=i(e,a))||r.enumerable});return t};var D=t=>s(o({},"__esModule",{value:!0}),t);var l={};module.exports=D(l);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GetDeviceMetadata/types.ts"],
4
- "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDAIntermediateValue,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport {\n type ListAppsDAError,\n type ListAppsDAIntermediateValue,\n} from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDAIntermediateValue,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nexport type GetDeviceMetadataDAOutput = {\n readonly firmwareVersion: FirmwareVersion;\n readonly firmwareUpdateContext: FirmwareUpdateContext;\n readonly applications: Application[];\n readonly applicationsUpdates: Application[];\n readonly installedLanguages: InstalledLanguagePackage[];\n readonly catalog: Catalog;\n readonly customImage: CustomImage;\n};\n\nexport type GetDeviceMetadataDAInput = GoToDashboardDAInput & {\n readonly useSecureChannel?: boolean;\n readonly forceUpdate?: boolean;\n};\n\nexport type GetDeviceMetadataDAError =\n | GoToDashboardDAError\n | ListAppsDAError\n | ListInstalledAppsDAError\n | CommandErrorResult[\"error\"];\n\nexport type GetDeviceMetadataDARequiredInteraction =\n UserInteractionRequired.None;\n\nexport type GetDeviceMetadataDAIntermediateValue =\n | GoToDashboardDAIntermediateValue\n | ListAppsDAIntermediateValue\n | ListInstalledAppsDAIntermediateValue\n | {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n };\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
4
+ "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDARequiredInteraction,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport {\n type ListAppsDAError,\n type ListAppsDARequiredInteraction,\n} from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDARequiredInteraction,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nexport type GetDeviceMetadataDAOutput = {\n readonly firmwareVersion: FirmwareVersion;\n readonly firmwareUpdateContext: FirmwareUpdateContext;\n readonly applications: Application[];\n readonly applicationsUpdates: Application[];\n readonly installedLanguages: InstalledLanguagePackage[];\n readonly catalog: Catalog;\n readonly customImage: CustomImage;\n};\n\nexport type GetDeviceMetadataDAInput = GoToDashboardDAInput & {\n readonly useSecureChannel?: boolean;\n readonly forceUpdate?: boolean;\n};\n\nexport type GetDeviceMetadataDAError =\n | GoToDashboardDAError\n | ListAppsDAError\n | ListInstalledAppsDAError\n | CommandErrorResult[\"error\"];\n\nexport type GetDeviceMetadataDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | ListAppsDARequiredInteraction\n | ListInstalledAppsDARequiredInteraction;\n\nexport type GetDeviceMetadataDAIntermediateValue = {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n};\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var u=(t,e,D,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of n(e))!p.call(t,r)&&r!==D&&a(t,r,{get:()=>e[r],enumerable:!(o=i(e,r))||o.enumerable});return t};var d=t=>u(a({},"__esModule",{value:!0}),t);var s={};module.exports=d(s);
1
+ "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var u=(t,e,D,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!n.call(t,o)&&o!==D&&a(t,o,{get:()=>e[o],enumerable:!(r=i(e,o))||r.enumerable});return t};var d=t=>u(a({},"__esModule",{value:!0}),t);var A={};module.exports=d(A);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GoToDashboard/types.ts"],
4
- "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { type UnknownDAError } from \"@api/device-action/os/Errors\";\nimport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\n\nexport type GoToDashboardDAOutput = void;\nexport type GoToDashboardDAInput = GetDeviceStatusDAInput;\n\nexport type GoToDashboardDAError =\n | GetDeviceStatusDAError\n | UnknownDAError\n | CommandErrorResult[\"error\"];\n\nexport type GoToDashboardDARequiredInteraction = UserInteractionRequired.None;\n\nexport type GoToDashboardDAIntermediateValue =\n | GetDeviceStatusDAIntermediateValue\n | {\n readonly requiredUserInteraction: GoToDashboardDARequiredInteraction;\n };\n\nexport type GoToDashboardDAState = DeviceActionState<\n GoToDashboardDAOutput,\n GoToDashboardDAError,\n GoToDashboardDAIntermediateValue\n>;\n"],
4
+ "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type UnknownDAError } from \"@api/device-action/os/Errors\";\nimport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDARequiredInteraction,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\n\nexport type GoToDashboardDAOutput = void;\nexport type GoToDashboardDAInput = GetDeviceStatusDAInput;\n\nexport type GoToDashboardDAError =\n | GetDeviceStatusDAError\n | UnknownDAError\n | CommandErrorResult[\"error\"];\n\nexport type GoToDashboardDARequiredInteraction =\n GetDeviceStatusDARequiredInteraction;\n\nexport type GoToDashboardDAIntermediateValue = {\n readonly requiredUserInteraction: GoToDashboardDARequiredInteraction;\n};\n\nexport type GoToDashboardDAState = DeviceActionState<\n GoToDashboardDAOutput,\n GoToDashboardDAError,\n GoToDashboardDAIntermediateValue\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var I=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(i,t)=>{for(var l in t)I(i,l,{get:t[l],enumerable:!0})},T=(i,t,l,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of E(t))!U.call(i,o)&&o!==l&&I(i,o,{get:()=>t[o],enumerable:!(p=P(t,o))||p.enumerable});return i};var k=i=>T(I({},"__esModule",{value:!0}),i);var w={};V(w,{InstallOrUpdateAppsDeviceAction:()=>b});module.exports=k(w);var u=require("purify-ts"),n=require("xstate"),s=require("../../../device-action/model/UserInteractionRequired"),S=require("../../../device-action/os/Const"),g=require("../../../device-action/os/Errors"),O=require("../../../device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction"),x=require("../../../device-action/os/GoToDashboard/GoToDashboardDeviceAction"),D=require("../../../device-action/task/BuildAppsInstallPlanTask"),f=require("../../../device-action/task/PredictOutOfMemoryTask"),M=require("../../../device-action/xstate-utils/XStateDeviceAction"),h=require("../../../device-session/DeviceSessionState"),v=require("../../../secure-channel/task/ConnectToSecureChannelTask"),c=require("../../../secure-channel/task/types");class b extends M.XStateDeviceAction{makeStateMachine(t){const{buildInstallPlan:l,predictOutOfMemory:p,installApp:o}=this.extractDependencies(t),r=this.input.unlockTimeout??S.DEFAULT_UNLOCK_TIMEOUT_MS,d=new O.GetDeviceMetadataDeviceAction({input:{unlockTimeout:r,useSecureChannel:!0,forceUpdate:!1}}).makeStateMachine(t),m=new x.GoToDashboardDeviceAction({input:{unlockTimeout:r}}).makeStateMachine(t);return(0,n.setup)({types:{input:{unlockTimeout:r},context:{},output:{}},actors:{updateMetadata:d,buildInstallPlan:(0,n.fromPromise)(l),predictOutOfMemory:(0,n.fromPromise)(p),goToDashboard:m,installApp:(0,n.fromObservable)(o)},guards:{hasError:({context:e})=>e._internalState.error!==null,hasInstallPlan:e=>e.context.intermediateValue.installPlan!==null,hasMoreApps:e=>e.context._internalState.currentIndex<e.context.intermediateValue.installPlan.installPlan.length},actions:{assignErrorFromEvent:(0,n.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})}),nextAppIndex:(0,n.assign)({_internalState:e=>({...e.context._internalState,currentIndex:e.context._internalState.currentIndex+1})}),cleanupDeviceState:()=>{const e=t.getDeviceSessionState();e.sessionStateType!==h.DeviceSessionStateType.Connected&&t.setDeviceSessionState({...e,installedApps:[],appsUpdates:void 0})}}}).createMachine({id:"InstallOrUpdateAppsDeviceAction",initial:"DeviceReady",context:e=>({input:{applications:e.input.applications,allowMissingApplication:e.input.allowMissingApplication,unlockTimeout:e.input.unlockTimeout},intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,installPlan:null},_internalState:{error:null,osVersion:null,currentIndex:0}}),states:{DeviceReady:{always:[{target:"UpdateDeviceMetadata"}]},UpdateDeviceMetadata:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:s.UserInteractionRequired.None})}),invoke:{id:"updateMetadata",src:"updateMetadata",input:e=>({unlockTimeout:e.context.input.unlockTimeout,useSecureChannel:!0,forceUpdate:!1}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"UpdateDeviceMetadataCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:a=>({...e.context._internalState,osVersion:a.firmwareVersion.metadata}),Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},UpdateDeviceMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success",guard:"hasInstallPlan"},{target:"BuildInstallPlan"}]},BuildInstallPlan:{invoke:{src:"buildInstallPlan",input:e=>({applications:e.context.input.applications,allowMissingApplication:e.context.input.allowMissingApplication}),onDone:{target:"BuildInstallPlanCheck",actions:(0,n.assign)({_internalState:e=>"error"in e.event.output?{...e.context._internalState,error:e.event.output.error}:e.context._internalState,intermediateValue:e=>"error"in e.event.output?e.context.intermediateValue:{...e.context.intermediateValue,installPlan:{installPlan:e.event.output.installPlan,alreadyInstalled:e.event.output.alreadyInstalled,missingApplications:e.event.output.missingApplications,currentIndex:0,currentProgress:0}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildInstallPlanCheck:{always:[{guard:"hasError",target:"Error"},{target:"PredictOutOfMemory",guard:"hasMoreApps"},{target:"Success"}]},PredictOutOfMemory:{invoke:{src:"predictOutOfMemory",input:e=>({installPlan:e.context.intermediateValue.installPlan.installPlan}),onDone:{target:"PredictOutOfMemoryCheck",actions:(0,n.assign)({_internalState:e=>"error"in e.event.output?{...e.context._internalState,error:e.event.output.error}:e.event.output.outOfMemory?{...e.context._internalState,error:new g.OutOfMemoryDAError("Not enough memory for those applications")}:e.context._internalState})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PredictOutOfMemoryCheck:{always:[{guard:"hasError",target:"Error"},{target:"GoToDashboard"}]},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:e=>({unlockTimeout:e.context.input.unlockTimeout}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallApp",actions:"cleanupDeviceState"}]},InstallApp:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:s.UserInteractionRequired.None})}),invoke:{id:"installApp",src:"installApp",input:e=>({osVersion:e.context._internalState.osVersion,application:e.context.intermediateValue.installPlan.installPlan[e.context._internalState.currentIndex]}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>{switch(e.event.snapshot.context?.type){case c.SecureChannelEventType.PermissionRequested:return{...e.context.intermediateValue,requiredUserInteraction:s.UserInteractionRequired.AllowSecureConnection};case c.SecureChannelEventType.PermissionGranted:{const a=t.getDeviceSessionState();return a.sessionStateType!==h.DeviceSessionStateType.Connected&&t.setDeviceSessionState({...a,isSecureConnectionAllowed:!0}),{...e.context.intermediateValue,requiredUserInteraction:s.UserInteractionRequired.None}}case c.SecureChannelEventType.Progress:return{...e.context.intermediateValue,installPlan:{...e.context.intermediateValue.installPlan,currentIndex:e.context._internalState.currentIndex,currentProgress:e.event.snapshot.context.payload.progress}};default:return e.context.intermediateValue}}})},onDone:{target:"InstallAppCheck",actions:"nextAppIndex"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},InstallAppCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallApp",guard:"hasMoreApps"},{target:"UpdateDeviceMetadata"}]},Success:{type:"final"},Error:{type:"final"}},output:e=>{const{context:a}=e,{error:y}=a._internalState,{installPlan:A}=a.intermediateValue;return y?(0,u.Left)(y):(0,u.Right)({successfullyInstalled:A.installPlan,alreadyInstalled:A.alreadyInstalled,missingApplications:A.missingApplications})}})}extractDependencies(t){return{buildInstallPlan:async r=>new D.BuildAppsInstallPlanTask(t,{applications:r.input.applications,allowMissingApplication:r.input.allowMissingApplication}).run(),predictOutOfMemory:async r=>new f.PredictOutOfMemoryTask(t,{installPlan:r.input.installPlan}).run(),installApp:r=>{const{osVersion:d,application:m}=r.input,e=t.getSecureChannelService().installApp(d,m);return new v.ConnectToSecureChannelTask(t,{connection:e}).run()}}}}0&&(module.exports={InstallOrUpdateAppsDeviceAction});
2
+ //# sourceMappingURL=InstallOrUpdateAppsDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.ts"],
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { type Observable } from \"rxjs\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { OutOfMemoryDAError } from \"@api/device-action/os/Errors\";\nimport { GetDeviceMetadataDeviceAction } from \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\nimport {\n BuildAppsInstallPlanTask,\n type BuildAppsInstallPlanTaskResult,\n} from \"@api/device-action/task/BuildAppsInstallPlanTask\";\nimport {\n PredictOutOfMemoryTask,\n type PredictOutOfMemoryTaskResult,\n} from \"@api/device-action/task/PredictOutOfMemoryTask\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { type GetOsVersionResponse } from \"@api/index\";\nimport { ConnectToSecureChannelTask } from \"@api/secure-channel/task/ConnectToSecureChannelTask\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport { type SecureChannelEvent } from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n type ApplicationDependency,\n type InstallOrUpdateAppsDAError,\n type InstallOrUpdateAppsDAInput,\n type InstallOrUpdateAppsDAIntermediateValue,\n type InstallOrUpdateAppsDAOutput,\n} from \"./types\";\n\ntype InstallOrUpdateAppsMachineInternalState = {\n readonly error: InstallOrUpdateAppsDAError | null;\n readonly osVersion: GetOsVersionResponse | null;\n readonly currentIndex: number;\n};\n\nexport type MachineDependencies = {\n readonly buildInstallPlan: (arg0: {\n input: {\n applications: ApplicationDependency[];\n allowMissingApplication: boolean;\n };\n }) => Promise<BuildAppsInstallPlanTaskResult>;\n readonly predictOutOfMemory: (arg0: {\n input: {\n installPlan: Application[];\n };\n }) => Promise<PredictOutOfMemoryTaskResult>;\n readonly installApp: (arg0: {\n input: {\n osVersion: GetOsVersionResponse;\n application: Application;\n };\n }) => Observable<SecureChannelEvent>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class InstallOrUpdateAppsDeviceAction extends XStateDeviceAction<\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDAInput,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAIntermediateValue,\n InstallOrUpdateAppsMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDAInput,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAIntermediateValue,\n InstallOrUpdateAppsMachineInternalState\n > {\n type types = StateMachineTypes<\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDAInput,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAIntermediateValue,\n InstallOrUpdateAppsMachineInternalState\n >;\n\n const { buildInstallPlan, predictOutOfMemory, installApp } =\n this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const updateMetadataMachine = new GetDeviceMetadataDeviceAction({\n input: {\n unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n },\n }).makeStateMachine(internalApi);\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n updateMetadata: updateMetadataMachine,\n buildInstallPlan: fromPromise(buildInstallPlan),\n predictOutOfMemory: fromPromise(predictOutOfMemory),\n goToDashboard: goToDashboardMachine,\n installApp: fromObservable(installApp),\n },\n guards: {\n hasError: ({ context }) => context._internalState.error !== null,\n hasInstallPlan: (_) => _.context.intermediateValue.installPlan !== null,\n hasMoreApps: (_) =>\n _.context._internalState.currentIndex <\n _.context.intermediateValue.installPlan!.installPlan.length,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n nextAppIndex: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n currentIndex: _.context._internalState.currentIndex + 1,\n }),\n }),\n cleanupDeviceState: () => {\n // After app successful installation, cleanup the device session state\n // to force fetching the new device state when required\n const state = internalApi.getDeviceSessionState();\n if (state.sessionStateType !== DeviceSessionStateType.Connected) {\n internalApi.setDeviceSessionState({\n ...state,\n installedApps: [],\n appsUpdates: undefined,\n });\n }\n },\n },\n }).createMachine({\n id: \"InstallOrUpdateAppsDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n applications: _.input.applications,\n allowMissingApplication: _.input.allowMissingApplication,\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n _internalState: {\n error: null,\n osVersion: null,\n currentIndex: 0,\n },\n };\n },\n states: {\n DeviceReady: {\n always: [\n {\n target: \"UpdateDeviceMetadata\",\n },\n ],\n },\n UpdateDeviceMetadata: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"updateMetadata\",\n src: \"updateMetadata\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"UpdateDeviceMetadataCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<InstallOrUpdateAppsMachineInternalState>(\n {\n Right: (data) => ({\n ..._.context._internalState,\n osVersion: data.firmwareVersion.metadata!,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n UpdateDeviceMetadataCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Success\",\n guard: \"hasInstallPlan\",\n },\n {\n target: \"BuildInstallPlan\",\n },\n ],\n },\n BuildInstallPlan: {\n invoke: {\n src: \"buildInstallPlan\",\n input: (_) => ({\n applications: _.context.input.applications,\n allowMissingApplication: _.context.input.allowMissingApplication,\n }),\n onDone: {\n target: \"BuildInstallPlanCheck\",\n actions: assign({\n _internalState: (_) => {\n if (\"error\" in _.event.output) {\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n } else {\n return _.context._internalState;\n }\n },\n intermediateValue: (_) => {\n if (\"error\" in _.event.output) {\n return _.context.intermediateValue;\n } else {\n return {\n ..._.context.intermediateValue,\n installPlan: {\n installPlan: _.event.output.installPlan,\n alreadyInstalled: _.event.output.alreadyInstalled,\n missingApplications: _.event.output.missingApplications,\n currentIndex: 0,\n currentProgress: 0,\n },\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildInstallPlanCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"PredictOutOfMemory\",\n guard: \"hasMoreApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n PredictOutOfMemory: {\n invoke: {\n src: \"predictOutOfMemory\",\n input: (_) => ({\n installPlan: _.context.intermediateValue.installPlan!.installPlan,\n }),\n onDone: {\n target: \"PredictOutOfMemoryCheck\",\n actions: assign({\n _internalState: (_) => {\n if (\"error\" in _.event.output) {\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n } else if (_.event.output.outOfMemory) {\n return {\n ..._.context._internalState,\n error: new OutOfMemoryDAError(\n \"Not enough memory for those applications\",\n ),\n };\n } else {\n return _.context._internalState;\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n PredictOutOfMemoryCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n invoke: {\n id: \"goToDashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<InstallOrUpdateAppsMachineInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"InstallApp\",\n actions: \"cleanupDeviceState\",\n },\n ],\n },\n InstallApp: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"installApp\",\n src: \"installApp\",\n input: (_) => ({\n osVersion: _.context._internalState.osVersion!,\n application:\n _.context.intermediateValue.installPlan!.installPlan[\n _.context._internalState.currentIndex\n ]!,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => {\n switch (_.event.snapshot.context?.type) {\n case SecureChannelEventType.PermissionRequested: {\n return {\n ..._.context.intermediateValue,\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n };\n }\n case SecureChannelEventType.PermissionGranted: {\n const deviceState = internalApi.getDeviceSessionState();\n if (\n deviceState.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n internalApi.setDeviceSessionState({\n ...deviceState,\n isSecureConnectionAllowed: true,\n });\n }\n return {\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n };\n }\n case SecureChannelEventType.Progress: {\n return {\n ..._.context.intermediateValue,\n installPlan: {\n ..._.context.intermediateValue.installPlan!,\n currentIndex: _.context._internalState.currentIndex,\n currentProgress:\n _.event.snapshot.context.payload.progress,\n },\n };\n }\n default:\n return _.context.intermediateValue;\n }\n },\n }),\n },\n onDone: {\n target: \"InstallAppCheck\",\n actions: \"nextAppIndex\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n InstallAppCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"InstallApp\",\n guard: \"hasMoreApps\",\n },\n {\n target: \"UpdateDeviceMetadata\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (args) => {\n const { context } = args;\n const { error } = context._internalState;\n const { installPlan } = context.intermediateValue;\n if (error) {\n return Left(error);\n }\n return Right({\n successfullyInstalled: installPlan!.installPlan,\n alreadyInstalled: installPlan!.alreadyInstalled,\n missingApplications: installPlan!.missingApplications,\n });\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const buildInstallPlan = async (arg0: {\n input: {\n applications: ApplicationDependency[];\n allowMissingApplication: boolean;\n };\n }) =>\n new BuildAppsInstallPlanTask(internalApi, {\n applications: arg0.input.applications,\n allowMissingApplication: arg0.input.allowMissingApplication,\n }).run();\n\n const predictOutOfMemory = async (arg0: {\n input: {\n installPlan: Application[];\n };\n }) =>\n new PredictOutOfMemoryTask(internalApi, {\n installPlan: arg0.input.installPlan,\n }).run();\n\n const installApp = (arg0: {\n input: {\n osVersion: GetOsVersionResponse;\n application: Application;\n };\n }) => {\n const { osVersion, application } = arg0.input;\n const connection = internalApi\n .getSecureChannelService()\n .installApp(osVersion, application);\n return new ConnectToSecureChannelTask(internalApi, {\n connection,\n }).run();\n };\n\n return {\n buildInstallPlan,\n predictOutOfMemory,\n installApp,\n };\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4B,qBAE5BC,EAA2D,kBAG3DC,EAAwC,4DACxCC,EAA0C,uCAC1CC,EAAmC,wCACnCC,EAA8C,iFAC9CC,EAA0C,yEAC1CC,EAGO,4DACPC,EAGO,0DAEPC,EAGO,8DACPC,EAAuC,kDAEvCC,EAA2C,+DAC3CC,EAAuC,0CA0ChC,MAAMd,UAAwC,oBAMnD,CACA,iBACEe,EAOA,CASA,KAAM,CAAE,iBAAAC,EAAkB,mBAAAC,EAAoB,WAAAC,CAAW,EACvD,KAAK,oBAAoBH,CAAW,EAEhCI,EAAgB,KAAK,MAAM,eAAiB,4BAE5CC,EAAwB,IAAI,gCAA8B,CAC9D,MAAO,CACL,cAAAD,EACA,iBAAkB,GAClB,YAAa,EACf,CACF,CAAC,EAAE,iBAAiBJ,CAAW,EAEzBM,EAAuB,IAAI,4BAA0B,CACzD,MAAO,CACL,cAAAF,CACF,CACF,CAAC,EAAE,iBAAiBJ,CAAW,EAE/B,SAAO,SAAM,CACX,MAAO,CACL,MAAO,CACL,cAAAI,CACF,EACA,QAAS,CAAC,EACV,OAAQ,CAAC,CACX,EACA,OAAQ,CACN,eAAgBC,EAChB,oBAAkB,eAAYJ,CAAgB,EAC9C,sBAAoB,eAAYC,CAAkB,EAClD,cAAeI,EACf,cAAY,kBAAeH,CAAU,CACvC,EACA,OAAQ,CACN,SAAU,CAAC,CAAE,QAAAI,CAAQ,IAAMA,EAAQ,eAAe,QAAU,KAC5D,eAAiBC,GAAMA,EAAE,QAAQ,kBAAkB,cAAgB,KACnE,YAAcA,GACZA,EAAE,QAAQ,eAAe,aACzBA,EAAE,QAAQ,kBAAkB,YAAa,YAAY,MACzD,EACA,QAAS,CACP,wBAAsB,UAAO,CAC3B,eAAiBA,IAAO,CACtB,GAAGA,EAAE,QAAQ,eACb,MAAOA,EAAE,MAAM,KACjB,EACF,CAAC,EACD,gBAAc,UAAO,CACnB,eAAiBA,IAAO,CACtB,GAAGA,EAAE,QAAQ,eACb,aAAcA,EAAE,QAAQ,eAAe,aAAe,CACxD,EACF,CAAC,EACD,mBAAoB,IAAM,CAGxB,MAAMC,EAAQT,EAAY,sBAAsB,EAC5CS,EAAM,mBAAqB,yBAAuB,WACpDT,EAAY,sBAAsB,CAChC,GAAGS,EACH,cAAe,CAAC,EAChB,YAAa,MACf,CAAC,CAEL,CACF,CACF,CAAC,EAAE,cAAc,CACf,GAAI,kCACJ,QAAS,cACT,QAAUD,IACD,CACL,MAAO,CACL,aAAcA,EAAE,MAAM,aACtB,wBAAyBA,EAAE,MAAM,wBACjC,cAAeA,EAAE,MAAM,aACzB,EACA,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,eAAgB,CACd,MAAO,KACP,UAAW,KACX,aAAc,CAChB,CACF,GAEF,OAAQ,CACN,YAAa,CACX,OAAQ,CACN,CACE,OAAQ,sBACV,CACF,CACF,EACA,qBAAsB,CACpB,QAAM,UAAO,CACX,kBAAoBA,IAAO,CACzB,GAAGA,EAAE,QAAQ,kBACb,wBAAyB,0BAAwB,IACnD,EACF,CAAC,EACD,OAAQ,CACN,GAAI,iBACJ,IAAK,iBACL,MAAQA,IAAO,CACb,cAAeA,EAAE,QAAQ,MAAM,cAC/B,iBAAkB,GAClB,YAAa,EACf,GACA,WAAY,CACV,WAAS,UAAO,CACd,kBAAoBA,IAAO,CACzB,GAAGA,EAAE,QAAQ,kBACb,wBACEA,EAAE,MAAM,SAAS,QAAQ,kBACtB,uBACP,EACF,CAAC,CACH,EACA,OAAQ,CACN,OAAQ,4BACR,WAAS,UAAO,CACd,eAAiBA,GACfA,EAAE,MAAM,OAAO,OACb,CACE,MAAQE,IAAU,CAChB,GAAGF,EAAE,QAAQ,eACb,UAAWE,EAAK,gBAAgB,QAClC,GACA,KAAOC,IAAW,CAChB,GAAGH,EAAE,QAAQ,eACb,MAAAG,CACF,EACF,CACF,CACJ,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,0BAA2B,CACzB,OAAQ,CACN,CACE,OAAQ,QACR,MAAO,UACT,EACA,CACE,OAAQ,UACR,MAAO,gBACT,EACA,CACE,OAAQ,kBACV,CACF,CACF,EACA,iBAAkB,CAChB,OAAQ,CACN,IAAK,mBACL,MAAQH,IAAO,CACb,aAAcA,EAAE,QAAQ,MAAM,aAC9B,wBAAyBA,EAAE,QAAQ,MAAM,uBAC3C,GACA,OAAQ,CACN,OAAQ,wBACR,WAAS,UAAO,CACd,eAAiBA,GACX,UAAWA,EAAE,MAAM,OACd,CACL,GAAGA,EAAE,QAAQ,eACb,MAAOA,EAAE,MAAM,OAAO,KACxB,EAEOA,EAAE,QAAQ,eAGrB,kBAAoBA,GACd,UAAWA,EAAE,MAAM,OACdA,EAAE,QAAQ,kBAEV,CACL,GAAGA,EAAE,QAAQ,kBACb,YAAa,CACX,YAAaA,EAAE,MAAM,OAAO,YAC5B,iBAAkBA,EAAE,MAAM,OAAO,iBACjC,oBAAqBA,EAAE,MAAM,OAAO,oBACpC,aAAc,EACd,gBAAiB,CACnB,CACF,CAGN,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,sBAAuB,CACrB,OAAQ,CACN,CACE,MAAO,WACP,OAAQ,OACV,EACA,CACE,OAAQ,qBACR,MAAO,aACT,EACA,CACE,OAAQ,SACV,CACF,CACF,EACA,mBAAoB,CAClB,OAAQ,CACN,IAAK,qBACL,MAAQA,IAAO,CACb,YAAaA,EAAE,QAAQ,kBAAkB,YAAa,WACxD,GACA,OAAQ,CACN,OAAQ,0BACR,WAAS,UAAO,CACd,eAAiBA,GACX,UAAWA,EAAE,MAAM,OACd,CACL,GAAGA,EAAE,QAAQ,eACb,MAAOA,EAAE,MAAM,OAAO,KACxB,EACSA,EAAE,MAAM,OAAO,YACjB,CACL,GAAGA,EAAE,QAAQ,eACb,MAAO,IAAI,qBACT,0CACF,CACF,EAEOA,EAAE,QAAQ,cAGvB,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,wBAAyB,CACvB,OAAQ,CACN,CACE,MAAO,WACP,OAAQ,OACV,EACA,CACE,OAAQ,eACV,CACF,CACF,EACA,cAAe,CACb,OAAQ,CACN,GAAI,gBACJ,IAAK,gBACL,MAAQA,IAAO,CACb,cAAeA,EAAE,QAAQ,MAAM,aACjC,GACA,WAAY,CACV,WAAS,UAAO,CACd,kBAAoBA,IAAO,CACzB,GAAGA,EAAE,QAAQ,kBACb,wBACEA,EAAE,MAAM,SAAS,QAAQ,kBACtB,uBACP,EACF,CAAC,CACH,EACA,OAAQ,CACN,OAAQ,qBACR,WAAS,UAAO,CACd,eAAiBA,GACfA,EAAE,MAAM,OAAO,OACb,CACE,MAAO,IAAMA,EAAE,QAAQ,eACvB,KAAOG,IAAW,CAChB,GAAGH,EAAE,QAAQ,eACb,MAAAG,CACF,EACF,CACF,CACJ,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,mBAAoB,CAClB,OAAQ,CACN,CACE,OAAQ,QACR,MAAO,UACT,EACA,CACE,OAAQ,aACR,QAAS,oBACX,CACF,CACF,EACA,WAAY,CACV,QAAM,UAAO,CACX,kBAAoBH,IAAO,CACzB,GAAGA,EAAE,QAAQ,kBACb,wBAAyB,0BAAwB,IACnD,EACF,CAAC,EACD,OAAQ,CACN,GAAI,aACJ,IAAK,aACL,MAAQA,IAAO,CACb,UAAWA,EAAE,QAAQ,eAAe,UACpC,YACEA,EAAE,QAAQ,kBAAkB,YAAa,YACvCA,EAAE,QAAQ,eAAe,YAC3B,CACJ,GACA,WAAY,CACV,WAAS,UAAO,CACd,kBAAoBA,GAAM,CACxB,OAAQA,EAAE,MAAM,SAAS,SAAS,KAAM,CACtC,KAAK,yBAAuB,oBAC1B,MAAO,CACL,GAAGA,EAAE,QAAQ,kBACb,wBACE,0BAAwB,qBAC5B,EAEF,KAAK,yBAAuB,kBAAmB,CAC7C,MAAMI,EAAcZ,EAAY,sBAAsB,EACtD,OACEY,EAAY,mBACZ,yBAAuB,WAEvBZ,EAAY,sBAAsB,CAChC,GAAGY,EACH,0BAA2B,EAC7B,CAAC,EAEI,CACL,GAAGJ,EAAE,QAAQ,kBACb,wBAAyB,0BAAwB,IACnD,CACF,CACA,KAAK,yBAAuB,SAC1B,MAAO,CACL,GAAGA,EAAE,QAAQ,kBACb,YAAa,CACX,GAAGA,EAAE,QAAQ,kBAAkB,YAC/B,aAAcA,EAAE,QAAQ,eAAe,aACvC,gBACEA,EAAE,MAAM,SAAS,QAAQ,QAAQ,QACrC,CACF,EAEF,QACE,OAAOA,EAAE,QAAQ,iBACrB,CACF,CACF,CAAC,CACH,EACA,OAAQ,CACN,OAAQ,kBACR,QAAS,cACX,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,gBAAiB,CACf,OAAQ,CACN,CACE,OAAQ,QACR,MAAO,UACT,EACA,CACE,OAAQ,aACR,MAAO,aACT,EACA,CACE,OAAQ,sBACV,CACF,CACF,EACA,QAAS,CACP,KAAM,OACR,EACA,MAAO,CACL,KAAM,OACR,CACF,EACA,OAASK,GAAS,CAChB,KAAM,CAAE,QAAAN,CAAQ,EAAIM,EACd,CAAE,MAAAF,CAAM,EAAIJ,EAAQ,eACpB,CAAE,YAAAO,CAAY,EAAIP,EAAQ,kBAChC,OAAII,KACK,QAAKA,CAAK,KAEZ,SAAM,CACX,sBAAuBG,EAAa,YACpC,iBAAkBA,EAAa,iBAC/B,oBAAqBA,EAAa,mBACpC,CAAC,CACH,CACF,CAAC,CACH,CAEA,oBAAoBd,EAA+C,CAoCjE,MAAO,CACL,iBApCuB,MAAOe,GAM9B,IAAI,2BAAyBf,EAAa,CACxC,aAAce,EAAK,MAAM,aACzB,wBAAyBA,EAAK,MAAM,uBACtC,CAAC,EAAE,IAAI,EA4BP,mBA1ByB,MAAOA,GAKhC,IAAI,yBAAuBf,EAAa,CACtC,YAAae,EAAK,MAAM,WAC1B,CAAC,EAAE,IAAI,EAoBP,WAlBkBA,GAKd,CACJ,KAAM,CAAE,UAAAC,EAAW,YAAAC,CAAY,EAAIF,EAAK,MAClCG,EAAalB,EAChB,wBAAwB,EACxB,WAAWgB,EAAWC,CAAW,EACpC,OAAO,IAAI,6BAA2BjB,EAAa,CACjD,WAAAkB,CACF,CAAC,EAAE,IAAI,CACT,CAMA,CACF,CACF",
6
+ "names": ["InstallOrUpdateAppsDeviceAction_exports", "__export", "InstallOrUpdateAppsDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_GetDeviceMetadataDeviceAction", "import_GoToDashboardDeviceAction", "import_BuildAppsInstallPlanTask", "import_PredictOutOfMemoryTask", "import_XStateDeviceAction", "import_DeviceSessionState", "import_ConnectToSecureChannelTask", "import_types", "internalApi", "buildInstallPlan", "predictOutOfMemory", "installApp", "unlockTimeout", "updateMetadataMachine", "goToDashboardMachine", "context", "_", "state", "data", "error", "deviceState", "args", "installPlan", "arg0", "osVersion", "application", "connection"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var g=require("rxjs"),V=require("../../../device/DeviceStatus"),y=require("../../../device-action/__test-utils__/makeInternalApi"),v=require("../../../device-action/__test-utils__/setupTestMachine"),l=require("../../../device-action/__test-utils__/setupTestMachine"),u=require("../../../device-action/__test-utils__/testDeviceActionStates"),e=require("../../../device-action/model/DeviceActionState"),n=require("../../../device-action/model/UserInteractionRequired"),c=require("../../../device-action/os/Errors"),D=require("../../../device-action/os/Errors"),f=require("../../../device-session/DeviceSessionState"),d=require("../../../secure-channel/task/types"),m=require("./InstallOrUpdateAppsDeviceAction");vi.mock("@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction");vi.mock("@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction");describe("InstallOrUpdateAppsDeviceAction",()=>{const o=(0,y.makeDeviceActionInternalApiMock)(),p=vi.fn(),I=vi.fn(),A=vi.fn();function P(){return{buildInstallPlan:p,predictOutOfMemory:I,installApp:A}}beforeEach(()=>{vi.clearAllMocks(),o.getDeviceSessionState.mockReturnValue({sessionStateType:f.DeviceSessionStateType.Connected,deviceStatus:V.DeviceStatus.CONNECTED})}),describe("success cases",()=>{it("Install two applications",()=>new Promise((r,i)=>{(0,v.setupGoToDashboardMock)(),(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),I.mockResolvedValueOnce({outOfMemory:!1}),A.mockReturnValueOnce((0,g.of)({type:d.SecureChannelEventType.PermissionRequested},{type:d.SecureChannelEventType.PermissionGranted},{type:d.SecureChannelEventType.Progress,payload:{progress:.5}},{type:d.SecureChannelEventType.Progress,payload:{progress:1}})).mockReturnValueOnce((0,g.of)({type:d.SecureChannelEventType.Progress,payload:{progress:.25}},{type:d.SecureChannelEventType.Progress,payload:{progress:.75}},{type:d.SecureChannelEventType.Progress,payload:{progress:1}})),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.AllowSecureConnection,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:.5}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:1}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:1}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:1}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:1,currentProgress:.25}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:1,currentProgress:.75}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:1,currentProgress:1}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:1,currentProgress:1}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:1,currentProgress:1}},status:e.DeviceActionStatus.Pending},{output:{successfullyInstalled:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]},status:e.DeviceActionStatus.Completed}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})})),it("No install is needed",()=>new Promise((r,i)=>{(0,v.setupGoToDashboardMock)(),(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[],alreadyInstalled:["Ethereum","Solana","Bitcoin","XRP"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{output:{successfullyInstalled:[],alreadyInstalled:["Ethereum","Solana","Bitcoin","XRP"],missingApplications:["MyShitCoin"]},status:e.DeviceActionStatus.Completed}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})}))}),describe("error cases",()=>{it("Update device metadata failure",()=>new Promise((r,i)=>{(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}},!0);const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"}],allowMissingApplication:!1}});vi.spyOn(a,"extractDependencies").mockReturnValue(P());const t=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new c.UnknownDAError("GetDeviceMetadata failed"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,t,o,{onDone:r,onError:i})})),it("Build install plan failure",()=>new Promise((r,i)=>{(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"}],allowMissingApplication:!1}});p.mockResolvedValueOnce({error:new c.UnknownDAError("BuildInstallPlan failed")}),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const t=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new c.UnknownDAError("BuildInstallPlan failed"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,t,o,{onDone:r,onError:i})})),it("Predict out of memory failure",()=>new Promise((r,i)=>{(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),I.mockResolvedValueOnce({error:new c.UnknownDAError("PredictOutOfMemory failed")}),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{error:new c.UnknownDAError("PredictOutOfMemory failed"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})})),it("Is out of memory",()=>new Promise((r,i)=>{(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),I.mockResolvedValueOnce({outOfMemory:!0}),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{error:new D.OutOfMemoryDAError("Not enough memory for those applications"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})})),it("Go to dashboard failure",()=>new Promise((r,i)=>{(0,v.setupGoToDashboardMock)(!0),(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),I.mockResolvedValueOnce({outOfMemory:!1}),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{error:new c.UnknownDAError("GoToDashboard failed"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})})),it("Install app failure",()=>new Promise((r,i)=>{(0,v.setupGoToDashboardMock)(),(0,l.setupGetDeviceMetadataMock)({firmwareVersion:{metadata:{targetId:857735172}}});const a=new m.InstallOrUpdateAppsDeviceAction({input:{applications:[{name:"Bitcoin"},{name:"Ethereum"},{name:"Solana"},{name:"XRP"},{name:"MyShitCoin"}],allowMissingApplication:!1}}),t={installPlan:[{versionName:"Bitcoin"},{versionName:"XRP"}],alreadyInstalled:["Ethereum","Solana"],missingApplications:["MyShitCoin"]};p.mockResolvedValueOnce(t),I.mockResolvedValueOnce({outOfMemory:!1}),A.mockReturnValue((0,g.concat)((0,g.of)({type:d.SecureChannelEventType.Exchange,payload:{data:new Uint8Array([0,1,2,3])}}),(0,g.throwError)(()=>new c.UnknownDAError("Secure channel error")))),vi.spyOn(a,"extractDependencies").mockReturnValue(P());const s=[{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,installPlan:{...t,currentIndex:0,currentProgress:0}},status:e.DeviceActionStatus.Pending},{error:new c.UnknownDAError("Secure channel error"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(a,s,o,{onDone:r,onError:i})}))})});
2
+ //# sourceMappingURL=InstallOrUpdateAppsDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.ts"],
4
+ "sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupGetDeviceMetadataMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OutOfMemoryDAError } from \"@api/device-action/os/Errors\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { SecureChannelEventPayload } from \"@api/secure-channel/task/types\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nimport { InstallOrUpdateAppsDeviceAction } from \"./InstallOrUpdateAppsDeviceAction\";\nimport type { InstallOrUpdateAppsDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\n \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\",\n);\n\ndescribe(\"InstallOrUpdateAppsDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const buildInstallPlanMock = vi.fn();\n const predictOutOfMemoryMock = vi.fn();\n const installAppMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n buildInstallPlan: buildInstallPlanMock,\n predictOutOfMemory: predictOutOfMemoryMock,\n installApp: installAppMock,\n };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n });\n\n describe(\"success cases\", () => {\n it(\"Install two applications\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n installAppMock\n .mockReturnValueOnce(\n of(\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.5 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1 },\n },\n ),\n )\n .mockReturnValueOnce(\n of(\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.25 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.75 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1 },\n },\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp install first app\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0.5,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp install second app\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 0.25,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 0.75,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 1,\n currentProgress: 1,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n successfullyInstalled: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as unknown as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"No install is needed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Solana\", \"Bitcoin\", \"XRP\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n successfullyInstalled: [],\n alreadyInstalled: [\"Ethereum\", \"Solana\", \"Bitcoin\", \"XRP\"],\n missingApplications: [\"MyShitCoin\"],\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n\n describe(\"error cases\", () => {\n it(\"Update device metadata failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock(\n {\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput,\n true,\n );\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [{ name: \"Bitcoin\" }],\n allowMissingApplication: false,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"GetDeviceMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Build install plan failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [{ name: \"Bitcoin\" }],\n allowMissingApplication: false,\n },\n });\n\n buildInstallPlanMock.mockResolvedValueOnce({\n error: new UnknownDAError(\"BuildInstallPlan failed\"),\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"BuildInstallPlan failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Predict out of memory failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n error: new UnknownDAError(\"PredictOutOfMemory failed\"),\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"PredictOutOfMemory failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Is out of memory\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: true,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new OutOfMemoryDAError(\n \"Not enough memory for those applications\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Go to dashboard failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"Install app failure\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupGetDeviceMetadataMock({\n firmwareVersion: {\n metadata: {\n targetId: 0x33200004,\n },\n },\n } as unknown as GetDeviceMetadataDAOutput);\n const deviceAction = new InstallOrUpdateAppsDeviceAction({\n input: {\n applications: [\n { name: \"Bitcoin\" },\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"XRP\" },\n { name: \"MyShitCoin\" },\n ],\n allowMissingApplication: false,\n },\n });\n const installPlan = {\n installPlan: [\n { versionName: \"Bitcoin\" },\n { versionName: \"XRP\" },\n ] as Application[],\n alreadyInstalled: [\"Ethereum\", \"Solana\"],\n missingApplications: [\"MyShitCoin\"],\n };\n\n buildInstallPlanMock.mockResolvedValueOnce(installPlan);\n predictOutOfMemoryMock.mockResolvedValueOnce({\n outOfMemory: false,\n });\n installAppMock.mockReturnValue(\n concat(\n of({\n type: SecureChannelEventType.Exchange,\n payload: {\n data: new Uint8Array([0x00, 0x01, 0x02, 0x03]),\n } as SecureChannelEventPayload[\"Exchange\"],\n }),\n throwError(() => new UnknownDAError(\"Secure channel error\")),\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<InstallOrUpdateAppsDAState> = [\n // UpdateDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // BuildInstallPlan\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n status: DeviceActionStatus.Pending,\n },\n // PredictOutOfMemory\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallApp\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: {\n ...installPlan,\n currentIndex: 0,\n currentProgress: 0,\n },\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n error: new UnknownDAError(\"Secure channel error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAuC,gBAEvCC,EAA6B,oCAC7BC,EAAgD,6DAChDC,EAAuC,8DACvCA,EAA2C,8DAC3CC,EAAuC,oEACvCC,EAAmC,sDACnCC,EAAwC,4DACxCC,EAA+B,wCAC/BA,EAAmC,wCAGnCC,EAAuC,kDAEvCC,EAAuC,0CAGvCC,EAAgD,6CAGhD,GAAG,KAAK,+DAA+D,EACvE,GAAG,KACD,uEACF,EAEA,SAAS,kCAAmC,IAAM,CAChD,MAAMC,KAAU,mCAAgC,EAC1CC,EAAuB,GAAG,GAAG,EAC7BC,EAAyB,GAAG,GAAG,EAC/BC,EAAiB,GAAG,GAAG,EAE7B,SAASC,GAA0B,CACjC,MAAO,CACL,iBAAkBH,EAClB,mBAAoBC,EACpB,WAAYC,CACd,CACF,CAEA,WAAW,IAAM,CACf,GAAG,cAAc,EACjBH,EAAQ,sBAAsB,gBAAgB,CAC5C,iBAAkB,yBAAuB,UACzC,aAAc,eAAa,SAC7B,CAAuB,CACzB,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,2BAA4B,IAC7B,IAAI,QAAc,CAACK,EAASC,IAAW,IACrC,0BAAuB,KACvB,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CACX,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtDN,EAAuB,sBAAsB,CAC3C,YAAa,EACf,CAAC,EACDC,EACG,uBACC,MACE,CACE,KAAM,yBAAuB,mBAC/B,EACA,CACE,KAAM,yBAAuB,iBAC/B,EACA,CACE,KAAM,yBAAuB,SAC7B,QAAS,CAAE,SAAU,EAAI,CAC3B,EACA,CACE,KAAM,yBAAuB,SAC7B,QAAS,CAAE,SAAU,CAAE,CACzB,CACF,CACF,EACC,uBACC,MACE,CACE,KAAM,yBAAuB,SAC7B,QAAS,CAAE,SAAU,GAAK,CAC5B,EACA,CACE,KAAM,yBAAuB,SAC7B,QAAS,CAAE,SAAU,GAAK,CAC5B,EACA,CACE,KAAM,yBAAuB,SAC7B,QAAS,CAAE,SAAU,CAAE,CACzB,CACF,CACF,EACF,GAAG,MAAMI,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGD,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBACE,0BAAwB,sBAC1B,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,EACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,GACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,GACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,OAAQ,CACN,sBAAuB,CACrB,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EACA,OAAQ,qBAAmB,SAC7B,CACF,KAEA,0BAAuBD,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,uBAAwB,IACzB,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,0BAAuB,KACvB,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CAAC,EACd,iBAAkB,CAAC,WAAY,SAAU,UAAW,KAAK,EACzD,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtD,GAAG,MAAMD,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,OAAQ,CACN,sBAAuB,CAAC,EACxB,iBAAkB,CAAC,WAAY,SAAU,UAAW,KAAK,EACzD,oBAAqB,CAAC,YAAY,CACpC,EACA,OAAQ,qBAAmB,SAC7B,CACF,KAEA,0BAAuBF,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,CACN,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,iCAAkC,IACnC,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,8BACE,CACE,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,EACA,EACF,EACA,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CAAC,CAAE,KAAM,SAAU,CAAC,EAClC,wBAAyB,EAC3B,CACF,CAAC,EACD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,0BAA0B,EACpD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBF,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,6BAA8B,IAC/B,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CAAC,CAAE,KAAM,SAAU,CAAC,EAClC,wBAAyB,EAC3B,CACF,CAAC,EAEDN,EAAqB,sBAAsB,CACzC,MAAO,IAAI,iBAAe,yBAAyB,CACrD,CAAC,EACD,GAAG,MAAMM,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,yBAAyB,EACnD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBF,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,gCAAiC,IAClC,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CACX,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtDN,EAAuB,sBAAsB,CAC3C,MAAO,IAAI,iBAAe,2BAA2B,CACvD,CAAC,EACD,GAAG,MAAMK,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGD,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,2BAA2B,EACrD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBD,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,mBAAoB,IACrB,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CACX,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtDN,EAAuB,sBAAsB,CAC3C,YAAa,EACf,CAAC,EACD,GAAG,MAAMK,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGD,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,qBACT,0CACF,EACA,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBD,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,0BAA2B,IAC5B,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,0BAAuB,EAAI,KAC3B,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CACX,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtDN,EAAuB,sBAAsB,CAC3C,YAAa,EACf,CAAC,EACD,GAAG,MAAMK,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGD,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,sBAAsB,EAChD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBD,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,EAEJ,GAAG,sBAAuB,IACxB,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,0BAAuB,KACvB,8BAA2B,CACzB,gBAAiB,CACf,SAAU,CACR,SAAU,SACZ,CACF,CACF,CAAyC,EACzC,MAAMC,EAAe,IAAI,kCAAgC,CACvD,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,SAAU,EAClB,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,YAAa,CACvB,EACA,wBAAyB,EAC3B,CACF,CAAC,EACKC,EAAc,CAClB,YAAa,CACX,CAAE,YAAa,SAAU,EACzB,CAAE,YAAa,KAAM,CACvB,EACA,iBAAkB,CAAC,WAAY,QAAQ,EACvC,oBAAqB,CAAC,YAAY,CACpC,EAEAP,EAAqB,sBAAsBO,CAAW,EACtDN,EAAuB,sBAAsB,CAC3C,YAAa,EACf,CAAC,EACDC,EAAe,mBACb,aACE,MAAG,CACD,KAAM,yBAAuB,SAC7B,QAAS,CACP,KAAM,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,CAC/C,CACF,CAAC,KACD,cAAW,IAAM,IAAI,iBAAe,sBAAsB,CAAC,CAC7D,CACF,EACA,GAAG,MAAMI,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EAEA,MAAMK,EAAoD,CAExD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,IACf,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGD,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,YAAa,CACX,GAAGA,EACH,aAAc,EACd,gBAAiB,CACnB,CACF,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,sBAAsB,EAChD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BAAuBD,EAAcE,EAAgBT,EAAS,CAC5D,OAAQK,EACR,QAASC,CACX,CAAC,CACH,CAAC,CAAC,CACN,CAAC,CACH,CAAC",
6
+ "names": ["import_rxjs", "import_DeviceStatus", "import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_DeviceSessionState", "import_types", "import_InstallOrUpdateAppsDeviceAction", "apiMock", "buildInstallPlanMock", "predictOutOfMemoryMock", "installAppMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "installPlan", "expectedStates"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var s=(t,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of i(e))!l.call(t,r)&&r!==o&&n(t,r,{get:()=>e[r],enumerable:!(a=p(e,r))||a.enumerable});return t};var d=t=>s(n({},"__esModule",{value:!0}),t);var c={};module.exports=d(c);
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallOrUpdateApps/types.ts"],
4
+ "sourcesContent": ["import type { CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport type { DeviceModelId } from \"@api/device/DeviceModel\";\nimport type { DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport type { OutOfMemoryDAError } from \"@api/device-action/os/Errors\";\nimport type {\n GetDeviceMetadataDAError,\n GetDeviceMetadataDARequiredInteraction,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { GoToDashboardDARequiredInteraction } from \"@api/device-action/os/GoToDashboard/types\";\nimport type { GoToDashboardDAInput } from \"@api/device-action/os/GoToDashboard/types\";\nimport type { InstallAppDAError } from \"@api/secure-channel/device-action/InstallApp/types\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\n/**\n * An application version used as application constraint should either be a valid semantic versioning formatted\n * string, or \"latest\" to ensure the app is always up-to-date.\n */\nexport type ApplicationVersionConstraint =\n | `${number}.${number}.${number}`\n | `${number}.${number}.${number}-${string}`\n | `${number}.${number}.${number}+${string}`\n | `${number}.${number}.${number}-${string}+${string}`\n | \"latest\";\n\nexport type ApplicationConstraint = {\n /**\n * Required minimal version of the application, if already installed on the device.\n */\n readonly minVersion: ApplicationVersionConstraint;\n\n /**\n * List of device models that require the minVersion.\n */\n readonly applicableModels?: DeviceModelId[];\n\n /**\n * List of device models that do not require the minVersion.\n */\n readonly exemptModels?: DeviceModelId[];\n};\n\nexport type ApplicationDependency = {\n /**\n * Name of the application to install.\n */\n readonly name: string;\n\n /**\n * List of constraints for the application.\n * If no constraints are provided, no version checks are performed.\n * If the current device model is not concerned by any listed contraints, no version checks are performed.\n */\n readonly constraints?: ApplicationConstraint[];\n};\n\nexport type InstallPlan = {\n readonly installPlan: Application[];\n readonly alreadyInstalled: string[];\n readonly missingApplications: string[];\n readonly currentIndex: number;\n readonly currentProgress: number;\n};\n\nexport type InstallOrUpdateAppsDAOutput = {\n readonly successfullyInstalled: Application[];\n readonly alreadyInstalled: string[];\n readonly missingApplications: string[];\n};\n\nexport type InstallOrUpdateAppsDAInput = GoToDashboardDAInput & {\n readonly applications: ApplicationDependency[];\n readonly allowMissingApplication: boolean;\n};\n\nexport type InstallOrUpdateAppsDAError =\n | GetDeviceMetadataDAError\n | InstallAppDAError\n | OutOfMemoryDAError\n | CommandErrorResult[\"error\"];\n\nexport type InstallOrUpdateAppsDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | GetDeviceMetadataDARequiredInteraction;\n\nexport type InstallOrUpdateAppsDAIntermediateValue = {\n requiredUserInteraction: InstallOrUpdateAppsDARequiredInteraction;\n installPlan: InstallPlan | null;\n};\n\nexport type InstallOrUpdateAppsDAState = DeviceActionState<\n InstallOrUpdateAppsDAOutput,\n InstallOrUpdateAppsDAError,\n InstallOrUpdateAppsDAIntermediateValue\n>;\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["types_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var g=(p,t)=>{for(var i in t)l(p,i,{get:t[i],enumerable:!0})},y=(p,t,i,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!f.call(p,r)&&r!==i&&l(p,r,{get:()=>t[r],enumerable:!(c=I(t,r))||c.enumerable});return p};var E=p=>y(l({},"__esModule",{value:!0}),p);var k={};g(k,{OpenAppWithDependenciesDeviceAction:()=>W});module.exports=E(k);var s=require("purify-ts"),n=require("xstate"),o=require("../../../device-action/model/UserInteractionRequired"),d=require("../../../device-action/os/Const"),m=require("../../../device-action/os/Errors"),A=require("../../../device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction"),h=require("../../../device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction"),D=require("../../../device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),O=require("../../../device-action/xstate-utils/XStateDeviceAction");class W extends O.XStateDeviceAction{makeStateMachine(t){const i=this.input.unlockTimeout??d.DEFAULT_UNLOCK_TIMEOUT_MS,c=new A.GetDeviceMetadataDeviceAction({input:{unlockTimeout:i,useSecureChannel:!0,forceUpdate:!1}}).makeStateMachine(t),r=new h.InstallOrUpdateAppsDeviceAction({input:{unlockTimeout:i,applications:[...this.input.dependencies,this.input.application],allowMissingApplication:!1}}).makeStateMachine(t),v=new D.OpenAppDeviceAction({input:{unlockTimeout:i,appName:this.input.application.name,compatibleAppNames:this.input.compatibleAppNames}}).makeStateMachine(t);return(0,n.setup)({types:{input:{unlockTimeout:i},context:{},output:{}},actors:{getMetadata:c,installApps:r,openApp:v},guards:{hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorFromEvent:(0,n.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"OpenAppWithDependenciesDeviceAction",initial:"DeviceReady",context:e=>({input:{application:e.input.application,dependencies:e.input.dependencies,compatibleAppNames:e.input.compatibleAppNames,requireLatestFirmware:e.input.requireLatestFirmware,unlockTimeout:e.input.unlockTimeout},intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,installPlan:null},_internalState:{error:null,deviceMetadata:null,installResult:null}}),states:{DeviceReady:{always:[{target:"GetDeviceMetadata"}]},GetDeviceMetadata:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{id:"getMetadata",src:"getMetadata",input:e=>({unlockTimeout:e.context.input.unlockTimeout,useSecureChannel:!0,forceUpdate:!1}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GetDeviceMetadataCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:a=>e.context.input.requireLatestFirmware&&a.firmwareUpdateContext.availableUpdate!==void 0?{...e.context._internalState,error:new m.UnsupportedFirmwareDAError("Firmware is not the latest version")}:{...e.context._internalState,deviceMetadata:a},Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallDependencies"}]},InstallDependencies:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{src:"installApps",input:e=>({unlockTimeout:e.context.input.unlockTimeout,applications:[...e.context.input.dependencies,e.context.input.application],allowMissingApplication:!1}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:e.event.snapshot.context.intermediateValue.installPlan})})},onDone:{target:"InstallDependenciesCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:a=>({...e.context._internalState,installResult:a}),Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},InstallDependenciesCheck:{always:[{guard:"hasError",target:"Error"},{target:"OpenApp"}]},OpenApp:{exit:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:o.UserInteractionRequired.None})}),invoke:{src:"openApp",input:e=>({unlockTimeout:e.context.input.unlockTimeout,appName:e.context.input.application.name,compatibleAppNames:this.input.compatibleAppNames}),onSnapshot:{actions:(0,n.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:e.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:null})})},onDone:{target:"OpenAppCheck",actions:(0,n.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:a=>({...e.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},OpenAppCheck:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:e=>{const{context:a}=e,{error:u,deviceMetadata:M,installResult:S}=a._internalState;return u?(0,s.Left)(u):(0,s.Right)({deviceMetadata:M,installResult:S})}})}}0&&(module.exports={OpenAppWithDependenciesDeviceAction});
2
+ //# sourceMappingURL=OpenAppWithDependenciesDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.ts"],
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, setup } from \"xstate\";\n\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { UnsupportedFirmwareDAError } from \"@api/device-action/os/Errors\";\nimport { GetDeviceMetadataDeviceAction } from \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport { InstallOrUpdateAppsDeviceAction } from \"@api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction\";\nimport type { InstallOrUpdateAppsDAOutput } from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n type OpenAppWithDependenciesDAError,\n type OpenAppWithDependenciesDAInput,\n type OpenAppWithDependenciesDAIntermediateValue,\n type OpenAppWithDependenciesDAOutput,\n} from \"./types\";\n\ntype OpenAppWithDependenciesMachineInternalState = {\n readonly error: OpenAppWithDependenciesDAError | null;\n readonly deviceMetadata: GetDeviceMetadataDAOutput | null;\n readonly installResult: InstallOrUpdateAppsDAOutput | null;\n};\n\nexport class OpenAppWithDependenciesDeviceAction extends XStateDeviceAction<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n > {\n type types = StateMachineTypes<\n OpenAppWithDependenciesDAOutput,\n OpenAppWithDependenciesDAInput,\n OpenAppWithDependenciesDAError,\n OpenAppWithDependenciesDAIntermediateValue,\n OpenAppWithDependenciesMachineInternalState\n >;\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const getMetadataMachine = new GetDeviceMetadataDeviceAction({\n input: {\n unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n },\n }).makeStateMachine(internalApi);\n\n const installAppsMachine = new InstallOrUpdateAppsDeviceAction({\n input: {\n unlockTimeout,\n applications: [...this.input.dependencies, this.input.application],\n allowMissingApplication: false,\n },\n }).makeStateMachine(internalApi);\n\n const openAppMachine = new OpenAppDeviceAction({\n input: {\n unlockTimeout,\n appName: this.input.application.name,\n compatibleAppNames: this.input.compatibleAppNames,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getMetadata: getMetadataMachine,\n installApps: installAppsMachine,\n openApp: openAppMachine,\n },\n guards: {\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n id: \"OpenAppWithDependenciesDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n application: _.input.application,\n dependencies: _.input.dependencies,\n compatibleAppNames: _.input.compatibleAppNames,\n requireLatestFirmware: _.input.requireLatestFirmware,\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n installPlan: null,\n },\n _internalState: {\n error: null,\n deviceMetadata: null,\n installResult: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: [\n {\n target: \"GetDeviceMetadata\",\n },\n ],\n },\n GetDeviceMetadata: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"getMetadata\",\n src: \"getMetadata\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n useSecureChannel: true,\n forceUpdate: false,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GetDeviceMetadataCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: (data) => {\n if (\n _.context.input.requireLatestFirmware &&\n data.firmwareUpdateContext.availableUpdate !==\n undefined\n ) {\n return {\n ..._.context._internalState,\n error: new UnsupportedFirmwareDAError(\n \"Firmware is not the latest version\",\n ),\n };\n } else {\n return {\n ..._.context._internalState,\n deviceMetadata: data,\n };\n }\n },\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetDeviceMetadataCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"InstallDependencies\",\n },\n ],\n },\n InstallDependencies: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n src: \"installApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n applications: [\n ..._.context.input.dependencies,\n _.context.input.application,\n ],\n allowMissingApplication: false,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n installPlan:\n _.event.snapshot.context.intermediateValue.installPlan,\n }),\n }),\n },\n onDone: {\n target: \"InstallDependenciesCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: (data) => ({\n ..._.context._internalState,\n installResult: data,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n InstallDependenciesCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"OpenApp\",\n },\n ],\n },\n OpenApp: {\n exit: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n src: \"openApp\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n appName: _.context.input.application.name,\n compatibleAppNames: this.input.compatibleAppNames,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n installPlan: null,\n }),\n }),\n },\n onDone: {\n target: \"OpenAppCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<OpenAppWithDependenciesMachineInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n ),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n OpenAppCheck: {\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: (args) => {\n const { context } = args;\n const { error, deviceMetadata, installResult } = context._internalState;\n if (error) {\n return Left(error);\n }\n return Right({\n deviceMetadata: deviceMetadata!,\n installResult: installResult!,\n });\n },\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["OpenAppWithDependenciesDeviceAction_exports", "__export", "OpenAppWithDependenciesDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_GetDeviceMetadataDeviceAction", "import_InstallOrUpdateAppsDeviceAction", "import_OpenAppDeviceAction", "import_XStateDeviceAction", "internalApi", "unlockTimeout", "getMetadataMachine", "installAppsMachine", "openAppMachine", "context", "_", "data", "error", "args", "deviceMetadata", "installResult"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var D=require("../../../device-action/__test-utils__/makeInternalApi"),n=require("../../../device-action/__test-utils__/setupTestMachine"),p=require("../../../device-action/__test-utils__/testDeviceActionStates"),e=require("../../../device-action/model/DeviceActionState"),t=require("../../../device-action/model/UserInteractionRequired"),d=require("../../../device-action/os/Errors"),l=require("./OpenAppWithDependenciesDeviceAction");vi.mock("@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction");vi.mock("@api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction");vi.mock("@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction");describe("OpenAppWithDependenciesDeviceAction",()=>{const c=(0,D.makeDeviceActionInternalApiMock)(),u={firmwareUpdateContext:{}},s={requiredUserInteraction:t.UserInteractionRequired.None,installPlan:{installPlan:[{versionName:"1inch"}],alreadyInstalled:["Ethereum","Uniswap"],missingApplications:[""],currentIndex:0,currentProgress:.5}},m={successfullyInstalled:[{versionName:"1inch"}],alreadyInstalled:["Ethereum","Uniswap"],missingApplications:[""]};beforeEach(()=>{vi.clearAllMocks()}),describe("success cases",()=>{it("Open app with dependencies",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u),(0,n.setupInstallOrUpdateAppsMock)(m,s),(0,n.setupOpenAppMock)();const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.ConfirmOpenApp,installPlan:null},status:e.DeviceActionStatus.Pending},{output:{deviceMetadata:u,installResult:m},status:e.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})}))}),describe("error cases",()=>{it("Get device metadata error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u,!0);const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("GetDeviceMetadata failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})})),it("Unsupported firmware",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)({firmwareUpdateContext:{availableUpdate:"mockUpdate"}});const r=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!0}}),A=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnsupportedFirmwareDAError("Firmware is not the latest version"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(r,A,c,{onDone:a,onError:i})})),it("Install apps error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)({firmwareUpdateContext:{availableUpdate:"mockUpdate"}}),(0,n.setupInstallOrUpdateAppsMock)(m,s,!0);const r=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),A=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("InstallOrUpdateApps failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(r,A,c,{onDone:a,onError:i})})),it("Open app error",()=>new Promise((a,i)=>{(0,n.setupGetDeviceMetadataMock)(u),(0,n.setupInstallOrUpdateAppsMock)(m,s),(0,n.setupOpenAppMock)(!0);const o=new l.OpenAppWithDependenciesDeviceAction({input:{application:{name:"Ethereum"},dependencies:[{name:"Uniswap"},{name:"1inch"}],requireLatestFirmware:!1}}),r=[{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None,installPlan:null},status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:s,status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.ConfirmOpenApp,installPlan:null},status:e.DeviceActionStatus.Pending},{error:new d.UnknownDAError("OpenApp failed"),status:e.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(o,r,c,{onDone:a,onError:i})}))})});
2
+ //# sourceMappingURL=OpenAppWithDependenciesDeviceAction.test.js.map