@ledgerhq/device-management-kit 0.0.0-rnble-transport-20250226091520 → 0.0.0-rnble-transport-20250307123452

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 (244) hide show
  1. package/lib/cjs/package.json +2 -2
  2. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
  4. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  6. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  7. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  8. package/lib/cjs/src/api/command/os/SecureElementFlagsParser.js +2 -0
  9. package/lib/cjs/src/api/command/os/SecureElementFlagsParser.js.map +7 -0
  10. package/lib/cjs/src/api/command/os/SecureElementFlagsParser.test.js +2 -0
  11. package/lib/cjs/src/api/command/os/SecureElementFlagsParser.test.js.map +7 -0
  12. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  13. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  14. package/lib/cjs/src/api/device/SecureElementFlags.js +2 -0
  15. package/lib/cjs/src/api/device/SecureElementFlags.js.map +7 -0
  16. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  17. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  18. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  19. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  20. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  21. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  22. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  23. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +2 -2
  24. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  25. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +3 -3
  26. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  27. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  28. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  29. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +2 -2
  30. package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
  31. package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +1 -1
  32. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.js +2 -0
  33. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.js.map +7 -0
  34. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +2 -0
  35. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +7 -0
  36. package/lib/cjs/src/api/index.js +1 -1
  37. package/lib/cjs/src/api/index.js.map +3 -3
  38. package/lib/cjs/src/api/secure-channel/constants.js +2 -0
  39. package/lib/cjs/src/api/secure-channel/constants.js.map +7 -0
  40. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +2 -0
  41. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +7 -0
  42. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js +2 -0
  43. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js.map +7 -0
  44. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js +2 -0
  45. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +7 -0
  46. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +2 -0
  47. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +7 -0
  48. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +2 -0
  49. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +7 -0
  50. package/lib/cjs/src/api/secure-channel/task/types.js +2 -0
  51. package/lib/cjs/src/api/secure-channel/task/types.js.map +7 -0
  52. package/lib/cjs/src/api/secure-channel/utils.js +2 -0
  53. package/lib/cjs/src/api/secure-channel/utils.js.map +7 -0
  54. package/lib/cjs/src/api/secure-channel/utils.test.js +2 -0
  55. package/lib/cjs/src/api/secure-channel/utils.test.js.map +7 -0
  56. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  57. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  58. package/lib/cjs/src/api/transport/model/Errors.js.map +2 -2
  59. package/lib/cjs/src/api/types.js +1 -1
  60. package/lib/cjs/src/api/types.js.map +1 -1
  61. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  62. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  63. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  64. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  65. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  66. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  67. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  68. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +2 -2
  69. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  70. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  71. package/lib/cjs/src/internal/device-session/service/RefresherService.js +2 -0
  72. package/lib/cjs/src/internal/device-session/service/RefresherService.js.map +7 -0
  73. package/lib/cjs/src/internal/device-session/service/RefresherService.test.js +2 -0
  74. package/lib/cjs/src/internal/device-session/service/RefresherService.test.js.map +7 -0
  75. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  76. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +3 -3
  77. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js +1 -1
  78. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js.map +3 -3
  79. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +1 -1
  80. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +2 -2
  81. package/lib/cjs/src/internal/secure-channel/data/SecureChannelDataSource.js.map +1 -1
  82. package/lib/cjs/src/internal/secure-channel/model/Errors.js +1 -1
  83. package/lib/cjs/src/internal/secure-channel/model/Errors.js.map +3 -3
  84. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  85. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  86. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
  87. package/lib/esm/package.json +2 -2
  88. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  89. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  90. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  91. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  92. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  93. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  94. package/lib/esm/src/api/command/os/SecureElementFlagsParser.js +2 -0
  95. package/lib/esm/src/api/command/os/SecureElementFlagsParser.js.map +7 -0
  96. package/lib/esm/src/api/command/os/SecureElementFlagsParser.test.js +2 -0
  97. package/lib/esm/src/api/command/os/SecureElementFlagsParser.test.js.map +7 -0
  98. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  99. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  100. package/lib/esm/src/api/device/SecureElementFlags.js +1 -0
  101. package/lib/esm/src/api/device/SecureElementFlags.js.map +7 -0
  102. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  103. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  104. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  105. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  106. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  107. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +2 -2
  108. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  109. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +3 -3
  110. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  111. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  112. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  113. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +2 -2
  114. package/lib/esm/src/api/device-session/DeviceSessionState.js.map +1 -1
  115. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.js +2 -0
  116. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.js.map +7 -0
  117. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +2 -0
  118. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +7 -0
  119. package/lib/esm/src/api/index.js +1 -1
  120. package/lib/esm/src/api/index.js.map +3 -3
  121. package/lib/esm/src/api/secure-channel/constants.js +2 -0
  122. package/lib/esm/src/api/secure-channel/constants.js.map +7 -0
  123. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +2 -0
  124. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +7 -0
  125. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js +2 -0
  126. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.js.map +7 -0
  127. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/types.js +1 -0
  128. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/types.js.map +7 -0
  129. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +2 -0
  130. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +7 -0
  131. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +2 -0
  132. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +7 -0
  133. package/lib/esm/src/api/secure-channel/task/types.js +2 -0
  134. package/lib/esm/src/api/secure-channel/task/types.js.map +7 -0
  135. package/lib/esm/src/api/secure-channel/utils.js +2 -0
  136. package/lib/esm/src/api/secure-channel/utils.js.map +7 -0
  137. package/lib/esm/src/api/secure-channel/utils.test.js +2 -0
  138. package/lib/esm/src/api/secure-channel/utils.test.js.map +7 -0
  139. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +1 -1
  140. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +3 -3
  141. package/lib/esm/src/api/transport/model/Errors.js.map +2 -2
  142. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  143. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  144. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  145. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  146. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  147. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  148. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  149. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +2 -2
  150. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  151. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  152. package/lib/esm/src/internal/device-session/service/RefresherService.js +2 -0
  153. package/lib/esm/src/internal/device-session/service/RefresherService.js.map +7 -0
  154. package/lib/esm/src/internal/device-session/service/RefresherService.test.js +2 -0
  155. package/lib/esm/src/internal/device-session/service/RefresherService.test.js.map +7 -0
  156. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  157. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +3 -3
  158. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js +1 -1
  159. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js.map +3 -3
  160. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +1 -1
  161. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +2 -2
  162. package/lib/esm/src/internal/secure-channel/model/Errors.js +1 -1
  163. package/lib/esm/src/internal/secure-channel/model/Errors.js.map +3 -3
  164. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  165. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  166. package/lib/types/src/api/DeviceManagementKit.d.ts +10 -8
  167. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  168. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +8 -2
  169. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  170. package/lib/types/src/api/command/os/SecureElementFlagsParser.d.ts +43 -0
  171. package/lib/types/src/api/command/os/SecureElementFlagsParser.d.ts.map +1 -0
  172. package/lib/types/src/api/command/os/SecureElementFlagsParser.test.d.ts +2 -0
  173. package/lib/types/src/api/command/os/SecureElementFlagsParser.test.d.ts.map +1 -0
  174. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
  175. package/lib/types/src/api/device/SecureElementFlags.d.ts +41 -0
  176. package/lib/types/src/api/device/SecureElementFlags.d.ts.map +1 -0
  177. package/lib/types/src/api/device-action/DeviceAction.d.ts +1 -0
  178. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  179. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  180. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts +1 -1
  181. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts.map +1 -1
  182. package/lib/types/src/api/device-session/DeviceSessionState.d.ts +4 -0
  183. package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
  184. package/lib/types/src/api/device-session/use-case/{ToggleDeviceSessionRefresher.d.ts → DisableDeviceSessionRefresher.d.ts} +6 -6
  185. package/lib/types/src/api/device-session/use-case/DisableDeviceSessionRefresher.d.ts.map +1 -0
  186. package/lib/types/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.d.ts +2 -0
  187. package/lib/types/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.d.ts.map +1 -0
  188. package/lib/types/src/api/index.d.ts +1 -0
  189. package/lib/types/src/api/index.d.ts.map +1 -1
  190. package/lib/types/src/api/secure-channel/constants.d.ts +2 -0
  191. package/lib/types/src/api/secure-channel/constants.d.ts.map +1 -0
  192. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts +8 -0
  193. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -0
  194. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.d.ts +1 -0
  195. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.test.d.ts.map +1 -0
  196. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +50 -0
  197. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -0
  198. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +23 -0
  199. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -0
  200. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.test.d.ts +2 -0
  201. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.test.d.ts.map +1 -0
  202. package/lib/types/src/api/secure-channel/task/types.d.ts +105 -0
  203. package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -0
  204. package/lib/types/src/api/secure-channel/utils.d.ts +30 -0
  205. package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -0
  206. package/lib/types/src/api/secure-channel/utils.test.d.ts +2 -0
  207. package/lib/types/src/api/secure-channel/utils.test.d.ts.map +1 -0
  208. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -1
  209. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  210. package/lib/types/src/api/types.d.ts +1 -0
  211. package/lib/types/src/api/types.d.ts.map +1 -1
  212. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +1 -1
  213. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +4 -3
  214. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  215. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
  216. package/lib/types/src/internal/device-session/service/RefresherService.d.ts +10 -0
  217. package/lib/types/src/internal/device-session/service/RefresherService.d.ts.map +1 -0
  218. package/lib/types/src/internal/device-session/service/RefresherService.test.d.ts +2 -0
  219. package/lib/types/src/internal/device-session/service/RefresherService.test.d.ts.map +1 -0
  220. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts +14 -3
  221. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts.map +1 -1
  222. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts +3 -3
  223. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts.map +1 -1
  224. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts +13 -13
  225. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts.map +1 -1
  226. package/lib/types/src/internal/secure-channel/model/Errors.d.ts +6 -0
  227. package/lib/types/src/internal/secure-channel/model/Errors.d.ts.map +1 -1
  228. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +3 -3
  229. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
  230. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +1 -0
  231. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
  232. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  233. package/package.json +3 -3
  234. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js +0 -2
  235. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js.map +0 -7
  236. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +0 -2
  237. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +0 -7
  238. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js +0 -2
  239. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js.map +0 -7
  240. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +0 -2
  241. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +0 -7
  242. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.d.ts.map +0 -1
  243. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.d.ts +0 -2
  244. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.ts"],
