@ledgerhq/device-management-kit 0.0.0-signer-eth-plugin-fix-20250331141239 → 0.0.0-sol-signer-20251203164116

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 (942) hide show
  1. package/README.md +43 -6
  2. package/lib/cjs/package.json +46 -42
  3. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  4. package/lib/cjs/src/api/DeviceManagementKit.js.map +3 -3
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  6. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +3 -3
  7. package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
  8. package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
  9. package/lib/cjs/src/api/DmkConfig.js +1 -1
  10. package/lib/cjs/src/api/DmkConfig.js.map +1 -1
  11. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  12. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  13. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  14. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  15. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js +1 -1
  16. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  17. package/lib/cjs/src/api/command/Command.js +1 -1
  18. package/lib/cjs/src/api/command/Command.js.map +1 -1
  19. package/lib/cjs/src/api/command/Errors.js +1 -1
  20. package/lib/cjs/src/api/command/Errors.js.map +3 -3
  21. package/lib/cjs/src/api/command/di/commandModule.js +1 -1
  22. package/lib/cjs/src/api/command/di/commandModule.js.map +3 -3
  23. package/lib/cjs/src/api/command/di/commandModule.test.js +1 -1
  24. package/lib/cjs/src/api/command/di/commandModule.test.js.map +2 -2
  25. package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
  26. package/lib/cjs/src/api/command/model/CommandResult.js.map +2 -2
  27. package/lib/cjs/src/api/command/os/CloseAppCommand.js +1 -1
  28. package/lib/cjs/src/api/command/os/CloseAppCommand.js.map +2 -2
  29. package/lib/cjs/src/api/command/os/CloseAppCommand.test.js +1 -1
  30. package/lib/cjs/src/api/command/os/CloseAppCommand.test.js.map +2 -2
  31. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js +1 -1
  32. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
  33. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
  34. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
  35. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  36. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
  37. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  38. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  39. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  40. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  41. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  42. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  43. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  44. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  45. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  46. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  47. package/lib/cjs/src/api/command/os/ListAppsCommand.js +1 -1
  48. package/lib/cjs/src/api/command/os/ListAppsCommand.js.map +2 -2
  49. package/lib/cjs/src/api/command/os/ListAppsCommand.test.js +1 -1
  50. package/lib/cjs/src/api/command/os/ListAppsCommand.test.js.map +2 -2
  51. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +2 -0
  52. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  53. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  54. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  55. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js +1 -1
  56. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js.map +2 -2
  57. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js +1 -1
  58. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
  59. package/lib/cjs/src/api/command/os/OpenAppCommand.js +1 -1
  60. package/lib/cjs/src/api/command/os/OpenAppCommand.js.map +2 -2
  61. package/lib/cjs/src/api/command/os/OpenAppCommand.test.js +1 -1
  62. package/lib/cjs/src/api/command/os/OpenAppCommand.test.js.map +2 -2
  63. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  64. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  65. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js +1 -1
  66. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js.map +3 -3
  67. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  68. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  69. package/lib/cjs/src/api/command/utils/CommandUtils.js +1 -1
  70. package/lib/cjs/src/api/command/utils/CommandUtils.js.map +3 -3
  71. package/lib/cjs/src/api/command/utils/CommandUtils.test.js +1 -1
  72. package/lib/cjs/src/api/command/utils/CommandUtils.test.js.map +3 -3
  73. package/lib/cjs/src/api/command/utils/GlobalCommandError.js +1 -1
  74. package/lib/cjs/src/api/command/utils/GlobalCommandError.js.map +2 -2
  75. package/lib/cjs/src/api/device/DeviceModel.js +1 -1
  76. package/lib/cjs/src/api/device/DeviceModel.js.map +2 -2
  77. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  78. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  79. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  80. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  81. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  82. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  83. package/lib/cjs/src/api/device-action/di/deviceActionModule.js +1 -1
  84. package/lib/cjs/src/api/device-action/di/deviceActionModule.js.map +3 -3
  85. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js +1 -1
  86. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  87. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  88. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  89. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  90. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  91. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  92. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  93. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -1
  94. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +1 -1
  95. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  96. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  97. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  98. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  99. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  100. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  101. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +2 -0
  102. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  103. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  104. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  105. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  106. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  107. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  108. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  109. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
  110. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +1 -1
  111. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  112. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  113. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  114. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  115. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +2 -0
  116. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  117. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  118. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  119. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  120. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  121. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  122. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +2 -2
  123. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -1
  124. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +1 -1
  125. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  126. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  127. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  128. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  129. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +2 -0
  130. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  131. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  132. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  133. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  134. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  135. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -1
  136. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +1 -1
  137. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  138. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  139. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  140. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  141. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  142. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  143. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  144. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  145. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  146. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  147. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  148. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  149. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  150. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  151. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  152. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  153. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  154. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  155. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  156. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  157. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  158. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  159. package/lib/cjs/src/api/device-model/model/DeviceModel.js +1 -1
  160. package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +2 -2
  161. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +1 -1
  162. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  163. package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
  164. package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +2 -2
  165. package/lib/cjs/src/api/index.js +1 -1
  166. package/lib/cjs/src/api/index.js.map +3 -3
  167. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  168. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  169. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  170. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  171. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +1 -1
  172. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  173. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  174. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js +1 -1
  175. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +1 -1
  176. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  177. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  178. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  179. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  180. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  181. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  182. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js +1 -1
  183. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +1 -1
  184. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  185. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  186. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  187. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  188. package/lib/cjs/src/api/secure-channel/task/types.js +1 -1
  189. package/lib/cjs/src/api/secure-channel/task/types.js.map +2 -2
  190. package/lib/cjs/src/api/secure-channel/utils.js +1 -1
  191. package/lib/cjs/src/api/secure-channel/utils.js.map +3 -3
  192. package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
  193. package/lib/cjs/src/api/secure-channel/utils.test.js.map +3 -3
  194. package/lib/cjs/src/api/transport/model/ConnectedDevice.js +1 -1
  195. package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +3 -3
  196. package/lib/cjs/src/api/transport/model/DeviceApduSender.js +2 -0
  197. package/lib/cjs/src/api/transport/model/DeviceApduSender.js.map +7 -0
  198. package/lib/cjs/src/api/transport/model/DeviceConnection.js +1 -1
  199. package/lib/cjs/src/api/transport/model/DeviceConnection.js.map +1 -1
  200. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  201. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  202. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  203. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  204. package/lib/cjs/src/api/transport/model/DiscoveredDevice.js.map +1 -1
  205. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  206. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  207. package/lib/cjs/src/api/transport/model/Transport.js.map +1 -1
  208. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js +1 -1
  209. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  210. package/lib/cjs/src/api/types.js +1 -1
  211. package/lib/cjs/src/api/types.js.map +1 -1
  212. package/lib/cjs/src/api/utils/AppName.js +2 -0
  213. package/lib/cjs/src/api/utils/AppName.js.map +7 -0
  214. package/lib/cjs/src/api/utils/AppName.test.js +2 -0
  215. package/lib/cjs/src/api/utils/AppName.test.js.map +7 -0
  216. package/lib/cjs/src/api/utils/HexaString.js +1 -1
  217. package/lib/cjs/src/api/utils/HexaString.js.map +3 -3
  218. package/lib/cjs/src/api/utils/HexaString.test.js +1 -1
  219. package/lib/cjs/src/api/utils/HexaString.test.js.map +2 -2
  220. package/lib/cjs/src/di.js +1 -1
  221. package/lib/cjs/src/di.js.map +2 -2
  222. package/lib/cjs/src/internal/config/di/configModule.js +1 -1
  223. package/lib/cjs/src/internal/config/di/configModule.js.map +3 -3
  224. package/lib/cjs/src/internal/config/di/configModule.test.js +1 -1
  225. package/lib/cjs/src/internal/config/di/configModule.test.js.map +2 -2
  226. package/lib/cjs/src/internal/crypto/CryptoService.js +2 -0
  227. package/lib/cjs/src/internal/crypto/CryptoService.js.map +7 -0
  228. package/lib/cjs/src/internal/crypto/NobleCryptoService.js +2 -0
  229. package/lib/cjs/src/internal/crypto/NobleCryptoService.js.map +7 -0
  230. package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js +2 -0
  231. package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
  232. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +1 -1
  233. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  234. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  235. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  236. package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js +1 -1
  237. package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js.map +3 -3
  238. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  239. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  240. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  241. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  242. package/lib/cjs/src/internal/device-session/model/DevicePinger.js +1 -1
  243. package/lib/cjs/src/internal/device-session/model/DevicePinger.js.map +3 -3
  244. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  245. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  246. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  247. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  248. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  249. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +3 -3
  250. package/lib/cjs/src/internal/device-session/model/Frame.js +1 -1
  251. package/lib/cjs/src/internal/device-session/model/Frame.js.map +3 -3
  252. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  253. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  254. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  255. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  256. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  257. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  258. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  259. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
  260. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  261. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  262. package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js +1 -1
  263. package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js.map +1 -1
  264. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  265. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  266. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  267. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  268. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  269. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  270. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  271. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  272. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js +1 -1
  273. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  274. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  275. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  276. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  277. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  278. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  279. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  280. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  281. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  282. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  283. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +2 -2
  284. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  285. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  286. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  287. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  288. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  289. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  290. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  291. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  292. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  293. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  294. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  295. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  296. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js +1 -1
  297. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  298. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  299. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  300. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  301. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  302. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  303. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  304. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  305. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  306. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  307. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  308. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  309. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  310. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  311. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  312. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  313. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  314. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js +1 -1
  315. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  316. package/lib/cjs/src/internal/manager-api/model/Application.js +1 -1
  317. package/lib/cjs/src/internal/manager-api/model/Application.js.map +1 -1
  318. package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
  319. package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
  320. package/lib/cjs/src/internal/manager-api/model/Firmware.js +1 -1
  321. package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +1 -1
  322. package/lib/cjs/src/internal/manager-api/model/Language.js +2 -0
  323. package/lib/cjs/src/internal/manager-api/model/Language.js.map +7 -0
  324. package/lib/cjs/src/internal/manager-api/model/Params.js +1 -1
  325. package/lib/cjs/src/internal/manager-api/model/Params.js.map +1 -1
  326. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  327. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  328. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  329. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  330. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +1 -1
  331. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +1 -1
  332. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js +2 -0
  333. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js.map +7 -0
  334. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js +2 -0
  335. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +7 -0
  336. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  337. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  338. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  339. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  340. package/lib/cjs/src/internal/secure-channel/model/Errors.js +1 -1
  341. package/lib/cjs/src/internal/secure-channel/model/Errors.js.map +3 -3
  342. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  343. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  344. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  345. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  346. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +1 -1
  347. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
  348. package/lib/cjs/src/internal/send/di/sendModule.js +1 -1
  349. package/lib/cjs/src/internal/send/di/sendModule.js.map +3 -3
  350. package/lib/cjs/src/internal/send/di/sendModule.test.js +1 -1
  351. package/lib/cjs/src/internal/send/di/sendModule.test.js.map +2 -2
  352. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +1 -1
  353. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  354. package/lib/cjs/src/internal/transport/di/transportModule.js +1 -1
  355. package/lib/cjs/src/internal/transport/di/transportModule.js.map +3 -3
  356. package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
  357. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +2 -2
  358. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js +1 -1
  359. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  360. package/lib/cjs/src/internal/transport/service/TransportService.js +1 -1
  361. package/lib/cjs/src/internal/transport/service/TransportService.js.map +1 -1
  362. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  363. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  364. package/lib/esm/package.json +46 -42
  365. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  366. package/lib/esm/src/api/DeviceManagementKit.js.map +3 -3
  367. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  368. package/lib/esm/src/api/DeviceManagementKit.test.js.map +3 -3
  369. package/lib/esm/src/api/DeviceManagementKitBuilder.js +1 -1
  370. package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +3 -3
  371. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  372. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  373. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  374. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  375. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js +1 -1
  376. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  377. package/lib/esm/src/api/command/Errors.js +1 -1
  378. package/lib/esm/src/api/command/Errors.js.map +3 -3
  379. package/lib/esm/src/api/command/di/commandModule.js +1 -1
  380. package/lib/esm/src/api/command/di/commandModule.js.map +3 -3
  381. package/lib/esm/src/api/command/di/commandModule.test.js +1 -1
  382. package/lib/esm/src/api/command/di/commandModule.test.js.map +2 -2
  383. package/lib/esm/src/api/command/model/CommandResult.js.map +2 -2
  384. package/lib/esm/src/api/command/os/CloseAppCommand.js +1 -1
  385. package/lib/esm/src/api/command/os/CloseAppCommand.js.map +2 -2
  386. package/lib/esm/src/api/command/os/CloseAppCommand.test.js +1 -1
  387. package/lib/esm/src/api/command/os/CloseAppCommand.test.js.map +2 -2
  388. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js +1 -1
  389. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
  390. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
  391. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
  392. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  393. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
  394. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  395. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  396. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  397. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  398. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  399. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  400. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  401. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  402. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  403. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  404. package/lib/esm/src/api/command/os/ListAppsCommand.js +1 -1
  405. package/lib/esm/src/api/command/os/ListAppsCommand.js.map +2 -2
  406. package/lib/esm/src/api/command/os/ListAppsCommand.test.js +1 -1
  407. package/lib/esm/src/api/command/os/ListAppsCommand.test.js.map +2 -2
  408. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +2 -0
  409. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  410. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  411. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  412. package/lib/esm/src/api/command/os/LoadCertificateCommand.js +1 -1
  413. package/lib/esm/src/api/command/os/LoadCertificateCommand.js.map +2 -2
  414. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js +1 -1
  415. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
  416. package/lib/esm/src/api/command/os/OpenAppCommand.js +1 -1
  417. package/lib/esm/src/api/command/os/OpenAppCommand.js.map +2 -2
  418. package/lib/esm/src/api/command/os/OpenAppCommand.test.js +1 -1
  419. package/lib/esm/src/api/command/os/OpenAppCommand.test.js.map +2 -2
  420. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  421. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  422. package/lib/esm/src/api/command/use-case/SendCommandUseCase.js +1 -1
  423. package/lib/esm/src/api/command/use-case/SendCommandUseCase.js.map +3 -3
  424. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  425. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  426. package/lib/esm/src/api/command/utils/CommandUtils.js +1 -1
  427. package/lib/esm/src/api/command/utils/CommandUtils.js.map +3 -3
  428. package/lib/esm/src/api/command/utils/CommandUtils.test.js +1 -1
  429. package/lib/esm/src/api/command/utils/CommandUtils.test.js.map +3 -3
  430. package/lib/esm/src/api/command/utils/GlobalCommandError.js +1 -1
  431. package/lib/esm/src/api/command/utils/GlobalCommandError.js.map +2 -2
  432. package/lib/esm/src/api/device/DeviceModel.js +1 -1
  433. package/lib/esm/src/api/device/DeviceModel.js.map +2 -2
  434. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  435. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  436. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  437. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  438. package/lib/esm/src/api/device-action/di/deviceActionModule.js +1 -1
  439. package/lib/esm/src/api/device-action/di/deviceActionModule.js.map +3 -3
  440. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js +1 -1
  441. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  442. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  443. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  444. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  445. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  446. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  447. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  448. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  449. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  450. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  451. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  452. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  453. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  454. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js +1 -0
  455. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  456. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  457. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  458. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  459. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  460. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  461. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  462. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  463. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  464. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  465. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  466. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
  467. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  468. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  469. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  470. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  471. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  472. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  473. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  474. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  475. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  476. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  477. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  478. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
  479. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  480. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  481. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  482. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  483. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  484. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  485. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  486. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  487. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  488. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  489. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  490. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  491. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  492. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  493. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  494. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  495. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  496. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  497. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  498. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  499. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  500. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  501. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  502. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  503. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  504. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  505. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  506. package/lib/esm/src/api/device-model/model/DeviceModel.js +1 -1
  507. package/lib/esm/src/api/device-model/model/DeviceModel.js.map +2 -2
  508. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +1 -1
  509. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  510. package/lib/esm/src/api/device-session/DeviceSessionState.js +1 -1
  511. package/lib/esm/src/api/device-session/DeviceSessionState.js.map +2 -2
  512. package/lib/esm/src/api/index.js +1 -1
  513. package/lib/esm/src/api/index.js.map +3 -3
  514. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  515. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  516. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  517. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  518. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  519. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  520. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  521. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  522. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  523. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  524. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  525. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  526. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  527. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  528. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  529. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  530. package/lib/esm/src/api/secure-channel/task/types.js +1 -1
  531. package/lib/esm/src/api/secure-channel/task/types.js.map +2 -2
  532. package/lib/esm/src/api/secure-channel/utils.js +1 -1
  533. package/lib/esm/src/api/secure-channel/utils.js.map +3 -3
  534. package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
  535. package/lib/esm/src/api/secure-channel/utils.test.js.map +3 -3
  536. package/lib/esm/src/api/transport/model/ConnectedDevice.js +1 -1
  537. package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +3 -3
  538. package/lib/esm/src/api/transport/model/DeviceApduSender.js +1 -0
  539. package/lib/esm/src/api/transport/model/DeviceApduSender.js.map +7 -0
  540. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  541. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  542. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  543. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  544. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  545. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  546. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js +1 -1
  547. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  548. package/lib/esm/src/api/utils/AppName.js +2 -0
  549. package/lib/esm/src/api/utils/AppName.js.map +7 -0
  550. package/lib/esm/src/api/utils/AppName.test.js +2 -0
  551. package/lib/esm/src/api/utils/AppName.test.js.map +7 -0
  552. package/lib/esm/src/api/utils/HexaString.js +1 -1
  553. package/lib/esm/src/api/utils/HexaString.js.map +3 -3
  554. package/lib/esm/src/api/utils/HexaString.test.js +1 -1
  555. package/lib/esm/src/api/utils/HexaString.test.js.map +2 -2
  556. package/lib/esm/src/di.js +1 -1
  557. package/lib/esm/src/di.js.map +3 -3
  558. package/lib/esm/src/internal/config/di/configModule.js +1 -1
  559. package/lib/esm/src/internal/config/di/configModule.js.map +3 -3
  560. package/lib/esm/src/internal/config/di/configModule.test.js +1 -1
  561. package/lib/esm/src/internal/config/di/configModule.test.js.map +2 -2
  562. package/lib/esm/src/internal/crypto/CryptoService.js +1 -0
  563. package/lib/esm/src/internal/crypto/CryptoService.js.map +7 -0
  564. package/lib/esm/src/internal/crypto/NobleCryptoService.js +2 -0
  565. package/lib/esm/src/internal/crypto/NobleCryptoService.js.map +7 -0
  566. package/lib/esm/src/internal/crypto/NobleCryptoService.test.js +2 -0
  567. package/lib/esm/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
  568. package/lib/esm/src/internal/device-model/di/deviceModelModule.js +1 -1
  569. package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  570. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  571. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  572. package/lib/esm/src/internal/device-session/data/ApduResponseConst.js +1 -1
  573. package/lib/esm/src/internal/device-session/data/ApduResponseConst.js.map +3 -3
  574. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  575. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  576. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  577. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  578. package/lib/esm/src/internal/device-session/model/DevicePinger.js +1 -1
  579. package/lib/esm/src/internal/device-session/model/DevicePinger.js.map +3 -3
  580. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  581. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  582. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  583. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  584. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  585. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +3 -3
  586. package/lib/esm/src/internal/device-session/model/Frame.js +1 -1
  587. package/lib/esm/src/internal/device-session/model/Frame.js.map +3 -3
  588. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  589. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  590. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  591. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  592. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  593. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  594. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  595. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
  596. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  597. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  598. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  599. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  600. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  601. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  602. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  603. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  604. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  605. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  606. package/lib/esm/src/internal/discovery/di/discoveryTypes.js +1 -1
  607. package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  608. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  609. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  610. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  611. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  612. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  613. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  614. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  615. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  616. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  617. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +2 -2
  618. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  619. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  620. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  621. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  622. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  623. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  624. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  625. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  626. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  627. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  628. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  629. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  630. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js +1 -1
  631. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  632. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  633. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  634. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  635. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  636. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  637. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  638. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  639. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  640. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  641. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  642. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  643. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  644. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  645. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  646. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js +1 -1
  647. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  648. package/lib/esm/src/internal/manager-api/model/Application.js +1 -1
  649. package/lib/esm/src/internal/manager-api/model/Application.js.map +1 -1
  650. package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
  651. package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
  652. package/lib/esm/src/internal/manager-api/model/Language.js +1 -0
  653. package/lib/esm/src/internal/manager-api/model/Language.js.map +7 -0
  654. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  655. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  656. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  657. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  658. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js +2 -0
  659. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js.map +7 -0
  660. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js +2 -0
  661. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +7 -0
  662. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  663. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  664. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  665. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  666. package/lib/esm/src/internal/secure-channel/model/Errors.js +1 -1
  667. package/lib/esm/src/internal/secure-channel/model/Errors.js.map +3 -3
  668. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  669. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  670. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  671. package/lib/esm/src/internal/send/di/sendModule.js +1 -1
  672. package/lib/esm/src/internal/send/di/sendModule.js.map +3 -3
  673. package/lib/esm/src/internal/send/di/sendModule.test.js +1 -1
  674. package/lib/esm/src/internal/send/di/sendModule.test.js.map +2 -2
  675. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js +1 -1
  676. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  677. package/lib/esm/src/internal/transport/di/transportModule.js +1 -1
  678. package/lib/esm/src/internal/transport/di/transportModule.js.map +3 -3
  679. package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
  680. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
  681. package/lib/esm/src/internal/transport/service/DefaultTransportService.js +1 -1
  682. package/lib/esm/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  683. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  684. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  685. package/lib/types/src/api/DeviceManagementKit.d.ts +27 -1
  686. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  687. package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -1
  688. package/lib/types/src/api/DmkConfig.d.ts +2 -0
  689. package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
  690. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
  691. package/lib/types/src/api/apdu/utils/ApduParser.d.ts.map +1 -1
  692. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +66 -0
  693. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  694. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts +1 -0
  695. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts.map +1 -1
  696. package/lib/types/src/api/command/Command.d.ts +4 -0
  697. package/lib/types/src/api/command/Command.d.ts.map +1 -1
  698. package/lib/types/src/api/command/Errors.d.ts +5 -0
  699. package/lib/types/src/api/command/Errors.d.ts.map +1 -1
  700. package/lib/types/src/api/command/di/commandModule.d.ts.map +1 -1
  701. package/lib/types/src/api/command/model/CommandResult.d.ts +3 -3
  702. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  703. package/lib/types/src/api/command/os/CloseAppCommand.d.ts +1 -0
  704. package/lib/types/src/api/command/os/CloseAppCommand.d.ts.map +1 -1
  705. package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts +1 -0
  706. package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts.map +1 -1
  707. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts +1 -0
  708. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
  709. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +17 -0
  710. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -0
  711. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts +2 -0
  712. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts.map +1 -0
  713. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +31 -2
  714. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  715. package/lib/types/src/api/command/os/ListAppsCommand.d.ts +1 -0
  716. package/lib/types/src/api/command/os/ListAppsCommand.d.ts.map +1 -1
  717. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +25 -0
  718. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -0
  719. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts +2 -0
  720. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts.map +1 -0
  721. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts +1 -0
  722. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts.map +1 -1
  723. package/lib/types/src/api/command/os/OpenAppCommand.d.ts +1 -0
  724. package/lib/types/src/api/command/os/OpenAppCommand.d.ts.map +1 -1
  725. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
  726. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts +5 -1
  727. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts.map +1 -1
  728. package/lib/types/src/api/command/utils/CommandErrors.d.ts.map +1 -1
  729. package/lib/types/src/api/command/utils/CommandUtils.d.ts +4 -0
  730. package/lib/types/src/api/command/utils/CommandUtils.d.ts.map +1 -1
  731. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts +1 -1
  732. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts.map +1 -1
  733. package/lib/types/src/api/device/DeviceModel.d.ts +2 -1
  734. package/lib/types/src/api/device/DeviceModel.d.ts.map +1 -1
  735. package/lib/types/src/api/device-action/DeviceAction.d.ts +3 -1
  736. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  737. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  738. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +5 -0
  739. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  740. package/lib/types/src/api/device-action/di/deviceActionModule.d.ts.map +1 -1
  741. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +3 -1
  742. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  743. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  744. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +1 -1
  745. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  746. package/lib/types/src/api/device-action/os/Errors.d.ts +25 -0
  747. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  748. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts +58 -0
  749. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -0
  750. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts +2 -0
  751. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts.map +1 -0
  752. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +29 -0
  753. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -0
  754. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts +1 -1
  755. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
  756. package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts.map +1 -1
  757. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +3 -4
  758. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
  759. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts +40 -0
  760. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -0
  761. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts +2 -0
  762. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts.map +1 -0
  763. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +66 -0
  764. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -0
  765. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
  766. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +0 -1
  767. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
  768. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts +15 -0
  769. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -0
  770. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts +2 -0
  771. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts.map +1 -0
  772. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +25 -0
  773. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -0
  774. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
  775. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +1 -1
  776. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  777. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +30 -0
  778. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -0
  779. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts +2 -0
  780. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts.map +1 -0
  781. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +31 -0
  782. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -0
  783. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts +2 -0
  784. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts.map +1 -0
  785. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +18 -0
  786. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -0
  787. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts +2 -0
  788. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts.map +1 -0
  789. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts +21 -0
  790. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts.map +1 -0
  791. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts +2 -0
  792. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts.map +1 -0
  793. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +1 -0
  794. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  795. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
  796. package/lib/types/src/api/device-model/model/DeviceModel.d.ts +2 -0
  797. package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -1
  798. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -1
  799. package/lib/types/src/api/device-session/DeviceSessionState.d.ts +93 -0
  800. package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
  801. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -1
  802. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -1
  803. package/lib/types/src/api/index.d.ts +7 -2
  804. package/lib/types/src/api/index.d.ts.map +1 -1
  805. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +1 -0
  806. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
  807. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
  808. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +3 -1
  809. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -1
  810. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -1
  811. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +3 -1
  812. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -1
  813. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
  814. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +3 -1
  815. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
  816. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
  817. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +3 -1
  818. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -1
  819. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +9 -2
  820. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
  821. package/lib/types/src/api/secure-channel/task/types.d.ts +13 -1
  822. package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -1
  823. package/lib/types/src/api/secure-channel/utils.d.ts +14 -8
  824. package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -1
  825. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +3 -2
  826. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
  827. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts +17 -0
  828. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts.map +1 -0
  829. package/lib/types/src/api/transport/model/DeviceConnection.d.ts +2 -1
  830. package/lib/types/src/api/transport/model/DeviceConnection.d.ts.map +1 -1
  831. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts +63 -0
  832. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -0
  833. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts +2 -0
  834. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts.map +1 -0
  835. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts +1 -1
  836. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts.map +1 -1
  837. package/lib/types/src/api/transport/model/Errors.d.ts +27 -3
  838. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  839. package/lib/types/src/api/transport/model/Transport.d.ts +1 -1
  840. package/lib/types/src/api/transport/model/Transport.d.ts.map +1 -1
  841. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts +3 -1
  842. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts.map +1 -1
  843. package/lib/types/src/api/types.d.ts +6 -2
  844. package/lib/types/src/api/types.d.ts.map +1 -1
  845. package/lib/types/src/api/utils/AppName.d.ts +2 -0
  846. package/lib/types/src/api/utils/AppName.d.ts.map +1 -0
  847. package/lib/types/src/api/utils/AppName.test.d.ts +2 -0
  848. package/lib/types/src/api/utils/AppName.test.d.ts.map +1 -0
  849. package/lib/types/src/api/utils/HexaString.d.ts +4 -3
  850. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  851. package/lib/types/src/di.d.ts.map +1 -1
  852. package/lib/types/src/internal/config/di/configModule.d.ts.map +1 -1
  853. package/lib/types/src/internal/crypto/CryptoService.d.ts +12 -0
  854. package/lib/types/src/internal/crypto/CryptoService.d.ts.map +1 -0
  855. package/lib/types/src/internal/crypto/NobleCryptoService.d.ts +8 -0
  856. package/lib/types/src/internal/crypto/NobleCryptoService.d.ts.map +1 -0
  857. package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts +2 -0
  858. package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts.map +1 -0
  859. package/lib/types/src/internal/device-model/di/deviceModelModule.d.ts.map +1 -1
  860. package/lib/types/src/internal/device-session/data/ApduResponseConst.d.ts +1 -0
  861. package/lib/types/src/internal/device-session/data/ApduResponseConst.d.ts.map +1 -1
  862. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  863. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts +1 -1
  864. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts.map +1 -1
  865. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +3 -1
  866. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  867. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  868. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
  869. package/lib/types/src/internal/device-session/model/Frame.d.ts.map +1 -1
  870. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.d.ts.map +1 -1
  871. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts +7 -5
  872. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
  873. package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts +28 -1
  874. package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts.map +1 -1
  875. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts +3 -1
  876. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts.map +1 -1
  877. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts.map +1 -1
  878. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  879. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +1 -0
  880. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
  881. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +3 -2
  882. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  883. package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts.map +1 -1
  884. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts +1 -1
  885. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts.map +1 -1
  886. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts +32 -0
  887. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts.map +1 -0
  888. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts +2 -0
  889. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts.map +1 -0
  890. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts +1 -1
  891. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts.map +1 -1
  892. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts +4 -2
  893. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts.map +1 -1
  894. package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
  895. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +24 -5
  896. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
  897. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +51 -6
  898. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  899. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts +104 -18
  900. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts.map +1 -1
  901. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +7 -0
  902. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
  903. package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
  904. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts +1 -0
  905. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts.map +1 -1
  906. package/lib/types/src/internal/manager-api/model/Application.d.ts +12 -12
  907. package/lib/types/src/internal/manager-api/model/Application.d.ts.map +1 -1
  908. package/lib/types/src/internal/manager-api/model/Const.d.ts +2 -0
  909. package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
  910. package/lib/types/src/internal/manager-api/model/Firmware.d.ts +17 -3
  911. package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -1
  912. package/lib/types/src/internal/manager-api/model/Language.d.ts +12 -0
  913. package/lib/types/src/internal/manager-api/model/Language.d.ts.map +1 -0
  914. package/lib/types/src/internal/manager-api/model/Params.d.ts +20 -6
  915. package/lib/types/src/internal/manager-api/model/Params.d.ts.map +1 -1
  916. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts +9 -3
  917. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
  918. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +42 -7
  919. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
  920. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts +13 -0
  921. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts.map +1 -0
  922. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.test.d.ts +2 -0
  923. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.test.d.ts.map +1 -0
  924. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -1
  925. package/lib/types/src/internal/secure-channel/model/Errors.d.ts +22 -2
  926. package/lib/types/src/internal/secure-channel/model/Errors.d.ts.map +1 -1
  927. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +2 -2
  928. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
  929. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +3 -3
  930. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
  931. package/lib/types/src/internal/send/di/sendModule.d.ts.map +1 -1
  932. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +9 -1
  933. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts.map +1 -1
  934. package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
  935. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts +2 -0
  936. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts.map +1 -1
  937. package/lib/types/src/internal/transport/service/TransportService.d.ts +3 -1
  938. package/lib/types/src/internal/transport/service/TransportService.d.ts.map +1 -1
  939. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts +1 -0
  940. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts.map +1 -1
  941. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  942. package/package.json +43 -39
