@ledgerhq/device-management-kit 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/README.md +63 -28
  2. package/lib/cjs/package.json +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  4. package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
  5. package/lib/cjs/src/api/apdu/utils/ApduBuilder.js +1 -1
  6. package/lib/cjs/src/api/apdu/utils/ApduBuilder.js.map +3 -3
  7. package/lib/cjs/src/api/command/os/GetBackgroundImageSizeCommand.js +2 -0
  8. package/lib/cjs/src/api/command/os/GetBackgroundImageSizeCommand.js.map +7 -0
  9. package/lib/cjs/src/api/command/os/GetBackgroundImageSizeCommand.test.js +2 -0
  10. package/lib/cjs/src/api/command/os/GetBackgroundImageSizeCommand.test.js.map +7 -0
  11. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  12. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  13. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  14. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  15. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  16. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  17. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  18. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  19. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  20. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  21. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  22. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  23. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -1
  24. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +3 -3
  25. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  26. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +2 -2
  27. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  28. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  29. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
  30. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +3 -3
  31. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  32. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  33. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  34. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  35. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/types.js +1 -1
  36. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/types.js.map +3 -3
  37. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  38. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  39. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  40. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  41. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
  42. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +3 -3
  43. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
  44. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +2 -2
  45. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +1 -1
  46. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +2 -2
  47. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -1
  48. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +3 -3
  49. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  50. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +3 -3
  51. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +1 -1
  52. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +3 -3
  53. package/lib/cjs/src/api/device-action/os/ListApps/types.js +1 -1
  54. package/lib/cjs/src/api/device-action/os/ListApps/types.js.map +3 -3
  55. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  56. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +3 -3
  57. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  58. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  59. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/types.js +1 -1
  60. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/types.js.map +3 -3
  61. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  62. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  63. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  64. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  65. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -1
  66. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +3 -3
  67. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
  68. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +3 -3
  69. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +1 -1
  70. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +3 -3
  71. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -1
  72. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +3 -3
  73. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  74. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +3 -3
  75. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  76. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +3 -3
  77. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -1
  78. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +3 -3
  79. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  80. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  81. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  82. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +3 -3
  83. package/lib/cjs/src/api/index.js +1 -1
  84. package/lib/cjs/src/api/index.js.map +3 -3
  85. package/lib/cjs/src/api/logger-publisher/utils/noopLoggerFactory.js +2 -0
  86. package/lib/cjs/src/api/logger-publisher/utils/noopLoggerFactory.js.map +7 -0
  87. package/lib/cjs/src/api/logger-publisher/utils/noopLoggerFactory.test.js +2 -0
  88. package/lib/cjs/src/api/logger-publisher/utils/noopLoggerFactory.test.js.map +7 -0
  89. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  90. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +2 -2
  91. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  92. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  93. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  94. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  95. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js +1 -1
  96. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +3 -3
  97. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  98. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  99. package/lib/cjs/src/api/types.js +1 -1
  100. package/lib/cjs/src/api/types.js.map +1 -1
  101. package/lib/cjs/src/api/utils/ApplicationChecker.js +2 -0
  102. package/lib/cjs/src/api/utils/ApplicationChecker.js.map +7 -0
  103. package/lib/cjs/src/api/utils/ApplicationChecker.test.js +2 -0
  104. package/lib/cjs/src/api/utils/ApplicationChecker.test.js.map +7 -0
  105. package/lib/cjs/src/api/utils/ApplicationResolver.js +2 -0
  106. package/lib/cjs/src/api/utils/ApplicationResolver.js.map +7 -0
  107. package/lib/cjs/src/api/utils/Base64String.js +1 -1
  108. package/lib/cjs/src/api/utils/Base64String.js.map +3 -3
  109. package/lib/cjs/src/api/utils/Base64String.test.js +1 -1
  110. package/lib/cjs/src/api/utils/Base64String.test.js.map +3 -3
  111. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  112. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  113. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  114. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  115. package/lib/cjs/src/internal/device-session/model/DevicePinger.js +1 -1
  116. package/lib/cjs/src/internal/device-session/model/DevicePinger.js.map +2 -2
  117. package/lib/cjs/src/internal/device-session/model/DevicePinger.test.js +1 -1
  118. package/lib/cjs/src/internal/device-session/model/DevicePinger.test.js.map +2 -2
  119. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  120. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  121. package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js +1 -1
  122. package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js.map +3 -3
  123. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
  124. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
  125. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  126. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  127. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  128. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  129. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  130. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  131. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  132. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  133. package/lib/cjs/src/internal/device-session/service/IntentQueueService.js +2 -0
  134. package/lib/cjs/src/internal/device-session/service/IntentQueueService.js.map +7 -0
  135. package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js +2 -0
  136. package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
  137. package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
  138. package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
  139. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  140. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  141. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  142. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  143. package/lib/esm/package.json +1 -1
  144. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  145. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  146. package/lib/esm/src/api/apdu/utils/ApduBuilder.js +1 -1
  147. package/lib/esm/src/api/apdu/utils/ApduBuilder.js.map +3 -3
  148. package/lib/esm/src/api/command/os/GetBackgroundImageSizeCommand.js +2 -0
  149. package/lib/esm/src/api/command/os/GetBackgroundImageSizeCommand.js.map +7 -0
  150. package/lib/esm/src/api/command/os/GetBackgroundImageSizeCommand.test.js +2 -0
  151. package/lib/esm/src/api/command/os/GetBackgroundImageSizeCommand.test.js.map +7 -0
  152. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  153. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  154. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  155. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  156. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  157. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  158. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  159. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  160. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  161. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  162. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -0
  163. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +4 -4
  164. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  165. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +3 -3
  166. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  167. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  168. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js +1 -0
  169. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +4 -4
  170. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  171. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  172. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  173. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  174. package/lib/esm/src/api/device-action/os/GetDeviceStatus/types.js +1 -0
  175. package/lib/esm/src/api/device-action/os/GetDeviceStatus/types.js.map +4 -4
  176. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  177. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  178. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  179. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  180. package/lib/esm/src/api/device-action/os/GoToDashboard/types.js +1 -0
  181. package/lib/esm/src/api/device-action/os/GoToDashboard/types.js.map +4 -4
  182. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
  183. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +3 -3
  184. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +1 -1
  185. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +3 -3
  186. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
  187. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +4 -4
  188. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  189. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +3 -3
  190. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +1 -1
  191. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +3 -3
  192. package/lib/esm/src/api/device-action/os/ListApps/types.js +1 -0
  193. package/lib/esm/src/api/device-action/os/ListApps/types.js.map +4 -4
  194. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  195. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +3 -3
  196. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  197. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  198. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/types.js +1 -0
  199. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/types.js.map +4 -4
  200. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  201. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  202. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  203. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  204. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -0
  205. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/types.js.map +4 -4
  206. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
  207. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +3 -3
  208. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +1 -1
  209. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +3 -3
  210. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
  211. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +4 -4
  212. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  213. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +3 -3
  214. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  215. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +3 -3
  216. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -0
  217. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +4 -4
  218. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  219. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  220. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  221. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +3 -3
  222. package/lib/esm/src/api/index.js +1 -1
  223. package/lib/esm/src/api/index.js.map +3 -3
  224. package/lib/esm/src/api/logger-publisher/utils/noopLoggerFactory.js +2 -0
  225. package/lib/esm/src/api/logger-publisher/utils/noopLoggerFactory.js.map +7 -0
  226. package/lib/esm/src/api/logger-publisher/utils/noopLoggerFactory.test.js +2 -0
  227. package/lib/esm/src/api/logger-publisher/utils/noopLoggerFactory.test.js.map +7 -0
  228. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  229. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  230. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  231. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  232. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  233. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  234. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js +1 -1
  235. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +3 -3
  236. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  237. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  238. package/lib/esm/src/api/utils/ApplicationChecker.js +2 -0
  239. package/lib/esm/src/api/utils/ApplicationChecker.js.map +7 -0
  240. package/lib/esm/src/api/utils/ApplicationChecker.test.js +2 -0
  241. package/lib/esm/src/api/utils/ApplicationChecker.test.js.map +7 -0
  242. package/lib/esm/src/api/utils/ApplicationResolver.js +1 -0
  243. package/lib/esm/src/api/utils/ApplicationResolver.js.map +7 -0
  244. package/lib/esm/src/api/utils/Base64String.js +1 -1
  245. package/lib/esm/src/api/utils/Base64String.js.map +3 -3
  246. package/lib/esm/src/api/utils/Base64String.test.js +1 -1
  247. package/lib/esm/src/api/utils/Base64String.test.js.map +3 -3
  248. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  249. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  250. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  251. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  252. package/lib/esm/src/internal/device-session/model/DevicePinger.js +1 -1
  253. package/lib/esm/src/internal/device-session/model/DevicePinger.js.map +2 -2
  254. package/lib/esm/src/internal/device-session/model/DevicePinger.test.js +1 -1
  255. package/lib/esm/src/internal/device-session/model/DevicePinger.test.js.map +2 -2
  256. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  257. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  258. package/lib/esm/src/internal/device-session/model/DeviceSession.test.js +1 -1
  259. package/lib/esm/src/internal/device-session/model/DeviceSession.test.js.map +3 -3
  260. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
  261. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
  262. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  263. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  264. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  265. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  266. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  267. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  268. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  269. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  270. package/lib/esm/src/internal/device-session/service/IntentQueueService.js +2 -0
  271. package/lib/esm/src/internal/device-session/service/IntentQueueService.js.map +7 -0
  272. package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js +2 -0
  273. package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
  274. package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
  275. package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
  276. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  277. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  278. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  279. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  280. package/lib/types/src/api/DeviceManagementKit.d.ts +10 -0
  281. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  282. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts +7 -0
  283. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
  284. package/lib/types/src/api/command/os/GetBackgroundImageSizeCommand.d.ts +17 -0
  285. package/lib/types/src/api/command/os/GetBackgroundImageSizeCommand.d.ts.map +1 -0
  286. package/lib/types/src/api/command/os/GetBackgroundImageSizeCommand.test.d.ts +2 -0
  287. package/lib/types/src/api/command/os/GetBackgroundImageSizeCommand.test.d.ts.map +1 -0
  288. package/lib/types/src/api/device-action/DeviceAction.d.ts +2 -1
  289. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  290. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  291. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  292. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +4 -1
  293. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  294. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  295. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +9 -1
  296. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  297. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -1
  298. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +13 -2
  299. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
  300. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
  301. package/lib/types/src/api/device-action/os/GetDeviceStatus/types.d.ts +6 -0
  302. package/lib/types/src/api/device-action/os/GetDeviceStatus/types.d.ts.map +1 -1
  303. package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts +1 -1
  304. package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts.map +1 -1
  305. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +9 -1
  306. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
  307. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -1
  308. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +9 -1
  309. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -1
  310. package/lib/types/src/api/device-action/os/ListApps/ListAppsDeviceAction.d.ts.map +1 -1
  311. package/lib/types/src/api/device-action/os/ListApps/types.d.ts +6 -0
  312. package/lib/types/src/api/device-action/os/ListApps/types.d.ts.map +1 -1
  313. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts.map +1 -1
  314. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts +8 -1
  315. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts.map +1 -1
  316. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
  317. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +12 -2
  318. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
  319. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -1
  320. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +8 -0
  321. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -1
  322. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
  323. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +9 -1
  324. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  325. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +10 -1
  326. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  327. package/lib/types/src/api/index.d.ts +11 -4
  328. package/lib/types/src/api/index.d.ts.map +1 -1
  329. package/lib/types/src/api/logger-publisher/utils/noopLoggerFactory.d.ts +12 -0
  330. package/lib/types/src/api/logger-publisher/utils/noopLoggerFactory.d.ts.map +1 -0
  331. package/lib/types/src/api/logger-publisher/utils/noopLoggerFactory.test.d.ts +2 -0
  332. package/lib/types/src/api/logger-publisher/utils/noopLoggerFactory.test.d.ts.map +1 -0
  333. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
  334. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts +1 -0
  335. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -1
  336. package/lib/types/src/api/transport/model/Errors.d.ts +5 -0
  337. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  338. package/lib/types/src/api/types.d.ts +1 -0
  339. package/lib/types/src/api/types.d.ts.map +1 -1
  340. package/lib/types/src/api/utils/ApplicationChecker.d.ts +14 -0
  341. package/lib/types/src/api/utils/ApplicationChecker.d.ts.map +1 -0
  342. package/lib/types/src/api/utils/ApplicationChecker.test.d.ts +2 -0
  343. package/lib/types/src/api/utils/ApplicationChecker.test.d.ts.map +1 -0
  344. package/lib/types/src/api/utils/ApplicationResolver.d.ts +12 -0
  345. package/lib/types/src/api/utils/ApplicationResolver.d.ts.map +1 -0
  346. package/lib/types/src/api/utils/Base64String.d.ts +1 -0
  347. package/lib/types/src/api/utils/Base64String.d.ts.map +1 -1
  348. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  349. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +1 -0
  350. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts.map +1 -1
  351. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +13 -2
  352. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  353. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts +3 -1
  354. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts.map +1 -1
  355. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +0 -1
  356. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
  357. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts +1 -0
  358. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
  359. package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts +101 -0
  360. package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts.map +1 -0
  361. package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts +2 -0
  362. package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts.map +1 -0
  363. package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts +19 -0
  364. package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts.map +1 -0
  365. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  366. package/package.json +4 -4
  367. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +0 -2
  368. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +0 -7
  369. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +0 -2
  370. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +0 -7
  371. package/lib/cjs/src/internal/device-session/service/MutexService.js +0 -2
  372. package/lib/cjs/src/internal/device-session/service/MutexService.js.map +0 -7
  373. package/lib/cjs/src/internal/device-session/service/MutexService.test.js +0 -2
  374. package/lib/cjs/src/internal/device-session/service/MutexService.test.js.map +0 -7
  375. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +0 -2
  376. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +0 -7
  377. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +0 -2
  378. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +0 -7
  379. package/lib/esm/src/internal/device-session/service/MutexService.js +0 -2
  380. package/lib/esm/src/internal/device-session/service/MutexService.js.map +0 -7
  381. package/lib/esm/src/internal/device-session/service/MutexService.test.js +0 -2
  382. package/lib/esm/src/internal/device-session/service/MutexService.test.js.map +0 -7
  383. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +0 -17
  384. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +0 -1
  385. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts +0 -2
  386. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts.map +0 -1
  387. package/lib/types/src/internal/device-session/service/MutexService.d.ts +0 -6
  388. package/lib/types/src/internal/device-session/service/MutexService.d.ts.map +0 -1
  389. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts +0 -2
  390. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.ts"],