4
- "sourcesContent": ["import { Subject } from \"rxjs\";\n\nimport { type DeviceId, DeviceModel } from \"@api/device/DeviceModel\";\nimport { deviceModelStubBuilder } from \"@api/device-model/model/DeviceModel.stub\";\nimport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { type DiscoveredDevice, type Transport } from \"@api/types\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { ListenToAvailableDevicesUseCase } from \"./ListenToAvailableDevicesUseCase\";\n\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\nlet transportService: TransportService;\nfunction makeMockTransport(props: Partial<Transport>): Transport {\n return {\n listenToAvailableDevices: vi.fn(),\n connect: vi.fn(),\n disconnect: vi.fn(),\n startDiscovering: vi.fn(),\n stopDiscovering: vi.fn(),\n getIdentifier: vi.fn(),\n isSupported: vi.fn(),\n ...props,\n };\n}\n\nconst mockInternalDeviceModel = deviceModelStubBuilder();\nfunction makeMockDeviceModel(id: DeviceId): DeviceModel {\n return new DeviceModel({\n id,\n model: mockInternalDeviceModel.id,\n name: mockInternalDeviceModel.productName,\n });\n}\n\nfunction setup2MockTransports() {\n const transportAKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportBKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportA = makeMockTransport({\n listenToAvailableDevices: () =>\n transportAKnownDevicesSubject.asObservable(),\n });\n const transportB = makeMockTransport({\n listenToAvailableDevices: () =>\n transportBKnownDevicesSubject.asObservable(),\n });\n return {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n };\n}\n\nfunction makeMockTransportDiscoveredDevice(\n id: string,\n): TransportDiscoveredDevice {\n return {\n id,\n deviceModel: mockInternalDeviceModel,\n transport: \"mock\",\n };\n}\n\ndescribe(\"ListenToKnownDevicesUseCase\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n describe(\"when no transports are available\", () => {\n it(\"should return no discovered devices\", () =>\n new Promise<void>((resolve, reject) => {\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([]);\n\n const useCase = new ListenToAvailableDevicesUseCase(transportService);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n useCase.execute().subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n complete: () => {\n try {\n expect(observedDiscoveredDevices).toEqual([[]]);\n resolve();\n } catch (error) {\n reject(error as Error);\n }\n },\n error: (error) => {\n reject(error);\n },\n });\n }));\n });\n\n describe(\"when one transport is available\", () => {\n it(\"should return discovered devices from one transport\", () => {\n const { transportA, transportAKnownDevicesSubject } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe((devices) => {\n observedDiscoveredDevices.push(devices);\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n name: \"Ledger Nano X\",\n transport: \"mock\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 2 known devices\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 1 known device (device1 disconnects)\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices (device2 disconnects)\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([]);\n });\n });\n\n describe(\"when multiple transports are available\", () => {\n it(\"should return discovered devices from one of the transports as soon as it emits\", () => {\n const { transportAKnownDevicesSubject, transportA, transportB } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n });\n\n it(\"should combine discovered devices from multiple transports\", () => {\n const {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n } = setup2MockTransports();\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 1 known device\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 2 known devices\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n makeMockTransportDiscoveredDevice(\"transportB-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n\n // When transport B emits 0 known devices\n transportBKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[4]).toEqual([]);\n\n // When transport B listen observable completes\n transportBKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).toHaveBeenCalled(); // Should complete now because all transports have completed\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_rxjs", "import_DeviceModel", "import_DefaultTransportService", "import_ListenToAvailableDevicesUseCase", "transportService", "makeMockTransport", "props", "mockInternalDeviceModel", "makeMockDeviceModel", "id", "setup2MockTransports", "transportAKnownDevicesSubject", "transportBKnownDevicesSubject", "transportA", "transportB", "makeMockTransportDiscoveredDevice", "resolve", "reject", "useCase", "observedDiscoveredDevices", "devices", "error", "onError", "onComplete"]
4
+ "sourcesContent": ["import { Just } from \"purify-ts\";\nimport { Subject } from \"rxjs\";\n\nimport { type DeviceId, DeviceModel } from \"@api/device/DeviceModel\";\nimport { deviceModelStubBuilder } from \"@api/device-model/model/DeviceModel.stub\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport { type Transport } from \"@api/transport/model/Transport\";\nimport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { ListenToAvailableDevicesUseCase } from \"./ListenToAvailableDevicesUseCase\";\n\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\nlet transportService: TransportService;\nlet logger: LoggerPublisherService;\nfunction makeMockTransport(props: Partial<Transport>): Transport {\n return {\n listenToAvailableDevices: vi.fn(),\n connect: vi.fn(),\n disconnect: vi.fn(),\n startDiscovering: vi.fn(),\n stopDiscovering: vi.fn(),\n getIdentifier: vi.fn(),\n isSupported: vi.fn(),\n ...props,\n };\n}\n\nconst mockInternalDeviceModel = deviceModelStubBuilder();\nfunction makeMockDeviceModel(id: DeviceId): DeviceModel {\n return new DeviceModel({\n id,\n model: mockInternalDeviceModel.id,\n name: mockInternalDeviceModel.productName,\n });\n}\n\nfunction setup2MockTransports() {\n const transportAKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportBKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportA = makeMockTransport({\n listenToAvailableDevices: () =>\n transportAKnownDevicesSubject.asObservable(),\n getIdentifier: () => \"mock-A\",\n });\n const transportB = makeMockTransport({\n listenToAvailableDevices: () =>\n transportBKnownDevicesSubject.asObservable(),\n getIdentifier: () => \"mock-B\",\n });\n return {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n };\n}\n\nfunction makeMockTransportDiscoveredDevice(\n id: string,\n): TransportDiscoveredDevice {\n return {\n id,\n deviceModel: mockInternalDeviceModel,\n transport: \"mock\",\n };\n}\n\ndescribe(\"ListenToAvailableDevicesUseCase\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n logger = new DefaultLoggerPublisherService(\n [],\n \"listen-to-available-devices-use-case-test\",\n );\n });\n\n describe(\"when no transports are available\", () => {\n it(\"should return no discovered devices\", () =>\n new Promise<void>((resolve, reject) => {\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([]);\n\n const useCase = new ListenToAvailableDevicesUseCase(\n transportService,\n () => logger,\n );\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n useCase.execute({}).subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n complete: () => {\n try {\n expect(observedDiscoveredDevices).toEqual([[]]);\n resolve();\n } catch (error) {\n reject(error as Error);\n }\n },\n error: (error) => {\n reject(error);\n },\n });\n }));\n });\n\n describe(\"when one transport is available\", () => {\n it(\"should return discovered devices from one transport\", () => {\n const { transportA, transportAKnownDevicesSubject } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n new ListenToAvailableDevicesUseCase(transportService, () => logger)\n .execute({})\n .subscribe((devices) => {\n observedDiscoveredDevices.push(devices);\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n name: \"Ledger Nano X\",\n transport: \"mock\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 2 known devices\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 1 known device (device1 disconnects)\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices (device2 disconnects)\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([]);\n });\n });\n\n describe(\"when multiple transports are available\", () => {\n it(\"should return discovered devices from one of the transports as soon as it emits\", () => {\n const { transportAKnownDevicesSubject, transportA, transportB } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n\n new ListenToAvailableDevicesUseCase(transportService, () => logger)\n .execute({})\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n });\n\n it(\"should combine discovered devices from multiple transports\", () => {\n const {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n } = setup2MockTransports();\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n new ListenToAvailableDevicesUseCase(transportService, () => logger)\n .execute({})\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 1 known device\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 2 known devices\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n makeMockTransportDiscoveredDevice(\"transportB-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n\n // When transport B emits 0 known devices\n transportBKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[4]).toEqual([]);\n\n // When transport B listen observable completes\n transportBKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).toHaveBeenCalled(); // Should complete now because all transports have completed\n });\n\n it(\"should filter out the devices by transport\", () => {\n const {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n } = setup2MockTransports();\n\n const all = vi\n .spyOn(transportService, \"getAllTransports\")\n .mockReturnValue([transportA, transportB]);\n\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Just(transportA),\n );\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n\n new ListenToAvailableDevicesUseCase(transportService, () => logger)\n .execute({ transport: \"mock-A\" })\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n expect(all).toBeCalledTimes(1);\n expect(transportService.getTransport).toBeCalledWith(\"mock-A\");\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 1 known device\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n ]);\n\n expect(observedDiscoveredDevices.length).toEqual(1);\n\n // When transportB emits 2 known devices\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n makeMockTransportDiscoveredDevice(\"transportB-device2\"),\n ]);\n\n // Only transportA is listened to, so only transportA devices should be returned\n expect(observedDiscoveredDevices.length).toEqual(1);\n\n // // When transportA emits 0 known devices\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).toHaveBeenCalledOnce(); // Should complete now because transportA has completed\n\n // When transport B emits 0 known devices\n transportBKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[1]).toEqual([]);\n\n // When transport B listen observable completes\n transportBKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).toHaveBeenCalledOnce(); // Should not rerun complete because transportB is not listened to\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_rxjs", "import_DeviceModel", "import_DefaultLoggerPublisherService", "import_DefaultTransportService", "import_ListenToAvailableDevicesUseCase", "transportService", "logger", "makeMockTransport", "props", "mockInternalDeviceModel", "makeMockDeviceModel", "id", "setup2MockTransports", "transportAKnownDevicesSubject", "transportBKnownDevicesSubject", "transportA", "transportB", "makeMockTransportDiscoveredDevice", "resolve", "reject", "useCase", "observedDiscoveredDevices", "devices", "error", "onError", "onComplete", "all"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var E=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var P=(r,e)=>{for(var t in e)a(r,t,{get:e[t],enumerable:!0})},b=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!w.call(r,o)&&o!==t&&a(r,o,{get:()=>e[o],enumerable:!(n=l(e,o))||n.enumerable});return r};var h=(r,e,t)=>(t=r!=null?E(C(r)):{},b(e||!r||!r.__esModule?a(t,"default",{value:r,enumerable:!0}):t,r)),y=r=>b(a({},"__esModule",{value:!0}),r),S=(r,e,t,n)=>{for(var o=n>1?void 0:n?l(e,t):e,p=r.length-1,k;p>=0;p--)(k=r[p])&&(o=(n?k(e,t,o):k(o))||o);return n&&o&&a(e,t,o),o},W=(r,e)=>(t,n)=>e(t,n,r);var A={};P(A,{DefaultSecureChannelDataSource:()=>c});module.exports=y(A);var i=require("inversify"),d=h(require("isomorphic-ws")),m=require("purify-ts"),s=h(require("url")),u=require("../../secure-channel/di/secureChannelTypes"),f=require("../../secure-channel/model/Errors");let c=class{webSocketBaseUrl;constructor({webSocketUrl:e}){this.webSocketBaseUrl=e}genuineCheck(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/genuine`,query:e});return this._connectWebSocket(t)}listInstalledApps(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/apps/list`,query:e});return this._connectWebSocket(t)}updateMcu(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/mcu`,query:e});return this._connectWebSocket(t)}updateFirmware(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}installApp(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}uninstallApp(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}_connectWebSocket(e){try{return(0,m.Right)(new d.default(e))}catch(t){return(0,m.Left)(new f.WebSocketConnectionError(t))}}};c=S([(0,i.injectable)(),W(0,(0,i.inject)(u.secureChannelTypes.DmkConfig))],c);0&&(module.exports={DefaultSecureChannelDataSource});
1
+ "use strict";var E=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var P=(r,e)=>{for(var t in e)a(r,t,{get:e[t],enumerable:!0})},b=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!w.call(r,o)&&o!==t&&a(r,o,{get:()=>e[o],enumerable:!(n=l(e,o))||n.enumerable});return r};var h=(r,e,t)=>(t=r!=null?E(C(r)):{},b(e||!r||!r.__esModule?a(t,"default",{value:r,enumerable:!0}):t,r)),y=r=>b(a({},"__esModule",{value:!0}),r),S=(r,e,t,n)=>{for(var o=n>1?void 0:n?l(e,t):e,p=r.length-1,k;p>=0;p--)(k=r[p])&&(o=(n?k(e,t,o):k(o))||o);return n&&o&&a(e,t,o),o},W=(r,e)=>(t,n)=>e(t,n,r);var A={};P(A,{DefaultSecureChannelDataSource:()=>c});module.exports=y(A);var i=require("inversify"),d=h(require("isomorphic-ws")),m=require("purify-ts"),s=h(require("url")),u=require("../../secure-channel/di/secureChannelTypes"),f=require("../../secure-channel/model/Errors");let c=class{webSocketBaseUrl;constructor({webSocketUrl:e}){this.webSocketBaseUrl=e}genuineCheck(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/genuine`,query:e});return this._connectWebSocket(t)}installApp(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}listInstalledApps(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/apps/list`,query:e});return this._connectWebSocket(t)}uninstallApp(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}updateFirmware(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/install`,query:e});return this._connectWebSocket(t)}updateMcu(e){const t=s.default.format({pathname:`${this.webSocketBaseUrl}/mcu`,query:e});return this._connectWebSocket(t)}_connectWebSocket(e){try{return(0,m.Right)(new d.default(e))}catch(t){return(0,m.Left)(new f.WebSocketConnectionError(t))}}};c=S([(0,i.injectable)(),W(0,(0,i.inject)(u.secureChannelTypes.DmkConfig))],c);0&&(module.exports={DefaultSecureChannelDataSource});
2
2
  //# sourceMappingURL=DefaultSecureChannelDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/data/DefaultSecureChannelDataSource.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either, Left, Right } from \"purify-ts\";\nimport URL from \"url\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\n@injectable()\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n private readonly webSocketBaseUrl: string;\n\n constructor(\n @inject(secureChannelTypes.DmkConfig)\n { webSocketUrl }: DmkConfig,\n ) {\n this.webSocketBaseUrl = webSocketUrl;\n }\n\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/genuine`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/apps/list`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/mcu`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n _connectWebSocket(\n address: string,\n ): Either<WebSocketConnectionError, WebSocket> {\n try {\n return Right(new WebSocket(address));\n } catch (error) {\n return Left(new WebSocketConnectionError(error));\n }\n }\n}\n"],
