@ledgerhq/device-management-kit 0.0.0-wrong-error-when-in-experimental-provider-20251021161219 → 0.0.0-z-intent-queue-7-20251204111630

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 (445) hide show
  1. package/lib/cjs/package.json +45 -40
  2. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
  4. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  6. package/lib/cjs/src/api/command/Command.js +1 -1
  7. package/lib/cjs/src/api/command/Command.js.map +1 -1
  8. package/lib/cjs/src/api/command/Errors.js +1 -1
  9. package/lib/cjs/src/api/command/Errors.js.map +3 -3
  10. package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
  11. package/lib/cjs/src/api/command/model/CommandResult.js.map +1 -1
  12. package/lib/cjs/src/api/command/os/CloseAppCommand.js +1 -1
  13. package/lib/cjs/src/api/command/os/CloseAppCommand.js.map +2 -2
  14. package/lib/cjs/src/api/command/os/CloseAppCommand.test.js +1 -1
  15. package/lib/cjs/src/api/command/os/CloseAppCommand.test.js.map +2 -2
  16. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js +1 -1
  17. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
  18. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
  19. package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
  20. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  21. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
  22. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  23. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  24. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +1 -1
  25. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +2 -2
  26. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +1 -1
  27. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +2 -2
  28. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  29. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +2 -2
  30. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  31. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +2 -2
  32. package/lib/cjs/src/api/command/os/ListAppsCommand.js +1 -1
  33. package/lib/cjs/src/api/command/os/ListAppsCommand.js.map +2 -2
  34. package/lib/cjs/src/api/command/os/ListAppsCommand.test.js +1 -1
  35. package/lib/cjs/src/api/command/os/ListAppsCommand.test.js.map +2 -2
  36. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +1 -1
  37. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
  38. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +1 -1
  39. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +2 -2
  40. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js +1 -1
  41. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js.map +2 -2
  42. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js +1 -1
  43. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
  44. package/lib/cjs/src/api/command/os/OpenAppCommand.js +1 -1
  45. package/lib/cjs/src/api/command/os/OpenAppCommand.js.map +2 -2
  46. package/lib/cjs/src/api/command/os/OpenAppCommand.test.js +1 -1
  47. package/lib/cjs/src/api/command/os/OpenAppCommand.test.js.map +2 -2
  48. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  49. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  50. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  51. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  52. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  53. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  54. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  55. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  56. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  57. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  58. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  59. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +2 -2
  60. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
  61. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +1 -1
  62. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
  63. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +2 -2
  64. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -1
  65. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +1 -1
  66. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
  67. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +2 -2
  68. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -1
  69. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +1 -1
  70. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  71. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  72. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +1 -1
  73. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +2 -2
  74. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +1 -1
  75. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +2 -2
  76. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  77. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +2 -2
  78. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  79. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +2 -2
  80. package/lib/cjs/src/api/index.js +1 -1
  81. package/lib/cjs/src/api/index.js.map +2 -2
  82. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  83. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  84. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  85. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +2 -2
  86. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  87. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  88. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +1 -1
  89. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  90. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
  91. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +1 -1
  92. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  93. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  94. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  95. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  96. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  97. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
  98. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +1 -1
  99. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  100. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  101. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  102. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  103. package/lib/cjs/src/api/secure-channel/task/types.js +1 -1
  104. package/lib/cjs/src/api/secure-channel/task/types.js.map +2 -2
  105. package/lib/cjs/src/api/secure-channel/utils.js +1 -1
  106. package/lib/cjs/src/api/secure-channel/utils.js.map +3 -3
  107. package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
  108. package/lib/cjs/src/api/secure-channel/utils.test.js.map +3 -3
  109. package/lib/cjs/src/api/transport/model/ConnectedDevice.js +1 -1
  110. package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +3 -3
  111. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  112. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  113. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js +1 -1
  114. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  115. package/lib/cjs/src/internal/crypto/CryptoService.js +2 -0
  116. package/lib/cjs/src/internal/crypto/CryptoService.js.map +7 -0
  117. package/lib/cjs/src/internal/crypto/NobleCryptoService.js +2 -0
  118. package/lib/cjs/src/internal/crypto/NobleCryptoService.js.map +7 -0
  119. package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js +2 -0
  120. package/lib/cjs/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
  121. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  122. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  123. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  124. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  125. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  126. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  127. package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js +2 -0
  128. package/lib/cjs/src/internal/device-session/model/DeviceSession.test.js.map +7 -0
  129. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
  130. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
  131. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  132. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  133. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  134. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  135. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  136. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  137. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  138. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  139. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  140. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
  141. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  142. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  143. package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js +1 -1
  144. package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js.map +1 -1
  145. package/lib/cjs/src/internal/device-session/service/IntentQueueService.js +2 -0
  146. package/lib/cjs/src/internal/device-session/service/IntentQueueService.js.map +7 -0
  147. package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js +2 -0
  148. package/lib/cjs/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
  149. package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
  150. package/lib/cjs/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
  151. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  152. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  153. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  154. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  155. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js +1 -1
  156. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  157. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  158. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  159. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  160. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  161. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  162. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  163. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  164. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  165. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  166. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  167. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  168. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  169. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  170. package/lib/esm/package.json +45 -40
  171. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  172. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  173. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  174. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  175. package/lib/esm/src/api/command/Errors.js +1 -1
  176. package/lib/esm/src/api/command/Errors.js.map +3 -3
  177. package/lib/esm/src/api/command/model/CommandResult.js +1 -1
  178. package/lib/esm/src/api/command/model/CommandResult.js.map +1 -1
  179. package/lib/esm/src/api/command/os/CloseAppCommand.js +1 -1
  180. package/lib/esm/src/api/command/os/CloseAppCommand.js.map +2 -2
  181. package/lib/esm/src/api/command/os/CloseAppCommand.test.js +1 -1
  182. package/lib/esm/src/api/command/os/CloseAppCommand.test.js.map +2 -2
  183. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js +1 -1
  184. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js.map +2 -2
  185. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js +1 -1
  186. package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js.map +2 -2
  187. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  188. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +2 -2
  189. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  190. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  191. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +1 -1
  192. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +2 -2
  193. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +1 -1
  194. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +2 -2
  195. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  196. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +2 -2
  197. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  198. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +2 -2
  199. package/lib/esm/src/api/command/os/ListAppsCommand.js +1 -1
  200. package/lib/esm/src/api/command/os/ListAppsCommand.js.map +2 -2
  201. package/lib/esm/src/api/command/os/ListAppsCommand.test.js +1 -1
  202. package/lib/esm/src/api/command/os/ListAppsCommand.test.js.map +2 -2
  203. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +1 -1
  204. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
  205. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +1 -1
  206. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +2 -2
  207. package/lib/esm/src/api/command/os/LoadCertificateCommand.js +1 -1
  208. package/lib/esm/src/api/command/os/LoadCertificateCommand.js.map +2 -2
  209. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js +1 -1
  210. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js.map +3 -3
  211. package/lib/esm/src/api/command/os/OpenAppCommand.js +1 -1
  212. package/lib/esm/src/api/command/os/OpenAppCommand.js.map +2 -2
  213. package/lib/esm/src/api/command/os/OpenAppCommand.test.js +1 -1
  214. package/lib/esm/src/api/command/os/OpenAppCommand.test.js.map +2 -2
  215. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  216. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  217. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  218. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  219. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  220. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  221. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  222. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  223. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  224. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +2 -2
  225. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +1 -1
  226. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +2 -2
  227. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +1 -1
  228. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +2 -2
  229. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  230. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  231. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +1 -1
  232. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +3 -3
  233. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +1 -1
  234. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +3 -3
  235. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  236. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  237. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  238. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  239. package/lib/esm/src/api/index.js +1 -1
  240. package/lib/esm/src/api/index.js.map +3 -3
  241. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  242. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  243. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  244. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  245. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  246. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  247. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  248. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +2 -2
  249. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  250. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  251. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  252. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  253. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +2 -2
  254. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  255. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  256. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  257. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  258. package/lib/esm/src/api/secure-channel/task/types.js +1 -1
  259. package/lib/esm/src/api/secure-channel/task/types.js.map +2 -2
  260. package/lib/esm/src/api/secure-channel/utils.js +1 -1
  261. package/lib/esm/src/api/secure-channel/utils.js.map +3 -3
  262. package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
  263. package/lib/esm/src/api/secure-channel/utils.test.js.map +3 -3
  264. package/lib/esm/src/api/transport/model/ConnectedDevice.js +1 -1
  265. package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +3 -3
  266. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  267. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  268. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js +1 -1
  269. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  270. package/lib/esm/src/internal/crypto/CryptoService.js +1 -0
  271. package/lib/esm/src/internal/crypto/CryptoService.js.map +7 -0
  272. package/lib/esm/src/internal/crypto/NobleCryptoService.js +2 -0
  273. package/lib/esm/src/internal/crypto/NobleCryptoService.js.map +7 -0
  274. package/lib/esm/src/internal/crypto/NobleCryptoService.test.js +2 -0
  275. package/lib/esm/src/internal/crypto/NobleCryptoService.test.js.map +7 -0
  276. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  277. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  278. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  279. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  280. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  281. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  282. package/lib/esm/src/internal/device-session/model/DeviceSession.test.js +2 -0
  283. package/lib/esm/src/internal/device-session/model/DeviceSession.test.js.map +7 -0
  284. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js +1 -1
  285. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +2 -2
  286. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  287. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  288. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  289. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  290. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  291. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  292. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  293. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +2 -2
  294. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  295. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +3 -3
  296. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  297. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  298. package/lib/esm/src/internal/device-session/service/IntentQueueService.js +2 -0
  299. package/lib/esm/src/internal/device-session/service/IntentQueueService.js.map +7 -0
  300. package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js +2 -0
  301. package/lib/esm/src/internal/device-session/service/IntentQueueService.test.js.map +7 -0
  302. package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js +2 -0
  303. package/lib/esm/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.js.map +7 -0
  304. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  305. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  306. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  307. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  308. package/lib/esm/src/internal/discovery/di/discoveryTypes.js +1 -1
  309. package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  310. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  311. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  312. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  313. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  314. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  315. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  316. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  317. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  318. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  319. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  320. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  321. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  322. package/lib/types/src/api/DeviceManagementKit.d.ts +22 -0
  323. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  324. package/lib/types/src/api/command/Command.d.ts +4 -0
  325. package/lib/types/src/api/command/Command.d.ts.map +1 -1
  326. package/lib/types/src/api/command/Errors.d.ts +2 -2
  327. package/lib/types/src/api/command/Errors.d.ts.map +1 -1
  328. package/lib/types/src/api/command/model/CommandResult.d.ts +3 -3
  329. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  330. package/lib/types/src/api/command/os/CloseAppCommand.d.ts +1 -0
  331. package/lib/types/src/api/command/os/CloseAppCommand.d.ts.map +1 -1
  332. package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts +1 -0
  333. package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts.map +1 -1
  334. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts +1 -0
  335. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
  336. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +1 -0
  337. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -1
  338. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +1 -0
  339. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  340. package/lib/types/src/api/command/os/ListAppsCommand.d.ts +1 -0
  341. package/lib/types/src/api/command/os/ListAppsCommand.d.ts.map +1 -1
  342. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +1 -0
  343. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -1
  344. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts +1 -0
  345. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts.map +1 -1
  346. package/lib/types/src/api/command/os/OpenAppCommand.d.ts +1 -0
  347. package/lib/types/src/api/command/os/OpenAppCommand.d.ts.map +1 -1
  348. package/lib/types/src/api/device-action/DeviceAction.d.ts +0 -1
  349. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  350. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  351. package/lib/types/src/api/device-action/os/Errors.d.ts +5 -0
  352. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  353. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -1
  354. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +1 -0
  355. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
  356. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -1
  357. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +3 -2
  358. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -1
  359. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -1
  360. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +1 -0
  361. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -1
  362. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +2 -2
  363. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -1
  364. package/lib/types/src/api/index.d.ts +1 -1
  365. package/lib/types/src/api/index.d.ts.map +1 -1
  366. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +1 -0
  367. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
  368. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
  369. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +1 -0
  370. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -1
  371. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -1
  372. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +1 -0
  373. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -1
  374. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
  375. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +1 -0
  376. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
  377. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
  378. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +1 -0
  379. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -1
  380. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +4 -0
  381. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
  382. package/lib/types/src/api/secure-channel/task/types.d.ts +7 -0
  383. package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -1
  384. package/lib/types/src/api/secure-channel/utils.d.ts +18 -1
  385. package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -1
  386. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +3 -2
  387. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
  388. package/lib/types/src/api/transport/model/Errors.d.ts +5 -0
  389. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  390. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts +3 -1
  391. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts.map +1 -1
  392. package/lib/types/src/internal/crypto/CryptoService.d.ts +12 -0
  393. package/lib/types/src/internal/crypto/CryptoService.d.ts.map +1 -0
  394. package/lib/types/src/internal/crypto/NobleCryptoService.d.ts +8 -0
  395. package/lib/types/src/internal/crypto/NobleCryptoService.d.ts.map +1 -0
  396. package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts +2 -0
  397. package/lib/types/src/internal/crypto/NobleCryptoService.test.d.ts.map +1 -0
  398. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  399. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +1 -0
  400. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts.map +1 -1
  401. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +12 -2
  402. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  403. package/lib/types/src/internal/device-session/model/DeviceSession.test.d.ts +2 -0
  404. package/lib/types/src/internal/device-session/model/DeviceSession.test.d.ts.map +1 -0
  405. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts +3 -1
  406. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts.map +1 -1
  407. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +0 -1
  408. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
  409. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts +1 -0
  410. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
  411. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts +7 -5
  412. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
  413. package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts +28 -1
  414. package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts.map +1 -1
  415. package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts +101 -0
  416. package/lib/types/src/internal/device-session/service/IntentQueueService.d.ts.map +1 -0
  417. package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts +2 -0
  418. package/lib/types/src/internal/device-session/service/IntentQueueService.test.d.ts.map +1 -0
  419. package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts +19 -0
  420. package/lib/types/src/internal/device-session/use-case/UnsafeBypassIntentQueueUseCase.d.ts.map +1 -0
  421. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  422. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +1 -0
  423. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
  424. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +3 -2
  425. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  426. package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts.map +1 -1
  427. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts +32 -0
  428. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts.map +1 -0
  429. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts +2 -0
  430. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts.map +1 -0
  431. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +1 -1
  432. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  433. package/package.json +33 -28
  434. package/lib/cjs/src/internal/device-session/service/MutexService.js +0 -2
  435. package/lib/cjs/src/internal/device-session/service/MutexService.js.map +0 -7
  436. package/lib/cjs/src/internal/device-session/service/MutexService.test.js +0 -2
  437. package/lib/cjs/src/internal/device-session/service/MutexService.test.js.map +0 -7
  438. package/lib/esm/src/internal/device-session/service/MutexService.js +0 -2
  439. package/lib/esm/src/internal/device-session/service/MutexService.js.map +0 -7
  440. package/lib/esm/src/internal/device-session/service/MutexService.test.js +0 -2
  441. package/lib/esm/src/internal/device-session/service/MutexService.test.js.map +0 -7
  442. package/lib/types/src/internal/device-session/service/MutexService.d.ts +0 -6
  443. package/lib/types/src/internal/device-session/service/MutexService.d.ts.map +0 -1
  444. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts +0 -2
  445. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/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 { willRequestPermission } from \"@api/secure-channel/utils\";\nimport { bufferToHexaString, hexaStringToBuffer } from \"@api/utils/HexaString\";\nimport {\n SecureChannelError,\n SecureChannelErrorType,\n type WebSocketConnectionError,\n} from \"@internal/secure-channel/model/Errors\";\n\nexport type ConnectToSecureChannelTaskArgs = {\n connection: Either<WebSocketConnectionError, WebSocket>;\n};\n\nexport class ConnectToSecureChannelTask {\n private readonly _connection: WebSocket;\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: ConnectToSecureChannelTaskArgs,\n ) {\n if (this._args.connection.isRight()) {\n this._connection = this._args.connection.extract();\n } else {\n throw new SecureChannelError(\n `Invalid WebSocket connection: ${String(this._args.connection.extract())}`,\n );\n }\n }\n\n run(): Observable<SecureChannelEvent> {\n const reenableRefresher = this._api.disableRefresher(\n \"connectToSecureChannel\",\n );\n\n const obs = new Observable<SecureChannelEvent>((subscriber) => {\n let unsubscribed: boolean = false;\n let ignoreNetworkEvents = false;\n let communicationFinished = false;\n\n const notifyError = (error: SecureChannelError) => {\n subscriber.next({\n type: SecureChannelEventType.Error,\n error,\n });\n subscriber.complete();\n\n // Netowrks events can be ignored once the obervable has been completed\n ignoreNetworkEvents = true;\n };\n\n this._connection.onopen = () => {\n subscriber.next({\n type: SecureChannelEventType.Opened,\n });\n };\n\n this._connection.onerror = (error) => {\n if (ignoreNetworkEvents) {\n return;\n }\n\n subscriber.next({\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: this._connection.url,\n errorMessage: error.message,\n }),\n });\n subscriber.complete();\n };\n\n this._connection.onclose = () => {\n if (ignoreNetworkEvents) {\n return;\n }\n\n if (communicationFinished) {\n subscriber.next({\n type: SecureChannelEventType.Closed,\n });\n } else {\n subscriber.next({\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: this._connection.url,\n errorMessage: \"Connection closed unexpectedly\",\n }),\n });\n }\n subscriber.complete();\n };\n\n this._connection.onmessage = async (event) => {\n // When unsubscribed, ignore the message\n if (unsubscribed) {\n return;\n }\n\n // Parse input message\n let input: InMessageType;\n try {\n const jsonData = JSON.parse(String(event.data));\n if (this.isInMessageType(jsonData)) {\n input = jsonData;\n } else {\n throw new Error(\"Data does not match InMessageType\");\n }\n } catch (_) {\n notifyError(\n new SecureChannelError({\n url: this._connection.url,\n errorMessage: `Invalid message received: ${String(event.data)}`,\n }),\n );\n return;\n }\n\n // Execute message query\n switch (input.query) {\n case InMessageQueryEnum.EXCHANGE: {\n const { nonce, data } = input;\n\n // Exchange query should contain a single APDU\n if (typeof data !== \"string\") {\n notifyError(\n new SecureChannelError(\n `${InMessageQueryEnum.EXCHANGE} data type should be an APDU`,\n ),\n );\n return;\n }\n\n // APDU should be a valid hex string\n const apdu = hexaStringToBuffer(data);\n if (apdu === null || apdu.length < 5) {\n notifyError(\n new SecureChannelError(`Received invalid APDU data: ${data}`),\n );\n return;\n }\n subscriber.next({\n type: SecureChannelEventType.PreExchange,\n payload: { nonce, apdu },\n });\n\n // Notify permission requested\n let permissionRequested = false;\n if (\n willRequestPermission(apdu) &&\n !this.isSecureConnectionAllowed()\n ) {\n permissionRequested = true;\n subscriber.next({\n type: SecureChannelEventType.PermissionRequested,\n });\n }\n\n // Send APDU to the device\n const response = await this._api.sendApdu(apdu);\n if (unsubscribed) {\n return;\n }\n\n // Map device response\n response.caseOf({\n Left: (error) => {\n notifyError(new SecureChannelError(error));\n },\n Right: (apduResponse: ApduResponse) => {\n let outMessageResponse: OutMessageResponseEnum;\n const deviceError = this.mapDeviceError(apduResponse);\n if (deviceError === null) {\n outMessageResponse = OutMessageResponseEnum.SUCCESS;\n\n // Emit event for the exchange\n subscriber.next({\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce,\n apdu,\n data: apduResponse.data,\n status: apduResponse.statusCode,\n },\n });\n\n // If manager consent was requested, notify the \"granted\" event\n if (permissionRequested) {\n subscriber.next({\n type: SecureChannelEventType.PermissionGranted,\n });\n }\n } else {\n outMessageResponse = OutMessageResponseEnum.ERROR;\n notifyError(deviceError);\n }\n\n // Send the message back to the server\n const message: OutMessageType = {\n nonce,\n response: outMessageResponse,\n data: bufferToHexaString(apduResponse.data, 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": ["ConnectToSecureChannelTask_exports", "__export", "ConnectToSecureChannelTask", "__toCommonJS", "import_isomorphic_ws", "import_rxjs", "import_CommandUtils", "import_types", "import_utils", "import_HexaString", "import_Errors", "_api", "_args", "reenableRefresher", "subscriber", "unsubscribed", "ignoreNetworkEvents", "communicationFinished", "notifyError", "error", "event", "input", "jsonData", "nonce", "data", "apdu", "permissionRequested", "response", "apduResponse", "outMessageResponse", "deviceError", "message", "i", "len", "payload", "WebSocket", "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 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 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": ["ConnectToSecureChannelTask_exports", "__export", "ConnectToSecureChannelTask", "__toCommonJS", "import_isomorphic_ws", "import_rxjs", "import_CommandUtils", "import_types", "import_utils", "import_HexaString", "import_NobleCryptoService", "import_Errors", "_api", "_args", "subscriber", "unsubscribed", "ignoreNetworkEvents", "communicationFinished", "notifyError", "error", "event", "input", "jsonData", "nonce", "data", "apdu", "permissionRequested", "response", "apduResponse", "outMessageResponse", "deviceError", "publicKey", "deviceId", "message", "i", "len", "payload", "WebSocket", "deviceSessionState"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var S=Object.create;var g=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var C=(e,l,u,c)=>{if(l&&typeof l=="object"||typeof l=="function")for(let i of v(l))!E.call(e,i)&&i!==u&&g(e,i,{get:()=>l[i],enumerable:!(c=b(l,i))||c.enumerable});return e};var f=(e,l,u)=>(u=e!=null?S(w(e)):{},C(l||!e||!e.__esModule?g(u,"default",{value:e,enumerable:!0}):u,e));var x=f(require("isomorphic-ws")),y=require("purify-ts"),n=require("vitest"),r=require("../../secure-channel/task/types"),d=require("../../../internal/secure-channel/model/Errors"),h=require("./ConnectToSecureChannelTask");n.vi.mock("isomorphic-ws",()=>({...n.vi.importActual("isomorphic-ws"),__esModule:!0,default:class{onopen=null;onmessage=null;send=n.vi.fn();close=n.vi.fn();url;constructor(e){this.url=e}}}));const m=5;(0,n.describe)("ConnectToSecureChannelTask",()=>{let e,l,u,c;const i=n.vi.fn(),p={uuid:"5b776c8d-8af2-48c0-8250-04edca2ef5e9",session:"39ce749e-00a4-4c31-a697-1dc1a29e2cab",query:"success",nonce:15};beforeEach(()=>{e=new x.default("wss://test-host.com"),l={sendApdu:i,disableRefresher:t=>n.vi.fn()},u={connection:(0,y.Right)(e)},c=new h.ConnectToSecureChannelTask(l,u)}),afterEach(()=>{n.vi.resetAllMocks()}),(0,n.it)("should emit Opened event on WebSocket open",async()=>{const t=[];c.run().subscribe(s=>t.push(s)),expect(e.onopen).toBeDefined(),e.onopen({type:"open",target:{}}),await new Promise(s=>setTimeout(s,m)),expect(t).toStrictEqual([{type:r.SecureChannelEventType.Opened}])}),(0,n.it)("Error on wrongly formatted message",async()=>{const t=[];c.run().subscribe({next:s=>{t.push(s)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:"invalidData",type:"",target:{}}),await new Promise(s=>setTimeout(s,m)),expect(t).toStrictEqual([{type:r.SecureChannelEventType.Error,error:new d.SecureChannelError({url:"wss://test-host.com",errorMessage:"Invalid message received: invalidData"})}])}),(0,n.it)("should handle incoming EXCHANGE message including requesting user permission",async()=>{i.mockResolvedValue((0,y.Right)({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const t=n.vi.spyOn(e,"send");n.vi.spyOn(c,"isSecureConnectionAllowed").mockReturnValueOnce(!1);const a=[];c.run().subscribe({next:o=>{a.push(o)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"exchange",nonce:1,data:"e051000000"}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(t).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"success",data:"9000"})),expect(a).toStrictEqual([{type:r.SecureChannelEventType.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0])}},{type:r.SecureChannelEventType.PermissionRequested},{type:r.SecureChannelEventType.Exchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0]),data:new Uint8Array([144,0]),status:new Uint8Array([144,0])}},{type:r.SecureChannelEventType.PermissionGranted}])}),(0,n.it)("should handle incoming EXCHANGE message with a device error",async()=>{i.mockResolvedValue((0,y.Right)({data:new Uint8Array([]),statusCode:new Uint8Array([85,21])}));const t=n.vi.spyOn(e,"send"),a=[];c.run().subscribe({next:o=>{a.push(o)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"exchange",nonce:1,data:"e053000000"}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(t).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"error",data:""})),expect(a).toStrictEqual([{type:r.SecureChannelEventType.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,83,0,0,0])}},{type:r.SecureChannelEventType.Error,error:new d.SecureChannelError({url:"wss://test-host.com",errorMessage:"Device is locked"},d.SecureChannelErrorType.DeviceLocked)}])}),(0,n.it)("should handle incoming BULK message",async()=>{i.mockResolvedValue((0,y.Right)({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const t=n.vi.fn(),a=c.run(),s=[];a.subscribe({next:o=>{s.push(o)},complete:()=>t()}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(i).toHaveBeenCalledTimes(3),expect(s).toStrictEqual([{type:r.SecureChannelEventType.Progress,payload:{progress:.33,index:0,total:3}},{type:r.SecureChannelEventType.Progress,payload:{progress:.67,index:1,total:3}},{type:r.SecureChannelEventType.Progress,payload:{progress:1,index:2,total:3}}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming BULK message with a device error",async()=>{i.mockResolvedValue((0,y.Right)({data:new Uint8Array([]),statusCode:new Uint8Array([85,1])}));const t=n.vi.fn(),a=c.run(),s=[];a.subscribe({next:o=>{s.push(o)},complete:()=>t()}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(i).toHaveBeenCalledTimes(1),expect(s).toStrictEqual([{type:r.SecureChannelEventType.Error,error:new d.SecureChannelError({url:"wss://test-host.com",errorMessage:"User refused on the device"},d.SecureChannelErrorType.RefusedByUser)}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming SUCCESS message",()=>{const t=n.vi.fn(),a=[];c.run().subscribe({next:o=>a.push(o),complete:()=>t()}),e.onmessage({data:JSON.stringify({...p,query:"success",nonce:1,result:"success result"}),type:"",target:{}}),expect(a).toStrictEqual([{type:r.SecureChannelEventType.Result,payload:"success result"}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming WARNING message",()=>{const t=[];c.run().subscribe({next:s=>t.push(s)}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"warning",nonce:1,data:"warning message"}),type:"",target:{}}),expect(t).toStrictEqual([{type:r.SecureChannelEventType.Warning,payload:{message:"warning message"}}])}),(0,n.it)("should handle incoming ERROR message",()=>{const t=[];c.run().subscribe({next:s=>t.push(s)}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...p,query:"error",data:"My error"}),type:"",target:{}}),expect(t).toStrictEqual([{type:r.SecureChannelEventType.Error,error:new d.SecureChannelError({url:"wss://test-host.com",errorMessage:"My error"})}])})});
1
+ "use strict";var S=Object.create;var f=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var A=(e,i,d,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let c of C(i))!k.call(e,c)&&c!==d&&f(e,c,{get:()=>i[c],enumerable:!(r=w(i,c))||r.enumerable});return e};var T=(e,i,d)=>(d=e!=null?S(E(e)):{},A(i||!e||!e.__esModule?f(d,"default",{value:e,enumerable:!0}):d,e));var v=T(require("isomorphic-ws")),u=require("purify-ts"),n=require("vitest"),x=require("../../secure-channel/task/types"),p=require("../../../internal/secure-channel/model/Errors"),b=require("./ConnectToSecureChannelTask");n.vi.mock("isomorphic-ws",()=>({...n.vi.importActual("isomorphic-ws"),__esModule:!0,default:class{onopen=null;onmessage=null;send=n.vi.fn();close=n.vi.fn();url;constructor(e){this.url=e}}}));const m=5;(0,n.describe)("ConnectToSecureChannelTask",()=>{let e,i,d,r;const c=n.vi.fn(),l={uuid:"5b776c8d-8af2-48c0-8250-04edca2ef5e9",session:"39ce749e-00a4-4c31-a697-1dc1a29e2cab",query:"success",nonce:15};beforeEach(()=>{e=new v.default("wss://test-host.com"),i={sendApdu:c,disableRefresher:t=>n.vi.fn()},d={connection:(0,u.Right)(e)},r=new b.ConnectToSecureChannelTask(i,d)}),afterEach(()=>{n.vi.resetAllMocks()}),(0,n.it)("should emit Opened event on WebSocket open",async()=>{const t=[];r.run().subscribe(s=>t.push(s)),expect(e.onopen).toBeDefined(),e.onopen({type:"open",target:{}}),await new Promise(s=>setTimeout(s,m)),expect(t).toStrictEqual([{type:x.SecureChannelEventType.Opened}])}),(0,n.it)("Error on wrongly formatted message",async()=>{const t=[];r.run().subscribe({next:s=>{t.push(s)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:"invalidData",type:"",target:{}}),await new Promise(s=>setTimeout(s,m)),expect(t).toStrictEqual([{type:x.SecureChannelEventType.Error,error:new p.SecureChannelError({url:"wss://test-host.com",errorMessage:"Invalid message received: invalidData"})}])}),(0,n.it)("should handle incoming EXCHANGE message including requesting user permission",async()=>{c.mockResolvedValue((0,u.Right)({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const t=n.vi.spyOn(e,"send");n.vi.spyOn(r,"isSecureConnectionAllowed").mockReturnValueOnce(!1);const a=[];r.run().subscribe({next:o=>{a.push(o)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"exchange",nonce:1,data:"e051000000"}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(t).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"success",data:"9000"})),expect(a).toStrictEqual([{type:x.SecureChannelEventType.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0])}},{type:x.SecureChannelEventType.PermissionRequested},{type:x.SecureChannelEventType.Exchange,payload:{nonce:1,apdu:new Uint8Array([224,81,0,0,0]),data:new Uint8Array([144,0]),status:new Uint8Array([144,0])}},{type:x.SecureChannelEventType.PermissionGranted}])}),(0,n.it)("should capture and emit device ID on first GetCertificate APDU",async()=>{const t=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]);c.mockResolvedValue((0,u.Right)({data:t,statusCode:new Uint8Array([144,0])}));const a=new Uint8Array([170,187,204,221]),s={sha3_256:n.vi.fn().mockReturnValue(a)},o=new b.ConnectToSecureChannelTask(i,{connection:(0,u.Right)(e),cryptoService:s}),g=[];o.run().subscribe({next:y=>{g.push(y)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"exchange",nonce:1,data:"e052000000"}),type:"",target:{}}),await new Promise(y=>setTimeout(y,m)),expect(s.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(y=>y.type===x.SecureChannelEventType.DeviceId);expect(h).toBeDefined(),expect(h?.payload?.deviceId).toBe(a)}),(0,n.it)("should handle incoming EXCHANGE message with a device error",async()=>{c.mockResolvedValue((0,u.Right)({data:new Uint8Array([]),statusCode:new Uint8Array([85,21])}));const t=n.vi.spyOn(e,"send"),a=[];r.run().subscribe({next:o=>{a.push(o)}}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"exchange",nonce:1,data:"e053000000"}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(t).toHaveBeenCalledExactlyOnceWith(JSON.stringify({nonce:1,response:"error",data:""})),expect(a).toStrictEqual([{type:x.SecureChannelEventType.PreExchange,payload:{nonce:1,apdu:new Uint8Array([224,83,0,0,0])}},{type:x.SecureChannelEventType.Error,error:new p.SecureChannelError({url:"wss://test-host.com",errorMessage:"Device is locked"},p.SecureChannelErrorType.DeviceLocked)}])}),(0,n.it)("should handle incoming BULK message",async()=>{c.mockResolvedValue((0,u.Right)({data:new Uint8Array([144,0]),statusCode:new Uint8Array([144,0])}));const t=n.vi.fn(),a=r.run(),s=[];a.subscribe({next:o=>{s.push(o)},complete:()=>t()}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(c).toHaveBeenCalledTimes(3),expect(s).toStrictEqual([{type:x.SecureChannelEventType.Progress,payload:{progress:.33,index:0,total:3}},{type:x.SecureChannelEventType.Progress,payload:{progress:.67,index:1,total:3}},{type:x.SecureChannelEventType.Progress,payload:{progress:1,index:2,total:3}}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming BULK message with a device error",async()=>{c.mockResolvedValue((0,u.Right)({data:new Uint8Array([]),statusCode:new Uint8Array([85,1])}));const t=n.vi.fn(),a=r.run(),s=[];a.subscribe({next:o=>{s.push(o)},complete:()=>t()}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"bulk",nonce:1,data:["0000000100","0000000200","0000000300"]}),type:"",target:{}}),await new Promise(o=>setTimeout(o,m)),expect(c).toHaveBeenCalledTimes(1),expect(s).toStrictEqual([{type:x.SecureChannelEventType.Error,error:new p.SecureChannelError({url:"wss://test-host.com",errorMessage:"User refused on the device"},p.SecureChannelErrorType.RefusedByUser)}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming SUCCESS message",()=>{const t=n.vi.fn(),a=[];r.run().subscribe({next:o=>a.push(o),complete:()=>t()}),e.onmessage({data:JSON.stringify({...l,query:"success",nonce:1,result:"success result"}),type:"",target:{}}),expect(a).toStrictEqual([{type:x.SecureChannelEventType.Result,payload:"success result"}]),expect(t).toHaveBeenCalledOnce()}),(0,n.it)("should handle incoming WARNING message",()=>{const t=[];r.run().subscribe({next:s=>t.push(s)}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"warning",nonce:1,data:"warning message"}),type:"",target:{}}),expect(t).toStrictEqual([{type:x.SecureChannelEventType.Warning,payload:{message:"warning message"}}])}),(0,n.it)("should handle incoming ERROR message",()=>{const t=[];r.run().subscribe({next:s=>t.push(s)}),expect(e.onmessage).toBeDefined(),e.onmessage({data:JSON.stringify({...l,query:"error",data:"My error"}),type:"",target:{}}),expect(t).toStrictEqual([{type:x.SecureChannelEventType.Error,error:new p.SecureChannelError({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 {\n SecureChannelError,\n SecureChannelErrorType,\n} from \"@internal/secure-channel/model/Errors\";\n\nimport {\n ConnectToSecureChannelTask,\n type ConnectToSecureChannelTaskArgs,\n} from \"./ConnectToSecureChannelTask\";\n\nvi.mock(\"isomorphic-ws\", () => ({\n ...vi.importActual(\"isomorphic-ws\"),\n __esModule: true,\n default: class {\n onopen: (() => void) | null = null;\n onmessage: ((event: { data: string }) => void) | null = null;\n send = vi.fn();\n close = vi.fn();\n url: string;\n constructor(url: string) {\n this.url = url;\n }\n },\n}));\n\nconst TEST_DELAY = 5;\n\ndescribe(\"ConnectToSecureChannelTask\", () => {\n let mockWebSocket: WebSocket;\n let mockInternalApi: InternalApi;\n let taskArgs: ConnectToSecureChannelTaskArgs;\n let task: ConnectToSecureChannelTask;\n const sendApduFn = vi.fn();\n const mockMessage = {\n uuid: \"5b776c8d-8af2-48c0-8250-04edca2ef5e9\",\n session: \"39ce749e-00a4-4c31-a697-1dc1a29e2cab\",\n query: \"success\",\n nonce: 15,\n };\n\n beforeEach(() => {\n // vi.useFakeTimers({ shouldAdvanceTime: true });\n\n mockWebSocket = new WebSocket(\"wss://test-host.com\");\n mockInternalApi = {\n sendApdu: sendApduFn,\n disableRefresher: (_: unknown) => vi.fn(),\n } as unknown as InternalApi;\n taskArgs = { connection: Right(mockWebSocket) };\n task = new ConnectToSecureChannelTask(mockInternalApi, taskArgs);\n });\n\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should emit Opened event on WebSocket open\", async () => {\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe((e) => events.push(e));\n\n expect(mockWebSocket.onopen).toBeDefined();\n mockWebSocket.onopen!({\n type: \"open\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(events).toStrictEqual([{ type: SecureChannelEventType.Opened }]);\n });\n\n it(\"Error on wrongly formatted message\", async () => {\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: \"invalidData\",\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: \"wss://test-host.com\",\n errorMessage: \"Invalid message received: invalidData\",\n }),\n },\n ]);\n });\n\n it(\"should handle incoming EXCHANGE message including requesting user permission\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n\n const sendSpy = vi.spyOn(mockWebSocket, \"send\");\n vi.spyOn(task, \"isSecureConnectionAllowed\").mockReturnValueOnce(false);\n\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"exchange\",\n nonce: 1,\n data: \"e051000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendSpy).toHaveBeenCalledExactlyOnceWith(\n JSON.stringify({\n nonce: 1,\n response: \"success\",\n data: \"9000\",\n }),\n );\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.PreExchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.Exchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]),\n data: new Uint8Array([0x90, 0x00]),\n status: new Uint8Array([0x90, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n ]);\n });\n\n it(\"should handle incoming EXCHANGE message with a device error\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([]),\n statusCode: new Uint8Array([0x55, 0x15]),\n }),\n );\n\n const sendSpy = vi.spyOn(mockWebSocket, \"send\");\n const events: SecureChannelEvent[] = [];\n const obs = task.run();\n obs.subscribe({\n next: (event) => {\n events.push(event);\n },\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"exchange\",\n nonce: 1,\n data: \"e053000000\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendSpy).toHaveBeenCalledExactlyOnceWith(\n JSON.stringify({\n nonce: 1,\n response: \"error\",\n data: \"\",\n }),\n );\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.PreExchange,\n payload: {\n nonce: 1,\n apdu: new Uint8Array([0xe0, 0x53, 0x00, 0x00, 0x00]),\n },\n },\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError(\n {\n url: \"wss://test-host.com\",\n errorMessage: \"Device is locked\",\n },\n SecureChannelErrorType.DeviceLocked,\n ),\n },\n ]);\n });\n\n it(\"should handle incoming BULK message\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([0x90, 0x00]),\n statusCode: new Uint8Array([0x90, 0x00]),\n }),\n );\n const completeFn: () => void = vi.fn();\n const obs = task.run();\n const events: SecureChannelEvent[] = [];\n obs.subscribe({\n next: (event: SecureChannelEvent) => {\n events.push(event);\n },\n complete: () => completeFn(),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"bulk\",\n nonce: 1,\n data: [\"0000000100\", \"0000000200\", \"0000000300\"],\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendApduFn).toHaveBeenCalledTimes(3);\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.33, index: 0, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 0.67, index: 1, total: 3 },\n },\n {\n type: SecureChannelEventType.Progress,\n payload: { progress: 1.0, index: 2, total: 3 },\n },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming BULK message with a device error\", async () => {\n sendApduFn.mockResolvedValue(\n Right({\n data: new Uint8Array([]),\n statusCode: new Uint8Array([0x55, 0x01]),\n }),\n );\n const completeFn: () => void = vi.fn();\n const obs = task.run();\n const events: SecureChannelEvent[] = [];\n obs.subscribe({\n next: (event: SecureChannelEvent) => {\n events.push(event);\n },\n complete: () => completeFn(),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"bulk\",\n nonce: 1,\n data: [\"0000000100\", \"0000000200\", \"0000000300\"],\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n await new Promise((resolve) => setTimeout(resolve, TEST_DELAY));\n\n expect(sendApduFn).toHaveBeenCalledTimes(1);\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError(\n {\n url: \"wss://test-host.com\",\n errorMessage: \"User refused on the device\",\n },\n SecureChannelErrorType.RefusedByUser,\n ),\n },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming SUCCESS message\", () => {\n const completeFn: () => void = vi.fn();\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n complete: () => completeFn(),\n });\n\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"success\",\n nonce: 1,\n result: \"success result\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n { type: SecureChannelEventType.Result, payload: \"success result\" },\n ]);\n expect(completeFn).toHaveBeenCalledOnce();\n });\n\n it(\"should handle incoming WARNING message\", () => {\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"warning\",\n nonce: 1,\n data: \"warning message\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Warning,\n payload: { message: \"warning message\" },\n },\n ]);\n });\n\n it(\"should handle incoming ERROR message\", () => {\n const events: SecureChannelEvent[] = [];\n const observable = task.run();\n observable.subscribe({\n next: (event: SecureChannelEvent) => events.push(event),\n });\n\n expect(mockWebSocket.onmessage).toBeDefined();\n mockWebSocket.onmessage!({\n data: JSON.stringify({\n ...mockMessage,\n query: \"error\",\n data: \"My error\",\n }),\n type: \"\",\n target: {} as WebSocket,\n });\n\n expect(events).toStrictEqual([\n {\n type: SecureChannelEventType.Error,\n error: new SecureChannelError({\n url: \"wss://test-host.com\",\n errorMessage: \"My error\",\n }),\n },\n ]);\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_isomorphic_ws", "import_purify_ts", "import_vitest", "import_types", "import_Errors", "import_ConnectToSecureChannelTask", "url", "TEST_DELAY", "mockWebSocket", "mockInternalApi", "taskArgs", "task", "sendApduFn", "mockMessage", "WebSocket", "_", "events", "e", "resolve", "event", "sendSpy", "completeFn", "obs"]
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": "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",
6
+ "names": ["import_isomorphic_ws", "import_purify_ts", "import_vitest", "import_types", "import_Errors", "import_ConnectToSecureChannelTask", "url", "TEST_DELAY", "mockWebSocket", "mockInternalApi", "taskArgs", "task", "sendApduFn", "mockMessage", "WebSocket", "_", "events", "e", "resolve", "event", "sendSpy", "mockResponse", "mockDeviceId", "mockCryptoService", "taskWithMockCrypto", "deviceIdEvent", "completeFn", "obs"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var P=(n,r)=>{for(var t in r)o(n,t,{get:r[t],enumerable:!0})},h=(n,r,t,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of u(r))!x.call(n,s)&&s!==t&&o(n,s,{get:()=>r[s],enumerable:!(l=g(r,s))||l.enumerable});return n};var E=n=>h(o({},"__esModule",{value:!0}),n);var U={};P(U,{InMessageQueryEnum:()=>i,OutMessageResponseEnum:()=>y,SecureChannelEventType:()=>c,SecureChannelOperationEnum:()=>d});module.exports=E(U);var d=(a=>(a.GenuineCheck="GenuineCheck",a.ListInstalledApps="ListInstalledApps",a.UpdateMcu="UpdateMcu",a.UpdateFirmware="UpdateFirmware",a.InstallApp="InstallApp",a.UninstallApp="UninstallApp",a))(d||{}),i=(p=>(p.EXCHANGE="exchange",p.BULK="bulk",p.ERROR="error",p.WARNING="warning",p.SUCCESS="success",p))(i||{}),y=(t=>(t.SUCCESS="success",t.ERROR="error",t))(y||{}),c=(e=>(e.Opened="opened",e.Closed="closed",e.PermissionRequested="permission-requested",e.PermissionGranted="permission-granted",e.PreExchange="pre-exchange",e.Exchange="exchange",e.Progress="progress",e.Warning="warning",e.Error="error",e.Result="result",e))(c||{});0&&(module.exports={InMessageQueryEnum,OutMessageResponseEnum,SecureChannelEventType,SecureChannelOperationEnum});
1
+ "use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var P=(n,r)=>{for(var a in r)o(n,a,{get:r[a],enumerable:!0})},h=(n,r,a,d)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of u(r))!x.call(n,s)&&s!==a&&o(n,s,{get:()=>r[s],enumerable:!(d=g(r,s))||d.enumerable});return n};var E=n=>h(o({},"__esModule",{value:!0}),n);var v={};P(v,{InMessageQueryEnum:()=>l,OutMessageResponseEnum:()=>c,SecureChannelEventType:()=>y,SecureChannelOperationEnum:()=>i});module.exports=E(v);var i=(t=>(t.GenuineCheck="GenuineCheck",t.ListInstalledApps="ListInstalledApps",t.UpdateMcu="UpdateMcu",t.UpdateFirmware="UpdateFirmware",t.InstallApp="InstallApp",t.UninstallApp="UninstallApp",t))(i||{}),l=(p=>(p.EXCHANGE="exchange",p.BULK="bulk",p.ERROR="error",p.WARNING="warning",p.SUCCESS="success",p))(l||{}),c=(a=>(a.SUCCESS="success",a.ERROR="error",a))(c||{}),y=(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))(y||{});0&&(module.exports={InMessageQueryEnum,OutMessageResponseEnum,SecureChannelEventType,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": ["import { type SecureChannelError } from \"@internal/secure-channel/model/Errors\";\n\nexport enum SecureChannelOperationEnum {\n GenuineCheck = \"GenuineCheck\",\n ListInstalledApps = \"ListInstalledApps\",\n UpdateMcu = \"UpdateMcu\",\n UpdateFirmware = \"UpdateFirmware\",\n InstallApp = \"InstallApp\",\n UninstallApp = \"UninstallApp\",\n}\n\n/**\n * The message that will be received from the server by the secure channel.\n */\nexport type InMessageType = {\n uuid: string;\n session: string;\n query: InMessageQueryEnum;\n nonce: number;\n data: unknown;\n result?: unknown;\n};\n\nexport enum InMessageQueryEnum {\n EXCHANGE = \"exchange\",\n BULK = \"bulk\",\n ERROR = \"error\",\n WARNING = \"warning\",\n SUCCESS = \"success\",\n}\n\n/**\n * The message that will be sent to the server by the secure channel.\n */\nexport type OutMessageType = {\n nonce: number;\n response: OutMessageResponseEnum;\n data: string;\n};\n\nexport enum OutMessageResponseEnum {\n SUCCESS = \"success\",\n ERROR = \"error\",\n}\n\n/**\n * The all event types that can be emitted to the client by the secure channel.\n *\n */\nexport enum SecureChannelEventType {\n Opened = \"opened\",\n Closed = \"closed\",\n PermissionRequested = \"permission-requested\",\n PermissionGranted = \"permission-granted\",\n PreExchange = \"pre-exchange\",\n Exchange = \"exchange\",\n Progress = \"progress\",\n Warning = \"warning\",\n Error = \"error\",\n Result = \"result\",\n}\n\n/**\n * The possible payload that will be sent to the client when a secure channel event occurs.\n */\nexport type SecureChannelEventPayload = {\n PreExchange: { nonce: number; apdu: Uint8Array };\n Exchange: {\n nonce: number;\n apdu: Uint8Array;\n data: Uint8Array;\n status: Uint8Array;\n };\n Progress: { progress: number; index: number; total: number };\n Warning: { message: string };\n Result: unknown;\n};\n\n/**\n * The event type that will be emitted to the client when a secure channel event occurs.\n */\nexport type SecureChannelEvent =\n | {\n type: SecureChannelEventType.Opened;\n }\n | {\n type: SecureChannelEventType.Closed;\n }\n | {\n type: SecureChannelEventType.PermissionRequested;\n }\n | {\n type: SecureChannelEventType.PermissionGranted;\n }\n | {\n type: SecureChannelEventType.PreExchange;\n payload: SecureChannelEventPayload[\"PreExchange\"];\n }\n | {\n type: SecureChannelEventType.Exchange;\n payload: SecureChannelEventPayload[\"Exchange\"];\n }\n | {\n type: SecureChannelEventType.Progress;\n payload: SecureChannelEventPayload[\"Progress\"];\n }\n | {\n type: SecureChannelEventType.Warning;\n payload: SecureChannelEventPayload[\"Warning\"];\n }\n | {\n type: SecureChannelEventType.Error;\n error: SecureChannelError;\n }\n | {\n type: SecureChannelEventType.Result;\n payload: SecureChannelEventPayload[\"Result\"];\n };\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,2BAAAC,EAAA,2BAAAC,EAAA,+BAAAC,IAAA,eAAAC,EAAAN,GAEO,IAAKK,OACVA,EAAA,aAAe,eACfA,EAAA,kBAAoB,oBACpBA,EAAA,UAAY,YACZA,EAAA,eAAiB,iBACjBA,EAAA,WAAa,aACbA,EAAA,aAAe,eANLA,OAAA,IAqBAH,OACVA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,QAAU,UALAA,OAAA,IAiBAC,OACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QAFEA,OAAA,IASAC,OACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,oBAAsB,uBACtBA,EAAA,kBAAoB,qBACpBA,EAAA,YAAc,eACdA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAVCA,OAAA",
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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,2BAAAC,EAAA,2BAAAC,EAAA,+BAAAC,IAAA,eAAAC,EAAAN,GAEO,IAAKK,OACVA,EAAA,aAAe,eACfA,EAAA,kBAAoB,oBACpBA,EAAA,UAAY,YACZA,EAAA,eAAiB,iBACjBA,EAAA,WAAa,aACbA,EAAA,aAAe,eANLA,OAAA,IAqBAH,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": ["types_exports", "__export", "InMessageQueryEnum", "OutMessageResponseEnum", "SecureChannelEventType", "SecureChannelOperationEnum", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var c=(e,n)=>{for(var t in n)o(e,t,{get:n[t],enumerable:!0})},m=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of a(n))!E.call(e,r)&&r!==t&&o(e,r,{get:()=>n[r],enumerable:!(i=u(n,r))||i.enumerable});return e};var s=e=>m(o({},"__esModule",{value:!0}),e);var x={};c(x,{isDeviceGenuine:()=>p,willRequestPermission:()=>f});module.exports=s(x);var l=require("./constants");function f(e){return e[0]===224&&e[1]===81}function p(e){return e===l.GENUINE_DEVICE_RESULT}0&&(module.exports={isDeviceGenuine,willRequestPermission});
1
+ "use strict";var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var s=(e,r)=>{for(var t in r)i(e,t,{get:r[t],enumerable:!0})},d=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of a(r))!p.call(e,n)&&n!==t&&i(e,n,{get:()=>r[n],enumerable:!(o=c(r,n))||o.enumerable});return e};var x=e=>d(i({},"__esModule",{value:!0}),e);var A={};s(A,{extractPublicKey:()=>m,isDeviceGenuine:()=>E,isGetCertificateApdu:()=>f,willRequestPermission:()=>y});module.exports=x(A);var u=require("../apdu/utils/ApduParser"),l=require("../secure-channel/constants");function y(e){return e[0]===224&&e[1]===81}function f(e){return e[0]===224&&e[1]===82}function m(e){try{const r=new u.ApduParser(e);return r.extractFieldLVEncoded()?r.extractFieldLVEncoded()??null:null}catch{return null}}function E(e){return e===l.GENUINE_DEVICE_RESULT}0&&(module.exports={extractPublicKey,isDeviceGenuine,isGetCertificateApdu,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 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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,0BAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAsC,uBAU/B,SAASF,EAAsBG,EAA2B,CAC/D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CASO,SAASJ,EAAgBK,EAA8C,CAC5E,OAAOA,IAAY,uBACrB",
6
- "names": ["utils_exports", "__export", "isDeviceGenuine", "willRequestPermission", "__toCommonJS", "import_constants", "apdu", "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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,oBAAAC,EAAA,yBAAAC,EAAA,0BAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAA2B,sCAE3BC,EAAsC,yCAW/B,SAASH,EAAsBI,EAA2B,CAC/D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CAUO,SAASL,EAAqBK,EAA2B,CAC9D,OAAOA,EAAK,CAAC,IAAM,KAAQA,EAAK,CAAC,IAAM,EACzC,CAQO,SAASP,EACdQ,EACmB,CACnB,GAAI,CACF,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAI1C,OADeC,EAAO,sBAAsB,EAM1BA,EAAO,sBAAsB,GAC3B,KALX,IAMX,MAAiB,CACf,OAAO,IACT,CACF,CASO,SAASR,EAAgBS,EAA8C,CAC5E,OAAOA,IAAY,uBACrB",
6
+ "names": ["utils_exports", "__export", "extractPublicKey", "isDeviceGenuine", "isGetCertificateApdu", "willRequestPermission", "__toCommonJS", "import_ApduParser", "import_constants", "apdu", "apduResponse", "parser", "payload"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("./utils");describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const i=new Uint8Array([224,81,0,0,0]);expect((0,e.willRequestPermission)(i)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const i=new Uint8Array([224,82,0,0,0]);expect((0,e.willRequestPermission)(i)).toBe(!1)})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect((0,e.isDeviceGenuine)("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect((0,e.isDeviceGenuine)("not genuine")).toBe(!1)})});
1
+ "use strict";var n=require("../device-session/ApduResponse"),e=require("./utils");describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const x=new Uint8Array([224,81,0,0,0]);expect((0,e.willRequestPermission)(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((0,e.willRequestPermission)(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((0,e.isGetCertificateApdu)(x)).toBe(!0)}),it("should return true for GetCertificate with different P1 and P2",()=>{const x=new Uint8Array([224,82,128,1,0]);expect((0,e.isGetCertificateApdu)(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((0,e.isGetCertificateApdu)(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]),i=new n.ApduResponse({statusCode:new Uint8Array([144,0]),data:x}),t=(0,e.extractPublicKey)(i);expect(t).not.toBeNull(),expect(t?.length).toBe(65),expect(t?.[0]).toBe(4),expect(t?.[64]).toBe(81)}),it("should return null for invalid response with missing header",()=>{const x=new n.ApduResponse({statusCode:new Uint8Array([144,0]),data:new Uint8Array([])}),i=(0,e.extractPublicKey)(x);expect(i).toBeNull()}),it("should return null for invalid response with missing public key",()=>{const x=new Uint8Array([7,74,7,161,82,230,187,193]),i=new n.ApduResponse({statusCode:new Uint8Array([144,0]),data:x}),t=(0,e.extractPublicKey)(i);expect(t).toBeNull()})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect((0,e.isDeviceGenuine)("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect((0,e.isDeviceGenuine)("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 { isDeviceGenuine, willRequestPermission } from \"./utils\";\n\ndescribe(\"willRequestPermission\", () => {\n it(\"should return true if the APDU is a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(false);\n });\n});\n\ndescribe(\"isDeviceGenuine\", () => {\n it(\"should return true if the device is genuine\", () => {\n const payload = \"0000\";\n expect(isDeviceGenuine(payload)).toBe(true);\n });\n it(\"should return false if the device is not genuine\", () => {\n const payload = \"not genuine\";\n expect(isDeviceGenuine(payload)).toBe(false);\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAuD,mBAEvD,SAAS,wBAAyB,IAAM,CACtC,GAAG,yDAA0D,IAAM,CACjE,MAAMC,EAAO,IAAI,WAAW,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAC1D,UAAO,yBAAsBA,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,UAAO,yBAAsBA,CAAI,CAAC,EAAE,KAAK,EAAK,CAChD,CAAC,CACH,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,GAAG,8CAA+C,IAAM,CAEtD,UAAO,mBADS,MACc,CAAC,EAAE,KAAK,EAAI,CAC5C,CAAC,EACD,GAAG,mDAAoD,IAAM,CAE3D,UAAO,mBADS,aACc,CAAC,EAAE,KAAK,EAAK,CAC7C,CAAC,CACH,CAAC",
6
- "names": ["import_utils", "apdu"]
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": ["import_ApduResponse", "import_utils", "apdu", "responseData", "response", "publicKey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var i in e)d(o,i,{get:e[i],enumerable:!0})},y=(o,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!p.call(o,n)&&n!==i&&d(o,n,{get:()=>e[n],enumerable:!(t=r(e,n))||t.enumerable});return o};var a=o=>y(d({},"__esModule",{value:!0}),o);var D={};l(D,{ConnectedDevice:()=>v});module.exports=a(D);class v{id;sessionId;modelId;name;type;constructor({transportConnectedDevice:{id:e,deviceModel:{id:i,productName:t},type:n},sessionId:c}){this.id=e,this.sessionId=c,this.modelId=i,this.name=t,this.type=n}}0&&(module.exports={ConnectedDevice});
1
+ "use strict";var r=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var y=(o,e)=>{for(var t in e)r(o,t,{get:e[t],enumerable:!0})},v=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!a.call(o,n)&&n!==t&&r(o,n,{get:()=>e[n],enumerable:!(i=p(e,n))||i.enumerable});return o};var D=o=>v(r({},"__esModule",{value:!0}),o);var m={};y(m,{ConnectedDevice:()=>I});module.exports=D(m);class I{id;sessionId;modelId;name;type;transport;constructor({transportConnectedDevice:{id:e,deviceModel:{id:t,productName:i},type:n,transport:d,name:s},sessionId:c}){this.id=e,this.sessionId=c,this.modelId=t,this.name=s??i,this.type=n,this.transport=d}}0&&(module.exports={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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAUO,MAAME,CAAgB,CACX,GACA,UACA,QACA,KACA,KAEhB,YAAY,CACV,yBAA0B,CACxB,GAAAE,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_exports", "__export", "ConnectedDevice", "__toCommonJS", "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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAUO,MAAME,CAAgB,CACX,GACA,UACA,QACA,KACA,KACA,UAEhB,YAAY,CACV,yBAA0B,CACxB,GAAAE,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_exports", "__export", "ConnectedDevice", "__toCommonJS", "id", "deviceModelId", "productName", "type", "transport", "name", "sessionId"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var r in e)s(o,r,{get:e[r],enumerable:!0})},u=(o,e,r,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!i.call(o,t)&&t!==r&&s(o,t,{get:()=>e[t],enumerable:!(d=c(e,t))||d.enumerable});return o};var p=o=>u(s({},"__esModule",{value:!0}),o);var z={};l(z,{AlreadySendingApduError:()=>f,DeviceAlreadyConnectedError:()=>E,DeviceDisconnectedBeforeSendingApdu:()=>R,DeviceDisconnectedWhileSendingError:()=>C,DeviceNotInitializedError:()=>m,DeviceNotRecognizedError:()=>y,DisconnectError:()=>_,GeneralDmkError:()=>n,NoAccessibleDeviceError:()=>x,NoTransportProvidedError:()=>h,NoTransportsProvidedError:()=>N,OpeningConnectionError:()=>v,ReconnectionFailedError:()=>S,SendApduConcurrencyError:()=>D,SendApduEmptyResponseError:()=>A,SendApduTimeoutError:()=>w,TransportAlreadyExistsError:()=>T,TransportNotSupportedError:()=>k,UnknownDeviceError:()=>g});module.exports=p(z);class n{_tag="GeneralDmkError";originalError;constructor(e){e instanceof Error?this.originalError=e:e!==void 0&&(this.originalError=new Error(String(e)))}}class E extends n{constructor(r){super(r);this.err=r}_tag="DeviceAlreadyDiscoveredError"}class y extends n{constructor(r){super(r);this.err=r}_tag="DeviceNotRecognizedError"}class x extends n{constructor(r){super(r);this.err=r}_tag="NoAccessibleDeviceError"}class v extends n{_tag="ConnectionOpeningError";constructor(e){super(e)}}class g extends n{constructor(r){super(r);this.err=r}_tag="UnknownDeviceError"}class k extends n{constructor(r){super(r);this.err=r}_tag="TransportNotSupportedError"}class D extends n{constructor(r){super(r);this.err=r}_tag="SendApduConcurrencyError"}class w extends n{constructor(r){super(r);this.err=r}_tag="SendApduTimeoutError"}class A extends n{constructor(r){super(r);this.err=r}_tag="SendApduEmptyResponseError"}class _ extends n{constructor(r){super(r);this.err=r}_tag="DisconnectError"}class S extends n{constructor(r){super(r);this.err=r}_tag="ReconnectionFailedError"}class m extends n{constructor(r){super(r);this.err=r}_tag="DeviceNotInitializedError"}class N extends n{constructor(r){super(r);this.err=r}_tag="NoTransportsProvidedError"}class T extends n{constructor(r){super(r);this.err=r}_tag="TransportAlreadyExistsError"}class C extends n{constructor(r){super(r);this.err=r}_tag="DeviceDisconnectedWhileSendingError"}class f extends n{constructor(r){super(r);this.err=r}_tag="AlreadySendingApduError"}class R extends n{constructor(r){super(r);this.err=r}_tag="DeviceDisconnectedBeforeSendingApdu"}class h extends n{constructor(r){super(r);this.err=r}_tag="NoTransportProvidedError"}0&&(module.exports={AlreadySendingApduError,DeviceAlreadyConnectedError,DeviceDisconnectedBeforeSendingApdu,DeviceDisconnectedWhileSendingError,DeviceNotInitializedError,DeviceNotRecognizedError,DisconnectError,GeneralDmkError,NoAccessibleDeviceError,NoTransportProvidedError,NoTransportsProvidedError,OpeningConnectionError,ReconnectionFailedError,SendApduConcurrencyError,SendApduEmptyResponseError,SendApduTimeoutError,TransportAlreadyExistsError,TransportNotSupportedError,UnknownDeviceError});
1
+ "use strict";var d=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var u=(o,e)=>{for(var r in e)d(o,r,{get:e[r],enumerable:!0})},l=(o,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!i.call(o,t)&&t!==r&&d(o,t,{get:()=>e[t],enumerable:!(s=c(e,t))||s.enumerable});return o};var p=o=>l(d({},"__esModule",{value:!0}),o);var P={};u(P,{AlreadySendingApduError:()=>R,DeviceAlreadyConnectedError:()=>E,DeviceDisconnectedBeforeSendingApdu:()=>h,DeviceDisconnectedWhileSendingError:()=>f,DeviceNotInitializedError:()=>N,DeviceNotRecognizedError:()=>y,DisconnectError:()=>m,GeneralDmkError:()=>n,NoAccessibleDeviceError:()=>x,NoTransportProvidedError:()=>z,NoTransportsProvidedError:()=>T,OpeningConnectionError:()=>v,ReconnectionFailedError:()=>S,SendApduConcurrencyError:()=>D,SendApduEmptyResponseError:()=>A,SendApduTimeoutError:()=>w,SendCommandTimeoutError:()=>_,TransportAlreadyExistsError:()=>C,TransportNotSupportedError:()=>k,UnknownDeviceError:()=>g});module.exports=p(P);class n{_tag="GeneralDmkError";originalError;constructor(e){e instanceof Error?this.originalError=e:e!==void 0&&(this.originalError=new Error(String(e)))}}class E extends n{constructor(r){super(r);this.err=r}_tag="DeviceAlreadyDiscoveredError"}class y extends n{constructor(r){super(r);this.err=r}_tag="DeviceNotRecognizedError"}class x extends n{constructor(r){super(r);this.err=r}_tag="NoAccessibleDeviceError"}class v extends n{_tag="ConnectionOpeningError";constructor(e){super(e)}}class g extends n{constructor(r){super(r);this.err=r}_tag="UnknownDeviceError"}class k extends n{constructor(r){super(r);this.err=r}_tag="TransportNotSupportedError"}class D extends n{constructor(r){super(r);this.err=r}_tag="SendApduConcurrencyError"}class w extends n{constructor(r){super(r);this.err=r}_tag="SendApduTimeoutError"}class _ extends n{constructor(r){super(r);this.err=r}_tag="SendCommandTimeoutError"}class A extends n{constructor(r){super(r);this.err=r}_tag="SendApduEmptyResponseError"}class m extends n{constructor(r){super(r);this.err=r}_tag="DisconnectError"}class S extends n{constructor(r){super(r);this.err=r}_tag="ReconnectionFailedError"}class N extends n{constructor(r){super(r);this.err=r}_tag="DeviceNotInitializedError"}class T extends n{constructor(r){super(r);this.err=r}_tag="NoTransportsProvidedError"}class C extends n{constructor(r){super(r);this.err=r}_tag="TransportAlreadyExistsError"}class f extends n{constructor(r){super(r);this.err=r}_tag="DeviceDisconnectedWhileSendingError"}class R extends n{constructor(r){super(r);this.err=r}_tag="AlreadySendingApduError"}class h extends n{constructor(r){super(r);this.err=r}_tag="DeviceDisconnectedBeforeSendingApdu"}class z extends n{constructor(r){super(r);this.err=r}_tag="NoTransportProvidedError"}0&&(module.exports={AlreadySendingApduError,DeviceAlreadyConnectedError,DeviceDisconnectedBeforeSendingApdu,DeviceDisconnectedWhileSendingError,DeviceNotInitializedError,DeviceNotRecognizedError,DisconnectError,GeneralDmkError,NoAccessibleDeviceError,NoTransportProvidedError,NoTransportsProvidedError,OpeningConnectionError,ReconnectionFailedError,SendApduConcurrencyError,SendApduEmptyResponseError,SendApduTimeoutError,SendCommandTimeoutError,TransportAlreadyExistsError,TransportNotSupportedError,UnknownDeviceError});
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/transport/model/Errors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport type ConnectError =\n | UnknownDeviceError\n | OpeningConnectionError\n | DeviceAlreadyConnectedError;\n\nexport class GeneralDmkError implements DmkError {\n _tag = \"GeneralDmkError\";\n originalError?: unknown;\n constructor(err?: unknown) {\n if (err instanceof Error) {\n this.originalError = err;\n } else if (err !== undefined) {\n this.originalError = new Error(String(err));\n }\n }\n}\n\nexport class DeviceAlreadyConnectedError extends GeneralDmkError {\n override readonly _tag = \"DeviceAlreadyDiscoveredError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceNotRecognizedError extends GeneralDmkError {\n override readonly _tag = \"DeviceNotRecognizedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoAccessibleDeviceError extends GeneralDmkError {\n override readonly _tag = \"NoAccessibleDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class OpeningConnectionError extends GeneralDmkError {\n override _tag = \"ConnectionOpeningError\";\n constructor(err?: unknown) {\n super(err);\n }\n}\n\nexport class UnknownDeviceError extends GeneralDmkError {\n override readonly _tag = \"UnknownDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class TransportNotSupportedError extends GeneralDmkError {\n override readonly _tag = \"TransportNotSupportedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\nexport class SendApduConcurrencyError extends GeneralDmkError {\n override readonly _tag = \"SendApduConcurrencyError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendApduTimeoutError extends GeneralDmkError {\n override readonly _tag = \"SendApduTimeoutError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendApduEmptyResponseError extends GeneralDmkError {\n override readonly _tag = \"SendApduEmptyResponseError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DisconnectError extends GeneralDmkError {\n override readonly _tag = \"DisconnectError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class ReconnectionFailedError extends GeneralDmkError {\n override readonly _tag = \"ReconnectionFailedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceNotInitializedError extends GeneralDmkError {\n override readonly _tag = \"DeviceNotInitializedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoTransportsProvidedError extends GeneralDmkError {\n override readonly _tag = \"NoTransportsProvidedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class TransportAlreadyExistsError extends GeneralDmkError {\n override readonly _tag = \"TransportAlreadyExistsError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceDisconnectedWhileSendingError extends GeneralDmkError {\n override readonly _tag = \"DeviceDisconnectedWhileSendingError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class AlreadySendingApduError extends GeneralDmkError {\n override readonly _tag = \"AlreadySendingApduError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceDisconnectedBeforeSendingApdu extends GeneralDmkError {\n override readonly _tag = \"DeviceDisconnectedBeforeSendingApdu\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoTransportProvidedError extends GeneralDmkError {\n override readonly _tag = \"NoTransportProvidedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Errors_exports", "__export", "AlreadySendingApduError", "DeviceAlreadyConnectedError", "DeviceDisconnectedBeforeSendingApdu", "DeviceDisconnectedWhileSendingError", "DeviceNotInitializedError", "DeviceNotRecognizedError", "DisconnectError", "GeneralDmkError", "NoAccessibleDeviceError", "NoTransportProvidedError", "NoTransportsProvidedError", "OpeningConnectionError", "ReconnectionFailedError", "SendApduConcurrencyError", "SendApduEmptyResponseError", "SendApduTimeoutError", "TransportAlreadyExistsError", "TransportNotSupportedError", "UnknownDeviceError", "__toCommonJS", "err"]
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport type ConnectError =\n | UnknownDeviceError\n | OpeningConnectionError\n | DeviceAlreadyConnectedError;\n\nexport class GeneralDmkError implements DmkError {\n _tag = \"GeneralDmkError\";\n originalError?: unknown;\n constructor(err?: unknown) {\n if (err instanceof Error) {\n this.originalError = err;\n } else if (err !== undefined) {\n this.originalError = new Error(String(err));\n }\n }\n}\n\nexport class DeviceAlreadyConnectedError extends GeneralDmkError {\n override readonly _tag = \"DeviceAlreadyDiscoveredError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceNotRecognizedError extends GeneralDmkError {\n override readonly _tag = \"DeviceNotRecognizedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoAccessibleDeviceError extends GeneralDmkError {\n override readonly _tag = \"NoAccessibleDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class OpeningConnectionError extends GeneralDmkError {\n override _tag = \"ConnectionOpeningError\";\n constructor(err?: unknown) {\n super(err);\n }\n}\n\nexport class UnknownDeviceError extends GeneralDmkError {\n override readonly _tag = \"UnknownDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class TransportNotSupportedError extends GeneralDmkError {\n override readonly _tag = \"TransportNotSupportedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\nexport class SendApduConcurrencyError extends GeneralDmkError {\n override readonly _tag = \"SendApduConcurrencyError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendApduTimeoutError extends GeneralDmkError {\n override readonly _tag = \"SendApduTimeoutError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendCommandTimeoutError extends GeneralDmkError {\n override readonly _tag = \"SendCommandTimeoutError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendApduEmptyResponseError extends GeneralDmkError {\n override readonly _tag = \"SendApduEmptyResponseError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DisconnectError extends GeneralDmkError {\n override readonly _tag = \"DisconnectError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class ReconnectionFailedError extends GeneralDmkError {\n override readonly _tag = \"ReconnectionFailedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceNotInitializedError extends GeneralDmkError {\n override readonly _tag = \"DeviceNotInitializedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoTransportsProvidedError extends GeneralDmkError {\n override readonly _tag = \"NoTransportsProvidedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class TransportAlreadyExistsError extends GeneralDmkError {\n override readonly _tag = \"TransportAlreadyExistsError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceDisconnectedWhileSendingError extends GeneralDmkError {\n override readonly _tag = \"DeviceDisconnectedWhileSendingError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class AlreadySendingApduError extends GeneralDmkError {\n override readonly _tag = \"AlreadySendingApduError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DeviceDisconnectedBeforeSendingApdu extends GeneralDmkError {\n override readonly _tag = \"DeviceDisconnectedBeforeSendingApdu\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoTransportProvidedError extends GeneralDmkError {\n override readonly _tag = \"NoTransportProvidedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Errors_exports", "__export", "AlreadySendingApduError", "DeviceAlreadyConnectedError", "DeviceDisconnectedBeforeSendingApdu", "DeviceDisconnectedWhileSendingError", "DeviceNotInitializedError", "DeviceNotRecognizedError", "DisconnectError", "GeneralDmkError", "NoAccessibleDeviceError", "NoTransportProvidedError", "NoTransportsProvidedError", "OpeningConnectionError", "ReconnectionFailedError", "SendApduConcurrencyError", "SendApduEmptyResponseError", "SendApduTimeoutError", "SendCommandTimeoutError", "TransportAlreadyExistsError", "TransportNotSupportedError", "UnknownDeviceError", "__toCommonJS", "err"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var r in e)p(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of c(e))!s.call(t,o)&&o!==r&&p(t,o,{get:()=>e[o],enumerable:!(n=d(e,o))||n.enumerable});return t};var a=t=>l(p({},"__esModule",{value:!0}),t);var T={};y(T,{TransportConnectedDevice:()=>u});module.exports=a(T);class u{id;deviceModel;sendApdu;type;transport;constructor({id:e,deviceModel:r,type:n,transport:o,sendApdu:i}){this.id=e,this.deviceModel=r,this.sendApdu=i,this.type=n,this.transport=o}}0&&(module.exports={TransportConnectedDevice});
1
+ "use strict";var p=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var a=(t,e)=>{for(var r in e)p(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!y.call(t,n)&&n!==r&&p(t,n,{get:()=>e[n],enumerable:!(o=c(e,n))||o.enumerable});return t};var u=t=>l(p({},"__esModule",{value:!0}),t);var T={};a(T,{TransportConnectedDevice:()=>m});module.exports=u(T);class m{id;deviceModel;sendApdu;type;transport;name;constructor({id:e,deviceModel:r,type:o,transport:n,sendApdu:i,name:d}){this.id=e,this.deviceModel=r,this.sendApdu=i,this.type=o,this.transport=n,this.name=d}}0&&(module.exports={TransportConnectedDevice});
2
2
  //# sourceMappingURL=TransportConnectedDevice.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/transport/model/TransportConnectedDevice.ts"],
4
- "sourcesContent": ["import { type DeviceId } from \"@api/device/DeviceModel\";\nimport { type TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type SendApduFnType } from \"@api/transport/model/DeviceConnection\";\nimport { type TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\n\n/**\n * The internal connected device.\n */\nexport type ConnectedDeviceConstructorArgs = {\n id: DeviceId;\n deviceModel: TransportDeviceModel;\n type: ConnectionType;\n transport: TransportIdentifier;\n sendApdu: SendApduFnType;\n};\n\nexport class TransportConnectedDevice {\n public readonly id: DeviceId;\n public readonly deviceModel: TransportDeviceModel;\n public readonly sendApdu: SendApduFnType;\n public readonly type: ConnectionType;\n public readonly transport: TransportIdentifier;\n\n constructor({\n id,\n deviceModel,\n type,\n transport,\n sendApdu,\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.deviceModel = deviceModel;\n this.sendApdu = sendApdu;\n this.type = type;\n this.transport = transport;\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAiBO,MAAME,CAAyB,CACpB,GACA,YACA,SACA,KACA,UAEhB,YAAY,CACV,GAAAE,EACA,YAAAC,EACA,KAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAAmC,CACjC,KAAK,GAAKJ,EACV,KAAK,YAAcC,EACnB,KAAK,SAAWG,EAChB,KAAK,KAAOF,EACZ,KAAK,UAAYC,CACnB,CACF",
6
- "names": ["TransportConnectedDevice_exports", "__export", "TransportConnectedDevice", "__toCommonJS", "id", "deviceModel", "type", "transport", "sendApdu"]
4
+ "sourcesContent": ["import { type DeviceId } from \"@api/device/DeviceModel\";\nimport { type TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type SendApduFnType } from \"@api/transport/model/DeviceConnection\";\nimport { type TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\n\n/**\n * The internal connected device.\n */\nexport type ConnectedDeviceConstructorArgs = {\n id: DeviceId;\n deviceModel: TransportDeviceModel;\n type: ConnectionType;\n transport: TransportIdentifier;\n sendApdu: SendApduFnType;\n name?: string;\n};\n\nexport class TransportConnectedDevice {\n public readonly id: DeviceId;\n public readonly deviceModel: TransportDeviceModel;\n public readonly sendApdu: SendApduFnType;\n public readonly type: ConnectionType;\n public readonly transport: TransportIdentifier;\n public readonly name?: string;\n\n constructor({\n id,\n deviceModel,\n type,\n transport,\n sendApdu,\n name,\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.deviceModel = deviceModel;\n this.sendApdu = sendApdu;\n this.type = type;\n this.transport = transport;\n this.name = name;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAkBO,MAAME,CAAyB,CACpB,GACA,YACA,SACA,KACA,UACA,KAEhB,YAAY,CACV,GAAAE,EACA,YAAAC,EACA,KAAAC,EACA,UAAAC,EACA,SAAAC,EACA,KAAAC,CACF,EAAmC,CACjC,KAAK,GAAKL,EACV,KAAK,YAAcC,EACnB,KAAK,SAAWG,EAChB,KAAK,KAAOF,EACZ,KAAK,UAAYC,EACjB,KAAK,KAAOE,CACd,CACF",
6
+ "names": ["TransportConnectedDevice_exports", "__export", "TransportConnectedDevice", "__toCommonJS", "id", "deviceModel", "type", "transport", "sendApdu", "name"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var p=(a,r,n,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of c(r))!o.call(a,t)&&t!==n&&i(a,t,{get:()=>r[t],enumerable:!(e=y(r,t))||e.enumerable});return a};var A=a=>p(i({},"__esModule",{value:!0}),a);var U={};module.exports=A(U);
2
+ //# sourceMappingURL=CryptoService.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/crypto/CryptoService.ts"],
4
+ "sourcesContent": ["/**\n * Simple crypto service abstraction for hashing operations\n */\nexport interface CryptoService {\n /**\n * Compute SHA3-256 hash of the input data\n * @param data - The input data to hash\n * @returns The SHA3-256 hash as a Uint8Array (32 bytes)\n */\n sha3_256(data: Uint8Array): Uint8Array;\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["CryptoService_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var c=(e,r)=>{for(var o in r)i(e,o,{get:r[o],enumerable:!0})},n=(e,r,o,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of a(r))!s.call(e,t)&&t!==o&&i(e,t,{get:()=>r[t],enumerable:!(p=y(r,t))||p.enumerable});return e};var l=e=>n(i({},"__esModule",{value:!0}),e);var C={};c(C,{NobleCryptoService:()=>v});module.exports=l(C);var m=require("@noble/hashes/sha3");class v{sha3_256(r){return(0,m.sha3_256)(r)}}0&&(module.exports={NobleCryptoService});
2
+ //# sourceMappingURL=NobleCryptoService.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/crypto/NobleCryptoService.ts"],
4
+ "sourcesContent": ["import { sha3_256 } from \"@noble/hashes/sha3\";\n\nimport { type CryptoService } from \"./CryptoService\";\n\n/**\n * Noble implementation of the crypto service\n */\nexport class NobleCryptoService implements CryptoService {\n sha3_256(data: Uint8Array): Uint8Array {\n return sha3_256(data);\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyB,8BAOlB,MAAMF,CAA4C,CACvD,SAASG,EAA8B,CACrC,SAAO,YAASA,CAAI,CACtB,CACF",
6
+ "names": ["NobleCryptoService_exports", "__export", "NobleCryptoService", "__toCommonJS", "import_sha3", "data"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./NobleCryptoService");describe("NobleCryptoService",()=>{let x;beforeEach(()=>{x=new e.NobleCryptoService}),describe("sha3_256",()=>{it("should compute SHA3-256 hash",()=>{const r=new Uint8Array([1,2,3,4]),c=x.sha3_256(r);expect(c).toStrictEqual(new Uint8Array([150,109,189,203,208,224,52,143,170,28,203,206,90,98,184,231,59,13,8,149,93,102,109,184,34,67,179,3,217,189,149,2]))})})});
2
+ //# sourceMappingURL=NobleCryptoService.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/crypto/NobleCryptoService.test.ts"],
4
+ "sourcesContent": ["import { NobleCryptoService } from \"./NobleCryptoService\";\n\ndescribe(\"NobleCryptoService\", () => {\n let cryptoService: NobleCryptoService;\n\n beforeEach(() => {\n cryptoService = new NobleCryptoService();\n });\n\n describe(\"sha3_256\", () => {\n it(\"should compute SHA3-256 hash\", () => {\n const input = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const hash = cryptoService.sha3_256(input);\n\n expect(hash).toStrictEqual(\n new Uint8Array([\n 0x96, 0x6d, 0xbd, 0xcb, 0xd0, 0xe0, 0x34, 0x8f, 0xaa, 0x1c, 0xcb,\n 0xce, 0x5a, 0x62, 0xb8, 0xe7, 0x3b, 0x0d, 0x08, 0x95, 0x5d, 0x66,\n 0x6d, 0xb8, 0x22, 0x43, 0xb3, 0x03, 0xd9, 0xbd, 0x95, 0x02,\n ]),\n );\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAmC,gCAEnC,SAAS,qBAAsB,IAAM,CACnC,IAAIC,EAEJ,WAAW,IAAM,CACfA,EAAgB,IAAI,oBACtB,CAAC,EAED,SAAS,WAAY,IAAM,CACzB,GAAG,+BAAgC,IAAM,CACvC,MAAMC,EAAQ,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EAC/CC,EAAOF,EAAc,SAASC,CAAK,EAEzC,OAAOC,CAAI,EAAE,cACX,IAAI,WAAW,CACb,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAC5D,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAC5D,IAAM,IAAM,GAAM,GAAM,IAAM,EAAM,IAAM,IAAM,IAAM,CACxD,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_NobleCryptoService", "cryptoService", "input", "hash"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var S=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var C=(r,e)=>{for(var t in e)S(r,t,{get:e[t],enumerable:!0})},D=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!A.call(r,o)&&o!==t&&S(r,o,{get:()=>e[o],enumerable:!(i=d(e,o))||i.enumerable});return r};var F=r=>D(S({},"__esModule",{value:!0}),r);var U={};C(U,{deviceSessionModuleFactory:()=>R});module.exports=F(U);var a=require("inversify"),u=require("../../../api/device-session/use-case/DisableDeviceSessionRefresher"),v=require("../../device-session/service/DefaultApduReceiverService"),m=require("../../device-session/service/DefaultApduSenderService"),g=require("../../device-session/service/DefaultDeviceSessionService"),l=require("../../device-session/use-case/CloseSessionsUseCase"),f=require("../../device-session/use-case/GetDeviceSessionStateUseCase"),p=require("../../logger-publisher/di/loggerTypes"),n=require("../../../../src/di.stub"),s=require("./deviceSessionTypes");const R=({stub:r}={stub:!1})=>new a.ContainerModule(({bind:e,rebindSync:t})=>{e(s.deviceSessionTypes.ApduSenderServiceFactory).toFactory(i=>{const o=i.get(p.loggerTypes.LoggerPublisherServiceFactory);return c=>new m.DefaultApduSenderService(c,o)}),e(s.deviceSessionTypes.ApduReceiverServiceFactory).toFactory(i=>{const o=i.get(p.loggerTypes.LoggerPublisherServiceFactory);return(c={})=>new v.DefaultApduReceiverService(c,o)}),e(s.deviceSessionTypes.DeviceSessionService).to(g.DefaultDeviceSessionService).inSingletonScope(),e(s.deviceSessionTypes.GetDeviceSessionStateUseCase).to(f.GetDeviceSessionStateUseCase),e(s.deviceSessionTypes.CloseSessionsUseCase).to(l.CloseSessionsUseCase),e(s.deviceSessionTypes.DisableDeviceSessionRefresherUseCase).to(u.DisableDeviceSessionRefresherUseCase),r&&(t(s.deviceSessionTypes.GetDeviceSessionStateUseCase).to(n.StubUseCase),t(s.deviceSessionTypes.DisableDeviceSessionRefresherUseCase).to(n.StubUseCase))});0&&(module.exports={deviceSessionModuleFactory});
1
+ "use strict";var n=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var D=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},U=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of A(e))!d.call(o,s)&&s!==t&&n(o,s,{get:()=>e[s],enumerable:!(i=C(e,s))||i.enumerable});return o};var F=o=>U(n({},"__esModule",{value:!0}),o);var h={};D(h,{deviceSessionModuleFactory:()=>R});module.exports=F(h);var u=require("inversify"),S=require("../../../api/device-session/use-case/DisableDeviceSessionRefresher"),v=require("../../device-session/service/DefaultApduReceiverService"),m=require("../../device-session/service/DefaultApduSenderService"),f=require("../../device-session/service/DefaultDeviceSessionService"),g=require("../../device-session/use-case/CloseSessionsUseCase"),l=require("../../device-session/use-case/GetDeviceSessionStateUseCase"),y=require("../../device-session/use-case/UnsafeBypassIntentQueueUseCase"),p=require("../../logger-publisher/di/loggerTypes"),c=require("../../../../src/di.stub"),r=require("./deviceSessionTypes");const R=({stub:o}={stub:!1})=>new u.ContainerModule(({bind:e,rebindSync:t})=>{e(r.deviceSessionTypes.ApduSenderServiceFactory).toFactory(i=>{const s=i.get(p.loggerTypes.LoggerPublisherServiceFactory);return a=>new m.DefaultApduSenderService(a,s)}),e(r.deviceSessionTypes.ApduReceiverServiceFactory).toFactory(i=>{const s=i.get(p.loggerTypes.LoggerPublisherServiceFactory);return(a={})=>new v.DefaultApduReceiverService(a,s)}),e(r.deviceSessionTypes.DeviceSessionService).to(f.DefaultDeviceSessionService).inSingletonScope(),e(r.deviceSessionTypes.GetDeviceSessionStateUseCase).to(l.GetDeviceSessionStateUseCase),e(r.deviceSessionTypes.CloseSessionsUseCase).to(g.CloseSessionsUseCase),e(r.deviceSessionTypes.DisableDeviceSessionRefresherUseCase).to(S.DisableDeviceSessionRefresherUseCase),e(r.deviceSessionTypes.UnsafeBypassIntentQueueUseCase).to(y.UnsafeBypassIntentQueueUseCase),o&&(t(r.deviceSessionTypes.GetDeviceSessionStateUseCase).to(c.StubUseCase),t(r.deviceSessionTypes.DisableDeviceSessionRefresherUseCase).to(c.StubUseCase),t(r.deviceSessionTypes.UnsafeBypassIntentQueueUseCase).to(c.StubUseCase))});0&&(module.exports={deviceSessionModuleFactory});
2
2
  //# sourceMappingURL=deviceSessionModule.js.map