@ledgerhq/device-management-kit 0.0.0-try-to-fix-20250429171448 → 0.0.0-web-ble-29-08---20250829104351

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 (669) hide show
  1. package/lib/cjs/package.json +22 -23
  2. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  4. package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
  5. package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
  6. package/lib/cjs/src/api/DmkConfig.js +1 -1
  7. package/lib/cjs/src/api/DmkConfig.js.map +1 -1
  8. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  9. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  10. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  11. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  12. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js +1 -1
  13. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  14. package/lib/cjs/src/api/command/di/commandModule.js +1 -1
  15. package/lib/cjs/src/api/command/di/commandModule.js.map +3 -3
  16. package/lib/cjs/src/api/command/di/commandModule.test.js +1 -1
  17. package/lib/cjs/src/api/command/di/commandModule.test.js.map +2 -2
  18. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  19. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  20. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  21. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  22. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  23. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  24. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  25. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  26. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +2 -0
  27. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  28. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  29. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  30. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  31. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  32. package/lib/cjs/src/api/command/utils/CommandUtils.js +1 -1
  33. package/lib/cjs/src/api/command/utils/CommandUtils.js.map +2 -2
  34. package/lib/cjs/src/api/command/utils/CommandUtils.test.js +1 -1
  35. package/lib/cjs/src/api/command/utils/CommandUtils.test.js.map +2 -2
  36. package/lib/cjs/src/api/command/utils/GlobalCommandError.js +1 -1
  37. package/lib/cjs/src/api/command/utils/GlobalCommandError.js.map +2 -2
  38. package/lib/cjs/src/api/device/DeviceModel.js +1 -1
  39. package/lib/cjs/src/api/device/DeviceModel.js.map +2 -2
  40. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  41. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  42. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  43. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  44. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  45. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  46. package/lib/cjs/src/api/device-action/di/deviceActionModule.js +1 -1
  47. package/lib/cjs/src/api/device-action/di/deviceActionModule.js.map +3 -3
  48. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js +1 -1
  49. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  50. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  51. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  52. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  53. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  54. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  55. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  56. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -1
  57. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +1 -1
  58. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  59. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  60. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  61. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  62. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  63. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  64. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +2 -0
  65. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  66. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  67. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +2 -2
  68. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  69. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  70. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  71. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  72. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
  73. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +1 -1
  74. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  75. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  76. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  77. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  78. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +2 -0
  79. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  80. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  81. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  82. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  83. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  84. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  85. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +2 -2
  86. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -1
  87. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +1 -1
  88. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  89. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  90. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  91. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  92. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +2 -0
  93. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  94. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  95. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  96. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  97. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  98. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -1
  99. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +1 -1
  100. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  101. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  102. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  103. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  104. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  105. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  106. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  107. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  108. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  109. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  110. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  111. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  112. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  113. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  114. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  115. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  116. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  117. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  118. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  119. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  120. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  121. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  122. package/lib/cjs/src/api/device-model/model/DeviceModel.js +1 -1
  123. package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +2 -2
  124. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +1 -1
  125. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  126. package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
  127. package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +2 -2
  128. package/lib/cjs/src/api/index.js +1 -1
  129. package/lib/cjs/src/api/index.js.map +3 -3
  130. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  131. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  132. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +1 -1
  133. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  134. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  135. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js +1 -1
  136. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +1 -1
  137. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  138. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  139. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  140. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  141. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  142. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  143. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js +1 -1
  144. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +1 -1
  145. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  146. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  147. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  148. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  149. package/lib/cjs/src/api/secure-channel/task/types.js +1 -1
  150. package/lib/cjs/src/api/secure-channel/task/types.js.map +2 -2
  151. package/lib/cjs/src/api/secure-channel/utils.js +1 -1
  152. package/lib/cjs/src/api/secure-channel/utils.js.map +3 -3
  153. package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
  154. package/lib/cjs/src/api/secure-channel/utils.test.js.map +3 -3
  155. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  156. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  157. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  158. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  159. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  160. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  161. package/lib/cjs/src/api/types.js +1 -1
  162. package/lib/cjs/src/api/types.js.map +1 -1
  163. package/lib/cjs/src/api/utils/AppName.js +2 -0
  164. package/lib/cjs/src/api/utils/AppName.js.map +7 -0
  165. package/lib/cjs/src/api/utils/AppName.test.js +2 -0
  166. package/lib/cjs/src/api/utils/AppName.test.js.map +7 -0
  167. package/lib/cjs/src/di.js +1 -1
  168. package/lib/cjs/src/di.js.map +2 -2
  169. package/lib/cjs/src/internal/config/di/configModule.js +1 -1
  170. package/lib/cjs/src/internal/config/di/configModule.js.map +3 -3
  171. package/lib/cjs/src/internal/config/di/configModule.test.js +1 -1
  172. package/lib/cjs/src/internal/config/di/configModule.test.js.map +2 -2
  173. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +1 -1
  174. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  175. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  176. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  177. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  178. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  179. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  180. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  181. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  182. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +2 -2
  183. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  184. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  185. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  186. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  187. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  188. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  189. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  190. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  191. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  192. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  193. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  194. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  195. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  196. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  197. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  198. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  199. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  200. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  201. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js +1 -1
  202. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  203. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  204. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  205. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  206. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  207. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  208. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  209. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  210. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  211. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  212. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  213. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  214. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  215. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  216. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  217. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  218. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  219. package/lib/cjs/src/internal/manager-api/model/Application.js +1 -1
  220. package/lib/cjs/src/internal/manager-api/model/Application.js.map +1 -1
  221. package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
  222. package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
  223. package/lib/cjs/src/internal/manager-api/model/Firmware.js +1 -1
  224. package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +1 -1
  225. package/lib/cjs/src/internal/manager-api/model/Language.js +2 -0
  226. package/lib/cjs/src/internal/manager-api/model/Language.js.map +7 -0
  227. package/lib/cjs/src/internal/manager-api/model/Params.js +1 -1
  228. package/lib/cjs/src/internal/manager-api/model/Params.js.map +1 -1
  229. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  230. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  231. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  232. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  233. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +1 -1
  234. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +1 -1
  235. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js +1 -1
  236. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js.map +3 -3
  237. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js +1 -1
  238. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +3 -3
  239. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  240. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  241. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  242. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  243. package/lib/cjs/src/internal/secure-channel/model/Errors.js +1 -1
  244. package/lib/cjs/src/internal/secure-channel/model/Errors.js.map +3 -3
  245. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  246. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  247. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  248. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  249. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +1 -1
  250. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
  251. package/lib/cjs/src/internal/send/di/sendModule.js +1 -1
  252. package/lib/cjs/src/internal/send/di/sendModule.js.map +3 -3
  253. package/lib/cjs/src/internal/send/di/sendModule.test.js +1 -1
  254. package/lib/cjs/src/internal/send/di/sendModule.test.js.map +2 -2
  255. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +1 -1
  256. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  257. package/lib/cjs/src/internal/transport/di/transportModule.js +1 -1
  258. package/lib/cjs/src/internal/transport/di/transportModule.js.map +3 -3
  259. package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
  260. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +2 -2
  261. package/lib/esm/package.json +22 -23
  262. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  263. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  264. package/lib/esm/src/api/DeviceManagementKitBuilder.js +1 -1
  265. package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +3 -3
  266. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  267. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  268. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  269. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  270. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js +1 -1
  271. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  272. package/lib/esm/src/api/command/di/commandModule.js +1 -1
  273. package/lib/esm/src/api/command/di/commandModule.js.map +3 -3
  274. package/lib/esm/src/api/command/di/commandModule.test.js +1 -1
  275. package/lib/esm/src/api/command/di/commandModule.test.js.map +2 -2
  276. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  277. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  278. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  279. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  280. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  281. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  282. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  283. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  284. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +2 -0
  285. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  286. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  287. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  288. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  289. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  290. package/lib/esm/src/api/command/utils/CommandUtils.js +1 -1
  291. package/lib/esm/src/api/command/utils/CommandUtils.js.map +3 -3
  292. package/lib/esm/src/api/command/utils/CommandUtils.test.js +1 -1
  293. package/lib/esm/src/api/command/utils/CommandUtils.test.js.map +2 -2
  294. package/lib/esm/src/api/command/utils/GlobalCommandError.js +1 -1
  295. package/lib/esm/src/api/command/utils/GlobalCommandError.js.map +2 -2
  296. package/lib/esm/src/api/device/DeviceModel.js +1 -1
  297. package/lib/esm/src/api/device/DeviceModel.js.map +2 -2
  298. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  299. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  300. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  301. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  302. package/lib/esm/src/api/device-action/di/deviceActionModule.js +1 -1
  303. package/lib/esm/src/api/device-action/di/deviceActionModule.js.map +3 -3
  304. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js +1 -1
  305. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  306. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  307. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  308. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  309. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  310. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  311. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  312. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  313. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  314. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  315. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  316. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  317. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  318. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js +1 -0
  319. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  320. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  321. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +2 -2
  322. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  323. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  324. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  325. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  326. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  327. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  328. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  329. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  330. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
  331. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  332. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  333. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  334. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  335. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  336. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  337. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  338. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  339. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  340. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  341. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  342. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
  343. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  344. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  345. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  346. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  347. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  348. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  349. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  350. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  351. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  352. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  353. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  354. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  355. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  356. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  357. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  358. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  359. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  360. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  361. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  362. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  363. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  364. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  365. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  366. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  367. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  368. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  369. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  370. package/lib/esm/src/api/device-model/model/DeviceModel.js +1 -1
  371. package/lib/esm/src/api/device-model/model/DeviceModel.js.map +2 -2
  372. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +1 -1
  373. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  374. package/lib/esm/src/api/device-session/DeviceSessionState.js +1 -1
  375. package/lib/esm/src/api/device-session/DeviceSessionState.js.map +2 -2
  376. package/lib/esm/src/api/index.js +1 -1
  377. package/lib/esm/src/api/index.js.map +3 -3
  378. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  379. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  380. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  381. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  382. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  383. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  384. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  385. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  386. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  387. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  388. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  389. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  390. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  391. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  392. package/lib/esm/src/api/secure-channel/task/types.js +1 -1
  393. package/lib/esm/src/api/secure-channel/task/types.js.map +2 -2
  394. package/lib/esm/src/api/secure-channel/utils.js +1 -1
  395. package/lib/esm/src/api/secure-channel/utils.js.map +3 -3
  396. package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
  397. package/lib/esm/src/api/secure-channel/utils.test.js.map +3 -3
  398. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  399. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  400. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  401. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  402. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  403. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  404. package/lib/esm/src/api/utils/AppName.js +2 -0
  405. package/lib/esm/src/api/utils/AppName.js.map +7 -0
  406. package/lib/esm/src/api/utils/AppName.test.js +2 -0
  407. package/lib/esm/src/api/utils/AppName.test.js.map +7 -0
  408. package/lib/esm/src/di.js +1 -1
  409. package/lib/esm/src/di.js.map +3 -3
  410. package/lib/esm/src/internal/config/di/configModule.js +1 -1
  411. package/lib/esm/src/internal/config/di/configModule.js.map +3 -3
  412. package/lib/esm/src/internal/config/di/configModule.test.js +1 -1
  413. package/lib/esm/src/internal/config/di/configModule.test.js.map +2 -2
  414. package/lib/esm/src/internal/device-model/di/deviceModelModule.js +1 -1
  415. package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  416. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  417. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  418. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  419. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  420. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  421. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  422. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  423. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +2 -2
  424. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  425. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  426. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  427. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  428. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  429. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  430. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  431. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  432. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  433. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  434. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  435. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  436. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  437. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  438. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  439. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  440. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  441. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  442. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js +1 -1
  443. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  444. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  445. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  446. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  447. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  448. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  449. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  450. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  451. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  452. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  453. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  454. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  455. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  456. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  457. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  458. package/lib/esm/src/internal/manager-api/model/Application.js +1 -1
  459. package/lib/esm/src/internal/manager-api/model/Application.js.map +1 -1
  460. package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
  461. package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
  462. package/lib/esm/src/internal/manager-api/model/Language.js +1 -0
  463. package/lib/esm/src/internal/manager-api/model/Language.js.map +7 -0
  464. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  465. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  466. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  467. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  468. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js +1 -1
  469. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js.map +3 -3
  470. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js +1 -1
  471. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +3 -3
  472. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  473. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  474. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  475. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  476. package/lib/esm/src/internal/secure-channel/model/Errors.js +1 -1
  477. package/lib/esm/src/internal/secure-channel/model/Errors.js.map +3 -3
  478. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  479. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  480. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  481. package/lib/esm/src/internal/send/di/sendModule.js +1 -1
  482. package/lib/esm/src/internal/send/di/sendModule.js.map +3 -3
  483. package/lib/esm/src/internal/send/di/sendModule.test.js +1 -1
  484. package/lib/esm/src/internal/send/di/sendModule.test.js.map +2 -2
  485. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js +1 -1
  486. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  487. package/lib/esm/src/internal/transport/di/transportModule.js +1 -1
  488. package/lib/esm/src/internal/transport/di/transportModule.js.map +3 -3
  489. package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
  490. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
  491. package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -1
  492. package/lib/types/src/api/DmkConfig.d.ts +1 -0
  493. package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
  494. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
  495. package/lib/types/src/api/apdu/utils/ApduParser.d.ts.map +1 -1
  496. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +28 -0
  497. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  498. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts +1 -0
  499. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts.map +1 -1
  500. package/lib/types/src/api/command/di/commandModule.d.ts.map +1 -1
  501. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +16 -0
  502. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -0
  503. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts +2 -0
  504. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts.map +1 -0
  505. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +30 -2
  506. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  507. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +24 -0
  508. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -0
  509. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts +2 -0
  510. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts.map +1 -0
  511. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
  512. package/lib/types/src/api/command/utils/CommandErrors.d.ts.map +1 -1
  513. package/lib/types/src/api/command/utils/CommandUtils.d.ts +3 -0
  514. package/lib/types/src/api/command/utils/CommandUtils.d.ts.map +1 -1
  515. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts +1 -1
  516. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts.map +1 -1
  517. package/lib/types/src/api/device/DeviceModel.d.ts +2 -1
  518. package/lib/types/src/api/device/DeviceModel.d.ts.map +1 -1
  519. package/lib/types/src/api/device-action/DeviceAction.d.ts +2 -0
  520. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  521. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  522. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +5 -0
  523. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  524. package/lib/types/src/api/device-action/di/deviceActionModule.d.ts.map +1 -1
  525. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +1 -0
  526. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  527. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  528. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +1 -1
  529. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  530. package/lib/types/src/api/device-action/os/Errors.d.ts +20 -0
  531. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  532. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts +58 -0
  533. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -0
  534. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts +2 -0
  535. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts.map +1 -0
  536. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +28 -0
  537. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -0
  538. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
  539. package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts.map +1 -1
  540. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +3 -4
  541. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
  542. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts +40 -0
  543. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -0
  544. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts +2 -0
  545. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts.map +1 -0
  546. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +65 -0
  547. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -0
  548. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
  549. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +0 -1
  550. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
  551. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts +15 -0
  552. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -0
  553. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts +2 -0
  554. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts.map +1 -0
  555. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +24 -0
  556. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -0
  557. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
  558. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +1 -1
  559. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  560. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +30 -0
  561. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -0
  562. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts +2 -0
  563. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts.map +1 -0
  564. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +31 -0
  565. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -0
  566. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts +2 -0
  567. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts.map +1 -0
  568. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +18 -0
  569. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -0
  570. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts +2 -0
  571. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts.map +1 -0
  572. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts +21 -0
  573. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts.map +1 -0
  574. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts +2 -0
  575. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts.map +1 -0
  576. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +1 -0
  577. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  578. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
  579. package/lib/types/src/api/device-model/model/DeviceModel.d.ts +2 -0
  580. package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -1
  581. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -1
  582. package/lib/types/src/api/device-session/DeviceSessionState.d.ts +93 -0
  583. package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
  584. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -1
  585. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -1
  586. package/lib/types/src/api/index.d.ts +5 -1
  587. package/lib/types/src/api/index.d.ts.map +1 -1
  588. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
  589. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +2 -1
  590. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -1
  591. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -1
  592. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +2 -1
  593. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -1
  594. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
  595. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +2 -1
  596. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
  597. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
  598. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +2 -1
  599. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -1
  600. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +5 -2
  601. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
  602. package/lib/types/src/api/secure-channel/task/types.d.ts +6 -1
  603. package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -1
  604. package/lib/types/src/api/secure-channel/utils.d.ts +0 -11
  605. package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -1
  606. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts +8 -7
  607. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -1
  608. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts +2 -0
  609. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts.map +1 -0
  610. package/lib/types/src/api/transport/model/Errors.d.ts +7 -3
  611. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  612. package/lib/types/src/api/types.d.ts +4 -1
  613. package/lib/types/src/api/types.d.ts.map +1 -1
  614. package/lib/types/src/api/utils/AppName.d.ts +2 -0
  615. package/lib/types/src/api/utils/AppName.d.ts.map +1 -0
  616. package/lib/types/src/api/utils/AppName.test.d.ts +2 -0
  617. package/lib/types/src/api/utils/AppName.test.d.ts.map +1 -0
  618. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  619. package/lib/types/src/di.d.ts.map +1 -1
  620. package/lib/types/src/internal/config/di/configModule.d.ts.map +1 -1
  621. package/lib/types/src/internal/device-model/di/deviceModelModule.d.ts.map +1 -1
  622. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  623. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +1 -0
  624. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  625. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  626. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
  627. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts.map +1 -1
  628. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  629. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts +3 -1
  630. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts.map +1 -1
  631. package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
  632. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +20 -4
  633. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
  634. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +41 -6
  635. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  636. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts +104 -18
  637. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts.map +1 -1
  638. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +5 -0
  639. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
  640. package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
  641. package/lib/types/src/internal/manager-api/model/Application.d.ts +12 -12
  642. package/lib/types/src/internal/manager-api/model/Application.d.ts.map +1 -1
  643. package/lib/types/src/internal/manager-api/model/Const.d.ts +1 -0
  644. package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
  645. package/lib/types/src/internal/manager-api/model/Firmware.d.ts +17 -3
  646. package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -1
  647. package/lib/types/src/internal/manager-api/model/Language.d.ts +12 -0
  648. package/lib/types/src/internal/manager-api/model/Language.d.ts.map +1 -0
  649. package/lib/types/src/internal/manager-api/model/Params.d.ts +20 -0
  650. package/lib/types/src/internal/manager-api/model/Params.d.ts.map +1 -1
  651. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts +7 -1
  652. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
  653. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +39 -1
  654. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
  655. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts +3 -1
  656. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts.map +1 -1
  657. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -1
  658. package/lib/types/src/internal/secure-channel/model/Errors.d.ts +22 -2
  659. package/lib/types/src/internal/secure-channel/model/Errors.d.ts.map +1 -1
  660. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +2 -2
  661. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
  662. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +3 -3
  663. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
  664. package/lib/types/src/internal/send/di/sendModule.d.ts.map +1 -1
  665. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +5 -1
  666. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts.map +1 -1
  667. package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
  668. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  669. package/package.json +17 -18
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetOsVersionCommand,\n type GetOsVersionResponse,\n} from \"@api/command/os/GetOsVersionCommand\";\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 { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\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\";\nimport { ListInstalledAppsDeviceAction } from \"@api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction\";\nimport { type InstalledApp } from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { ConnectToSecureChannelTask } from \"@api/secure-channel/task/ConnectToSecureChannelTask\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport { type Input } from \"@api/secure-channel/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n type MachineDependencies,\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppStateMachineInternalState,\n} from \"./types\";\n\nexport class UninstallAppDeviceAction extends XStateDeviceAction<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n> {\n override makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n > {\n type types = StateMachineTypes<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n >;\n\n const {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState,\n setDeviceSessionState,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n const listInstalledAppsMachine = new ListInstalledAppsDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listInstalledApps: listInstalledAppsMachine,\n goToDashboard: goToDashboardMachine,\n getOsVersion: fromPromise(getOsVersion),\n getAppsByHash: fromPromise(getAppsByHash),\n uninstallApp: fromObservable(uninstallApp),\n },\n guards: {\n hasError: (_) => _.context._internalState.error !== null,\n appNotInstalled: (_) =>\n !_.context._internalState.installedApps.some(\n (app) => app.name === _.context.input.appName,\n ),\n appNotFound: (_) =>\n _.context._internalState.appList.findIndex(\n (app) => app?.versionName === _.context.input.appName,\n ) === -1,\n isDepAppOfOther: (_) =>\n _.context._internalState.appList.some(\n (app) => app?.parentName === _.context.input.appName,\n ),\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"],\n }),\n }),\n assignAppNotFound: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall not found in manager API\",\n ),\n }),\n }),\n assignIsDepAppOfOther: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall is a dependency of another installed app\",\n ),\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEkB2sAuBDANjgggA6EAiYAbgJYDGY+1GlA9qgHRlW0BKYWEAngGIA2gAYAuolCEmsSoxZSQAD0QBGAJyjWADgDsAFg0A2HSb2iArMbUBmADQh+iAExrjrS6KuWNtte7Glga2AL6hjmiYuATEHDR0DMxsAOJMACpMJFiwABYARkxYAE4QghAsYKyUqORMANZVUBlZOQVFpWKSSCAycgqoSqoIxi6WrKJq1rYGNgaiBrOOzgi2th5qonouorYuo9YBBuGR6Nh4RKQUCfQDrGmZ2XmFJWVgxcVMxayEOFgYADMvgBbVjNR5tF6dCRKPryZJDRAHCZTYwzOYLJZOdR6DSeFy2MwBPaaXzGE4gKLnWJXTiJO4PVrPDoQADCuTA1HqIhhPThA0RCE2XlY+0semMomMBgsOjMyyRoh0E28BmClhc+0mxwilLOMUu8Vot2S9xaT3ar3ZnO5wjU3Wksnhih6w2F2jFEqlMqV8uxq0stlYgTlGg02wJOjCuqpBri12NSRY9zAGAA8rAAGrvOQscqVaq1BpNVMZ7PFXOoLqwp0C13qDVqVhaIK+HSifazNQK1YuPHGLTWQxabaLSwU2MXeN0k3JlKlrM55LWrk8h29WsI+tCjRqAysebSvY6TWagw6HvnvFeDsaGX6UR+Wx6Cf6qe0m5J1IL8uVle2+0a36LdQDdXd90PEIXBPU9zx7dFWD0LwxgMHYFkmckYzfGkjXpU15wwS4ABlKEwfNUCqGo6kaFNCOIEjMGrPlNxdUDXFscVRR0VFxXDJCL39PYgxcPRbD8NQ9DUOV9BfLDonfXDZ2-OjCAYjB-zXIDnUGbcRIkxDNEfEIwwCFx4MDYNjFMMxw01Qlo1OeScITPC51TYjSPUjlVztdd+RAlRXEkvQDK0O8xN3NQzP9HR9xvKxCT0E9Jj0WTdVQJgIDgJRJ2cmcvy0us2IQABaYwezK18nMNFylPYFyeD4FZHWA1jAoQVCezccYb02JDDPcQkqupGr8oZc1IRZQqAuGaDxhMfQxjsKMlQcf1NBcFVdlmPs9wJNVhrjD9E3GiFmStbz6mmtrhijTaFu4tZRJMSZzJCqNnyS9x5m2DRDoU2qv1osslza-ybvUNwg02DRLFi+YZnbSx4JE5sJO8Xc3CsWZMMckbp0-Bkf1B1B-2unTiokuxWGlJULHWWwOzGcymwMKnULEuzRn+vLCfw9z6M88nBR2VLRWQ6xxR0GxRhRpsb2fNYjDcXFZLxo7FKBgiPMwMnmNain2rGDiD01PdUs0NVu0EtUtq8KydginV1YBsbTQAZQAV2oWhYHgfXtJFsxtGsXbuMsCPdh7bjPG8AkNFi70-B50a+eTABRD4vmF3Tg88UZd3DyO1pWDj9wlCwLFMDQ+1xcdwlCIA */\n id: \"UninstallAppDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n appName: _.input.appName,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n installedApps: [],\n appList: [],\n getOsVersionResponse: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"ListInstalledApps\",\n },\n },\n ListInstalledApps: {\n invoke: {\n id: \"listInstalledApps\",\n src: \"listInstalledApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"ListInstalledAppsCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: ({ installedApps }) => ({\n ..._.context._internalState,\n installedApps,\n hasCheckedInstalledApps: true,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListInstalledAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Success\",\n guard: \"appNotInstalled\",\n },\n {\n target: \"GetAppsByHash\",\n },\n ],\n },\n GetAppsByHash: {\n invoke: {\n id: \"getAppsByHash\",\n src: \"getAppsByHash\",\n input: (_) => _.context._internalState.installedApps!,\n onDone: {\n target: \"GetAppsByHashCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf({\n Right: (apps) => ({\n ..._.context._internalState,\n appList: apps,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppsByHashCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Error\",\n guard: \"appNotFound\",\n actions: \"assignAppNotFound\",\n },\n {\n target: \"Error\",\n guard: \"isDepAppOfOther\",\n actions: \"assignIsDepAppOfOther\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n invoke: {\n id: \"goToDashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"GetOsVersion\",\n },\n ],\n },\n GetOsVersion: {\n invoke: {\n id: \"getOsVersion\",\n src: \"getOsVersion\",\n input: (_) => undefined,\n onDone: {\n target: \"GetOsVersionCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const currentState: DeviceSessionState =\n getDeviceSessionState();\n const isSecureConnectionAllowed =\n _.event.output.data.secureElementFlags\n .isSecureConnectionAllowed;\n if (\n currentState.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...currentState,\n isSecureConnectionAllowed,\n });\n }\n return {\n ..._.context._internalState,\n getOsVersionResponse: _.event.output.data,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n },\n },\n GetOsVersionCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"UninstallApp\",\n },\n ],\n },\n UninstallApp: {\n invoke: {\n id: \"uninstallApp\",\n src: \"uninstallApp\",\n input: (_) => ({\n deviceInfo: _.context._internalState.getOsVersionResponse!,\n app: _.context._internalState.appList.find(\n (app) => app?.versionName === _.context.input.appName,\n )!,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => {\n switch (_.event.snapshot.context?.type) {\n case SecureChannelEventType.PermissionRequested: {\n return {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n };\n }\n case SecureChannelEventType.PermissionGranted: {\n return {\n requiredUserInteraction: UserInteractionRequired.None,\n };\n }\n default:\n return {\n ..._.context.intermediateValue,\n };\n }\n },\n }),\n },\n onDone: {\n target: \"ListInstalledApps\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n description: \"App uninstalled successfully\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.error\n ? Left(context._internalState.error)\n : Right(void 0),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getOsVersion = () =>\n internalApi.sendCommand(new GetOsVersionCommand());\n\n const getAppsByHash = ({ input }: Input<InstalledApp[]>) => {\n const appHashes = input.map((app) => app.hash);\n return internalApi.getManagerApiService().getAppsByHash(appHashes);\n };\n\n const uninstallApp = ({\n input,\n }: Input<{\n deviceInfo: GetOsVersionResponse;\n app: Application;\n }>) => {\n const { deviceInfo, app } = input;\n const eitherConnection = internalApi\n .getSecureChannelService()\n .uninstallApp(deviceInfo, app);\n return new ConnectToSecureChannelTask(internalApi, {\n connection: eitherConnection,\n }).run();\n };\n\n return {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state) =>\n internalApi.setDeviceSessionState(state),\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Left", "Right", "assign", "fromObservable", "fromPromise", "setup", "isSuccessCommandResult", "GetOsVersionCommand", "UserInteractionRequired", "DEFAULT_UNLOCK_TIMEOUT_MS", "UnknownDAError", "GoToDashboardDeviceAction", "XStateDeviceAction", "DeviceSessionStateType", "ListInstalledAppsDeviceAction", "ConnectToSecureChannelTask", "SecureChannelEventType", "UninstallAppDeviceAction", "internalApi", "getOsVersion", "getAppsByHash", "uninstallApp", "getDeviceSessionState", "setDeviceSessionState", "unlockTimeout", "goToDashboardMachine", "listInstalledAppsMachine", "_", "app", "installedApps", "error", "apps", "currentState", "isSecureConnectionAllowed", "context", "input", "appHashes", "deviceInfo", "eitherConnection", "state"]
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetOsVersionCommand,\n type GetOsVersionResponse,\n} from \"@api/command/os/GetOsVersionCommand\";\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 { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\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\";\nimport { ListInstalledAppsDeviceAction } from \"@api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction\";\nimport { type InstalledApp } from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { ConnectToSecureChannelTask } from \"@api/secure-channel/task/ConnectToSecureChannelTask\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport { type Input } from \"@api/secure-channel/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n type MachineDependencies,\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppStateMachineInternalState,\n} from \"./types\";\n\nexport class UninstallAppDeviceAction extends XStateDeviceAction<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n> {\n override makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n > {\n type types = StateMachineTypes<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n >;\n\n const {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState,\n setDeviceSessionState,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n const listInstalledAppsMachine = new ListInstalledAppsDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listInstalledApps: listInstalledAppsMachine,\n goToDashboard: goToDashboardMachine,\n getOsVersion: fromPromise(getOsVersion),\n getAppsByHash: fromPromise(getAppsByHash),\n uninstallApp: fromObservable(uninstallApp),\n },\n guards: {\n hasError: (_) => _.context._internalState.error !== null,\n appNotInstalled: (_) =>\n !_.context._internalState.installedApps.some(\n (app) => app.name === _.context.input.appName,\n ),\n appNotFound: (_) =>\n _.context._internalState.appList.findIndex(\n (app) => app?.versionName === _.context.input.appName,\n ) === -1,\n isDepAppOfOther: (_) =>\n _.context._internalState.appList.some(\n (app) => app?.parentName === _.context.input.appName,\n ),\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"],\n }),\n }),\n assignAppNotFound: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall not found in manager API\",\n ),\n }),\n }),\n assignIsDepAppOfOther: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall is a dependency of another installed app\",\n ),\n }),\n }),\n cleanupDeviceState: () => {\n // After app successful uninstallation, cleanup the device session state\n // to force fetching the new device state when required\n const state = getDeviceSessionState();\n if (state.sessionStateType !== DeviceSessionStateType.Connected) {\n setDeviceSessionState({\n ...state,\n installedApps: [],\n appsUpdates: undefined,\n });\n }\n },\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEkB2sAuBDANjgggA6EAiYAbgJYDGY+1GlA9qgHRlW0BKYWEAngGIA2gAYAuolCEmsSoxZSQAD0QBGAJyjWADgDsAFg0A2HSb2iArMbUBmADQh+iAExrjrS6KuWNtte7Glga2AL6hjmiYuATEHDR0DMxsAOJMACpMJFiwABYARkxYAE4QghAsYKyUqORMANZVUBlZOQVFpWKSSCAycgqoSqoIxi6WrKJq1rYGNgaiBrOOzgi2th5qonouorYuo9YBBuGR6Nh4RKQUCfQDrGmZ2XmFJWVgxcVMxayEOFgYADMvgBbVjNR5tF6dCRKPryZJDRAHCZTYwzOYLJZOdR6DSeFy2MwBPaaXzGE4gKLnWJXTiJO4PVrPDoQADCuTA1HqIhhPThA0RCE2XlY+0semMomMBgsOjMyyRoh0E28BmClhc+0mxwilLOMUu8Vot2S9xaT3ar3ZnO5wjU3Wksnhih6w2F2jFEqlMqV8uxq0stlYgTlGg02wJOjCuqpBri12NSRY9zAGAA8rAAGrvOQscqVaq1BpNVMZ7PFXOoLqwp0C13qDVqVhaIK+HSifazNQK1YuPHGLTWQxabaLSwU2MXeN0k3JlKlrM55LWrk8h29WsI+tCjRqAysebSvY6TWagw6HvnvFeDsaGX6UR+Wx6Cf6qe0m5J1IL8uVle2+0a36LdQDdXd90PEIXBPU9zx7dFWD0LwxgMHYFkmckYzfGkjXpU15wwS4ABlKEwfNUCqGo6kaFNCOIEjMGrPlNxdUDXFscVRR0VFxXDJCL39PYgxcPRbD8NQ9DUOV9BfLDonfXDZ2-OjCAYjB-zXIDnUGbcRIkxDNEfEIwwCFx4MDYNjFMMxw01Qlo1OeScITPC51TYjSPUjlVztdd+RAlRXEkvQDK0O8xN3NQzP9HR9xvKxCT0E9Jj0WTdVQJgIDgJRJ2cmcvy0us2IQABaYwezK18nMNFylPYFyeD4FZHWA1jAoQVCezccYb02JDDPcQkqupGr8oZc1IRZQqAuGaDxhMfQxjsKMlQcf1NBcFVdlmPs9wJNVhrjD9E3GiFmStbz6mmtrhijTaFu4tZRJMSZzJCqNnyS9x5m2DRDoU2qv1osslza-ybvUNwg02DRLFi+YZnbSx4JE5sJO8Xc3CsWZMMckbp0-Bkf1B1B-2unTiokuxWGlJULHWWwOzGcymwMKnULEuzRn+vLCfw9z6M88nBR2VLRWQ6xxR0GxRhRpsb2fNYjDcXFZLxo7FKBgiPMwMnmNain2rGDiD01PdUs0NVu0EtUtq8KydginV1YBsbTQAZQAV2oWhYHgfXtJFsxtGsXbuMsCPdh7bjPG8AkNFi70-B50a+eTABRD4vmF3Tg88UZd3DyO1pWDj9wlCwLFMDQ+1xcdwlCIA */\n id: \"UninstallAppDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n appName: _.input.appName,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n installedApps: [],\n appList: [],\n getOsVersionResponse: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"ListInstalledApps\",\n },\n },\n ListInstalledApps: {\n invoke: {\n id: \"listInstalledApps\",\n src: \"listInstalledApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"ListInstalledAppsCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: ({ installedApps }) => ({\n ..._.context._internalState,\n installedApps,\n hasCheckedInstalledApps: true,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListInstalledAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Success\",\n guard: \"appNotInstalled\",\n },\n {\n target: \"GetAppsByHash\",\n },\n ],\n },\n GetAppsByHash: {\n invoke: {\n id: \"getAppsByHash\",\n src: \"getAppsByHash\",\n input: (_) => _.context._internalState.installedApps!,\n onDone: {\n target: \"GetAppsByHashCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf({\n Right: (apps) => ({\n ..._.context._internalState,\n appList: apps,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppsByHashCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Error\",\n guard: \"appNotFound\",\n actions: \"assignAppNotFound\",\n },\n {\n target: \"Error\",\n guard: \"isDepAppOfOther\",\n actions: \"assignIsDepAppOfOther\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n invoke: {\n id: \"goToDashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"GetOsVersion\",\n },\n ],\n },\n GetOsVersion: {\n invoke: {\n id: \"getOsVersion\",\n src: \"getOsVersion\",\n input: (_) => undefined,\n onDone: {\n target: \"GetOsVersionCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const currentState: DeviceSessionState =\n getDeviceSessionState();\n const isSecureConnectionAllowed =\n _.event.output.data.secureElementFlags\n .isSecureConnectionAllowed;\n if (\n currentState.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...currentState,\n isSecureConnectionAllowed,\n });\n }\n return {\n ..._.context._internalState,\n getOsVersionResponse: _.event.output.data,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n },\n },\n GetOsVersionCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"UninstallApp\",\n },\n ],\n },\n UninstallApp: {\n invoke: {\n id: \"uninstallApp\",\n src: \"uninstallApp\",\n input: (_) => ({\n deviceInfo: _.context._internalState.getOsVersionResponse!,\n app: _.context._internalState.appList.find(\n (app) => app?.versionName === _.context.input.appName,\n )!,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => {\n switch (_.event.snapshot.context?.type) {\n case SecureChannelEventType.PermissionRequested: {\n return {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n };\n }\n case SecureChannelEventType.PermissionGranted: {\n return {\n requiredUserInteraction: UserInteractionRequired.None,\n };\n }\n default:\n return {\n ..._.context.intermediateValue,\n };\n }\n },\n _internalState: (_) => {\n if (\n _.event.snapshot.context?.type ===\n SecureChannelEventType.Error\n ) {\n return {\n ..._.context._internalState,\n error: _.event.snapshot.context.error.mapDAErrors(),\n };\n }\n return _.context._internalState;\n },\n }),\n },\n onDone: {\n target: \"ListInstalledApps\",\n actions: \"cleanupDeviceState\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n description: \"App uninstalled successfully\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.error\n ? Left(context._internalState.error)\n : Right(undefined),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getOsVersion = () =>\n internalApi.sendCommand(new GetOsVersionCommand());\n\n const getAppsByHash = ({ input }: Input<InstalledApp[]>) => {\n const appHashes = input.map((app) => app.hash);\n return internalApi.getManagerApiService().getAppsByHash(appHashes);\n };\n\n const uninstallApp = ({\n input,\n }: Input<{\n deviceInfo: GetOsVersionResponse;\n app: Application;\n }>) => {\n const { deviceInfo, app } = input;\n const eitherConnection = internalApi\n .getSecureChannelService()\n .uninstallApp(deviceInfo, app);\n return new ConnectToSecureChannelTask(internalApi, {\n connection: eitherConnection,\n }).run();\n };\n\n return {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state) =>\n internalApi.setDeviceSessionState(state),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Left", "Right", "assign", "fromObservable", "fromPromise", "setup", "isSuccessCommandResult", "GetOsVersionCommand", "UserInteractionRequired", "DEFAULT_UNLOCK_TIMEOUT_MS", "UnknownDAError", "GoToDashboardDeviceAction", "XStateDeviceAction", "DeviceSessionStateType", "ListInstalledAppsDeviceAction", "ConnectToSecureChannelTask", "SecureChannelEventType", "UninstallAppDeviceAction", "internalApi", "getOsVersion", "getAppsByHash", "uninstallApp", "getDeviceSessionState", "setDeviceSessionState", "unlockTimeout", "goToDashboardMachine", "listInstalledAppsMachine", "_", "app", "state", "installedApps", "error", "apps", "currentState", "isSecureConnectionAllowed", "context", "input", "appHashes", "deviceInfo", "eitherConnection"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import w from"isomorphic-ws";import{Observable as A}from"rxjs";import{CommandUtils as S}from"../../command/utils/CommandUtils";import{InMessageQueryEnum as l,OutMessageResponseEnum as m,SecureChannelEventType as i}from"../../secure-channel/task/types";import{isRefusedByUser as v,willRequestPermission as x}from"../../secure-channel/utils";import{bufferToHexaString as C,hexaStringToBuffer as k}from"../../utils/HexaString";import{SecureChannelError as o}from"../../../internal/secure-channel/model/Errors";class P{constructor(d,E){this._api=d;this._args=E;if(this._args.connection.isRight())this._connection=this._args.connection.extract();else throw new o(`Invalid WebSocket connection: ${String(this._args.connection.extract())}`)}_connection;run(){const d=this._api.disableRefresher("connectToSecureChannel");return new A(e=>{let u=!1,c=!1,y=!1,p=null,h=!1;return this._connection.onopen=()=>{e.next({type:i.Opened})},this._connection.onerror=f=>{c||e.error(new o({url:this._connection.url,errorMessage:f.message}))},this._connection.onclose=()=>{c||(y?(e.next({type:i.Closed}),e.complete()):e.error(new o(p??{url:this._connection.url,errorMessage:"Connection closed unexpectedly"})))},this._connection.onmessage=async f=>{if(!u){p=null;try{const t=JSON.parse(String(f.data));switch(t.query){case l.EXCHANGE:{const{nonce:a}=t;if(Array.isArray(t.data)){e.error(new o(`${l.EXCHANGE} data type should not be Array`));break}const n=k(t.data);if(n===null||n.length<5){e.error(new o(`Received invalid APDU data: ${t.data}`));break}e.next({type:i.PreExchange,payload:{nonce:a,apdu:n}}),x(n)&&!this.isSecureConnectionAllowed()&&(h=!0,e.next({type:i.PermissionRequested}));const s=await this._api.sendApdu(n);if(u)return;s.caseOf({Left:r=>{e.error(new o(r))},Right:r=>{let g;if(S.isSuccessResponse(r))g=m.SUCCESS,e.next({type:i.Exchange,payload:{nonce:a,apdu:n,data:r.data,status:r.statusCode}});else{if(g=m.ERROR,p=new o({url:this._connection.url,errorMessage:`Invalid status code: ${C(r.statusCode)}`}),S.isLockedDeviceResponse(r)){e.error(new o({url:this._connection.url,errorMessage:"Device is locked"}));return}if(v(r.statusCode)&&h){e.error(new o({url:this._connection.url,errorMessage:"User refused on the device"}));return}}h&&(e.next({type:i.PermissionGranted}),h=!1);const _={nonce:a,response:g,data:C(r.data).slice(2)};this._connection.send(JSON.stringify(_))}});break}case l.BULK:{if(c=!0,this._connection.close(),!Array.isArray(t.data)||t.data.length===0){e.error(new o("Invalid bulk data received"));break}const a=t.data.reduce((n,s)=>{const r=k(s);return r===null?n:[...n,r]},[]);for(let n=0,s=a.length;n<s;n++){if(await this._api.sendApdu(a[n]),u){e.error(new o("Bulk sending cancelled by unsubscribing"));break}e.next({type:i.Progress,payload:{progress:+Number((n+1)/s).toFixed(2),index:n,total:s}})}y=!0,e.complete();break}case l.SUCCESS:{if(c)break;const a=t.result??t.data;a&&e.next({type:i.Result,payload:a??""}),y=!0,e.complete();break}case l.WARNING:{if(c)break;e.next({type:i.Warning,payload:{message:String(t.data)}});break}case l.ERROR:{if(c)break;e.error(new o({url:this._connection.url,errorMessage:String(t.data)}))}}}catch(t){p=new o(t),e.error(p)}}},()=>{d(),u=!0,this._connection.readyState===w.OPEN&&this._connection.close()}})}isSecureConnectionAllowed(){const d=this._api.getDeviceSessionState();return"isSecureConnectionAllowed"in d&&d.isSecureConnectionAllowed}}export{P as ConnectToSecureChannelTask};
1
+ import M from"isomorphic-ws";import{Observable as k}from"rxjs";import{CommandUtils as h}from"../../command/utils/CommandUtils";import{InMessageQueryEnum as d,OutMessageResponseEnum as w,SecureChannelEventType as s}from"../../secure-channel/task/types";import{willRequestPermission as R}from"../../secure-channel/utils";import{bufferToHexaString as _,hexaStringToBuffer as A}from"../../utils/HexaString";import{SecureChannelError as r,SecureChannelErrorType as S}from"../../../internal/secure-channel/model/Errors";class q{constructor(t,c){this._api=t;this._args=c;if(this._args.connection.isRight())this._connection=this._args.connection.extract();else throw new r(`Invalid WebSocket connection: ${String(this._args.connection.extract())}`)}_connection;run(){const t=this._api.disableRefresher("connectToSecureChannel");return new k(n=>{let g=!1,l=!1,E=!1;const i=f=>{n.next({type:s.Error,error:f}),n.complete(),l=!0};return this._connection.onopen=()=>{n.next({type:s.Opened})},this._connection.onerror=f=>{l||(n.next({type:s.Error,error:new r({url:this._connection.url,errorMessage:f.message})}),n.complete())},this._connection.onclose=()=>{l||(E?n.next({type:s.Closed}):n.next({type:s.Error,error:new r({url:this._connection.url,errorMessage:"Connection closed unexpectedly"})}),n.complete())},this._connection.onmessage=async f=>{if(g)return;let o;try{const e=JSON.parse(String(f.data));if(this.isInMessageType(e))o=e;else throw new Error("Data does not match InMessageType")}catch{i(new r({url:this._connection.url,errorMessage:`Invalid message received: ${String(f.data)}`}));return}switch(o.query){case d.EXCHANGE:{const{nonce:e,data:u}=o;if(typeof u!="string"){i(new r(`${d.EXCHANGE} data type should be an APDU`));return}const a=A(u);if(a===null||a.length<5){i(new r(`Received invalid APDU data: ${u}`));return}n.next({type:s.PreExchange,payload:{nonce:e,apdu:a}});let p=!1;R(a)&&!this.isSecureConnectionAllowed()&&(p=!0,n.next({type:s.PermissionRequested}));const m=await this._api.sendApdu(a);if(g)return;m.caseOf({Left:y=>{i(new r(y))},Right:y=>{let v;const C=this.mapDeviceError(y);C===null?(v=w.SUCCESS,n.next({type:s.Exchange,payload:{nonce:e,apdu:a,data:y.data,status:y.statusCode}}),p&&n.next({type:s.PermissionGranted})):(v=w.ERROR,i(C));const x={nonce:e,response:v,data:_(y.data).slice(2)};this._connection.send(JSON.stringify(x))}});break}case d.BULK:{if(l=!0,this._connection.close(),!Array.isArray(o.data)||o.data.length===0||!o.data.every(e=>typeof e=="string")){i(new r("Invalid bulk data received"));return}for(let e=0,u=o.data.length;e<u;e++){const a=A(o.data[e]);if(a===null||a.length<5){i(new r(`Received invalid APDU bulk data: ${o.data[e]}`));return}const p=await this._api.sendApdu(a);if(g)return;if(p.isLeft()){i(new r(p.extract()));return}else if(p.isRight()){const m=this.mapDeviceError(p.extract());if(m===null)n.next({type:s.Progress,payload:{progress:+Number((e+1)/u).toFixed(2),index:e,total:u}});else{i(m);return}}}E=!0,n.complete();break}case d.SUCCESS:{if(l)break;const e=o.result??o.data;e&&n.next({type:s.Result,payload:e??""}),E=!0,n.complete();break}case d.WARNING:{if(l)break;n.next({type:s.Warning,payload:{message:String(o.data)}});break}case d.ERROR:{if(l)break;i(new r({url:this._connection.url,errorMessage:String(o.data)}))}}},()=>{t(),g=!0,this._connection.readyState===M.OPEN&&this._connection.close()}})}isSecureConnectionAllowed(){const t=this._api.getDeviceSessionState();return"isSecureConnectionAllowed"in t&&t.isSecureConnectionAllowed}isInMessageType(t){if(typeof t!="object"||!t)return!1;const c=t;return typeof c.uuid=="string"&&typeof c.session=="string"&&typeof c.query=="string"&&Object.values(d).includes(c.query)&&typeof c.nonce=="number"}mapDeviceError(t){return h.isSuccessResponse(t)?null:h.isLockedDeviceResponse(t)?new r({url:this._connection.url,errorMessage:"Device is locked"},S.DeviceLocked):h.isRefusedByUser(t)?new r({url:this._connection.url,errorMessage:"User refused on the device"},S.RefusedByUser):h.isAppAlreadyInstalled(t)?new r({url:this._connection.url,errorMessage:"App already installed"},S.AppAlreadyInstalled):h.isOutOfMemory(t)?new r({url:this._connection.url,errorMessage:"Out of memory"},S.OutOfMemory):new r({url:this._connection.url,errorMessage:`Invalid status code: ${_(t.statusCode)}`})}}export{q as ConnectToSecureChannelTask};
2
2
  //# sourceMappingURL=ConnectToSecureChannelTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/secure-channel/task/ConnectToSecureChannelTask.ts"],
4
- "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\nimport { Observable } from \"rxjs\";\n\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n InMessageQueryEnum,\n type InMessageType,\n OutMessageResponseEnum,\n type OutMessageType,\n type SecureChannelEvent,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport {\n isRefusedByUser,\n willRequestPermission,\n} from \"@api/secure-channel/utils\";\nimport { bufferToHexaString, hexaStringToBuffer } from \"@api/utils/HexaString\";\nimport {\n SecureChannelError,\n type WebSocketConnectionError,\n} from \"@internal/secure-channel/model/Errors\";\n\nexport type ConnectToSecureChannelTaskArgs = {\n connection: Either<WebSocketConnectionError, WebSocket>;\n};\n\nexport class ConnectToSecureChannelTask {\n private readonly _connection: WebSocket;\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: ConnectToSecureChannelTaskArgs,\n ) {\n if (this._args.connection.isRight()) {\n this._connection = this._args.connection.extract();\n } else {\n throw new SecureChannelError(\n `Invalid WebSocket connection: ${String(this._args.connection.extract())}`,\n );\n }\n }\n\n run(): Observable<SecureChannelEvent> {\n const reenableRefresher = this._api.disableRefresher(\n \"connectToSecureChannel\",\n );\n\n const obs = new Observable<SecureChannelEvent>((subscriber) => {\n let unsubscribed: boolean = false;\n let inBulkMode = false;\n let communicationFinished = false;\n let deviceError: SecureChannelError | null = null;\n let waitingForUserAction = false;\n\n this._connection.onopen = () => {\n subscriber.next({\n type: SecureChannelEventType.Opened,\n });\n };\n\n this._connection.onerror = (error) => {\n // When the bulk sending is in progress, network error is ignored\n if (inBulkMode) {\n return;\n }\n\n subscriber.error(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: error.message,\n }),\n );\n };\n\n this._connection.onclose = () => {\n // When the bulk sending is in progress, network event is ignored\n if (inBulkMode) {\n return;\n }\n\n if (communicationFinished) {\n subscriber.next({\n type: SecureChannelEventType.Closed,\n });\n subscriber.complete();\n } else {\n subscriber.error(\n new SecureChannelError(\n deviceError ?? {\n url: this._connection.url,\n errorMessage: \"Connection closed unexpectedly\",\n },\n ),\n );\n }\n };\n\n this._connection.onmessage = async (event) => {\n // When unsubscribed, ignore the message\n if (unsubscribed) {\n return;\n }\n deviceError = null;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const input: InMessageType = JSON.parse(String(event.data));\n\n switch (input.query) {\n case InMessageQueryEnum.EXCHANGE: {\n const { nonce } = input;\n\n if (Array.isArray(input.data)) {\n subscriber.error(\n new SecureChannelError(\n `${InMessageQueryEnum.EXCHANGE} data type should not be Array`,\n ),\n );\n break;\n }\n\n const apdu = hexaStringToBuffer(input.data);\n\n if (apdu === null || apdu.length < 5) {\n subscriber.error(\n new SecureChannelError(\n `Received invalid APDU data: ${input.data}`,\n ),\n );\n break;\n }\n\n subscriber.next({\n type: SecureChannelEventType.PreExchange,\n payload: { nonce, apdu },\n });\n\n if (\n willRequestPermission(apdu) &&\n !this.isSecureConnectionAllowed()\n ) {\n waitingForUserAction = true;\n subscriber.next({\n type: SecureChannelEventType.PermissionRequested,\n });\n }\n\n const response = await this._api.sendApdu(apdu);\n\n if (unsubscribed) {\n return;\n }\n\n response.caseOf({\n Left: (error) => {\n subscriber.error(new SecureChannelError(error));\n },\n Right: (apduResponse: ApduResponse) => {\n let outMessageResponse: OutMessageResponseEnum;\n /**\n * | Status Code | Description | Event Emitted |\n * |-------------|------------------------------------|------------------------------------|\n * | 0x9000 | Success | SecureChannelEventEnum.Exchange |\n * | 0x5515 | Device is locked | Error |\n * | 0x5501 | User refused on the device | Error |\n * | 0x6985 | Condition of use not satisfied | Error |\n */\n // Success response\n if (CommandUtils.isSuccessResponse(apduResponse)) {\n outMessageResponse = OutMessageResponseEnum.SUCCESS;\n // Emit event for the exchange\n subscriber.next({\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce,\n apdu,\n data: apduResponse.data,\n status: apduResponse.statusCode,\n },\n });\n } else {\n outMessageResponse = OutMessageResponseEnum.ERROR;\n\n deviceError = new SecureChannelError({\n url: this._connection.url,\n errorMessage: `Invalid status code: ${bufferToHexaString(\n apduResponse.statusCode,\n )}`,\n });\n\n // Device is locked\n if (CommandUtils.isLockedDeviceResponse(apduResponse)) {\n subscriber.error(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: `Device is locked`,\n }),\n );\n return;\n }\n\n // User refused the permission\n if (\n isRefusedByUser(apduResponse.statusCode) &&\n waitingForUserAction\n ) {\n subscriber.error(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: \"User refused on the device\",\n }),\n );\n return;\n }\n }\n\n if (waitingForUserAction) {\n subscriber.next({\n type: SecureChannelEventType.PermissionGranted,\n });\n waitingForUserAction = false;\n }\n\n // Send the message back to the server\n const message: OutMessageType = {\n nonce,\n response: outMessageResponse,\n data: bufferToHexaString(apduResponse.data).slice(2),\n };\n this._connection.send(JSON.stringify(message));\n },\n });\n break;\n }\n case InMessageQueryEnum.BULK: {\n inBulkMode = true;\n this._connection.close();\n\n if (!Array.isArray(input.data) || input.data.length === 0) {\n subscriber.error(\n new SecureChannelError(\"Invalid bulk data received\"),\n );\n break;\n }\n\n const apdus = input.data.reduce(\n (acc: Array<Uint8Array>, cur: string) => {\n const apdu = hexaStringToBuffer(cur);\n return apdu === null ? acc : [...acc, apdu];\n },\n [],\n );\n\n for (let i = 0, len = apdus.length; i < len; i++) {\n await this._api.sendApdu(apdus[i]!);\n if (unsubscribed) {\n subscriber.error(\n new SecureChannelError(\n \"Bulk sending cancelled by unsubscribing\",\n ),\n );\n break;\n }\n subscriber.next({\n type: SecureChannelEventType.Progress,\n payload: {\n progress: +Number((i + 1) / len).toFixed(2),\n index: i,\n total: len,\n },\n });\n }\n communicationFinished = true;\n subscriber.complete();\n break;\n }\n case InMessageQueryEnum.SUCCESS: {\n // Ignore success message when in bulk mode\n if (inBulkMode) {\n break;\n }\n // Emit the result if there is any\n const payload = input.result ?? input.data;\n if (payload) {\n subscriber.next({\n type: SecureChannelEventType.Result,\n payload: payload ?? \"\",\n });\n }\n communicationFinished = true;\n subscriber.complete();\n break;\n }\n case InMessageQueryEnum.WARNING: {\n // Ignore warning message when in bulk mode\n if (inBulkMode) {\n break;\n }\n subscriber.next({\n type: SecureChannelEventType.Warning,\n payload: { message: String(input.data) },\n });\n break;\n }\n case InMessageQueryEnum.ERROR: {\n if (inBulkMode) {\n break;\n }\n subscriber.error(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: String(input.data),\n }),\n );\n }\n }\n } catch (error) {\n deviceError = new SecureChannelError(error);\n subscriber.error(deviceError);\n }\n };\n\n return () => {\n reenableRefresher();\n unsubscribed = true;\n // Close the connection if it is open when unsubscribing\n if (this._connection.readyState === WebSocket.OPEN) {\n this._connection.close();\n }\n };\n });\n\n return obs;\n }\n\n /**\n * Determines if a secure connection is already allowed based on the current device session state.\n *\n * @returns {boolean} `true` if a secure connection is allowed, otherwise `false`.\n */\n isSecureConnectionAllowed(): boolean {\n const deviceSessionState = this._api.getDeviceSessionState();\n return (\n \"isSecureConnectionAllowed\" in deviceSessionState &&\n deviceSessionState.isSecureConnectionAllowed\n );\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["WebSocket", "Observable", "CommandUtils", "InMessageQueryEnum", "OutMessageResponseEnum", "SecureChannelEventType", "isRefusedByUser", "willRequestPermission", "bufferToHexaString", "hexaStringToBuffer", "SecureChannelError", "ConnectToSecureChannelTask", "_api", "_args", "reenableRefresher", "subscriber", "unsubscribed", "inBulkMode", "communicationFinished", "deviceError", "waitingForUserAction", "error", "event", "input", "nonce", "apdu", "response", "apduResponse", "outMessageResponse", "message", "apdus", "acc", "cur", "i", "len", "payload", "deviceSessionState"]
4
+ "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\nimport { Observable } from \"rxjs\";\n\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n InMessageQueryEnum,\n type InMessageType,\n OutMessageResponseEnum,\n type OutMessageType,\n type SecureChannelEvent,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { willRequestPermission } from \"@api/secure-channel/utils\";\nimport { bufferToHexaString, hexaStringToBuffer } from \"@api/utils/HexaString\";\nimport {\n SecureChannelError,\n SecureChannelErrorType,\n type WebSocketConnectionError,\n} from \"@internal/secure-channel/model/Errors\";\n\nexport type ConnectToSecureChannelTaskArgs = {\n connection: Either<WebSocketConnectionError, WebSocket>;\n};\n\nexport class ConnectToSecureChannelTask {\n private readonly _connection: WebSocket;\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: ConnectToSecureChannelTaskArgs,\n ) {\n if (this._args.connection.isRight()) {\n this._connection = this._args.connection.extract();\n } else {\n throw new SecureChannelError(\n `Invalid WebSocket connection: ${String(this._args.connection.extract())}`,\n );\n }\n }\n\n run(): Observable<SecureChannelEvent> {\n const reenableRefresher = this._api.disableRefresher(\n \"connectToSecureChannel\",\n );\n\n const obs = new Observable<SecureChannelEvent>((subscriber) => {\n let unsubscribed: boolean = false;\n let ignoreNetworkEvents = false;\n let communicationFinished = false;\n\n const notifyError = (error: SecureChannelError) => {\n subscriber.next({\n type: SecureChannelEventType.Error,\n error,\n });\n subscriber.complete();\n\n // Netowrks events can be ignored once the obervable has been completed\n ignoreNetworkEvents = true;\n };\n\n this._connection.onopen = () => {\n subscriber.next({\n type: SecureChannelEventType.Opened,\n });\n };\n\n this._connection.onerror = (error) => {\n if (ignoreNetworkEvents) {\n return;\n }\n\n subscriber.next({\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: this._connection.url,\n errorMessage: error.message,\n }),\n });\n subscriber.complete();\n };\n\n this._connection.onclose = () => {\n if (ignoreNetworkEvents) {\n return;\n }\n\n if (communicationFinished) {\n subscriber.next({\n type: SecureChannelEventType.Closed,\n });\n } else {\n subscriber.next({\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: this._connection.url,\n errorMessage: \"Connection closed unexpectedly\",\n }),\n });\n }\n subscriber.complete();\n };\n\n this._connection.onmessage = async (event) => {\n // When unsubscribed, ignore the message\n if (unsubscribed) {\n return;\n }\n\n // Parse input message\n let input: InMessageType;\n try {\n const jsonData = JSON.parse(String(event.data));\n if (this.isInMessageType(jsonData)) {\n input = jsonData;\n } else {\n throw new Error(\"Data does not match InMessageType\");\n }\n } catch (_) {\n notifyError(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: `Invalid message received: ${String(event.data)}`,\n }),\n );\n return;\n }\n\n // Execute message query\n switch (input.query) {\n case InMessageQueryEnum.EXCHANGE: {\n const { nonce, data } = input;\n\n // Exchange query should contain a single APDU\n if (typeof data !== \"string\") {\n notifyError(\n new SecureChannelError(\n `${InMessageQueryEnum.EXCHANGE} data type should be an APDU`,\n ),\n );\n return;\n }\n\n // APDU should be a valid hex string\n const apdu = hexaStringToBuffer(data);\n if (apdu === null || apdu.length < 5) {\n notifyError(\n new SecureChannelError(`Received invalid APDU data: ${data}`),\n );\n return;\n }\n subscriber.next({\n type: SecureChannelEventType.PreExchange,\n payload: { nonce, apdu },\n });\n\n // Notify permission requested\n let permissionRequested = false;\n if (\n willRequestPermission(apdu) &&\n !this.isSecureConnectionAllowed()\n ) {\n permissionRequested = true;\n subscriber.next({\n type: SecureChannelEventType.PermissionRequested,\n });\n }\n\n // Send APDU to the device\n const response = await this._api.sendApdu(apdu);\n if (unsubscribed) {\n return;\n }\n\n // Map device response\n response.caseOf({\n Left: (error) => {\n notifyError(new SecureChannelError(error));\n },\n Right: (apduResponse: ApduResponse) => {\n let outMessageResponse: OutMessageResponseEnum;\n const deviceError = this.mapDeviceError(apduResponse);\n if (deviceError === null) {\n outMessageResponse = OutMessageResponseEnum.SUCCESS;\n\n // Emit event for the exchange\n subscriber.next({\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce,\n apdu,\n data: apduResponse.data,\n status: apduResponse.statusCode,\n },\n });\n\n // If manager consent was requested, notify the \"granted\" event\n if (permissionRequested) {\n subscriber.next({\n type: SecureChannelEventType.PermissionGranted,\n });\n }\n } else {\n outMessageResponse = OutMessageResponseEnum.ERROR;\n notifyError(deviceError);\n }\n\n // Send the message back to the server\n const message: OutMessageType = {\n nonce,\n response: outMessageResponse,\n data: bufferToHexaString(apduResponse.data).slice(2),\n };\n this._connection.send(JSON.stringify(message));\n },\n });\n break;\n }\n case InMessageQueryEnum.BULK: {\n // Network not needed anymore during bulk APDUs sending\n ignoreNetworkEvents = true;\n this._connection.close();\n\n // A valid array of APDUs is required in a bulk query\n if (\n !Array.isArray(input.data) ||\n input.data.length === 0 ||\n !input.data.every((data) => typeof data === \"string\")\n ) {\n notifyError(new SecureChannelError(\"Invalid bulk data received\"));\n return;\n }\n\n for (let i = 0, len = input.data.length; i < len; i++) {\n // APDU should be a valid hex string\n const apdu = hexaStringToBuffer(input.data[i]!);\n if (apdu === null || apdu.length < 5) {\n notifyError(\n new SecureChannelError(\n `Received invalid APDU bulk data: ${input.data[i]}`,\n ),\n );\n return;\n }\n\n // Send APDU to the device\n const response = await this._api.sendApdu(apdu);\n if (unsubscribed) {\n return;\n }\n\n // Map device response\n if (response.isLeft()) {\n notifyError(new SecureChannelError(response.extract()));\n return;\n } else if (response.isRight()) {\n const deviceError = this.mapDeviceError(response.extract());\n if (deviceError === null) {\n // Notify the progress\n subscriber.next({\n type: SecureChannelEventType.Progress,\n payload: {\n progress: +Number((i + 1) / len).toFixed(2),\n index: i,\n total: len,\n },\n });\n } else {\n notifyError(deviceError);\n return;\n }\n }\n }\n communicationFinished = true;\n subscriber.complete();\n break;\n }\n case InMessageQueryEnum.SUCCESS: {\n if (ignoreNetworkEvents) {\n break;\n }\n // Emit the result if there is any\n const payload = input.result ?? input.data;\n if (payload) {\n subscriber.next({\n type: SecureChannelEventType.Result,\n payload: payload ?? \"\",\n });\n }\n communicationFinished = true;\n subscriber.complete();\n break;\n }\n case InMessageQueryEnum.WARNING: {\n if (ignoreNetworkEvents) {\n break;\n }\n subscriber.next({\n type: SecureChannelEventType.Warning,\n payload: { message: String(input.data) },\n });\n break;\n }\n case InMessageQueryEnum.ERROR: {\n if (ignoreNetworkEvents) {\n break;\n }\n notifyError(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: String(input.data),\n }),\n );\n }\n }\n };\n\n return () => {\n reenableRefresher();\n unsubscribed = true;\n // Close the connection if it is open when unsubscribing\n if (this._connection.readyState === WebSocket.OPEN) {\n this._connection.close();\n }\n };\n });\n\n return obs;\n }\n\n /**\n * Determines if a secure connection is already allowed based on the current device session state.\n *\n * @returns {boolean} `true` if a secure connection is allowed, otherwise `false`.\n */\n isSecureConnectionAllowed(): boolean {\n const deviceSessionState = this._api.getDeviceSessionState();\n return (\n \"isSecureConnectionAllowed\" in deviceSessionState &&\n deviceSessionState.isSecureConnectionAllowed\n );\n }\n\n isInMessageType(data: unknown): data is InMessageType {\n if (typeof data !== \"object\" || !data) {\n return false;\n }\n\n const message = data as InMessageType;\n return (\n typeof message.uuid === \"string\" &&\n typeof message.session === \"string\" &&\n typeof message.query === \"string\" &&\n Object.values(InMessageQueryEnum).includes(message.query) &&\n typeof message.nonce === \"number\"\n );\n }\n\n mapDeviceError(apduResponse: ApduResponse): SecureChannelError | null {\n if (CommandUtils.isSuccessResponse(apduResponse)) {\n return null;\n }\n\n // Device is locked\n if (CommandUtils.isLockedDeviceResponse(apduResponse)) {\n return new SecureChannelError(\n {\n url: this._connection.url,\n errorMessage: `Device is locked`,\n },\n SecureChannelErrorType.DeviceLocked,\n );\n }\n\n // User refused the permission\n if (CommandUtils.isRefusedByUser(apduResponse)) {\n return new SecureChannelError(\n {\n url: this._connection.url,\n errorMessage: \"User refused on the device\",\n },\n SecureChannelErrorType.RefusedByUser,\n );\n }\n\n // App already installed\n if (CommandUtils.isAppAlreadyInstalled(apduResponse)) {\n return new SecureChannelError(\n {\n url: this._connection.url,\n errorMessage: \"App already installed\",\n },\n SecureChannelErrorType.AppAlreadyInstalled,\n );\n }\n\n // Out of memory\n if (CommandUtils.isOutOfMemory(apduResponse)) {\n return new SecureChannelError(\n {\n url: this._connection.url,\n errorMessage: \"Out of memory\",\n },\n SecureChannelErrorType.OutOfMemory,\n );\n }\n\n return new SecureChannelError({\n url: this._connection.url,\n errorMessage: `Invalid status code: ${bufferToHexaString(\n apduResponse.statusCode,\n )}`,\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["WebSocket", "Observable", "CommandUtils", "InMessageQueryEnum", "OutMessageResponseEnum", "SecureChannelEventType", "willRequestPermission", "bufferToHexaString", "hexaStringToBuffer", "SecureChannelError", "SecureChannelErrorType", "ConnectToSecureChannelTask", "_api", "_args", "reenableRefresher", "subscriber", "unsubscribed", "ignoreNetworkEvents", "communicationFinished", "notifyError", "error", "event", "input", "jsonData", "nonce", "data", "apdu", "permissionRequested", "response", "apduResponse", "outMessageResponse", "deviceError", "message", "i", "len", "payload", "deviceSessionState"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import g from"isomorphic-ws";import{Right as u}from"purify-ts";import{describe as y,it as i,vi as s}from"vitest";import{SecureChannelEventType as a}from"../../secure-channel/task/types";import{SecureChannelError as x}from"../../../internal/secure-channel/model/Errors";import{ConnectToSecureChannelTask as h}from"./ConnectToSecureChannelTask";s.mock("isomorphic-ws",()=>({...s.importActual("isomorphic-ws"),__esModule:!0,default:class{onopen=null;onmessage=null;send=s.fn();close=s.fn();url;constructor(e){this.url=e}}}));const p=5;y("ConnectToSecureChannelTask",()=>{let e,d,m,c;const l=s.fn();beforeEach(()=>{e=new g("wss://test-host.com"),d={sendApdu:l,disableRefresher:s.fn()},m={connection:u(e)},c=new h(d,m)}),afterEach(()=>{s.resetAllMocks()}),i("should emit Opened event on WebSocket open",async()=>{const n=[];c.run().subscribe(t=>n.push(t)),expect(e.onopen).toBeDefined(),e.onopen({type:"open",target:{}}),await new Promise(t=>setTimeout(t,p)),expect(n).toStrictEqual([{type:a.Opened}])}),i("should handle incoming EXCHANGE message including requesting user permission",async()=>{l.mockResolvedValue(u({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const n=s.spyOn(e,"send");s.spyOn(c,"isSecureConnectionAllowed").mockReturnValueOnce(!1);const o=[];c.run().subscribe({next:r=>{o.push(r)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({query:"exchange",nonce:1,data:"e051000000"}),type:"",target:{}}),await new Promise(r=>setTimeout(r,p)),expect(n).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"success",data:"9000"})),expect(o).toStrictEqual([{type:a.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0])}},{type:a.PermissionRequested},{type:a.Exchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0]),data:new Uint8Array([144,0]),status:new Uint8Array([144,0])}},{type:a.PermissionGranted}])}),i("should handle incoming BULK message",async()=>{l.mockResolvedValue(u({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const n=s.fn(),o=c.run(),t=[];o.subscribe({next:r=>{t.push(r)},complete:()=>n()}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(r=>setTimeout(r,p)),expect(l).toHaveBeenCalledTimes(3),expect(t).toStrictEqual([{type:a.Progress,payload:{progress:.33,index:0,total:3}},{type:a.Progress,payload:{progress:.67,index:1,total:3}},{type:a.Progress,payload:{progress:1,index:2,total:3}}]),expect(n).toHaveBeenCalledOnce()}),i("should handle incoming SUCCESS message",()=>{const n=s.fn(),o=[];c.run().subscribe({next:r=>o.push(r),complete:()=>n()}),e.onmessage({data:JSON.stringify({query:"success",nonce:1,result:"success result"}),type:"",target:{}}),expect(o).toStrictEqual([{type:a.Result,payload:"success result"}]),expect(n).toHaveBeenCalledOnce()}),i("should handle incoming WARNING message",()=>{const n=[];c.run().subscribe({next:t=>n.push(t)}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({query:"warning",nonce:1,data:"warning message"}),type:"",target:{}}),expect(n).toStrictEqual([{type:a.Warning,payload:{message:"warning message"}}])}),i("should handle incoming ERROR message",()=>{const n=s.fn();c.run().subscribe({error:t=>{expect(t).toBeInstanceOf(x),n(t)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({query:"error"}),type:"",target:{}}),expect(n).toHaveBeenCalled()})});
1
+ import h from"isomorphic-ws";import{Right as p}from"purify-ts";import{describe as S,it as i,vi as r}from"vitest";import{SecureChannelEventType as a}from"../../secure-channel/task/types";import{SecureChannelError as m,SecureChannelErrorType as x}from"../../../internal/secure-channel/model/Errors";import{ConnectToSecureChannelTask as b}from"./ConnectToSecureChannelTask";r.mock("isomorphic-ws",()=>({...r.importActual("isomorphic-ws"),__esModule:!0,default:class{onopen=null;onmessage=null;send=r.fn();close=r.fn();url;constructor(n){this.url=n}}}));const d=5;S("ConnectToSecureChannelTask",()=>{let n,y,g,c;const l=r.fn(),u={uuid:"5b776c8d-8af2-48c0-8250-04edca2ef5e9",session:"39ce749e-00a4-4c31-a697-1dc1a29e2cab",query:"success",nonce:15};beforeEach(()=>{n=new h("wss://test-host.com"),y={sendApdu:l,disableRefresher:e=>r.fn()},g={connection:p(n)},c=new b(y,g)}),afterEach(()=>{r.resetAllMocks()}),i("should emit Opened event on WebSocket open",async()=>{const e=[];c.run().subscribe(t=>e.push(t)),expect(n.onopen).toBeDefined(),n.onopen({type:"open",target:{}}),await new Promise(t=>setTimeout(t,d)),expect(e).toStrictEqual([{type:a.Opened}])}),i("Error on wrongly formatted message",async()=>{const e=[];c.run().subscribe({next:t=>{e.push(t)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:"invalidData",type:"",target:{}}),await new Promise(t=>setTimeout(t,d)),expect(e).toStrictEqual([{type:a.Error,error:new m({url:"wss://test-host.com",errorMessage:"Invalid message received: invalidData"})}])}),i("should handle incoming EXCHANGE message including requesting user permission",async()=>{l.mockResolvedValue(p({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const e=r.spyOn(n,"send");r.spyOn(c,"isSecureConnectionAllowed").mockReturnValueOnce(!1);const o=[];c.run().subscribe({next:s=>{o.push(s)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"exchange",nonce:1,data:"e051000000"}),type:"",target:{}}),await new Promise(s=>setTimeout(s,d)),expect(e).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"success",data:"9000"})),expect(o).toStrictEqual([{type:a.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0])}},{type:a.PermissionRequested},{type:a.Exchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0]),data:new Uint8Array([144,0]),status:new Uint8Array([144,0])}},{type:a.PermissionGranted}])}),i("should handle incoming EXCHANGE message with a device error",async()=>{l.mockResolvedValue(p({data:new Uint8Array([]),statusCode:new Uint8Array([85,21])}));const e=r.spyOn(n,"send"),o=[];c.run().subscribe({next:s=>{o.push(s)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"exchange",nonce:1,data:"e053000000"}),type:"",target:{}}),await new Promise(s=>setTimeout(s,d)),expect(e).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"error",data:""})),expect(o).toStrictEqual([{type:a.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,83,0,0,0])}},{type:a.Error,error:new m({url:"wss://test-host.com",errorMessage:"Device is locked"},x.DeviceLocked)}])}),i("should handle incoming BULK message",async()=>{l.mockResolvedValue(p({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const e=r.fn(),o=c.run(),t=[];o.subscribe({next:s=>{t.push(s)},complete:()=>e()}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(s=>setTimeout(s,d)),expect(l).toHaveBeenCalledTimes(3),expect(t).toStrictEqual([{type:a.Progress,payload:{progress:.33,index:0,total:3}},{type:a.Progress,payload:{progress:.67,index:1,total:3}},{type:a.Progress,payload:{progress:1,index:2,total:3}}]),expect(e).toHaveBeenCalledOnce()}),i("should handle incoming BULK message with a device error",async()=>{l.mockResolvedValue(p({data:new Uint8Array([]),statusCode:new Uint8Array([85,1])}));const e=r.fn(),o=c.run(),t=[];o.subscribe({next:s=>{t.push(s)},complete:()=>e()}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(s=>setTimeout(s,d)),expect(l).toHaveBeenCalledTimes(1),expect(t).toStrictEqual([{type:a.Error,error:new m({url:"wss://test-host.com",errorMessage:"User refused on the device"},x.RefusedByUser)}]),expect(e).toHaveBeenCalledOnce()}),i("should handle incoming SUCCESS message",()=>{const e=r.fn(),o=[];c.run().subscribe({next:s=>o.push(s),complete:()=>e()}),n.onmessage({data:JSON.stringify({...u,query:"success",nonce:1,result:"success result"}),type:"",target:{}}),expect(o).toStrictEqual([{type:a.Result,payload:"success result"}]),expect(e).toHaveBeenCalledOnce()}),i("should handle incoming WARNING message",()=>{const e=[];c.run().subscribe({next:t=>e.push(t)}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"warning",nonce:1,data:"warning message"}),type:"",target:{}}),expect(e).toStrictEqual([{type:a.Warning,payload:{message:"warning message"}}])}),i("should handle incoming ERROR message",()=>{const e=[];c.run().subscribe({next:t=>e.push(t)}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...u,query:"error",data:"My error"}),type:"",target:{}}),expect(e).toStrictEqual([{type:a.Error,error:new m({url:"wss://test-host.com",errorMessage:"My error"})}])})});
2
2
  //# sourceMappingURL=ConnectToSecureChannelTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/secure-channel/task/ConnectToSecureChannelTask.test.ts"],