5
- "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAAsB,4BACtBC,EAAoC,qBACpCC,EAAgB,kBAGhBC,EAAmC,0DACnCC,EAAyC,iDAalC,IAAMC,EAAN,KAAwE,CAC5D,iBAEjB,YAEE,CAAE,aAAAC,CAAa,EACf,CACA,KAAK,iBAAmBA,CAC1B,CAEA,aACEC,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,aAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,UACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,OAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,eACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,WACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,aACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACEA,EAC6C,CAC7C,GAAI,CACF,SAAO,SAAM,IAAI,EAAAE,QAAUF,CAAO,CAAC,CACrC,OAASG,EAAO,CACd,SAAO,QAAK,IAAI,2BAAyBA,CAAK,CAAC,CACjD,CACF,CACF,EA/EaN,EAANO,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,SAAS,IAJ3BR",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either, Left, Right } from \"purify-ts\";\nimport URL from \"url\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\n@injectable()\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n private readonly webSocketBaseUrl: string;\n\n constructor(\n @inject(secureChannelTypes.DmkConfig)\n { webSocketUrl }: DmkConfig,\n ) {\n this.webSocketBaseUrl = webSocketUrl;\n }\n\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/genuine`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/apps/list`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/install`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = URL.format({\n pathname: `${this.webSocketBaseUrl}/mcu`,\n query: params,\n });\n return this._connectWebSocket(address);\n }\n\n _connectWebSocket(\n address: string,\n ): Either<WebSocketConnectionError, WebSocket> {\n try {\n return Right(new WebSocket(address));\n } catch (error) {\n return Left(new WebSocketConnectionError(error));\n }\n }\n}\n"],
5
+ "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAAsB,4BACtBC,EAAoC,qBACpCC,EAAgB,kBAGhBC,EAAmC,0DACnCC,EAAyC,iDAalC,IAAMC,EAAN,KAAwE,CAC5D,iBAEjB,YAEE,CAAE,aAAAC,CAAa,EACf,CACA,KAAK,iBAAmBA,CAC1B,CAEA,aACEC,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,WACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,aAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,aACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,eACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,WAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,UACED,EAC6C,CAC7C,MAAMC,EAAU,EAAAC,QAAI,OAAO,CACzB,SAAU,GAAG,KAAK,gBAAgB,OAClC,MAAOF,CACT,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACEA,EAC6C,CAC7C,GAAI,CACF,SAAO,SAAM,IAAI,EAAAE,QAAUF,CAAO,CAAC,CACrC,OAASG,EAAO,CACd,SAAO,QAAK,IAAI,2BAAyBA,CAAK,CAAC,CACjD,CACF,CACF,EA/EaN,EAANO,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,SAAS,IAJ3BR",
6
6
  "names": ["DefaultSecureChannelDataSource_exports", "__export", "DefaultSecureChannelDataSource", "__toCommonJS", "import_inversify", "import_isomorphic_ws", "import_purify_ts", "import_url", "import_secureChannelTypes", "import_Errors", "DefaultSecureChannelDataSource", "webSocketUrl", "params", "address", "URL", "WebSocket", "error", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/data/SecureChannelDataSource.ts"],
4
- "sourcesContent": ["import type WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\n\nimport { type WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport type {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\n/**\n * Interface representing a data source for the Manager API.\n */\nexport interface SecureChannelDataSource {\n /**\n * Performs a genuine check on the device.\n *\n * @param params - The parameters required for the genuine check.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Lists the installed applications on the device.\n *\n * @param params - The parameters required for the genuine check.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Updates the MCU (Microcontroller Unit) of the device.\n *\n * @param params - The parameters required to update the MCU.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Updates the firmware of the device.\n *\n * @param params - The parameters required to update the firmware.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Installs applications on the device.\n *\n * @param params - The parameters required to install the applications.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Uninstalls applications from the device.\n *\n * @param params - The parameters required to uninstall the applications.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n}\n"],
4
+ "sourcesContent": ["import type WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\n\nimport { type WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport type {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\n/**\n * Interface representing a data source for the Manager API.\n */\nexport interface SecureChannelDataSource {\n /**\n * Performs a genuine check on the device.\n *\n * @param params - The parameters required for the genuine check.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Installs applications on the device.\n *\n * @param params - The parameters required to install the applications.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Lists the installed applications on the device.\n *\n * @param params - The parameters required for the genuine check.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Uninstalls applications from the device.\n *\n * @param params - The parameters required to uninstall the applications.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Updates the firmware of the device.\n *\n * @param params - The parameters required to update the firmware.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n\n /**\n * Updates the MCU (Microcontroller Unit) of the device.\n *\n * @param params - The parameters required to update the MCU.\n * @returns Either containing a WebSocket connection or a WebSocketConnectionError.\n */\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket>;\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SecureChannelDataSource_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var m=(o,r)=>{for(var t in r)e(o,t,{get:r[t],enumerable:!0})},E=(o,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of k(r))!l.call(o,n)&&n!==t&&e(o,n,{get:()=>r[n],enumerable:!(i=c(r,n))||i.enumerable});return o};var a=o=>E(e({},"__esModule",{value:!0}),o);var s={};m(s,{WebSocketConnectionError:()=>p});module.exports=a(s);class p{constructor(r){this.error=r;this.originalError=r}_tag="WebSocketConnectionError";originalError}0&&(module.exports={WebSocketConnectionError});
1
+ "use strict";var t=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var e in r)t(o,e,{get:r[e],enumerable:!0})},s=(o,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of l(r))!a.call(o,n)&&n!==e&&t(o,n,{get:()=>r[n],enumerable:!(i=c(r,n))||i.enumerable});return o};var u=o=>s(t({},"__esModule",{value:!0}),o);var p={};E(p,{SecureChannelError:()=>m,WebSocketConnectionError:()=>k});module.exports=u(p);class k{constructor(r){this.error=r;this.originalError=r}_tag="WebSocketConnectionError";originalError}class m{constructor(r){this.error=r;this.originalError=r}_tag="SecureChannelError";originalError}0&&(module.exports={SecureChannelError,WebSocketConnectionError});
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/model/Errors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class WebSocketConnectionError implements DmkError {\n _tag = \"WebSocketConnectionError\";\n originalError?: unknown;\n\n constructor(public readonly error: unknown) {\n this.originalError = error;\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAEO,MAAME,CAA6C,CAIxD,YAA4BE,EAAgB,CAAhB,WAAAA,EAC1B,KAAK,cAAgBA,CACvB,CALA,KAAO,2BACP,aAKF",
6
- "names": ["Errors_exports", "__export", "WebSocketConnectionError", "__toCommonJS", "error"]
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class WebSocketConnectionError implements DmkError {\n _tag = \"WebSocketConnectionError\";\n originalError?: unknown;\n\n constructor(public readonly error: unknown) {\n this.originalError = error;\n }\n}\n\nexport class SecureChannelError implements DmkError {\n _tag = \"SecureChannelError\";\n originalError?: unknown;\n\n constructor(public readonly error: unknown) {\n this.originalError = error;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,6BAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAMG,CAA6C,CAIxD,YAA4BE,EAAgB,CAAhB,WAAAA,EAC1B,KAAK,cAAgBA,CACvB,CALA,KAAO,2BACP,aAKF,CAEO,MAAMH,CAAuC,CAIlD,YAA4BG,EAAgB,CAAhB,WAAAA,EAC1B,KAAK,cAAgBA,CACvB,CALA,KAAO,qBACP,aAKF",
6
+ "names": ["Errors_exports", "__export", "SecureChannelError", "WebSocketConnectionError", "__toCommonJS", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var I=(o,e)=>{for(var r in e)p(o,r,{get:e[r],enumerable:!0})},b=(o,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of g(e))!k.call(o,a)&&a!==r&&p(o,a,{get:()=>e[a],enumerable:!(t=d(e,a))||t.enumerable});return o};var A=o=>b(p({},"__esModule",{value:!0}),o),u=(o,e,r,t)=>{for(var a=t>1?void 0:t?d(e,r):e,s=o.length-1,n;s>=0;s--)(n=o[s])&&(a=(t?n(e,r,a):n(a))||a);return t&&a&&p(e,r,a),a},S=(o,e)=>(r,t)=>e(r,t,o);var f={};I(f,{DefaultSecureChannelService:()=>i});module.exports=A(f);var c=require("inversify"),h=require("../../secure-channel/di/secureChannelTypes");let i=class{constructor(e){this.dataSource=e}genuineCheck(e,r){const t={targetId:e.targetId.toString(),perso:r.perso};return this.dataSource.genuineCheck(t)}listInstalledApps(e,r){const t={targetId:e.targetId.toString(),perso:r.perso};return this.dataSource.listInstalledApps(t)}updateMcu(e,r){const t={targetId:e.targetId.toString(),version:r.version};return this.dataSource.updateMcu(t)}updateFirmware(e,r){const t={targetId:e.targetId.toString(),perso:r.perso,firmware:r.firmware,firmwareKey:r.firmwareKey};return this.dataSource.updateFirmware(t)}installApp(e,r){const{perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m}=r,l={targetId:e.targetId.toString(),perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m};return this.dataSource.installApp(l)}uninstallApp(e,r){const{perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m}=r,l={targetId:e.targetId.toString(),perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m};return this.dataSource.uninstallApp(l)}};i=u([(0,c.injectable)(),S(0,(0,c.inject)(h.secureChannelTypes.SecureChannelDataSource))],i);0&&(module.exports={DefaultSecureChannelService});
1
+ "use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var I=(o,e)=>{for(var r in e)p(o,r,{get:e[r],enumerable:!0})},b=(o,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of g(e))!k.call(o,a)&&a!==r&&p(o,a,{get:()=>e[a],enumerable:!(t=d(e,a))||t.enumerable});return o};var A=o=>b(p({},"__esModule",{value:!0}),o),u=(o,e,r,t)=>{for(var a=t>1?void 0:t?d(e,r):e,s=o.length-1,n;s>=0;s--)(n=o[s])&&(a=(t?n(e,r,a):n(a))||a);return t&&a&&p(e,r,a),a},S=(o,e)=>(r,t)=>e(r,t,o);var f={};I(f,{DefaultSecureChannelService:()=>i});module.exports=A(f);var c=require("inversify"),h=require("../../secure-channel/di/secureChannelTypes");let i=class{constructor(e){this.dataSource=e}genuineCheck(e,r){const t={targetId:e.targetId.toString(),perso:r.perso};return this.dataSource.genuineCheck(t)}installApp(e,r){const{perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m}=r,l={targetId:e.targetId.toString(),perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m};return this.dataSource.installApp(l)}listInstalledApps(e,r){const t={targetId:e.targetId.toString(),perso:r.perso};return this.dataSource.listInstalledApps(t)}uninstallApp(e,r){const{perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m}=r,l={targetId:e.targetId.toString(),perso:t,firmware:a,firmwareKey:s,deleteKey:n,hash:m};return this.dataSource.uninstallApp(l)}updateFirmware(e,r){const t={targetId:e.targetId.toString(),perso:r.perso,firmware:r.firmware,firmwareKey:r.firmwareKey};return this.dataSource.updateFirmware(t)}updateMcu(e,r){const t={targetId:e.targetId.toString(),version:r.version};return this.dataSource.updateMcu(t)}};i=u([(0,c.injectable)(),S(0,(0,c.inject)(h.secureChannelTypes.SecureChannelDataSource))],i);0&&(module.exports={DefaultSecureChannelService});
2
2
  //# sourceMappingURL=DefaultSecureChannelService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/service/DefaultSecureChannelService.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either } from \"purify-ts\";\n\nimport { GetOsVersionResponse } from \"@api/index\";\nimport { Application } from \"@internal/manager-api/model/Application\";\nimport { FinalFirmware } from \"@internal/manager-api/model/Firmware\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelService } from \"./SecureChannelService\";\n\n@injectable()\nexport class DefaultSecureChannelService implements SecureChannelService {\n constructor(\n @inject(secureChannelTypes.SecureChannelDataSource)\n private readonly dataSource: SecureChannelDataSource,\n ) {}\n\n genuineCheck(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: GenuineCheckParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n };\n return this.dataSource.genuineCheck(params);\n }\n\n listInstalledApps(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: ListInstalledAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n };\n return this.dataSource.listInstalledApps(params);\n }\n\n updateMcu(\n deviceInfo: GetOsVersionResponse,\n param: { version: string },\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: UpdateMcuParams = {\n targetId: deviceInfo.targetId.toString(),\n version: param.version,\n };\n return this.dataSource.updateMcu(params);\n }\n\n updateFirmware(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: UpdateFirmwareParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n firmware: finalFirmware.firmware,\n firmwareKey: finalFirmware.firmwareKey,\n };\n return this.dataSource.updateFirmware(params);\n }\n\n installApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket> {\n const { perso, firmware, firmwareKey, deleteKey, hash } = app;\n const params: InstallAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso,\n firmware,\n firmwareKey,\n deleteKey,\n hash,\n };\n return this.dataSource.installApp(params);\n }\n\n uninstallApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket> {\n const { perso, firmware, firmwareKey, deleteKey, hash } = app;\n const params: UninstallAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso,\n firmware,\n firmwareKey,\n deleteKey,\n hash,\n };\n return this.dataSource.uninstallApp(params);\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAQnCC,EAAmC,0DAc5B,IAAMC,EAAN,KAAkE,CACvE,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,aACEC,EACAC,EAC6C,CAC7C,MAAMC,EAA6B,CACjC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,KACvB,EACA,OAAO,KAAK,WAAW,aAAaC,CAAM,CAC5C,CAEA,kBACEF,EACAC,EAC6C,CAC7C,MAAMC,EAAkC,CACtC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,KACvB,EACA,OAAO,KAAK,WAAW,kBAAkBC,CAAM,CACjD,CAEA,UACEF,EACAG,EAC6C,CAC7C,MAAMD,EAA0B,CAC9B,SAAUF,EAAW,SAAS,SAAS,EACvC,QAASG,EAAM,OACjB,EACA,OAAO,KAAK,WAAW,UAAUD,CAAM,CACzC,CAEA,eACEF,EACAC,EAC6C,CAC7C,MAAMC,EAA+B,CACnC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,MACrB,SAAUA,EAAc,SACxB,YAAaA,EAAc,WAC7B,EACA,OAAO,KAAK,WAAW,eAAeC,CAAM,CAC9C,CAEA,WACEF,EACAI,EAC6C,CAC7C,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,UAAAC,EAAW,KAAAC,CAAK,EAAIL,EACpDF,EAA4B,CAChC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAAK,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EACA,OAAO,KAAK,WAAW,WAAWP,CAAM,CAC1C,CAEA,aACEF,EACAI,EAC6C,CAC7C,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,UAAAC,EAAW,KAAAC,CAAK,EAAIL,EACpDF,EAA8B,CAClC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAAK,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EACA,OAAO,KAAK,WAAW,aAAaP,CAAM,CAC5C,CACF,EAnFaJ,EAANY,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,qBAAmB,uBAAuB,IAFzCb",
6
- "names": ["DefaultSecureChannelService_exports", "__export", "DefaultSecureChannelService", "__toCommonJS", "import_inversify", "import_secureChannelTypes", "DefaultSecureChannelService", "dataSource", "deviceInfo", "finalFirmware", "params", "param", "app", "perso", "firmware", "firmwareKey", "deleteKey", "hash", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either } from \"purify-ts\";\n\nimport { GetOsVersionResponse } from \"@api/index\";\nimport { Application } from \"@internal/manager-api/model/Application\";\nimport { FinalFirmware } from \"@internal/manager-api/model/Firmware\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelService } from \"./SecureChannelService\";\n\n@injectable()\nexport class DefaultSecureChannelService implements SecureChannelService {\n constructor(\n @inject(secureChannelTypes.SecureChannelDataSource)\n private readonly dataSource: SecureChannelDataSource,\n ) {}\n\n genuineCheck(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: GenuineCheckParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n };\n return this.dataSource.genuineCheck(params);\n }\n\n installApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket> {\n const { perso, firmware, firmwareKey, deleteKey, hash } = app;\n const params: InstallAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso,\n firmware,\n firmwareKey,\n deleteKey,\n hash,\n };\n return this.dataSource.installApp(params);\n }\n\n listInstalledApps(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: ListInstalledAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n };\n return this.dataSource.listInstalledApps(params);\n }\n\n uninstallApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket> {\n const { perso, firmware, firmwareKey, deleteKey, hash } = app;\n const params: UninstallAppsParams = {\n targetId: deviceInfo.targetId.toString(),\n perso,\n firmware,\n firmwareKey,\n deleteKey,\n hash,\n };\n return this.dataSource.uninstallApp(params);\n }\n\n updateFirmware(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: UpdateFirmwareParams = {\n targetId: deviceInfo.targetId.toString(),\n perso: finalFirmware.perso,\n firmware: finalFirmware.firmware,\n firmwareKey: finalFirmware.firmwareKey,\n };\n return this.dataSource.updateFirmware(params);\n }\n\n updateMcu(\n deviceInfo: GetOsVersionResponse,\n param: { version: string },\n ): Either<WebSocketConnectionError, WebSocket> {\n const params: UpdateMcuParams = {\n targetId: deviceInfo.targetId.toString(),\n version: param.version,\n };\n return this.dataSource.updateMcu(params);\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAQnCC,EAAmC,0DAc5B,IAAMC,EAAN,KAAkE,CACvE,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,aACEC,EACAC,EAC6C,CAC7C,MAAMC,EAA6B,CACjC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,KACvB,EACA,OAAO,KAAK,WAAW,aAAaC,CAAM,CAC5C,CAEA,WACEF,EACAG,EAC6C,CAC7C,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,UAAAC,EAAW,KAAAC,CAAK,EAAIL,EACpDD,EAA4B,CAChC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAAI,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EACA,OAAO,KAAK,WAAW,WAAWN,CAAM,CAC1C,CAEA,kBACEF,EACAC,EAC6C,CAC7C,MAAMC,EAAkC,CACtC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,KACvB,EACA,OAAO,KAAK,WAAW,kBAAkBC,CAAM,CACjD,CAEA,aACEF,EACAG,EAC6C,CAC7C,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,UAAAC,EAAW,KAAAC,CAAK,EAAIL,EACpDD,EAA8B,CAClC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAAI,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EACA,OAAO,KAAK,WAAW,aAAaN,CAAM,CAC5C,CAEA,eACEF,EACAC,EAC6C,CAC7C,MAAMC,EAA+B,CACnC,SAAUF,EAAW,SAAS,SAAS,EACvC,MAAOC,EAAc,MACrB,SAAUA,EAAc,SACxB,YAAaA,EAAc,WAC7B,EACA,OAAO,KAAK,WAAW,eAAeC,CAAM,CAC9C,CAEA,UACEF,EACAS,EAC6C,CAC7C,MAAMP,EAA0B,CAC9B,SAAUF,EAAW,SAAS,SAAS,EACvC,QAASS,EAAM,OACjB,EACA,OAAO,KAAK,WAAW,UAAUP,CAAM,CACzC,CACF,EAnFaJ,EAANY,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,qBAAmB,uBAAuB,IAFzCb",
6
+ "names": ["DefaultSecureChannelService_exports", "__export", "DefaultSecureChannelService", "__toCommonJS", "import_inversify", "import_secureChannelTypes", "DefaultSecureChannelService", "dataSource", "deviceInfo", "finalFirmware", "params", "app", "perso", "firmware", "firmwareKey", "deleteKey", "hash", "param", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/service/SecureChannelService.ts"],
4
- "sourcesContent": ["import type WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\n\nimport { type GetOsVersionResponse } from \"@api/index\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\nimport { type WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\n\n/**\n * Interface representing the Secure Channel Service.\n * Some parameters are placeholders and will be updated when relative HTTP requests are ready.\n */\nexport interface SecureChannelService {\n genuineCheck(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n installApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket>;\n listInstalledApps(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n uninstallApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket>;\n updateFirmware(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n // TODO: Update `param` type with defined type when it's ready\n updateMcu(\n deviceInfo: GetOsVersionResponse,\n param: { version: string },\n ): Either<WebSocketConnectionError, WebSocket>;\n}\n"],
4
+ "sourcesContent": ["import type WebSocket from \"isomorphic-ws\";\nimport { type Either } from \"purify-ts\";\n\nimport { type GetOsVersionResponse } from \"@api/index\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\nimport { type WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\n\n/**\n * Interface representing the Secure Channel Service.\n * Some parameters are placeholders and will be updated when relative HTTP requests are ready.\n */\nexport interface SecureChannelService {\n genuineCheck(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n installApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket>;\n listInstalledApps(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n uninstallApp(\n deviceInfo: GetOsVersionResponse,\n app: Application,\n ): Either<WebSocketConnectionError, WebSocket>;\n updateFirmware(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n updateFirmware(\n deviceInfo: GetOsVersionResponse,\n finalFirmware: FinalFirmware,\n ): Either<WebSocketConnectionError, WebSocket>;\n // TODO: Update the parameters\n updateMcu(\n deviceInfo: GetOsVersionResponse,\n param: { version: string },\n ): Either<WebSocketConnectionError, WebSocket>;\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SecureChannelService_exports", "__toCommonJS"]
7
7
  }
@@ -46,7 +46,7 @@
46
46
  "xstate": "^5.19.2"
47
47
  },
48
48
  "peerDependencies": {
49
- "rxjs": "^7.8.1"
49
+ "rxjs": "^7.8.2"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@ledgerhq/esbuild-tools": "workspace:*",
@@ -58,7 +58,7 @@
58
58
  "@types/semver": "^7.5.8",
59
59
  "@types/uuid": "^10.0.0",
60
60
  "@types/ws": "^8.5.14",
61
- "rxjs": "^7.8.1",
61
+ "rxjs": "^7.8.2",
62
62
  "ts-node": "^10.9.2"
63
63
  }
64
64
  }