4
- "sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { BTC_APP } from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupListAppsMock } 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 {\n type Catalog,\n type CustomImage,\n type DeviceSessionState,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@api/Error\";\nimport {\n type SecureChannelEventPayload,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nimport { GetDeviceMetadataDeviceAction } from \"./GetDeviceMetadataDeviceAction\";\nimport { type GetDeviceMetadataDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"GetDeviceMetadataDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const getDeviceMetadataMock = vi.fn();\n const getFirmwareMetadataMock = vi.fn();\n const getApplicationsMetadataMock = vi.fn();\n const listAppsSecureChannelMock = vi.fn();\n\n const DEVICE_VERSION = \"device_version\" as unknown as DeviceVersion;\n const FIRMWARE = \"firmware\" as unknown as FinalFirmware;\n const FIRMWARE_VERSION = \"firmware_version\" as unknown as FirmwareVersion;\n const FIRMWARE_UPDATE = \"fm_update\" as unknown as FirmwareUpdateContext;\n const CUSTOM_IMAGE = \"image\" as unknown as CustomImage;\n const APPS = \"apps\" as unknown as Application[];\n const APPS_UPDATE = \"apps_update\" as unknown as Application[];\n const LANGUAGES = \"lang\" as unknown as InstalledLanguagePackage[];\n const CATALOG = \"catalog\" as unknown as Catalog;\n\n function extractDependenciesMock() {\n return {\n getDeviceMetadata: getDeviceMetadataMock,\n getFirmwareMetadata: getFirmwareMetadataMock,\n getApplicationsMetadata: getApplicationsMetadataMock,\n listAppsSecureChannel: listAppsSecureChannelMock,\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(\"get metadata from device state\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce({\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata without secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with forced update\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { forceUpdate: true },\n });\n\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n of(\n {\n type: SecureChannelEventType.Exchange,\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Result,\n payload: [\n {\n flags: 123456,\n hash: \"hash_test\",\n hash_code_data: \"hash_code_data_test\",\n name: \"Bitcoin\",\n },\n ],\n },\n ),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"get metadata from device state with external dependencies\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n installedApps: [APPS] as unknown as Application[],\n appsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n } as DeviceSessionState);\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: [APPS] as unknown as Application[],\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\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(\"error during GoToDashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\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(\"error during GetFirmwareMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListApps\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([], true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"ListApps failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetApplicationsMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListAppsSecureChannel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.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<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\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": "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",
6
- "names": ["import_rxjs", "import_CommandResult", "import_DeviceStatus", "import_data", "import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_DeviceSessionState", "import_Error", "import_types", "import_GetDeviceMetadataDeviceAction", "apiMock", "getDeviceMetadataMock", "getFirmwareMetadataMock", "getApplicationsMetadataMock", "listAppsSecureChannelMock", "DEVICE_VERSION", "FIRMWARE", "FIRMWARE_VERSION", "FIRMWARE_UPDATE", "CUSTOM_IMAGE", "APPS", "APPS_UPDATE", "LANGUAGES", "CATALOG", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
4
+ "sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { BTC_APP } from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupListAppsMock } 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 { goToDashboardDAStateStep } from \"@api/device-action/os/GoToDashboard/types\";\nimport { listAppsDAStateStep } from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type DeviceSessionState,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@api/Error\";\nimport {\n type SecureChannelEventPayload,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nimport { GetDeviceMetadataDeviceAction } from \"./GetDeviceMetadataDeviceAction\";\nimport {\n type GetDeviceMetadataDAState,\n getDeviceMetadataDAStateStep,\n} from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"GetDeviceMetadataDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const getDeviceMetadataMock = vi.fn();\n const getFirmwareMetadataMock = vi.fn();\n const getApplicationsMetadataMock = vi.fn();\n const listAppsSecureChannelMock = vi.fn();\n\n const DEVICE_VERSION = \"device_version\" as unknown as DeviceVersion;\n const FIRMWARE = \"firmware\" as unknown as FinalFirmware;\n const FIRMWARE_VERSION = \"firmware_version\" as unknown as FirmwareVersion;\n const FIRMWARE_UPDATE = \"fm_update\" as unknown as FirmwareUpdateContext;\n const CUSTOM_IMAGE = \"image\" as unknown as CustomImage;\n const APPS = \"apps\" as unknown as Application[];\n const APPS_UPDATE = \"apps_update\" as unknown as Application[];\n const LANGUAGES = \"lang\" as unknown as InstalledLanguagePackage[];\n const CATALOG = \"catalog\" as unknown as Catalog;\n\n function extractDependenciesMock() {\n return {\n getDeviceMetadata: getDeviceMetadataMock,\n getFirmwareMetadata: getFirmwareMetadataMock,\n getApplicationsMetadata: getApplicationsMetadataMock,\n listAppsSecureChannel: listAppsSecureChannelMock,\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(\"get metadata from device state\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce({\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata without secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard wrapper\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level step: GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps wrapper (still under GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with forced update\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { forceUpdate: true },\n });\n\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GoToDashboard - Initial step (forced update still starts at GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata - After GoToDashboard, while fetching firmware, high-level step is GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps - While listing apps, high-level step still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Applications metadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n of(\n {\n type: SecureChannelEventType.Exchange,\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Result,\n payload: [\n {\n flags: 123456,\n hash: \"hash_test\",\n hash_code_data: \"hash_code_data_test\",\n name: \"Bitcoin\",\n },\n ],\n },\n ),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper around GoToDashboard \u2013 machine still tags it as GET_DEVICE_METADATA\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata \u2013 surfaced as GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper \u2013 still GO_TO_DASHBOARD for the first emissions\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // More secure-channel emissions, still under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // First applications-metadata-like transition (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Permission requested for secure channel \u2013 AllowSecureConnection, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Back to \u201Capplications metadata\u201D stream, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // One more pending under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Final pending before success: tagged as LIST_APPS_SECURE_CHANNEL\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS_SECURE_CHANNEL,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"get metadata from device state with external dependencies\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n installedApps: [APPS] as unknown as Application[],\n appsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n } as DeviceSessionState);\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: [APPS] as unknown as Application[],\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\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(\"error during GoToDashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper for GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\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(\"error during GetFirmwareMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListApps\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([], true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"ListApps failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetApplicationsMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GetApplicationsMetadata (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListAppsSecureChannel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.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<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Last pending before error \u2013 back to GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\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": "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",
6
+ "names": ["import_rxjs", "import_CommandResult", "import_DeviceStatus", "import_data", "import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_types", "import_DeviceSessionState", "import_Error", "import_GetDeviceMetadataDeviceAction", "apiMock", "getDeviceMetadataMock", "getFirmwareMetadataMock", "getApplicationsMetadataMock", "listAppsSecureChannelMock", "DEVICE_VERSION", "FIRMWARE", "FIRMWARE_VERSION", "FIRMWARE_UPDATE", "CUSTOM_IMAGE", "APPS", "APPS_UPDATE", "LANGUAGES", "CATALOG", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var s=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of n(e))!d.call(t,a)&&a!==i&&o(t,a,{get:()=>e[a],enumerable:!(r=p(e,a))||r.enumerable});return t};var D=t=>s(o({},"__esModule",{value:!0}),t);var l={};module.exports=D(l);
1
+ "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},n=(t,e,r,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of s(e))!D.call(t,a)&&a!==r&&o(t,a,{get:()=>e[a],enumerable:!(p=i(e,a))||p.enumerable});return t};var d=t=>n(o({},"__esModule",{value:!0}),t);var l={};A(l,{getDeviceMetadataDAStateStep:()=>c});module.exports=d(l);const c=Object.freeze({GET_DEVICE_METADATA:"os.getDeviceMetadata.steps.getDeviceMetadata",GO_TO_DASHBOARD:"os.getDeviceMetadata.steps.goToDashboard",GET_FIRMWARE_METADATA:"os.getDeviceMetadata.steps.getFirmwareMetadata",LIST_APPS_SECURE_CHANNEL:"os.getDeviceMetadata.steps.listAppsSecureChannel",LIST_APPS:"os.getDeviceMetadata.steps.listApps",GET_APPLICATIONS_METADATA:"os.getDeviceMetadata.steps.getApplicationsMetadata"});0&&(module.exports={getDeviceMetadataDAStateStep});
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 {\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\";\nimport { type SecureChannelDAErrors } from \"@internal/secure-channel/model/Errors\";\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 | SecureChannelDAErrors\n | CommandErrorResult[\"error\"];\n\nexport type GetDeviceMetadataDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | ListAppsDARequiredInteraction\n | ListInstalledAppsDARequiredInteraction;\n\nexport type GetDeviceMetadataDAIntermediateValue = {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n deviceId?: Uint8Array;\n};\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
5
- "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
- "names": ["types_exports", "__toCommonJS"]
4
+ "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type GetDeviceStatusDAStateStep } from \"@api/device-action/os/GetDeviceStatus/types\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDARequiredInteraction,\n type GoToDashboardDAStateStep,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport {\n type ListAppsDAError,\n type ListAppsDARequiredInteraction,\n type ListAppsDAStateStep,\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\";\nimport { type SecureChannelDAErrors } from \"@internal/secure-channel/model/Errors\";\n\nexport const getDeviceMetadataDAStateStep = Object.freeze({\n GET_DEVICE_METADATA: \"os.getDeviceMetadata.steps.getDeviceMetadata\",\n GO_TO_DASHBOARD: \"os.getDeviceMetadata.steps.goToDashboard\",\n GET_FIRMWARE_METADATA: \"os.getDeviceMetadata.steps.getFirmwareMetadata\",\n LIST_APPS_SECURE_CHANNEL: \"os.getDeviceMetadata.steps.listAppsSecureChannel\",\n LIST_APPS: \"os.getDeviceMetadata.steps.listApps\",\n GET_APPLICATIONS_METADATA:\n \"os.getDeviceMetadata.steps.getApplicationsMetadata\",\n} as const);\n\nexport type GetDeviceMetadataDAStateStep =\n (typeof getDeviceMetadataDAStateStep)[keyof typeof getDeviceMetadataDAStateStep];\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 | SecureChannelDAErrors\n | CommandErrorResult[\"error\"];\n\nexport type GetDeviceMetadataDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | ListAppsDARequiredInteraction\n | ListInstalledAppsDARequiredInteraction;\n\nexport type GetDeviceMetadataDAIntermediateValue = {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n deviceId?: Uint8Array;\n step:\n | GetDeviceMetadataDAStateStep\n | GoToDashboardDAStateStep\n | GetDeviceStatusDAStateStep\n | ListAppsDAStateStep;\n};\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,IAAA,eAAAC,EAAAH,GA4BO,MAAME,EAA+B,OAAO,OAAO,CACxD,oBAAqB,+CACrB,gBAAiB,2CACjB,sBAAuB,iDACvB,yBAA0B,mDAC1B,UAAW,sCACX,0BACE,oDACJ,CAAU",
6
+ "names": ["types_exports", "__export", "getDeviceMetadataDAStateStep", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var v=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var C=(o,t)=>{for(var s in t)v(o,s,{get:t[s],enumerable:!0})},I=(o,t,s,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of b(t))!x.call(o,i)&&i!==s&&v(o,i,{get:()=>t[i],enumerable:!(c=G(t,i))||c.enumerable});return o};var O=o=>I(v({},"__esModule",{value:!0}),o);var T={};C(T,{GetDeviceStatusDeviceAction:()=>M});module.exports=O(T);var D=require("purify-ts"),n=require("rxjs"),g=require("rxjs/operators"),r=require("xstate"),A=require("../../../command/model/CommandResult"),m=require("../../../command/os/GetAppAndVersionCommand"),f=require("../../../device/DeviceStatus"),p=require("../../../device-action/model/UserInteractionRequired"),h=require("../../../device-action/os/Const"),S=require("../../../device-action/os/Errors"),E=require("../../../device-action/xstate-utils/XStateDeviceAction"),l=require("../../../device-session/DeviceSessionState");class M extends E.XStateDeviceAction{makeStateMachine(t){const{getAppAndVersion:s,getDeviceSessionState:c,setDeviceSessionState:i,waitForDeviceUnlock:u,isDeviceOnboarded:y}=this.extractDependencies(t),k=this.input.unlockTimeout??h.DEFAULT_UNLOCK_TIMEOUT_MS;return(0,r.setup)({types:{input:{unlockTimeout:k},context:{},output:{}},actors:{getAppAndVersion:(0,r.fromPromise)(s),waitForDeviceUnlock:(0,r.fromObservable)(u)},guards:{isDeviceOnboarded:()=>y(),isDeviceLocked:({context:e})=>e._internalState.locked,hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorDeviceNotOnboarded:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:new S.DeviceNotOnboardedError})}),assignErrorDeviceLocked:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:new S.DeviceLockedError}),intermediateValue:{requiredUserInteraction:p.UserInteractionRequired.UnlockDevice}}),assignErrorFromEvent:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})}),assignNoUserActionNeeded:(0,r.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:p.UserInteractionRequired.None})}),assignUserActionUnlockNeeded:(0,r.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:p.UserInteractionRequired.UnlockDevice})})}}).createMachine({id:"GetDeviceStatusDeviceAction",initial:"DeviceReady",context:e=>{const a=c(),{sessionStateType:d}=a;return{input:{unlockTimeout:e.input.unlockTimeout},intermediateValue:{requiredUserInteraction:p.UserInteractionRequired.None},_internalState:{onboarded:!1,locked:!1,currentApp:d===l.DeviceSessionStateType.ReadyWithoutSecureChannel?a.currentApp.name:null,currentAppVersion:null,error:null}}},states:{DeviceReady:{always:{target:"OnboardingCheck"}},OnboardingCheck:{always:[{guard:{type:"isDeviceOnboarded"},target:"AppAndVersionCheck",actions:(0,r.assign)({_internalState:e=>({...e.context._internalState,onboarded:!0})})},{target:"Error",actions:"assignErrorDeviceNotOnboarded"}]},UserActionUnlockDevice:{entry:"assignUserActionUnlockNeeded",exit:"assignNoUserActionNeeded",invoke:{id:"UserActionUnlockDevice",src:"waitForDeviceUnlock",input:e=>({unlockTimeout:k}),onDone:{target:"AppAndVersionCheck",actions:(0,r.assign)({_internalState:e=>({...e.context._internalState,locked:!1})})},onError:{target:"Error",actions:"assignErrorDeviceLocked"}}},AppAndVersionCheck:{invoke:{src:"getAppAndVersion",onDone:{target:"ApplicationAvailableResultCheck",actions:(0,r.assign)({_internalState:e=>{if((0,A.isSuccessCommandResult)(e.event.output)){const a=c();return a.sessionStateType!==l.DeviceSessionStateType.Connected?i({...a,currentApp:e.event.output.data}):i({deviceModelId:a.deviceModelId,sessionStateType:l.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:f.DeviceStatus.CONNECTED,currentApp:e.event.output.data,installedApps:[],isSecureConnectionAllowed:!1}),{...e.context._internalState,locked:!1,currentApp:e.event.output.data.name,currentAppVersion:e.event.output.data.version}}if("errorCode"in e.event.output.error){if(e.event.output.error.errorCode==="5515")return{...e.context._internalState,locked:!0};if(e.event.output.error.errorCode==="6e00")return{...e.context._internalState,locked:!1,currentApp:"BOLOS",currentAppVersion:"0.0.0"}}return{...e.context._internalState,error:e.event.output.error}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ApplicationAvailableResultCheck:{always:[{guard:"hasError",target:"Error"},{target:"UserActionUnlockDevice",guard:"isDeviceLocked"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:e=>{const{context:a}=e,{error:d,currentApp:V,currentAppVersion:U}=a._internalState;return d?(0,D.Left)(d):(0,D.Right)({currentApp:V,currentAppVersion:U})}})}extractDependencies(t){return{getAppAndVersion:()=>t.sendCommand(new m.GetAppAndVersionCommand),waitForDeviceUnlock:({input:i})=>(0,n.interval)(1e3).pipe((0,n.switchMap)(()=>(0,n.from)(t.sendCommand(new m.GetAppAndVersionCommand))),(0,n.mergeMap)(u=>!(0,A.isSuccessCommandResult)(u)&&"errorCode"in u.error&&u.error.errorCode==="5515"?n.EMPTY:(0,n.of)(void 0)),(0,n.take)(1),(0,g.timeout)(i.unlockTimeout)),getDeviceSessionState:()=>t.getDeviceSessionState(),setDeviceSessionState:i=>t.setDeviceSessionState(i),isDeviceOnboarded:()=>!0}}}0&&(module.exports={GetDeviceStatusDeviceAction});
1
+ "use strict";var A=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var I=(o,t)=>{for(var s in t)A(o,s,{get:t[s],enumerable:!0})},x=(o,t,s,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of O(t))!b.call(o,i)&&i!==s&&A(o,i,{get:()=>t[i],enumerable:!(c=G(t,i))||c.enumerable});return o};var M=o=>x(A({},"__esModule",{value:!0}),o);var N={};I(N,{GetDeviceStatusDeviceAction:()=>T});module.exports=M(N);var S=require("purify-ts"),n=require("rxjs"),f=require("rxjs/operators"),r=require("xstate"),m=require("../../../command/model/CommandResult"),y=require("../../../command/os/GetAppAndVersionCommand"),E=require("../../../device/DeviceStatus"),p=require("../../../device-action/model/UserInteractionRequired"),V=require("../../../device-action/os/Const"),v=require("../../../device-action/os/Errors"),h=require("../../../device-action/xstate-utils/XStateDeviceAction"),l=require("../../../device-session/DeviceSessionState"),D=require("./types");class T extends h.XStateDeviceAction{makeStateMachine(t){const{getAppAndVersion:s,getDeviceSessionState:c,setDeviceSessionState:i,waitForDeviceUnlock:u,isDeviceOnboarded:k}=this.extractDependencies(t),g=this.input.unlockTimeout??V.DEFAULT_UNLOCK_TIMEOUT_MS;return(0,r.setup)({types:{input:{unlockTimeout:g},context:{},output:{}},actors:{getAppAndVersion:(0,r.fromPromise)(s),waitForDeviceUnlock:(0,r.fromObservable)(u)},guards:{isDeviceOnboarded:()=>k(),isDeviceLocked:({context:e})=>e._internalState.locked,hasError:({context:e})=>e._internalState.error!==null},actions:{assignErrorDeviceNotOnboarded:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:new v.DeviceNotOnboardedError})}),assignErrorDeviceLocked:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:new v.DeviceLockedError}),intermediateValue:{requiredUserInteraction:p.UserInteractionRequired.UnlockDevice,step:D.getDeviceStatusDAStateStep.UNLOCK_DEVICE}}),assignErrorFromEvent:(0,r.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})}),assignNoUserActionNeeded:(0,r.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:p.UserInteractionRequired.None})}),assignUserActionUnlockNeeded:(0,r.assign)({intermediateValue:e=>({...e.context.intermediateValue,requiredUserInteraction:p.UserInteractionRequired.UnlockDevice,step:D.getDeviceStatusDAStateStep.UNLOCK_DEVICE})})}}).createMachine({id:"GetDeviceStatusDeviceAction",initial:"DeviceReady",context:e=>{const a=c(),{sessionStateType:d}=a;return{input:{unlockTimeout:e.input.unlockTimeout},intermediateValue:{requiredUserInteraction:p.UserInteractionRequired.None,step:D.getDeviceStatusDAStateStep.ONBOARD_CHECK},_internalState:{onboarded:!1,locked:!1,currentApp:d===l.DeviceSessionStateType.ReadyWithoutSecureChannel?a.currentApp.name:null,currentAppVersion:null,error:null}}},states:{DeviceReady:{always:{target:"OnboardingCheck"}},OnboardingCheck:{always:[{guard:{type:"isDeviceOnboarded"},target:"AppAndVersionCheck",actions:(0,r.assign)({_internalState:e=>({...e.context._internalState,onboarded:!0})})},{target:"Error",actions:"assignErrorDeviceNotOnboarded"}]},UserActionUnlockDevice:{entry:"assignUserActionUnlockNeeded",exit:"assignNoUserActionNeeded",invoke:{id:"UserActionUnlockDevice",src:"waitForDeviceUnlock",input:e=>({unlockTimeout:g}),onDone:{target:"AppAndVersionCheck",actions:(0,r.assign)({_internalState:e=>({...e.context._internalState,locked:!1})})},onError:{target:"Error",actions:"assignErrorDeviceLocked"}}},AppAndVersionCheck:{invoke:{src:"getAppAndVersion",onDone:{target:"ApplicationAvailableResultCheck",actions:(0,r.assign)({_internalState:e=>{if((0,m.isSuccessCommandResult)(e.event.output)){const a=c();return a.sessionStateType!==l.DeviceSessionStateType.Connected?i({...a,currentApp:e.event.output.data}):i({deviceModelId:a.deviceModelId,sessionStateType:l.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:E.DeviceStatus.CONNECTED,currentApp:e.event.output.data,installedApps:[],isSecureConnectionAllowed:!1}),{...e.context._internalState,locked:!1,currentApp:e.event.output.data.name,currentAppVersion:e.event.output.data.version}}if("errorCode"in e.event.output.error){if(e.event.output.error.errorCode==="5515")return{...e.context._internalState,locked:!0};if(e.event.output.error.errorCode==="6e00")return{...e.context._internalState,locked:!1,currentApp:"BOLOS",currentAppVersion:"0.0.0"}}return{...e.context._internalState,error:e.event.output.error}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ApplicationAvailableResultCheck:{always:[{guard:"hasError",target:"Error"},{target:"UserActionUnlockDevice",guard:"isDeviceLocked"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:e=>{const{context:a}=e,{error:d,currentApp:C,currentAppVersion:U}=a._internalState;return d?(0,S.Left)(d):(0,S.Right)({currentApp:C,currentAppVersion:U})}})}extractDependencies(t){return{getAppAndVersion:()=>t.sendCommand(new y.GetAppAndVersionCommand),waitForDeviceUnlock:({input:i})=>(0,n.interval)(1e3).pipe((0,n.switchMap)(()=>(0,n.from)(t.sendCommand(new y.GetAppAndVersionCommand))),(0,n.mergeMap)(u=>!(0,m.isSuccessCommandResult)(u)&&"errorCode"in u.error&&u.error.errorCode==="5515"?n.EMPTY:(0,n.of)(void 0)),(0,n.take)(1),(0,f.timeout)(i.unlockTimeout)),getDeviceSessionState:()=>t.getDeviceSessionState(),setDeviceSessionState:i=>t.setDeviceSessionState(i),isDeviceOnboarded:()=>!0}}}0&&(module.exports={GetDeviceStatusDeviceAction});
2
2
  //# sourceMappingURL=GetDeviceStatusDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport {\n EMPTY,\n from,\n interval,\n mergeMap,\n type Observable,\n of,\n switchMap,\n take,\n} from \"rxjs\";\nimport { timeout } from \"rxjs/operators\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetAppAndVersionCommand,\n type GetAppAndVersionCommandResult,\n} from \"@api/command/os/GetAppAndVersionCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\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 {\n DeviceLockedError,\n DeviceNotOnboardedError,\n} from \"@api/device-action/os/Errors\";\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 {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\n\nimport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n} from \"./types\";\n\ntype GetDeviceStatusMachineInternalState = {\n readonly onboarded: boolean;\n readonly locked: boolean;\n readonly currentApp: string | null;\n readonly currentAppVersion: string | null;\n readonly error: GetDeviceStatusDAError | null;\n};\n\nexport type MachineDependencies = {\n readonly getAppAndVersion: () => Promise<GetAppAndVersionCommandResult>;\n readonly getDeviceSessionState: () => DeviceSessionState;\n readonly waitForDeviceUnlock: (args: {\n input: { unlockTimeout: number };\n }) => Observable<void>;\n readonly setDeviceSessionState: (\n state: DeviceSessionState,\n ) => DeviceSessionState;\n readonly isDeviceOnboarded: () => boolean;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class GetDeviceStatusDeviceAction extends XStateDeviceAction<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n > {\n type types = StateMachineTypes<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n >;\n\n const {\n getAppAndVersion,\n getDeviceSessionState,\n setDeviceSessionState,\n waitForDeviceUnlock,\n isDeviceOnboarded,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\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 getAppAndVersion: fromPromise(getAppAndVersion),\n waitForDeviceUnlock: fromObservable(waitForDeviceUnlock),\n },\n guards: {\n isDeviceOnboarded: () => isDeviceOnboarded(), // TODO: we don't have this info for now, this can be derived from the \"flags\" obtained in the getVersion command\n isDeviceLocked: ({ context }) => context._internalState.locked,\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorDeviceNotOnboarded: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceNotOnboardedError(),\n }),\n }),\n assignErrorDeviceLocked: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceLockedError(),\n }),\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n },\n }),\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 assignNoUserActionNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignUserActionUnlockNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHEwBcAiYBuBLAxmAMpoCGaArrFnoQIL5q4D2AdgHQ0FgBKYpEAJ4BiANoAGALqJQAB2axcTNjJAAPRAFoArAHZx7AIwAmQ7oCcugMyHzANmMAWYwBoQgxI8vsAHOJM+VuLmVj5e2gC+EW6omDjcJORUXPSMLBwA8qwARsykAE4QuKxQAMIAFmD4ANZiUqryisqsqhoImo4O7OGhPj4h5n6Obh4IunZ2RoZ+ena6nYaGUTHoKcRklNTxqc3sWbkFRSUVVbWihtJIII1K6a1aVtoGTxOOjtbv84YjiObik7ofPM7GFDP9jNofMsQLE1olNmsGLsADLMGrFMqVGp1S5yBS3FRXNqaOzadjiHx2KyORbzcRBczmH4IbTOdjaabaKmdGy6XSRaIw1bbdZJLa0MBI9LsVHo45Ys4XBr45r3dps-n0ubaGxgx6PZlWULkkLBGmDCzGYzQ2Ei+HJEVStjsACqsDA+SdrBdrAANmjqmthBA2GB2MVsMxqmG3R6vT7-TU1hJcdcVXciYgglZycYQiYqRTQoZtMynDmbM4aW8rHYzD4BSs4hL7eLuF7Xe7PWk2AmA0GPflmPl2LJfeQAGbDgC2nbjPe9fv7IpTyqaGdAbXmxnZPkMNNM820VuZ+8M7Dsb3MznpwW31sFtpbGwdEo7dFksjorAgADUPYobAnNiIasGGEZRmGT4JC+bY7NKH5fj+-75IBrDAdUCAQfg5DpCmq5XDcqqZmMjgGDY-yGJeejjFRzJ2P47DZoEJb+Hyx42sKz5ioiC7sIh35-gB6QYcIg7DqO45oFO+SztBhCtrxuwCchwlAQqWGsJGOHNPh9SEemhKbogdLsIMTjmPuNF1nYZaOBW+5OPu9l1oCjZCs2ME8Y6fGIb6BC4WwdDYKQuDjtkvq8HAFC+mgokEXi65GeoiBguYZJOPSJa6Hm1hGsyuglkxxiUjYVjXlq7nyaKCI+cpn7+Tp6TBaF4WRXwsAxXFCpiEqBlJS0JFAo4vg+BCe55e8-QFUVVglVShjlWRtZ2FEgqsMwEBwKo1WKXVG5pgNaokmRZmQg4fyLHR7ieCNpjGPyx7aNo6UNo4nGeQpsFKdKax8AIoyJQSg3Ge0L07q9F3+Istk3Qg1IjUaZ7GNS-LlU4H1wt9+3OvseSFBiGFrsDx01mZ15mHooReFaVj0fZ5Jci5zissYIKY3a2NvnxsrVITCrE8RoMdDucxWgx1jpZCELDHDgKTC9jg6mNXKLDSHPcbV3O7LG3bNH2SYioLB3EmCI1-HuVL6Cj4hU6eNjsIVD3UrWfKXVCj5cV5Wvtr5n6CShaFE-1JMkWzPgXpCjh+Faw3Mjq5jdOlJhGvo-RzRr3uvr79VjgFzQtWFpARVFnWxcHQNCylCBm+eKPjJL4jWMEdNww4O46vSFVsfyD5Nlj3na9KRAUPghCwPAIdV20QIR7e-RzOYbNK98cN7ndgR-BSzgo+YmdfYPOfSgAovkQ75MbyVtItehmSrJgcijz2uHD+pmXyQSQnyVLs2tQA */\n id: \"GetDeviceStatusDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n const sessionState = getDeviceSessionState();\n const { sessionStateType } = sessionState;\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n onboarded: false, // we don't know how to check yet\n locked: false,\n currentApp:\n sessionStateType ===\n DeviceSessionStateType.ReadyWithoutSecureChannel\n ? sessionState.currentApp.name\n : null,\n currentAppVersion: null,\n error: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"OnboardingCheck\",\n },\n },\n OnboardingCheck: {\n // TODO: we don't have this info for now\n always: [\n {\n guard: {\n type: \"isDeviceOnboarded\",\n },\n target: \"AppAndVersionCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n onboarded: true,\n }),\n }),\n },\n {\n target: \"Error\",\n actions: \"assignErrorDeviceNotOnboarded\",\n },\n ],\n },\n UserActionUnlockDevice: {\n // we wait for the device to be unlocked (default timeout is 15s)\n entry: \"assignUserActionUnlockNeeded\",\n exit: \"assignNoUserActionNeeded\",\n invoke: {\n id: \"UserActionUnlockDevice\",\n src: \"waitForDeviceUnlock\",\n input: (_) => ({\n unlockTimeout,\n }),\n onDone: {\n target: \"AppAndVersionCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n locked: false,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorDeviceLocked\",\n },\n },\n },\n AppAndVersionCheck: {\n // We check the current app and version using the getAppAndVersion command\n invoke: {\n src: \"getAppAndVersion\",\n onDone: {\n target: \"ApplicationAvailableResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const state: DeviceSessionState = getDeviceSessionState();\n if (\n state.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n // Update the current app\n setDeviceSessionState({\n ...state,\n currentApp: _.event.output.data,\n });\n } else {\n // The device can be set to Ready if GetAppAndVersionCommand was successful\n setDeviceSessionState({\n deviceModelId: state.deviceModelId,\n sessionStateType:\n DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: _.event.output.data,\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n }\n return {\n ..._.context._internalState,\n locked: false,\n currentApp: _.event.output.data.name,\n currentAppVersion: _.event.output.data.version,\n };\n }\n if (\"errorCode\" in _.event.output.error) {\n if (_.event.output.error.errorCode === \"5515\") {\n // Locked device error\n return {\n ..._.context._internalState,\n locked: true,\n };\n } else if (_.event.output.error.errorCode === \"6e00\") {\n // CLA not supported\n // GetAppAndVersion should always be supported by the firmware or any app.\n // But on old firmware versions, that APDU was not supported in the dashboard.\n // On those firmwares, it fails with CLA_NOT_SUPPORTED in BOLOS, and INS_NOT_SUPPORTED\n // in applications. Therefore if CLA is not supported, we can consider we're on the\n // dashboard on an old firmware. We should therefore return that information to\n // ensure the user can still update his firmware and is not blocked at this step.\n return {\n ..._.context._internalState,\n locked: false,\n currentApp: \"BOLOS\",\n currentAppVersion: \"0.0.0\",\n };\n }\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ApplicationAvailableResultCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"UserActionUnlockDevice\",\n guard: \"isDeviceLocked\",\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 // TODO: instead we should rely on the current state (\"Success\" or \"Error\")\n const { context } = args;\n const { error, currentApp, currentAppVersion } = context._internalState;\n if (error) {\n return Left(error);\n }\n return Right<GetDeviceStatusDAOutput>({\n currentApp: currentApp!,\n currentAppVersion: currentAppVersion!,\n });\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppAndVersion = () => {\n return internalApi.sendCommand(new GetAppAndVersionCommand());\n };\n\n const waitForDeviceUnlock = ({\n input,\n }: {\n input: { unlockTimeout: number };\n }) =>\n interval(1000).pipe(\n switchMap(() =>\n from(internalApi.sendCommand(new GetAppAndVersionCommand())),\n ),\n mergeMap((output) => {\n const isLocked =\n !isSuccessCommandResult(output) &&\n \"errorCode\" in output.error &&\n output.error.errorCode === \"5515\";\n if (isLocked) {\n return EMPTY; // Continue the polling\n }\n return of(undefined); // Complete the observable\n }),\n take(1),\n timeout(input.unlockTimeout),\n );\n\n return {\n getAppAndVersion,\n waitForDeviceUnlock,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n isDeviceOnboarded: () => true, // TODO: we don't have this info for now\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["GetDeviceStatusDeviceAction_exports", "__export", "GetDeviceStatusDeviceAction", "__toCommonJS", "import_purify_ts", "import_rxjs", "import_operators", "import_xstate", "import_CommandResult", "import_GetAppAndVersionCommand", "import_DeviceStatus", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_XStateDeviceAction", "import_DeviceSessionState", "internalApi", "getAppAndVersion", "getDeviceSessionState", "setDeviceSessionState", "waitForDeviceUnlock", "isDeviceOnboarded", "unlockTimeout", "context", "_", "sessionState", "sessionStateType", "state", "args", "error", "currentApp", "currentAppVersion", "input", "output"]
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport {\n EMPTY,\n from,\n interval,\n mergeMap,\n type Observable,\n of,\n switchMap,\n take,\n} from \"rxjs\";\nimport { timeout } from \"rxjs/operators\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetAppAndVersionCommand,\n type GetAppAndVersionCommandResult,\n} from \"@api/command/os/GetAppAndVersionCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\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 {\n DeviceLockedError,\n DeviceNotOnboardedError,\n} from \"@api/device-action/os/Errors\";\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 {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\n\nimport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n getDeviceStatusDAStateStep,\n} from \"./types\";\n\ntype GetDeviceStatusMachineInternalState = {\n readonly onboarded: boolean;\n readonly locked: boolean;\n readonly currentApp: string | null;\n readonly currentAppVersion: string | null;\n readonly error: GetDeviceStatusDAError | null;\n};\n\nexport type MachineDependencies = {\n readonly getAppAndVersion: () => Promise<GetAppAndVersionCommandResult>;\n readonly getDeviceSessionState: () => DeviceSessionState;\n readonly waitForDeviceUnlock: (args: {\n input: { unlockTimeout: number };\n }) => Observable<void>;\n readonly setDeviceSessionState: (\n state: DeviceSessionState,\n ) => DeviceSessionState;\n readonly isDeviceOnboarded: () => boolean;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class GetDeviceStatusDeviceAction extends XStateDeviceAction<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n > {\n type types = StateMachineTypes<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n >;\n\n const {\n getAppAndVersion,\n getDeviceSessionState,\n setDeviceSessionState,\n waitForDeviceUnlock,\n isDeviceOnboarded,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\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 getAppAndVersion: fromPromise(getAppAndVersion),\n waitForDeviceUnlock: fromObservable(waitForDeviceUnlock),\n },\n guards: {\n isDeviceOnboarded: () => isDeviceOnboarded(), // TODO: we don't have this info for now, this can be derived from the \"flags\" obtained in the getVersion command\n isDeviceLocked: ({ context }) => context._internalState.locked,\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorDeviceNotOnboarded: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceNotOnboardedError(),\n }),\n }),\n assignErrorDeviceLocked: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceLockedError(),\n }),\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n step: getDeviceStatusDAStateStep.UNLOCK_DEVICE,\n },\n }),\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 assignNoUserActionNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignUserActionUnlockNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n step: getDeviceStatusDAStateStep.UNLOCK_DEVICE,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHEwBcAiYBuBLAxmAMpoCGaArrFnoQIL5q4D2AdgHQ0FgBKYpEAJ4BiANoAGALqJQAB2axcTNjJAAPRAFoArAHZx7AIwAmQ7oCcugMyHzANmMAWYwBoQgxI8vsAHOJM+VuLmVj5e2gC+EW6omDjcJORUXPSMLBwA8qwARsykAE4QuKxQAMIAFmD4ANZiUqryisqsqhoImo4O7OGhPj4h5n6Obh4IunZ2RoZ+ena6nYaGUTHoKcRklNTxqc3sWbkFRSUVVbWihtJIII1K6a1aVtoGTxOOjtbv84YjiObik7ofPM7GFDP9jNofMsQLE1olNmsGLsADLMGrFMqVGp1S5yBS3FRXNqaOzadjiHx2KyORbzcRBczmH4IbTOdjaabaKmdGy6XSRaIw1bbdZJLa0MBI9LsVHo45Ys4XBr45r3dps-n0ubaGxgx6PZlWULkkLBGmDCzGYzQ2Ei+HJEVStjsACqsDA+SdrBdrAANmjqmthBA2GB2MVsMxqmG3R6vT7-TU1hJcdcVXciYgglZycYQiYqRTQoZtMynDmbM4aW8rHYzD4BSs4hL7eLuF7Xe7PWk2AmA0GPflmPl2LJfeQAGbDgC2nbjPe9fv7IpTyqaGdAbXmxnZPkMNNM820VuZ+8M7Dsb3MznpwW31sFtpbGwdEo7dFksjorAgADUPYobAnNiIasGGEZRmGT4JC+bY7NKH5fj+-75IBrDAdUCAQfg5DpCmq5XDcqqZmMjgGDY-yGJeejjFRzJ2P47DZoEJb+Hyx42sKz5ioiC7sIh35-gB6QYcIg7DqO45oFO+SztBhCtrxuwCchwlAQqWGsJGOHNPh9SEemhKbogdLsIMTjmPuNF1nYZaOBW+5OPu9l1oCjZCs2ME8Y6fGIb6BC4WwdDYKQuDjtkvq8HAFC+mgokEXi65GeoiBguYZJOPSJa6Hm1hGsyuglkxxiUjYVjXlq7nyaKCI+cpn7+Tp6TBaF4WRXwsAxXFCpiEqBlJS0JFAo4vg+BCe55e8-QFUVVglVShjlWRtZ2FEgqsMwEBwKo1WKXVG5pgNaokmRZmQg4fyLHR7ieCNpjGPyx7aNo6UNo4nGeQpsFKdKax8AIoyJQSg3Ge0L07q9F3+Istk3Qg1IjUaZ7GNS-LlU4H1wt9+3OvseSFBiGFrsDx01mZ15mHooReFaVj0fZ5Jci5zissYIKY3a2NvnxsrVITCrE8RoMdDucxWgx1jpZCELDHDgKTC9jg6mNXKLDSHPcbV3O7LG3bNH2SYioLB3EmCI1-HuVL6Cj4hU6eNjsIVD3UrWfKXVCj5cV5Wvtr5n6CShaFE-1JMkWzPgXpCjh+Faw3Mjq5jdOlJhGvo-RzRr3uvr79VjgFzQtWFpARVFnWxcHQNCylCBm+eKPjJL4jWMEdNww4O46vSFVsfyD5Nlj3na9KRAUPghCwPAIdV20QIR7e-RzOYbNK98cN7ndgR-BSzgo+YmdfYPOfSgAovkQ75MbyVtItehmSrJgcijz2uHD+pmXyQSQnyVLs2tQA */\n id: \"GetDeviceStatusDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n const sessionState = getDeviceSessionState();\n const { sessionStateType } = sessionState;\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceStatusDAStateStep.ONBOARD_CHECK,\n },\n _internalState: {\n onboarded: false, // we don't know how to check yet\n locked: false,\n currentApp:\n sessionStateType ===\n DeviceSessionStateType.ReadyWithoutSecureChannel\n ? sessionState.currentApp.name\n : null,\n currentAppVersion: null,\n error: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"OnboardingCheck\",\n },\n },\n OnboardingCheck: {\n // TODO: we don't have this info for now\n always: [\n {\n guard: {\n type: \"isDeviceOnboarded\",\n },\n target: \"AppAndVersionCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n onboarded: true,\n }),\n }),\n },\n {\n target: \"Error\",\n actions: \"assignErrorDeviceNotOnboarded\",\n },\n ],\n },\n UserActionUnlockDevice: {\n // we wait for the device to be unlocked (default timeout is 15s)\n entry: \"assignUserActionUnlockNeeded\",\n exit: \"assignNoUserActionNeeded\",\n invoke: {\n id: \"UserActionUnlockDevice\",\n src: \"waitForDeviceUnlock\",\n input: (_) => ({\n unlockTimeout,\n }),\n onDone: {\n target: \"AppAndVersionCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n locked: false,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorDeviceLocked\",\n },\n },\n },\n AppAndVersionCheck: {\n // We check the current app and version using the getAppAndVersion command\n invoke: {\n src: \"getAppAndVersion\",\n onDone: {\n target: \"ApplicationAvailableResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const state: DeviceSessionState = getDeviceSessionState();\n if (\n state.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n // Update the current app\n setDeviceSessionState({\n ...state,\n currentApp: _.event.output.data,\n });\n } else {\n // The device can be set to Ready if GetAppAndVersionCommand was successful\n setDeviceSessionState({\n deviceModelId: state.deviceModelId,\n sessionStateType:\n DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: _.event.output.data,\n installedApps: [],\n isSecureConnectionAllowed: false,\n });\n }\n return {\n ..._.context._internalState,\n locked: false,\n currentApp: _.event.output.data.name,\n currentAppVersion: _.event.output.data.version,\n };\n }\n if (\"errorCode\" in _.event.output.error) {\n if (_.event.output.error.errorCode === \"5515\") {\n // Locked device error\n return {\n ..._.context._internalState,\n locked: true,\n };\n } else if (_.event.output.error.errorCode === \"6e00\") {\n // CLA not supported\n // GetAppAndVersion should always be supported by the firmware or any app.\n // But on old firmware versions, that APDU was not supported in the dashboard.\n // On those firmwares, it fails with CLA_NOT_SUPPORTED in BOLOS, and INS_NOT_SUPPORTED\n // in applications. Therefore if CLA is not supported, we can consider we're on the\n // dashboard on an old firmware. We should therefore return that information to\n // ensure the user can still update his firmware and is not blocked at this step.\n return {\n ..._.context._internalState,\n locked: false,\n currentApp: \"BOLOS\",\n currentAppVersion: \"0.0.0\",\n };\n }\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ApplicationAvailableResultCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"UserActionUnlockDevice\",\n guard: \"isDeviceLocked\",\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 // TODO: instead we should rely on the current state (\"Success\" or \"Error\")\n const { context } = args;\n const { error, currentApp, currentAppVersion } = context._internalState;\n if (error) {\n return Left(error);\n }\n return Right<GetDeviceStatusDAOutput>({\n currentApp: currentApp!,\n currentAppVersion: currentAppVersion!,\n });\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppAndVersion = () => {\n return internalApi.sendCommand(new GetAppAndVersionCommand());\n };\n\n const waitForDeviceUnlock = ({\n input,\n }: {\n input: { unlockTimeout: number };\n }) =>\n interval(1000).pipe(\n switchMap(() =>\n from(internalApi.sendCommand(new GetAppAndVersionCommand())),\n ),\n mergeMap((output) => {\n const isLocked =\n !isSuccessCommandResult(output) &&\n \"errorCode\" in output.error &&\n output.error.errorCode === \"5515\";\n if (isLocked) {\n return EMPTY; // Continue the polling\n }\n return of(undefined); // Complete the observable\n }),\n take(1),\n timeout(input.unlockTimeout),\n );\n\n return {\n getAppAndVersion,\n waitForDeviceUnlock,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n isDeviceOnboarded: () => true, // TODO: we don't have this info for now\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["GetDeviceStatusDeviceAction_exports", "__export", "GetDeviceStatusDeviceAction", "__toCommonJS", "import_purify_ts", "import_rxjs", "import_operators", "import_xstate", "import_CommandResult", "import_GetAppAndVersionCommand", "import_DeviceStatus", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_XStateDeviceAction", "import_DeviceSessionState", "import_types", "internalApi", "getAppAndVersion", "getDeviceSessionState", "setDeviceSessionState", "waitForDeviceUnlock", "isDeviceOnboarded", "unlockTimeout", "context", "_", "sessionState", "sessionStateType", "state", "args", "error", "currentApp", "currentAppVersion", "input", "output"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var v=require("rxjs"),a=require("../../../command/model/CommandResult"),d=require("../../../command/utils/GlobalCommandError"),O=require("../../../device/DeviceModel"),i=require("../../../device/DeviceStatus"),u=require("../../../device-action/__test-utils__/makeInternalApi"),p=require("../../../device-action/__test-utils__/testDeviceActionStates"),t=require("../../../device-action/model/DeviceActionState"),c=require("../../../device-action/model/UserInteractionRequired"),D=require("../../../device-action/os/Errors"),s=require("../../../device-session/DeviceSessionState"),l=require("./GetDeviceStatusDeviceAction");describe("GetDeviceStatusDeviceAction",()=>{const A=vi.fn(),S=vi.fn(),y=vi.fn(),w=vi.fn(),R=vi.fn();function k(){return{getAppAndVersion:A,getDeviceSessionState:S,waitForDeviceUnlock:y,setDeviceSessionState:w,isDeviceOnboarded:R}}const{sendCommand:h,getDeviceSessionState:V,getDeviceSessionStateObservable:N}=(0,u.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.resetAllMocks(),R.mockReturnValue(!0)}),describe("without overriding `extractDependencies`",()=>{it("should run the device action with an unlocked device",()=>new Promise((r,o)=>{const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED,deviceModelId:O.DeviceModelId.NANO_X}),h.mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"},status:t.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should run the device action with a locked device",()=>new Promise((r,o)=>{const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:1500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:O.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValueOnce((0,a.CommandResultFactory)({error:new d.GlobalCommandError({...d.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"},status:t.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should timeout with a locked device",()=>new Promise((r,o)=>{const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:200}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:O.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValueOnce((0,a.CommandResultFactory)({error:new d.GlobalCommandError({...d.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice},status:t.DeviceActionStatus.Pending},{error:new D.DeviceLockedError("Device locked."),status:t.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should run the device action with an old firmware not supporting GetAppAndVersion",()=>new Promise((r,o)=>{const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED,deviceModelId:O.DeviceModelId.NANO_X}),h.mockResolvedValue((0,a.CommandResultFactory)({error:new d.GlobalCommandError({...d.GLOBAL_ERRORS["6e00"],errorCode:"6e00"})}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"0.0.0"},status:t.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),describe("success cases",()=>{it("should return the device status if the device is unlocked",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A.mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:void 0}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(w).toHaveBeenCalledWith({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"1.0.0"}}),r()},onError:o})})),it("should return the device status and update session if the device is not ready",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED}),A.mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:void 0}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(w).toHaveBeenCalledWith({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"1.0.0"},installedApps:[],isSecureConnectionAllowed:!1}),r()},onError:o})})),it("should return the device status if the device is locked and the user unlocks the device",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A.mockResolvedValueOnce((0,a.CommandResultFactory)({error:new d.GlobalCommandError({...d.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValueOnce((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}})),y.mockImplementation(()=>new v.Observable(m=>{const C=(0,v.interval)(50).subscribe({next:E=>{E>2?(m.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),m.complete()):m.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}})}});return()=>{C.unsubscribe()}}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),describe("errors cases",()=>{it("should end in an error if the device is not onboarded",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),R.mockReturnValue(!1);const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{error:new D.DeviceNotOnboardedError,status:t.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if the device is locked and the user does not unlock",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A.mockResolvedValue((0,a.CommandResultFactory)({error:new d.GlobalCommandError({...d.GLOBAL_ERRORS[5515],errorCode:"5515"})})),N.mockImplementation(()=>new v.Observable(m=>{const C=(0,v.interval)(200).subscribe({next:()=>{m.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:O.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1})}});return()=>{C.unsubscribe()}}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice},status:t.DeviceActionStatus.Pending},{error:new D.DeviceLockedError("Device locked."),status:t.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if the GetAppAndVersion command fails",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}});const e=new d.GlobalCommandError({...d.GLOBAL_ERRORS[5501],errorCode:"5501"});A.mockResolvedValue((0,a.CommandResultFactory)({error:e})),y.mockImplementation(()=>new v.Observable(C=>{const E=(0,v.interval)(50).subscribe({next:T=>{T>2?(C.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),C.complete()):C.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}})}});return()=>{E.unsubscribe()}}));const n=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(n,"extractDependencies").mockReturnValue(k());const m=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{error:e,status:t.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(n,m,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if getAppAndVersion actor throws an error",()=>new Promise((r,o)=>{S.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A.mockImplementation(()=>{throw new D.UnknownDAError("error")}),y.mockImplementation(()=>new v.Observable(m=>{m.complete()}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(k());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None},status:t.DeviceActionStatus.Pending},{error:new D.UnknownDAError("error"),status:t.DeviceActionStatus.Error}];(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),it("should emit a stopped state if the action is cancelled",()=>new Promise((r,o)=>{V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:O.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValue((0,a.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new l.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}}),n=[{status:t.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None}},{status:t.DeviceActionStatus.Stopped}],{cancel:m}=(0,p.testDeviceActionStates)(e,n,(0,u.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o});m()}))});
1
+ "use strict";var S=require("rxjs"),u=require("../../../command/model/CommandResult"),p=require("../../../command/utils/GlobalCommandError"),E=require("../../../device/DeviceModel"),i=require("../../../device/DeviceStatus"),d=require("../../../device-action/__test-utils__/makeInternalApi"),l=require("../../../device-action/__test-utils__/testDeviceActionStates"),t=require("../../../device-action/model/DeviceActionState"),c=require("../../../device-action/model/UserInteractionRequired"),A=require("../../../device-action/os/Errors"),s=require("../../../device-session/DeviceSessionState"),m=require("./GetDeviceStatusDeviceAction"),a=require("./types");describe("GetDeviceStatusDeviceAction",()=>{const C=vi.fn(),D=vi.fn(),R=vi.fn(),N=vi.fn(),y=vi.fn();function O(){return{getAppAndVersion:C,getDeviceSessionState:D,waitForDeviceUnlock:R,setDeviceSessionState:N,isDeviceOnboarded:y}}const{sendCommand:h,getDeviceSessionState:V,getDeviceSessionStateObservable:T}=(0,d.makeDeviceActionInternalApiMock)();beforeEach(()=>{vi.resetAllMocks(),y.mockReturnValue(!0)}),describe("without overriding `extractDependencies`",()=>{it("should run the device action with an unlocked device",()=>new Promise((r,o)=>{const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED,deviceModelId:E.DeviceModelId.NANO_X}),h.mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"},status:t.DeviceActionStatus.Completed}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should run the device action with a locked device",()=>new Promise((r,o)=>{const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:1500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:E.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValueOnce((0,u.CommandResultFactory)({error:new p.GlobalCommandError({...p.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"},status:t.DeviceActionStatus.Completed}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should timeout with a locked device",()=>new Promise((r,o)=>{const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:200}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:E.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValueOnce((0,u.CommandResultFactory)({error:new p.GlobalCommandError({...p.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{error:new A.DeviceLockedError("Device locked."),status:t.DeviceActionStatus.Error}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should run the device action with an old firmware not supporting GetAppAndVersion",()=>new Promise((r,o)=>{const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED,deviceModelId:E.DeviceModelId.NANO_X}),h.mockResolvedValue((0,u.CommandResultFactory)({error:new p.GlobalCommandError({...p.GLOBAL_ERRORS["6e00"],errorCode:"6e00"})}));const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{output:{currentApp:"BOLOS",currentAppVersion:"0.0.0"},status:t.DeviceActionStatus.Completed}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),describe("success cases",()=>{it("should return the device status if the device is unlocked",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),C.mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:void 0}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(N).toHaveBeenCalledWith({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"1.0.0"}}),r()},onError:o})})),it("should return the device status and update session if the device is not ready",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.Connected,deviceStatus:i.DeviceStatus.CONNECTED}),C.mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:void 0}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(N).toHaveBeenCalledWith({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"1.0.0"},installedApps:[],isSecureConnectionAllowed:!1}),r()},onError:o})})),it("should return the device status if the device is locked and the user unlocks the device",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),C.mockResolvedValueOnce((0,u.CommandResultFactory)({error:new p.GlobalCommandError({...p.GLOBAL_ERRORS[5515],errorCode:"5515"})})).mockResolvedValueOnce((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}})),R.mockImplementation(()=>new S.Observable(v=>{const k=(0,S.interval)(50).subscribe({next:w=>{w>2?(v.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),v.complete()):v.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}})}});return()=>{k.unsubscribe()}}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{status:t.DeviceActionStatus.Completed,output:{currentApp:"BOLOS",currentAppVersion:"1.0.0"}}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),describe("errors cases",()=>{it("should end in an error if the device is not onboarded",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),y.mockReturnValue(!1);const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{error:new A.DeviceNotOnboardedError,status:t.DeviceActionStatus.Error}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if the device is locked and the user does not unlock",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),C.mockResolvedValue((0,u.CommandResultFactory)({error:new p.GlobalCommandError({...p.GLOBAL_ERRORS[5515],errorCode:"5515"})})),T.mockImplementation(()=>new S.Observable(v=>{const k=(0,S.interval)(200).subscribe({next:()=>{v.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:E.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1})}});return()=>{k.unsubscribe()}}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.UnlockDevice,step:a.getDeviceStatusDAStateStep.UNLOCK_DEVICE},status:t.DeviceActionStatus.Pending},{error:new A.DeviceLockedError("Device locked."),status:t.DeviceActionStatus.Error}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if the GetAppAndVersion command fails",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}});const e=new p.GlobalCommandError({...p.GLOBAL_ERRORS[5501],errorCode:"5501"});C.mockResolvedValue((0,u.CommandResultFactory)({error:e})),R.mockImplementation(()=>new S.Observable(k=>{const w=(0,S.interval)(50).subscribe({next:f=>{f>2?(k.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),k.complete()):k.next({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}})}});return()=>{w.unsubscribe()}}));const n=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(n,"extractDependencies").mockReturnValue(O());const v=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{error:e,status:t.DeviceActionStatus.Error}];(0,l.testDeviceActionStates)(n,v,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})})),it("should end in an error if getAppAndVersion actor throws an error",()=>new Promise((r,o)=>{D.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),C.mockImplementation(()=>{throw new A.UnknownDAError("error")}),R.mockImplementation(()=>new S.Observable(v=>{v.complete()}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}});vi.spyOn(e,"extractDependencies").mockReturnValue(O());const n=[{intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK},status:t.DeviceActionStatus.Pending},{error:new A.UnknownDAError("error"),status:t.DeviceActionStatus.Error}];(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o})}))}),it("should emit a stopped state if the action is cancelled",()=>new Promise((r,o)=>{V.mockReturnValue({sessionStateType:s.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:i.DeviceStatus.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"},installedApps:[],deviceModelId:E.DeviceModelId.NANO_X,isSecureConnectionAllowed:!1}),h.mockResolvedValue((0,u.CommandResultFactory)({data:{name:"BOLOS",version:"1.0.0"}}));const e=new m.GetDeviceStatusDeviceAction({input:{unlockTimeout:500}}),n=[{status:t.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:c.UserInteractionRequired.None,step:a.getDeviceStatusDAStateStep.ONBOARD_CHECK}},{status:t.DeviceActionStatus.Stopped}],{cancel:v}=(0,l.testDeviceActionStates)(e,n,(0,d.makeDeviceActionInternalApiMock)(),{onDone:r,onError:o});v()}))});
2
2
  //# sourceMappingURL=GetDeviceStatusDeviceAction.test.js.map