4
- "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { Right } from \"purify-ts\";\nimport { describe, it, vi } from \"vitest\";\n\nimport { type InternalApi } from \"@api/index\";\nimport {\n type SecureChannelEvent,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { SecureChannelError } from \"@internal/secure-channel/model/Errors\";\n\nimport {\n ConnectToSecureChannelTask,\n type ConnectToSecureChannelTaskArgs,\n} from \"./ConnectToSecureChannelTask\";\n\nvi.mock(\"isomorphic-ws\", () => ({\n ...vi.importActual(\"isomorphic-ws\"),\n __esModule: true,\n default: class {\n onopen: (() => void) | null = null;\n onmessage: ((event: { data: string }) => void) | null = null;\n send = vi.fn();\n close = vi.fn();\n url: string;\n constructor(url: string) {\n this.url = url;\n }\n },\n}));\n\nconst TEST_DELAY = 5;\n\ndescribe(\"ConnectToSecureChannelTask\", () => {\n let mockWebSocket: WebSocket;\n let mockInternalApi: InternalApi;\n let taskArgs: ConnectToSecureChannelTaskArgs;\n let task: ConnectToSecureChannelTask;\n const sendApduFn = vi.fn();\n\n beforeEach(() => {\n // vi.useFakeTimers({ shouldAdvanceTime: true });\n\n mockWebSocket = new WebSocket(\"wss://test-host.com\");\n mockInternalApi = {\n sendApdu: sendApduFn,\n disableRefresher: vi.fn(),\n } as unknown as InternalApi;\n taskArgs = { connection: Right(mockWebSocket) };\n task = new ConnectToSecureChannelTask(mockInternalApi, taskArgs);\n });\n\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should emit Opened event on WebSocket open\", async () => {\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe((e) => events.push(e));\n\n expect(mockWebSocket.onopen).toBeDefined();\n mockWebSocket.onopen!({\n type: \"open\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(events).toStrictEqual([{ type: SecureChannelEventType.Opened }]);\n });\n\n it(\"should handle incoming EXCHANGE message including requesting user permission\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n\n const sendSpy = vi.spyOn(mockWebSocket, \"send\");\n vi.spyOn(task, \"isSecureConnectionAllowed\").mockReturnValueOnce(false);\n\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n query: \"exchange\",\n nonce: 1,\n data: \"e051000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendSpy).toHaveBeenCalledExactlyOnceWith(\n JSON.stringify({\n nonce: 1,\n response: \"success\",\n data: \"9000\",\n }),\n );\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.PreExchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n data: new Uint8Array([0x90, 0x00]),\n status: new Uint8Array([0x90, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n ]);\n });\n\n it(\"should handle incoming BULK message\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n const completeFn: () => void = vi.fn();\n const obs = task.run();\n const events: SecureChannelEvent[] = [];\n obs.subscribe({\n next: (event: SecureChannelEvent) => {\n events.push(event);\n },\n complete: () => completeFn(),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n query: \"bulk\",\n nonce: 1,\n data: [\"0000000100\", \"0000000200\", \"0000000300\"],\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendApduFn).toHaveBeenCalledTimes(3);\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.33, index: 0, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.67, index: 1, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1.0, index: 2, total: 3 },\n },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming SUCCESS message\", () => {\n const completeFn: () => void = vi.fn();\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n complete: () => completeFn(),\n });\n\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n query: \"success\",\n nonce: 1,\n result: \"success result\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n { type: SecureChannelEventType.Result, payload: \"success result\" },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming WARNING message\", () => {\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n query: \"warning\",\n nonce: 1,\n data: \"warning message\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Warning,\n payload: { message: \"warning message\" },\n },\n ]);\n });\n\n it(\"should handle incoming ERROR message\", () => {\n const errorFn = vi.fn();\n const observable = task.run();\n observable.subscribe({\n error: (err) => {\n expect(err).toBeInstanceOf(SecureChannelError);\n errorFn(err);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n query: \"error\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(errorFn).toHaveBeenCalled();\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["WebSocket", "Right", "describe", "it", "vi", "SecureChannelEventType", "SecureChannelError", "ConnectToSecureChannelTask", "url", "TEST_DELAY", "mockWebSocket", "mockInternalApi", "taskArgs", "task", "sendApduFn", "events", "e", "resolve", "sendSpy", "event", "completeFn", "obs", "errorFn", "err"]
4
+ "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { Right } from \"purify-ts\";\nimport { describe, it, vi } from \"vitest\";\n\nimport { type InternalApi } from \"@api/index\";\nimport {\n type SecureChannelEvent,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport {\n SecureChannelError,\n SecureChannelErrorType,\n} from \"@internal/secure-channel/model/Errors\";\n\nimport {\n ConnectToSecureChannelTask,\n type ConnectToSecureChannelTaskArgs,\n} from \"./ConnectToSecureChannelTask\";\n\nvi.mock(\"isomorphic-ws\", () => ({\n ...vi.importActual(\"isomorphic-ws\"),\n __esModule: true,\n default: class {\n onopen: (() => void) | null = null;\n onmessage: ((event: { data: string }) => void) | null = null;\n send = vi.fn();\n close = vi.fn();\n url: string;\n constructor(url: string) {\n this.url = url;\n }\n },\n}));\n\nconst TEST_DELAY = 5;\n\ndescribe(\"ConnectToSecureChannelTask\", () => {\n let mockWebSocket: WebSocket;\n let mockInternalApi: InternalApi;\n let taskArgs: ConnectToSecureChannelTaskArgs;\n let task: ConnectToSecureChannelTask;\n const sendApduFn = vi.fn();\n const mockMessage = {\n uuid: \"5b776c8d-8af2-48c0-8250-04edca2ef5e9\",\n session: \"39ce749e-00a4-4c31-a697-1dc1a29e2cab\",\n query: \"success\",\n nonce: 15,\n };\n\n beforeEach(() => {\n // vi.useFakeTimers({ shouldAdvanceTime: true });\n\n mockWebSocket = new WebSocket(\"wss://test-host.com\");\n mockInternalApi = {\n sendApdu: sendApduFn,\n disableRefresher: (_: unknown) => vi.fn(),\n } as unknown as InternalApi;\n taskArgs = { connection: Right(mockWebSocket) };\n task = new ConnectToSecureChannelTask(mockInternalApi, taskArgs);\n });\n\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should emit Opened event on WebSocket open\", async () => {\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe((e) => events.push(e));\n\n expect(mockWebSocket.onopen).toBeDefined();\n mockWebSocket.onopen!({\n type: \"open\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(events).toStrictEqual([{ type: SecureChannelEventType.Opened }]);\n });\n\n it(\"Error on wrongly formatted message\", async () => {\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: \"invalidData\",\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: \"wss://test-host.com\",\n errorMessage: \"Invalid message received: invalidData\",\n }),\n },\n ]);\n });\n\n it(\"should handle incoming EXCHANGE message including requesting user permission\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n\n const sendSpy = vi.spyOn(mockWebSocket, \"send\");\n vi.spyOn(task, \"isSecureConnectionAllowed\").mockReturnValueOnce(false);\n\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"exchange\",\n nonce: 1,\n data: \"e051000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendSpy).toHaveBeenCalledExactlyOnceWith(\n JSON.stringify({\n nonce: 1,\n response: \"success\",\n data: \"9000\",\n }),\n );\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.PreExchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n data: new Uint8Array([0x90, 0x00]),\n status: new Uint8Array([0x90, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n ]);\n });\n\n it(\"should handle incoming EXCHANGE message with a device error\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([]),\n statusCode: new Uint8Array([0x55, 0x15]),\n }),\n );\n\n const sendSpy = vi.spyOn(mockWebSocket, \"send\");\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"exchange\",\n nonce: 1,\n data: \"e053000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendSpy).toHaveBeenCalledExactlyOnceWith(\n JSON.stringify({\n nonce: 1,\n response: \"error\",\n data: \"\",\n }),\n );\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.PreExchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x53, 0x00, 0x00, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError(\n {\n url: \"wss://test-host.com\",\n errorMessage: \"Device is locked\",\n },\n SecureChannelErrorType.DeviceLocked,\n ),\n },\n ]);\n });\n\n it(\"should handle incoming BULK message\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n const completeFn: () => void = vi.fn();\n const obs = task.run();\n const events: SecureChannelEvent[] = [];\n obs.subscribe({\n next: (event: SecureChannelEvent) => {\n events.push(event);\n },\n complete: () => completeFn(),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"bulk\",\n nonce: 1,\n data: [\"0000000100\", \"0000000200\", \"0000000300\"],\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendApduFn).toHaveBeenCalledTimes(3);\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.33, index: 0, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.67, index: 1, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1.0, index: 2, total: 3 },\n },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming BULK message with a device error\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([]),\n statusCode: new Uint8Array([0x55, 0x01]),\n }),\n );\n const completeFn: () => void = vi.fn();\n const obs = task.run();\n const events: SecureChannelEvent[] = [];\n obs.subscribe({\n next: (event: SecureChannelEvent) => {\n events.push(event);\n },\n complete: () => completeFn(),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"bulk\",\n nonce: 1,\n data: [\"0000000100\", \"0000000200\", \"0000000300\"],\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendApduFn).toHaveBeenCalledTimes(1);\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError(\n {\n url: \"wss://test-host.com\",\n errorMessage: \"User refused on the device\",\n },\n SecureChannelErrorType.RefusedByUser,\n ),\n },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming SUCCESS message\", () => {\n const completeFn: () => void = vi.fn();\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n complete: () => completeFn(),\n });\n\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"success\",\n nonce: 1,\n result: \"success result\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n { type: SecureChannelEventType.Result, payload: \"success result\" },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming WARNING message\", () => {\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"warning\",\n nonce: 1,\n data: \"warning message\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Warning,\n payload: { message: \"warning message\" },\n },\n ]);\n });\n\n it(\"should handle incoming ERROR message\", () => {\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"error\",\n data: \"My error\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: \"wss://test-host.com\",\n errorMessage: \"My error\",\n }),\n },\n ]);\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["WebSocket", "Right", "describe", "it", "vi", "SecureChannelEventType", "SecureChannelError", "SecureChannelErrorType", "ConnectToSecureChannelTask", "url", "TEST_DELAY", "mockWebSocket", "mockInternalApi", "taskArgs", "task", "sendApduFn", "mockMessage", "_", "events", "e", "resolve", "event", "sendSpy", "completeFn", "obs"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var a=(n=>(n.GenuineCheck="GenuineCheck",n.ListInstalledApps="ListInstalledApps",n.UpdateMcu="UpdateMcu",n.UpdateFirmware="UpdateFirmware",n.InstallApp="InstallApp",n.UninstallApp="UninstallApp",n))(a||{}),s=(r=>(r.EXCHANGE="exchange",r.BULK="bulk",r.ERROR="error",r.WARNING="warning",r.SUCCESS="success",r))(s||{}),p=(t=>(t.SUCCESS="success",t.ERROR="error",t))(p||{}),o=(e=>(e.Opened="opened",e.Closed="closed",e.PermissionRequested="permission-requested",e.PermissionGranted="permission-granted",e.PreExchange="pre-exchange",e.Exchange="exchange",e.Progress="progress",e.Warning="warning",e.Result="result",e))(o||{});export{s as InMessageQueryEnum,p as OutMessageResponseEnum,o as SecureChannelEventType,a as SecureChannelOperationEnum};
1
+ var a=(r=>(r.GenuineCheck="GenuineCheck",r.ListInstalledApps="ListInstalledApps",r.UpdateMcu="UpdateMcu",r.UpdateFirmware="UpdateFirmware",r.InstallApp="InstallApp",r.UninstallApp="UninstallApp",r))(a||{}),s=(n=>(n.EXCHANGE="exchange",n.BULK="bulk",n.ERROR="error",n.WARNING="warning",n.SUCCESS="success",n))(s||{}),p=(t=>(t.SUCCESS="success",t.ERROR="error",t))(p||{}),o=(e=>(e.Opened="opened",e.Closed="closed",e.PermissionRequested="permission-requested",e.PermissionGranted="permission-granted",e.PreExchange="pre-exchange",e.Exchange="exchange",e.Progress="progress",e.Warning="warning",e.Error="error",e.Result="result",e))(o||{});export{s as InMessageQueryEnum,p as OutMessageResponseEnum,o as SecureChannelEventType,a as SecureChannelOperationEnum};
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/secure-channel/task/types.ts"],
4
- "sourcesContent": ["export enum SecureChannelOperationEnum {\n GenuineCheck = \"GenuineCheck\",\n ListInstalledApps = \"ListInstalledApps\",\n UpdateMcu = \"UpdateMcu\",\n UpdateFirmware = \"UpdateFirmware\",\n InstallApp = \"InstallApp\",\n UninstallApp = \"UninstallApp\",\n}\n\n/**\n * The message that will be received from the server by the secure channel.\n */\nexport type InMessageType = {\n uuid: string;\n session: string;\n query: InMessageQueryEnum;\n nonce: number;\n data: string | Array<string>;\n result?: unknown;\n};\n\nexport enum InMessageQueryEnum {\n EXCHANGE = \"exchange\",\n BULK = \"bulk\",\n ERROR = \"error\",\n WARNING = \"warning\",\n SUCCESS = \"success\",\n}\n\n/**\n * The message that will be sent to the server by the secure channel.\n */\nexport type OutMessageType = {\n nonce: number;\n response: OutMessageResponseEnum;\n data: string;\n};\n\nexport enum OutMessageResponseEnum {\n SUCCESS = \"success\",\n ERROR = \"error\",\n}\n\n/**\n * The all event types that can be emitted to the client by the secure channel.\n *\n */\nexport enum SecureChannelEventType {\n Opened = \"opened\",\n Closed = \"closed\",\n PermissionRequested = \"permission-requested\",\n PermissionGranted = \"permission-granted\",\n PreExchange = \"pre-exchange\",\n Exchange = \"exchange\",\n Progress = \"progress\",\n Warning = \"warning\",\n Result = \"result\",\n}\n\n/**\n * The possible payload that will be sent to the client when a secure channel event occurs.\n */\nexport type SecureChannelEventPayload = {\n PreExchange: { nonce: number; apdu: Uint8Array };\n Exchange: {\n nonce: number;\n apdu: Uint8Array;\n data: Uint8Array;\n status: Uint8Array;\n };\n Progress: { progress: number; index: number; total: number };\n Warning: { message: string };\n Result: unknown;\n};\n\n/**\n * The event type that will be emitted to the client when a secure channel event occurs.\n */\nexport type SecureChannelEvent =\n | {\n type: SecureChannelEventType.Opened;\n }\n | {\n type: SecureChannelEventType.Closed;\n }\n | {\n type: SecureChannelEventType.PermissionRequested;\n }\n | {\n type: SecureChannelEventType.PermissionGranted;\n }\n | {\n type: SecureChannelEventType.PreExchange;\n payload: SecureChannelEventPayload[\"PreExchange\"];\n }\n | {\n type: SecureChannelEventType.Exchange;\n payload: SecureChannelEventPayload[\"Exchange\"];\n }\n | {\n type: SecureChannelEventType.Progress;\n payload: SecureChannelEventPayload[\"Progress\"];\n }\n | {\n type: SecureChannelEventType.Warning;\n payload: SecureChannelEventPayload[\"Warning\"];\n }\n | {\n type: SecureChannelEventType.Result;\n payload: SecureChannelEventPayload[\"Result\"];\n };\n"],
5
- "mappings": "AAAO,IAAKA,OACVA,EAAA,aAAe,eACfA,EAAA,kBAAoB,oBACpBA,EAAA,UAAY,YACZA,EAAA,eAAiB,iBACjBA,EAAA,WAAa,aACbA,EAAA,aAAe,eANLA,OAAA,IAqBAC,OACVA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,QAAU,UALAA,OAAA,IAiBAC,OACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QAFEA,OAAA,IASAC,OACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,oBAAsB,uBACtBA,EAAA,kBAAoB,qBACpBA,EAAA,YAAc,eACdA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,OAAS,SATCA,OAAA",
4
+ "sourcesContent": ["import { type SecureChannelError } from \"@internal/secure-channel/model/Errors\";\n\nexport enum SecureChannelOperationEnum {\n GenuineCheck = \"GenuineCheck\",\n ListInstalledApps = \"ListInstalledApps\",\n UpdateMcu = \"UpdateMcu\",\n UpdateFirmware = \"UpdateFirmware\",\n InstallApp = \"InstallApp\",\n UninstallApp = \"UninstallApp\",\n}\n\n/**\n * The message that will be received from the server by the secure channel.\n */\nexport type InMessageType = {\n uuid: string;\n session: string;\n query: InMessageQueryEnum;\n nonce: number;\n data: unknown;\n result?: unknown;\n};\n\nexport enum InMessageQueryEnum {\n EXCHANGE = \"exchange\",\n BULK = \"bulk\",\n ERROR = \"error\",\n WARNING = \"warning\",\n SUCCESS = \"success\",\n}\n\n/**\n * The message that will be sent to the server by the secure channel.\n */\nexport type OutMessageType = {\n nonce: number;\n response: OutMessageResponseEnum;\n data: string;\n};\n\nexport enum OutMessageResponseEnum {\n SUCCESS = \"success\",\n ERROR = \"error\",\n}\n\n/**\n * The all event types that can be emitted to the client by the secure channel.\n *\n */\nexport enum SecureChannelEventType {\n Opened = \"opened\",\n Closed = \"closed\",\n PermissionRequested = \"permission-requested\",\n PermissionGranted = \"permission-granted\",\n PreExchange = \"pre-exchange\",\n Exchange = \"exchange\",\n Progress = \"progress\",\n Warning = \"warning\",\n Error = \"error\",\n Result = \"result\",\n}\n\n/**\n * The possible payload that will be sent to the client when a secure channel event occurs.\n */\nexport type SecureChannelEventPayload = {\n PreExchange: { nonce: number; apdu: Uint8Array };\n Exchange: {\n nonce: number;\n apdu: Uint8Array;\n data: Uint8Array;\n status: Uint8Array;\n };\n Progress: { progress: number; index: number; total: number };\n Warning: { message: string };\n Result: unknown;\n};\n\n/**\n * The event type that will be emitted to the client when a secure channel event occurs.\n */\nexport type SecureChannelEvent =\n | {\n type: SecureChannelEventType.Opened;\n }\n | {\n type: SecureChannelEventType.Closed;\n }\n | {\n type: SecureChannelEventType.PermissionRequested;\n }\n | {\n type: SecureChannelEventType.PermissionGranted;\n }\n | {\n type: SecureChannelEventType.PreExchange;\n payload: SecureChannelEventPayload[\"PreExchange\"];\n }\n | {\n type: SecureChannelEventType.Exchange;\n payload: SecureChannelEventPayload[\"Exchange\"];\n }\n | {\n type: SecureChannelEventType.Progress;\n payload: SecureChannelEventPayload[\"Progress\"];\n }\n | {\n type: SecureChannelEventType.Warning;\n payload: SecureChannelEventPayload[\"Warning\"];\n }\n | {\n type: SecureChannelEventType.Error;\n error: SecureChannelError;\n }\n | {\n type: SecureChannelEventType.Result;\n payload: SecureChannelEventPayload[\"Result\"];\n };\n"],
5
+ "mappings": "AAEO,IAAKA,OACVA,EAAA,aAAe,eACfA,EAAA,kBAAoB,oBACpBA,EAAA,UAAY,YACZA,EAAA,eAAiB,iBACjBA,EAAA,WAAa,aACbA,EAAA,aAAe,eANLA,OAAA,IAqBAC,OACVA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,QAAU,UALAA,OAAA,IAiBAC,OACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QAFEA,OAAA,IASAC,OACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,oBAAsB,uBACtBA,EAAA,kBAAoB,qBACpBA,EAAA,YAAc,eACdA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAVCA,OAAA",
6
6
  "names": ["SecureChannelOperationEnum", "InMessageQueryEnum", "OutMessageResponseEnum", "SecureChannelEventType"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{GENUINE_DEVICE_RESULT as n}from"./constants";function i(e){return e[0]===224&&e[1]===81}function o(e){return e.length===2&&(e[0]===85&&e[1]===1||e[0]===105&&e[1]===133)}function t(e){return e===n}export{t as isDeviceGenuine,o as isRefusedByUser,i as willRequestPermission};
1
+ import{GENUINE_DEVICE_RESULT as n}from"./constants";function t(e){return e[0]===224&&e[1]===81}function o(e){return e===n}export{o as isDeviceGenuine,t as willRequestPermission};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/secure-channel/utils.ts"],
4
- "sourcesContent": ["import { type SecureChannelEventPayload } from \"./task/types\";\nimport { GENUINE_DEVICE_RESULT } from \"./constants\";\n\n/**\n * Checks if the given APDU command will request permission.\n *\n * This method checks if the first byte of the APDU command is `0xe0` and the second byte is `0x51`.\n *\n * @param apdu - The APDU command as a Uint8Array.\n * @returns `true` if the APDU command will request permission, otherwise `false`.\n */\nexport function willRequestPermission(apdu: Uint8Array): boolean {\n return apdu[0] === 0xe0 && apdu[1] === 0x51;\n}\n\n/**\n * Checks if the user refused the permission on the device.\n *\n * The following status codes indicate a refusal:\n * - \"0x5501\": User refused the permission.\n * - \"0x6985\": Condition of use not satisfied.\n *\n * @param statusCode - The status code to check.\n * @returns `true` if the status code indicates a refusal, otherwise `false`.\n */\nexport function isRefusedByUser(statusCode: Uint8Array): boolean {\n return (\n statusCode.length === 2 &&\n ((statusCode[0] === 0x55 && statusCode[1] === 0x01) ||\n (statusCode[0] === 0x69 && statusCode[1] === 0x85))\n );\n}\n\n/**\n * Checks if the device is genuine.\n *\n * @param payload - The payload of the result secure channel event.\n * The payload has already been stringified, so that the type check is not necessary.\n * @returns `true` if the device is genuine, otherwise `false`.\n */\nexport function isDeviceGenuine(payload: SecureChannelEventPayload[\"Result\"]) {\n return payload === GENUINE_DEVICE_RESULT;\n}\n"],
5
- "mappings": "AACA,OAAS,yBAAAA,MAA6B,cAU/B,SAASC,EAAsBC,EAA2B,CAC/D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CAYO,SAASC,EAAgBC,EAAiC,CAC/D,OACEA,EAAW,SAAW,IACpBA,EAAW,CAAC,IAAM,IAAQA,EAAW,CAAC,IAAM,GAC3CA,EAAW,CAAC,IAAM,KAAQA,EAAW,CAAC,IAAM,IAEnD,CASO,SAASC,EAAgBC,EAA8C,CAC5E,OAAOA,IAAYN,CACrB",
6
- "names": ["GENUINE_DEVICE_RESULT", "willRequestPermission", "apdu", "isRefusedByUser", "statusCode", "isDeviceGenuine", "payload"]
4
+ "sourcesContent": ["import { type SecureChannelEventPayload } from \"./task/types\";\nimport { GENUINE_DEVICE_RESULT } from \"./constants\";\n\n/**\n * Checks if the given APDU command will request permission.\n *\n * This method checks if the first byte of the APDU command is `0xe0` and the second byte is `0x51`.\n *\n * @param apdu - The APDU command as a Uint8Array.\n * @returns `true` if the APDU command will request permission, otherwise `false`.\n */\nexport function willRequestPermission(apdu: Uint8Array): boolean {\n return apdu[0] === 0xe0 && apdu[1] === 0x51;\n}\n\n/**\n * Checks if the device is genuine.\n *\n * @param payload - The payload of the result secure channel event.\n * The payload has already been stringified, so that the type check is not necessary.\n * @returns `true` if the device is genuine, otherwise `false`.\n */\nexport function isDeviceGenuine(payload: SecureChannelEventPayload[\"Result\"]) {\n return payload === GENUINE_DEVICE_RESULT;\n}\n"],
5
+ "mappings": "AACA,OAAS,yBAAAA,MAA6B,cAU/B,SAASC,EAAsBC,EAA2B,CAC/D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CASO,SAASC,EAAgBC,EAA8C,CAC5E,OAAOA,IAAYJ,CACrB",
6
+ "names": ["GENUINE_DEVICE_RESULT", "willRequestPermission", "apdu", "isDeviceGenuine", "payload"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{isDeviceGenuine as t,isRefusedByUser as s,willRequestPermission as i}from"./utils";describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const e=new Uint8Array([224,81,0,0,0]);expect(i(e)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const e=new Uint8Array([224,82,0,0,0]);expect(i(e)).toBe(!1)})});describe("isRefusedByUser",()=>{it("should return true if the status code indicates a refusal",()=>{[new Uint8Array([85,1]),new Uint8Array([105,133])].forEach(e=>{expect(s(e)).toBe(!0)})}),it("should return false if the status code does not indicate a refusal",()=>{const e=new Uint8Array([144,0]);expect(s(e)).toBe(!1)})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect(t("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect(t("not genuine")).toBe(!1)})});
1
+ import{isDeviceGenuine as i,willRequestPermission as t}from"./utils";describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const e=new Uint8Array([224,81,0,0,0]);expect(t(e)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const e=new Uint8Array([224,82,0,0,0]);expect(t(e)).toBe(!1)})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect(i("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect(i("not genuine")).toBe(!1)})});
2
2
  //# sourceMappingURL=utils.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/secure-channel/utils.test.ts"],
4
- "sourcesContent": ["import {\n isDeviceGenuine,\n isRefusedByUser,\n willRequestPermission,\n} from \"./utils\";\n\ndescribe(\"willRequestPermission\", () => {\n it(\"should return true if the APDU is a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(false);\n });\n});\n\ndescribe(\"isRefusedByUser\", () => {\n it(\"should return true if the status code indicates a refusal\", () => {\n [new Uint8Array([0x55, 0x01]), new Uint8Array([0x69, 0x85])].forEach(\n (statusCode) => {\n expect(isRefusedByUser(statusCode)).toBe(true);\n },\n );\n });\n it(\"should return false if the status code does not indicate a refusal\", () => {\n const statusCode = new Uint8Array([0x90, 0x00]);\n expect(isRefusedByUser(statusCode)).toBe(false);\n });\n});\n\ndescribe(\"isDeviceGenuine\", () => {\n it(\"should return true if the device is genuine\", () => {\n const payload = \"0000\";\n expect(isDeviceGenuine(payload)).toBe(true);\n });\n it(\"should return false if the device is not genuine\", () => {\n const payload = \"not genuine\";\n expect(isDeviceGenuine(payload)).toBe(false);\n });\n});\n"],
5
- "mappings": "AAAA,OACE,mBAAAA,EACA,mBAAAC,EACA,yBAAAC,MACK,UAEP,SAAS,wBAAyB,IAAM,CACtC,GAAG,yDAA0D,IAAM,CACjE,MAAMC,EAAO,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAC1D,OAAOD,EAAsBC,CAAI,CAAC,EAAE,KAAK,EAAI,CAC/C,CAAC,EACD,GAAG,8DAA+D,IAAM,CACtE,MAAMA,EAAO,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAC1D,OAAOD,EAAsBC,CAAI,CAAC,EAAE,KAAK,EAAK,CAChD,CAAC,CACH,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,GAAG,4DAA6D,IAAM,CACpE,CAAC,IAAI,WAAW,CAAC,GAAM,CAAI,CAAC,EAAG,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,CAAC,EAAE,QAC1DC,GAAe,CACd,OAAOH,EAAgBG,CAAU,CAAC,EAAE,KAAK,EAAI,CAC/C,CACF,CACF,CAAC,EACD,GAAG,qEAAsE,IAAM,CAC7E,MAAMA,EAAa,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EAC9C,OAAOH,EAAgBG,CAAU,CAAC,EAAE,KAAK,EAAK,CAChD,CAAC,CACH,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,GAAG,8CAA+C,IAAM,CAEtD,OAAOJ,EADS,MACc,CAAC,EAAE,KAAK,EAAI,CAC5C,CAAC,EACD,GAAG,mDAAoD,IAAM,CAE3D,OAAOA,EADS,aACc,CAAC,EAAE,KAAK,EAAK,CAC7C,CAAC,CACH,CAAC",
6
- "names": ["isDeviceGenuine", "isRefusedByUser", "willRequestPermission", "apdu", "statusCode"]
4
+ "sourcesContent": ["import { isDeviceGenuine, willRequestPermission } from \"./utils\";\n\ndescribe(\"willRequestPermission\", () => {\n it(\"should return true if the APDU is a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(false);\n });\n});\n\ndescribe(\"isDeviceGenuine\", () => {\n it(\"should return true if the device is genuine\", () => {\n const payload = \"0000\";\n expect(isDeviceGenuine(payload)).toBe(true);\n });\n it(\"should return false if the device is not genuine\", () => {\n const payload = \"not genuine\";\n expect(isDeviceGenuine(payload)).toBe(false);\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,EAAiB,yBAAAC,MAA6B,UAEvD,SAAS,wBAAyB,IAAM,CACtC,GAAG,yDAA0D,IAAM,CACjE,MAAMC,EAAO,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAC1D,OAAOD,EAAsBC,CAAI,CAAC,EAAE,KAAK,EAAI,CAC/C,CAAC,EACD,GAAG,8DAA+D,IAAM,CACtE,MAAMA,EAAO,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAC1D,OAAOD,EAAsBC,CAAI,CAAC,EAAE,KAAK,EAAK,CAChD,CAAC,CACH,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,GAAG,8CAA+C,IAAM,CAEtD,OAAOF,EADS,MACc,CAAC,EAAE,KAAK,EAAI,CAC5C,CAAC,EACD,GAAG,mDAAoD,IAAM,CAE3D,OAAOA,EADS,aACc,CAAC,EAAE,KAAK,EAAK,CAC7C,CAAC,CACH,CAAC",
6
+ "names": ["isDeviceGenuine", "willRequestPermission", "apdu"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as r,Maybe as u,Nothing as m,Right as l}from"purify-ts";import{assign as d,createActor as D,emit as C,setup as v}from"xstate";import{CommandUtils as A}from"../../command/utils/CommandUtils";import{UnknownDeviceExchangeError as y}from"../../Error";import{AlreadySendingApduError as g,DeviceDisconnectedBeforeSendingApdu as R,DeviceDisconnectedWhileSendingError as p}from"./Errors";class x{deviceId;deviceAdpuSender;machineActor;timeoutDuration;timeout=null;startReconnectionTimeout(){this.timeout=setTimeout(()=>{this.machineActor.send({type:"ReconnectionTimedOut"})},this.timeoutDuration)}constructor(n){this.deviceId=n.deviceId,this.deviceAdpuSender=n.deviceApduSender,this.timeoutDuration=n.timeoutDuration,this.machineActor=D(T({sendApduFn:(o,t)=>this.sendApduToDeviceConnection(o,t),startReconnectionTimeout:()=>this.startReconnectionTimeout(),cancelReconnectionTimeout:()=>{this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},onTerminated:n.onTerminated,closeConnection:()=>{this.deviceAdpuSender.closeConnection()}})),this.machineActor.start()}sendApduToDeviceConnection(n,o){this.deviceAdpuSender.sendApdu(n,o).then(t=>{t.caseOf({Left:i=>{this.machineActor.send({type:"ApduSendingError",error:i})},Right:i=>{this.machineActor.send({type:"ApduResponseReceived",apduResponse:i})}})}).catch(t=>{this.machineActor.send({type:"ApduSendingError",error:new y(t)})})}getDependencies(){return this.deviceAdpuSender.getDependencies()}setDependencies(n){this.deviceAdpuSender.setDependencies(n)}getDeviceId(){return this.deviceId}sendApdu(n,o,t){return new Promise(i=>{this.machineActor.send({type:"SendApduCalled",apdu:n,triggersDisconnection:!!o,abortTimeout:t,responseCallback:i})})}async setupConnection(){await this.deviceAdpuSender.setupConnection()}eventDeviceAttached(){this.machineActor.send({type:"DeviceAttached"})}eventDeviceDetached(){this.machineActor.send({type:"DeviceDetached"})}closeConnection(){this.machineActor.send({type:"CloseConnectionCalled"})}}function T({sendApduFn:a,startReconnectionTimeout:n,cancelReconnectionTimeout:o,onTerminated:t,closeConnection:i}){return v({types:{},actions:{startTimer:()=>{n()},cancelTimer:()=>{o()},reconnectionTimeoutEvent:C({type:"ReconnectionTimedOut"}),sendApdu:({context:e})=>{e.apduInProgress.map(({apdu:s,abortTimeout:c})=>{a(s,!1,c)})},sendApduResponse:({context:e},s)=>{e.apduInProgress.map(({responseCallback:c})=>c(s.response))},cleanupContext:d({apduInProgress:m}),signalTermination:()=>{t()},closeConnection:()=>{i()}},guards:{isApduThatTriggersDisconnection:({context:e},s)=>e.apduInProgress.caseOf({Just:({triggersDisconnection:c,apdu:h})=>(c||A.isApduThatTriggersDisconnection(h))&&A.isSuccessResponse(s.apduResponse),Nothing:()=>!1})}}).createMachine({id:"deviceConnection",initial:"Connected",context:{apduInProgress:m},states:{Connected:{on:{DeviceDetached:{target:"WaitingForReconnection"},SendApduCalled:{target:"SendingApdu",actions:d({apduInProgress:({event:e})=>u.of({apdu:e.apdu,triggersDisconnection:e.triggersDisconnection,abortTimeout:e.abortTimeout,responseCallback:e.responseCallback})})},CloseConnectionCalled:{target:"Terminated"}}},SendingApdu:{entry:"sendApdu",on:{ApduResponseReceived:[{guard:{type:"isApduThatTriggersDisconnection",params:({event:e})=>({apduResponse:e.apduResponse})},target:"WaitingForReconnection",actions:[{type:"sendApduResponse",params:({event:e})=>({response:l(e.apduResponse)})},{type:"cleanupContext"}]},{target:"Connected",actions:[{type:"sendApduResponse",params:({event:e})=>({response:l(e.apduResponse)})},{type:"cleanupContext"}]}],ApduSendingError:{target:"Connected",actions:[{type:"sendApduResponse",params:({event:e})=>({response:r(e.error)})},"cleanupContext"]},DeviceDetached:{target:"WaitingForReconnection",actions:[{type:"sendApduResponse",params:{response:r(new p)}},"cleanupContext"]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:r(new p)}},"cleanupContext"]},SendApduCalled:{actions:({event:e})=>{e.responseCallback(r(new g))}}}},WaitingForReconnection:{entry:"startTimer",on:{DeviceAttached:{target:"Connected",actions:"cancelTimer"},SendApduCalled:{target:"WaitingForReconnectionWithQueuedSendApdu",actions:d({apduInProgress:({event:e})=>u.of({apdu:e.apdu,triggersDisconnection:e.triggersDisconnection,abortTimeout:e.abortTimeout,responseCallback:e.responseCallback})})},ReconnectionTimedOut:{target:"Terminated"},CloseConnectionCalled:{target:"Terminated"}}},WaitingForReconnectionWithQueuedSendApdu:{on:{DeviceAttached:{target:"SendingApdu",actions:"cancelTimer"},ReconnectionTimedOut:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:r(new R)}},{type:"cleanupContext"}]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:r(new p)}},"cleanupContext"]},SendApduCalled:{actions:({event:e})=>{e.responseCallback(r(new g))}}}},Terminated:{entry:["signalTermination","closeConnection"],type:"final"}}})}export{x as DeviceConnectionStateMachine};
1
+ import{Left as o,Maybe as m,Nothing as a,Right as D}from"purify-ts";import{assign as p,createActor as y,emit as v,setup as h}from"xstate";import{GetAppAndVersionCommand as T}from"../../command/os/GetAppAndVersionCommand";import{CommandUtils as C}from"../../command/utils/CommandUtils";import{UnknownDeviceExchangeError as R}from"../../Error";import{AlreadySendingApduError as A,DeviceDisconnectedBeforeSendingApdu as S,DeviceDisconnectedWhileSendingError as g}from"./Errors";class W{deviceId;deviceAdpuSender;machineActor;timeoutDuration;timeout=null;startReconnectionTimeout(){this.timeout=setTimeout(()=>{this.machineActor.send({type:"ReconnectionTimedOut"})},this.timeoutDuration)}constructor(n){this.deviceId=n.deviceId,this.deviceAdpuSender=n.deviceApduSender,this.timeoutDuration=n.timeoutDuration,this.machineActor=y(b({sendApduFn:(r,s,t)=>this.sendApduToDeviceConnection(r,s,t),startReconnectionTimeout:()=>this.startReconnectionTimeout(),cancelReconnectionTimeout:()=>{this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},tryToReconnect:()=>{n.tryToReconnect(this.timeoutDuration)},onTerminated:n.onTerminated,closeConnection:()=>{this.deviceAdpuSender.closeConnection()}})),this.machineActor.start()}sendApduToDeviceConnection(n,r,s){this.deviceAdpuSender.sendApdu(n,r,s).then(t=>{t.caseOf({Left:c=>{this.machineActor.send({type:"ApduSendingError",error:c})},Right:c=>{this.machineActor.send({type:"ApduResponseReceived",apduResponse:c})}})}).catch(t=>{this.machineActor.send({type:"ApduSendingError",error:new R(t)})})}getDependencies(){return this.deviceAdpuSender.getDependencies()}setDependencies(n){this.deviceAdpuSender.setDependencies(n)}getDeviceId(){return this.deviceId}sendApdu(n,r,s){return new Promise(t=>{this.machineActor.send({type:"SendApduCalled",apdu:n,triggersDisconnection:!!r,abortTimeout:s,responseCallback:t})})}async setupConnection(){await this.deviceAdpuSender.setupConnection()}eventDeviceConnected(){this.machineActor.send({type:"DeviceConnected"})}eventDeviceDisconnected(){this.machineActor.send({type:"DeviceDisconnected"})}closeConnection(){this.machineActor.send({type:"CloseConnectionCalled"})}}function b({sendApduFn:u,startReconnectionTimeout:n,cancelReconnectionTimeout:r,tryToReconnect:s,onTerminated:t,closeConnection:c}){return h({types:{},actions:{startTimer:()=>{n()},cancelTimer:()=>{r()},reconnectionTimeoutEvent:v({type:"ReconnectionTimedOut"}),sendApdu:({context:e})=>{e.apduInProgress.ifJust(({apdu:i,triggersDisconnection:d,abortTimeout:l})=>{u(i,d,l)})},sendApduResponse:({context:e},i)=>{e.apduInProgress.map(({responseCallback:d})=>d(i.response))},sendGetAppAndVersion:()=>{u(new T().getApdu().getRawApdu(),!1)},tryToReconnect:()=>{s()},clearApduInProgress:p({apduInProgress:a}),clearApduResponse:p({apduResponse:a}),signalTermination:()=>{t()},closeConnection:()=>{c()}},guards:{isApduThatTriggersDisconnection:({context:e,event:i})=>i.type!=="ApduResponseReceived"?!1:e.apduInProgress.caseOf({Just:({triggersDisconnection:d,apdu:l})=>(d||C.isApduThatTriggersDisconnection(l))&&C.isSuccessResponse(i.apduResponse),Nothing:()=>!1}),isSendApduBusyError:({event:e})=>e.type!=="ApduResponseReceived"?!1:e.apduResponse.statusCode[0]===102&&e.apduResponse.statusCode[1]===1}}).createMachine({id:"deviceConnection",initial:"Connected",context:{apduInProgress:a,apduResponse:a},states:{Connected:{on:{DeviceDisconnected:{target:"WaitingForReconnection"},SendApduCalled:{target:"SendingApdu",actions:p({apduInProgress:({event:e})=>m.of({apdu:e.apdu,triggersDisconnection:e.triggersDisconnection,abortTimeout:e.abortTimeout,responseCallback:e.responseCallback})})},CloseConnectionCalled:{target:"Terminated"}}},SendingApdu:{entry:"sendApdu",on:{ApduResponseReceived:[{guard:"isApduThatTriggersDisconnection",target:"WaitingForDisconnection",actions:[p({apduResponse:({event:e})=>m.of(e.apduResponse)})]},{target:"Connected",actions:[{type:"sendApduResponse",params:({event:e})=>({response:D(e.apduResponse)})},{type:"clearApduInProgress"}]}],ApduSendingError:{target:"Connected",actions:[{type:"sendApduResponse",params:({event:e})=>({response:o(e.error)})},"clearApduInProgress"]},DeviceDisconnected:{target:"WaitingForReconnection",actions:[{type:"sendApduResponse",params:{response:o(new g)}},"clearApduInProgress"]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:o(new g)}},"clearApduInProgress"]},SendApduCalled:{actions:({event:e})=>{e.responseCallback(o(new A))}}}},WaitingForDisconnection:{entry:["sendGetAppAndVersion"],exit:[{type:"sendApduResponse",params:({context:e})=>({response:e.apduResponse.caseOf({Just:i=>D(i),Nothing:()=>o(new R)})})},{type:"clearApduInProgress"},{type:"clearApduResponse"}],on:{ApduResponseReceived:[{guard:"isSendApduBusyError",actions:["sendGetAppAndVersion"],target:"WaitingForDisconnection"},{target:"Connected"}],ApduSendingError:[{target:"WaitingForReconnection"}],SendApduCalled:{actions:({event:e})=>{e.responseCallback(o(new A))}},DeviceDisconnected:{target:"WaitingForReconnection"},CloseConnectionCalled:{target:"Terminated"}}},WaitingForReconnection:{entry:["startTimer","tryToReconnect"],on:{DeviceConnected:{target:"Connected",actions:"cancelTimer"},SendApduCalled:{target:"WaitingForReconnectionWithQueuedSendApdu",actions:p({apduInProgress:({event:e})=>m.of({apdu:e.apdu,triggersDisconnection:e.triggersDisconnection,abortTimeout:e.abortTimeout,responseCallback:e.responseCallback})})},ReconnectionTimedOut:{target:"Terminated"},CloseConnectionCalled:{target:"Terminated"}}},WaitingForReconnectionWithQueuedSendApdu:{on:{DeviceConnected:{target:"SendingApdu",actions:"cancelTimer"},ReconnectionTimedOut:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:o(new S)}},{type:"clearApduInProgress"}]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:o(new g)}},"clearApduInProgress"]},SendApduCalled:{actions:({event:e})=>{e.responseCallback(o(new A))}}}},Terminated:{entry:["signalTermination","closeConnection"],type:"final"}}})}export{W as DeviceConnectionStateMachine};
2
2
  //# sourceMappingURL=DeviceConnectionStateMachine.js.map