@@ -1,2 +1,2 @@
1
- import{commandTypes as r}from"./command/di/commandTypes";import{configTypes as c}from"../internal/config/di/configTypes";import{deviceSessionTypes as t}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as s}from"../internal/discovery/di/discoveryTypes";import{sendTypes as a}from"../internal/send/di/sendTypes";import{makeContainer as C}from"../../src/di";import{deviceActionTypes as m}from"./device-action/di/deviceActionTypes";class S{container;constructor({stub:e,transports:o,loggers:i,config:n}={}){this.container=C({stub:e,transports:o,loggers:i,config:n})}getVersion(){return this.container.get(c.GetDmkVersionUseCase).getDmkVersion()}startDiscovering(e){return this.container.get(s.StartDiscoveringUseCase).execute(e)}stopDiscovering(){return this.container.get(s.StopDiscoveringUseCase).execute()}listenToAvailableDevices(){return this.container.get(s.ListenToAvailableDevicesUseCase).execute()}connect(e){return this.container.get(s.ConnectUseCase).execute(e)}disconnect(e){return this.container.get(s.DisconnectUseCase).execute(e)}sendApdu(e){return this.container.get(a.SendApduUseCase).execute(e)}sendCommand(e){return this.container.get(r.SendCommandUseCase).execute(e)}executeDeviceAction(e){return this.container.get(m.ExecuteDeviceActionUseCase).execute(e)}getConnectedDevice(e){return this.container.get(s.GetConnectedDeviceUseCase).execute(e)}getDeviceSessionState(e){return this.container.get(t.GetDeviceSessionStateUseCase).execute(e)}close(){return this.container.get(t.CloseSessionsUseCase).execute()}listConnectedDevices(){return this.container.get(s.ListConnectedDevicesUseCase).execute()}listenToConnectedDevice(){return this.container.get(s.ListenToConnectedDeviceUseCase).execute()}toggleDeviceSessionRefresher(e){return this.container.get(t.ToggleDeviceSessionRefresherUseCase).execute(e)}}export{S as DeviceManagementKit};
1
+ import{commandTypes as r}from"./command/di/commandTypes";import{configTypes as c}from"../internal/config/di/configTypes";import{deviceSessionTypes as t}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as s}from"../internal/discovery/di/discoveryTypes";import{sendTypes as a}from"../internal/send/di/sendTypes";import{makeContainer as C}from"../../src/di";import{deviceActionTypes as p}from"./device-action/di/deviceActionTypes";class S{container;constructor({stub:e,transports:i,loggers:o,config:n}={}){this.container=C({stub:e,transports:i,loggers:o,config:n})}getVersion(){return this.container.get(c.GetDmkVersionUseCase).getDmkVersion()}startDiscovering(e){return this.container.get(s.StartDiscoveringUseCase).execute(e)}stopDiscovering(){return this.container.get(s.StopDiscoveringUseCase).execute()}listenToAvailableDevices(e){return this.container.get(s.ListenToAvailableDevicesUseCase).execute(e)}connect(e){return this.container.get(s.ConnectUseCase).execute(e)}disconnect(e){return this.container.get(s.DisconnectUseCase).execute(e)}sendApdu(e){return this.container.get(a.SendApduUseCase).execute(e)}sendCommand(e){return this.container.get(r.SendCommandUseCase).execute(e)}executeDeviceAction(e){return this.container.get(p.ExecuteDeviceActionUseCase).execute(e)}getConnectedDevice(e){return this.container.get(s.GetConnectedDeviceUseCase).execute(e)}getDeviceSessionState(e){return this.container.get(t.GetDeviceSessionStateUseCase).execute(e)}close(){return this.container.get(t.CloseSessionsUseCase).execute()}listConnectedDevices(){return this.container.get(s.ListConnectedDevicesUseCase).execute()}listenToConnectedDevice(){return this.container.get(s.ListenToConnectedDeviceUseCase).execute()}disableDeviceSessionRefresher(e){return this.container.get(t.DisableDeviceSessionRefresherUseCase).execute(e)}}export{S as DeviceManagementKit};
2
2
  //# sourceMappingURL=DeviceManagementKit.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/DeviceManagementKit.ts"],