@@ -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.DeviceId: {\n return {\n ..._.context.intermediateValue,\n deviceId: _.event.snapshot.context.payload.deviceId,\n };\n }\n case SecureChannelEventType.PermissionRequested: {\n return {\n ..._.context.intermediateValue,\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n };\n }\n case SecureChannelEventType.PermissionGranted: {\n return {\n ..._.context.intermediateValue,\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 I from"isomorphic-ws";import{Observable as T}from"rxjs";import{CommandUtils as h}from"../../command/utils/CommandUtils";import{InMessageQueryEnum as y,OutMessageResponseEnum as w,SecureChannelEventType as i}from"../../secure-channel/task/types";import{extractPublicKey as O,isGetCertificateApdu as R,willRequestPermission as D}from"../../secure-channel/utils";import{bufferToHexaString as x,hexaStringToBuffer as A}from"../../utils/HexaString";import{NobleCryptoService as N}from"../../../internal/crypto/NobleCryptoService";import{SecureChannelError as r,SecureChannelErrorType as S}from"../../../internal/secure-channel/model/Errors";class j{constructor(n,c){this._api=n;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())}`);this._cryptoService=this._args.cryptoService??new N}_connection;_cryptoService;_deviceIdCaptured=!1;run(){const n=this._api.disableRefresher("connectToSecureChannel");return new T(t=>{let g=!1,l=!1,v=!1;const a=f=>{t.next({type:i.Error,error:f}),t.complete(),l=!0};return this._connection.onopen=()=>{t.next({type:i.Opened})},this._connection.onerror=f=>{l||(t.next({type:i.Error,error:new r({url:this._connection.url,errorMessage:f.message})}),t.complete())},this._connection.onclose=()=>{l||(v?t.next({type:i.Closed}):t.next({type:i.Error,error:new r({url:this._connection.url,errorMessage:"Connection closed unexpectedly"})}),t.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{a(new r({url:this._connection.url,errorMessage:`Invalid message received: ${String(f.data)}`}));return}switch(o.query){case y.EXCHANGE:{const{nonce:e,data:p}=o;if(typeof p!="string"){a(new r(`${y.EXCHANGE} data type should be an APDU`));return}const s=A(p);if(s===null||s.length<5){a(new r(`Received invalid APDU data: ${p}`));return}t.next({type:i.PreExchange,payload:{nonce:e,apdu:s}});let u=!1;D(s)&&!this.isSecureConnectionAllowed()&&(u=!0,t.next({type:i.PermissionRequested}));const m=await this._api.sendApdu(s);if(g)return;m.caseOf({Left:d=>{a(new r(d))},Right:d=>{let C;const E=this.mapDeviceError(d);if(E===null){if(C=w.SUCCESS,!this._deviceIdCaptured&&R(s)){this._deviceIdCaptured=!0;const _=O(d);if(_){const k=this._cryptoService.sha3_256(_);t.next({type:i.DeviceId,payload:{deviceId:k}})}}t.next({type:i.Exchange,payload:{nonce:e,apdu:s,data:d.data,status:d.statusCode}}),u&&t.next({type:i.PermissionGranted})}else C=w.ERROR,a(E);const M={nonce:e,response:C,data:x(d.data,!1)};this._connection.send(JSON.stringify(M))}});break}case y.BULK:{if(l=!0,this._connection.close(),!Array.isArray(o.data)||o.data.length===0||!o.data.every(e=>typeof e=="string")){a(new r("Invalid bulk data received"));return}for(let e=0,p=o.data.length;e<p;e++){const s=A(o.data[e]);if(s===null||s.length<5){a(new r(`Received invalid APDU bulk data: ${o.data[e]}`));return}const u=await this._api.sendApdu(s);if(g)return;if(u.isLeft()){a(new r(u.extract()));return}else if(u.isRight()){const m=this.mapDeviceError(u.extract());if(m===null)t.next({type:i.Progress,payload:{progress:+Number((e+1)/p).toFixed(2),index:e,total:p}});else{a(m);return}}}v=!0,t.complete();break}case y.SUCCESS:{if(l)break;const e=o.result??o.data;e&&t.next({type:i.Result,payload:e??""}),v=!0,t.complete();break}case y.WARNING:{if(l)break;t.next({type:i.Warning,payload:{message:String(o.data)}});break}case y.ERROR:{if(l)break;a(new r({url:this._connection.url,errorMessage:String(o.data)}))}}},()=>{n(),g=!0,this._connection.readyState===I.OPEN&&this._connection.close()}})}isSecureConnectionAllowed(){const n=this._api.getDeviceSessionState();return"isSecureConnectionAllowed"in n&&n.isSecureConnectionAllowed}isInMessageType(n){if(typeof n!="object"||!n)return!1;const c=n;return typeof c.uuid=="string"&&typeof c.session=="string"&&typeof c.query=="string"&&Object.values(y).includes(c.query)&&typeof c.nonce=="number"}mapDeviceError(n){return h.isSuccessResponse(n)?null:h.isLockedDeviceResponse(n)?new r({url:this._connection.url,errorMessage:"Device is locked"},S.DeviceLocked):h.isRefusedByUser(n)?new r({url:this._connection.url,errorMessage:"User refused on the device"},S.RefusedByUser):h.isAppAlreadyInstalled(n)?new r({url:this._connection.url,errorMessage:"App already installed"},S.AppAlreadyInstalled):h.isOutOfMemory(n)?new r({url:this._connection.url,errorMessage:"Out of memory"},S.OutOfMemory):new r({url:this._connection.url,errorMessage:`Invalid status code: ${x(n.statusCode)}`})}}export{j 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 {\n extractPublicKey,\n isGetCertificateApdu,\n willRequestPermission,\n} from \"@api/secure-channel/utils\";\nimport { bufferToHexaString, hexaStringToBuffer } from \"@api/utils/HexaString\";\nimport { type CryptoService } from \"@internal/crypto/CryptoService\";\nimport { NobleCryptoService } from \"@internal/crypto/NobleCryptoService\";\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 cryptoService?: CryptoService;\n};\n\nexport class ConnectToSecureChannelTask {\n private readonly _connection: WebSocket;\n private readonly _cryptoService: CryptoService;\n private _deviceIdCaptured: boolean = false;\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 this._cryptoService = this._args.cryptoService ?? new NobleCryptoService();\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 // Check if this is the first GetCertificate call\n if (!this._deviceIdCaptured && isGetCertificateApdu(apdu)) {\n this._deviceIdCaptured = true;\n const publicKey = extractPublicKey(apduResponse);\n if (publicKey) {\n // Compute SHA3-256 hash of the public key to get the device ID\n const deviceId = this._cryptoService.sha3_256(publicKey);\n subscriber.next({\n type: SecureChannelEventType.DeviceId,\n payload: { deviceId },\n });\n }\n }\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, false),\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", "extractPublicKey", "isGetCertificateApdu", "willRequestPermission", "bufferToHexaString", "hexaStringToBuffer", "NobleCryptoService", "SecureChannelError", "SecureChannelErrorType", "ConnectToSecureChannelTask", "_api", "_args", "reenableRefresher", "subscriber", "unsubscribed", "ignoreNetworkEvents", "communicationFinished", "notifyError", "error", "event", "input", "jsonData", "nonce", "data", "apdu", "permissionRequested", "response", "apduResponse", "outMessageResponse", "deviceError", "publicKey", "deviceId", "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 S from"isomorphic-ws";import{Right as l}from"purify-ts";import{describe as w,it as c,vi as x}from"vitest";import{SecureChannelEventType as o}from"../../secure-channel/task/types";import{SecureChannelError as m,SecureChannelErrorType as f}from"../../../internal/secure-channel/model/Errors";import{ConnectToSecureChannelTask as v}from"./ConnectToSecureChannelTask";x.mock("isomorphic-ws",()=>({...x.importActual("isomorphic-ws"),__esModule:!0,default:class{onopen=null;onmessage=null;send=x.fn();close=x.fn();url;constructor(n){this.url=n}}}));const u=5;w("ConnectToSecureChannelTask",()=>{let n,y,b,r;const i=x.fn(),d={uuid:"5b776c8d-8af2-48c0-8250-04edca2ef5e9",session:"39ce749e-00a4-4c31-a697-1dc1a29e2cab",query:"success",nonce:15};beforeEach(()=>{n=new S("wss://test-host.com"),y={sendApdu:i,disableRefresher:e=>x.fn()},b={connection:l(n)},r=new v(y,b)}),afterEach(()=>{x.resetAllMocks()}),c("should emit Opened event on WebSocket open",async()=>{const e=[];r.run().subscribe(t=>e.push(t)),expect(n.onopen).toBeDefined(),n.onopen({type:"open",target:{}}),await new Promise(t=>setTimeout(t,u)),expect(e).toStrictEqual([{type:o.Opened}])}),c("Error on wrongly formatted message",async()=>{const e=[];r.run().subscribe({next:t=>{e.push(t)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:"invalidData",type:"",target:{}}),await new Promise(t=>setTimeout(t,u)),expect(e).toStrictEqual([{type:o.Error,error:new m({url:"wss://test-host.com",errorMessage:"Invalid message received: invalidData"})}])}),c("should handle incoming EXCHANGE message including requesting user permission",async()=>{i.mockResolvedValue(l({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const e=x.spyOn(n,"send");x.spyOn(r,"isSecureConnectionAllowed").mockReturnValueOnce(!1);const s=[];r.run().subscribe({next:a=>{s.push(a)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"exchange",nonce:1,data:"e051000000"}),type:"",target:{}}),await new Promise(a=>setTimeout(a,u)),expect(e).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"success",data:"9000"})),expect(s).toStrictEqual([{type:o.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0])}},{type:o.PermissionRequested},{type:o.Exchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0]),data:new Uint8Array([144,0]),status:new Uint8Array([144,0])}},{type:o.PermissionGranted}])}),c("should capture and emit device ID on first GetCertificate APDU",async()=>{const e=new Uint8Array([7,74,7,161,82,230,187,193,65,4,28,116,122,78,8,27,92,30,208,39,252,175,128,218,218,31,132,252,142,67,96,203,83,196,182,158,99,203,145,183,202,211,21,99,104,89,27,251,5,143,114,15,151,175,196,115,249,120,85,251,150,228,84,212,128,24,22,0,52,159,216,220,18,81,70,48,68,2,32,126,60,221,29,21,8,246,141,22,99,74,58,30,225,151,196,80,201,23,101,229,226,72,36,23,178,94,227,160,25,129,200,2,32,89,121,93,9,41,199,216,75,173,173,229,5,14,59,33,25,125,170,255,163,41,234,7,213,180,41,28,166,233,42,114,217]);i.mockResolvedValue(l({data:e,statusCode:new Uint8Array([144,0])}));const s=new Uint8Array([170,187,204,221]),t={sha3_256:x.fn().mockReturnValue(s)},a=new v(y,{connection:l(n),cryptoService:t}),g=[];a.run().subscribe({next:p=>{g.push(p)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"exchange",nonce:1,data:"e052000000"}),type:"",target:{}}),await new Promise(p=>setTimeout(p,u)),expect(t.sha3_256).toHaveBeenCalledWith(Uint8Array.from([4,28,116,122,78,8,27,92,30,208,39,252,175,128,218,218,31,132,252,142,67,96,203,83,196,182,158,99,203,145,183,202,211,21,99,104,89,27,251,5,143,114,15,151,175,196,115,249,120,85,251,150,228,84,212,128,24,22,0,52,159,216,220,18,81]));const h=g.find(p=>p.type===o.DeviceId);expect(h).toBeDefined(),expect(h?.payload?.deviceId).toBe(s)}),c("should handle incoming EXCHANGE message with a device error",async()=>{i.mockResolvedValue(l({data:new Uint8Array([]),statusCode:new Uint8Array([85,21])}));const e=x.spyOn(n,"send"),s=[];r.run().subscribe({next:a=>{s.push(a)}}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"exchange",nonce:1,data:"e053000000"}),type:"",target:{}}),await new Promise(a=>setTimeout(a,u)),expect(e).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"error",data:""})),expect(s).toStrictEqual([{type:o.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,83,0,0,0])}},{type:o.Error,error:new m({url:"wss://test-host.com",errorMessage:"Device is locked"},f.DeviceLocked)}])}),c("should handle incoming BULK message",async()=>{i.mockResolvedValue(l({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const e=x.fn(),s=r.run(),t=[];s.subscribe({next:a=>{t.push(a)},complete:()=>e()}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(a=>setTimeout(a,u)),expect(i).toHaveBeenCalledTimes(3),expect(t).toStrictEqual([{type:o.Progress,payload:{progress:.33,index:0,total:3}},{type:o.Progress,payload:{progress:.67,index:1,total:3}},{type:o.Progress,payload:{progress:1,index:2,total:3}}]),expect(e).toHaveBeenCalledOnce()}),c("should handle incoming BULK message with a device error",async()=>{i.mockResolvedValue(l({data:new Uint8Array([]),statusCode:new Uint8Array([85,1])}));const e=x.fn(),s=r.run(),t=[];s.subscribe({next:a=>{t.push(a)},complete:()=>e()}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(a=>setTimeout(a,u)),expect(i).toHaveBeenCalledTimes(1),expect(t).toStrictEqual([{type:o.Error,error:new m({url:"wss://test-host.com",errorMessage:"User refused on the device"},f.RefusedByUser)}]),expect(e).toHaveBeenCalledOnce()}),c("should handle incoming SUCCESS message",()=>{const e=x.fn(),s=[];r.run().subscribe({next:a=>s.push(a),complete:()=>e()}),n.onmessage({data:JSON.stringify({...d,query:"success",nonce:1,result:"success result"}),type:"",target:{}}),expect(s).toStrictEqual([{type:o.Result,payload:"success result"}]),expect(e).toHaveBeenCalledOnce()}),c("should handle incoming WARNING message",()=>{const e=[];r.run().subscribe({next:t=>e.push(t)}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"warning",nonce:1,data:"warning message"}),type:"",target:{}}),expect(e).toStrictEqual([{type:o.Warning,payload:{message:"warning message"}}])}),c("should handle incoming ERROR message",()=>{const e=[];r.run().subscribe({next:t=>e.push(t)}),expect(n.onmessage).toBeDefined(),n.onmessage({data:JSON.stringify({...d,query:"error",data:"My error"}),type:"",target:{}}),expect(e).toStrictEqual([{type:o.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 capture and emit device ID on first GetCertificate APDU\", async () => {\n // Mock response for GetCertificate\n const mockResponse = new Uint8Array([\n 0x07, 0x4a, 0x07, 0xa1, 0x52, 0xe6, 0xbb, 0xc1, 0x41, 0x04, 0x1c, 0x74,\n 0x7a, 0x4e, 0x08, 0x1b, 0x5c, 0x1e, 0xd0, 0x27, 0xfc, 0xaf, 0x80, 0xda,\n 0xda, 0x1f, 0x84, 0xfc, 0x8e, 0x43, 0x60, 0xcb, 0x53, 0xc4, 0xb6, 0x9e,\n 0x63, 0xcb, 0x91, 0xb7, 0xca, 0xd3, 0x15, 0x63, 0x68, 0x59, 0x1b, 0xfb,\n 0x05, 0x8f, 0x72, 0x0f, 0x97, 0xaf, 0xc4, 0x73, 0xf9, 0x78, 0x55, 0xfb,\n 0x96, 0xe4, 0x54, 0xd4, 0x80, 0x18, 0x16, 0x00, 0x34, 0x9f, 0xd8, 0xdc,\n 0x12, 0x51, 0x46, 0x30, 0x44, 0x02, 0x20, 0x7e, 0x3c, 0xdd, 0x1d, 0x15,\n 0x08, 0xf6, 0x8d, 0x16, 0x63, 0x4a, 0x3a, 0x1e, 0xe1, 0x97, 0xc4, 0x50,\n 0xc9, 0x17, 0x65, 0xe5, 0xe2, 0x48, 0x24, 0x17, 0xb2, 0x5e, 0xe3, 0xa0,\n 0x19, 0x81, 0xc8, 0x02, 0x20, 0x59, 0x79, 0x5d, 0x09, 0x29, 0xc7, 0xd8,\n 0x4b, 0xad, 0xad, 0xe5, 0x05, 0x0e, 0x3b, 0x21, 0x19, 0x7d, 0xaa, 0xff,\n 0xa3, 0x29, 0xea, 0x07, 0xd5, 0xb4, 0x29, 0x1c, 0xa6, 0xe9, 0x2a, 0x72,\n 0xd9,\n ]);\n\n sendApduFn.mockResolvedValue(\n Right({\n data: mockResponse,\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n\n // Mock crypto service\n const mockDeviceId = new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]);\n const mockCryptoService = {\n sha3_256: vi.fn().mockReturnValue(mockDeviceId),\n };\n\n const taskWithMockCrypto = new ConnectToSecureChannelTask(mockInternalApi, {\n connection: Right(mockWebSocket),\n cryptoService: mockCryptoService,\n });\n\n const events: SecureChannelEvent[] = [];\n const obs = taskWithMockCrypto.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n // Send GetCertificate APDU (e052000000)\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"exchange\",\n nonce: 1,\n data: \"e052000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n // Verify the mock crypto service was called\n expect(mockCryptoService.sha3_256).toHaveBeenCalledWith(\n Uint8Array.from([\n 0x04, 0x1c, 0x74, 0x7a, 0x4e, 0x08, 0x1b, 0x5c, 0x1e, 0xd0, 0x27, 0xfc,\n 0xaf, 0x80, 0xda, 0xda, 0x1f, 0x84, 0xfc, 0x8e, 0x43, 0x60, 0xcb, 0x53,\n 0xc4, 0xb6, 0x9e, 0x63, 0xcb, 0x91, 0xb7, 0xca, 0xd3, 0x15, 0x63, 0x68,\n 0x59, 0x1b, 0xfb, 0x05, 0x8f, 0x72, 0x0f, 0x97, 0xaf, 0xc4, 0x73, 0xf9,\n 0x78, 0x55, 0xfb, 0x96, 0xe4, 0x54, 0xd4, 0x80, 0x18, 0x16, 0x00, 0x34,\n 0x9f, 0xd8, 0xdc, 0x12, 0x51,\n ]),\n );\n\n // Verify the device ID from the mock crypto service was emitted\n const deviceIdEvent = events.find(\n (e) => e.type === SecureChannelEventType.DeviceId,\n );\n expect(deviceIdEvent).toBeDefined();\n expect(deviceIdEvent?.payload?.deviceId).toBe(mockDeviceId);\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": "AAAA,OAAOA,MAAe,gBACtB,OAAS,SAAAC,MAAa,YACtB,OAAS,YAAAC,EAAU,MAAAC,EAAI,MAAAC,MAAU,SAGjC,OAEE,0BAAAC,MACK,iCACP,OACE,sBAAAC,EACA,0BAAAC,MACK,wCAEP,OACE,8BAAAC,MAEK,+BAEPJ,EAAG,KAAK,gBAAiB,KAAO,CAC9B,GAAGA,EAAG,aAAa,eAAe,EAClC,WAAY,GACZ,QAAS,KAAM,CACb,OAA8B,KAC9B,UAAwD,KACxD,KAAOA,EAAG,GAAG,EACb,MAAQA,EAAG,GAAG,EACd,IACA,YAAYK,EAAa,CACvB,KAAK,IAAMA,CACb,CACF,CACF,EAAE,EAEF,MAAMC,EAAa,EAEnBR,EAAS,6BAA8B,IAAM,CAC3C,IAAIS,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAaX,EAAG,GAAG,EACnBY,EAAc,CAClB,KAAM,uCACN,QAAS,uCACT,MAAO,UACP,MAAO,EACT,EAEA,WAAW,IAAM,CAGfL,EAAgB,IAAIX,EAAU,qBAAqB,EACnDY,EAAkB,CAChB,SAAUG,EACV,iBAAmBE,GAAeb,EAAG,GAAG,CAC1C,EACAS,EAAW,CAAE,WAAYZ,EAAMU,CAAa,CAAE,EAC9CG,EAAO,IAAIN,EAA2BI,EAAiBC,CAAQ,CACjE,CAAC,EAED,UAAU,IAAM,CACdT,EAAG,cAAc,CACnB,CAAC,EAEDD,EAAG,6CAA8C,SAAY,CAC3D,MAAMe,EAA+B,CAAC,EAC1BJ,EAAK,IAAI,EACjB,UAAWK,GAAMD,EAAO,KAAKC,CAAC,CAAC,EAEnC,OAAOR,EAAc,MAAM,EAAE,YAAY,EACzCA,EAAc,OAAQ,CACpB,KAAM,OACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASS,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOQ,CAAM,EAAE,cAAc,CAAC,CAAE,KAAMb,EAAuB,MAAO,CAAC,CAAC,CACxE,CAAC,EAEDF,EAAG,qCAAsC,SAAY,CACnD,MAAMe,EAA+B,CAAC,EAC1BJ,EAAK,IAAI,EACjB,UAAU,CACZ,KAAOO,GAAU,CACfH,EAAO,KAAKG,CAAK,CACnB,CACF,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,cACN,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASS,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOQ,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,MAC7B,MAAO,IAAIC,EAAmB,CAC5B,IAAK,sBACL,aAAc,uCAChB,CAAC,CACH,CACF,CAAC,CACH,CAAC,EAEDH,EAAG,+EAAgF,SAAY,CAC7FY,EAAW,kBACTd,EAAM,CACJ,KAAM,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACjC,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,CACzC,CAAC,CACH,EAEA,MAAMqB,EAAUlB,EAAG,MAAMO,EAAe,MAAM,EAC9CP,EAAG,MAAMU,EAAM,2BAA2B,EAAE,oBAAoB,EAAK,EAErE,MAAMI,EAA+B,CAAC,EAC1BJ,EAAK,IAAI,EACjB,UAAU,CACZ,KAAOO,GAAU,CACfH,EAAO,KAAKG,CAAK,CACnB,CACF,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,WACP,MAAO,EACP,KAAM,YACR,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASI,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOY,CAAO,EAAE,gCACd,KAAK,UAAU,CACb,MAAO,EACP,SAAU,UACV,KAAM,MACR,CAAC,CACH,EACA,OAAOJ,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,YAC7B,QAAS,CACP,MAAO,EACP,KAAM,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CACrD,CACF,EACA,CACE,KAAMA,EAAuB,mBAC/B,EACA,CACE,KAAMA,EAAuB,SAC7B,QAAS,CACP,MAAO,EACP,KAAM,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EACnD,KAAM,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACjC,OAAQ,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,CACrC,CACF,EACA,CACE,KAAMA,EAAuB,iBAC/B,CACF,CAAC,CACH,CAAC,EAEDF,EAAG,iEAAkE,SAAY,CAE/E,MAAMoB,EAAe,IAAI,WAAW,CAClC,EAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAClE,IAAM,GAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAClE,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAClE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAClE,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAClE,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,GAAM,IAAM,IAAM,IAClE,GAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAClE,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAClE,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAClE,GAAM,IAAM,IAAM,EAAM,GAAM,GAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAClE,GAAM,IAAM,IAAM,IAAM,EAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAClE,IAAM,GAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAClE,GACF,CAAC,EAEDR,EAAW,kBACTd,EAAM,CACJ,KAAMsB,EACN,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,CACzC,CAAC,CACH,EAGA,MAAMC,EAAe,IAAI,WAAW,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,EACtDC,EAAoB,CACxB,SAAUrB,EAAG,GAAG,EAAE,gBAAgBoB,CAAY,CAChD,EAEME,EAAqB,IAAIlB,EAA2BI,EAAiB,CACzE,WAAYX,EAAMU,CAAa,EAC/B,cAAec,CACjB,CAAC,EAEKP,EAA+B,CAAC,EAC1BQ,EAAmB,IAAI,EAC/B,UAAU,CACZ,KAAOL,GAAU,CACfH,EAAO,KAAKG,CAAK,CACnB,CACF,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAE5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,WACP,MAAO,EACP,KAAM,YACR,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASI,GAAY,WAAWA,EAASV,CAAU,CAAC,EAG9D,OAAOe,EAAkB,QAAQ,EAAE,qBACjC,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAClE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAClE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAClE,GAAM,GAAM,IAAM,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAClE,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,GAClE,IAAM,IAAM,IAAM,GAAM,EAC1B,CAAC,CACH,EAGA,MAAME,EAAgBT,EAAO,KAC1BC,GAAMA,EAAE,OAASd,EAAuB,QAC3C,EACA,OAAOsB,CAAa,EAAE,YAAY,EAClC,OAAOA,GAAe,SAAS,QAAQ,EAAE,KAAKH,CAAY,CAC5D,CAAC,EAEDrB,EAAG,8DAA+D,SAAY,CAC5EY,EAAW,kBACTd,EAAM,CACJ,KAAM,IAAI,WAAW,CAAC,CAAC,EACvB,WAAY,IAAI,WAAW,CAAC,GAAM,EAAI,CAAC,CACzC,CAAC,CACH,EAEA,MAAMqB,EAAUlB,EAAG,MAAMO,EAAe,MAAM,EACxCO,EAA+B,CAAC,EAC1BJ,EAAK,IAAI,EACjB,UAAU,CACZ,KAAOO,GAAU,CACfH,EAAO,KAAKG,CAAK,CACnB,CACF,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,WACP,MAAO,EACP,KAAM,YACR,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASI,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOY,CAAO,EAAE,gCACd,KAAK,UAAU,CACb,MAAO,EACP,SAAU,QACV,KAAM,EACR,CAAC,CACH,EACA,OAAOJ,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,YAC7B,QAAS,CACP,MAAO,EACP,KAAM,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CACrD,CACF,EACA,CACE,KAAMA,EAAuB,MAC7B,MAAO,IAAIC,EACT,CACE,IAAK,sBACL,aAAc,kBAChB,EACAC,EAAuB,YACzB,CACF,CACF,CAAC,CACH,CAAC,EAEDJ,EAAG,sCAAuC,SAAY,CACpDY,EAAW,kBACTd,EAAM,CACJ,KAAM,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACjC,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,CACzC,CAAC,CACH,EACA,MAAM2B,EAAyBxB,EAAG,GAAG,EAC/ByB,EAAMf,EAAK,IAAI,EACfI,EAA+B,CAAC,EACtCW,EAAI,UAAU,CACZ,KAAOR,GAA8B,CACnCH,EAAO,KAAKG,CAAK,CACnB,EACA,SAAU,IAAMO,EAAW,CAC7B,CAAC,EAED,OAAOjB,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,OACP,MAAO,EACP,KAAM,CAAC,aAAc,aAAc,YAAY,CACjD,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASI,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOK,CAAU,EAAE,sBAAsB,CAAC,EAC1C,OAAOG,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,SAC7B,QAAS,CAAE,SAAU,IAAM,MAAO,EAAG,MAAO,CAAE,CAChD,EACA,CACE,KAAMA,EAAuB,SAC7B,QAAS,CAAE,SAAU,IAAM,MAAO,EAAG,MAAO,CAAE,CAChD,EACA,CACE,KAAMA,EAAuB,SAC7B,QAAS,CAAE,SAAU,EAAK,MAAO,EAAG,MAAO,CAAE,CAC/C,CACF,CAAC,EACD,OAAOuB,CAAU,EAAE,qBAAqB,CAC1C,CAAC,EAEDzB,EAAG,0DAA2D,SAAY,CACxEY,EAAW,kBACTd,EAAM,CACJ,KAAM,IAAI,WAAW,CAAC,CAAC,EACvB,WAAY,IAAI,WAAW,CAAC,GAAM,CAAI,CAAC,CACzC,CAAC,CACH,EACA,MAAM2B,EAAyBxB,EAAG,GAAG,EAC/ByB,EAAMf,EAAK,IAAI,EACfI,EAA+B,CAAC,EACtCW,EAAI,UAAU,CACZ,KAAOR,GAA8B,CACnCH,EAAO,KAAKG,CAAK,CACnB,EACA,SAAU,IAAMO,EAAW,CAC7B,CAAC,EAED,OAAOjB,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,OACP,MAAO,EACP,KAAM,CAAC,aAAc,aAAc,YAAY,CACjD,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,MAAM,IAAI,QAASI,GAAY,WAAWA,EAASV,CAAU,CAAC,EAE9D,OAAOK,CAAU,EAAE,sBAAsB,CAAC,EAC1C,OAAOG,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,MAC7B,MAAO,IAAIC,EACT,CACE,IAAK,sBACL,aAAc,4BAChB,EACAC,EAAuB,aACzB,CACF,CACF,CAAC,EACD,OAAOqB,CAAU,EAAE,qBAAqB,CAC1C,CAAC,EAEDzB,EAAG,yCAA0C,IAAM,CACjD,MAAMyB,EAAyBxB,EAAG,GAAG,EAC/Bc,EAA+B,CAAC,EACnBJ,EAAK,IAAI,EACjB,UAAU,CACnB,KAAOO,GAA8BH,EAAO,KAAKG,CAAK,EACtD,SAAU,IAAMO,EAAW,CAC7B,CAAC,EAEDjB,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,UACP,MAAO,EACP,OAAQ,gBACV,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,OAAOE,CAAM,EAAE,cAAc,CAC3B,CAAE,KAAMb,EAAuB,OAAQ,QAAS,gBAAiB,CACnE,CAAC,EACD,OAAOuB,CAAU,EAAE,qBAAqB,CAC1C,CAAC,EAEDzB,EAAG,yCAA0C,IAAM,CACjD,MAAMe,EAA+B,CAAC,EACnBJ,EAAK,IAAI,EACjB,UAAU,CACnB,KAAOO,GAA8BH,EAAO,KAAKG,CAAK,CACxD,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,UACP,MAAO,EACP,KAAM,iBACR,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,OAAOE,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,QAC7B,QAAS,CAAE,QAAS,iBAAkB,CACxC,CACF,CAAC,CACH,CAAC,EAEDF,EAAG,uCAAwC,IAAM,CAC/C,MAAMe,EAA+B,CAAC,EACnBJ,EAAK,IAAI,EACjB,UAAU,CACnB,KAAOO,GAA8BH,EAAO,KAAKG,CAAK,CACxD,CAAC,EAED,OAAOV,EAAc,SAAS,EAAE,YAAY,EAC5CA,EAAc,UAAW,CACvB,KAAM,KAAK,UAAU,CACnB,GAAGK,EACH,MAAO,QACP,KAAM,UACR,CAAC,EACD,KAAM,GACN,OAAQ,CAAC,CACX,CAAC,EAED,OAAOE,CAAM,EAAE,cAAc,CAC3B,CACE,KAAMb,EAAuB,MAC7B,MAAO,IAAIC,EAAmB,CAC5B,IAAK,sBACL,aAAc,UAChB,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
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", "mockResponse", "mockDeviceId", "mockCryptoService", "taskWithMockCrypto", "deviceIdEvent", "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 t=(r=>(r.GenuineCheck="GenuineCheck",r.ListInstalledApps="ListInstalledApps",r.UpdateMcu="UpdateMcu",r.UpdateFirmware="UpdateFirmware",r.InstallApp="InstallApp",r.UninstallApp="UninstallApp",r))(t||{}),s=(n=>(n.EXCHANGE="exchange",n.BULK="bulk",n.ERROR="error",n.WARNING="warning",n.SUCCESS="success",n))(s||{}),p=(a=>(a.SUCCESS="success",a.ERROR="error",a))(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.DeviceId="device-id",e.Progress="progress",e.Warning="warning",e.Error="error",e.Result="result",e))(o||{});export{s as InMessageQueryEnum,p as OutMessageResponseEnum,o as SecureChannelEventType,t 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 DeviceId = \"device-id\",\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 DeviceId: { deviceId: Uint8Array };\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.DeviceId;\n payload: SecureChannelEventPayload[\"DeviceId\"];\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,YACXA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAXCA,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{ApduParser as t}from"../apdu/utils/ApduParser";import{GENUINE_DEVICE_RESULT as n}from"../secure-channel/constants";function c(e){return e[0]===224&&e[1]===81}function a(e){return e[0]===224&&e[1]===82}function p(e){try{const r=new t(e);return r.extractFieldLVEncoded()?r.extractFieldLVEncoded()??null:null}catch{return null}}function s(e){return e===n}export{p as extractPublicKey,s as isDeviceGenuine,a as isGetCertificateApdu,c 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 { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { GENUINE_DEVICE_RESULT } from \"@api/secure-channel/constants\";\nimport { type SecureChannelEventPayload } from \"@api/secure-channel/task/types\";\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 given APDU command is a GetCertificate command.\n *\n * This method checks if the first byte of the APDU command is `0xe0` and the second byte is `0x52`.\n *\n * @param apdu - The APDU command as a Uint8Array.\n * @returns `true` if the APDU command is a GetCertificate command, otherwise `false`.\n */\nexport function isGetCertificateApdu(apdu: Uint8Array): boolean {\n return apdu[0] === 0xe0 && apdu[1] === 0x52;\n}\n\n/**\n * Extract the public key from a GetCertificate response.\n *\n * @param apduResponse - The APDU response containing the certificate data.\n * @returns The extracted public key as a Uint8Array, or null if extraction fails.\n */\nexport function extractPublicKey(\n apduResponse: ApduResponse,\n): Uint8Array | null {\n try {\n const parser = new ApduParser(apduResponse);\n\n // Skip header (length-value encoded)\n const header = parser.extractFieldLVEncoded();\n if (!header) {\n return null;\n }\n\n // Extract public key (length-value encoded)\n const publicKey = parser.extractFieldLVEncoded();\n return publicKey ?? null;\n } catch (_error) {\n return null;\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": "AAAA,OAAS,cAAAA,MAAkB,6BAE3B,OAAS,yBAAAC,MAA6B,gCAW/B,SAASC,EAAsBC,EAA2B,CAC/D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CAUO,SAASC,EAAqBD,EAA2B,CAC9D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CAQO,SAASE,EACdC,EACmB,CACnB,GAAI,CACF,MAAMC,EAAS,IAAIP,EAAWM,CAAY,EAI1C,OADeC,EAAO,sBAAsB,EAM1BA,EAAO,sBAAsB,GAC3B,KALX,IAMX,MAAiB,CACf,OAAO,IACT,CACF,CASO,SAASC,EAAgBC,EAA8C,CAC5E,OAAOA,IAAYR,CACrB",
6
+ "names": ["ApduParser", "GENUINE_DEVICE_RESULT", "willRequestPermission", "apdu", "isGetCertificateApdu", "extractPublicKey", "apduResponse", "parser", "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{ApduResponse as i}from"../device-session/ApduResponse";import{extractPublicKey as n,isDeviceGenuine as r,isGetCertificateApdu as a,willRequestPermission as s}from"./utils";describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const x=new Uint8Array([224,81,0,0,0]);expect(s(x)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const x=new Uint8Array([224,82,0,0,0]);expect(s(x)).toBe(!1)})});describe("isGetCertificateApdu",()=>{it("should return true if the APDU is a GetCertificate command",()=>{const x=new Uint8Array([224,82,0,0,0]);expect(a(x)).toBe(!0)}),it("should return true for GetCertificate with different P1 and P2",()=>{const x=new Uint8Array([224,82,128,1,0]);expect(a(x)).toBe(!0)}),it("should return false if the APDU is not a GetCertificate command",()=>{const x=new Uint8Array([224,81,0,0,0]);expect(a(x)).toBe(!1)})});describe("extractPublicKey",()=>{it("should extract public key from a valid GetCertificate response",()=>{const x=new Uint8Array([7,74,7,161,82,230,187,193,65,4,28,116,122,78,8,27,92,30,208,39,252,175,128,218,218,31,132,252,142,67,96,203,83,196,182,158,99,203,145,183,202,211,21,99,104,89,27,251,5,143,114,15,151,175,196,115,249,120,85,251,150,228,84,212,128,24,22,0,52,159,216,220,18,81,70,48,68,2,32,126,60,221,29,21,8,246,141,22,99,74,58,30,225,151,196,80,201,23,101,229,226,72,36,23,178,94,227,160,25,129,200,2,32,89,121,93,9,41,199,216,75,173,173,229,5,14,59,33,25,125,170,255,163,41,234,7,213,180,41,28,166,233,42,114,217]),t=new i({statusCode:new Uint8Array([144,0]),data:x}),e=n(t);expect(e).not.toBeNull(),expect(e?.length).toBe(65),expect(e?.[0]).toBe(4),expect(e?.[64]).toBe(81)}),it("should return null for invalid response with missing header",()=>{const x=new i({statusCode:new Uint8Array([144,0]),data:new Uint8Array([])}),t=n(x);expect(t).toBeNull()}),it("should return null for invalid response with missing public key",()=>{const x=new Uint8Array([7,74,7,161,82,230,187,193]),t=new i({statusCode:new Uint8Array([144,0]),data:x}),e=n(t);expect(e).toBeNull()})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect(r("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect(r("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 { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport {\n extractPublicKey,\n isDeviceGenuine,\n isGetCertificateApdu,\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(\"isGetCertificateApdu\", () => {\n it(\"should return true if the APDU is a GetCertificate command\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(isGetCertificateApdu(apdu)).toBe(true);\n });\n it(\"should return true for GetCertificate with different P1 and P2\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x80, 0x01, 0x00]);\n expect(isGetCertificateApdu(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a GetCertificate command\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(isGetCertificateApdu(apdu)).toBe(false);\n });\n});\n\ndescribe(\"extractPublicKey\", () => {\n it(\"should extract public key from a valid GetCertificate response\", () => {\n const responseData = new Uint8Array([\n 0x07, 0x4a, 0x07, 0xa1, 0x52, 0xe6, 0xbb, 0xc1, 0x41, 0x04, 0x1c, 0x74,\n 0x7a, 0x4e, 0x08, 0x1b, 0x5c, 0x1e, 0xd0, 0x27, 0xfc, 0xaf, 0x80, 0xda,\n 0xda, 0x1f, 0x84, 0xfc, 0x8e, 0x43, 0x60, 0xcb, 0x53, 0xc4, 0xb6, 0x9e,\n 0x63, 0xcb, 0x91, 0xb7, 0xca, 0xd3, 0x15, 0x63, 0x68, 0x59, 0x1b, 0xfb,\n 0x05, 0x8f, 0x72, 0x0f, 0x97, 0xaf, 0xc4, 0x73, 0xf9, 0x78, 0x55, 0xfb,\n 0x96, 0xe4, 0x54, 0xd4, 0x80, 0x18, 0x16, 0x00, 0x34, 0x9f, 0xd8, 0xdc,\n 0x12, 0x51, 0x46, 0x30, 0x44, 0x02, 0x20, 0x7e, 0x3c, 0xdd, 0x1d, 0x15,\n 0x08, 0xf6, 0x8d, 0x16, 0x63, 0x4a, 0x3a, 0x1e, 0xe1, 0x97, 0xc4, 0x50,\n 0xc9, 0x17, 0x65, 0xe5, 0xe2, 0x48, 0x24, 0x17, 0xb2, 0x5e, 0xe3, 0xa0,\n 0x19, 0x81, 0xc8, 0x02, 0x20, 0x59, 0x79, 0x5d, 0x09, 0x29, 0xc7, 0xd8,\n 0x4b, 0xad, 0xad, 0xe5, 0x05, 0x0e, 0x3b, 0x21, 0x19, 0x7d, 0xaa, 0xff,\n 0xa3, 0x29, 0xea, 0x07, 0xd5, 0xb4, 0x29, 0x1c, 0xa6, 0xe9, 0x2a, 0x72,\n 0xd9,\n ]);\n\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: responseData,\n });\n\n const publicKey = extractPublicKey(response);\n\n expect(publicKey).not.toBeNull();\n expect(publicKey?.length).toBe(65);\n expect(publicKey?.[0]).toBe(0x04);\n expect(publicKey?.[64]).toBe(0x51);\n });\n\n it(\"should return null for invalid response with missing header\", () => {\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n const publicKey = extractPublicKey(response);\n\n expect(publicKey).toBeNull();\n });\n\n it(\"should return null for invalid response with missing public key\", () => {\n const responseData = new Uint8Array([\n 0x07, 0x4a, 0x07, 0xa1, 0x52, 0xe6, 0xbb, 0xc1,\n ]);\n\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: responseData,\n });\n\n const publicKey = extractPublicKey(response);\n\n expect(publicKey).toBeNull();\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": "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",
6
+ "names": ["ApduResponse", "extractPublicKey", "isDeviceGenuine", "isGetCertificateApdu", "willRequestPermission", "apdu", "responseData", "response", "publicKey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- class c{id;sessionId;modelId;name;type;constructor({transportConnectedDevice:{id:e,deviceModel:{id:o,productName:n},type:i},sessionId:t}){this.id=e,this.sessionId=t,this.modelId=o,this.name=n,this.type=i}}export{c as ConnectedDevice};
1
+ class c{id;sessionId;modelId;name;type;transport;constructor({transportConnectedDevice:{id:e,deviceModel:{id:o,productName:n},type:t,transport:i,name:r},sessionId:d}){this.id=e,this.sessionId=d,this.modelId=o,this.name=r??n,this.type=t,this.transport=i}}export{c as ConnectedDevice};
2
2
  //# sourceMappingURL=ConnectedDevice.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/transport/model/ConnectedDevice.ts"],
4
- "sourcesContent": ["import { type DeviceId, type DeviceModelId } from \"@api/device/DeviceModel\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { type DeviceSessionId } from \"@api/types\";\n\ntype ConnectedDeviceConstructorArgs = {\n readonly sessionId: DeviceSessionId;\n readonly transportConnectedDevice: TransportConnectedDevice;\n};\n\nexport class ConnectedDevice {\n public readonly id: DeviceId;\n public readonly sessionId: DeviceSessionId;\n public readonly modelId: DeviceModelId;\n public readonly name: string;\n public readonly type: ConnectionType;\n\n constructor({\n transportConnectedDevice: {\n id,\n deviceModel: { id: deviceModelId, productName: deviceName },\n type,\n },\n sessionId,\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.sessionId = sessionId;\n this.modelId = deviceModelId;\n this.name = deviceName;\n this.type = type;\n }\n}\n"],
5
- "mappings": "AAUO,MAAMA,CAAgB,CACX,GACA,UACA,QACA,KACA,KAEhB,YAAY,CACV,yBAA0B,CACxB,GAAAC,EACA,YAAa,CAAE,GAAIC,EAAe,YAAaC,CAAW,EAC1D,KAAAC,CACF,EACA,UAAAC,CACF,EAAmC,CACjC,KAAK,GAAKJ,EACV,KAAK,UAAYI,EACjB,KAAK,QAAUH,EACf,KAAK,KAAOC,EACZ,KAAK,KAAOC,CACd,CACF",
6
- "names": ["ConnectedDevice", "id", "deviceModelId", "deviceName", "type", "sessionId"]
4
+ "sourcesContent": ["import { type DeviceId, type DeviceModelId } from \"@api/device/DeviceModel\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { type DeviceSessionId, type TransportIdentifier } from \"@api/types\";\n\ntype ConnectedDeviceConstructorArgs = {\n readonly sessionId: DeviceSessionId;\n readonly transportConnectedDevice: TransportConnectedDevice;\n};\n\nexport class ConnectedDevice {\n public readonly id: DeviceId;\n public readonly sessionId: DeviceSessionId;\n public readonly modelId: DeviceModelId;\n public readonly name: string;\n public readonly type: ConnectionType;\n public readonly transport: TransportIdentifier;\n\n constructor({\n transportConnectedDevice: {\n id,\n deviceModel: { id: deviceModelId, productName },\n type,\n transport,\n name,\n },\n sessionId,\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.sessionId = sessionId;\n this.modelId = deviceModelId;\n this.name = name ?? productName;\n this.type = type;\n this.transport = transport;\n }\n}\n"],
5
+ "mappings": "AAUO,MAAMA,CAAgB,CACX,GACA,UACA,QACA,KACA,KACA,UAEhB,YAAY,CACV,yBAA0B,CACxB,GAAAC,EACA,YAAa,CAAE,GAAIC,EAAe,YAAAC,CAAY,EAC9C,KAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EACA,UAAAC,CACF,EAAmC,CACjC,KAAK,GAAKN,EACV,KAAK,UAAYM,EACjB,KAAK,QAAUL,EACf,KAAK,KAAOI,GAAQH,EACpB,KAAK,KAAOC,EACZ,KAAK,UAAYC,CACnB,CACF",
6
+ "names": ["ConnectedDevice", "id", "deviceModelId", "productName", "type", "transport", "name", "sessionId"]
7
7
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=DeviceApduSender.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }