@ledgerhq/device-management-kit 0.0.0-rnble-transport-20250324094321 → 0.0.0-rnble-transport-20250331135728

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 (270) hide show
  1. package/README.md +21 -5
  2. package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
  3. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  4. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  5. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  6. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  7. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  8. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  9. package/lib/cjs/src/api/index.js +1 -1
  10. package/lib/cjs/src/api/index.js.map +3 -3
  11. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  12. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  13. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  14. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js +1 -1
  15. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js.map +3 -3
  16. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +2 -0
  17. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +7 -0
  18. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.js +2 -0
  19. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.js.map +7 -0
  20. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js +2 -0
  21. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +7 -0
  22. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  23. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.test.js +1 -1
  24. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.test.js.map +3 -3
  25. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  26. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  27. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +2 -0
  28. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +7 -0
  29. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.js +2 -0
  30. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.js.map +7 -0
  31. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js +2 -0
  32. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +7 -0
  33. package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
  34. package/lib/cjs/src/api/secure-channel/utils.test.js.map +2 -2
  35. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.test.js +1 -1
  36. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.test.js.map +3 -3
  37. package/lib/cjs/src/api/types.js +1 -1
  38. package/lib/cjs/src/api/types.js.map +1 -1
  39. package/lib/cjs/src/internal/device-session/data/DeviceSessionRefresherConst.js +1 -1
  40. package/lib/cjs/src/internal/device-session/data/DeviceSessionRefresherConst.js.map +3 -3
  41. package/lib/cjs/src/internal/device-session/model/DevicePinger.js +2 -0
  42. package/lib/cjs/src/internal/device-session/model/DevicePinger.js.map +7 -0
  43. package/lib/cjs/src/internal/device-session/model/DevicePinger.test.js +2 -0
  44. package/lib/cjs/src/internal/device-session/model/DevicePinger.test.js.map +7 -0
  45. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  46. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  47. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  48. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  49. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js +2 -0
  50. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +7 -0
  51. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.test.js +2 -0
  52. package/lib/cjs/src/internal/device-session/model/DeviceSessionEventDispatcher.test.js.map +7 -0
  53. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  54. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  55. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  56. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +3 -3
  57. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +2 -0
  58. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +7 -0
  59. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +2 -0
  60. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +7 -0
  61. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  62. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  63. package/lib/cjs/src/internal/device-session/service/MutexService.js +2 -0
  64. package/lib/cjs/src/internal/device-session/service/MutexService.js.map +7 -0
  65. package/lib/cjs/src/internal/device-session/service/MutexService.test.js +2 -0
  66. package/lib/cjs/src/internal/device-session/service/MutexService.test.js.map +7 -0
  67. package/lib/cjs/src/internal/device-session/service/RefresherService.js +1 -1
  68. package/lib/cjs/src/internal/device-session/service/RefresherService.js.map +3 -3
  69. package/lib/cjs/src/internal/device-session/service/RefresherService.test.js +1 -1
  70. package/lib/cjs/src/internal/device-session/service/RefresherService.test.js.map +3 -3
  71. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  72. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  73. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  74. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  75. package/lib/cjs/src/internal/device-session/utils/deviceSessionUtils.js +2 -0
  76. package/lib/cjs/src/internal/device-session/utils/deviceSessionUtils.js.map +7 -0
  77. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  78. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  79. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  80. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  81. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  82. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  83. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  84. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  85. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +1 -1
  86. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +3 -3
  87. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  88. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  89. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  90. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +2 -2
  91. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +1 -1
  92. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +2 -2
  93. package/lib/cjs/src/internal/secure-channel/model/Params.js +1 -1
  94. package/lib/cjs/src/internal/secure-channel/model/Params.js.map +1 -1
  95. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  96. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  97. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  98. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  99. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +1 -1
  100. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
  101. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +1 -1
  102. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  103. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  104. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  105. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  106. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  107. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  108. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  109. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  110. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  111. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  112. package/lib/esm/src/api/index.js +1 -1
  113. package/lib/esm/src/api/index.js.map +3 -3
  114. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  115. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  116. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  117. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js +1 -1
  118. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js.map +3 -3
  119. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +2 -0
  120. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +7 -0
  121. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.js +2 -0
  122. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.js.map +7 -0
  123. package/lib/esm/src/api/secure-channel/device-action/InstallApp/types.js +1 -0
  124. package/lib/esm/src/api/secure-channel/device-action/InstallApp/types.js.map +7 -0
  125. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  126. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.test.js +1 -1
  127. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.test.js.map +3 -3
  128. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  129. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +2 -0
  130. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +7 -0
  131. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.js +2 -0
  132. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.js.map +7 -0
  133. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/types.js +1 -0
  134. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/types.js.map +7 -0
  135. package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
  136. package/lib/esm/src/api/secure-channel/utils.test.js.map +2 -2
  137. package/lib/esm/src/api/transport/model/TransportConnectedDevice.test.js +1 -1
  138. package/lib/esm/src/api/transport/model/TransportConnectedDevice.test.js.map +3 -3
  139. package/lib/esm/src/internal/device-session/data/DeviceSessionRefresherConst.js +1 -1
  140. package/lib/esm/src/internal/device-session/data/DeviceSessionRefresherConst.js.map +3 -3
  141. package/lib/esm/src/internal/device-session/model/DevicePinger.js +2 -0
  142. package/lib/esm/src/internal/device-session/model/DevicePinger.js.map +7 -0
  143. package/lib/esm/src/internal/device-session/model/DevicePinger.test.js +2 -0
  144. package/lib/esm/src/internal/device-session/model/DevicePinger.test.js.map +7 -0
  145. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  146. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  147. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  148. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  149. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js +2 -0
  150. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.js.map +7 -0
  151. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.test.js +2 -0
  152. package/lib/esm/src/internal/device-session/model/DeviceSessionEventDispatcher.test.js.map +7 -0
  153. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  154. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +3 -3
  155. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  156. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +3 -3
  157. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +2 -0
  158. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +7 -0
  159. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +2 -0
  160. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +7 -0
  161. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  162. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  163. package/lib/esm/src/internal/device-session/service/MutexService.js +2 -0
  164. package/lib/esm/src/internal/device-session/service/MutexService.js.map +7 -0
  165. package/lib/esm/src/internal/device-session/service/MutexService.test.js +2 -0
  166. package/lib/esm/src/internal/device-session/service/MutexService.test.js.map +7 -0
  167. package/lib/esm/src/internal/device-session/service/RefresherService.js +1 -1
  168. package/lib/esm/src/internal/device-session/service/RefresherService.js.map +3 -3
  169. package/lib/esm/src/internal/device-session/service/RefresherService.test.js +1 -1
  170. package/lib/esm/src/internal/device-session/service/RefresherService.test.js.map +3 -3
  171. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  172. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  173. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  174. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  175. package/lib/esm/src/internal/device-session/utils/deviceSessionUtils.js +2 -0
  176. package/lib/esm/src/internal/device-session/utils/deviceSessionUtils.js.map +7 -0
  177. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  178. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  179. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  180. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  181. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  182. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  183. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  184. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  185. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +1 -1
  186. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +3 -3
  187. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  188. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  189. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  190. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +2 -2
  191. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +1 -1
  192. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +2 -2
  193. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  194. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  195. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  196. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  197. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js +1 -1
  198. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  199. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  200. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  201. package/lib/types/src/api/DeviceManagementKit.d.ts +5 -1
  202. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  203. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +4 -0
  204. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  205. package/lib/types/src/api/index.d.ts +2 -0
  206. package/lib/types/src/api/index.d.ts.map +1 -1
  207. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts +3 -3
  208. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
  209. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.d.ts +1 -0
  210. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts +8 -0
  211. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -0
  212. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.d.ts +2 -0
  213. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.test.d.ts.map +1 -0
  214. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +44 -0
  215. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -0
  216. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts +3 -3
  217. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
  218. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.test.d.ts +1 -0
  219. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +1 -3
  220. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
  221. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts +8 -0
  222. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -0
  223. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.d.ts +2 -0
  224. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.d.ts.map +1 -0
  225. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +41 -0
  226. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -0
  227. package/lib/types/src/api/types.d.ts +2 -0
  228. package/lib/types/src/api/types.d.ts.map +1 -1
  229. package/lib/types/src/internal/device-session/data/DeviceSessionRefresherConst.d.ts +6 -1
  230. package/lib/types/src/internal/device-session/data/DeviceSessionRefresherConst.d.ts.map +1 -1
  231. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts +18 -0
  232. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts.map +1 -0
  233. package/lib/types/src/internal/device-session/model/DevicePinger.test.d.ts +2 -0
  234. package/lib/types/src/internal/device-session/model/DevicePinger.test.d.ts.map +1 -0
  235. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +19 -11
  236. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  237. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts +2 -2
  238. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  239. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts +35 -0
  240. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.d.ts.map +1 -0
  241. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.test.d.ts +2 -0
  242. package/lib/types/src/internal/device-session/model/DeviceSessionEventDispatcher.test.d.ts.map +1 -0
  243. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +17 -79
  244. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
  245. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts +20 -0
  246. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -0
  247. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.test.d.ts +2 -0
  248. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.test.d.ts.map +1 -0
  249. package/lib/types/src/internal/device-session/service/MutexService.d.ts +7 -0
  250. package/lib/types/src/internal/device-session/service/MutexService.d.ts.map +1 -0
  251. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts +2 -0
  252. package/lib/types/src/internal/device-session/service/MutexService.test.d.ts.map +1 -0
  253. package/lib/types/src/internal/device-session/service/RefresherService.d.ts +7 -2
  254. package/lib/types/src/internal/device-session/service/RefresherService.d.ts.map +1 -1
  255. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts +3 -0
  256. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts.map +1 -0
  257. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +8 -1
  258. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  259. package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts +1 -1
  260. package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts.map +1 -1
  261. package/lib/types/src/internal/secure-channel/model/Params.d.ts +3 -5
  262. package/lib/types/src/internal/secure-channel/model/Params.d.ts.map +1 -1
  263. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +6 -6
  264. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
  265. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +39 -5
  266. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
  267. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +5 -1
  268. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts.map +1 -1
  269. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  270. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.ts"],
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetOsVersionCommand,\n type GetOsVersionResponse,\n} from \"@api/command/os/GetOsVersionCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { ListInstalledAppsDeviceAction } from \"@api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction\";\nimport { type InstalledApp } from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { ConnectToSecureChannelTask } from \"@api/secure-channel/task/ConnectToSecureChannelTask\";\nimport { SecureChannelEventType } from \"@api/secure-channel/task/types\";\nimport { type Input } from \"@api/secure-channel/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport {\n type MachineDependencies,\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppStateMachineInternalState,\n} from \"./types\";\n\nexport class UninstallAppDeviceAction extends XStateDeviceAction<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n> {\n override makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n > {\n type types = StateMachineTypes<\n UninstallAppDAOutput,\n UninstallAppDAInput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue,\n UninstallAppStateMachineInternalState\n >;\n\n const {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState,\n setDeviceSessionState,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n const listInstalledAppsMachine = new ListInstalledAppsDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listInstalledApps: listInstalledAppsMachine,\n goToDashboard: goToDashboardMachine,\n getOsVersion: fromPromise(getOsVersion),\n getAppsByHash: fromPromise(getAppsByHash),\n uninstallApp: fromObservable(uninstallApp),\n },\n guards: {\n hasError: (_) => _.context._internalState.error !== null,\n appNotInstalled: (_) =>\n !_.context._internalState.installedApps.some(\n (app) => app.name === _.context.input.appName,\n ),\n appNotFound: (_) =>\n _.context._internalState.appList.findIndex(\n (app) => app?.versionName === _.context.input.appName,\n ) === -1,\n isDepAppOfOther: (_) =>\n _.context._internalState.appList.some(\n (app) => app?.parentName === _.context.input.appName,\n ),\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"],\n }),\n }),\n assignAppNotFound: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall not found in manager API\",\n ),\n }),\n }),\n assignIsDepAppOfOther: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n \"App to uninstall is a dependency of another installed app\",\n ),\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEkB2sAuBDANjgggA6EAiYAbgJYDGY+1GlA9qgHRlW0BKYWEAngGIA2gAYAuolCEmsSoxZSQAD0QBGAJyjWADgDsAFg0A2HSb2iArMbUBmADQh+iAExrjrS6KuWNtte7Glga2AL6hjmiYuATEHDR0DMxsAOJMACpMJFiwABYARkxYAE4QghAsYKyUqORMANZVUBlZOQVFpWKSSCAycgqoSqoIxi6WrKJq1rYGNgaiBrOOzgi2th5qonouorYuo9YBBuGR6Nh4RKQUCfQDrGmZ2XmFJWVgxcVMxayEOFgYADMvgBbVjNR5tF6dCRKPryZJDRAHCZTYwzOYLJZOdR6DSeFy2MwBPaaXzGE4gKLnWJXTiJO4PVrPDoQADCuTA1HqIhhPThA0RCE2XlY+0semMomMBgsOjMyyRoh0E28BmClhc+0mxwilLOMUu8Vot2S9xaT3ar3ZnO5wjU3Wksnhih6w2F2jFEqlMqV8uxq0stlYgTlGg02wJOjCuqpBri12NSRY9zAGAA8rAAGrvOQscqVaq1BpNVMZ7PFXOoLqwp0C13qDVqVhaIK+HSifazNQK1YuPHGLTWQxabaLSwU2MXeN0k3JlKlrM55LWrk8h29WsI+tCjRqAysebSvY6TWagw6HvnvFeDsaGX6UR+Wx6Cf6qe0m5J1IL8uVle2+0a36LdQDdXd90PEIXBPU9zx7dFWD0LwxgMHYFkmckYzfGkjXpU15wwS4ABlKEwfNUCqGo6kaFNCOIEjMGrPlNxdUDXFscVRR0VFxXDJCL39PYgxcPRbD8NQ9DUOV9BfLDonfXDZ2-OjCAYjB-zXIDnUGbcRIkxDNEfEIwwCFx4MDYNjFMMxw01Qlo1OeScITPC51TYjSPUjlVztdd+RAlRXEkvQDK0O8xN3NQzP9HR9xvKxCT0E9Jj0WTdVQJgIDgJRJ2cmcvy0us2IQABaYwezK18nMNFylPYFyeD4FZHWA1jAoQVCezccYb02JDDPcQkqupGr8oZc1IRZQqAuGaDxhMfQxjsKMlQcf1NBcFVdlmPs9wJNVhrjD9E3GiFmStbz6mmtrhijTaFu4tZRJMSZzJCqNnyS9x5m2DRDoU2qv1osslza-ybvUNwg02DRLFi+YZnbSx4JE5sJO8Xc3CsWZMMckbp0-Bkf1B1B-2unTiokuxWGlJULHWWwOzGcymwMKnULEuzRn+vLCfw9z6M88nBR2VLRWQ6xxR0GxRhRpsb2fNYjDcXFZLxo7FKBgiPMwMnmNain2rGDiD01PdUs0NVu0EtUtq8KydginV1YBsbTQAZQAV2oWhYHgfXtJFsxtGsXbuMsCPdh7bjPG8AkNFi70-B50a+eTABRD4vmF3Tg88UZd3DyO1pWDj9wlCwLFMDQ+1xcdwlCIA */\n id: \"UninstallAppDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n appName: _.input.appName,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n installedApps: [],\n appList: [],\n getOsVersionResponse: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"ListInstalledApps\",\n },\n },\n ListInstalledApps: {\n invoke: {\n id: \"listInstalledApps\",\n src: \"listInstalledApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"ListInstalledAppsCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: ({ installedApps }) => ({\n ..._.context._internalState,\n installedApps,\n hasCheckedInstalledApps: true,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListInstalledAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Success\",\n guard: \"appNotInstalled\",\n },\n {\n target: \"GetAppsByHash\",\n },\n ],\n },\n GetAppsByHash: {\n invoke: {\n id: \"getAppsByHash\",\n src: \"getAppsByHash\",\n input: (_) => _.context._internalState.installedApps!,\n onDone: {\n target: \"GetAppsByHashCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf({\n Right: (apps) => ({\n ..._.context._internalState,\n appList: apps,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppsByHashCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Error\",\n guard: \"appNotFound\",\n actions: \"assignAppNotFound\",\n },\n {\n target: \"Error\",\n guard: \"isDepAppOfOther\",\n actions: \"assignIsDepAppOfOther\",\n },\n {\n target: \"GoToDashboard\",\n },\n ],\n },\n GoToDashboard: {\n invoke: {\n id: \"goToDashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction:\n _.event.snapshot.context.intermediateValue\n .requiredUserInteraction,\n }),\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<UninstallAppStateMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"GetOsVersion\",\n },\n ],\n },\n GetOsVersion: {\n invoke: {\n id: \"getOsVersion\",\n src: \"getOsVersion\",\n input: (_) => undefined,\n onDone: {\n target: \"GetOsVersionCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const currentState: DeviceSessionState =\n getDeviceSessionState();\n const isSecureConnectionAllowed =\n _.event.output.data.secureElementFlags\n .isSecureConnectionAllowed;\n if (\n currentState.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...currentState,\n isSecureConnectionAllowed,\n });\n }\n return {\n ..._.context._internalState,\n getOsVersionResponse: _.event.output.data,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n },\n },\n GetOsVersionCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"UninstallApp\",\n },\n ],\n },\n UninstallApp: {\n invoke: {\n id: \"uninstallApp\",\n src: \"uninstallApp\",\n input: (_) => ({\n deviceInfo: _.context._internalState.getOsVersionResponse!,\n app: _.context._internalState.appList.find(\n (app) => app?.versionName === _.context.input.appName,\n )!,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => {\n switch (_.event.snapshot.context?.type) {\n case SecureChannelEventType.PermissionRequested: {\n return {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n };\n }\n case SecureChannelEventType.PermissionGranted: {\n return {\n requiredUserInteraction: UserInteractionRequired.None,\n };\n }\n default:\n return {\n ..._.context.intermediateValue,\n };\n }\n },\n }),\n },\n onDone: {\n target: \"ListInstalledApps\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n description: \"App uninstalled successfully\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.error\n ? Left(context._internalState.error)\n : Right(void 0),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getOsVersion = () =>\n internalApi.sendCommand(new GetOsVersionCommand());\n\n const getAppsByHash = ({ input }: Input<InstalledApp[]>) => {\n const appHashes = input.map((app) => app.hash);\n return internalApi.getManagerApiService().getAppsByHash(appHashes);\n };\n\n const uninstallApp = ({\n input,\n }: Input<{\n deviceInfo: GetOsVersionResponse;\n app: Application;\n }>) => {\n const { deviceInfo, app } = input;\n const eitherConnection = internalApi\n .getSecureChannelService()\n .uninstallApp(deviceInfo, app);\n return new ConnectToSecureChannelTask(internalApi, {\n connection: eitherConnection,\n }).run();\n };\n\n return {\n getOsVersion,\n getAppsByHash,\n uninstallApp,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state) =>\n internalApi.setDeviceSessionState(state),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["UninstallAppDeviceAction_exports", "__export", "UninstallAppDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_CommandResult", "import_GetOsVersionCommand", "import_UserInteractionRequired", "import_Const", "import_Errors", "import_GoToDashboardDeviceAction", "import_XStateDeviceAction", "import_DeviceSessionState", "import_ListInstalledAppsDeviceAction", "import_ConnectToSecureChannelTask", "import_types", "internalApi", "getOsVersion", "getAppsByHash", "uninstallApp", "getDeviceSessionState", "setDeviceSessionState", "unlockTimeout", "goToDashboardMachine", "listInstalledAppsMachine", "_", "app", "installedApps", "error", "apps", "currentState", "isSecureConnectionAllowed", "context", "input", "appHashes", "deviceInfo", "eitherConnection", "state"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var A=require("purify-ts"),f=require("rxjs"),v=require("../../../command/model/CommandResult"),I=require("../../../device/DeviceStatus"),o=require("../../../device-action/__test-utils__/makeInternalApi"),i=require("../../../device-action/__test-utils__/setupTestMachine"),c=require("../../../device-action/__test-utils__/testDeviceActionStates"),e=require("../../../device-action/model/DeviceActionState"),t=require("../../../device-action/model/UserInteractionRequired"),S=require("../../../device-action/os/Errors"),V=require("../../../device-session/DeviceSessionState"),D=require("../../../secure-channel/task/types"),g=require("../../../../internal/secure-channel/model/Errors"),l=require("./UninstallAppDeviceAction");vi.mock("@api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction");vi.mock("@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction");describe("UninstallAppDeviceAction",()=>{const u=vi.fn(),p=vi.fn(),h=vi.fn(),d=vi.fn(),N=vi.fn(),m=()=>({getOsVersion:u,getAppsByHash:p,uninstallApp:h,getDeviceSessionState:d,setDeviceSessionState:N});beforeEach(()=>{vi.resetAllMocks()}),it("should finish successfully when the app is not installed on the device",()=>new Promise((s,r)=>{(0,i.setupListInstalledAppsMock)([{installedApps:[{name:"Bitcoin"}]}]);const a=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Completed,output:void 0}],n=new l.UninstallAppDeviceAction({input:{appName:"Ethereum"}});vi.spyOn(n,"extractDependencies").mockImplementation(m),(0,c.testDeviceActionStates)(n,a,(0,o.makeDeviceActionInternalApiMock)(),{onDone:s,onError:r})})),it("should finish successfully when the app is installed on the device",()=>new Promise((s,r)=>{(0,i.setupListInstalledAppsMock)([{installedApps:[{name:"Bitcoin"}]},{installedApps:[]}]),(0,i.setupGoToDashboardMock)(),u.mockResolvedValue((0,v.CommandResultFactory)({data:{targetId:12345678,secureElementFlags:{isSecureConnectionAllowed:!0}}})),d.mockReturnValue({sessionStateType:V.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:I.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"},isSecureConnectionAllowed:!1}),p.mockResolvedValue((0,A.Right)([{versionName:"Bitcoin",perso:"test_perso",firmware:"test_firmware_for_bitcoin",firmwareKey:"test_firmware_key_for_bitcoin",hash:"test_hash_for_bitcoin"}])),h.mockReturnValue((0,f.of)({type:D.SecureChannelEventType.Exchange}));const a=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Completed,output:void 0}],n=new l.UninstallAppDeviceAction({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockImplementation(m),(0,c.testDeviceActionStates)(n,a,(0,o.makeDeviceActionInternalApiMock)(),{onDone:s,onError:r})})),it("should finish unsuccessfully when the app is a dependency of other installed apps",()=>new Promise((s,r)=>{(0,i.setupListInstalledAppsMock)([{installedApps:[{name:"Bitcoin"},{name:"Testcoin"}]}]),(0,i.setupGoToDashboardMock)(),u.mockResolvedValue((0,v.CommandResultFactory)({data:{targetId:12345678,secureElementFlags:{isSecureConnectionAllowed:!0}}})),d.mockReturnValue({sessionStateType:V.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:I.DeviceStatus.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"},isSecureConnectionAllowed:!1}),p.mockResolvedValue((0,A.Right)([{versionName:"Testcoin",parentName:"Bitcoin"},{versionName:"Bitcoin"}]));const a=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Error,error:new S.UnknownDAError("App to uninstall is a dependency of another installed app")}],n=new l.UninstallAppDeviceAction({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockImplementation(m),(0,c.testDeviceActionStates)(n,a,(0,o.makeDeviceActionInternalApiMock)(),{onDone:s,onError:r})})),it("should finish unsuccessfully when the app is not found in manager API",()=>new Promise((s,r)=>{(0,i.setupListInstalledAppsMock)([{installedApps:[{name:"Bitcoin"}]}]),(0,i.setupGoToDashboardMock)(),u.mockResolvedValue((0,v.CommandResultFactory)({data:{targetId:12345678,secureElementFlags:{isSecureConnectionAllowed:!0}}})),d.mockReturnValue({}),p.mockResolvedValueOnce((0,A.Right)([]));const a=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Error,error:new S.UnknownDAError("App to uninstall not found in manager API")}],n=new l.UninstallAppDeviceAction({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockImplementation(m),(0,c.testDeviceActionStates)(n,a,(0,o.makeDeviceActionInternalApiMock)(),{onDone:s,onError:r})})),it("should finish unsuccessfully when there is error in uninstallApp",()=>new Promise((s,r)=>{(0,i.setupListInstalledAppsMock)([{installedApps:[{name:"Bitcoin"}]}]),(0,i.setupGoToDashboardMock)(),u.mockResolvedValue((0,v.CommandResultFactory)({data:{targetId:12345678,secureElementFlags:{isSecureConnectionAllowed:!0}}})),d.mockReturnValue({}),p.mockResolvedValueOnce((0,A.Right)([{versionName:"Bitcoin"}])),h.mockReturnValue((0,f.throwError)(()=>new g.SecureChannelError("Uninstall app error in secure channel")));const a=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:t.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Error,error:new g.SecureChannelError("Uninstall app error in secure channel")}],n=new l.UninstallAppDeviceAction({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockImplementation(m),(0,c.testDeviceActionStates)(n,a,(0,o.makeDeviceActionInternalApiMock)(),{onDone:s,onError:r})}))});
2
+ //# sourceMappingURL=UninstallAppDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.test.ts"],
4
+ "sourcesContent": ["import { Right } from \"purify-ts\";\nimport { of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { type GetOsVersionResponse } from \"@api/command/os/GetOsVersionCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport {\n setupGoToDashboardMock,\n setupListInstalledAppsMock,\n} from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type InstalledApp } from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport {\n type SecureChannelEvent,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { SecureChannelError } from \"@internal/secure-channel/model/Errors\";\n\nimport { type UninstallAppDAState } from \"./types\";\nimport { UninstallAppDeviceAction } from \"./UninstallAppDeviceAction\";\n\nvi.mock(\n \"@api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction\",\n);\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\n\ndescribe(\"UninstallAppDeviceAction\", () => {\n const getOsVersionMock = vi.fn();\n const getAppsByHashMock = vi.fn();\n const uninstallAppMock = vi.fn();\n const getDeviceSessionStateMock = vi.fn();\n const setDeviceSessionStateMock = vi.fn();\n const extractDependenciesMock = () => ({\n getOsVersion: getOsVersionMock,\n getAppsByHash: getAppsByHashMock,\n uninstallApp: uninstallAppMock,\n getDeviceSessionState: getDeviceSessionStateMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should finish successfully when the app is not installed on the device\", () =>\n new Promise<void>((resolve, reject) => {\n setupListInstalledAppsMock([\n { installedApps: [{ name: \"Bitcoin\" } as InstalledApp] },\n ]);\n\n const expectedStates: Array<UninstallAppDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: undefined,\n },\n ];\n\n const uninstallAppDeviceAction = new UninstallAppDeviceAction({\n input: { appName: \"Ethereum\" },\n });\n vi.spyOn(\n uninstallAppDeviceAction,\n \"extractDependencies\",\n ).mockImplementation(extractDependenciesMock);\n\n testDeviceActionStates(\n uninstallAppDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n it(\"should finish successfully when the app is installed on the device\", () =>\n new Promise<void>((resolve, reject) => {\n setupListInstalledAppsMock([\n { installedApps: [{ name: \"Bitcoin\" } as InstalledApp] },\n { installedApps: [] },\n ]);\n setupGoToDashboardMock();\n getOsVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n targetId: 12345678,\n secureElementFlags: {\n isSecureConnectionAllowed: true,\n },\n } as GetOsVersionResponse,\n }),\n );\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"0.0.0\" },\n isSecureConnectionAllowed: false,\n });\n getAppsByHashMock.mockResolvedValue(\n Right([\n {\n versionName: \"Bitcoin\",\n perso: \"test_perso\",\n firmware: \"test_firmware_for_bitcoin\",\n firmwareKey: \"test_firmware_key_for_bitcoin\",\n hash: \"test_hash_for_bitcoin\",\n } as Application,\n ]),\n );\n uninstallAppMock.mockReturnValue(\n of({\n type: SecureChannelEventType.Exchange,\n } as SecureChannelEvent),\n );\n\n const expectedStates: Array<UninstallAppDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Completed,\n output: undefined,\n },\n ];\n\n const uninstallAppDeviceAction = new UninstallAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n });\n vi.spyOn(\n uninstallAppDeviceAction,\n \"extractDependencies\",\n ).mockImplementation(extractDependenciesMock);\n\n testDeviceActionStates(\n uninstallAppDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n it(\"should finish unsuccessfully when the app is a dependency of other installed apps\", () =>\n new Promise<void>((resolve, reject) => {\n setupListInstalledAppsMock([\n {\n installedApps: [\n { name: \"Bitcoin\" },\n { name: \"Testcoin\" },\n ] as InstalledApp[],\n },\n ]);\n setupGoToDashboardMock();\n getOsVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n targetId: 12345678,\n secureElementFlags: {\n isSecureConnectionAllowed: true,\n },\n } as GetOsVersionResponse,\n }),\n );\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"0.0.0\" },\n isSecureConnectionAllowed: false,\n });\n getAppsByHashMock.mockResolvedValue(\n Right([\n {\n versionName: \"Testcoin\",\n parentName: \"Bitcoin\",\n },\n {\n versionName: \"Bitcoin\",\n },\n ] as Application[]),\n );\n\n const expectedStates: Array<UninstallAppDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\n \"App to uninstall is a dependency of another installed app\",\n ),\n },\n ];\n\n const uninstallAppDeviceAction = new UninstallAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n });\n vi.spyOn(\n uninstallAppDeviceAction,\n \"extractDependencies\",\n ).mockImplementation(extractDependenciesMock);\n\n testDeviceActionStates(\n uninstallAppDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n it(\"should finish unsuccessfully when the app is not found in manager API\", () =>\n new Promise<void>((resolve, reject) => {\n setupListInstalledAppsMock([\n { installedApps: [{ name: \"Bitcoin\" } as InstalledApp] },\n ]);\n setupGoToDashboardMock();\n getOsVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n targetId: 12345678,\n secureElementFlags: {\n isSecureConnectionAllowed: true,\n },\n } as GetOsVersionResponse,\n }),\n );\n getDeviceSessionStateMock.mockReturnValue({} as DeviceSessionState);\n getAppsByHashMock.mockResolvedValueOnce(Right([]));\n\n const expectedStates: Array<UninstallAppDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\n \"App to uninstall not found in manager API\",\n ),\n },\n ];\n\n const uninstallAppDeviceAction = new UninstallAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n });\n vi.spyOn(\n uninstallAppDeviceAction,\n \"extractDependencies\",\n ).mockImplementation(extractDependenciesMock);\n\n testDeviceActionStates(\n uninstallAppDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n it(\"should finish unsuccessfully when there is error in uninstallApp\", () =>\n new Promise<void>((resolve, reject) => {\n setupListInstalledAppsMock([\n { installedApps: [{ name: \"Bitcoin\" } as InstalledApp] },\n ]);\n setupGoToDashboardMock();\n getOsVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n targetId: 12345678,\n secureElementFlags: {\n isSecureConnectionAllowed: true,\n },\n } as GetOsVersionResponse,\n }),\n );\n getDeviceSessionStateMock.mockReturnValue({} as DeviceSessionState);\n getAppsByHashMock.mockResolvedValueOnce(\n Right([{ versionName: \"Bitcoin\" } as Application]),\n );\n uninstallAppMock.mockReturnValue(\n throwError(\n () => new SecureChannelError(\"Uninstall app error in secure channel\"),\n ),\n );\n\n const expectedStates: Array<UninstallAppDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new SecureChannelError(\n \"Uninstall app error in secure channel\",\n ),\n },\n ];\n\n const uninstallAppDeviceAction = new UninstallAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n });\n vi.spyOn(\n uninstallAppDeviceAction,\n \"extractDependencies\",\n ).mockImplementation(extractDependenciesMock);\n\n testDeviceActionStates(\n uninstallAppDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_rxjs", "import_CommandResult", "import_DeviceStatus", "import_makeInternalApi", "import_setupTestMachine", "import_testDeviceActionStates", "import_DeviceActionState", "import_UserInteractionRequired", "import_Errors", "import_DeviceSessionState", "import_types", "import_UninstallAppDeviceAction", "getOsVersionMock", "getAppsByHashMock", "uninstallAppMock", "getDeviceSessionStateMock", "setDeviceSessionStateMock", "extractDependenciesMock", "resolve", "reject", "expectedStates", "uninstallAppDeviceAction"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(t,e,o,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!a.call(t,r)&&r!==o&&n(t,r,{get:()=>e[r],enumerable:!(p=i(e,r))||p.enumerable});return t};var A=t=>l(n({},"__esModule",{value:!0}),t);var m={};module.exports=A(m);
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/secure-channel/device-action/UninstallApp/types.ts"],
4
+ "sourcesContent": ["import { type EitherAsync } from \"purify-ts\";\nimport { type Observable } from \"rxjs\";\n\nimport { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport {\n type GetOsVersionCommandResult,\n type GetOsVersionResponse,\n} from \"@api/command/os/GetOsVersionCommand\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { type UnknownDAError } from \"@api/device-action/os/Errors\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type InstalledApp } from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { type SecureChannelEvent } from \"@api/secure-channel/task/types\";\nimport { type Input } from \"@api/secure-channel/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\n\nexport type UninstallAppDAOutput = void;\n\nexport type UninstallAppDAInput = GoToDashboardDAInput & { appName: string };\n\nexport type UninstallAppDAError =\n | CommandErrorResult[\"error\"]\n | GoToDashboardDAError\n | HttpFetchApiError\n | UnknownDAError;\n\nexport type UninstallAppDARequiredInteraction =\n | UserInteractionRequired.None\n | UserInteractionRequired.UnlockDevice\n | UserInteractionRequired.AllowSecureConnection;\n\nexport type UninstallAppDAIntermediateValue = {\n requiredUserInteraction: UninstallAppDARequiredInteraction;\n};\n\nexport type UninstallAppDAState = DeviceActionState<\n UninstallAppDAOutput,\n UninstallAppDAError,\n UninstallAppDAIntermediateValue\n>;\n\nexport type UninstallAppStateMachineInternalState = {\n error: UninstallAppDAError | null;\n installedApps: Array<InstalledApp>;\n appList: Array<Application | null>;\n getOsVersionResponse: GetOsVersionResponse | null;\n};\n\nexport type MachineDependencies = {\n getOsVersion: () => Promise<GetOsVersionCommandResult>;\n getAppsByHash: (\n args: Input<InstalledApp[]>,\n ) => EitherAsync<HttpFetchApiError, Array<Application | null>>;\n uninstallApp: (\n args: Input<{ deviceInfo: GetOsVersionResponse; app: Application }>,\n ) => Observable<SecureChannelEvent>;\n getDeviceSessionState: () => DeviceSessionState;\n setDeviceSessionState: (state: DeviceSessionState) => DeviceSessionState;\n};\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["types_exports", "__toCommonJS"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("./utils");describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const e=new Uint8Array([224,81,0,0,0]);expect((0,t.willRequestPermission)(e)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const e=new Uint8Array([224,82,0,0,0]);expect((0,t.willRequestPermission)(e)).toBe(!1)})});describe("isRefusedByUser",()=>{it("should return true if the status code indicates a refusal",()=>{[new Uint8Array([85,1]),new Uint8Array([105,133])].forEach(e=>{expect((0,t.isRefusedByUser)(e)).toBe(!0)})}),it("should return false if the status code does not indicate a refusal",()=>{const e=new Uint8Array([144,0]);expect((0,t.isRefusedByUser)(e)).toBe(!1)})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect((0,t.isDeviceGenuine)("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect((0,t.isDeviceGenuine)("not genuine")).toBe(!1)})});describe.todo("SecureElementFlags");
1
+ "use strict";var t=require("./utils");describe("willRequestPermission",()=>{it("should return true if the APDU is a permission request",()=>{const e=new Uint8Array([224,81,0,0,0]);expect((0,t.willRequestPermission)(e)).toBe(!0)}),it("should return false if the APDU is not a permission request",()=>{const e=new Uint8Array([224,82,0,0,0]);expect((0,t.willRequestPermission)(e)).toBe(!1)})});describe("isRefusedByUser",()=>{it("should return true if the status code indicates a refusal",()=>{[new Uint8Array([85,1]),new Uint8Array([105,133])].forEach(e=>{expect((0,t.isRefusedByUser)(e)).toBe(!0)})}),it("should return false if the status code does not indicate a refusal",()=>{const e=new Uint8Array([144,0]);expect((0,t.isRefusedByUser)(e)).toBe(!1)})});describe("isDeviceGenuine",()=>{it("should return true if the device is genuine",()=>{expect((0,t.isDeviceGenuine)("0000")).toBe(!0)}),it("should return false if the device is not genuine",()=>{expect((0,t.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 {\n isDeviceGenuine,\n isRefusedByUser,\n willRequestPermission,\n} from \"./utils\";\n\ndescribe(\"willRequestPermission\", () => {\n it(\"should return true if the APDU is a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(false);\n });\n});\n\ndescribe(\"isRefusedByUser\", () => {\n it(\"should return true if the status code indicates a refusal\", () => {\n [new Uint8Array([0x55, 0x01]), new Uint8Array([0x69, 0x85])].forEach(\n (statusCode) => {\n expect(isRefusedByUser(statusCode)).toBe(true);\n },\n );\n });\n it(\"should return false if the status code does not indicate a refusal\", () => {\n const statusCode = new Uint8Array([0x90, 0x00]);\n expect(isRefusedByUser(statusCode)).toBe(false);\n });\n});\n\ndescribe(\"isDeviceGenuine\", () => {\n it(\"should return true if the device is genuine\", () => {\n const payload = \"0000\";\n expect(isDeviceGenuine(payload)).toBe(true);\n });\n it(\"should return false if the device is not genuine\", () => {\n const payload = \"not genuine\";\n expect(isDeviceGenuine(payload)).toBe(false);\n });\n});\n\ndescribe.todo(\"SecureElementFlags\");\n"],
5
- "mappings": "aAAA,IAAAA,EAIO,mBAEP,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,4DAA6D,IAAM,CACpE,CAAC,IAAI,WAAW,CAAC,GAAM,CAAI,CAAC,EAAG,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,CAAC,EAAE,QAC1DC,GAAe,CACd,UAAO,mBAAgBA,CAAU,CAAC,EAAE,KAAK,EAAI,CAC/C,CACF,CACF,CAAC,EACD,GAAG,qEAAsE,IAAM,CAC7E,MAAMA,EAAa,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EAC9C,UAAO,mBAAgBA,CAAU,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,EAED,SAAS,KAAK,oBAAoB",
4
+ "sourcesContent": ["import {\n isDeviceGenuine,\n isRefusedByUser,\n willRequestPermission,\n} from \"./utils\";\n\ndescribe(\"willRequestPermission\", () => {\n it(\"should return true if the APDU is a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x51, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(true);\n });\n it(\"should return false if the APDU is not a permission request\", () => {\n const apdu = new Uint8Array([0xe0, 0x52, 0x00, 0x00, 0x00]);\n expect(willRequestPermission(apdu)).toBe(false);\n });\n});\n\ndescribe(\"isRefusedByUser\", () => {\n it(\"should return true if the status code indicates a refusal\", () => {\n [new Uint8Array([0x55, 0x01]), new Uint8Array([0x69, 0x85])].forEach(\n (statusCode) => {\n expect(isRefusedByUser(statusCode)).toBe(true);\n },\n );\n });\n it(\"should return false if the status code does not indicate a refusal\", () => {\n const statusCode = new Uint8Array([0x90, 0x00]);\n expect(isRefusedByUser(statusCode)).toBe(false);\n });\n});\n\ndescribe(\"isDeviceGenuine\", () => {\n it(\"should return true if the device is genuine\", () => {\n const payload = \"0000\";\n expect(isDeviceGenuine(payload)).toBe(true);\n });\n it(\"should return false if the device is not genuine\", () => {\n const payload = \"not genuine\";\n expect(isDeviceGenuine(payload)).toBe(false);\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAIO,mBAEP,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,4DAA6D,IAAM,CACpE,CAAC,IAAI,WAAW,CAAC,GAAM,CAAI,CAAC,EAAG,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,CAAC,EAAE,QAC1DC,GAAe,CACd,UAAO,mBAAgBA,CAAU,CAAC,EAAE,KAAK,EAAI,CAC/C,CACF,CACF,CAAC,EACD,GAAG,qEAAsE,IAAM,CAC7E,MAAMA,EAAa,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EAC9C,UAAO,mBAAgBA,CAAU,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
6
  "names": ["import_utils", "apdu", "statusCode"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("purify-ts"),r=require("../../device-model/model/DeviceModel.stub"),o=require("../../device-session/ApduResponse.stub"),c=require("./TransportConnectedDevice"),i=require("./TransportConnectedDevice.stub");describe("TransportConnectedDevice",()=>{let e;beforeEach(()=>{e=(0,i.connectedDeviceStubBuilder)()}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(c.TransportConnectedDevice)}),it("should return the correct id",()=>{expect(e.id).toEqual("42")}),it("should return the correct device model",()=>{expect(JSON.stringify(e.deviceModel)).toEqual(JSON.stringify((0,r.deviceModelStubBuilder)()))}),it("should return the correct type",()=>{expect(e.type).toEqual("MOCK")}),it("should return the correct send apdu response",()=>{expect(e.sendApdu(new Uint8Array)).resolves.toMatchObject((0,t.Right)((0,o.defaultApduResponseStubBuilder)()))})});
1
+ "use strict";var t=require("purify-ts"),r=require("../../device-model/model/DeviceModel.stub"),o=require("../../device-session/ApduResponse.stub"),c=require("./TransportConnectedDevice"),i=require("./TransportConnectedDevice.stub");describe("TransportConnectedDevice",()=>{let e;beforeEach(()=>{e=(0,i.connectedDeviceStubBuilder)()}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(c.TransportConnectedDevice)}),it("should return the correct id",()=>{expect(e.id).toEqual("42")}),it("should return the correct device model",()=>{expect(JSON.stringify(e.deviceModel)).toEqual(JSON.stringify((0,r.deviceModelStubBuilder)()))}),it("should return the correct type",()=>{expect(e.type).toEqual("MOCK")}),it("should return the correct send apdu response",async()=>{const n=await e.sendApdu(new Uint8Array);expect(n).toMatchObject((0,t.Right)((0,o.defaultApduResponseStubBuilder)()))})});
2
2
  //# sourceMappingURL=TransportConnectedDevice.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/transport/model/TransportConnectedDevice.test.ts"],
4
- "sourcesContent": ["import { Right } from \"purify-ts\";\n\nimport { deviceModelStubBuilder } from \"@api/device-model/model/DeviceModel.stub\";\nimport { defaultApduResponseStubBuilder } from \"@api/device-session/ApduResponse.stub\";\n\nimport { TransportConnectedDevice } from \"./TransportConnectedDevice\";\nimport { connectedDeviceStubBuilder } from \"./TransportConnectedDevice.stub\";\n\ndescribe(\"TransportConnectedDevice\", () => {\n let connectedDevice: TransportConnectedDevice;\n\n beforeEach(() => {\n connectedDevice = connectedDeviceStubBuilder();\n });\n\n it(\"should create an instance\", () => {\n expect(connectedDevice).toBeDefined();\n expect(connectedDevice).toBeInstanceOf(TransportConnectedDevice);\n });\n\n it(\"should return the correct id\", () => {\n expect(connectedDevice.id).toEqual(\"42\");\n });\n\n it(\"should return the correct device model\", () => {\n expect(JSON.stringify(connectedDevice.deviceModel)).toEqual(\n JSON.stringify(deviceModelStubBuilder()),\n );\n });\n\n it(\"should return the correct type\", () => {\n expect(connectedDevice.type).toEqual(\"MOCK\");\n });\n\n it(\"should return the correct send apdu response\", () => {\n expect(connectedDevice.sendApdu(new Uint8Array())).resolves.toMatchObject(\n Right(defaultApduResponseStubBuilder()),\n );\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAsB,qBAEtBC,EAAuC,oDACvCC,EAA+C,iDAE/CC,EAAyC,sCACzCA,EAA2C,2CAE3C,SAAS,2BAA4B,IAAM,CACzC,IAAIC,EAEJ,WAAW,IAAM,CACfA,KAAkB,8BAA2B,CAC/C,CAAC,EAED,GAAG,4BAA6B,IAAM,CACpC,OAAOA,CAAe,EAAE,YAAY,EACpC,OAAOA,CAAe,EAAE,eAAe,0BAAwB,CACjE,CAAC,EAED,GAAG,+BAAgC,IAAM,CACvC,OAAOA,EAAgB,EAAE,EAAE,QAAQ,IAAI,CACzC,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OAAO,KAAK,UAAUA,EAAgB,WAAW,CAAC,EAAE,QAClD,KAAK,aAAU,0BAAuB,CAAC,CACzC,CACF,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAgB,IAAI,EAAE,QAAQ,MAAM,CAC7C,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,OAAOA,EAAgB,SAAS,IAAI,UAAY,CAAC,EAAE,SAAS,iBAC1D,YAAM,kCAA+B,CAAC,CACxC,CACF,CAAC,CACH,CAAC",
6
- "names": ["import_purify_ts", "import_DeviceModel", "import_ApduResponse", "import_TransportConnectedDevice", "connectedDevice"]
4
+ "sourcesContent": ["import { Right } from \"purify-ts\";\n\nimport { deviceModelStubBuilder } from \"@api/device-model/model/DeviceModel.stub\";\nimport { defaultApduResponseStubBuilder } from \"@api/device-session/ApduResponse.stub\";\n\nimport { TransportConnectedDevice } from \"./TransportConnectedDevice\";\nimport { connectedDeviceStubBuilder } from \"./TransportConnectedDevice.stub\";\n\ndescribe(\"TransportConnectedDevice\", () => {\n let connectedDevice: TransportConnectedDevice;\n\n beforeEach(() => {\n connectedDevice = connectedDeviceStubBuilder();\n });\n\n it(\"should create an instance\", () => {\n expect(connectedDevice).toBeDefined();\n expect(connectedDevice).toBeInstanceOf(TransportConnectedDevice);\n });\n\n it(\"should return the correct id\", () => {\n expect(connectedDevice.id).toEqual(\"42\");\n });\n\n it(\"should return the correct device model\", () => {\n expect(JSON.stringify(connectedDevice.deviceModel)).toEqual(\n JSON.stringify(deviceModelStubBuilder()),\n );\n });\n\n it(\"should return the correct type\", () => {\n expect(connectedDevice.type).toEqual(\"MOCK\");\n });\n\n it(\"should return the correct send apdu response\", async () => {\n const res = await connectedDevice.sendApdu(new Uint8Array());\n expect(res).toMatchObject(Right(defaultApduResponseStubBuilder()));\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAsB,qBAEtBC,EAAuC,oDACvCC,EAA+C,iDAE/CC,EAAyC,sCACzCA,EAA2C,2CAE3C,SAAS,2BAA4B,IAAM,CACzC,IAAIC,EAEJ,WAAW,IAAM,CACfA,KAAkB,8BAA2B,CAC/C,CAAC,EAED,GAAG,4BAA6B,IAAM,CACpC,OAAOA,CAAe,EAAE,YAAY,EACpC,OAAOA,CAAe,EAAE,eAAe,0BAAwB,CACjE,CAAC,EAED,GAAG,+BAAgC,IAAM,CACvC,OAAOA,EAAgB,EAAE,EAAE,QAAQ,IAAI,CACzC,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OAAO,KAAK,UAAUA,EAAgB,WAAW,CAAC,EAAE,QAClD,KAAK,aAAU,0BAAuB,CAAC,CACzC,CACF,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAgB,IAAI,EAAE,QAAQ,MAAM,CAC7C,CAAC,EAED,GAAG,+CAAgD,SAAY,CAC7D,MAAMC,EAAM,MAAMD,EAAgB,SAAS,IAAI,UAAY,EAC3D,OAAOC,CAAG,EAAE,iBAAc,YAAM,kCAA+B,CAAC,CAAC,CACnE,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_DeviceModel", "import_ApduResponse", "import_TransportConnectedDevice", "connectedDevice", "res"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var c=(t,e,s,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of n(e))!a.call(t,r)&&r!==s&&o(t,r,{get:()=>e[r],enumerable:!(p=i(e,r))||p.enumerable});return t};var d=t=>c(o({},"__esModule",{value:!0}),t);var m={};module.exports=d(m);
1
+ "use strict";var o=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var A=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let p of a(e))!i.call(t,p)&&p!==n&&o(t,p,{get:()=>e[p],enumerable:!(r=s(e,p))||r.enumerable});return t};var c=t=>A(o({},"__esModule",{value:!0}),t);var d={};module.exports=c(d);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/types.ts"],
4
- "sourcesContent": ["export type { OpenAppErrorCodes } from \"./command/os/OpenAppCommand\";\nexport type { CommandErrors } from \"./command/utils/CommandErrors\";\nexport type { DeviceId } from \"./device/DeviceModel\";\nexport type { ConnectionType } from \"./discovery/ConnectionType\";\nexport type { CommandErrorArgs } from \"./Error\";\nexport type { LogSubscriberOptions } from \"./logger-subscriber/model/LogSubscriberOptions\";\nexport type { DiscoveredDevice } from \"./transport/model/DiscoveredDevice\";\nexport type {\n Transport,\n TransportArgs,\n TransportFactory,\n} from \"./transport/model/Transport\";\nexport type { TransportIdentifier } from \"./transport/model/TransportIdentifier\";\nexport type { ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nexport type { Command } from \"@api/command/Command\";\nexport type {\n CommandErrorResult,\n CommandResult,\n CommandSuccessResult,\n} from \"@api/command/model/CommandResult\";\nexport type { SendCommandUseCaseArgs } from \"@api/command/use-case/SendCommandUseCase\";\nexport type { DeviceModelId } from \"@api/device/DeviceModel\";\nexport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nexport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n type GetDeviceStatusDAState,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\nexport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDAOutput,\n type GoToDashboardDAState,\n} from \"@api/device-action/os/GoToDashboard/types\";\nexport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n type ListAppsDAState,\n} from \"@api/device-action/os/ListApps/types\";\nexport {\n type ListAppsWithMetadataDAError,\n type ListAppsWithMetadataDAInput,\n type ListAppsWithMetadataDAIntermediateValue,\n type ListAppsWithMetadataDAOutput,\n type ListAppsWithMetadataDAState,\n} from \"@api/device-action/os/ListAppsWithMetadata/types\";\nexport {\n type OpenAppDAError,\n type OpenAppDAInput,\n type OpenAppDAIntermediateValue,\n type OpenAppDAOutput,\n type OpenAppDARequiredInteraction,\n type OpenAppDAState,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\nexport {\n type SendCommandInAppDAError,\n type SendCommandInAppDAInput,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n} from \"@api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes\";\nexport type { ExecuteDeviceActionUseCaseArgs } from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nexport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nexport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nexport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nexport { type ApduReceiverService } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nexport { type ApduSenderService } from \"@api/device-session/service/ApduSenderService\";\nexport type { DeviceSessionId } from \"@api/device-session/types\";\nexport type { DmkConfig } from \"@api/DmkConfig\";\nexport type { DmkError } from \"@api/Error\";\nexport type { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nexport type {\n LoggerSubscriberService,\n LogParams,\n} from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nexport {\n type GenuineCheckDAError,\n type GenuineCheckDAInput,\n type GenuineCheckDAIntermediateValue,\n type GenuineCheckDAOutput,\n type GenuineCheckDARequiredInteraction,\n type GenuineCheckDAState,\n} from \"@api/secure-channel/device-action/GenuineCheck/types\";\nexport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDAInput,\n type ListInstalledAppsDAIntermediateValue,\n type ListInstalledAppsDAOutput,\n type ListInstalledAppsDARequiredInteraction,\n type ListInstalledAppsDAState,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nexport { type DeviceApduSender } from \"@api/transport/model/DeviceApduSender\";\nexport {\n type DeviceConnection,\n type DisconnectHandler,\n type SendApduFnType,\n} from \"@api/transport/model/DeviceConnection\";\nexport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nexport type { HexaString } from \"@api/utils/HexaString\";\nexport type { ConnectUseCaseArgs } from \"@internal/discovery/use-case/ConnectUseCase\";\nexport type { DisconnectUseCaseArgs } from \"@internal/discovery/use-case/DisconnectUseCase\";\nexport type { GetConnectedDeviceUseCaseArgs } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nexport type { StartDiscoveringUseCaseArgs } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nexport type { SendApduUseCaseArgs } from \"@internal/send/use-case/SendApduUseCase\";\n"],
4
+ "sourcesContent": ["export type { OpenAppErrorCodes } from \"./command/os/OpenAppCommand\";\nexport type { CommandErrors } from \"./command/utils/CommandErrors\";\nexport type { DeviceId } from \"./device/DeviceModel\";\nexport type { ConnectionType } from \"./discovery/ConnectionType\";\nexport type { CommandErrorArgs } from \"./Error\";\nexport type { LogSubscriberOptions } from \"./logger-subscriber/model/LogSubscriberOptions\";\nexport type { DiscoveredDevice } from \"./transport/model/DiscoveredDevice\";\nexport type {\n Transport,\n TransportArgs,\n TransportFactory,\n} from \"./transport/model/Transport\";\nexport type { TransportIdentifier } from \"./transport/model/TransportIdentifier\";\nexport type { ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nexport type { Command } from \"@api/command/Command\";\nexport type {\n CommandErrorResult,\n CommandResult,\n CommandSuccessResult,\n} from \"@api/command/model/CommandResult\";\nexport type { SendCommandUseCaseArgs } from \"@api/command/use-case/SendCommandUseCase\";\nexport type { DeviceModelId } from \"@api/device/DeviceModel\";\nexport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nexport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n type GetDeviceStatusDAState,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\nexport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDAOutput,\n type GoToDashboardDAState,\n} from \"@api/device-action/os/GoToDashboard/types\";\nexport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n type ListAppsDAState,\n} from \"@api/device-action/os/ListApps/types\";\nexport {\n type ListAppsWithMetadataDAError,\n type ListAppsWithMetadataDAInput,\n type ListAppsWithMetadataDAIntermediateValue,\n type ListAppsWithMetadataDAOutput,\n type ListAppsWithMetadataDAState,\n} from \"@api/device-action/os/ListAppsWithMetadata/types\";\nexport {\n type OpenAppDAError,\n type OpenAppDAInput,\n type OpenAppDAIntermediateValue,\n type OpenAppDAOutput,\n type OpenAppDARequiredInteraction,\n type OpenAppDAState,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\nexport {\n type SendCommandInAppDAError,\n type SendCommandInAppDAInput,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n} from \"@api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes\";\nexport type { ExecuteDeviceActionUseCaseArgs } from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nexport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nexport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nexport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nexport { type ApduReceiverService } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nexport { type ApduSenderService } from \"@api/device-session/service/ApduSenderService\";\nexport type { DeviceSessionId } from \"@api/device-session/types\";\nexport type { DmkConfig } from \"@api/DmkConfig\";\nexport type { DmkError } from \"@api/Error\";\nexport type { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nexport type {\n LoggerSubscriberService,\n LogParams,\n} from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nexport {\n type GenuineCheckDAError,\n type GenuineCheckDAInput,\n type GenuineCheckDAIntermediateValue,\n type GenuineCheckDAOutput,\n type GenuineCheckDARequiredInteraction,\n type GenuineCheckDAState,\n} from \"@api/secure-channel/device-action/GenuineCheck/types\";\nexport {\n type InstallAppDAError,\n type InstallAppDAInput,\n type InstallAppDAIntermediateValue,\n type InstallAppDAOutput,\n type InstallAppDARequiredInteraction,\n type InstallAppDAState,\n} from \"@api/secure-channel/device-action/InstallApp/types\";\nexport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDAInput,\n type ListInstalledAppsDAIntermediateValue,\n type ListInstalledAppsDAOutput,\n type ListInstalledAppsDARequiredInteraction,\n type ListInstalledAppsDAState,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nexport {\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppDARequiredInteraction,\n type UninstallAppDAState,\n} from \"@api/secure-channel/device-action/UninstallApp/types\";\nexport { type DeviceApduSender } from \"@api/transport/model/DeviceApduSender\";\nexport {\n type DeviceConnection,\n type DisconnectHandler,\n type SendApduFnType,\n} from \"@api/transport/model/DeviceConnection\";\nexport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nexport type { HexaString } from \"@api/utils/HexaString\";\nexport type { ConnectUseCaseArgs } from \"@internal/discovery/use-case/ConnectUseCase\";\nexport type { DisconnectUseCaseArgs } from \"@internal/discovery/use-case/DisconnectUseCase\";\nexport type { GetConnectedDeviceUseCaseArgs } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nexport type { StartDiscoveringUseCaseArgs } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nexport type { SendApduUseCaseArgs } from \"@internal/send/use-case/SendApduUseCase\";\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var _=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var c=(S,E)=>{for(var R in E)_(S,R,{get:E[R],enumerable:!0})},e=(S,E,R,o)=>{if(E&&typeof E=="object"||typeof E=="function")for(let I of N(E))!V.call(S,I)&&I!==R&&_(S,I,{get:()=>E[I],enumerable:!(o=t(E,I))||o.enumerable});return S};var n=S=>e(_({},"__esModule",{value:!0}),S);var r={};c(r,{DEVICE_SESSION_REFRESH_INTERVAL:()=>p});module.exports=n(r);const p=1e3;0&&(module.exports={DEVICE_SESSION_REFRESH_INTERVAL});
1
+ "use strict";var R=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var e=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var o=(I,E)=>{for(var _ in E)R(I,_,{get:E[_],enumerable:!0})},s=(I,E,_,N)=>{if(E&&typeof E=="object"||typeof E=="function")for(let S of e(E))!O.call(I,S)&&S!==_&&R(I,S,{get:()=>E[S],enumerable:!(N=L(E,S))||N.enumerable});return I};var t=I=>s(R({},"__esModule",{value:!0}),I);var l={};o(l,{DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS:()=>D,DEVICE_SESSION_REFRESHER_MINIMUM_POLLING_INTERVAL:()=>r,DEVICE_SESSION_REFRESHER_POLLING_INTERVAL:()=>V});module.exports=t(l);const V=1e3,r=1e3,D={isRefresherDisabled:!1,pollingInterval:1e3};0&&(module.exports={DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,DEVICE_SESSION_REFRESHER_MINIMUM_POLLING_INTERVAL,DEVICE_SESSION_REFRESHER_POLLING_INTERVAL});
2
2
  //# sourceMappingURL=DeviceSessionRefresherConst.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/data/DeviceSessionRefresherConst.ts"],
4
- "sourcesContent": ["export const DEVICE_SESSION_REFRESH_INTERVAL = 1000;\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qCAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAkC",
6
- "names": ["DeviceSessionRefresherConst_exports", "__export", "DEVICE_SESSION_REFRESH_INTERVAL", "__toCommonJS"]
4
+ "sourcesContent": ["// used for default args\nexport const DEVICE_SESSION_REFRESHER_POLLING_INTERVAL = 1000;\n\n// used to set a minimum interval for the exposed refresher options\nexport const DEVICE_SESSION_REFRESHER_MINIMUM_POLLING_INTERVAL = 1000;\n\nexport const DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS = {\n isRefresherDisabled: false,\n pollingInterval: DEVICE_SESSION_REFRESHER_POLLING_INTERVAL,\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8CAAAE,EAAA,sDAAAC,EAAA,8CAAAC,IAAA,eAAAC,EAAAL,GACO,MAAMI,EAA4C,IAG5CD,EAAoD,IAEpDD,EAA2C,CACtD,oBAAqB,GACrB,gBAAiB,GACnB",
6
+ "names": ["DeviceSessionRefresherConst_exports", "__export", "DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS", "DEVICE_SESSION_REFRESHER_MINIMUM_POLLING_INTERVAL", "DEVICE_SESSION_REFRESHER_POLLING_INTERVAL", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var E=(s,e)=>{for(var n in e)c(s,n,{get:e[n],enumerable:!0})},l=(s,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of u(e))!v.call(s,t)&&t!==n&&c(s,t,{get:()=>e[t],enumerable:!(i=d(e,t))||i.enumerable});return s};var h=s=>l(c({},"__esModule",{value:!0}),s);var C={};E(C,{DevicePinger:()=>D});module.exports=h(C);var p=require("../../../api/device/DeviceModel"),a=require("../../../api/index"),m=require("../../device-session/data/DeviceSessionRefresherConst"),r=require("../../device-session/model/DeviceSessionEventDispatcher");class D{constructor(e,n,i,t){this.connectedDevice=n;this._sessionEventDispatcher=i;this._sendCommandFunction=t,this._logger=e("device-pinger"),this._subscription=this._sessionEventDispatcher.listen().subscribe(async o=>await this.mapEventAction(o))}_sendCommandFunction;_subscription;_logger;async ping(){try{return await this.mapDevicePingAction(this.connectedDevice.deviceModel.id)}catch(e){throw this._logger.error("Error while pinging device",{data:{error:e}}),e}}mapEventAction=async e=>{switch(e.eventName){case r.SessionEvents.REFRESH_NEEDED:return await this.ping();default:return null}};async mapDevicePingAction(e){switch(e){case p.DeviceModelId.NANO_S:{const n=(async()=>{const o=await this._sendCommandFunction(new a.GetAppAndVersionCommand);return this._sendCommandFunction(new a.GetOsVersionCommand),o})(),i=new Promise(o=>{setTimeout(()=>o(null),m.DEVICE_SESSION_REFRESHER_POLLING_INTERVAL*2+100)}),t=await Promise.race([n,i]);return t?this._sessionEventDispatcher.dispatch({eventName:r.SessionEvents.COMMAND_SUCCEEDED,eventData:t}):this._sessionEventDispatcher.dispatch({eventName:r.SessionEvents.DEVICE_STATE_UPDATE_LOCKED}),t}default:{const n=await this._sendCommandFunction(new a.GetAppAndVersionCommand);return this._sessionEventDispatcher.dispatch({eventName:r.SessionEvents.COMMAND_SUCCEEDED,eventData:n}),n}}}unsubscribe(){this._subscription.unsubscribe()}}0&&(module.exports={DevicePinger});
2
+ //# sourceMappingURL=DevicePinger.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/device-session/model/DevicePinger.ts"],
4
+ "sourcesContent": ["import { type Subscription } from \"rxjs\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport {\n GetAppAndVersionCommand,\n type GetAppAndVersionResponse,\n GetOsVersionCommand,\n type TransportConnectedDevice,\n} from \"@api/index\";\nimport {\n type Command,\n type CommandResult,\n type LoggerPublisherService,\n} from \"@api/types\";\nimport { DEVICE_SESSION_REFRESHER_POLLING_INTERVAL } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\n\ntype SendCommandFunction = <Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n) => Promise<CommandResult<Response, ErrorStatusCodes>>;\n\nexport class DevicePinger {\n private readonly _sendCommandFunction: SendCommandFunction;\n private _subscription: Subscription;\n private _logger: LoggerPublisherService;\n\n constructor(\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n private connectedDevice: TransportConnectedDevice,\n private _sessionEventDispatcher: DeviceSessionEventDispatcher,\n sendCommandFunction: SendCommandFunction,\n ) {\n this._sendCommandFunction = sendCommandFunction;\n this._logger = loggerModuleFactory(\"device-pinger\");\n this._subscription = this._sessionEventDispatcher\n .listen()\n .subscribe(async (event) => await this.mapEventAction(event));\n }\n\n public async ping(): Promise<CommandResult<GetAppAndVersionResponse> | null> {\n try {\n const result = await this.mapDevicePingAction(\n this.connectedDevice.deviceModel.id,\n );\n return result;\n } catch (error) {\n this._logger.error(\"Error while pinging device\", {\n data: {\n error,\n },\n });\n throw error;\n }\n }\n\n private mapEventAction = async (event: NewEvent) => {\n switch (event.eventName) {\n case SessionEvents.REFRESH_NEEDED:\n return await this.ping();\n default:\n return null;\n }\n };\n\n private async mapDevicePingAction(deviceModelId: DeviceModelId) {\n switch (deviceModelId) {\n case DeviceModelId.NANO_S: {\n const chainPromise: Promise<CommandResult<GetAppAndVersionResponse>> =\n (async () => {\n const appVersionResult = await this._sendCommandFunction(\n new GetAppAndVersionCommand(),\n );\n\n this._sendCommandFunction(new GetOsVersionCommand());\n return appVersionResult;\n })();\n\n const timeoutPromise: Promise<null> = new Promise((resolve) => {\n setTimeout(\n () => resolve(null),\n DEVICE_SESSION_REFRESHER_POLLING_INTERVAL * 2 + 100,\n );\n });\n\n const resultOrTimeout: CommandResult<GetAppAndVersionResponse> | null =\n await Promise.race([chainPromise, timeoutPromise]);\n\n if (!resultOrTimeout) {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_LOCKED,\n });\n } else {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n eventData: resultOrTimeout,\n });\n }\n return resultOrTimeout;\n }\n default: {\n const result = await this._sendCommandFunction(\n new GetAppAndVersionCommand(),\n );\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n eventData: result,\n });\n return result;\n }\n }\n }\n\n public unsubscribe(): void {\n this._subscription.unsubscribe();\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAA8B,mCAC9BC,EAKO,sBAMPC,EAA0D,qEAC1DC,EAIO,uEAMA,MAAML,CAAa,CAKxB,YACEM,EACQC,EACAC,EACRC,EACA,CAHQ,qBAAAF,EACA,6BAAAC,EAGR,KAAK,qBAAuBC,EAC5B,KAAK,QAAUH,EAAoB,eAAe,EAClD,KAAK,cAAgB,KAAK,wBACvB,OAAO,EACP,UAAU,MAAOI,GAAU,MAAM,KAAK,eAAeA,CAAK,CAAC,CAChE,CAfiB,qBACT,cACA,QAeR,MAAa,MAAgE,CAC3E,GAAI,CAIF,OAHe,MAAM,KAAK,oBACxB,KAAK,gBAAgB,YAAY,EACnC,CAEF,OAASC,EAAO,CACd,WAAK,QAAQ,MAAM,6BAA8B,CAC/C,KAAM,CACJ,MAAAA,CACF,CACF,CAAC,EACKA,CACR,CACF,CAEQ,eAAiB,MAAOD,GAAoB,CAClD,OAAQA,EAAM,UAAW,CACvB,KAAK,gBAAc,eACjB,OAAO,MAAM,KAAK,KAAK,EACzB,QACE,OAAO,IACX,CACF,EAEA,MAAc,oBAAoBE,EAA8B,CAC9D,OAAQA,EAAe,CACrB,KAAK,gBAAc,OAAQ,CACzB,MAAMC,GACH,SAAY,CACX,MAAMC,EAAmB,MAAM,KAAK,qBAClC,IAAI,yBACN,EAEA,YAAK,qBAAqB,IAAI,qBAAqB,EAC5CA,CACT,GAAG,EAECC,EAAgC,IAAI,QAASC,GAAY,CAC7D,WACE,IAAMA,EAAQ,IAAI,EAClB,4CAA4C,EAAI,GAClD,CACF,CAAC,EAEKC,EACJ,MAAM,QAAQ,KAAK,CAACJ,EAAcE,CAAc,CAAC,EAEnD,OAAKE,EAKH,KAAK,wBAAwB,SAAS,CACpC,UAAW,gBAAc,kBACzB,UAAWA,CACb,CAAC,EAPD,KAAK,wBAAwB,SAAS,CACpC,UAAW,gBAAc,0BAC3B,CAAC,EAOIA,CACT,CACA,QAAS,CACP,MAAMC,EAAS,MAAM,KAAK,qBACxB,IAAI,yBACN,EACA,YAAK,wBAAwB,SAAS,CACpC,UAAW,gBAAc,kBACzB,UAAWA,CACb,CAAC,EACMA,CACT,CACF,CACF,CAEO,aAAoB,CACzB,KAAK,cAAc,YAAY,CACjC,CACF",
6
+ "names": ["DevicePinger_exports", "__export", "DevicePinger", "__toCommonJS", "import_DeviceModel", "import_api", "import_DeviceSessionRefresherConst", "import_DeviceSessionEventDispatcher", "loggerModuleFactory", "connectedDevice", "_sessionEventDispatcher", "sendCommandFunction", "event", "error", "deviceModelId", "chainPromise", "appVersionResult", "timeoutPromise", "resolve", "resultOrTimeout", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var E=require("rxjs"),e=require("vitest"),d=require("../../../api/device/DeviceModel"),p=require("../../../api/index"),D=require("../../device-session/data/DeviceSessionRefresherConst"),a=require("../../device-session/model/DeviceSessionEventDispatcher"),m=require("./DevicePinger");(0,e.describe)("DevicePinger",()=>{let n,u;const v=e.vi.fn(()=>u);let r,s,i,o;(0,e.beforeEach)(()=>{r=new E.Subject,s={listen:()=>r.asObservable(),dispatch:e.vi.fn()},n=e.vi.fn(),u={info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),debug:e.vi.fn(),subscribers:[]},i={deviceModel:{id:d.DeviceModelId.NANO_X}},o=new m.DevicePinger(v,i,s,n)}),(0,e.afterEach)(()=>{o.unsubscribe(),e.vi.restoreAllMocks()}),(0,e.it)("should call sendCommandFunction and dispatch COMMAND_SUCCEEDED event on successful ping for non-NANO_S",async()=>{const t={status:"success",data:{foo:"bar"}};n.mockResolvedValue(t);const c=await o.ping();(0,e.expect)(n).toHaveBeenCalledTimes(1);const l=n.mock.calls[0][0];(0,e.expect)(l).toBeInstanceOf(p.GetAppAndVersionCommand),(0,e.expect)(s.dispatch).toHaveBeenCalledWith({eventName:a.SessionEvents.COMMAND_SUCCEEDED,eventData:t}),(0,e.expect)(c).toEqual(t)}),(0,e.it)("should log error and throw error on ping failure",async()=>{const t=new Error("ping failed");n.mockRejectedValue(t),await(0,e.expect)(o.ping()).rejects.toThrow("ping failed"),(0,e.expect)(n).toHaveBeenCalledTimes(1)}),(0,e.it)("should dispatch DEVICE_STATE_UPDATE_LOCKED and return null on timeout for NANO_S",async()=>{i.deviceModel.id=d.DeviceModelId.NANO_S,o.unsubscribe(),o=new m.DevicePinger(v,i,s,n);const t=new Promise(()=>{});n.mockReturnValueOnce(t),e.vi.useFakeTimers();const c=o.ping();e.vi.advanceTimersByTime(D.DEVICE_SESSION_REFRESHER_POLLING_INTERVAL*4);const l=await c;(0,e.expect)(l).toBeNull(),(0,e.expect)(s.dispatch).toHaveBeenCalledWith({eventName:a.SessionEvents.DEVICE_STATE_UPDATE_LOCKED}),(0,e.expect)(n).toHaveBeenCalledTimes(1),e.vi.useRealTimers()}),(0,e.it)("should call ping on REFRESH_NEEDED event",async()=>{const t={status:"success",data:{foo:"bar"}};n.mockResolvedValue(t),r.next({eventName:a.SessionEvents.REFRESH_NEEDED,eventData:void 0}),await Promise.resolve(),(0,e.expect)(n).toHaveBeenCalled(),(0,e.expect)(s.dispatch).toHaveBeenCalledWith({eventName:a.SessionEvents.COMMAND_SUCCEEDED,eventData:t})}),(0,e.it)("should not process events after unsubscribe is called",async()=>{o.unsubscribe(),n.mockClear(),r.next({eventName:a.SessionEvents.REFRESH_NEEDED,eventData:void 0}),await Promise.resolve(),(0,e.expect)(n).not.toHaveBeenCalled()})});
2
+ //# sourceMappingURL=DevicePinger.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/device-session/model/DevicePinger.test.ts"],
4
+ "sourcesContent": ["import { Subject } from \"rxjs\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport {\n GetAppAndVersionCommand,\n type TransportConnectedDevice,\n} from \"@api/index\";\nimport type { LoggerPublisherService } from \"@api/types\";\nimport { DEVICE_SESSION_REFRESHER_POLLING_INTERVAL } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport {\n type DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"@internal/device-session/model/DeviceSessionEventDispatcher\";\n\nimport { DevicePinger } from \"./DevicePinger\";\n\ndescribe(\"DevicePinger\", () => {\n let dummySendCommandFunction: ReturnType<typeof vi.fn>;\n let mockLogger: LoggerPublisherService & {\n info: ReturnType<typeof vi.fn>;\n warn: ReturnType<typeof vi.fn>;\n error: ReturnType<typeof vi.fn>;\n };\n const mockedLoggerModuleFactory = vi.fn(() => mockLogger);\n let eventSubject: Subject<NewEvent>;\n let mockSessionEventDispatcher: DeviceSessionEventDispatcher;\n let dummyConnectedDevice: TransportConnectedDevice;\n let devicePinger: DevicePinger;\n\n beforeEach(() => {\n eventSubject = new Subject<NewEvent>();\n mockSessionEventDispatcher = {\n listen: () => eventSubject.asObservable(),\n dispatch: vi.fn(),\n } as unknown as DeviceSessionEventDispatcher;\n\n dummySendCommandFunction = vi.fn();\n mockLogger = {\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n debug: vi.fn(),\n subscribers: [],\n };\n\n dummyConnectedDevice = {\n deviceModel: {\n id: DeviceModelId.NANO_X,\n },\n } as unknown as TransportConnectedDevice;\n\n devicePinger = new DevicePinger(\n mockedLoggerModuleFactory,\n dummyConnectedDevice,\n mockSessionEventDispatcher,\n dummySendCommandFunction,\n );\n });\n\n afterEach(() => {\n devicePinger.unsubscribe();\n vi.restoreAllMocks();\n });\n\n it(\"should call sendCommandFunction and dispatch COMMAND_SUCCEEDED event on successful ping for non-NANO_S\", async () => {\n // given\n const dummyResult = {\n status: \"success\",\n data: { foo: \"bar\" },\n };\n dummySendCommandFunction.mockResolvedValue(dummyResult);\n\n // when\n const result = await devicePinger.ping();\n\n // then\n expect(dummySendCommandFunction).toHaveBeenCalledTimes(1);\n const commandArg = dummySendCommandFunction.mock\n .calls[0]![0] as GetAppAndVersionCommand;\n expect(commandArg).toBeInstanceOf(GetAppAndVersionCommand);\n expect(mockSessionEventDispatcher.dispatch).toHaveBeenCalledWith({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n eventData: dummyResult,\n });\n expect(result).toEqual(dummyResult);\n });\n\n it(\"should log error and throw error on ping failure\", async () => {\n // given\n const dummyError = new Error(\"ping failed\");\n dummySendCommandFunction.mockRejectedValue(dummyError);\n\n // then\n await expect(devicePinger.ping()).rejects.toThrow(\"ping failed\");\n expect(dummySendCommandFunction).toHaveBeenCalledTimes(1);\n });\n\n it(\"should dispatch DEVICE_STATE_UPDATE_LOCKED and return null on timeout for NANO_S\", async () => {\n // given\n dummyConnectedDevice.deviceModel.id = DeviceModelId.NANO_S;\n devicePinger.unsubscribe();\n devicePinger = new DevicePinger(\n mockedLoggerModuleFactory,\n dummyConnectedDevice,\n mockSessionEventDispatcher,\n dummySendCommandFunction,\n );\n const neverResolvingPromise = new Promise(() => {});\n dummySendCommandFunction.mockReturnValueOnce(neverResolvingPromise);\n vi.useFakeTimers();\n\n // when\n const pingPromise = devicePinger.ping();\n vi.advanceTimersByTime(DEVICE_SESSION_REFRESHER_POLLING_INTERVAL * 4);\n\n const result = await pingPromise;\n\n // then\n expect(result).toBeNull();\n expect(mockSessionEventDispatcher.dispatch).toHaveBeenCalledWith({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_LOCKED,\n });\n expect(dummySendCommandFunction).toHaveBeenCalledTimes(1);\n\n vi.useRealTimers();\n });\n\n it(\"should call ping on REFRESH_NEEDED event\", async () => {\n // given\n const dummyResult = {\n status: \"success\",\n data: { foo: \"bar\" },\n };\n dummySendCommandFunction.mockResolvedValue(dummyResult);\n\n // when\n eventSubject.next({\n eventName: SessionEvents.REFRESH_NEEDED,\n eventData: undefined,\n });\n await Promise.resolve();\n\n // then\n expect(dummySendCommandFunction).toHaveBeenCalled();\n expect(mockSessionEventDispatcher.dispatch).toHaveBeenCalledWith({\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n eventData: dummyResult,\n });\n });\n\n it(\"should not process events after unsubscribe is called\", async () => {\n // given\n devicePinger.unsubscribe();\n dummySendCommandFunction.mockClear();\n\n // when\n eventSubject.next({\n eventName: SessionEvents.REFRESH_NEEDED,\n eventData: undefined,\n });\n await Promise.resolve();\n\n // then\n expect(dummySendCommandFunction).not.toHaveBeenCalled();\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_rxjs", "import_vitest", "import_DeviceModel", "import_api", "import_DeviceSessionRefresherConst", "import_DeviceSessionEventDispatcher", "import_DevicePinger", "dummySendCommandFunction", "mockLogger", "mockedLoggerModuleFactory", "eventSubject", "mockSessionEventDispatcher", "dummyConnectedDevice", "devicePinger", "dummyResult", "result", "commandArg", "dummyError", "neverResolvingPromise", "pingPromise"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var C=(n,e)=>{for(var i in e)c(n,i,{get:e[i],enumerable:!0})},A=(n,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of _(e))!y.call(n,t)&&t!==i&&c(n,t,{get:()=>e[t],enumerable:!(r=g(e,t))||r.enumerable});return n};var R=n=>A(c({},"__esModule",{value:!0}),n);var b={};C(b,{DeviceSession:()=>E});module.exports=R(b);var d=require("purify-ts"),v=require("rxjs"),p=require("uuid"),u=require("../../../api/command/utils/CommandUtils"),s=require("../../../api/device/DeviceStatus"),S=require("../../../api/device-session/DeviceSessionState"),l=require("../../../api/Error"),h=require("../../device-session/data/DeviceSessionRefresherConst"),m=require("../../device-session/service/RefresherService"),D=require("./DeviceSessionRefresher");class E{_id;_connectedDevice;_deviceState;_refresher;_refresherService;_managerApiService;_secureChannelService;_readyPromise;_resolveReady;constructor({connectedDevice:e,id:i=(0,p.v4)()},r,t,a){this._id=i,this._connectedDevice=e,this._deviceState=new v.BehaviorSubject({sessionStateType:S.DeviceSessionStateType.Connected,deviceStatus:s.DeviceStatus.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id}),this._refresher=new D.DeviceSessionRefresher({refreshInterval:h.DEVICE_SESSION_REFRESH_INTERVAL,deviceStatus:s.DeviceStatus.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id,sendApduFn:o=>this.sendApdu(o,{isPolling:!0,triggersDisconnection:!1}),updateStateFn:o=>{const f=this._deviceState.getValue();this.setDeviceSessionState(o(f))}},r("device-session-refresher")),this._refresherService=new m.RefresherService(this._refresher),this._managerApiService=t,this._secureChannelService=a,this._readyPromise=new Promise(o=>{this._resolveReady=o}),this._refresher.start()}async waitIsReady(){await this._readyPromise}get id(){return this._id}get connectedDevice(){return this._connectedDevice}get state(){return this._deviceState.asObservable()}setDeviceSessionState(e){this._deviceState.next(e),this._resolveReady()}async sendApdu(e,i={isPolling:!1,triggersDisconnection:!1}){let r;return i.isPolling||(r=this._refresherService.disableRefresher("sendApdu"),await this.waitUntilReady()),this._deviceState.getValue().deviceStatus===s.DeviceStatus.BUSY?(0,d.Left)(new l.DeviceBusyError):(this.updateDeviceStatus(s.DeviceStatus.BUSY),(await this._connectedDevice.sendApdu(e,i.triggersDisconnection)).ifRight(o=>{u.CommandUtils.isLockedDeviceResponse(o)?this.updateDeviceStatus(s.DeviceStatus.LOCKED):this.updateDeviceStatus(s.DeviceStatus.CONNECTED),!i.isPolling&&r&&r()}).ifLeft(()=>{this.updateDeviceStatus(s.DeviceStatus.CONNECTED),!i.isPolling&&r&&r()}))}async sendCommand(e){const i=e.getApdu();return(await this.sendApdu(i.getRawApdu(),{isPolling:!1,triggersDisconnection:e.triggersDisconnection??!1})).caseOf({Left:t=>{throw t},Right:t=>e.parseResponse(t,this._connectedDevice.deviceModel.id)})}executeDeviceAction(e){const{observable:i,cancel:r}=e._execute({sendApdu:async t=>this.sendApdu(t),sendCommand:async t=>this.sendCommand(t),getDeviceSessionState:()=>this._deviceState.getValue(),getDeviceSessionStateObservable:()=>this.state,setDeviceSessionState:t=>(this.setDeviceSessionState(t),this._deviceState.getValue()),disableRefresher:t=>this._refresherService.disableRefresher(t),getManagerApiService:()=>this._managerApiService,getSecureChannelService:()=>this._secureChannelService});return{observable:i,cancel:r}}close(){this.updateDeviceStatus(s.DeviceStatus.NOT_CONNECTED),this._deviceState.complete(),this._refresher.stop()}disableRefresher(e){return this._refresherService.disableRefresher(e)}updateDeviceStatus(e){const i=this._deviceState.getValue();this._refresher.setDeviceStatus(e),this._deviceState.next({...i,deviceStatus:e})}async waitUntilReady(){let e;await new Promise(i=>{e=this._deviceState.subscribe(r=>{[s.DeviceStatus.LOCKED,s.DeviceStatus.CONNECTED].includes(r.deviceStatus)&&(e?.unsubscribe(),i())})})}}0&&(module.exports={DeviceSession});
1
+ "use strict";var v=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var b=(r,e)=>{for(var i in e)v(r,i,{get:e[i],enumerable:!0})},R=(r,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of A(e))!C.call(r,t)&&t!==i&&v(r,t,{get:()=>e[t],enumerable:!(s=g(e,t))||s.enumerable});return r};var T=r=>R(v({},"__esModule",{value:!0}),r);var O={};b(O,{DeviceSession:()=>y});module.exports=T(O);var d=require("rxjs"),h=require("uuid"),S=require("../../../api/command/utils/CommandUtils"),c=require("../../../api/device/DeviceStatus"),u=require("../../../api/device-session/DeviceSessionState"),m=require("../../device-session/data/DeviceSessionRefresherConst"),D=require("../../device-session/service/MutexService"),l=require("../../device-session/service/RefresherService"),_=require("./DevicePinger"),n=require("./DeviceSessionEventDispatcher"),f=require("./DeviceSessionRefresher"),E=require("./DeviceSessionStateHandler");class y{_id;_connectedDevice;_deviceState;_managerApiService;_secureChannelService;_logger;_refresherOptions;_pinger;_deviceSessionRefresher;_refresherService;_commandMutex=new D.MutexService;_sessionEventDispatcher=new n.DeviceSessionEventDispatcher;constructor({connectedDevice:e,id:i=(0,h.v4)()},s,t,o,a){this._id=i,this._connectedDevice=e,this._logger=s("device-session"),this._managerApiService=t,this._secureChannelService=o,this._refresherOptions={...m.DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,...a},this._deviceState=new d.BehaviorSubject({sessionStateType:u.DeviceSessionStateType.Connected,deviceStatus:c.DeviceStatus.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id}),this._pinger=new _.DevicePinger(s,e,this._sessionEventDispatcher,p=>this.sendCommand(p)),this._deviceSessionRefresher=new f.DeviceSessionRefresher(s,this._refresherOptions,this._sessionEventDispatcher,this._connectedDevice),new E.DeviceSessionStateHandler(s,this._sessionEventDispatcher,this._connectedDevice,this._deviceState,p=>this.setDeviceSessionState(p)),this._refresherService=new l.RefresherService(s,{start:()=>this._deviceSessionRefresher.restartRefresher(),stop:()=>this._deviceSessionRefresher.stopRefresher()})}async initialiseSession(){try{await this._pinger.ping()}catch(e){throw this._logger.error("Error while initialising session",{data:{error:e}}),e}finally{this._refresherOptions.isRefresherDisabled||this._deviceSessionRefresher.startRefresher()}}get id(){return this._id}get connectedDevice(){return this._connectedDevice}get state(){return this._deviceState.asObservable()}setDeviceSessionState(e){this._deviceState.next(e)}async sendApdu(e,i={isPolling:!1,triggersDisconnection:!1,abortTimeout:void 0}){let s;const t=await this._commandMutex.lock();i.abortTimeout&&(s=setTimeout(()=>{this._deviceState.getValue().deviceStatus===c.DeviceStatus.BUSY&&(this._logger.warn(`Aborting command execution due to timeout of ${i.abortTimeout}ms`,{data:{mutex:this._commandMutex}}),this._sessionEventDispatcher.dispatch({eventName:n.SessionEvents.DEVICE_STATE_UPDATE_CONNECTED}),this._commandMutex.clear())},i.abortTimeout));try{this._sessionEventDispatcher.dispatch({eventName:n.SessionEvents.DEVICE_STATE_UPDATE_BUSY});const o=await this._connectedDevice.sendApdu(e,i.triggersDisconnection);return o.ifRight(a=>{S.CommandUtils.isLockedDeviceResponse(a)?this._sessionEventDispatcher.dispatch({eventName:n.SessionEvents.DEVICE_STATE_UPDATE_LOCKED}):this._sessionEventDispatcher.dispatch({eventName:n.SessionEvents.DEVICE_STATE_UPDATE_CONNECTED})}).ifLeft(()=>{this._sessionEventDispatcher.dispatch({eventName:n.SessionEvents.DEVICE_STATE_UPDATE_CONNECTED})}),o}finally{s&&clearTimeout(s),t()}}async sendCommand(e){const i=e.getApdu();return(await this.sendApdu(i.getRawApdu(),{isPolling:!1,triggersDisconnection:e.triggersDisconnection??!1})).caseOf({Left:t=>{throw t},Right:t=>e.parseResponse(t,this._connectedDevice.deviceModel.id)})}executeDeviceAction(e){const{observable:i,cancel:s}=e._execute({sendApdu:async t=>this.sendApdu(t),sendCommand:async t=>this.sendCommand(t),getDeviceSessionState:()=>this._deviceState.getValue(),getDeviceSessionStateObservable:()=>this.state,setDeviceSessionState:t=>(this.setDeviceSessionState(t),this._deviceState.getValue()),disableRefresher:t=>this._refresherService.disableRefresher(t),getManagerApiService:()=>this._managerApiService,getSecureChannelService:()=>this._secureChannelService});return{observable:i,cancel:s}}close(){this._updateDeviceStatus(c.DeviceStatus.NOT_CONNECTED),this._deviceState.complete(),this._deviceSessionRefresher.stopRefresher()}disableRefresher(e){return this._refresherService.disableRefresher(e)}_updateDeviceStatus(e){const i=this._deviceState.getValue();this._deviceState.next({...i,deviceStatus:e})}}0&&(module.exports={DeviceSession});
2
2
  //# sourceMappingURL=DeviceSession.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/model/DeviceSession.ts"],
4
- "sourcesContent": ["import { type Either, Left } from \"purify-ts\";\nimport { BehaviorSubject, type Subscription } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { DeviceBusyError, type DmkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESH_INTERVAL } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { RefresherService } from \"@internal/device-session/service/RefresherService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _refresher: DeviceSessionRefresher;\n private readonly _refresherService: RefresherService;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n private readonly _readyPromise: Promise<void>;\n private _resolveReady!: () => void;\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n this._refresher = new DeviceSessionRefresher(\n {\n refreshInterval: DEVICE_SESSION_REFRESH_INTERVAL,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n sendApduFn: (rawApdu: Uint8Array) =>\n this.sendApdu(rawApdu, {\n isPolling: true,\n triggersDisconnection: false,\n }),\n updateStateFn: (callback) => {\n const state = this._deviceState.getValue();\n this.setDeviceSessionState(callback(state));\n },\n },\n loggerModuleFactory(\"device-session-refresher\"),\n );\n this._refresherService = new RefresherService(this._refresher);\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n this._readyPromise = new Promise<void>((resolve) => {\n this._resolveReady = resolve;\n });\n this._refresher.start();\n }\n\n public async waitIsReady() {\n await this._readyPromise;\n }\n\n public get id() {\n return this._id;\n }\n\n public get connectedDevice() {\n return this._connectedDevice;\n }\n\n public get state() {\n return this._deviceState.asObservable();\n }\n\n public setDeviceSessionState(state: DeviceSessionState) {\n this._deviceState.next(state);\n this._resolveReady();\n }\n\n public async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n let reenableRefresher: () => void;\n if (!options.isPolling) {\n reenableRefresher = this._refresherService.disableRefresher(\"sendApdu\");\n await this.waitUntilReady();\n }\n\n const sessionState = this._deviceState.getValue();\n if (sessionState.deviceStatus === DeviceStatus.BUSY) {\n return Left(new DeviceBusyError());\n }\n\n this.updateDeviceStatus(DeviceStatus.BUSY);\n\n const errorOrResponse = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n );\n\n return errorOrResponse\n .ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this.updateDeviceStatus(DeviceStatus.LOCKED);\n } else {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n }\n\n if (!options.isPolling && reenableRefresher) {\n reenableRefresher();\n }\n })\n .ifLeft(() => {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n\n if (!options.isPolling && reenableRefresher) {\n reenableRefresher();\n }\n });\n }\n\n public async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n public executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n ) => this.sendCommand(command),\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n disableRefresher: (blockerId: string) =>\n this._refresherService.disableRefresher(blockerId),\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n\n return {\n observable,\n cancel,\n };\n }\n\n public close() {\n this.updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._refresher.stop();\n }\n\n public disableRefresher(id: string): () => void {\n return this._refresherService.disableRefresher(id);\n }\n\n private updateDeviceStatus(deviceStatus: DeviceStatus) {\n const sessionState = this._deviceState.getValue();\n this._refresher.setDeviceStatus(deviceStatus);\n this._deviceState.next({\n ...sessionState,\n deviceStatus,\n });\n }\n\n private async waitUntilReady() {\n let deviceStateSub: Subscription;\n\n await new Promise<void>((resolve) => {\n deviceStateSub = this._deviceState.subscribe((state) => {\n if (\n [DeviceStatus.LOCKED, DeviceStatus.CONNECTED].includes(\n state.deviceStatus,\n )\n ) {\n deviceStateSub?.unsubscribe();\n resolve();\n }\n });\n });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["DeviceSession_exports", "__export", "DeviceSession", "__toCommonJS", "import_purify_ts", "import_rxjs", "import_uuid", "import_CommandUtils", "import_DeviceStatus", "import_DeviceSessionState", "import_Error", "import_DeviceSessionRefresherConst", "import_RefresherService", "import_DeviceSessionRefresher", "connectedDevice", "id", "uuidv4", "loggerModuleFactory", "managerApiService", "secureChannelService", "rawApdu", "callback", "state", "resolve", "options", "reenableRefresher", "response", "command", "apdu", "err", "r", "deviceAction", "observable", "cancel", "blockerId", "deviceStatus", "sessionState", "deviceStateSub"]
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\nimport { BehaviorSubject, type Observable } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type DmkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { MutexService } from \"@internal/device-session/service/MutexService\";\nimport { RefresherService } from \"@internal/device-session/service/RefresherService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DevicePinger } from \"./DevicePinger\";\nimport {\n DeviceSessionEventDispatcher,\n SessionEvents,\n} from \"./DeviceSessionEventDispatcher\";\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\nimport { DeviceSessionStateHandler } from \"./DeviceSessionStateHandler\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\nexport type DeviceSessionRefresherOptions = {\n isRefresherDisabled: boolean;\n pollingInterval?: number;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n abortTimeout?: number;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n private readonly _logger: LoggerPublisherService;\n private readonly _refresherOptions: DeviceSessionRefresherOptions;\n private _pinger: DevicePinger;\n private _deviceSessionRefresher: DeviceSessionRefresher;\n private readonly _refresherService: RefresherService;\n private _commandMutex = new MutexService();\n private _sessionEventDispatcher = new DeviceSessionEventDispatcher();\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n deviceSessionRefresherOptions: DeviceSessionRefresherOptions | undefined,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._logger = loggerModuleFactory(\"device-session\");\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n this._refresherOptions = {\n ...DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n ...deviceSessionRefresherOptions,\n };\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n\n this._pinger = new DevicePinger(\n loggerModuleFactory,\n connectedDevice,\n this._sessionEventDispatcher,\n (command) => this.sendCommand(command),\n );\n this._deviceSessionRefresher = new DeviceSessionRefresher(\n loggerModuleFactory,\n this._refresherOptions,\n this._sessionEventDispatcher,\n this._connectedDevice,\n );\n new DeviceSessionStateHandler(\n loggerModuleFactory,\n this._sessionEventDispatcher,\n this._connectedDevice,\n this._deviceState,\n (state) => this.setDeviceSessionState(state),\n );\n\n this._refresherService = new RefresherService(loggerModuleFactory, {\n start: () => this._deviceSessionRefresher.restartRefresher(),\n stop: () => this._deviceSessionRefresher.stopRefresher(),\n });\n }\n\n public async initialiseSession(): Promise<void> {\n try {\n await this._pinger.ping();\n } catch (error) {\n this._logger.error(\"Error while initialising session\", {\n data: { error },\n });\n throw error;\n } finally {\n if (!this._refresherOptions.isRefresherDisabled) {\n this._deviceSessionRefresher.startRefresher();\n }\n }\n }\n\n public get id(): DeviceSessionId {\n return this._id;\n }\n\n public get connectedDevice(): TransportConnectedDevice {\n return this._connectedDevice;\n }\n\n public get state(): Observable<DeviceSessionState> {\n return this._deviceState.asObservable();\n }\n\n public setDeviceSessionState(state: DeviceSessionState): void {\n this._deviceState.next(state);\n }\n\n public async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n abortTimeout: undefined,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n let abortSendApduTimeout: NodeJS.Timeout | undefined = undefined;\n const release = await this._commandMutex.lock();\n\n if (options.abortTimeout) {\n abortSendApduTimeout = setTimeout(() => {\n if (this._deviceState.getValue().deviceStatus !== DeviceStatus.BUSY) {\n return;\n }\n this._logger.warn(\n `Aborting command execution due to timeout of ${options.abortTimeout}ms`,\n { data: { mutex: this._commandMutex } },\n );\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n this._commandMutex.clear();\n }, options.abortTimeout);\n }\n\n try {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n const result = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n );\n\n result\n .ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_LOCKED,\n });\n } else {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n }\n })\n .ifLeft(() => {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n });\n return result;\n } finally {\n if (abortSendApduTimeout) {\n clearTimeout(abortSendApduTimeout);\n }\n release();\n }\n }\n\n public async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n public executeDeviceAction<\n Output,\n Input,\n E extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, E, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, E, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n ) => this.sendCommand(command),\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n disableRefresher: (blockerId: string) =>\n this._refresherService.disableRefresher(blockerId),\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n return { observable, cancel };\n }\n\n public close(): void {\n this._updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._deviceSessionRefresher.stopRefresher();\n }\n\n public disableRefresher(id: string): () => void {\n return this._refresherService.disableRefresher(id);\n }\n\n private _updateDeviceStatus(deviceStatus: DeviceStatus): void {\n const state = this._deviceState.getValue();\n this._deviceState.next({ ...state, deviceStatus });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceSession_exports", "__export", "DeviceSession", "__toCommonJS", "import_rxjs", "import_uuid", "import_CommandUtils", "import_DeviceStatus", "import_DeviceSessionState", "import_DeviceSessionRefresherConst", "import_MutexService", "import_RefresherService", "import_DevicePinger", "import_DeviceSessionEventDispatcher", "import_DeviceSessionRefresher", "import_DeviceSessionStateHandler", "connectedDevice", "id", "uuidv4", "loggerModuleFactory", "managerApiService", "secureChannelService", "deviceSessionRefresherOptions", "command", "state", "error", "rawApdu", "options", "abortSendApduTimeout", "release", "result", "response", "apdu", "err", "r", "deviceAction", "observable", "cancel", "blockerId", "deviceStatus"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var g=(r,e)=>{for(var i in e)t(r,i,{get:e[i],enumerable:!0})},v=(r,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of S(e))!p.call(r,o)&&o!==i&&t(r,o,{get:()=>e[o],enumerable:!(n=a(e,o))||n.enumerable});return r};var m=r=>v(t({},"__esModule",{value:!0}),r);var l={};g(l,{deviceSessionStubBuilder:()=>u});module.exports=m(l);var c=require("../../../api/transport/model/TransportConnectedDevice.stub"),s=require("../../device-session/model/DeviceSession");const u=(r={},e,i,n)=>new s.DeviceSession({connectedDevice:(0,c.connectedDeviceStubBuilder)(),id:"fakeSessionId",...r},e,i,n);0&&(module.exports={deviceSessionStubBuilder});
1
+ "use strict";var s=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var v=(r,e)=>{for(var o in e)s(r,o,{get:e[o],enumerable:!0})},g=(r,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of p(e))!a.call(r,i)&&i!==o&&s(r,i,{get:()=>e[i],enumerable:!(n=S(e,i))||n.enumerable});return r};var m=r=>g(s({},"__esModule",{value:!0}),r);var f={};v(f,{deviceSessionStubBuilder:()=>u});module.exports=m(f);var t=require("../../../api/transport/model/TransportConnectedDevice.stub"),c=require("../../device-session/model/DeviceSession");const u=(r={},e,o,n,i)=>new c.DeviceSession({connectedDevice:(0,t.connectedDeviceStubBuilder)(),id:"fakeSessionId",...r},e,o,n,i);0&&(module.exports={deviceSessionStubBuilder});
2
2
  //# sourceMappingURL=DeviceSession.stub.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/model/DeviceSession.stub.ts"],
4
- "sourcesContent": ["import { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { connectedDeviceStubBuilder } from \"@api/transport/model/TransportConnectedDevice.stub\";\nimport {\n DeviceSession,\n type SessionConstructorArgs,\n} from \"@internal/device-session/model/DeviceSession\";\nimport type { ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nexport const deviceSessionStubBuilder = (\n props: Partial<SessionConstructorArgs> = {},\n loggerFactory: (tag: string) => LoggerPublisherService,\n managerApi: ManagerApiService,\n secureChannel: SecureChannelService,\n) =>\n new DeviceSession(\n {\n connectedDevice: connectedDeviceStubBuilder(),\n id: \"fakeSessionId\",\n ...props,\n },\n loggerFactory,\n managerApi,\n secureChannel,\n );\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA2C,8DAC3CC,EAGO,wDAIA,MAAMH,EAA2B,CACtCI,EAAyC,CAAC,EAC1CC,EACAC,EACAC,IAEA,IAAI,gBACF,CACE,mBAAiB,8BAA2B,EAC5C,GAAI,gBACJ,GAAGH,CACL,EACAC,EACAC,EACAC,CACF",
6
- "names": ["DeviceSession_stub_exports", "__export", "deviceSessionStubBuilder", "__toCommonJS", "import_TransportConnectedDevice", "import_DeviceSession", "props", "loggerFactory", "managerApi", "secureChannel"]
4
+ "sourcesContent": ["import { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { connectedDeviceStubBuilder } from \"@api/transport/model/TransportConnectedDevice.stub\";\nimport {\n DeviceSession,\n type DeviceSessionRefresherOptions,\n type SessionConstructorArgs,\n} from \"@internal/device-session/model/DeviceSession\";\nimport type { ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nexport const deviceSessionStubBuilder = (\n props: Partial<SessionConstructorArgs> = {},\n loggerFactory: (tag: string) => LoggerPublisherService,\n managerApi: ManagerApiService,\n secureChannel: SecureChannelService,\n deviceSessionRefresherOptions: DeviceSessionRefresherOptions,\n) =>\n new DeviceSession(\n {\n connectedDevice: connectedDeviceStubBuilder(),\n id: \"fakeSessionId\",\n ...props,\n },\n loggerFactory,\n managerApi,\n secureChannel,\n deviceSessionRefresherOptions,\n );\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA2C,8DAC3CC,EAIO,wDAIA,MAAMH,EAA2B,CACtCI,EAAyC,CAAC,EAC1CC,EACAC,EACAC,EACAC,IAEA,IAAI,gBACF,CACE,mBAAiB,8BAA2B,EAC5C,GAAI,gBACJ,GAAGJ,CACL,EACAC,EACAC,EACAC,EACAC,CACF",
6
+ "names": ["DeviceSession_stub_exports", "__export", "deviceSessionStubBuilder", "__toCommonJS", "import_TransportConnectedDevice", "import_DeviceSession", "props", "loggerFactory", "managerApi", "secureChannel", "deviceSessionRefresherOptions"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var _=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var o=(E,e)=>{for(var D in e)_(E,D,{get:e[D],enumerable:!0})},d=(E,e,D,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of S(e))!A.call(E,t)&&t!==D&&_(E,t,{get:()=>e[t],enumerable:!(s=C(e,t))||s.enumerable});return E};var a=E=>d(_({},"__esModule",{value:!0}),E);var r={};o(r,{DeviceSessionEventDispatcher:()=>v,SessionEvents:()=>i});module.exports=a(r);var T=require("rxjs"),i=(n=>(n.NEW_STATE="NEW_STATE",n.REFRESH_NEEDED="REFRESH_NEEDED",n.COMMAND_SUCCEEDED="COMMAND_SUCCEEDED",n.DEVICE_STATE_UPDATE_BUSY="DEVICE_STATE_UPDATE_BUSY",n.DEVICE_STATE_UPDATE_LOCKED="DEVICE_STATE_UPDATE_LOCKED",n.DEVICE_STATE_UPDATE_CONNECTED="DEVICE_STATE_UPDATE_CONNECTED",n))(i||{});class v{_eventEmitter=new T.Subject;listen(){return this._eventEmitter.asObservable()}dispatch(e){this._eventEmitter.next(e)}}0&&(module.exports={DeviceSessionEventDispatcher,SessionEvents});
2
+ //# sourceMappingURL=DeviceSessionEventDispatcher.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/device-session/model/DeviceSessionEventDispatcher.ts"],
4
+ "sourcesContent": ["import { type Observable, Subject } from \"rxjs\";\n\nimport { type GetAppAndVersionResponse } from \"@api/index\";\nimport { type CommandResult } from \"@api/types\";\n\nexport enum SessionEvents {\n NEW_STATE = \"NEW_STATE\",\n REFRESH_NEEDED = \"REFRESH_NEEDED\",\n COMMAND_SUCCEEDED = \"COMMAND_SUCCEEDED\",\n DEVICE_STATE_UPDATE_BUSY = \"DEVICE_STATE_UPDATE_BUSY\",\n DEVICE_STATE_UPDATE_LOCKED = \"DEVICE_STATE_UPDATE_LOCKED\",\n DEVICE_STATE_UPDATE_CONNECTED = \"DEVICE_STATE_UPDATE_CONNECTED\",\n}\n\ninterface SessionEventPayloads {\n [SessionEvents.NEW_STATE]: undefined;\n [SessionEvents.REFRESH_NEEDED]: undefined;\n [SessionEvents.DEVICE_STATE_UPDATE_BUSY]: undefined;\n [SessionEvents.DEVICE_STATE_UPDATE_LOCKED]: undefined;\n [SessionEvents.DEVICE_STATE_UPDATE_CONNECTED]: undefined;\n [SessionEvents.COMMAND_SUCCEEDED]: CommandResult<GetAppAndVersionResponse>;\n}\n\nexport type NewEvent = {\n [K in SessionEvents]: SessionEventPayloads[K] extends undefined\n ? { eventName: K; eventData?: undefined }\n : { eventName: K; eventData: SessionEventPayloads[K] };\n}[SessionEvents];\n\nexport class DeviceSessionEventDispatcher {\n private _eventEmitter: Subject<NewEvent> = new Subject();\n\n public listen(): Observable<NewEvent> {\n return this._eventEmitter.asObservable();\n }\n\n public dispatch(event: NewEvent): void {\n this._eventEmitter.next(event);\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAyC,gBAK7BF,OACVA,EAAA,UAAY,YACZA,EAAA,eAAiB,iBACjBA,EAAA,kBAAoB,oBACpBA,EAAA,yBAA2B,2BAC3BA,EAAA,2BAA6B,6BAC7BA,EAAA,8BAAgC,gCANtBA,OAAA,IAwBL,MAAMD,CAA6B,CAChC,cAAmC,IAAI,UAExC,QAA+B,CACpC,OAAO,KAAK,cAAc,aAAa,CACzC,CAEO,SAASI,EAAuB,CACrC,KAAK,cAAc,KAAKA,CAAK,CAC/B,CACF",
6
+ "names": ["DeviceSessionEventDispatcher_exports", "__export", "DeviceSessionEventDispatcher", "SessionEvents", "__toCommonJS", "import_rxjs", "event"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("vitest"),i=require("./DeviceSessionEventDispatcher");(0,e.describe)("DeviceSessionEventDispatcher",()=>{let a;beforeEach(()=>{a=new i.DeviceSessionEventDispatcher}),(0,e.it)("should dispatch and receive an event without payload",()=>new Promise((o,c)=>{const t={eventName:i.SessionEvents.REFRESH_NEEDED,eventData:void 0},n=a.listen().subscribe(r=>{try{(0,e.expect)(r).toEqual(t),o(void 0)}catch(s){c(s)}finally{n.unsubscribe()}});a.dispatch(t)})),(0,e.it)("should dispatch and receive a COMMAND_SUCCEEDED event with payload",()=>new Promise((o,c)=>{const t={status:"success",data:{someField:"dummyValue"}},n={eventName:i.SessionEvents.COMMAND_SUCCEEDED,eventData:t},r=a.listen().subscribe(s=>{if(s.eventName===i.SessionEvents.COMMAND_SUCCEEDED)try{(0,e.expect)(s).toEqual(n),o(void 0)}catch(E){c(E)}finally{r.unsubscribe()}});a.dispatch(n)})),(0,e.it)("should dispatch multiple events",()=>new Promise((o,c)=>{const t=[{eventName:i.SessionEvents.DEVICE_STATE_UPDATE_BUSY,eventData:void 0},{eventName:i.SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,eventData:void 0}],n=[],r=a.listen().subscribe(s=>{if(n.push(s),n.length===t.length)try{(0,e.expect)(n).toEqual(t),o(void 0)}catch(E){c(E)}finally{r.unsubscribe()}});t.forEach(s=>a.dispatch(s))}))});
2
+ //# sourceMappingURL=DeviceSessionEventDispatcher.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/device-session/model/DeviceSessionEventDispatcher.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\n\nimport { type GetAppAndVersionResponse } from \"@api/index\";\nimport type { CommandResult } from \"@api/types\";\n\nimport {\n DeviceSessionEventDispatcher,\n type NewEvent,\n SessionEvents,\n} from \"./DeviceSessionEventDispatcher\";\n\ndescribe(\"DeviceSessionEventDispatcher\", () => {\n let dispatcher: DeviceSessionEventDispatcher;\n\n beforeEach(() => {\n dispatcher = new DeviceSessionEventDispatcher();\n });\n\n it(\"should dispatch and receive an event without payload\", () =>\n new Promise((resolve, reject) => {\n // given\n const expectedEvent: NewEvent = {\n eventName: SessionEvents.REFRESH_NEEDED,\n eventData: undefined,\n };\n\n // when\n const subscription = dispatcher.listen().subscribe((event) => {\n // then\n try {\n expect(event).toEqual(expectedEvent);\n resolve(undefined);\n } catch (error) {\n reject(error);\n } finally {\n subscription.unsubscribe();\n }\n });\n\n dispatcher.dispatch(expectedEvent);\n }));\n\n it(\"should dispatch and receive a COMMAND_SUCCEEDED event with payload\", () =>\n new Promise((resolve, reject) => {\n // given\n const dummyCommandResult = {\n status: \"success\",\n data: { someField: \"dummyValue\" },\n } as unknown as CommandResult<GetAppAndVersionResponse>;\n\n const expectedEvent: NewEvent = {\n eventName: SessionEvents.COMMAND_SUCCEEDED,\n eventData: dummyCommandResult,\n };\n\n // when\n const subscription = dispatcher.listen().subscribe((event) => {\n if (event.eventName === SessionEvents.COMMAND_SUCCEEDED) {\n // then\n try {\n expect(event).toEqual(expectedEvent);\n resolve(undefined);\n } catch (error) {\n reject(error);\n } finally {\n subscription.unsubscribe();\n }\n }\n });\n\n dispatcher.dispatch(expectedEvent);\n }));\n\n it(\"should dispatch multiple events\", () =>\n new Promise((resolve, reject) => {\n // given\n const events: NewEvent[] = [\n {\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n eventData: undefined,\n },\n {\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n eventData: undefined,\n },\n ];\n const received: NewEvent[] = [];\n\n // when\n const subscription = dispatcher.listen().subscribe((event) => {\n received.push(event);\n\n // then\n if (received.length === events.length) {\n try {\n expect(received).toEqual(events);\n resolve(undefined);\n } catch (error) {\n reject(error);\n } finally {\n subscription.unsubscribe();\n }\n }\n });\n\n events.forEach((event) => dispatcher.dispatch(event));\n }));\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAqC,kBAKrCC,EAIO,6CAEP,YAAS,+BAAgC,IAAM,CAC7C,IAAIC,EAEJ,WAAW,IAAM,CACfA,EAAa,IAAI,8BACnB,CAAC,KAED,MAAG,uDAAwD,IACzD,IAAI,QAAQ,CAACC,EAASC,IAAW,CAE/B,MAAMC,EAA0B,CAC9B,UAAW,gBAAc,eACzB,UAAW,MACb,EAGMC,EAAeJ,EAAW,OAAO,EAAE,UAAWK,GAAU,CAE5D,GAAI,IACF,UAAOA,CAAK,EAAE,QAAQF,CAAa,EACnCF,EAAQ,MAAS,CACnB,OAASK,EAAO,CACdJ,EAAOI,CAAK,CACd,QAAE,CACAF,EAAa,YAAY,CAC3B,CACF,CAAC,EAEDJ,EAAW,SAASG,CAAa,CACnC,CAAC,CAAC,KAEJ,MAAG,qEAAsE,IACvE,IAAI,QAAQ,CAACF,EAASC,IAAW,CAE/B,MAAMK,EAAqB,CACzB,OAAQ,UACR,KAAM,CAAE,UAAW,YAAa,CAClC,EAEMJ,EAA0B,CAC9B,UAAW,gBAAc,kBACzB,UAAWI,CACb,EAGMH,EAAeJ,EAAW,OAAO,EAAE,UAAWK,GAAU,CAC5D,GAAIA,EAAM,YAAc,gBAAc,kBAEpC,GAAI,IACF,UAAOA,CAAK,EAAE,QAAQF,CAAa,EACnCF,EAAQ,MAAS,CACnB,OAASK,EAAO,CACdJ,EAAOI,CAAK,CACd,QAAE,CACAF,EAAa,YAAY,CAC3B,CAEJ,CAAC,EAEDJ,EAAW,SAASG,CAAa,CACnC,CAAC,CAAC,KAEJ,MAAG,kCAAmC,IACpC,IAAI,QAAQ,CAACF,EAASC,IAAW,CAE/B,MAAMM,EAAqB,CACzB,CACE,UAAW,gBAAc,yBACzB,UAAW,MACb,EACA,CACE,UAAW,gBAAc,8BACzB,UAAW,MACb,CACF,EACMC,EAAuB,CAAC,EAGxBL,EAAeJ,EAAW,OAAO,EAAE,UAAWK,GAAU,CAI5D,GAHAI,EAAS,KAAKJ,CAAK,EAGfI,EAAS,SAAWD,EAAO,OAC7B,GAAI,IACF,UAAOC,CAAQ,EAAE,QAAQD,CAAM,EAC/BP,EAAQ,MAAS,CACnB,OAASK,EAAO,CACdJ,EAAOI,CAAK,CACd,QAAE,CACAF,EAAa,YAAY,CAC3B,CAEJ,CAAC,EAEDI,EAAO,QAASH,GAAUL,EAAW,SAASK,CAAK,CAAC,CACtD,CAAC,CAAC,CACN,CAAC",
6
+ "names": ["import_vitest", "import_DeviceSessionEventDispatcher", "dispatcher", "resolve", "reject", "expectedEvent", "subscription", "event", "error", "dummyCommandResult", "events", "received"]
7
+ }