4
- "sourcesContent": ["import { type Container } from \"inversify\";\nimport { type Observable } from \"rxjs\";\n\nimport { commandTypes } from \"@api/command/di/commandTypes\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type SendCommandUseCase,\n type SendCommandUseCaseArgs,\n} from \"@api/command/use-case/SendCommandUseCase\";\nimport {\n type ExecuteDeviceActionUseCase,\n type ExecuteDeviceActionUseCaseArgs,\n} from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport {\n type ConnectUseCaseArgs,\n type DisconnectUseCaseArgs,\n type DiscoveredDevice,\n type GetConnectedDeviceUseCaseArgs,\n type SendApduUseCaseArgs,\n type StartDiscoveringUseCaseArgs,\n} from \"@api/types\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { type GetDmkVersionUseCase } from \"@internal/config/use-case/GetDmkVersionUseCase\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { type CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { type GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { type ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { type DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { type GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { type ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { type ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { type ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport type { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport type { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport { type SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { makeContainer, type MakeContainerProps } from \"@root/src/di\";\n\nimport {\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"./device-action/DeviceAction\";\nimport { deviceActionTypes } from \"./device-action/di/deviceActionTypes\";\nimport { type ToggleDeviceSessionRefresherUseCase } from \"./device-session/use-case/ToggleDeviceSessionRefresher\";\nimport { type DmkError } from \"./Error\";\n\n/**\n * The main class to interact with the Device Management Kit.\n *\n * NB: do not instantiate this class directly, instead, use `LedgerDMKBuilder`.\n */\nexport class DeviceManagementKit {\n readonly container: Container;\n /** @internal */\n constructor({\n stub,\n transports,\n loggers,\n config,\n }: Partial<MakeContainerProps> = {}) {\n // NOTE: MakeContainerProps might not be the exact type here\n // For the init of the project this is sufficient, but we might need to\n // update the constructor arguments as we go (we might have more than just the container config)\n this.container = makeContainer({\n stub,\n transports,\n loggers,\n config,\n });\n }\n\n /**\n * Returns a promise resolving to the version of the SDK.\n */\n getVersion(): Promise<string> {\n return this.container\n .get<GetDmkVersionUseCase>(configTypes.GetDmkVersionUseCase)\n .getDmkVersion();\n }\n\n /**\n * Starts discovering devices connected.\n *\n * For the WeHID implementation, this use-case needs to be called as a result\n * of an user interaction (button \"click\" event for ex).\n *\n * @param {StartDiscoveringUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice>} An observable of discovered devices.\n */\n startDiscovering(\n args: StartDiscoveringUseCaseArgs,\n ): Observable<DiscoveredDevice> {\n return this.container\n .get<StartDiscoveringUseCase>(discoveryTypes.StartDiscoveringUseCase)\n .execute(args);\n }\n\n /**\n * Stops discovering devices connected.\n */\n stopDiscovering() {\n return this.container\n .get<StopDiscoveringUseCase>(discoveryTypes.StopDiscoveringUseCase)\n .execute();\n }\n\n /**\n * Listen to list of known discovered devices (and later BLE).\n *\n * @returns {Observable<DiscoveredDevice[]>} An observable of known discovered devices.\n */\n listenToAvailableDevices(): Observable<DiscoveredDevice[]> {\n return this.container\n .get<ListenToAvailableDevicesUseCase>(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n )\n .execute();\n }\n\n /**\n * Connects to a device previously discovered with `DeviceManagementKit.startDiscovering`.\n * Creates a new device session which:\n * - Represents the connection to the device.\n * - Is terminated upon disconnection of the device.\n * - Exposes the device state through an observable (see `DeviceManagementKit.getDeviceSessionState`)\n * - Should be used for all subsequent communication with the device.\n *\n * @param {ConnectUseCaseArgs} args - The device ID (obtained in discovery) to connect to.\n * @returns The session ID to use for further communication with the device.\n */\n connect(args: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ConnectUseCase>(discoveryTypes.ConnectUseCase)\n .execute(args);\n }\n\n /**\n * Disconnects to a discovered device.\n *\n * @param {DisconnectUseCaseArgs} args - The session ID to disconnect.\n */\n disconnect(args: DisconnectUseCaseArgs): Promise<void> {\n return this.container\n .get<DisconnectUseCase>(discoveryTypes.DisconnectUseCase)\n .execute(args);\n }\n\n /**\n * Sends an APDU command to a device through a device session.\n *\n * @param {SendApduUseCaseArgs} args - The device session ID and APDU command to send.\n */\n sendApdu(args: SendApduUseCaseArgs): Promise<ApduResponse> {\n return this.container\n .get<SendApduUseCase>(sendTypes.SendApduUseCase)\n .execute(args);\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param {SendCommandUseCaseArgs<Response, Args, ErrorCodes>} args - The device session ID, command, command error codes and command parameters to send.\n * @returns A promise resolving with the response from the command.\n */\n sendCommand<Response, Args, ErrorCodes>(\n args: SendCommandUseCaseArgs<Response, Args, ErrorCodes>,\n ): Promise<CommandResult<Response, ErrorCodes>> {\n return this.container\n .get<SendCommandUseCase>(commandTypes.SendCommandUseCase)\n .execute(args);\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n args: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n return this.container\n .get<ExecuteDeviceActionUseCase>(\n deviceActionTypes.ExecuteDeviceActionUseCase,\n )\n .execute(args);\n }\n\n /**\n * Gets the connected from its device session ID.\n *\n * @param {GetConnectedDeviceUseCaseArgs} args - The device session ID.\n * @returns {ConnectedDevice} The connected device.\n */\n getConnectedDevice(args: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n return this.container\n .get<GetConnectedDeviceUseCase>(discoveryTypes.GetConnectedDeviceUseCase)\n .execute(args);\n }\n\n /**\n * Gets the device state of a session.\n *\n * @param {{DeviceSessionId}} args - The device session ID.\n * @returns {Observable<DeviceSessionState>} An observable of the session device state.\n */\n getDeviceSessionState(args: {\n sessionId: DeviceSessionId;\n }): Observable<DeviceSessionState> {\n return this.container\n .get<GetDeviceSessionStateUseCase>(\n deviceSessionTypes.GetDeviceSessionStateUseCase,\n )\n .execute(args);\n }\n\n /**\n * Close the Device Management kit.\n *\n */\n close() {\n return this.container\n .get<CloseSessionsUseCase>(deviceSessionTypes.CloseSessionsUseCase)\n .execute();\n }\n\n /**\n * Lists all connected devices.\n *\n * @returns {ConnectedDevice[]} The list of device sessions.\n */\n listConnectedDevices(): ConnectedDevice[] {\n return this.container\n .get<ListConnectedDevicesUseCase>(\n discoveryTypes.ListConnectedDevicesUseCase,\n )\n .execute();\n }\n\n /**\n * Listen to connected device.\n *\n * @returns {Observable<ConnectedDevice>} An observable of connected device.\n */\n listenToConnectedDevice(): Observable<ConnectedDevice> {\n return this.container\n .get<ListenToConnectedDeviceUseCase>(\n discoveryTypes.ListenToConnectedDeviceUseCase,\n )\n .execute();\n }\n\n /**\n * Toggle the device session refresher.\n *\n * @param {DeviceSessionId} args - The device session ID.\n */\n toggleDeviceSessionRefresher(args: {\n sessionId: DeviceSessionId;\n enabled: boolean;\n }) {\n return this.container\n .get<ToggleDeviceSessionRefresherUseCase>(\n deviceSessionTypes.ToggleDeviceSessionRefresherUseCase,\n )\n .execute(args);\n }\n}\n"],
5
- "mappings": "AAGA,OAAS,gBAAAA,MAAoB,+BAsB7B,OAAS,eAAAC,MAAmB,kCAE5B,OAAS,sBAAAC,MAA0B,iDAGnC,OAAS,kBAAAC,MAAsB,wCAS/B,OAAS,aAAAC,MAAiB,8BAE1B,OAAS,iBAAAC,MAA8C,eAMvD,OAAS,qBAAAC,MAAyB,uCAS3B,MAAMC,CAAoB,CACtB,UAET,YAAY,CACV,KAAAC,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,EAAiC,CAAC,EAAG,CAInC,KAAK,UAAYN,EAAc,CAC7B,KAAAG,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,CAAC,CACH,CAKA,YAA8B,CAC5B,OAAO,KAAK,UACT,IAA0BV,EAAY,oBAAoB,EAC1D,cAAc,CACnB,CAWA,iBACEW,EAC8B,CAC9B,OAAO,KAAK,UACT,IAA6BT,EAAe,uBAAuB,EACnE,QAAQS,CAAI,CACjB,CAKA,iBAAkB,CAChB,OAAO,KAAK,UACT,IAA4BT,EAAe,sBAAsB,EACjE,QAAQ,CACb,CAOA,0BAA2D,CACzD,OAAO,KAAK,UACT,IACCA,EAAe,+BACjB,EACC,QAAQ,CACb,CAaA,QAAQS,EAAoD,CAC1D,OAAO,KAAK,UACT,IAAoBT,EAAe,cAAc,EACjD,QAAQS,CAAI,CACjB,CAOA,WAAWA,EAA4C,CACrD,OAAO,KAAK,UACT,IAAuBT,EAAe,iBAAiB,EACvD,QAAQS,CAAI,CACjB,CAOA,SAASA,EAAkD,CACzD,OAAO,KAAK,UACT,IAAqBR,EAAU,eAAe,EAC9C,QAAQQ,CAAI,CACjB,CAQA,YACEA,EAC8C,CAC9C,OAAO,KAAK,UACT,IAAwBZ,EAAa,kBAAkB,EACvD,QAAQY,CAAI,CACjB,CAEA,oBAMEA,EAMiE,CACjE,OAAO,KAAK,UACT,IACCN,EAAkB,0BACpB,EACC,QAAQM,CAAI,CACjB,CAQA,mBAAmBA,EAAsD,CACvE,OAAO,KAAK,UACT,IAA+BT,EAAe,yBAAyB,EACvE,QAAQS,CAAI,CACjB,CAQA,sBAAsBA,EAEa,CACjC,OAAO,KAAK,UACT,IACCV,EAAmB,4BACrB,EACC,QAAQU,CAAI,CACjB,CAMA,OAAQ,CACN,OAAO,KAAK,UACT,IAA0BV,EAAmB,oBAAoB,EACjE,QAAQ,CACb,CAOA,sBAA0C,CACxC,OAAO,KAAK,UACT,IACCC,EAAe,2BACjB,EACC,QAAQ,CACb,CAOA,yBAAuD,CACrD,OAAO,KAAK,UACT,IACCA,EAAe,8BACjB,EACC,QAAQ,CACb,CAOA,6BAA6BS,EAG1B,CACD,OAAO,KAAK,UACT,IACCV,EAAmB,mCACrB,EACC,QAAQU,CAAI,CACjB,CACF",
4
+ "sourcesContent": ["import { type Container } from \"inversify\";\nimport { type Observable } from \"rxjs\";\n\nimport { commandTypes } from \"@api/command/di/commandTypes\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type SendCommandUseCase,\n type SendCommandUseCaseArgs,\n} from \"@api/command/use-case/SendCommandUseCase\";\nimport {\n type ExecuteDeviceActionUseCase,\n type ExecuteDeviceActionUseCaseArgs,\n} from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport {\n type ConnectUseCaseArgs,\n type DisconnectUseCaseArgs,\n type DiscoveredDevice,\n type GetConnectedDeviceUseCaseArgs,\n type SendApduUseCaseArgs,\n type StartDiscoveringUseCaseArgs,\n} from \"@api/types\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { type GetDmkVersionUseCase } from \"@internal/config/use-case/GetDmkVersionUseCase\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { type CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { type GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { type ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { type DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { type GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { type ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport {\n type ListenToAvailableDevicesUseCase,\n type ListenToAvailableDevicesUseCaseArgs,\n} from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { type ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport type { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport type { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport { type SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { makeContainer, type MakeContainerProps } from \"@root/src/di\";\n\nimport {\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"./device-action/DeviceAction\";\nimport { deviceActionTypes } from \"./device-action/di/deviceActionTypes\";\nimport { type DisableDeviceSessionRefresherUseCase } from \"./device-session/use-case/DisableDeviceSessionRefresher\";\nimport { type DmkError } from \"./Error\";\n\n/**\n * The main class to interact with the Device Management Kit.\n *\n * NB: do not instantiate this class directly, instead, use `LedgerDMKBuilder`.\n */\nexport class DeviceManagementKit {\n readonly container: Container;\n /** @internal */\n constructor({\n stub,\n transports,\n loggers,\n config,\n }: Partial<MakeContainerProps> = {}) {\n // NOTE: MakeContainerProps might not be the exact type here\n // For the init of the project this is sufficient, but we might need to\n // update the constructor arguments as we go (we might have more than just the container config)\n this.container = makeContainer({\n stub,\n transports,\n loggers,\n config,\n });\n }\n\n /**\n * Returns a promise resolving to the version of the SDK.\n */\n getVersion(): Promise<string> {\n return this.container\n .get<GetDmkVersionUseCase>(configTypes.GetDmkVersionUseCase)\n .getDmkVersion();\n }\n\n /**\n * Starts discovering devices connected.\n *\n * For the WeHID implementation, this use-case needs to be called as a result\n * of an user interaction (button \"click\" event for ex).\n *\n * @param {StartDiscoveringUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice>} An observable of discovered devices.\n */\n startDiscovering(\n args: StartDiscoveringUseCaseArgs,\n ): Observable<DiscoveredDevice> {\n return this.container\n .get<StartDiscoveringUseCase>(discoveryTypes.StartDiscoveringUseCase)\n .execute(args);\n }\n\n /**\n * Stops discovering devices connected.\n */\n stopDiscovering() {\n return this.container\n .get<StopDiscoveringUseCase>(discoveryTypes.StopDiscoveringUseCase)\n .execute();\n }\n\n /**\n * Listen to list of known discovered devices (and later BLE).\n * @param {ListenToAvailableDevicesUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice[]>} An observable of known discovered devices.\n */\n listenToAvailableDevices(\n args: ListenToAvailableDevicesUseCaseArgs,\n ): Observable<DiscoveredDevice[]> {\n return this.container\n .get<ListenToAvailableDevicesUseCase>(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n )\n .execute(args);\n }\n\n /**\n * Connects to a device previously discovered with `DeviceManagementKit.startDiscovering`.\n * Creates a new device session which:\n * - Represents the connection to the device.\n * - Is terminated upon disconnection of the device.\n * - Exposes the device state through an observable (see `DeviceManagementKit.getDeviceSessionState`)\n * - Should be used for all subsequent communication with the device.\n *\n * @param {ConnectUseCaseArgs} args - The device ID (obtained in discovery) to connect to.\n * @returns The session ID to use for further communication with the device.\n */\n connect(args: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ConnectUseCase>(discoveryTypes.ConnectUseCase)\n .execute(args);\n }\n\n /**\n * Disconnects to a discovered device.\n *\n * @param {DisconnectUseCaseArgs} args - The session ID to disconnect.\n */\n disconnect(args: DisconnectUseCaseArgs): Promise<void> {\n return this.container\n .get<DisconnectUseCase>(discoveryTypes.DisconnectUseCase)\n .execute(args);\n }\n\n /**\n * Sends an APDU command to a device through a device session.\n *\n * @param {SendApduUseCaseArgs} args - The device session ID and APDU command to send.\n */\n sendApdu(args: SendApduUseCaseArgs): Promise<ApduResponse> {\n return this.container\n .get<SendApduUseCase>(sendTypes.SendApduUseCase)\n .execute(args);\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param {SendCommandUseCaseArgs<Response, Args, ErrorCodes>} args - The device session ID, command, command error codes and command parameters to send.\n * @returns A promise resolving with the response from the command.\n */\n sendCommand<Response, Args, ErrorCodes>(\n args: SendCommandUseCaseArgs<Response, Args, ErrorCodes>,\n ): Promise<CommandResult<Response, ErrorCodes>> {\n return this.container\n .get<SendCommandUseCase>(commandTypes.SendCommandUseCase)\n .execute(args);\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n args: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n return this.container\n .get<ExecuteDeviceActionUseCase>(\n deviceActionTypes.ExecuteDeviceActionUseCase,\n )\n .execute(args);\n }\n\n /**\n * Gets the connected from its device session ID.\n *\n * @param {GetConnectedDeviceUseCaseArgs} args - The device session ID.\n * @returns {ConnectedDevice} The connected device.\n */\n getConnectedDevice(args: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n return this.container\n .get<GetConnectedDeviceUseCase>(discoveryTypes.GetConnectedDeviceUseCase)\n .execute(args);\n }\n\n /**\n * Gets the device state of a session.\n *\n * @param {{ sessionId: DeviceSessionId }} args - The device session ID.\n * @returns {Observable<DeviceSessionState>} An observable of the session device state.\n */\n getDeviceSessionState(args: {\n sessionId: DeviceSessionId;\n }): Observable<DeviceSessionState> {\n return this.container\n .get<GetDeviceSessionStateUseCase>(\n deviceSessionTypes.GetDeviceSessionStateUseCase,\n )\n .execute(args);\n }\n\n /**\n * Close the Device Management kit.\n *\n */\n close() {\n return this.container\n .get<CloseSessionsUseCase>(deviceSessionTypes.CloseSessionsUseCase)\n .execute();\n }\n\n /**\n * Lists all connected devices.\n *\n * @returns {ConnectedDevice[]} The list of device sessions.\n */\n listConnectedDevices(): ConnectedDevice[] {\n return this.container\n .get<ListConnectedDevicesUseCase>(\n discoveryTypes.ListConnectedDevicesUseCase,\n )\n .execute();\n }\n\n /**\n * Listen to connected device.\n *\n * @returns {Observable<ConnectedDevice>} An observable of connected device.\n */\n listenToConnectedDevice(): Observable<ConnectedDevice> {\n return this.container\n .get<ListenToConnectedDeviceUseCase>(\n discoveryTypes.ListenToConnectedDeviceUseCase,\n )\n .execute();\n }\n\n /**\n * Disable the device session refresher.\n *\n * @param {DisableDeviceSessionRefresherUseCaseArgs} args - The device session ID and a string to identify the blocker.\n * @returns {() => void} A function to reenable the device session refresher.\n */\n disableDeviceSessionRefresher(args: {\n sessionId: DeviceSessionId;\n blockerId: string;\n }) {\n return this.container\n .get<DisableDeviceSessionRefresherUseCase>(\n deviceSessionTypes.DisableDeviceSessionRefresherUseCase,\n )\n .execute(args);\n }\n}\n"],
5
+ "mappings": "AAGA,OAAS,gBAAAA,MAAoB,+BAsB7B,OAAS,eAAAC,MAAmB,kCAE5B,OAAS,sBAAAC,MAA0B,iDAGnC,OAAS,kBAAAC,MAAsB,wCAY/B,OAAS,aAAAC,MAAiB,8BAE1B,OAAS,iBAAAC,MAA8C,eAMvD,OAAS,qBAAAC,MAAyB,uCAS3B,MAAMC,CAAoB,CACtB,UAET,YAAY,CACV,KAAAC,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,EAAiC,CAAC,EAAG,CAInC,KAAK,UAAYN,EAAc,CAC7B,KAAAG,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,CAAC,CACH,CAKA,YAA8B,CAC5B,OAAO,KAAK,UACT,IAA0BV,EAAY,oBAAoB,EAC1D,cAAc,CACnB,CAWA,iBACEW,EAC8B,CAC9B,OAAO,KAAK,UACT,IAA6BT,EAAe,uBAAuB,EACnE,QAAQS,CAAI,CACjB,CAKA,iBAAkB,CAChB,OAAO,KAAK,UACT,IAA4BT,EAAe,sBAAsB,EACjE,QAAQ,CACb,CAOA,yBACES,EACgC,CAChC,OAAO,KAAK,UACT,IACCT,EAAe,+BACjB,EACC,QAAQS,CAAI,CACjB,CAaA,QAAQA,EAAoD,CAC1D,OAAO,KAAK,UACT,IAAoBT,EAAe,cAAc,EACjD,QAAQS,CAAI,CACjB,CAOA,WAAWA,EAA4C,CACrD,OAAO,KAAK,UACT,IAAuBT,EAAe,iBAAiB,EACvD,QAAQS,CAAI,CACjB,CAOA,SAASA,EAAkD,CACzD,OAAO,KAAK,UACT,IAAqBR,EAAU,eAAe,EAC9C,QAAQQ,CAAI,CACjB,CAQA,YACEA,EAC8C,CAC9C,OAAO,KAAK,UACT,IAAwBZ,EAAa,kBAAkB,EACvD,QAAQY,CAAI,CACjB,CAEA,oBAMEA,EAMiE,CACjE,OAAO,KAAK,UACT,IACCN,EAAkB,0BACpB,EACC,QAAQM,CAAI,CACjB,CAQA,mBAAmBA,EAAsD,CACvE,OAAO,KAAK,UACT,IAA+BT,EAAe,yBAAyB,EACvE,QAAQS,CAAI,CACjB,CAQA,sBAAsBA,EAEa,CACjC,OAAO,KAAK,UACT,IACCV,EAAmB,4BACrB,EACC,QAAQU,CAAI,CACjB,CAMA,OAAQ,CACN,OAAO,KAAK,UACT,IAA0BV,EAAmB,oBAAoB,EACjE,QAAQ,CACb,CAOA,sBAA0C,CACxC,OAAO,KAAK,UACT,IACCC,EAAe,2BACjB,EACC,QAAQ,CACb,CAOA,yBAAuD,CACrD,OAAO,KAAK,UACT,IACCA,EAAe,8BACjB,EACC,QAAQ,CACb,CAQA,8BAA8BS,EAG3B,CACD,OAAO,KAAK,UACT,IACCV,EAAmB,oCACrB,EACC,QAAQU,CAAI,CACjB,CACF",
6
6
  "names": ["commandTypes", "configTypes", "deviceSessionTypes", "discoveryTypes", "sendTypes", "makeContainer", "deviceActionTypes", "DeviceManagementKit", "stub", "transports", "loggers", "config", "args"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{StubLocalConfigDataSource as c}from"../internal/config/data/LocalConfigDataSource.stub";import{configTypes as r}from"../internal/config/di/configTypes";import{deviceSessionTypes as a}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as t}from"../internal/discovery/di/discoveryTypes";import{sendTypes as d}from"../internal/send/di/sendTypes";import m from"../../package.json";import{StubUseCase as p}from"../../src/di.stub";import{commandTypes as f}from"./command/di/commandTypes";import{ConsoleLogger as l}from"./logger-subscriber/service/ConsoleLogger";import{DeviceManagementKit as o}from"./DeviceManagementKit";vi.mock("./logger-subscriber/service/ConsoleLogger");let e,n;describe("DeviceManagementKit",()=>{describe("clean",()=>{beforeEach(()=>{n=new l,e=new o({stub:!1,loggers:[n],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url"}})}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(o)}),it("should return a clean `version`",async()=>{expect(await e.getVersion()).toBe(m.version)}),it("should have startDiscovery method",()=>{expect(e.startDiscovering).toBeDefined()}),it("should have stopDiscovery method",()=>{expect(e.stopDiscovering).toBeDefined()}),it("should have connect method",()=>{expect(e.connect).toBeDefined()}),it("should have sendApdu method",()=>{expect(e.sendApdu).toBeDefined()}),it("should have getConnectedDevice method",()=>{expect(e.getConnectedDevice).toBeDefined()}),it("should have sendCommand method",()=>{expect(e.sendCommand).toBeDefined()}),it("should have listConnectedDevices method",()=>{expect(e.listConnectedDevices).toBeDefined()}),it("should have listenToConnectedDevice method",()=>{expect(e.listenToConnectedDevice).toBeDefined()}),it("should have toggleDeviceSessionRefresher method",()=>{expect(e.toggleDeviceSessionRefresher).toBeDefined()})}),describe("stubbed",()=>{beforeEach(()=>{e=new o({stub:!0,loggers:[],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url"}})}),it("should create a stubbed dmk",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(o)}),it("should return a stubbed config",()=>{expect(e.container.get(r.LocalConfigDataSource)).toBeInstanceOf(c)}),it("should return a stubbed version",async()=>{expect(await e.getVersion()).toBe("0.0.0-stub.1")}),it.each([[t.StartDiscoveringUseCase],[t.StopDiscoveringUseCase],[t.ConnectUseCase],[d.SendApduUseCase],[f.SendCommandUseCase],[t.GetConnectedDeviceUseCase],[t.DisconnectUseCase],[a.GetDeviceSessionStateUseCase],[t.ListConnectedDevicesUseCase],[t.ListenToConnectedDeviceUseCase]])("should have %s use case",i=>{const s=e.container.get(i);expect(s).toBeInstanceOf(p),expect(s.execute()).toBe("stub")})})});
1
+ import{StubLocalConfigDataSource as c}from"../internal/config/data/LocalConfigDataSource.stub";import{configTypes as r}from"../internal/config/di/configTypes";import{deviceSessionTypes as a}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as t}from"../internal/discovery/di/discoveryTypes";import{sendTypes as d}from"../internal/send/di/sendTypes";import m from"../../package.json";import{StubUseCase as p}from"../../src/di.stub";import{commandTypes as f}from"./command/di/commandTypes";import{ConsoleLogger as l}from"./logger-subscriber/service/ConsoleLogger";import{DeviceManagementKit as o}from"./DeviceManagementKit";vi.mock("./logger-subscriber/service/ConsoleLogger");let e,i;describe("DeviceManagementKit",()=>{describe("clean",()=>{beforeEach(()=>{i=new l,e=new o({stub:!1,loggers:[i],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url"}})}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(o)}),it("should return a clean `version`",async()=>{expect(await e.getVersion()).toBe(m.version)}),it("should have startDiscovery method",()=>{expect(e.startDiscovering).toBeDefined()}),it("should have stopDiscovery method",()=>{expect(e.stopDiscovering).toBeDefined()}),it("should have connect method",()=>{expect(e.connect).toBeDefined()}),it("should have sendApdu method",()=>{expect(e.sendApdu).toBeDefined()}),it("should have getConnectedDevice method",()=>{expect(e.getConnectedDevice).toBeDefined()}),it("should have sendCommand method",()=>{expect(e.sendCommand).toBeDefined()}),it("should have listConnectedDevices method",()=>{expect(e.listConnectedDevices).toBeDefined()}),it("should have listenToConnectedDevice method",()=>{expect(e.listenToConnectedDevice).toBeDefined()}),it("should have disableDeviceSessionRefresher method",()=>{expect(e.disableDeviceSessionRefresher).toBeDefined()})}),describe("stubbed",()=>{beforeEach(()=>{e=new o({stub:!0,loggers:[],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url"}})}),it("should create a stubbed dmk",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(o)}),it("should return a stubbed config",()=>{expect(e.container.get(r.LocalConfigDataSource)).toBeInstanceOf(c)}),it("should return a stubbed version",async()=>{expect(await e.getVersion()).toBe("0.0.0-stub.1")}),it.each([[t.StartDiscoveringUseCase],[t.StopDiscoveringUseCase],[t.ConnectUseCase],[d.SendApduUseCase],[f.SendCommandUseCase],[t.GetConnectedDeviceUseCase],[t.DisconnectUseCase],[a.GetDeviceSessionStateUseCase],[t.ListConnectedDevicesUseCase],[t.ListenToConnectedDeviceUseCase]])("should have %s use case",n=>{const s=e.container.get(n);expect(s).toBeInstanceOf(p),expect(s.execute()).toBe("stub")})})});
2
2
  //# sourceMappingURL=DeviceManagementKit.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/DeviceManagementKit.test.ts"],
4
- "sourcesContent": ["import { type interfaces } from \"inversify\";\n\nimport { type LocalConfigDataSource } from \"@internal/config/data/ConfigDataSource\";\nimport { StubLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource.stub\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport pkg from \"@root/package.json\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { commandTypes } from \"./command/di/commandTypes\";\nimport { ConsoleLogger } from \"./logger-subscriber/service/ConsoleLogger\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\n\nvi.mock(\"./logger-subscriber/service/ConsoleLogger\");\n\nlet dmk: DeviceManagementKit;\nlet logger: ConsoleLogger;\ndescribe(\"DeviceManagementKit\", () => {\n describe(\"clean\", () => {\n beforeEach(() => {\n logger = new ConsoleLogger();\n dmk = new DeviceManagementKit({\n stub: false,\n loggers: [logger],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n },\n });\n });\n\n it(\"should create an instance\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a clean `version`\", async () => {\n expect(await dmk.getVersion()).toBe(pkg.version);\n });\n\n it(\"should have startDiscovery method\", () => {\n expect(dmk.startDiscovering).toBeDefined();\n });\n\n it(\"should have stopDiscovery method\", () => {\n expect(dmk.stopDiscovering).toBeDefined();\n });\n\n it(\"should have connect method\", () => {\n expect(dmk.connect).toBeDefined();\n });\n\n it(\"should have sendApdu method\", () => {\n expect(dmk.sendApdu).toBeDefined();\n });\n\n it(\"should have getConnectedDevice method\", () => {\n expect(dmk.getConnectedDevice).toBeDefined();\n });\n\n it(\"should have sendCommand method\", () => {\n expect(dmk.sendCommand).toBeDefined();\n });\n\n it(\"should have listConnectedDevices method\", () => {\n expect(dmk.listConnectedDevices).toBeDefined();\n });\n\n it(\"should have listenToConnectedDevice method\", () => {\n expect(dmk.listenToConnectedDevice).toBeDefined();\n });\n\n it(\"should have toggleDeviceSessionRefresher method\", () => {\n expect(dmk.toggleDeviceSessionRefresher).toBeDefined();\n });\n });\n\n describe(\"stubbed\", () => {\n beforeEach(() => {\n dmk = new DeviceManagementKit({\n stub: true,\n loggers: [],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n },\n });\n });\n\n it(\"should create a stubbed dmk\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a stubbed config\", () => {\n expect(\n dmk.container.get<LocalConfigDataSource>(\n configTypes.LocalConfigDataSource,\n ),\n ).toBeInstanceOf(StubLocalConfigDataSource);\n });\n\n it(\"should return a stubbed version\", async () => {\n expect(await dmk.getVersion()).toBe(\"0.0.0-stub.1\");\n });\n\n it.each([\n [discoveryTypes.StartDiscoveringUseCase],\n [discoveryTypes.StopDiscoveringUseCase],\n [discoveryTypes.ConnectUseCase],\n [sendTypes.SendApduUseCase],\n [commandTypes.SendCommandUseCase],\n [discoveryTypes.GetConnectedDeviceUseCase],\n [discoveryTypes.DisconnectUseCase],\n [deviceSessionTypes.GetDeviceSessionStateUseCase],\n [discoveryTypes.ListConnectedDevicesUseCase],\n [discoveryTypes.ListenToConnectedDeviceUseCase],\n ])(\n \"should have %s use case\",\n (diSymbol: interfaces.ServiceIdentifier<StubUseCase>) => {\n const uc = dmk.container.get<StubUseCase>(diSymbol);\n expect(uc).toBeInstanceOf(StubUseCase);\n expect(uc.execute()).toBe(\"stub\");\n },\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type interfaces } from \"inversify\";\n\nimport { type LocalConfigDataSource } from \"@internal/config/data/ConfigDataSource\";\nimport { StubLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource.stub\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport pkg from \"@root/package.json\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { commandTypes } from \"./command/di/commandTypes\";\nimport { ConsoleLogger } from \"./logger-subscriber/service/ConsoleLogger\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\n\nvi.mock(\"./logger-subscriber/service/ConsoleLogger\");\n\nlet dmk: DeviceManagementKit;\nlet logger: ConsoleLogger;\ndescribe(\"DeviceManagementKit\", () => {\n describe(\"clean\", () => {\n beforeEach(() => {\n logger = new ConsoleLogger();\n dmk = new DeviceManagementKit({\n stub: false,\n loggers: [logger],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n },\n });\n });\n\n it(\"should create an instance\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a clean `version`\", async () => {\n expect(await dmk.getVersion()).toBe(pkg.version);\n });\n\n it(\"should have startDiscovery method\", () => {\n expect(dmk.startDiscovering).toBeDefined();\n });\n\n it(\"should have stopDiscovery method\", () => {\n expect(dmk.stopDiscovering).toBeDefined();\n });\n\n it(\"should have connect method\", () => {\n expect(dmk.connect).toBeDefined();\n });\n\n it(\"should have sendApdu method\", () => {\n expect(dmk.sendApdu).toBeDefined();\n });\n\n it(\"should have getConnectedDevice method\", () => {\n expect(dmk.getConnectedDevice).toBeDefined();\n });\n\n it(\"should have sendCommand method\", () => {\n expect(dmk.sendCommand).toBeDefined();\n });\n\n it(\"should have listConnectedDevices method\", () => {\n expect(dmk.listConnectedDevices).toBeDefined();\n });\n\n it(\"should have listenToConnectedDevice method\", () => {\n expect(dmk.listenToConnectedDevice).toBeDefined();\n });\n\n it(\"should have disableDeviceSessionRefresher method\", () => {\n expect(dmk.disableDeviceSessionRefresher).toBeDefined();\n });\n });\n\n describe(\"stubbed\", () => {\n beforeEach(() => {\n dmk = new DeviceManagementKit({\n stub: true,\n loggers: [],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n },\n });\n });\n\n it(\"should create a stubbed dmk\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a stubbed config\", () => {\n expect(\n dmk.container.get<LocalConfigDataSource>(\n configTypes.LocalConfigDataSource,\n ),\n ).toBeInstanceOf(StubLocalConfigDataSource);\n });\n\n it(\"should return a stubbed version\", async () => {\n expect(await dmk.getVersion()).toBe(\"0.0.0-stub.1\");\n });\n\n it.each([\n [discoveryTypes.StartDiscoveringUseCase],\n [discoveryTypes.StopDiscoveringUseCase],\n [discoveryTypes.ConnectUseCase],\n [sendTypes.SendApduUseCase],\n [commandTypes.SendCommandUseCase],\n [discoveryTypes.GetConnectedDeviceUseCase],\n [discoveryTypes.DisconnectUseCase],\n [deviceSessionTypes.GetDeviceSessionStateUseCase],\n [discoveryTypes.ListConnectedDevicesUseCase],\n [discoveryTypes.ListenToConnectedDeviceUseCase],\n ])(\n \"should have %s use case\",\n (diSymbol: interfaces.ServiceIdentifier<StubUseCase>) => {\n const uc = dmk.container.get<StubUseCase>(diSymbol);\n expect(uc).toBeInstanceOf(StubUseCase);\n expect(uc.execute()).toBe(\"stub\");\n },\n );\n });\n});\n"],
5
+ "mappings": "AAGA,OAAS,6BAAAA,MAAiC,mDAC1C,OAAS,eAAAC,MAAmB,kCAC5B,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,kBAAAC,MAAsB,wCAC/B,OAAS,aAAAC,MAAiB,8BAC1B,OAAOC,MAAS,qBAChB,OAAS,eAAAC,MAAmB,oBAE5B,OAAS,gBAAAC,MAAoB,4BAC7B,OAAS,iBAAAC,MAAqB,4CAC9B,OAAS,uBAAAC,MAA2B,wBAEpC,GAAG,KAAK,2CAA2C,EAEnD,IAAIC,EACAC,EACJ,SAAS,sBAAuB,IAAM,CACpC,SAAS,QAAS,IAAM,CACtB,WAAW,IAAM,CACfA,EAAS,IAAIH,EACbE,EAAM,IAAID,EAAoB,CAC5B,KAAM,GACN,QAAS,CAACE,CAAM,EAChB,OAAQ,CACN,cAAe,kBACf,QAAS,uBACT,aAAc,2BAChB,CACF,CAAC,CACH,CAAC,EAED,GAAG,4BAA6B,IAAM,CACpC,OAAOD,CAAG,EAAE,YAAY,EACxB,OAAOA,CAAG,EAAE,eAAeD,CAAmB,CAChD,CAAC,EAED,GAAG,kCAAmC,SAAY,CAChD,OAAO,MAAMC,EAAI,WAAW,CAAC,EAAE,KAAKL,EAAI,OAAO,CACjD,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,OAAOK,EAAI,gBAAgB,EAAE,YAAY,CAC3C,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,EAAI,eAAe,EAAE,YAAY,CAC1C,CAAC,EAED,GAAG,6BAA8B,IAAM,CACrC,OAAOA,EAAI,OAAO,EAAE,YAAY,CAClC,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OAAOA,EAAI,QAAQ,EAAE,YAAY,CACnC,CAAC,EAED,GAAG,wCAAyC,IAAM,CAChD,OAAOA,EAAI,kBAAkB,EAAE,YAAY,CAC7C,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAI,WAAW,EAAE,YAAY,CACtC,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OAAOA,EAAI,oBAAoB,EAAE,YAAY,CAC/C,CAAC,EAED,GAAG,6CAA8C,IAAM,CACrD,OAAOA,EAAI,uBAAuB,EAAE,YAAY,CAClD,CAAC,EAED,GAAG,mDAAoD,IAAM,CAC3D,OAAOA,EAAI,6BAA6B,EAAE,YAAY,CACxD,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,WAAW,IAAM,CACfA,EAAM,IAAID,EAAoB,CAC5B,KAAM,GACN,QAAS,CAAC,EACV,OAAQ,CACN,cAAe,kBACf,QAAS,uBACT,aAAc,2BAChB,CACF,CAAC,CACH,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OAAOC,CAAG,EAAE,YAAY,EACxB,OAAOA,CAAG,EAAE,eAAeD,CAAmB,CAChD,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OACEC,EAAI,UAAU,IACZT,EAAY,qBACd,CACF,EAAE,eAAeD,CAAyB,CAC5C,CAAC,EAED,GAAG,kCAAmC,SAAY,CAChD,OAAO,MAAMU,EAAI,WAAW,CAAC,EAAE,KAAK,cAAc,CACpD,CAAC,EAED,GAAG,KAAK,CACN,CAACP,EAAe,uBAAuB,EACvC,CAACA,EAAe,sBAAsB,EACtC,CAACA,EAAe,cAAc,EAC9B,CAACC,EAAU,eAAe,EAC1B,CAACG,EAAa,kBAAkB,EAChC,CAACJ,EAAe,yBAAyB,EACzC,CAACA,EAAe,iBAAiB,EACjC,CAACD,EAAmB,4BAA4B,EAChD,CAACC,EAAe,2BAA2B,EAC3C,CAACA,EAAe,8BAA8B,CAChD,CAAC,EACC,0BACCS,GAAwD,CACvD,MAAMC,EAAKH,EAAI,UAAU,IAAiBE,CAAQ,EAClD,OAAOC,CAAE,EAAE,eAAeP,CAAW,EACrC,OAAOO,EAAG,QAAQ,CAAC,EAAE,KAAK,MAAM,CAClC,CACF,CACF,CAAC,CACH,CAAC",
6
6
  "names": ["StubLocalConfigDataSource", "configTypes", "deviceSessionTypes", "discoveryTypes", "sendTypes", "pkg", "StubUseCase", "commandTypes", "ConsoleLogger", "DeviceManagementKit", "dmk", "logger", "diSymbol", "uc"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as p}from"../../apdu/utils/ApduBuilder";import{ApduParser as g}from"../../apdu/utils/ApduParser";import{CommandResultFactory as t}from"../../command/model/CommandResult";import{CommandUtils as u}from"../../command/utils/CommandUtils";import{GlobalCommandErrorHandler as V}from"../../command/utils/GlobalCommandError";import{DeviceModelId as x}from"../../device/DeviceModel";class I{args=void 0;getApdu(){const r={cla:224,ins:1,p1:0,p2:0};return new p(r).build()}parseResponse(r,d){if(!u.isSuccessResponse(r))return t({error:V.handle(r)});const e=new g(r),s=parseInt(e.encodeToHexaString(e.extractFieldByLength(4)),16),i=e.encodeToString(e.extractFieldLVEncoded()),a=parseInt(e.encodeToHexaString(e.extractFieldLVEncoded()).toString(),16),c=e.encodeToString(e.extractFieldLVEncoded()),m=e.encodeToString(e.extractFieldLVEncoded());let o="00";d===x.NANO_X&&(o=e.encodeToHexaString(e.extractFieldLVEncoded()));const l=e.encodeToHexaString(e.extractFieldLVEncoded()),n=e.encodeToHexaString(e.extractFieldLVEncoded());return t({data:{targetId:s,seVersion:i,seFlags:a,mcuSephVersion:c,mcuBootloaderVersion:m,hwVersion:o,langId:l,recoverState:n||"0"}})}}export{I as GetOsVersionCommand};
1
+ import{ApduBuilder as g}from"../../apdu/utils/ApduBuilder";import{ApduParser as u}from"../../apdu/utils/ApduParser";import{CommandResultFactory as s}from"../../command/model/CommandResult";import{CommandUtils as y}from"../../command/utils/CommandUtils";import{GlobalCommandErrorHandler as V}from"../../command/utils/GlobalCommandError";import{DeviceModelId as x}from"../../device/DeviceModel";import{SecureElementFlagsParser as S}from"./SecureElementFlagsParser";class v{args=void 0;getApdu(){const r={cla:224,ins:1,p1:0,p2:0};return new g(r).build()}parseResponse(r,d){if(!y.isSuccessResponse(r))return s({error:V.handle(r)});const e=new u(r),a=parseInt(e.encodeToHexaString(e.extractFieldByLength(4)),16),i=e.encodeToString(e.extractFieldLVEncoded()),o=e.extractFieldLVEncoded()??new Uint8Array(0),m={...new S(o).generalDeviceState()},l=e.encodeToString(e.extractFieldLVEncoded()),c=e.encodeToString(e.extractFieldLVEncoded());let t="00";d===x.NANO_X&&(t=e.encodeToHexaString(e.extractFieldLVEncoded()));const p=e.encodeToHexaString(e.extractFieldLVEncoded()),n=e.encodeToHexaString(e.extractFieldLVEncoded());return s({data:{targetId:a,seVersion:i,seFlags:o,mcuSephVersion:l,mcuBootloaderVersion:c,hwVersion:t,langId:p,recoverState:n||"0",secureElementFlags:m}})}}export{v as GetOsVersionCommand};
2
2
  //# sourceMappingURL=GetOsVersionCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/os/GetOsVersionCommand.ts"],
4
- "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\n\n/**\n * Response of the GetOsVersionCommand.\n */\nexport type GetOsVersionResponse = {\n /**\n * Target identifier.\n */\n readonly targetId: number;\n\n /**\n * Version of BOLOS on the secure element (SE).\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly seVersion: string;\n\n /**\n * Secure element flags.\n * Used to represent the current state of the secure element.\n */\n readonly seFlags: number;\n\n /**\n * Version of the microcontroller unit (MCU) SEPH, which is the SE-MCU link protocol.\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly mcuSephVersion: string;\n\n /**\n * Version of the MCU bootloader.\n */\n readonly mcuBootloaderVersion: string;\n\n /**\n * Hardware revision version.\n * Only available for Ledger Nano X in which case it's \"00\" or \"01\".\n */\n readonly hwVersion: string;\n\n /**\n * Identifier of the installed language pack.\n * Can be one of:\n * - \"00\": English\n * - \"01\": French\n * - \"02\": Spanish\n */\n readonly langId: string; // [SHOULD] be an enum\n\n /**\n * State for Ledger Recover. // [SHOULD] Add more information about this field\n */\n readonly recoverState: string;\n};\n\n/**\n * Command to get information about the device firmware.\n */\nexport class GetOsVersionCommand implements Command<GetOsVersionResponse> {\n readonly args = undefined;\n\n getApdu(): Apdu {\n const getOsVersionApduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x01,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(getOsVersionApduArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n deviceModelId: DeviceModelId,\n ): CommandResult<GetOsVersionResponse> {\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n const parser = new ApduParser(apduResponse);\n\n const targetId = parseInt(\n parser.encodeToHexaString(parser.extractFieldByLength(4)),\n 16,\n );\n const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n const seFlags = parseInt(\n parser.encodeToHexaString(parser.extractFieldLVEncoded()).toString(),\n 16,\n );\n const mcuSephVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n const mcuBootloaderVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n\n let hwVersion = \"00\";\n if (deviceModelId === DeviceModelId.NANO_X) {\n hwVersion = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n }\n\n const langId = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n const recoverState = parser.encodeToHexaString(\n parser.extractFieldLVEncoded(),\n );\n\n return CommandResultFactory({\n data: {\n targetId,\n seVersion,\n seFlags,\n mcuSephVersion,\n mcuBootloaderVersion,\n hwVersion,\n langId,\n recoverState: recoverState ? recoverState : \"0\",\n },\n });\n }\n}\n"],
5
- "mappings": "AACA,OAAS,eAAAA,MAAyC,8BAClD,OAAS,cAAAC,MAAkB,6BAE3B,OAEE,wBAAAC,MACK,mCACP,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,6BAAAC,MAAiC,wCAC1C,OAAS,iBAAAC,MAAqB,0BA2DvB,MAAMC,CAA6D,CAC/D,KAAO,OAEhB,SAAgB,CACd,MAAMC,EAAwC,CAC5C,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EACA,OAAO,IAAIP,EAAYO,CAAoB,EAAE,MAAM,CACrD,CAEA,cACEC,EACAC,EACqC,CACrC,GAAI,CAACN,EAAa,kBAAkBK,CAAY,EAC9C,OAAON,EAAqB,CAC1B,MAAOE,EAA0B,OAAOI,CAAY,CACtD,CAAC,EAEH,MAAME,EAAS,IAAIT,EAAWO,CAAY,EAEpCG,EAAW,SACfD,EAAO,mBAAmBA,EAAO,qBAAqB,CAAC,CAAC,EACxD,EACF,EACME,EAAYF,EAAO,eAAeA,EAAO,sBAAsB,CAAC,EAChEG,EAAU,SACdH,EAAO,mBAAmBA,EAAO,sBAAsB,CAAC,EAAE,SAAS,EACnE,EACF,EACMI,EAAiBJ,EAAO,eAC5BA,EAAO,sBAAsB,CAC/B,EACMK,EAAuBL,EAAO,eAClCA,EAAO,sBAAsB,CAC/B,EAEA,IAAIM,EAAY,KACZP,IAAkBJ,EAAc,SAClCW,EAAYN,EAAO,mBAAmBA,EAAO,sBAAsB,CAAC,GAGtE,MAAMO,EAASP,EAAO,mBAAmBA,EAAO,sBAAsB,CAAC,EACjEQ,EAAeR,EAAO,mBAC1BA,EAAO,sBAAsB,CAC/B,EAEA,OAAOR,EAAqB,CAC1B,KAAM,CACJ,SAAAS,EACA,UAAAC,EACA,QAAAC,EACA,eAAAC,EACA,qBAAAC,EACA,UAAAC,EACA,OAAAC,EACA,aAAcC,GAA8B,GAC9C,CACF,CAAC,CACH,CACF",
6
- "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "CommandUtils", "GlobalCommandErrorHandler", "DeviceModelId", "GetOsVersionCommand", "getOsVersionApduArgs", "apduResponse", "deviceModelId", "parser", "targetId", "seVersion", "seFlags", "mcuSephVersion", "mcuBootloaderVersion", "hwVersion", "langId", "recoverState"]
4
+ "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport {\n type DeviceGeneralState,\n type EndorsementInformation,\n type OnboardingStatus,\n type WordsInformation,\n} from \"@api/device/SecureElementFlags\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport { SecureElementFlagsParser } from \"./SecureElementFlagsParser\";\n\n/**\n * Response of the GetOsVersionCommand.\n */\nexport type GetOsVersionResponse = {\n /**\n * Target identifier.\n */\n readonly targetId: number;\n\n /**\n * Version of BOLOS on the secure element (SE).\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly seVersion: string;\n\n /**\n * Secure element flags.\n * Used to represent the current state of the secure element.\n */\n readonly seFlags: Uint8Array;\n\n /**\n * Version of the microcontroller unit (MCU) SEPH, which is the SE-MCU link protocol.\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly mcuSephVersion: string;\n\n /**\n * Version of the MCU bootloader.\n */\n readonly mcuBootloaderVersion: string;\n\n /**\n * Hardware revision version.\n * Only available for Ledger Nano X in which case it's \"00\" or \"01\".\n */\n readonly hwVersion: string;\n\n /**\n * Identifier of the installed language pack.\n * Can be one of:\n * - \"00\": English\n * - \"01\": French\n * - \"02\": Spanish\n */\n readonly langId: string; // [SHOULD] be an enum\n\n /**\n * State for Ledger Recover. // [SHOULD] Add more information about this field\n */\n readonly recoverState: string;\n\n /**\n * The parsed secure element flags.\n */\n readonly secureElementFlags: DeviceGeneralState &\n EndorsementInformation &\n WordsInformation &\n OnboardingStatus;\n};\n\nexport type GetOsVersionCommandResult = CommandResult<GetOsVersionResponse>;\n\n/**\n * Command to get information about the device firmware.\n */\nexport class GetOsVersionCommand implements Command<GetOsVersionResponse> {\n readonly args = undefined;\n\n getApdu(): Apdu {\n const getOsVersionApduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x01,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(getOsVersionApduArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n deviceModelId: DeviceModelId,\n ): GetOsVersionCommandResult {\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n const parser = new ApduParser(apduResponse);\n\n const targetId = parseInt(\n parser.encodeToHexaString(parser.extractFieldByLength(4)),\n 16,\n );\n const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n const seFlags = parser.extractFieldLVEncoded() ?? new Uint8Array(0);\n const seFlagsParser = new SecureElementFlagsParser(seFlags);\n // This is the parsed secure element flags.\n const secureElementFlags = { ...seFlagsParser.generalDeviceState() };\n\n const mcuSephVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n const mcuBootloaderVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n\n let hwVersion = \"00\";\n if (deviceModelId === DeviceModelId.NANO_X) {\n hwVersion = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n }\n\n const langId = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n const recoverState = parser.encodeToHexaString(\n parser.extractFieldLVEncoded(),\n );\n\n return CommandResultFactory({\n data: {\n targetId,\n seVersion,\n seFlags,\n mcuSephVersion,\n mcuBootloaderVersion,\n hwVersion,\n langId,\n recoverState: recoverState ? recoverState : \"0\",\n secureElementFlags,\n },\n });\n }\n}\n"],
5
+ "mappings": "AACA,OAAS,eAAAA,MAAyC,8BAClD,OAAS,cAAAC,MAAkB,6BAE3B,OAEE,wBAAAC,MACK,mCACP,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,6BAAAC,MAAiC,wCAC1C,OAAS,iBAAAC,MAAqB,0BAS9B,OAAS,4BAAAC,MAAgC,6BAoElC,MAAMC,CAA6D,CAC/D,KAAO,OAEhB,SAAgB,CACd,MAAMC,EAAwC,CAC5C,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EACA,OAAO,IAAIR,EAAYQ,CAAoB,EAAE,MAAM,CACrD,CAEA,cACEC,EACAC,EAC2B,CAC3B,GAAI,CAACP,EAAa,kBAAkBM,CAAY,EAC9C,OAAOP,EAAqB,CAC1B,MAAOE,EAA0B,OAAOK,CAAY,CACtD,CAAC,EAEH,MAAME,EAAS,IAAIV,EAAWQ,CAAY,EAEpCG,EAAW,SACfD,EAAO,mBAAmBA,EAAO,qBAAqB,CAAC,CAAC,EACxD,EACF,EACME,EAAYF,EAAO,eAAeA,EAAO,sBAAsB,CAAC,EAChEG,EAAUH,EAAO,sBAAsB,GAAK,IAAI,WAAW,CAAC,EAG5DI,EAAqB,CAAE,GAFP,IAAIT,EAAyBQ,CAAO,EAEZ,mBAAmB,CAAE,EAE7DE,EAAiBL,EAAO,eAC5BA,EAAO,sBAAsB,CAC/B,EACMM,EAAuBN,EAAO,eAClCA,EAAO,sBAAsB,CAC/B,EAEA,IAAIO,EAAY,KACZR,IAAkBL,EAAc,SAClCa,EAAYP,EAAO,mBAAmBA,EAAO,sBAAsB,CAAC,GAGtE,MAAMQ,EAASR,EAAO,mBAAmBA,EAAO,sBAAsB,CAAC,EACjES,EAAeT,EAAO,mBAC1BA,EAAO,sBAAsB,CAC/B,EAEA,OAAOT,EAAqB,CAC1B,KAAM,CACJ,SAAAU,EACA,UAAAC,EACA,QAAAC,EACA,eAAAE,EACA,qBAAAC,EACA,UAAAC,EACA,OAAAC,EACA,aAAcC,GAA8B,IAC5C,mBAAAL,CACF,CACF,CAAC,CACH,CACF",
6
+ "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "CommandUtils", "GlobalCommandErrorHandler", "DeviceModelId", "SecureElementFlagsParser", "GetOsVersionCommand", "getOsVersionApduArgs", "apduResponse", "deviceModelId", "parser", "targetId", "seVersion", "seFlags", "secureElementFlags", "mcuSephVersion", "mcuBootloaderVersion", "hwVersion", "langId", "recoverState"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ class r{constructor(e){this.seFlags=e;if(this.seFlags.length!==4)throw new Error("Invalid secure element flags length")}generalDeviceState(){const e=this.seFlags[0]??0;return{isPinValidated:this._checkNthBitInByte(e,1),hasMcuSerialNumber:this._checkNthBitInByte(e,2),hasValidCertificate:this._checkNthBitInByte(e,3),isCustomAuthorityConnectionAllowed:this._checkNthBitInByte(e,4),isSecureConnectionAllowed:this._checkNthBitInByte(e,5),isOnboarded:this._checkNthBitInByte(e,6),isMcuCodeSigned:this._checkNthBitInByte(e,7),isInRecoveryMode:this._checkNthBitInByte(e,8)}}endorsementInformation(){throw new Error("Not implemented")}wordsInformation(){throw new Error("Not implemented")}onboardingStatus(){throw new Error("Not implemented")}_checkNthBitInByte(e,t){return(e>>8-t&1)===1}}export{r as SecureElementFlagsParser};
2
+ //# sourceMappingURL=SecureElementFlagsParser.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/SecureElementFlagsParser.ts"],
4
+ "sourcesContent": ["import {\n type DeviceGeneralState,\n type EndorsementInformation,\n type OnboardingStatus,\n type WordsInformation,\n} from \"@api/device/SecureElementFlags\";\n\n/**\n * Secure element flags parser class.\n */\nexport class SecureElementFlagsParser {\n /**\n * Creates an instance of SecureElementFlags parser.\n * @param seFlags - The secure element flags as an Uint8Array, it comes from the response of the GetOsVersionCommand.\n */\n constructor(private readonly seFlags: Uint8Array) {\n if (this.seFlags.length !== 4) {\n throw new Error(\"Invalid secure element flags length\");\n }\n }\n\n /**\n * Retrieves the general device state based on the secure element flags, which is the first byte of the flags.\n * @returns {DeviceGeneralState}\n */\n generalDeviceState(): DeviceGeneralState {\n const firstByte = this.seFlags[0] ?? 0x00;\n\n return {\n isPinValidated: this._checkNthBitInByte(firstByte, 1),\n hasMcuSerialNumber: this._checkNthBitInByte(firstByte, 2),\n hasValidCertificate: this._checkNthBitInByte(firstByte, 3),\n isCustomAuthorityConnectionAllowed: this._checkNthBitInByte(firstByte, 4),\n isSecureConnectionAllowed: this._checkNthBitInByte(firstByte, 5),\n isOnboarded: this._checkNthBitInByte(firstByte, 6),\n isMcuCodeSigned: this._checkNthBitInByte(firstByte, 7),\n isInRecoveryMode: this._checkNthBitInByte(firstByte, 8),\n };\n }\n\n /**\n * Retrieves the endorsement information based on the secure element flags, which is the second byte of the flags.\n * @returns {EndorsementInformation}\n * @throws Will throw an error if the method is not implemented.\n */\n endorsementInformation(): EndorsementInformation {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Retrieves the words information based on the secure element flags, which is the third byte of the flags.\n * @returns {WordsInformation}\n * @throws Will throw an error if the method is not implemented.\n */\n wordsInformation(): WordsInformation {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Retrieves the onboarding status based on the secure element flags, which is the fourth byte of the flags.\n * @returns {OnboardingStatus}\n * @throws Will throw an error if the method is not implemented.\n */\n onboardingStatus(): OnboardingStatus {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Check the nth bit in a byte, returns true if the bit is set, false otherwise.\n * @param byte - The byte to check.\n * @param n - The bit number to check.\n * @returns {boolean} - True if the bit is set, false otherwise.\n */\n _checkNthBitInByte(byte: number, n: number): boolean {\n return ((byte >> (8 - n)) & 1) === 1;\n }\n}\n"],
5
+ "mappings": "AAUO,MAAMA,CAAyB,CAKpC,YAA6BC,EAAqB,CAArB,aAAAA,EAC3B,GAAI,KAAK,QAAQ,SAAW,EAC1B,MAAM,IAAI,MAAM,qCAAqC,CAEzD,CAMA,oBAAyC,CACvC,MAAMC,EAAY,KAAK,QAAQ,CAAC,GAAK,EAErC,MAAO,CACL,eAAgB,KAAK,mBAAmBA,EAAW,CAAC,EACpD,mBAAoB,KAAK,mBAAmBA,EAAW,CAAC,EACxD,oBAAqB,KAAK,mBAAmBA,EAAW,CAAC,EACzD,mCAAoC,KAAK,mBAAmBA,EAAW,CAAC,EACxE,0BAA2B,KAAK,mBAAmBA,EAAW,CAAC,EAC/D,YAAa,KAAK,mBAAmBA,EAAW,CAAC,EACjD,gBAAiB,KAAK,mBAAmBA,EAAW,CAAC,EACrD,iBAAkB,KAAK,mBAAmBA,EAAW,CAAC,CACxD,CACF,CAOA,wBAAiD,CAC/C,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAOA,kBAAqC,CACnC,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAOA,kBAAqC,CACnC,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAQA,mBAAmBC,EAAcC,EAAoB,CACnD,OAASD,GAAS,EAAIC,EAAM,KAAO,CACrC,CACF",
6
+ "names": ["SecureElementFlagsParser", "seFlags", "firstByte", "byte", "n"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{describe as a,expect as t,it as n}from"vitest";import{SecureElementFlagsParser as s}from"./SecureElementFlagsParser";a("SecureElementFlagsParser",()=>{n("should throw an error if the secure element flags length is not 4",()=>{t(()=>new s(new Uint8Array([0,1,2]))).toThrow("Invalid secure element flags length")}),n("should correctly parse the general device state",()=>{const o=new Uint8Array([170,0,0,0]),e=new s(o),r={isPinValidated:!0,hasMcuSerialNumber:!1,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!0,isOnboarded:!1,isMcuCodeSigned:!0,isInRecoveryMode:!1};t(e.generalDeviceState()).toEqual(r)}),n("should throw an error for endorsementInformation method",()=>{const o=new Uint8Array([0,0,0,0]),e=new s(o);t(()=>e.endorsementInformation()).toThrow("Not implemented")}),n("should throw an error for wordsInformation method",()=>{const o=new Uint8Array([0,0,0,0]),e=new s(o);t(()=>e.wordsInformation()).toThrow("Not implemented")}),n("should throw an error for onboardingStatus method",()=>{const o=new Uint8Array([0,0,0,0]),e=new s(o);t(()=>e.onboardingStatus()).toThrow("Not implemented")}),n("should correctly check the nth bit in a byte",()=>{const o=new Uint8Array([0,0,0,0]),e=new s(o),r=170;t(e._checkNthBitInByte(r,1)).toBe(!0),t(e._checkNthBitInByte(r,2)).toBe(!1),t(e._checkNthBitInByte(r,3)).toBe(!0),t(e._checkNthBitInByte(r,4)).toBe(!1),t(e._checkNthBitInByte(r,5)).toBe(!0),t(e._checkNthBitInByte(r,6)).toBe(!1),t(e._checkNthBitInByte(r,7)).toBe(!0),t(e._checkNthBitInByte(r,8)).toBe(!1)})});
2
+ //# sourceMappingURL=SecureElementFlagsParser.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/SecureElementFlagsParser.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\n\nimport { type DeviceGeneralState } from \"@api/device/SecureElementFlags\";\n\nimport { SecureElementFlagsParser } from \"./SecureElementFlagsParser\";\n\ndescribe(\"SecureElementFlagsParser\", () => {\n it(\"should throw an error if the secure element flags length is not 4\", () => {\n expect(\n () => new SecureElementFlagsParser(new Uint8Array([0x00, 0x01, 0x02])),\n ).toThrow(\"Invalid secure element flags length\");\n });\n\n it(\"should correctly parse the general device state\", () => {\n const seFlags = new Uint8Array([0b10101010, 0x00, 0x00, 0x00]);\n const parser = new SecureElementFlagsParser(seFlags);\n const expectedState: DeviceGeneralState = {\n isPinValidated: true,\n hasMcuSerialNumber: false,\n hasValidCertificate: true,\n isCustomAuthorityConnectionAllowed: false,\n isSecureConnectionAllowed: true,\n isOnboarded: false,\n isMcuCodeSigned: true,\n isInRecoveryMode: false,\n };\n expect(parser.generalDeviceState()).toEqual(expectedState);\n });\n\n it(\"should throw an error for endorsementInformation method\", () => {\n const seFlags = new Uint8Array([0x00, 0x00, 0x00, 0x00]);\n const parser = new SecureElementFlagsParser(seFlags);\n expect(() => parser.endorsementInformation()).toThrow(\"Not implemented\");\n });\n\n it(\"should throw an error for wordsInformation method\", () => {\n const seFlags = new Uint8Array([0x00, 0x00, 0x00, 0x00]);\n const parser = new SecureElementFlagsParser(seFlags);\n expect(() => parser.wordsInformation()).toThrow(\"Not implemented\");\n });\n\n it(\"should throw an error for onboardingStatus method\", () => {\n const seFlags = new Uint8Array([0x00, 0x00, 0x00, 0x00]);\n const parser = new SecureElementFlagsParser(seFlags);\n expect(() => parser.onboardingStatus()).toThrow(\"Not implemented\");\n });\n\n it(\"should correctly check the nth bit in a byte\", () => {\n const seFlags = new Uint8Array([0x00, 0x00, 0x00, 0x00]);\n const parser = new SecureElementFlagsParser(seFlags);\n const byte = 0b10101010;\n expect(parser._checkNthBitInByte(byte, 1)).toBe(true);\n expect(parser._checkNthBitInByte(byte, 2)).toBe(false);\n expect(parser._checkNthBitInByte(byte, 3)).toBe(true);\n expect(parser._checkNthBitInByte(byte, 4)).toBe(false);\n expect(parser._checkNthBitInByte(byte, 5)).toBe(true);\n expect(parser._checkNthBitInByte(byte, 6)).toBe(false);\n expect(parser._checkNthBitInByte(byte, 7)).toBe(true);\n expect(parser._checkNthBitInByte(byte, 8)).toBe(false);\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,YAAAA,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAIrC,OAAS,4BAAAC,MAAgC,6BAEzCH,EAAS,2BAA4B,IAAM,CACzCE,EAAG,oEAAqE,IAAM,CAC5ED,EACE,IAAM,IAAIE,EAAyB,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CACvE,EAAE,QAAQ,qCAAqC,CACjD,CAAC,EAEDD,EAAG,kDAAmD,IAAM,CAC1D,MAAME,EAAU,IAAI,WAAW,CAAC,IAAY,EAAM,EAAM,CAAI,CAAC,EACvDC,EAAS,IAAIF,EAAyBC,CAAO,EAC7CE,EAAoC,CACxC,eAAgB,GAChB,mBAAoB,GACpB,oBAAqB,GACrB,mCAAoC,GACpC,0BAA2B,GAC3B,YAAa,GACb,gBAAiB,GACjB,iBAAkB,EACpB,EACAL,EAAOI,EAAO,mBAAmB,CAAC,EAAE,QAAQC,CAAa,CAC3D,CAAC,EAEDJ,EAAG,0DAA2D,IAAM,CAClE,MAAME,EAAU,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACjDC,EAAS,IAAIF,EAAyBC,CAAO,EACnDH,EAAO,IAAMI,EAAO,uBAAuB,CAAC,EAAE,QAAQ,iBAAiB,CACzE,CAAC,EAEDH,EAAG,oDAAqD,IAAM,CAC5D,MAAME,EAAU,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACjDC,EAAS,IAAIF,EAAyBC,CAAO,EACnDH,EAAO,IAAMI,EAAO,iBAAiB,CAAC,EAAE,QAAQ,iBAAiB,CACnE,CAAC,EAEDH,EAAG,oDAAqD,IAAM,CAC5D,MAAME,EAAU,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACjDC,EAAS,IAAIF,EAAyBC,CAAO,EACnDH,EAAO,IAAMI,EAAO,iBAAiB,CAAC,EAAE,QAAQ,iBAAiB,CACnE,CAAC,EAEDH,EAAG,+CAAgD,IAAM,CACvD,MAAME,EAAU,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACjDC,EAAS,IAAIF,EAAyBC,CAAO,EAC7CG,EAAO,IACbN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAI,EACpDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAK,EACrDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAI,EACpDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAK,EACrDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAI,EACpDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAK,EACrDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAI,EACpDN,EAAOI,EAAO,mBAAmBE,EAAM,CAAC,CAAC,EAAE,KAAK,EAAK,CACvD,CAAC,CACH,CAAC",
6
+ "names": ["describe", "expect", "it", "SecureElementFlagsParser", "seFlags", "parser", "expectedState", "byte"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as e}from"../../../device/DeviceModel";const n=(s=e.NANO_SP,o={})=>({[e.NANO_SP]:{targetId:856686596,seVersion:"1.1.1",seFlags:3858759680,mcuSephVersion:"4.03",mcuBootloaderVersion:"3.12",hwVersion:"00",langId:"00",recoverState:"00",...o},[e.NANO_S]:{targetId:858783748,seVersion:"1.1.1",seFlags:3858759680,mcuSephVersion:"6.4.0",mcuBootloaderVersion:"5.4.0",hwVersion:"00",langId:"00",recoverState:"00",...o},[e.NANO_X]:{targetId:855638020,seVersion:"2.2.3",seFlags:3858759680,mcuSephVersion:"2.30",mcuBootloaderVersion:"1.16",hwVersion:"00",langId:"00",recoverState:"00"},[e.STAX]:{targetId:857735172,seVersion:"1.3.0",seFlags:3858759680,mcuSephVersion:"5.24",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:"00",recoverState:"00",...o},[e.FLEX]:{targetId:858783748,seVersion:"1.1.1",seFlags:3858759680,mcuSephVersion:"6.4.0",mcuBootloaderVersion:"5.4.0",hwVersion:"00",langId:"00",recoverState:"00",...o}})[s];export{n as getOsVersionCommandResponseMockBuilder};
1
+ import{DeviceModelId as e}from"../../../device/DeviceModel";const o=(s=e.NANO_SP,r={})=>({[e.NANO_SP]:{targetId:856686596,seVersion:"1.1.1",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"4.03",mcuBootloaderVersion:"3.12",hwVersion:"00",langId:"00",recoverState:"00",secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1},...r},[e.NANO_S]:{targetId:858783748,seVersion:"1.1.1",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"6.4.0",mcuBootloaderVersion:"5.4.0",hwVersion:"00",langId:"00",recoverState:"00",secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1},...r},[e.NANO_X]:{targetId:855638020,seVersion:"2.2.3",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"2.30",mcuBootloaderVersion:"1.16",hwVersion:"00",langId:"00",recoverState:"00",secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1}},[e.STAX]:{targetId:857735172,seVersion:"1.3.0",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"5.24",mcuBootloaderVersion:"0.48",hwVersion:"00",langId:"00",recoverState:"00",secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1},...r},[e.FLEX]:{targetId:858783748,seVersion:"1.1.1",seFlags:new Uint8Array([230,0,0,0]),mcuSephVersion:"6.4.0",mcuBootloaderVersion:"5.4.0",hwVersion:"00",langId:"00",recoverState:"00",secureElementFlags:{isPinValidated:!0,hasMcuSerialNumber:!0,hasValidCertificate:!0,isCustomAuthorityConnectionAllowed:!1,isSecureConnectionAllowed:!1,isOnboarded:!0,isMcuCodeSigned:!0,isInRecoveryMode:!1},...r}})[s];export{o as getOsVersionCommandResponseMockBuilder};
2
2
  //# sourceMappingURL=GetOsVersionCommand.js.map