@ledgerhq/device-management-kit 0.0.0-signer-eth-plugin-fix-20250331141239 → 0.0.0-transaction-unfunded-20250917151052

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 (779) hide show
  1. package/README.md +43 -6
  2. package/lib/cjs/package.json +22 -23
  3. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  4. package/lib/cjs/src/api/DeviceManagementKit.js.map +3 -3
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  6. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +3 -3
  7. package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
  8. package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
  9. package/lib/cjs/src/api/DmkConfig.js +1 -1
  10. package/lib/cjs/src/api/DmkConfig.js.map +1 -1
  11. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  12. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  13. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  14. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  15. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js +1 -1
  16. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  17. package/lib/cjs/src/api/command/di/commandModule.js +1 -1
  18. package/lib/cjs/src/api/command/di/commandModule.js.map +3 -3
  19. package/lib/cjs/src/api/command/di/commandModule.test.js +1 -1
  20. package/lib/cjs/src/api/command/di/commandModule.test.js.map +2 -2
  21. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  22. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  23. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  24. package/lib/cjs/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  25. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  26. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  27. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  28. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  29. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js +2 -0
  30. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  31. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  32. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  33. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  34. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  35. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js +1 -1
  36. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js.map +3 -3
  37. package/lib/cjs/src/api/command/utils/CommandUtils.js +1 -1
  38. package/lib/cjs/src/api/command/utils/CommandUtils.js.map +3 -3
  39. package/lib/cjs/src/api/command/utils/CommandUtils.test.js +1 -1
  40. package/lib/cjs/src/api/command/utils/CommandUtils.test.js.map +3 -3
  41. package/lib/cjs/src/api/command/utils/GlobalCommandError.js +1 -1
  42. package/lib/cjs/src/api/command/utils/GlobalCommandError.js.map +2 -2
  43. package/lib/cjs/src/api/device/DeviceModel.js +1 -1
  44. package/lib/cjs/src/api/device/DeviceModel.js.map +2 -2
  45. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  46. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  47. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  48. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  49. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  50. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  51. package/lib/cjs/src/api/device-action/di/deviceActionModule.js +1 -1
  52. package/lib/cjs/src/api/device-action/di/deviceActionModule.js.map +3 -3
  53. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js +1 -1
  54. package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  55. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  56. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  57. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  58. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  59. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  60. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  61. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -1
  62. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +1 -1
  63. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  64. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  65. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  66. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  67. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  68. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  69. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +2 -0
  70. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  71. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  72. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +2 -2
  73. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  74. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  75. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  76. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  77. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +1 -1
  78. package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +1 -1
  79. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  80. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  81. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  82. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  83. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js +2 -0
  84. package/lib/cjs/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  85. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  86. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  87. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  88. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  89. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  90. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +2 -2
  91. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -1
  92. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +1 -1
  93. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  94. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  95. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  96. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  97. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js +2 -0
  98. package/lib/cjs/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  99. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  100. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  101. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  102. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  103. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -1
  104. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +1 -1
  105. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  106. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  107. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  108. package/lib/cjs/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  109. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  110. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  111. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  112. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  113. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  114. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  115. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  116. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  117. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  118. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  119. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  120. package/lib/cjs/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  121. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  122. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  123. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  124. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  125. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  126. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  127. package/lib/cjs/src/api/device-model/model/DeviceModel.js +1 -1
  128. package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +2 -2
  129. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +1 -1
  130. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  131. package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
  132. package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +2 -2
  133. package/lib/cjs/src/api/index.js +1 -1
  134. package/lib/cjs/src/api/index.js.map +3 -3
  135. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  136. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  137. package/lib/cjs/src/api/secure-channel/device-action/GenuineCheck/types.js.map +1 -1
  138. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  139. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  140. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js +1 -1
  141. package/lib/cjs/src/api/secure-channel/device-action/InstallApp/types.js.map +1 -1
  142. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  143. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  144. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  145. package/lib/cjs/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  146. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  147. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  148. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js +1 -1
  149. package/lib/cjs/src/api/secure-channel/device-action/UninstallApp/types.js.map +1 -1
  150. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  151. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  152. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  153. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  154. package/lib/cjs/src/api/secure-channel/task/types.js +1 -1
  155. package/lib/cjs/src/api/secure-channel/task/types.js.map +2 -2
  156. package/lib/cjs/src/api/secure-channel/utils.js +1 -1
  157. package/lib/cjs/src/api/secure-channel/utils.js.map +3 -3
  158. package/lib/cjs/src/api/secure-channel/utils.test.js +1 -1
  159. package/lib/cjs/src/api/secure-channel/utils.test.js.map +3 -3
  160. package/lib/cjs/src/api/transport/model/DeviceApduSender.js +2 -0
  161. package/lib/cjs/src/api/transport/model/DeviceApduSender.js.map +7 -0
  162. package/lib/cjs/src/api/transport/model/DeviceConnection.js +1 -1
  163. package/lib/cjs/src/api/transport/model/DeviceConnection.js.map +1 -1
  164. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  165. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  166. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  167. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  168. package/lib/cjs/src/api/transport/model/DiscoveredDevice.js.map +1 -1
  169. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  170. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  171. package/lib/cjs/src/api/transport/model/Transport.js.map +1 -1
  172. package/lib/cjs/src/api/types.js +1 -1
  173. package/lib/cjs/src/api/types.js.map +1 -1
  174. package/lib/cjs/src/api/utils/AppName.js +2 -0
  175. package/lib/cjs/src/api/utils/AppName.js.map +7 -0
  176. package/lib/cjs/src/api/utils/AppName.test.js +2 -0
  177. package/lib/cjs/src/api/utils/AppName.test.js.map +7 -0
  178. package/lib/cjs/src/api/utils/HexaString.js +1 -1
  179. package/lib/cjs/src/api/utils/HexaString.js.map +3 -3
  180. package/lib/cjs/src/api/utils/HexaString.test.js +1 -1
  181. package/lib/cjs/src/api/utils/HexaString.test.js.map +2 -2
  182. package/lib/cjs/src/di.js +1 -1
  183. package/lib/cjs/src/di.js.map +2 -2
  184. package/lib/cjs/src/internal/config/di/configModule.js +1 -1
  185. package/lib/cjs/src/internal/config/di/configModule.js.map +3 -3
  186. package/lib/cjs/src/internal/config/di/configModule.test.js +1 -1
  187. package/lib/cjs/src/internal/config/di/configModule.test.js.map +2 -2
  188. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +1 -1
  189. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  190. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  191. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  192. package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js +1 -1
  193. package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js.map +3 -3
  194. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  195. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  196. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  197. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  198. package/lib/cjs/src/internal/device-session/model/DevicePinger.js +1 -1
  199. package/lib/cjs/src/internal/device-session/model/DevicePinger.js.map +3 -3
  200. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  201. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  202. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  203. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  204. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  205. package/lib/cjs/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +3 -3
  206. package/lib/cjs/src/internal/device-session/model/Frame.js +1 -1
  207. package/lib/cjs/src/internal/device-session/model/Frame.js.map +3 -3
  208. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  209. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  210. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  211. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  212. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  213. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  214. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  215. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  216. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  217. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  218. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  219. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  220. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  221. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  222. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  223. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  224. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  225. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +2 -2
  226. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  227. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  228. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  229. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  230. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  231. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  232. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  233. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  234. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js +1 -1
  235. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  236. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  237. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  238. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  239. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  240. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  241. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  242. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  243. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  244. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  245. package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  246. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  247. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  248. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  249. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  250. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  251. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  252. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js +1 -1
  253. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  254. package/lib/cjs/src/internal/manager-api/model/Application.js +1 -1
  255. package/lib/cjs/src/internal/manager-api/model/Application.js.map +1 -1
  256. package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
  257. package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
  258. package/lib/cjs/src/internal/manager-api/model/Firmware.js +1 -1
  259. package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +1 -1
  260. package/lib/cjs/src/internal/manager-api/model/Language.js +2 -0
  261. package/lib/cjs/src/internal/manager-api/model/Language.js.map +7 -0
  262. package/lib/cjs/src/internal/manager-api/model/Params.js +1 -1
  263. package/lib/cjs/src/internal/manager-api/model/Params.js.map +1 -1
  264. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  265. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  266. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  267. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  268. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +1 -1
  269. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +1 -1
  270. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js +2 -0
  271. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.js.map +7 -0
  272. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js +2 -0
  273. package/lib/cjs/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +7 -0
  274. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  275. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  276. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  277. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  278. package/lib/cjs/src/internal/secure-channel/model/Errors.js +1 -1
  279. package/lib/cjs/src/internal/secure-channel/model/Errors.js.map +3 -3
  280. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +1 -1
  281. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  282. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  283. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  284. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +1 -1
  285. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +1 -1
  286. package/lib/cjs/src/internal/send/di/sendModule.js +1 -1
  287. package/lib/cjs/src/internal/send/di/sendModule.js.map +3 -3
  288. package/lib/cjs/src/internal/send/di/sendModule.test.js +1 -1
  289. package/lib/cjs/src/internal/send/di/sendModule.test.js.map +2 -2
  290. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +1 -1
  291. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  292. package/lib/cjs/src/internal/transport/di/transportModule.js +1 -1
  293. package/lib/cjs/src/internal/transport/di/transportModule.js.map +3 -3
  294. package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
  295. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +2 -2
  296. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js +1 -1
  297. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  298. package/lib/cjs/src/internal/transport/service/TransportService.js +1 -1
  299. package/lib/cjs/src/internal/transport/service/TransportService.js.map +1 -1
  300. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  301. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  302. package/lib/esm/package.json +22 -23
  303. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  304. package/lib/esm/src/api/DeviceManagementKit.js.map +3 -3
  305. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  306. package/lib/esm/src/api/DeviceManagementKit.test.js.map +3 -3
  307. package/lib/esm/src/api/DeviceManagementKitBuilder.js +1 -1
  308. package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +3 -3
  309. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  310. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  311. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  312. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  313. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js +1 -1
  314. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js.map +3 -3
  315. package/lib/esm/src/api/command/di/commandModule.js +1 -1
  316. package/lib/esm/src/api/command/di/commandModule.js.map +3 -3
  317. package/lib/esm/src/api/command/di/commandModule.test.js +1 -1
  318. package/lib/esm/src/api/command/di/commandModule.test.js.map +2 -2
  319. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js +2 -0
  320. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.js.map +7 -0
  321. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js +2 -0
  322. package/lib/esm/src/api/command/os/GetCustomImageSizeCommand.test.js.map +7 -0
  323. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  324. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +3 -3
  325. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  326. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  327. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js +2 -0
  328. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +7 -0
  329. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js +2 -0
  330. package/lib/esm/src/api/command/os/ListLanguagePackCommand.test.js.map +7 -0
  331. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +1 -1
  332. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +2 -2
  333. package/lib/esm/src/api/command/use-case/SendCommandUseCase.js +1 -1
  334. package/lib/esm/src/api/command/use-case/SendCommandUseCase.js.map +3 -3
  335. package/lib/esm/src/api/command/utils/CommandUtils.js +1 -1
  336. package/lib/esm/src/api/command/utils/CommandUtils.js.map +3 -3
  337. package/lib/esm/src/api/command/utils/CommandUtils.test.js +1 -1
  338. package/lib/esm/src/api/command/utils/CommandUtils.test.js.map +3 -3
  339. package/lib/esm/src/api/command/utils/GlobalCommandError.js +1 -1
  340. package/lib/esm/src/api/command/utils/GlobalCommandError.js.map +2 -2
  341. package/lib/esm/src/api/device/DeviceModel.js +1 -1
  342. package/lib/esm/src/api/device/DeviceModel.js.map +2 -2
  343. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  344. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  345. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  346. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +3 -3
  347. package/lib/esm/src/api/device-action/di/deviceActionModule.js +1 -1
  348. package/lib/esm/src/api/device-action/di/deviceActionModule.js.map +3 -3
  349. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js +1 -1
  350. package/lib/esm/src/api/device-action/di/deviceActionModule.test.js.map +2 -2
  351. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  352. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  353. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  354. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +2 -2
  355. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  356. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +2 -2
  357. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  358. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  359. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +2 -0
  360. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +7 -0
  361. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +2 -0
  362. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +7 -0
  363. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js +1 -0
  364. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +7 -0
  365. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  366. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +2 -2
  367. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  368. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  369. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +1 -1
  370. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +3 -3
  371. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js +2 -0
  372. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.js.map +7 -0
  373. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js +2 -0
  374. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.js.map +7 -0
  375. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js +1 -0
  376. package/lib/esm/src/api/device-action/os/InstallOrUpdateApps/types.js.map +7 -0
  377. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +1 -1
  378. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +2 -2
  379. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  380. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +3 -3
  381. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  382. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  383. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js +2 -0
  384. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.js.map +7 -0
  385. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js +2 -0
  386. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.js.map +7 -0
  387. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js +1 -0
  388. package/lib/esm/src/api/device-action/os/OpenAppWithDependencies/types.js.map +7 -0
  389. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  390. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  391. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  392. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +2 -2
  393. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js +2 -0
  394. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.js.map +7 -0
  395. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js +2 -0
  396. package/lib/esm/src/api/device-action/task/BuildAppsInstallPlanTask.test.js.map +7 -0
  397. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +2 -0
  398. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +7 -0
  399. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +2 -0
  400. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +7 -0
  401. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +2 -0
  402. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +7 -0
  403. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +2 -0
  404. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +7 -0
  405. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js +2 -0
  406. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.js.map +7 -0
  407. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js +2 -0
  408. package/lib/esm/src/api/device-action/task/PredictOutOfMemoryTask.test.js.map +7 -0
  409. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  410. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  411. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  412. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  413. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  414. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  415. package/lib/esm/src/api/device-model/model/DeviceModel.js +1 -1
  416. package/lib/esm/src/api/device-model/model/DeviceModel.js.map +2 -2
  417. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +1 -1
  418. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +2 -2
  419. package/lib/esm/src/api/device-session/DeviceSessionState.js +1 -1
  420. package/lib/esm/src/api/device-session/DeviceSessionState.js.map +2 -2
  421. package/lib/esm/src/api/index.js +1 -1
  422. package/lib/esm/src/api/index.js.map +3 -3
  423. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js +1 -1
  424. package/lib/esm/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.js.map +2 -2
  425. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js +1 -1
  426. package/lib/esm/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.js.map +3 -3
  427. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js +1 -1
  428. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.js.map +2 -2
  429. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js +1 -1
  430. package/lib/esm/src/api/secure-channel/device-action/ListInstalledApps/types.js.map +2 -2
  431. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js +1 -1
  432. package/lib/esm/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.js.map +3 -3
  433. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  434. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +3 -3
  435. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js +1 -1
  436. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.test.js.map +3 -3
  437. package/lib/esm/src/api/secure-channel/task/types.js +1 -1
  438. package/lib/esm/src/api/secure-channel/task/types.js.map +2 -2
  439. package/lib/esm/src/api/secure-channel/utils.js +1 -1
  440. package/lib/esm/src/api/secure-channel/utils.js.map +3 -3
  441. package/lib/esm/src/api/secure-channel/utils.test.js +1 -1
  442. package/lib/esm/src/api/secure-channel/utils.test.js.map +3 -3
  443. package/lib/esm/src/api/transport/model/DeviceApduSender.js +1 -0
  444. package/lib/esm/src/api/transport/model/DeviceApduSender.js.map +7 -0
  445. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  446. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  447. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js +2 -0
  448. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.test.js.map +7 -0
  449. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  450. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  451. package/lib/esm/src/api/utils/AppName.js +2 -0
  452. package/lib/esm/src/api/utils/AppName.js.map +7 -0
  453. package/lib/esm/src/api/utils/AppName.test.js +2 -0
  454. package/lib/esm/src/api/utils/AppName.test.js.map +7 -0
  455. package/lib/esm/src/api/utils/HexaString.js +1 -1
  456. package/lib/esm/src/api/utils/HexaString.js.map +3 -3
  457. package/lib/esm/src/api/utils/HexaString.test.js +1 -1
  458. package/lib/esm/src/api/utils/HexaString.test.js.map +2 -2
  459. package/lib/esm/src/di.js +1 -1
  460. package/lib/esm/src/di.js.map +3 -3
  461. package/lib/esm/src/internal/config/di/configModule.js +1 -1
  462. package/lib/esm/src/internal/config/di/configModule.js.map +3 -3
  463. package/lib/esm/src/internal/config/di/configModule.test.js +1 -1
  464. package/lib/esm/src/internal/config/di/configModule.test.js.map +2 -2
  465. package/lib/esm/src/internal/device-model/di/deviceModelModule.js +1 -1
  466. package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +3 -3
  467. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  468. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  469. package/lib/esm/src/internal/device-session/data/ApduResponseConst.js +1 -1
  470. package/lib/esm/src/internal/device-session/data/ApduResponseConst.js.map +3 -3
  471. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  472. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  473. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js +1 -1
  474. package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js.map +2 -2
  475. package/lib/esm/src/internal/device-session/model/DevicePinger.js +1 -1
  476. package/lib/esm/src/internal/device-session/model/DevicePinger.js.map +3 -3
  477. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  478. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  479. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js +1 -1
  480. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.js.map +3 -3
  481. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js +1 -1
  482. package/lib/esm/src/internal/device-session/model/DeviceSessionStateHandler.test.js.map +3 -3
  483. package/lib/esm/src/internal/device-session/model/Frame.js +1 -1
  484. package/lib/esm/src/internal/device-session/model/Frame.js.map +3 -3
  485. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  486. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  487. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  488. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  489. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  490. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  491. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  492. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  493. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  494. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  495. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  496. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  497. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  498. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +2 -2
  499. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  500. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  501. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +1 -1
  502. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +2 -2
  503. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  504. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  505. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  506. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  507. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  508. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  509. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  510. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  511. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js +1 -1
  512. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +3 -3
  513. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js +1 -1
  514. package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js.map +2 -2
  515. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  516. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  517. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  518. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  519. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js +1 -1
  520. package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js.map +1 -1
  521. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  522. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  523. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  524. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  525. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  526. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  527. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js +1 -1
  528. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  529. package/lib/esm/src/internal/manager-api/model/Application.js +1 -1
  530. package/lib/esm/src/internal/manager-api/model/Application.js.map +1 -1
  531. package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
  532. package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
  533. package/lib/esm/src/internal/manager-api/model/Language.js +1 -0
  534. package/lib/esm/src/internal/manager-api/model/Language.js.map +7 -0
  535. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  536. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  537. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  538. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  539. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js +2 -0
  540. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.js.map +7 -0
  541. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js +2 -0
  542. package/lib/esm/src/internal/manager-api/use-case/SetProviderUseCase.test.js.map +7 -0
  543. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  544. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  545. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  546. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +2 -2
  547. package/lib/esm/src/internal/secure-channel/model/Errors.js +1 -1
  548. package/lib/esm/src/internal/secure-channel/model/Errors.js.map +3 -3
  549. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +3 -3
  550. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +1 -1
  551. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +3 -3
  552. package/lib/esm/src/internal/send/di/sendModule.js +1 -1
  553. package/lib/esm/src/internal/send/di/sendModule.js.map +3 -3
  554. package/lib/esm/src/internal/send/di/sendModule.test.js +1 -1
  555. package/lib/esm/src/internal/send/di/sendModule.test.js.map +2 -2
  556. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js +1 -1
  557. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +3 -3
  558. package/lib/esm/src/internal/transport/di/transportModule.js +1 -1
  559. package/lib/esm/src/internal/transport/di/transportModule.js.map +3 -3
  560. package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
  561. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
  562. package/lib/esm/src/internal/transport/service/DefaultTransportService.js +1 -1
  563. package/lib/esm/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  564. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  565. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  566. package/lib/types/src/api/DeviceManagementKit.d.ts +15 -1
  567. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  568. package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -1
  569. package/lib/types/src/api/DmkConfig.d.ts +2 -0
  570. package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
  571. package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
  572. package/lib/types/src/api/apdu/utils/ApduParser.d.ts.map +1 -1
  573. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +66 -0
  574. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  575. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts +1 -0
  576. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts.map +1 -1
  577. package/lib/types/src/api/command/di/commandModule.d.ts.map +1 -1
  578. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts +16 -0
  579. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.d.ts.map +1 -0
  580. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts +2 -0
  581. package/lib/types/src/api/command/os/GetCustomImageSizeCommand.test.d.ts.map +1 -0
  582. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +30 -2
  583. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  584. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +24 -0
  585. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -0
  586. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts +2 -0
  587. package/lib/types/src/api/command/os/ListLanguagePackCommand.test.d.ts.map +1 -0
  588. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -1
  589. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts +5 -1
  590. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts.map +1 -1
  591. package/lib/types/src/api/command/utils/CommandErrors.d.ts.map +1 -1
  592. package/lib/types/src/api/command/utils/CommandUtils.d.ts +4 -0
  593. package/lib/types/src/api/command/utils/CommandUtils.d.ts.map +1 -1
  594. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts +1 -1
  595. package/lib/types/src/api/command/utils/GlobalCommandError.d.ts.map +1 -1
  596. package/lib/types/src/api/device/DeviceModel.d.ts +2 -1
  597. package/lib/types/src/api/device/DeviceModel.d.ts.map +1 -1
  598. package/lib/types/src/api/device-action/DeviceAction.d.ts +3 -1
  599. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  600. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  601. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +5 -0
  602. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  603. package/lib/types/src/api/device-action/di/deviceActionModule.d.ts.map +1 -1
  604. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +1 -0
  605. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  606. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  607. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +1 -1
  608. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  609. package/lib/types/src/api/device-action/os/Errors.d.ts +20 -0
  610. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  611. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts +58 -0
  612. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -0
  613. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts +2 -0
  614. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.d.ts.map +1 -0
  615. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +28 -0
  616. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -0
  617. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
  618. package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts.map +1 -1
  619. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +3 -4
  620. package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
  621. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts +40 -0
  622. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.d.ts.map +1 -0
  623. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts +2 -0
  624. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction.test.d.ts.map +1 -0
  625. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts +65 -0
  626. package/lib/types/src/api/device-action/os/InstallOrUpdateApps/types.d.ts.map +1 -0
  627. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
  628. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +0 -1
  629. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
  630. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts +15 -0
  631. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.d.ts.map +1 -0
  632. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts +2 -0
  633. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction.test.d.ts.map +1 -0
  634. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts +24 -0
  635. package/lib/types/src/api/device-action/os/OpenAppWithDependencies/types.d.ts.map +1 -0
  636. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
  637. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +1 -1
  638. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  639. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts +30 -0
  640. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.d.ts.map +1 -0
  641. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts +2 -0
  642. package/lib/types/src/api/device-action/task/BuildAppsInstallPlanTask.test.d.ts.map +1 -0
  643. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +31 -0
  644. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -0
  645. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts +2 -0
  646. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.test.d.ts.map +1 -0
  647. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +18 -0
  648. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -0
  649. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts +2 -0
  650. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.test.d.ts.map +1 -0
  651. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts +21 -0
  652. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.d.ts.map +1 -0
  653. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts +2 -0
  654. package/lib/types/src/api/device-action/task/PredictOutOfMemoryTask.test.d.ts.map +1 -0
  655. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +1 -0
  656. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  657. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
  658. package/lib/types/src/api/device-model/model/DeviceModel.d.ts +2 -0
  659. package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -1
  660. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -1
  661. package/lib/types/src/api/device-session/DeviceSessionState.d.ts +93 -0
  662. package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
  663. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -1
  664. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -1
  665. package/lib/types/src/api/index.d.ts +6 -1
  666. package/lib/types/src/api/index.d.ts.map +1 -1
  667. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction.d.ts.map +1 -1
  668. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts +2 -1
  669. package/lib/types/src/api/secure-channel/device-action/GenuineCheck/types.d.ts.map +1 -1
  670. package/lib/types/src/api/secure-channel/device-action/InstallApp/InstallAppDeviceAction.d.ts.map +1 -1
  671. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts +2 -1
  672. package/lib/types/src/api/secure-channel/device-action/InstallApp/types.d.ts.map +1 -1
  673. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction.d.ts.map +1 -1
  674. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts +2 -1
  675. package/lib/types/src/api/secure-channel/device-action/ListInstalledApps/types.d.ts.map +1 -1
  676. package/lib/types/src/api/secure-channel/device-action/UninstallApp/UninstallAppDeviceAction.d.ts.map +1 -1
  677. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts +2 -1
  678. package/lib/types/src/api/secure-channel/device-action/UninstallApp/types.d.ts.map +1 -1
  679. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts +5 -2
  680. package/lib/types/src/api/secure-channel/task/ConnectToSecureChannelTask.d.ts.map +1 -1
  681. package/lib/types/src/api/secure-channel/task/types.d.ts +6 -1
  682. package/lib/types/src/api/secure-channel/task/types.d.ts.map +1 -1
  683. package/lib/types/src/api/secure-channel/utils.d.ts +0 -11
  684. package/lib/types/src/api/secure-channel/utils.d.ts.map +1 -1
  685. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts +17 -0
  686. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts.map +1 -0
  687. package/lib/types/src/api/transport/model/DeviceConnection.d.ts +2 -1
  688. package/lib/types/src/api/transport/model/DeviceConnection.d.ts.map +1 -1
  689. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts +63 -0
  690. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -0
  691. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts +2 -0
  692. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.test.d.ts.map +1 -0
  693. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts +1 -1
  694. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts.map +1 -1
  695. package/lib/types/src/api/transport/model/Errors.d.ts +27 -3
  696. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  697. package/lib/types/src/api/transport/model/Transport.d.ts +1 -1
  698. package/lib/types/src/api/transport/model/Transport.d.ts.map +1 -1
  699. package/lib/types/src/api/types.d.ts +6 -2
  700. package/lib/types/src/api/types.d.ts.map +1 -1
  701. package/lib/types/src/api/utils/AppName.d.ts +2 -0
  702. package/lib/types/src/api/utils/AppName.d.ts.map +1 -0
  703. package/lib/types/src/api/utils/AppName.test.d.ts +2 -0
  704. package/lib/types/src/api/utils/AppName.test.d.ts.map +1 -0
  705. package/lib/types/src/api/utils/HexaString.d.ts +4 -3
  706. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  707. package/lib/types/src/di.d.ts.map +1 -1
  708. package/lib/types/src/internal/config/di/configModule.d.ts.map +1 -1
  709. package/lib/types/src/internal/device-model/di/deviceModelModule.d.ts.map +1 -1
  710. package/lib/types/src/internal/device-session/data/ApduResponseConst.d.ts +1 -0
  711. package/lib/types/src/internal/device-session/data/ApduResponseConst.d.ts.map +1 -1
  712. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  713. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts +1 -1
  714. package/lib/types/src/internal/device-session/model/DevicePinger.d.ts.map +1 -1
  715. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +3 -1
  716. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  717. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  718. package/lib/types/src/internal/device-session/model/DeviceSessionStateHandler.d.ts.map +1 -1
  719. package/lib/types/src/internal/device-session/model/Frame.d.ts.map +1 -1
  720. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.d.ts.map +1 -1
  721. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts +3 -1
  722. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts.map +1 -1
  723. package/lib/types/src/internal/device-session/utils/deviceSessionUtils.d.ts.map +1 -1
  724. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  725. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts +1 -1
  726. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts.map +1 -1
  727. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts +1 -1
  728. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts.map +1 -1
  729. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts +4 -2
  730. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts.map +1 -1
  731. package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
  732. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +24 -5
  733. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
  734. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +51 -6
  735. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  736. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts +104 -18
  737. package/lib/types/src/internal/manager-api/data/ManagerApiDto.d.ts.map +1 -1
  738. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +7 -0
  739. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
  740. package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
  741. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts +1 -0
  742. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts.map +1 -1
  743. package/lib/types/src/internal/manager-api/model/Application.d.ts +12 -12
  744. package/lib/types/src/internal/manager-api/model/Application.d.ts.map +1 -1
  745. package/lib/types/src/internal/manager-api/model/Const.d.ts +2 -0
  746. package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
  747. package/lib/types/src/internal/manager-api/model/Firmware.d.ts +17 -3
  748. package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -1
  749. package/lib/types/src/internal/manager-api/model/Language.d.ts +12 -0
  750. package/lib/types/src/internal/manager-api/model/Language.d.ts.map +1 -0
  751. package/lib/types/src/internal/manager-api/model/Params.d.ts +20 -6
  752. package/lib/types/src/internal/manager-api/model/Params.d.ts.map +1 -1
  753. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts +9 -3
  754. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
  755. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +42 -7
  756. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
  757. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts +13 -0
  758. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.d.ts.map +1 -0
  759. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.test.d.ts +2 -0
  760. package/lib/types/src/internal/manager-api/use-case/SetProviderUseCase.test.d.ts.map +1 -0
  761. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -1
  762. package/lib/types/src/internal/secure-channel/model/Errors.d.ts +22 -2
  763. package/lib/types/src/internal/secure-channel/model/Errors.d.ts.map +1 -1
  764. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +2 -2
  765. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -1
  766. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +3 -3
  767. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -1
  768. package/lib/types/src/internal/send/di/sendModule.d.ts.map +1 -1
  769. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +9 -1
  770. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts.map +1 -1
  771. package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
  772. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts +2 -0
  773. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts.map +1 -1
  774. package/lib/types/src/internal/transport/service/TransportService.d.ts +3 -1
  775. package/lib/types/src/internal/transport/service/TransportService.d.ts.map +1 -1
  776. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts +1 -0
  777. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts.map +1 -1
  778. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  779. package/package.json +18 -19
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/BuildAppsInstallPlanTask.ts"],
4
+ "sourcesContent": ["import { gte } from \"semver\";\n\nimport type { DeviceModelId } from \"@api/device/DeviceModel\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n UnknownDAError,\n UnsupportedFirmwareDAError,\n} from \"@api/device-action/os/Errors\";\nimport type {\n ApplicationConstraint,\n ApplicationDependency,\n} from \"@api/device-action/os/InstallOrUpdateApps/types\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nexport type BuildAppsInstallPlanTaskArgs = {\n /**\n * List of applications to install or update\n */\n readonly applications: ApplicationDependency[];\n\n /**\n * Indicates if the device action should fail if an application is missing from the app store.\n */\n readonly allowMissingApplication: boolean;\n};\n\nexport type BuildAppsInstallPlanTaskResult =\n | {\n installPlan: Application[];\n alreadyInstalled: string[];\n missingApplications: string[];\n }\n | {\n error: UnknownDAError | UnsupportedFirmwareDAError;\n };\n\nexport class BuildAppsInstallPlanTask {\n private readonly deviceModelId: DeviceModelId;\n\n constructor(\n private readonly api: InternalApi,\n private readonly args: BuildAppsInstallPlanTaskArgs,\n ) {\n const deviceModel = api.getDeviceModel();\n this.deviceModelId = deviceModel.id;\n }\n\n run(): BuildAppsInstallPlanTaskResult {\n // Get device session state.\n const deviceState = this.api.getDeviceSessionState();\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return { error: new UnknownDAError(\"Invalid device state\") };\n }\n\n // Ensure the device metadata were correctly fetched.\n if (deviceState.catalog === undefined) {\n return { error: new UnknownDAError(\"Device apps metadata not fetched\") };\n }\n\n // Build the install plan\n let installPlan: Application[] = [];\n let alreadyInstalled: string[] = [];\n let missingApplications: string[] = [];\n for (const app of this.args.applications) {\n // Get app entry from catalog and from installed apps\n const catalogApp = deviceState.catalog.applications.find(\n (a) => a.versionName === app.name,\n );\n const installedApp = deviceState.installedApps.find(\n (a) => a.versionName === app.name,\n );\n\n // If app is already installed, with validated constraints, continue the iteration\n if (\n installedApp !== undefined &&\n this.validateConstraint(installedApp, catalogApp, app.constraints)\n ) {\n alreadyInstalled = [...alreadyInstalled, app.name];\n continue;\n }\n\n // Handle the catalog application\n if (\n catalogApp !== undefined &&\n this.validateConstraint(catalogApp, undefined, app.constraints)\n ) {\n // Add the catalog application to the install plan\n installPlan = [...installPlan, catalogApp];\n } else if (this.args.allowMissingApplication) {\n missingApplications = [...missingApplications, app.name];\n } else {\n // Fail immediately if missing application is not allowed\n if (catalogApp !== undefined) {\n // Is application is found in the catalog in an old version,\n // it usually means the firmware is also outdated.\n return {\n error: new UnsupportedFirmwareDAError(\n `Application ${app.name} not found in the catalog`,\n ),\n };\n } else {\n return {\n error: new UnknownDAError(\n `Application ${app.name} not found in the catalog`,\n ),\n };\n }\n }\n }\n\n // Find installPlan dependencies\n const dependencies = installPlan.reduce((apps, app) => {\n const dependency = app.parentName;\n if (dependency) {\n const catalogApp = deviceState.catalog!.applications.find(\n (a) => a.versionName === dependency,\n );\n const installedApp = deviceState.installedApps.find(\n (a) => a.versionName === dependency,\n );\n if (catalogApp && !installedApp) {\n return [...apps, catalogApp];\n }\n }\n return apps;\n }, [] as Application[]);\n\n // Reorder and deduplicate the install plan with its dependencies first\n installPlan = [...dependencies, ...installPlan];\n const reorderedInstallPlan = installPlan.filter(\n (app, index) =>\n installPlan.findIndex((a) => a.versionName === app.versionName) ===\n index,\n );\n\n return {\n installPlan: reorderedInstallPlan,\n missingApplications,\n alreadyInstalled,\n };\n }\n\n private validateConstraint(\n app: Application,\n catalogApp?: Application,\n constraints?: ApplicationConstraint[],\n ): boolean {\n if (constraints === undefined) {\n // No constraint\n return true;\n }\n\n // Validate the constraint\n for (const constraint of constraints) {\n // Is current device exempt from the constraint?\n if (\n constraint.exemptModels !== undefined &&\n constraint.exemptModels.includes(this.deviceModelId)\n ) {\n continue;\n }\n\n // Is current device not applicable for the constraint?\n if (\n constraint.applicableModels !== undefined &&\n !constraint.applicableModels.includes(this.deviceModelId)\n ) {\n continue;\n }\n\n // Validate the min version\n if (constraint.minVersion === \"latest\") {\n return !catalogApp || gte(app.version, catalogApp.version);\n } else {\n return gte(app.version, constraint.minVersion);\n }\n }\n\n // No constraint for the device\n return true;\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,OAAAA,MAAW,SAIpB,OACE,kBAAAC,EACA,8BAAAC,MACK,+BAKP,OAAS,0BAAAC,MAA8B,yCAyBhC,MAAMC,CAAyB,CAGpC,YACmBC,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,EAEjB,MAAMC,EAAcF,EAAI,eAAe,EACvC,KAAK,cAAgBE,EAAY,EACnC,CARiB,cAUjB,KAAsC,CAEpC,MAAMC,EAAc,KAAK,IAAI,sBAAsB,EACnD,GAAIA,EAAY,mBAAqBL,EAAuB,UAC1D,MAAO,CAAE,MAAO,IAAIF,EAAe,sBAAsB,CAAE,EAI7D,GAAIO,EAAY,UAAY,OAC1B,MAAO,CAAE,MAAO,IAAIP,EAAe,kCAAkC,CAAE,EAIzE,IAAIQ,EAA6B,CAAC,EAC9BC,EAA6B,CAAC,EAC9BC,EAAgC,CAAC,EACrC,UAAWC,KAAO,KAAK,KAAK,aAAc,CAExC,MAAMC,EAAaL,EAAY,QAAQ,aAAa,KACjDM,GAAMA,EAAE,cAAgBF,EAAI,IAC/B,EACMG,EAAeP,EAAY,cAAc,KAC5CM,GAAMA,EAAE,cAAgBF,EAAI,IAC/B,EAGA,GACEG,IAAiB,QACjB,KAAK,mBAAmBA,EAAcF,EAAYD,EAAI,WAAW,EACjE,CACAF,EAAmB,CAAC,GAAGA,EAAkBE,EAAI,IAAI,EACjD,QACF,CAGA,GACEC,IAAe,QACf,KAAK,mBAAmBA,EAAY,OAAWD,EAAI,WAAW,EAG9DH,EAAc,CAAC,GAAGA,EAAaI,CAAU,UAChC,KAAK,KAAK,wBACnBF,EAAsB,CAAC,GAAGA,EAAqBC,EAAI,IAAI,MAGvD,QAAIC,IAAe,OAGV,CACL,MAAO,IAAIX,EACT,eAAeU,EAAI,IAAI,2BACzB,CACF,EAEO,CACL,MAAO,IAAIX,EACT,eAAeW,EAAI,IAAI,2BACzB,CACF,CAGN,CAoBA,OAAAH,EAAc,CAAC,GAjBMA,EAAY,OAAO,CAACO,EAAMJ,IAAQ,CACrD,MAAMK,EAAaL,EAAI,WACvB,GAAIK,EAAY,CACd,MAAMJ,EAAaL,EAAY,QAAS,aAAa,KAClDM,GAAMA,EAAE,cAAgBG,CAC3B,EACMF,EAAeP,EAAY,cAAc,KAC5CM,GAAMA,EAAE,cAAgBG,CAC3B,EACA,GAAIJ,GAAc,CAACE,EACjB,MAAO,CAAC,GAAGC,EAAMH,CAAU,CAE/B,CACA,OAAOG,CACT,EAAG,CAAC,CAAkB,EAGU,GAAGP,CAAW,EAOvC,CACL,YAP2BA,EAAY,OACvC,CAACG,EAAKM,IACJT,EAAY,UAAWK,GAAMA,EAAE,cAAgBF,EAAI,WAAW,IAC9DM,CACJ,EAIE,oBAAAP,EACA,iBAAAD,CACF,CACF,CAEQ,mBACNE,EACAC,EACAM,EACS,CACT,GAAIA,IAAgB,OAElB,MAAO,GAIT,UAAWC,KAAcD,EAEvB,GACE,EAAAC,EAAW,eAAiB,QAC5BA,EAAW,aAAa,SAAS,KAAK,aAAa,IAOnD,EAAAA,EAAW,mBAAqB,QAChC,CAACA,EAAW,iBAAiB,SAAS,KAAK,aAAa,GAM1D,OAAIA,EAAW,aAAe,SACrB,CAACP,GAAcb,EAAIY,EAAI,QAASC,EAAW,OAAO,EAElDb,EAAIY,EAAI,QAASQ,EAAW,UAAU,EAKjD,MAAO,EACT,CACF",
6
+ "names": ["gte", "UnknownDAError", "UnsupportedFirmwareDAError", "DeviceSessionStateType", "BuildAppsInstallPlanTask", "api", "args", "deviceModel", "deviceState", "installPlan", "alreadyInstalled", "missingApplications", "app", "catalogApp", "a", "installedApp", "apps", "dependency", "index", "constraints", "constraint"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as t}from"../../device/DeviceModel";import{DeviceStatus as a}from"../../device/DeviceStatus";import{makeDeviceActionInternalApiMock as r}from"../../device-action/__test-utils__/makeInternalApi";import{UnknownDAError as o,UnsupportedFirmwareDAError as l}from"../../device-action/os/Errors";import{DeviceSessionStateType as i}from"../../device-session/DeviceSessionState";import{BuildAppsInstallPlanTask as s}from"./BuildAppsInstallPlanTask";describe("BuildAppsInstallPlanTask",()=>{const e=r();beforeEach(()=>{vi.clearAllMocks(),e.getDeviceModel.mockReturnValue({id:t.NANO_X})}),it("Success with no changes needed",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum"},{name:"Bitcoin"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[],alreadyInstalled:["Ethereum","Bitcoin"],missingApplications:[]})}),it("Success with no constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.1.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum"},{name:"Solana"},{name:"Cardano"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Solana",version:"1.2.0"},{versionName:"Cardano",version:"1.1.0"}],alreadyInstalled:["Ethereum"],missingApplications:[]})}),it("Success with applicable constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.2.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"Cardano",version:"1.1.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"1.6.0",applicableModels:[t.NANO_X]}]},{name:"Bitcoin",constraints:[{minVersion:"1.2.1",exemptModels:[t.NANO_S]}]},{name:"Solana",constraints:[{minVersion:"1.2.0"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"}],alreadyInstalled:[],missingApplications:[]})}),it("Success with non-applicable constraints",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.2.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"Cardano",version:"1.1.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"MyShitCoin",version:"0.0.1"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"1.6.0",exemptModels:[t.NANO_X]}]},{name:"Bitcoin",constraints:[{minVersion:"1.2.1",applicableModels:[t.NANO_S]}]},{name:"Cardano",constraints:[{minVersion:"1.1.0"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[],alreadyInstalled:["Ethereum","Bitcoin","Cardano"],missingApplications:[]})}),it("Success with applicable constraints latest version",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.1.0"},{versionName:"MyShitCoin",version:"0.0.1"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"},{versionName:"Cardano",version:"1.2.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"latest"}]},{name:"Bitcoin",constraints:[{minVersion:"latest"}]},{name:"MyShitCoin",constraints:[{minVersion:"latest"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0"}],alreadyInstalled:["Bitcoin","MyShitCoin"],missingApplications:[]})}),it("Success with dependencies",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"AlreadyInstalledDep",version:"1.2.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0",parentName:void 0},{versionName:"Solana",version:"1.2.0",parentName:void 0},{versionName:"MyEthShitCoin",version:"0.0.1",parentName:"Ethereum"},{versionName:"MySolShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"MyPumpFunShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"Cardano",version:"1.2.0",parentName:void 0},{versionName:"AlreadyInstalledDep",version:"1.2.0",parentName:"Cardano"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"MyEthShitCoin"},{name:"MySolShitCoin"},{name:"Solana"},{name:"MyPumpFunShitCoin"},{name:"AlreadyInstalledDep"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Ethereum",version:"1.6.0",parentName:void 0},{versionName:"Solana",version:"1.2.0",parentName:void 0},{versionName:"MyEthShitCoin",version:"0.0.1",parentName:"Ethereum"},{versionName:"MySolShitCoin",version:"0.0.1",parentName:"Solana"},{versionName:"MyPumpFunShitCoin",version:"0.0.1",parentName:"Solana"}],alreadyInstalled:["AlreadyInstalledDep"],missingApplications:[]})}),it("Success with allowed missing applications",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[{versionName:"Ethereum",version:"1.5.0"},{versionName:"Bitcoin",version:"1.3.0"}],catalog:{applications:[{versionName:"Ethereum",version:"1.6.0"},{versionName:"Bitcoin",version:"1.3.0"},{versionName:"Solana",version:"1.2.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum"},{name:"Solana"},{name:"Cardano"}],allowMissingApplication:!0}).run();expect(n).toStrictEqual({installPlan:[{versionName:"Solana",version:"1.2.0"}],alreadyInstalled:["Ethereum"],missingApplications:["Cardano"]})}),it("Error when device is in incorrect state",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.Connected,deviceStatus:a.CONNECTED});const n=new s(e,{applications:[{name:"Ethereum"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new o("Invalid device state")})}),it("Error when device session was not populated",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[]});const n=new s(e,{applications:[{name:"Ethereum"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new o("Device apps metadata not fetched")})}),it("Error when an app is not found in the catalog",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[],catalog:{applications:[],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum"},{name:"Bitcoin"},{name:"Solana"}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new o("Application Ethereum not found in the catalog")})}),it("Error when an app version is not found in the catalog",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,installedApps:[],catalog:{applications:[{versionName:"Ethereum",version:"1.5.0"}],languagePackages:[]}});const n=new s(e,{applications:[{name:"Ethereum",constraints:[{minVersion:"1.6.0"}]}],allowMissingApplication:!1}).run();expect(n).toStrictEqual({error:new l("Application Ethereum not found in the catalog")})})});
2
+ //# sourceMappingURL=BuildAppsInstallPlanTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/BuildAppsInstallPlanTask.test.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport {\n UnknownDAError,\n UnsupportedFirmwareDAError,\n} from \"@api/device-action/os/Errors\";\nimport type { TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nimport { BuildAppsInstallPlanTask } from \"./BuildAppsInstallPlanTask\";\n\ndescribe(\"BuildAppsInstallPlanTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceModel.mockReturnValue({\n id: DeviceModelId.NANO_X,\n } as unknown as TransportDeviceModel);\n });\n\n it(\"Success with no changes needed\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }, { name: \"Bitcoin\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Bitcoin\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with no constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"Cardano\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ],\n alreadyInstalled: [\"Ethereum\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with applicable constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.2.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n {\n name: \"Ethereum\",\n constraints: [\n { minVersion: \"1.6.0\", applicableModels: [DeviceModelId.NANO_X] },\n ],\n },\n {\n name: \"Bitcoin\",\n constraints: [\n { minVersion: \"1.2.1\", exemptModels: [DeviceModelId.NANO_S] },\n ],\n },\n { name: \"Solana\", constraints: [{ minVersion: \"1.2.0\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n ],\n alreadyInstalled: [],\n missingApplications: [],\n });\n });\n\n it(\"Success with non-applicable constraints\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.2.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"Cardano\", version: \"1.1.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n {\n name: \"Ethereum\",\n constraints: [\n { minVersion: \"1.6.0\", exemptModels: [DeviceModelId.NANO_X] },\n ],\n },\n {\n name: \"Bitcoin\",\n constraints: [\n { minVersion: \"1.2.1\", applicableModels: [DeviceModelId.NANO_S] },\n ],\n },\n { name: \"Cardano\", constraints: [{ minVersion: \"1.1.0\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [],\n alreadyInstalled: [\"Ethereum\", \"Bitcoin\", \"Cardano\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with applicable constraints latest version\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.1.0\" },\n { versionName: \"MyShitCoin\", version: \"0.0.1\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n { versionName: \"Cardano\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\", constraints: [{ minVersion: \"latest\" }] },\n { name: \"Bitcoin\", constraints: [{ minVersion: \"latest\" }] },\n { name: \"MyShitCoin\", constraints: [{ minVersion: \"latest\" }] },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [{ versionName: \"Ethereum\", version: \"1.6.0\" }],\n alreadyInstalled: [\"Bitcoin\", \"MyShitCoin\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with dependencies\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"AlreadyInstalledDep\", version: \"1.2.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\", parentName: undefined },\n { versionName: \"Solana\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"MyEthShitCoin\",\n version: \"0.0.1\",\n parentName: \"Ethereum\",\n },\n {\n versionName: \"MySolShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n {\n versionName: \"MyPumpFunShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n { versionName: \"Cardano\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"AlreadyInstalledDep\",\n version: \"1.2.0\",\n parentName: \"Cardano\",\n },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"MyEthShitCoin\" },\n { name: \"MySolShitCoin\" },\n { name: \"Solana\" },\n { name: \"MyPumpFunShitCoin\" },\n { name: \"AlreadyInstalledDep\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [\n { versionName: \"Ethereum\", version: \"1.6.0\", parentName: undefined },\n { versionName: \"Solana\", version: \"1.2.0\", parentName: undefined },\n {\n versionName: \"MyEthShitCoin\",\n version: \"0.0.1\",\n parentName: \"Ethereum\",\n },\n {\n versionName: \"MySolShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n {\n versionName: \"MyPumpFunShitCoin\",\n version: \"0.0.1\",\n parentName: \"Solana\",\n },\n ],\n alreadyInstalled: [\"AlreadyInstalledDep\"],\n missingApplications: [],\n });\n });\n\n it(\"Success with allowed missing applications\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n ] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.6.0\" },\n { versionName: \"Bitcoin\", version: \"1.3.0\" },\n { versionName: \"Solana\", version: \"1.2.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Solana\" },\n { name: \"Cardano\" },\n ],\n allowMissingApplication: true,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n installPlan: [{ versionName: \"Solana\", version: \"1.2.0\" }],\n alreadyInstalled: [\"Ethereum\"],\n missingApplications: [\"Cardano\"],\n });\n });\n\n it(\"Error when device is in incorrect state\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Invalid device state\"),\n });\n });\n\n it(\"Error when device session was not populated\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [{ name: \"Ethereum\" }],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Device apps metadata not fetched\"),\n });\n });\n\n it(\"Error when an app is not found in the catalog\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [] as unknown as Application[],\n catalog: {\n applications: [] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n { name: \"Ethereum\" },\n { name: \"Bitcoin\" },\n { name: \"Solana\" },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\n \"Application Ethereum not found in the catalog\",\n ),\n });\n });\n\n it(\"Error when an app version is not found in the catalog\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [] as unknown as Application[],\n catalog: {\n applications: [\n { versionName: \"Ethereum\", version: \"1.5.0\" },\n ] as unknown as Application[],\n languagePackages: [],\n },\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new BuildAppsInstallPlanTask(apiMock, {\n applications: [\n {\n name: \"Ethereum\",\n constraints: [{ minVersion: \"1.6.0\" }],\n },\n ],\n allowMissingApplication: false,\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnsupportedFirmwareDAError(\n \"Application Ethereum not found in the catalog\",\n ),\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "DeviceStatus", "makeDeviceActionInternalApiMock", "UnknownDAError", "UnsupportedFirmwareDAError", "DeviceSessionStateType", "BuildAppsInstallPlanTask", "apiMock", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{gt as v}from"semver";import{InvalidStatusWordError as m}from"../../command/Errors";import{CommandResultFactory as p,isSuccessCommandResult as y}from"../../command/model/CommandResult";import{ListLanguagePackCommand as C}from"../../command/os/ListLanguagePackCommand";const w="0000000000000000000000000000000000000000000000000000000000000000";class M{constructor(e,n){this.api=e;this.args=n}async run(){const e=this.args.installedApps.filter(a=>this.isApplication(a)),n=this.api.getManagerApiService(),u=e.map(a=>a.hash),l=await n.getAppsByHash(u).chain(a=>n.getAppList(this.args.firmwareVersion.metadata).map(t=>({applications:a,catalog:t})));if(l.isLeft())return p({error:new m("Cannot get the application catalog")});const{applications:c,catalog:s}=l.unsafeCoerce(),A=c.reduce((a,t,i)=>{if(t!==null)return[...a,t];const o=e[i],d=s.find(h=>h.versionName===o.name);return d?[...a,d]:a},[]),f=c.filter(a=>a!==null).reduce((a,t)=>{const i=s.find(o=>o.versionName===t.versionName);return i&&v(i.version,t.version)?[...a,i]:a},[]);let r=[];for(let a=0;;a++){const t=await this.api.sendCommand(new C({firstChunk:a===0}));if(!y(t)||t.data===void 0)break;r=[...r,t.data]}const g=await n.getLanguagePackages(this.args.deviceVersion,this.args.firmware);return g.isRight()?p({data:{applications:A,applicationsUpdates:f,installedLanguages:r,catalog:{applications:s,languagePackages:g.extract()}}}):p({error:new m("Cannot get the languages catalog")})}isApplication(e){return e.hashCode!==w}}export{M as GetApplicationsMetadataTask};
2
+ //# sourceMappingURL=GetApplicationsMetadataTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/GetApplicationsMetadataTask.ts"],
4
+ "sourcesContent": ["import { gt } from \"semver\";\n\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { ListLanguagePackCommand } from \"@api/command/os/ListLanguagePackCommand\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type Catalog,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nexport type InstalledApp = {\n hash: string;\n hashCode: string;\n name: string;\n};\n\nexport type GetApplicationsMetadataTaskArgs = {\n deviceVersion: DeviceVersion;\n firmware: FinalFirmware;\n firmwareVersion: FirmwareVersion;\n installedApps: InstalledApp[];\n};\n\nexport type GetApplicationsMetadataTaskResult = CommandResult<{\n applications: Application[];\n applicationsUpdates: Application[];\n installedLanguages: InstalledLanguagePackage[];\n catalog: Catalog;\n}>;\n\nconst ZERO_HASH =\n \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nexport class GetApplicationsMetadataTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: GetApplicationsMetadataTaskArgs,\n ) {}\n\n async run(): Promise<GetApplicationsMetadataTaskResult> {\n // Get applications metadata\n const installedApps = this.args.installedApps.filter((app) =>\n this.isApplication(app),\n );\n const manager = this.api.getManagerApiService();\n const appHashes = installedApps.map((app) => app.hash);\n const result = await manager\n .getAppsByHash(appHashes)\n .chain((applications) =>\n manager\n .getAppList(this.args.firmwareVersion.metadata!)\n .map((catalog) => ({ applications, catalog })),\n );\n if (result.isLeft()) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the application catalog\"),\n });\n }\n const { applications, catalog } = result.unsafeCoerce();\n\n // Complete applications metadata using the catalog if needed\n const appsWithMetadata = applications.reduce((apps, app, index) => {\n if (app !== null) {\n // Is the app hash was found in app store, append its metadata\n return [...apps, app];\n }\n // For apps with non-deterministic hash (ie. Security Key, sideloaded app, ...),\n // use metadata of latest version from the catalog\n const installedApp = installedApps[index]!;\n const catalogApp = catalog.find(\n (c) => c.versionName === installedApp.name,\n );\n return catalogApp ? [...apps, catalogApp] : apps;\n }, [] as Application[]);\n\n // Filter apps metadata and catalog\n const filteredApps = applications.filter((app) => app !== null);\n const filteredCatalog = filteredApps.reduce((apps, app) => {\n const catalogApp = catalog.find((c) => c.versionName === app.versionName);\n if (catalogApp && gt(catalogApp.version, app.version)) {\n return [...apps, catalogApp];\n }\n return apps;\n }, [] as Application[]);\n\n // Get install language packages\n let installedLanguages: InstalledLanguagePackage[] = [];\n for (let i = 0; ; i++) {\n const language = await this.api.sendCommand(\n new ListLanguagePackCommand({ firstChunk: i === 0 }),\n );\n if (!isSuccessCommandResult(language) || language.data === undefined) {\n break;\n }\n installedLanguages = [...installedLanguages, language.data];\n }\n\n // Get all the available language packs for the device\n const languages = await manager.getLanguagePackages(\n this.args.deviceVersion,\n this.args.firmware,\n );\n if (languages.isRight()) {\n // Return the application metadata\n return CommandResultFactory({\n data: {\n applications: appsWithMetadata,\n applicationsUpdates: filteredCatalog,\n installedLanguages,\n catalog: {\n applications: catalog,\n languagePackages: languages.extract(),\n },\n },\n });\n } else {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the languages catalog\"),\n });\n }\n }\n\n private isApplication(app: InstalledApp): boolean {\n // Applications with no \"code\" hash are not real applications\n // (typically a language package).\n return app.hashCode !== ZERO_HASH;\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,MAAAA,MAAU,SAEnB,OAAS,0BAAAC,MAA8B,sBACvC,OAEE,wBAAAC,EACA,0BAAAC,MACK,mCACP,OAAS,2BAAAC,MAA+B,0CA+BxC,MAAMC,EACJ,mEAEK,MAAMC,CAA4B,CACvC,YACmBC,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,CAChB,CAEH,MAAM,KAAkD,CAEtD,MAAMC,EAAgB,KAAK,KAAK,cAAc,OAAQC,GACpD,KAAK,cAAcA,CAAG,CACxB,EACMC,EAAU,KAAK,IAAI,qBAAqB,EACxCC,EAAYH,EAAc,IAAKC,GAAQA,EAAI,IAAI,EAC/CG,EAAS,MAAMF,EAClB,cAAcC,CAAS,EACvB,MAAOE,GACNH,EACG,WAAW,KAAK,KAAK,gBAAgB,QAAS,EAC9C,IAAKI,IAAa,CAAE,aAAAD,EAAc,QAAAC,CAAQ,EAAE,CACjD,EACF,GAAIF,EAAO,OAAO,EAChB,OAAOX,EAAqB,CAC1B,MAAO,IAAID,EAAuB,oCAAoC,CACxE,CAAC,EAEH,KAAM,CAAE,aAAAa,EAAc,QAAAC,CAAQ,EAAIF,EAAO,aAAa,EAGhDG,EAAmBF,EAAa,OAAO,CAACG,EAAMP,EAAKQ,IAAU,CACjE,GAAIR,IAAQ,KAEV,MAAO,CAAC,GAAGO,EAAMP,CAAG,EAItB,MAAMS,EAAeV,EAAcS,CAAK,EAClCE,EAAaL,EAAQ,KACxBM,GAAMA,EAAE,cAAgBF,EAAa,IACxC,EACA,OAAOC,EAAa,CAAC,GAAGH,EAAMG,CAAU,EAAIH,CAC9C,EAAG,CAAC,CAAkB,EAIhBK,EADeR,EAAa,OAAQJ,GAAQA,IAAQ,IAAI,EACzB,OAAO,CAACO,EAAMP,IAAQ,CACzD,MAAMU,EAAaL,EAAQ,KAAMM,GAAMA,EAAE,cAAgBX,EAAI,WAAW,EACxE,OAAIU,GAAcpB,EAAGoB,EAAW,QAASV,EAAI,OAAO,EAC3C,CAAC,GAAGO,EAAMG,CAAU,EAEtBH,CACT,EAAG,CAAC,CAAkB,EAGtB,IAAIM,EAAiD,CAAC,EACtD,QAASC,EAAI,GAAKA,IAAK,CACrB,MAAMC,EAAW,MAAM,KAAK,IAAI,YAC9B,IAAIrB,EAAwB,CAAE,WAAYoB,IAAM,CAAE,CAAC,CACrD,EACA,GAAI,CAACrB,EAAuBsB,CAAQ,GAAKA,EAAS,OAAS,OACzD,MAEFF,EAAqB,CAAC,GAAGA,EAAoBE,EAAS,IAAI,CAC5D,CAGA,MAAMC,EAAY,MAAMf,EAAQ,oBAC9B,KAAK,KAAK,cACV,KAAK,KAAK,QACZ,EACA,OAAIe,EAAU,QAAQ,EAEbxB,EAAqB,CAC1B,KAAM,CACJ,aAAcc,EACd,oBAAqBM,EACrB,mBAAAC,EACA,QAAS,CACP,aAAcR,EACd,iBAAkBW,EAAU,QAAQ,CACtC,CACF,CACF,CAAC,EAEMxB,EAAqB,CAC1B,MAAO,IAAID,EAAuB,kCAAkC,CACtE,CAAC,CAEL,CAEQ,cAAcS,EAA4B,CAGhD,OAAOA,EAAI,WAAaL,CAC1B,CACF",
6
+ "names": ["gt", "InvalidStatusWordError", "CommandResultFactory", "isSuccessCommandResult", "ListLanguagePackCommand", "ZERO_HASH", "GetApplicationsMetadataTask", "api", "args", "installedApps", "app", "manager", "appHashes", "result", "applications", "catalog", "appsWithMetadata", "apps", "index", "installedApp", "catalogApp", "c", "filteredCatalog", "installedLanguages", "i", "language", "languages"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{EitherAsync as s}from"purify-ts";import{InvalidStatusWordError as u}from"../../command/Errors";import{CommandResultFactory as n}from"../../command/model/CommandResult";import{BTC_APP_METADATA as g,ETH_APP_METADATA as d}from"../../device-action/__test-utils__/data";import{makeDeviceActionInternalApiMock as y}from"../../device-action/__test-utils__/makeInternalApi";import{GetApplicationsMetadataTask as r}from"./GetApplicationsMetadataTask";describe("GetApplicationsMetadataTask",()=>{const e=y(),m={id:7},h={id:361,version:"1.6.0",perso:"perso_11"},A={mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:"metadata"},w=[{name:"Ethereum",hash:"hash2",hashCode:"hashCode"},{name:"Language",hash:"hash3",hashCode:"0000000000000000000000000000000000000000000000000000000000000000"}],l=[d],c=[g,d],p=["fr","eng","it"],o={deviceVersion:m,firmware:h,firmwareVersion:A,installedApps:w},t={getAppsByHash:vi.fn(),getAppList:vi.fn(),getLanguagePackages:vi.fn()};beforeEach(()=>{vi.clearAllMocks(),e.sendCommand.mockResolvedValue(n({data:void 0})),e.getManagerApiService.mockReturnValue(t),t.getAppsByHash.mockReturnValue(s(async()=>l)),t.getAppList.mockReturnValue(s(async()=>c)),t.getLanguagePackages.mockReturnValue(s(async()=>p))}),it("Success without updates",async()=>{const a=await new r(e,o).run();expect(a).toStrictEqual(n({data:{applications:l,applicationsUpdates:[],installedLanguages:[],catalog:{applications:c,languagePackages:p}}}))}),it("Success without languages",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{id:1,size:15}})).mockResolvedValueOnce(n({data:{id:2,size:17}}));const a=await new r(e,o).run();expect(a).toStrictEqual(n({data:{applications:l,applicationsUpdates:[],installedLanguages:[{id:1,size:15},{id:2,size:17}],catalog:{applications:c,languagePackages:p}}}))}),it("Success with an available update",async()=>{const a={...g,version:"1.0.0"};t.getAppsByHash.mockReturnValue(s(async()=>[a]));const i=await new r(e,o).run();expect(i).toStrictEqual(n({data:{applications:[a],applicationsUpdates:[g],installedLanguages:[],catalog:{applications:c,languagePackages:p}}})),expect(t.getAppsByHash).toHaveBeenCalledWith(["hash2"])}),it("Success with app hash not found",async()=>{t.getAppsByHash.mockReturnValue(s(async()=>[null]));const a=await new r(e,o).run();expect(a).toStrictEqual(n({data:{applications:l,applicationsUpdates:[],installedLanguages:[],catalog:{applications:c,languagePackages:p}}}))}),it("should fail when apps hash cannot by retrieved",async()=>{t.getAppsByHash.mockReturnValueOnce(s(async({throwE:i})=>{i(new Error("error"))}));const a=await new r(e,o).run();expect(a).toStrictEqual(n({error:new u("Cannot get the application catalog")}))}),it("should fail when apps list cannot by retrieved",async()=>{t.getAppList.mockReturnValueOnce(s(async({throwE:i})=>{i(new Error("error"))}));const a=await new r(e,o).run();expect(a).toStrictEqual(n({error:new u("Cannot get the application catalog")}))}),it("should fail when languages cannot by retrieved",async()=>{t.getLanguagePackages.mockReturnValueOnce(s(async({throwE:i})=>{i(new Error("error"))}));const a=await new r(e,o).run();expect(a).toStrictEqual(n({error:new u("Cannot get the languages catalog")}))})});
2
+ //# sourceMappingURL=GetApplicationsMetadataTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/GetApplicationsMetadataTask.test.ts"],
4
+ "sourcesContent": ["import { EitherAsync } from \"purify-ts\";\n\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport {\n BTC_APP_METADATA,\n ETH_APP_METADATA,\n} from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { type FirmwareVersion } from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\nimport { type LanguagePackage } from \"@internal/manager-api/model/Language\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\n\nimport { GetApplicationsMetadataTask } from \"./GetApplicationsMetadataTask\";\n\ndescribe(\"GetApplicationsMetadataTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n const DEVICE_VERSION = {\n id: 7,\n } as DeviceVersion;\n\n const FIRMWARE = {\n id: 361,\n version: \"1.6.0\",\n perso: \"perso_11\",\n } as FinalFirmware;\n\n const FIRMWARE_VERSION = {\n mcu: \"mcu_version\",\n bootloader: \"bl_version\",\n os: \"se_version\",\n metadata: \"metadata\",\n } as unknown as FirmwareVersion;\n\n const INSTALLED_APPS = [\n { name: \"Ethereum\", hash: \"hash2\", hashCode: \"hashCode\" },\n {\n name: \"Language\",\n hash: \"hash3\",\n hashCode:\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n },\n ];\n\n const APPS = [ETH_APP_METADATA];\n\n const CATALOG = [BTC_APP_METADATA, ETH_APP_METADATA];\n\n const LANGUAGES = [\"fr\", \"eng\", \"it\"] as unknown as LanguagePackage[];\n\n const ARGS = {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n installedApps: INSTALLED_APPS,\n };\n\n const MANAGER_MOCK = {\n getAppsByHash: vi.fn(),\n getAppList: vi.fn(),\n getLanguagePackages: vi.fn(),\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n apiMock.getManagerApiService.mockReturnValue(\n MANAGER_MOCK as unknown as ManagerApiService,\n );\n MANAGER_MOCK.getAppsByHash.mockReturnValue(EitherAsync(async () => APPS));\n MANAGER_MOCK.getAppList.mockReturnValue(EitherAsync(async () => CATALOG));\n MANAGER_MOCK.getLanguagePackages.mockReturnValue(\n EitherAsync(async () => LANGUAGES),\n );\n });\n\n it(\"Success without updates\", async () => {\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: [],\n installedLanguages: [],\n catalog: {\n applications: CATALOG,\n languagePackages: LANGUAGES,\n },\n },\n }),\n );\n });\n\n it(\"Success without languages\", async () => {\n // WHEN\n apiMock.sendCommand\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { id: 1, size: 15 } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { id: 2, size: 17 } }),\n );\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: [],\n installedLanguages: [\n { id: 1, size: 15 },\n { id: 2, size: 17 },\n ],\n catalog: {\n applications: CATALOG,\n languagePackages: LANGUAGES,\n },\n },\n }),\n );\n });\n\n it(\"Success with an available update\", async () => {\n // GIVEN\n const app = {\n ...BTC_APP_METADATA,\n version: \"1.0.0\",\n };\n MANAGER_MOCK.getAppsByHash.mockReturnValue(EitherAsync(async () => [app]));\n\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n applications: [app],\n applicationsUpdates: [BTC_APP_METADATA],\n installedLanguages: [],\n catalog: {\n applications: CATALOG,\n languagePackages: LANGUAGES,\n },\n },\n }),\n );\n expect(MANAGER_MOCK.getAppsByHash).toHaveBeenCalledWith([\"hash2\"]);\n });\n\n it(\"Success with app hash not found\", async () => {\n // GIVEN\n MANAGER_MOCK.getAppsByHash.mockReturnValue(EitherAsync(async () => [null]));\n\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: [],\n installedLanguages: [],\n catalog: {\n applications: CATALOG,\n languagePackages: LANGUAGES,\n },\n },\n }),\n );\n });\n\n it(\"should fail when apps hash cannot by retrieved\", async () => {\n // GIVEN\n MANAGER_MOCK.getAppsByHash.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the application catalog\"),\n }),\n );\n });\n\n it(\"should fail when apps list cannot by retrieved\", async () => {\n // GIVEN\n MANAGER_MOCK.getAppList.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the application catalog\"),\n }),\n );\n });\n\n it(\"should fail when languages cannot by retrieved\", async () => {\n // GIVEN\n MANAGER_MOCK.getLanguagePackages.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetApplicationsMetadataTask(apiMock, ARGS).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot get the languages catalog\"),\n }),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["EitherAsync", "InvalidStatusWordError", "CommandResultFactory", "BTC_APP_METADATA", "ETH_APP_METADATA", "makeDeviceActionInternalApiMock", "GetApplicationsMetadataTask", "apiMock", "DEVICE_VERSION", "FIRMWARE", "FIRMWARE_VERSION", "INSTALLED_APPS", "APPS", "CATALOG", "LANGUAGES", "ARGS", "MANAGER_MOCK", "result", "app", "throwE"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{InvalidStatusWordError as C}from"../../command/Errors";import{CommandResultFactory as c,isSuccessCommandResult as u}from"../../command/model/CommandResult";import{GetCustomImageSizeCommand as V}from"../../command/os/GetCustomImageSizeCommand";import{GetOsVersionCommand as F}from"../../command/os/GetOsVersionCommand";class x{constructor(e){this.api=e}async run(){const e=await this.api.sendCommand(new F);if(!u(e))return e;const m={mcu:e.data.mcuSephVersion,bootloader:e.data.mcuBootloaderVersion,os:e.data.seVersion,metadata:e.data},r=this.api.getManagerApiService(),n=await r.getDeviceVersion(e.data).chain(a=>r.getFirmwareVersion(e.data,a).map(i=>({deviceVersion:a,currentFirmware:i})));if(n.isLeft())return c({error:new C("Cannot fetch current firmware metadata")});const{deviceVersion:s,currentFirmware:o}=n.unsafeCoerce(),w=(await r.getLatestFirmwareVersion(o,s).chain(a=>r.getNextFirmwareVersion(a).chain(i=>r.getMcuList().map(t=>t.find(l=>l.name===m.mcu)).map(t=>t===void 0||!i.mcuVersions.includes(t.id)).map(t=>({osuFirmware:a,finalFirmware:i,mcuUpdateRequired:t}))))).caseOf({Right:a=>a,Left:a=>{}}),f={currentFirmware:o,availableUpdate:w};let d={};const p=await this.api.sendCommand(new V);return u(p)&&(d={size:p.data}),c({data:{deviceVersion:s,firmware:o,firmwareVersion:m,firmwareUpdateContext:f,customImage:d}})}}export{x as GetFirmwareMetadataTask};
2
+ //# sourceMappingURL=GetFirmwareMetadataTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/GetFirmwareMetadataTask.ts"],
4
+ "sourcesContent": ["import { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { GetCustomImageSizeCommand } from \"@api/command/os/GetCustomImageSizeCommand\";\nimport { GetOsVersionCommand } from \"@api/command/os/GetOsVersionCommand\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type CustomImage,\n type FirmwareUpdate,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nexport type GetFirmwareMetadataTaskResult = CommandResult<{\n deviceVersion: DeviceVersion;\n firmware: FinalFirmware;\n firmwareVersion: FirmwareVersion;\n firmwareUpdateContext: FirmwareUpdateContext;\n customImage: CustomImage;\n}>;\n\nexport class GetFirmwareMetadataTask {\n constructor(private readonly api: InternalApi) {}\n\n async run(): Promise<GetFirmwareMetadataTaskResult> {\n // Get installed firmware metadata\n const osVersion = await this.api.sendCommand(new GetOsVersionCommand());\n if (!isSuccessCommandResult(osVersion)) {\n return osVersion;\n }\n const firmwareVersion: FirmwareVersion = {\n mcu: osVersion.data.mcuSephVersion,\n bootloader: osVersion.data.mcuBootloaderVersion,\n os: osVersion.data.seVersion,\n metadata: osVersion.data,\n };\n\n // Fetch current firmware metadata from app store\n const manager = this.api.getManagerApiService();\n const result = await manager\n .getDeviceVersion(osVersion.data)\n .chain((deviceVersion) =>\n manager\n .getFirmwareVersion(osVersion.data, deviceVersion)\n .map((currentFirmware) => ({ deviceVersion, currentFirmware })),\n );\n if (result.isLeft()) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Cannot fetch current firmware metadata\",\n ),\n });\n }\n const { deviceVersion, currentFirmware } = result.unsafeCoerce();\n\n // Fetch latest firmware available, if any\n const maybeUpdate = await manager\n .getLatestFirmwareVersion(currentFirmware, deviceVersion)\n .chain((osuFirmware) =>\n manager.getNextFirmwareVersion(osuFirmware).chain((finalFirmware) =>\n manager\n .getMcuList()\n .map((mcus) => mcus.find((mcu) => mcu.name === firmwareVersion.mcu))\n .map(\n (mcu) =>\n mcu === undefined ||\n !finalFirmware.mcuVersions.includes(mcu.id),\n )\n .map((mcuUpdateRequired) => ({\n osuFirmware,\n finalFirmware,\n mcuUpdateRequired,\n })),\n ),\n );\n const availableUpdate: FirmwareUpdate | undefined = maybeUpdate.caseOf({\n Right: (data) => data,\n Left: (_error) => undefined,\n });\n const firmwareUpdateContext = {\n currentFirmware,\n availableUpdate,\n };\n\n // Get custom image metadata\n let customImage: CustomImage = {};\n const imageSize = await this.api.sendCommand(\n new GetCustomImageSizeCommand(),\n );\n if (isSuccessCommandResult(imageSize)) {\n customImage = { size: imageSize.data };\n }\n\n // Return firmware metadata\n return CommandResultFactory({\n data: {\n deviceVersion,\n firmware: currentFirmware,\n firmwareVersion,\n firmwareUpdateContext,\n customImage,\n },\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,0BAAAA,MAA8B,sBACvC,OAEE,wBAAAC,EACA,0BAAAC,MACK,mCACP,OAAS,6BAAAC,MAAiC,4CAC1C,OAAS,uBAAAC,MAA2B,sCAmB7B,MAAMC,CAAwB,CACnC,YAA6BC,EAAkB,CAAlB,SAAAA,CAAmB,CAEhD,MAAM,KAA8C,CAElD,MAAMC,EAAY,MAAM,KAAK,IAAI,YAAY,IAAIH,CAAqB,EACtE,GAAI,CAACF,EAAuBK,CAAS,EACnC,OAAOA,EAET,MAAMC,EAAmC,CACvC,IAAKD,EAAU,KAAK,eACpB,WAAYA,EAAU,KAAK,qBAC3B,GAAIA,EAAU,KAAK,UACnB,SAAUA,EAAU,IACtB,EAGME,EAAU,KAAK,IAAI,qBAAqB,EACxCC,EAAS,MAAMD,EAClB,iBAAiBF,EAAU,IAAI,EAC/B,MAAOI,GACNF,EACG,mBAAmBF,EAAU,KAAMI,CAAa,EAChD,IAAKC,IAAqB,CAAE,cAAAD,EAAe,gBAAAC,CAAgB,EAAE,CAClE,EACF,GAAIF,EAAO,OAAO,EAChB,OAAOT,EAAqB,CAC1B,MAAO,IAAID,EACT,wCACF,CACF,CAAC,EAEH,KAAM,CAAE,cAAAW,EAAe,gBAAAC,CAAgB,EAAIF,EAAO,aAAa,EAsBzDG,GAnBc,MAAMJ,EACvB,yBAAyBG,EAAiBD,CAAa,EACvD,MAAOG,GACNL,EAAQ,uBAAuBK,CAAW,EAAE,MAAOC,GACjDN,EACG,WAAW,EACX,IAAKO,GAASA,EAAK,KAAMC,GAAQA,EAAI,OAAST,EAAgB,GAAG,CAAC,EAClE,IACES,GACCA,IAAQ,QACR,CAACF,EAAc,YAAY,SAASE,EAAI,EAAE,CAC9C,EACC,IAAKC,IAAuB,CAC3B,YAAAJ,EACA,cAAAC,EACA,kBAAAG,CACF,EAAE,CACN,CACF,GAC8D,OAAO,CACrE,MAAQC,GAASA,EACjB,KAAOC,GAAQ,EACjB,CAAC,EACKC,EAAwB,CAC5B,gBAAAT,EACA,gBAAAC,CACF,EAGA,IAAIS,EAA2B,CAAC,EAChC,MAAMC,EAAY,MAAM,KAAK,IAAI,YAC/B,IAAIpB,CACN,EACA,OAAID,EAAuBqB,CAAS,IAClCD,EAAc,CAAE,KAAMC,EAAU,IAAK,GAIhCtB,EAAqB,CAC1B,KAAM,CACJ,cAAAU,EACA,SAAUC,EACV,gBAAAJ,EACA,sBAAAa,EACA,YAAAC,CACF,CACF,CAAC,CACH,CACF",
6
+ "names": ["InvalidStatusWordError", "CommandResultFactory", "isSuccessCommandResult", "GetCustomImageSizeCommand", "GetOsVersionCommand", "GetFirmwareMetadataTask", "api", "osVersion", "firmwareVersion", "manager", "result", "deviceVersion", "currentFirmware", "availableUpdate", "osuFirmware", "finalFirmware", "mcus", "mcu", "mcuUpdateRequired", "data", "_error", "firmwareUpdateContext", "customImage", "imageSize"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{EitherAsync as n}from"purify-ts";import{InvalidStatusWordError as m}from"../../command/Errors";import{CommandResultFactory as e}from"../../command/model/CommandResult";import{makeDeviceActionInternalApiMock as V}from"../../device-action/__test-utils__/makeInternalApi";import{GetFirmwareMetadataTask as u}from"./GetFirmwareMetadataTask";describe("GetFirmwareMetadataTask",()=>{const a=V(),o={mcuSephVersion:"mcu_version",mcuBootloaderVersion:"bl_version",seVersion:"se_version"},w=97,c={id:7},i={id:361,version:"1.6.0",perso:"perso_11"},l={id:362,perso:"perso_11"},d={id:363,version:"1.7.0",perso:"perso_11",mcuVersions:[1]},v=[{id:3,name:"other_version"},{id:1,name:"mcu_version"}],r={getDeviceVersion:vi.fn(),getFirmwareVersion:vi.fn(),getLatestFirmwareVersion:vi.fn(),getNextFirmwareVersion:vi.fn(),getMcuList:vi.fn()};beforeEach(()=>{vi.clearAllMocks(),a.getManagerApiService.mockReturnValue(r),r.getDeviceVersion.mockReturnValue(n(async()=>c)),r.getFirmwareVersion.mockReturnValue(n(async()=>i)),r.getLatestFirmwareVersion.mockReturnValue(n(async()=>l)),r.getNextFirmwareVersion.mockReturnValue(n(async()=>d)),r.getMcuList.mockReturnValue(n(async()=>v))}),it("success with no firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({data:w})),r.getLatestFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:void 0},customImage:{size:w}}}))}),it("success with a firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new m("error")}));const t=await new u(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:l,finalFirmware:d,mcuUpdateRequired:!1}},customImage:{}}})),expect(r.getDeviceVersion).toHaveBeenCalledWith(o),expect(r.getFirmwareVersion).toHaveBeenCalledWith(o,c),expect(r.getLatestFirmwareVersion).toHaveBeenCalledWith(i,c),expect(r.getNextFirmwareVersion).toHaveBeenCalledWith(l)}),it("success with a firmware update available and MCU update",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new m("error")}));const t={...d,mcuVersions:[3]};r.getNextFirmwareVersion.mockReturnValue(n(async()=>t));const s=await new u(a).run();expect(s).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:l,finalFirmware:t,mcuUpdateRequired:!0}},customImage:{}}}))}),it("should fail when OS version cannot be retrieved",async()=>{a.sendCommand.mockResolvedValueOnce(e({error:new m("error")}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("error")}))}),it("should fail if device version cannot be fetched",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getDeviceVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("Cannot fetch current firmware metadata")}))}),it("should fail if firmware version cannot be fetched",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("Cannot fetch current firmware metadata")}))})});
2
+ //# sourceMappingURL=GetFirmwareMetadataTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/GetFirmwareMetadataTask.test.ts"],
4
+ "sourcesContent": ["import { EitherAsync } from \"purify-ts\";\n\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { type GetOsVersionResponse } from \"@api/command/os/GetOsVersionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FinalFirmware,\n type McuFirmware,\n type OsuFirmware,\n} from \"@internal/manager-api/model/Firmware\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\n\nimport { GetFirmwareMetadataTask } from \"./GetFirmwareMetadataTask\";\n\ndescribe(\"GetFirmwareMetadataTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const OS_VERSION = {\n mcuSephVersion: \"mcu_version\",\n mcuBootloaderVersion: \"bl_version\",\n seVersion: \"se_version\",\n } as GetOsVersionResponse;\n\n const CUSTOM_IMAGE_SIZE = 97;\n\n const DEVICE_VERSION = {\n id: 7,\n };\n\n const FIRMWARE_VERSION = {\n id: 361,\n version: \"1.6.0\",\n perso: \"perso_11\",\n } as FinalFirmware;\n\n const OSU_VERSION = {\n id: 362,\n perso: \"perso_11\",\n } as OsuFirmware;\n\n const NEXT_FIRMWARE_VERSION = {\n id: 363,\n version: \"1.7.0\",\n perso: \"perso_11\",\n mcuVersions: [1],\n } as FinalFirmware;\n\n const MCUS = [\n {\n id: 3,\n name: \"other_version\",\n },\n {\n id: 1,\n name: \"mcu_version\",\n },\n ] as McuFirmware[];\n\n const MANAGER_MOCK = {\n getDeviceVersion: vi.fn(),\n getFirmwareVersion: vi.fn(),\n getLatestFirmwareVersion: vi.fn(),\n getNextFirmwareVersion: vi.fn(),\n getMcuList: vi.fn(),\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n apiMock.getManagerApiService.mockReturnValue(\n MANAGER_MOCK as unknown as ManagerApiService,\n );\n MANAGER_MOCK.getDeviceVersion.mockReturnValue(\n EitherAsync(async () => DEVICE_VERSION),\n );\n MANAGER_MOCK.getFirmwareVersion.mockReturnValue(\n EitherAsync(async () => FIRMWARE_VERSION),\n );\n MANAGER_MOCK.getLatestFirmwareVersion.mockReturnValue(\n EitherAsync(async () => OSU_VERSION),\n );\n MANAGER_MOCK.getNextFirmwareVersion.mockReturnValue(\n EitherAsync(async () => NEXT_FIRMWARE_VERSION),\n );\n MANAGER_MOCK.getMcuList.mockReturnValue(EitherAsync(async () => MCUS));\n });\n\n it(\"success with no firmware update available\", async () => {\n // GIVEN\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: OS_VERSION }))\n .mockResolvedValueOnce(CommandResultFactory({ data: CUSTOM_IMAGE_SIZE }));\n MANAGER_MOCK.getLatestFirmwareVersion.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE_VERSION,\n firmwareVersion: {\n mcu: \"mcu_version\",\n bootloader: \"bl_version\",\n os: \"se_version\",\n metadata: OS_VERSION,\n },\n firmwareUpdateContext: {\n currentFirmware: FIRMWARE_VERSION,\n availableUpdate: undefined,\n },\n customImage: { size: CUSTOM_IMAGE_SIZE },\n },\n }),\n );\n });\n\n it(\"success with a firmware update available\", async () => {\n // GIVEN\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: OS_VERSION }))\n .mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE_VERSION,\n firmwareVersion: {\n mcu: \"mcu_version\",\n bootloader: \"bl_version\",\n os: \"se_version\",\n metadata: OS_VERSION,\n },\n firmwareUpdateContext: {\n currentFirmware: FIRMWARE_VERSION,\n availableUpdate: {\n osuFirmware: OSU_VERSION,\n finalFirmware: NEXT_FIRMWARE_VERSION,\n mcuUpdateRequired: false,\n },\n },\n customImage: {},\n },\n }),\n );\n expect(MANAGER_MOCK.getDeviceVersion).toHaveBeenCalledWith(OS_VERSION);\n expect(MANAGER_MOCK.getFirmwareVersion).toHaveBeenCalledWith(\n OS_VERSION,\n DEVICE_VERSION,\n );\n expect(MANAGER_MOCK.getLatestFirmwareVersion).toHaveBeenCalledWith(\n FIRMWARE_VERSION,\n DEVICE_VERSION,\n );\n expect(MANAGER_MOCK.getNextFirmwareVersion).toHaveBeenCalledWith(\n OSU_VERSION,\n );\n });\n\n it(\"success with a firmware update available and MCU update\", async () => {\n // GIVEN\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: OS_VERSION }))\n .mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n const nextFirmware = {\n ...NEXT_FIRMWARE_VERSION,\n mcuVersions: [3],\n };\n MANAGER_MOCK.getNextFirmwareVersion.mockReturnValue(\n EitherAsync(async () => nextFirmware),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE_VERSION,\n firmwareVersion: {\n mcu: \"mcu_version\",\n bootloader: \"bl_version\",\n os: \"se_version\",\n metadata: OS_VERSION,\n },\n firmwareUpdateContext: {\n currentFirmware: FIRMWARE_VERSION,\n availableUpdate: {\n osuFirmware: OSU_VERSION,\n finalFirmware: nextFirmware,\n mcuUpdateRequired: true,\n },\n },\n customImage: {},\n },\n }),\n );\n });\n\n it(\"should fail when OS version cannot be retrieved\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n });\n\n it(\"should fail if device version cannot be fetched\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: OS_VERSION }),\n );\n MANAGER_MOCK.getDeviceVersion.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Cannot fetch current firmware metadata\",\n ),\n }),\n );\n });\n\n it(\"should fail if firmware version cannot be fetched\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: OS_VERSION }),\n );\n MANAGER_MOCK.getFirmwareVersion.mockReturnValueOnce(\n EitherAsync(async ({ throwE }) => {\n throwE(new Error(\"error\"));\n }),\n );\n\n // WHEN\n const result = await new GetFirmwareMetadataTask(apiMock).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Cannot fetch current firmware metadata\",\n ),\n }),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["EitherAsync", "InvalidStatusWordError", "CommandResultFactory", "makeDeviceActionInternalApiMock", "GetFirmwareMetadataTask", "apiMock", "OS_VERSION", "CUSTOM_IMAGE_SIZE", "DEVICE_VERSION", "FIRMWARE_VERSION", "OSU_VERSION", "NEXT_FIRMWARE_VERSION", "MCUS", "MANAGER_MOCK", "throwE", "result", "nextFirmware"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{UnknownDAError as i}from"../../device-action/os/Errors";import{DeviceSessionStateType as m}from"../../device-session/DeviceSessionState";class k{constructor(e,s){this.api=e;this.args=s;const r=e.getDeviceModel();this.blockSize=r.blockSize,this.memoryBlocks=Math.floor(r.memorySize/this.blockSize)}blockSize;memoryBlocks;run(){const e=this.api.getDeviceSessionState();if(e.sessionStateType===m.Connected)return{error:new i("Invalid device state")};if(e.firmwareUpdateContext===void 0||e.customImage===void 0||e.installedLanguages===void 0)return{error:new i("Device metadata not fetched")};const s=this.bytesToBlocks(e.firmwareUpdateContext.currentFirmware.bytes||0),r=this.bytesToBlocks(e.customImage.size||0),n=e.installedApps.reduce((t,o)=>t+this.bytesToBlocks(o.bytes||0),0),a=e.installedLanguages.reduce((t,o)=>t+this.bytesToBlocks(o.size),0),c=s+r+n+a,l=this.memoryBlocks-c;return{outOfMemory:this.args.installPlan.reduce((t,o)=>t+this.bytesToBlocks(o.bytes||0),0)>l}}bytesToBlocks(e){return Math.ceil(e/this.blockSize)}}export{k as PredictOutOfMemoryTask};
2
+ //# sourceMappingURL=PredictOutOfMemoryTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/PredictOutOfMemoryTask.ts"],
4
+ "sourcesContent": ["import type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\n\nexport type PredictOutOfMemoryTaskArgs = {\n installPlan: Application[];\n};\n\nexport type PredictOutOfMemoryTaskResult =\n | {\n outOfMemory: boolean;\n }\n | {\n error: UnknownDAError;\n };\n\nexport class PredictOutOfMemoryTask {\n private readonly blockSize: number;\n private readonly memoryBlocks: number;\n\n constructor(\n private readonly api: InternalApi,\n private readonly args: PredictOutOfMemoryTaskArgs,\n ) {\n const deviceModel = api.getDeviceModel();\n this.blockSize = deviceModel.blockSize;\n this.memoryBlocks = Math.floor(deviceModel.memorySize / this.blockSize);\n }\n\n run(): PredictOutOfMemoryTaskResult {\n // Get device session state.\n const deviceState = this.api.getDeviceSessionState();\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return { error: new UnknownDAError(\"Invalid device state\") };\n }\n\n // Ensure the device metadata were correctly fetched.\n if (\n deviceState.firmwareUpdateContext === undefined ||\n deviceState.customImage === undefined ||\n deviceState.installedLanguages === undefined\n ) {\n return { error: new UnknownDAError(\"Device metadata not fetched\") };\n }\n\n // Compute device memory layout\n const firmwareBlocks = this.bytesToBlocks(\n deviceState.firmwareUpdateContext.currentFirmware.bytes || 0,\n );\n const customImageBlocks = this.bytesToBlocks(\n deviceState.customImage.size || 0,\n );\n const applicationsBlocks = deviceState.installedApps.reduce(\n (size, app) => size + this.bytesToBlocks(app.bytes || 0),\n 0,\n );\n const languagesBlocks = deviceState.installedLanguages.reduce(\n (size, lang) => size + this.bytesToBlocks(lang.size),\n 0,\n );\n const usedBlocks =\n firmwareBlocks + customImageBlocks + applicationsBlocks + languagesBlocks;\n const availableBlocks = this.memoryBlocks - usedBlocks;\n\n // Compute install plan memory consumption\n const installPlanBlocks = this.args.installPlan.reduce(\n (size, app) => size + this.bytesToBlocks(app.bytes || 0),\n 0,\n );\n return { outOfMemory: installPlanBlocks > availableBlocks };\n }\n\n private bytesToBlocks(size: number) {\n return Math.ceil(size / this.blockSize);\n }\n}\n"],
5
+ "mappings": "AACA,OAAS,kBAAAA,MAAsB,+BAC/B,OAAS,0BAAAC,MAA8B,yCAehC,MAAMC,CAAuB,CAIlC,YACmBC,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,EAEjB,MAAMC,EAAcF,EAAI,eAAe,EACvC,KAAK,UAAYE,EAAY,UAC7B,KAAK,aAAe,KAAK,MAAMA,EAAY,WAAa,KAAK,SAAS,CACxE,CAViB,UACA,aAWjB,KAAoC,CAElC,MAAMC,EAAc,KAAK,IAAI,sBAAsB,EACnD,GAAIA,EAAY,mBAAqBL,EAAuB,UAC1D,MAAO,CAAE,MAAO,IAAID,EAAe,sBAAsB,CAAE,EAI7D,GACEM,EAAY,wBAA0B,QACtCA,EAAY,cAAgB,QAC5BA,EAAY,qBAAuB,OAEnC,MAAO,CAAE,MAAO,IAAIN,EAAe,6BAA6B,CAAE,EAIpE,MAAMO,EAAiB,KAAK,cAC1BD,EAAY,sBAAsB,gBAAgB,OAAS,CAC7D,EACME,EAAoB,KAAK,cAC7BF,EAAY,YAAY,MAAQ,CAClC,EACMG,EAAqBH,EAAY,cAAc,OACnD,CAACI,EAAMC,IAAQD,EAAO,KAAK,cAAcC,EAAI,OAAS,CAAC,EACvD,CACF,EACMC,EAAkBN,EAAY,mBAAmB,OACrD,CAACI,EAAMG,IAASH,EAAO,KAAK,cAAcG,EAAK,IAAI,EACnD,CACF,EACMC,EACJP,EAAiBC,EAAoBC,EAAqBG,EACtDG,EAAkB,KAAK,aAAeD,EAO5C,MAAO,CAAE,YAJiB,KAAK,KAAK,YAAY,OAC9C,CAACJ,EAAMC,IAAQD,EAAO,KAAK,cAAcC,EAAI,OAAS,CAAC,EACvD,CACF,EAC0CI,CAAgB,CAC5D,CAEQ,cAAcL,EAAc,CAClC,OAAO,KAAK,KAAKA,EAAO,KAAK,SAAS,CACxC,CACF",
6
+ "names": ["UnknownDAError", "DeviceSessionStateType", "PredictOutOfMemoryTask", "api", "args", "deviceModel", "deviceState", "firmwareBlocks", "customImageBlocks", "applicationsBlocks", "size", "app", "languagesBlocks", "lang", "usedBlocks", "availableBlocks"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceStatus as n}from"../../device/DeviceStatus";import{makeDeviceActionInternalApiMock as o}from"../../device-action/__test-utils__/makeInternalApi";import{UnknownDAError as i}from"../../device-action/os/Errors";import{DeviceSessionStateType as s}from"../../device-session/DeviceSessionState";import{PredictOutOfMemoryTask as a}from"./PredictOutOfMemoryTask";describe("PredictOutOfMemoryTask",()=>{const e=o();beforeEach(()=>{vi.clearAllMocks(),e.getDeviceModel.mockReturnValue({memorySize:1569792,blockSize:32})}),it("Success enough memory",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:n.CONNECTED,firmwareUpdateContext:{currentFirmware:{bytes:397824}},customImage:{size:51893},installedApps:[{bytes:305442},{bytes:514598},{bytes:271583}],installedLanguages:[{id:1,size:20480}]});const t=new a(e,{installPlan:[{bytes:1324},{bytes:6559}]}).run();expect(t).toStrictEqual({outOfMemory:!1})}),it("Success not enough memory",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:n.CONNECTED,firmwareUpdateContext:{currentFirmware:{bytes:397824}},customImage:{size:51893},installedApps:[{bytes:305442},{bytes:514598},{bytes:271583}],installedLanguages:[{id:1,size:20480}]});const t=new a(e,{installPlan:[{bytes:1324},{bytes:6559},{bytes:1}]}).run();expect(t).toStrictEqual({outOfMemory:!0})}),it("Success undefined sizes",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:n.CONNECTED,firmwareUpdateContext:{currentFirmware:{bytes:397824}},customImage:{},installedApps:[{bytes:305442},{bytes:null},{bytes:271583}],installedLanguages:[]});const t=new a(e,{installPlan:[{bytes:1324},{bytes:6559}]}).run();expect(t).toStrictEqual({outOfMemory:!1})}),it("Error when device is in incorrect state",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.Connected,deviceStatus:n.CONNECTED});const t=new a(e,{installPlan:[{bytes:1324}]}).run();expect(t).toStrictEqual({error:new i("Invalid device state")})}),it("Error when device session was not populated",()=>{e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:n.CONNECTED,installedApps:[]});const t=new a(e,{installPlan:[{bytes:1324}]}).run();expect(t).toStrictEqual({error:new i("Device metadata not fetched")})})});
2
+ //# sourceMappingURL=PredictOutOfMemoryTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/PredictOutOfMemoryTask.test.ts"],
4
+ "sourcesContent": ["import { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport type { TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport type { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport type { Application } from \"@internal/manager-api/model/Application\";\nimport type { FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nimport { PredictOutOfMemoryTask } from \"./PredictOutOfMemoryTask\";\n\ndescribe(\"PredictOutOfMemoryTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceModel.mockReturnValue({\n memorySize: 1569792,\n blockSize: 32,\n } as unknown as TransportDeviceModel);\n });\n\n it(\"Success enough memory\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareUpdateContext: {\n currentFirmware: { bytes: 397824 } as FinalFirmware,\n },\n customImage: { size: 51893 },\n installedApps: [\n { bytes: 305442 },\n { bytes: 514598 },\n { bytes: 271583 },\n ] as unknown as Application[],\n installedLanguages: [{ id: 1, size: 20480 }],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new PredictOutOfMemoryTask(apiMock, {\n installPlan: [\n { bytes: 1324 },\n { bytes: 6559 },\n ] as unknown as Application[],\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n outOfMemory: false,\n });\n });\n\n it(\"Success not enough memory\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareUpdateContext: {\n currentFirmware: { bytes: 397824 } as FinalFirmware,\n },\n customImage: { size: 51893 },\n installedApps: [\n { bytes: 305442 },\n { bytes: 514598 },\n { bytes: 271583 },\n ] as unknown as Application[],\n installedLanguages: [{ id: 1, size: 20480 }],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new PredictOutOfMemoryTask(apiMock, {\n installPlan: [\n { bytes: 1324 },\n { bytes: 6559 },\n { bytes: 1 },\n ] as unknown as Application[],\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n outOfMemory: true,\n });\n });\n\n it(\"Success undefined sizes\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareUpdateContext: {\n currentFirmware: { bytes: 397824 } as FinalFirmware,\n },\n customImage: {},\n installedApps: [\n { bytes: 305442 },\n { bytes: null },\n { bytes: 271583 },\n ] as unknown as Application[],\n installedLanguages: [],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new PredictOutOfMemoryTask(apiMock, {\n installPlan: [\n { bytes: 1324 },\n { bytes: 6559 },\n ] as unknown as Application[],\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n outOfMemory: false,\n });\n });\n\n it(\"Error when device is in incorrect state\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n\n // WHEN\n const result = new PredictOutOfMemoryTask(apiMock, {\n installPlan: [{ bytes: 1324 }] as unknown as Application[],\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Invalid device state\"),\n });\n });\n\n it(\"Error when device session was not populated\", () => {\n // GIVEN\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n } as unknown as DeviceSessionState);\n\n // WHEN\n const result = new PredictOutOfMemoryTask(apiMock, {\n installPlan: [{ bytes: 1324 }] as unknown as Application[],\n }).run();\n\n // THEN\n expect(result).toStrictEqual({\n error: new UnknownDAError(\"Device metadata not fetched\"),\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceStatus", "makeDeviceActionInternalApiMock", "UnknownDAError", "DeviceSessionStateType", "PredictOutOfMemoryTask", "apiMock", "result"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{Observable as d,ReplaySubject as S,share as I}from"rxjs";import{createActor as y}from"xstate";import{DeviceActionStatus as a}from"../../device-action/model/DeviceActionState";class D{input;inspect=!1;constructor(t){this.input=t.input,this.inspect=!!t.inspect}_execute(t){const s=this.makeStateMachine(t),n=y(s,{input:this.input}),e=new S,c=r=>{const{context:i,status:p,output:m,error:h}=r;switch(p){case"active":e.next({status:a.Pending,intermediateValue:i.intermediateValue});break;case"done":m.caseOf({Left:o=>{e.next({status:a.Error,error:o})},Right:o=>{e.next({status:a.Completed,output:o})}}),e.complete();break;case"error":e.error(h),e.complete();break;case"stopped":e.next({status:a.Stopped}),e.complete();break;default:this._exhaustiveMatchingGuard(p)}},l=new d(r=>{const i=e.subscribe(r);return()=>{u.unsubscribe(),i.unsubscribe(),n.stop()}}),u=n.subscribe(c);return n.start(),{observable:l.pipe(I()),cancel:()=>{n.stop(),u.unsubscribe(),c(n.getSnapshot())}}}_exhaustiveMatchingGuard(t){throw console.log("_exhaustiveMatchingGuard status",t),new Error(`Unhandled status: ${t}`)}}export{D as XStateDeviceAction};
1
+ import{Observable as h,ReplaySubject as d,share as S}from"rxjs";import{createActor as I}from"xstate";import{DeviceActionStatus as a}from"../../device-action/model/DeviceActionState";class E{input;inspect=!1;constructor(e){this.input=e.input,this.inspect=!!e.inspect}_execute(e){const n=this.makeStateMachine(e);return this._subscribeToStateMachine(n)}_subscribeToStateMachine(e){const n=I(e,{input:this.input}),t=new d,o=r=>{const{context:i,status:p,output:l,error:m}=r;switch(p){case"active":t.next({status:a.Pending,intermediateValue:i.intermediateValue});break;case"done":l.caseOf({Left:c=>{t.next({status:a.Error,error:c})},Right:c=>{t.next({status:a.Completed,output:c})}}),t.complete();break;case"error":t.error(m),t.complete();break;case"stopped":t.next({status:a.Stopped}),t.complete();break;default:this._exhaustiveMatchingGuard(p)}},s=new h(r=>{const i=t.subscribe(r);return()=>{u.unsubscribe(),i.unsubscribe(),n.stop()}}),u=n.subscribe(o);return n.start(),{observable:s.pipe(S()),cancel:()=>{n.stop(),u.unsubscribe(),o(n.getSnapshot())}}}_exhaustiveMatchingGuard(e){throw console.log("_exhaustiveMatchingGuard status",e),new Error(`Unhandled status: ${e}`)}}export{E as XStateDeviceAction};
2
2
  //# sourceMappingURL=XStateDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/xstate-utils/XStateDeviceAction.ts"],
4
- "sourcesContent": ["// import { createBrowserInspector } from \"@statelyai/inspect\";\nimport { Observable, ReplaySubject, share } from \"rxjs\";\nimport {\n createActor,\n type SnapshotFrom,\n type StateMachine,\n type StateSchema,\n} from \"xstate\";\n\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n type InternalApi,\n} from \"@api/device-action/DeviceAction\";\nimport {\n type DeviceActionState,\n DeviceActionStatus,\n} from \"@api/device-action/model/DeviceActionState\";\nimport { type DmkError } from \"@api/Error\";\n\nimport { type StateMachineTypes } from \"./StateMachineTypes\";\n\nexport type DeviceActionStateMachine<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> = StateMachine<\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"context\"], // context\n /**\n * The following usages `any` are OK because this is just a wrapper around the\n * state machine and we are not directly going to use these types.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any, // event\n any, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n any, // tag\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"input\"],\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"output\"],\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any,\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateSchema\n>;\n\n/**\n * A DeviceAction that uses an XState state machine to execute.\n * It maps the state machine snapshots to the DeviceActionState.\n * This class is abstract and should be extended to implement the state machine.\n */\nexport abstract class XStateDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> implements DeviceAction<Output, Input, Error, IntermediateValue>\n{\n readonly input: Input;\n readonly inspect: boolean = false;\n\n /**\n *\n * @param input The input for the DeviceAction\n * @param inspect If true, the state machine will be inspected in the browser\n */\n constructor(args: { input: Input; inspect?: boolean }) {\n this.input = args.input;\n this.inspect = Boolean(args.inspect);\n }\n\n protected abstract makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >;\n\n _execute(\n internalApi: InternalApi,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const stateMachine = this.makeStateMachine(internalApi);\n\n const actor = createActor(stateMachine, {\n input: this.input,\n // optional inspector for debugging\n // inspect: this.inspect ? createBrowserInspector().inspect : undefined,\n });\n\n /**\n * Using a ReplaySubject is important because the first snapshots might be\n * emitted before the observable is subscribed (if the machine goes through\n * those states fully synchronously).\n * This way, we ensure that the subscriber always receives the latest snapshot.\n * */\n const subject = new ReplaySubject<\n DeviceActionState<Output, Error, IntermediateValue>\n >();\n\n const handleActorSnapshot = (\n snapshot: SnapshotFrom<typeof stateMachine>,\n ) => {\n const { context, status, output, error } = snapshot;\n switch (status) {\n case \"active\":\n subject.next({\n status: DeviceActionStatus.Pending,\n intermediateValue: context.intermediateValue,\n });\n break;\n case \"done\":\n output.caseOf({\n Left: (err) => {\n subject.next({\n status: DeviceActionStatus.Error,\n error: err,\n });\n },\n Right: (result) => {\n subject.next({\n status: DeviceActionStatus.Completed,\n output: result,\n });\n },\n });\n subject.complete();\n break;\n case \"error\":\n // this is an error in the execution of the state machine, it should not happen\n subject.error(error);\n subject.complete();\n break;\n case \"stopped\":\n subject.next({\n status: DeviceActionStatus.Stopped,\n });\n subject.complete();\n break;\n default:\n this._exhaustiveMatchingGuard(status);\n }\n };\n\n const observable = new Observable<\n DeviceActionState<Output, Error, IntermediateValue>\n >((subscriber) => {\n const subjectSubscription = subject.subscribe(subscriber);\n return () => {\n actorSubscription.unsubscribe();\n subjectSubscription.unsubscribe();\n actor.stop(); // stop the actor when the observable is unsubscribed\n };\n });\n\n const actorSubscription = actor.subscribe(handleActorSnapshot);\n actor.start();\n\n return {\n observable: observable.pipe(share()), // share to garantee that once there is no more observer, the actor is stopped\n cancel: () => {\n actor.stop();\n actorSubscription.unsubscribe();\n handleActorSnapshot(actor.getSnapshot());\n },\n };\n }\n\n private _exhaustiveMatchingGuard(status: never): never {\n console.log(\"_exhaustiveMatchingGuard status\", status);\n throw new Error(`Unhandled status: ${status}`);\n }\n}\n"],
5
- "mappings": "AACA,OAAS,cAAAA,EAAY,iBAAAC,EAAe,SAAAC,MAAa,OACjD,OACE,eAAAC,MAIK,SAQP,OAEE,sBAAAC,MACK,6CA2DA,MAAeC,CAOtB,CACW,MACA,QAAmB,GAO5B,YAAYC,EAA2C,CACrD,KAAK,MAAQA,EAAK,MAClB,KAAK,QAAU,EAAQA,EAAK,OAC9B,CAYA,SACEC,EACiE,CACjE,MAAMC,EAAe,KAAK,iBAAiBD,CAAW,EAEhDE,EAAQN,EAAYK,EAAc,CACtC,MAAO,KAAK,KAGd,CAAC,EAQKE,EAAU,IAAIT,EAIdU,EACJC,GACG,CACH,KAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,MAAAC,CAAM,EAAIJ,EAC3C,OAAQE,EAAQ,CACd,IAAK,SACHJ,EAAQ,KAAK,CACX,OAAQN,EAAmB,QAC3B,kBAAmBS,EAAQ,iBAC7B,CAAC,EACD,MACF,IAAK,OACHE,EAAO,OAAO,CACZ,KAAOE,GAAQ,CACbP,EAAQ,KAAK,CACX,OAAQN,EAAmB,MAC3B,MAAOa,CACT,CAAC,CACH,EACA,MAAQC,GAAW,CACjBR,EAAQ,KAAK,CACX,OAAQN,EAAmB,UAC3B,OAAQc,CACV,CAAC,CACH,CACF,CAAC,EACDR,EAAQ,SAAS,EACjB,MACF,IAAK,QAEHA,EAAQ,MAAMM,CAAK,EACnBN,EAAQ,SAAS,EACjB,MACF,IAAK,UACHA,EAAQ,KAAK,CACX,OAAQN,EAAmB,OAC7B,CAAC,EACDM,EAAQ,SAAS,EACjB,MACF,QACE,KAAK,yBAAyBI,CAAM,CACxC,CACF,EAEMK,EAAa,IAAInB,EAEpBoB,GAAe,CAChB,MAAMC,EAAsBX,EAAQ,UAAUU,CAAU,EACxD,MAAO,IAAM,CACXE,EAAkB,YAAY,EAC9BD,EAAoB,YAAY,EAChCZ,EAAM,KAAK,CACb,CACF,CAAC,EAEKa,EAAoBb,EAAM,UAAUE,CAAmB,EAC7D,OAAAF,EAAM,MAAM,EAEL,CACL,WAAYU,EAAW,KAAKjB,EAAM,CAAC,EACnC,OAAQ,IAAM,CACZO,EAAM,KAAK,EACXa,EAAkB,YAAY,EAC9BX,EAAoBF,EAAM,YAAY,CAAC,CACzC,CACF,CACF,CAEQ,yBAAyBK,EAAsB,CACrD,cAAQ,IAAI,kCAAmCA,CAAM,EAC/C,IAAI,MAAM,qBAAqBA,CAAM,EAAE,CAC/C,CACF",
4
+ "sourcesContent": ["// import { createBrowserInspector } from \"@statelyai/inspect\";\nimport { Observable, ReplaySubject, share } from \"rxjs\";\nimport {\n createActor,\n type SnapshotFrom,\n type StateMachine,\n type StateSchema,\n} from \"xstate\";\n\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n type InternalApi,\n} from \"@api/device-action/DeviceAction\";\nimport {\n type DeviceActionState,\n DeviceActionStatus,\n} from \"@api/device-action/model/DeviceActionState\";\nimport { type DmkError } from \"@api/Error\";\n\nimport { type StateMachineTypes } from \"./StateMachineTypes\";\n\nexport type DeviceActionStateMachine<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> = StateMachine<\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"context\"], // context\n /**\n * The following usages `any` are OK because this is just a wrapper around the\n * state machine and we are not directly going to use these types.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any, // event\n any, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n any, // tag\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"input\"],\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"output\"],\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any,\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateSchema\n>;\n\n/**\n * A DeviceAction that uses an XState state machine to execute.\n * It maps the state machine snapshots to the DeviceActionState.\n * This class is abstract and should be extended to implement the state machine.\n */\nexport abstract class XStateDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> implements DeviceAction<Output, Input, Error, IntermediateValue>\n{\n readonly input: Input;\n readonly inspect: boolean = false;\n\n /**\n *\n * @param input The input for the DeviceAction\n * @param inspect If true, the state machine will be inspected in the browser\n */\n constructor(args: { input: Input; inspect?: boolean }) {\n this.input = args.input;\n this.inspect = Boolean(args.inspect);\n }\n\n protected abstract makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >;\n\n _execute(\n internalApi: InternalApi,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const stateMachine = this.makeStateMachine(internalApi);\n return this._subscribeToStateMachine(stateMachine);\n }\n\n protected _subscribeToStateMachine(\n stateMachine: DeviceActionStateMachine<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const actor = createActor(stateMachine, {\n input: this.input,\n // optional inspector for debugging\n // inspect: this.inspect ? createBrowserInspector().inspect : undefined,\n });\n\n /**\n * Using a ReplaySubject is important because the first snapshots might be\n * emitted before the observable is subscribed (if the machine goes through\n * those states fully synchronously).\n * This way, we ensure that the subscriber always receives the latest snapshot.\n * */\n const subject = new ReplaySubject<\n DeviceActionState<Output, Error, IntermediateValue>\n >();\n\n const handleActorSnapshot = (\n snapshot: SnapshotFrom<typeof stateMachine>,\n ) => {\n const { context, status, output, error } = snapshot;\n switch (status) {\n case \"active\":\n subject.next({\n status: DeviceActionStatus.Pending,\n intermediateValue: context.intermediateValue,\n });\n break;\n case \"done\":\n output.caseOf({\n Left: (err) => {\n subject.next({\n status: DeviceActionStatus.Error,\n error: err,\n });\n },\n Right: (result) => {\n subject.next({\n status: DeviceActionStatus.Completed,\n output: result,\n });\n },\n });\n subject.complete();\n break;\n case \"error\":\n // this is an error in the execution of the state machine, it should not happen\n subject.error(error);\n subject.complete();\n break;\n case \"stopped\":\n subject.next({\n status: DeviceActionStatus.Stopped,\n });\n subject.complete();\n break;\n default:\n this._exhaustiveMatchingGuard(status);\n }\n };\n\n const observable = new Observable<\n DeviceActionState<Output, Error, IntermediateValue>\n >((subscriber) => {\n const subjectSubscription = subject.subscribe(subscriber);\n return () => {\n actorSubscription.unsubscribe();\n subjectSubscription.unsubscribe();\n actor.stop(); // stop the actor when the observable is unsubscribed\n };\n });\n\n const actorSubscription = actor.subscribe(handleActorSnapshot);\n actor.start();\n\n return {\n observable: observable.pipe(share()), // share to garantee that once there is no more observer, the actor is stopped\n cancel: () => {\n actor.stop();\n actorSubscription.unsubscribe();\n handleActorSnapshot(actor.getSnapshot());\n },\n };\n }\n\n private _exhaustiveMatchingGuard(status: never): never {\n console.log(\"_exhaustiveMatchingGuard status\", status);\n throw new Error(`Unhandled status: ${status}`);\n }\n}\n"],
5
+ "mappings": "AACA,OAAS,cAAAA,EAAY,iBAAAC,EAAe,SAAAC,MAAa,OACjD,OACE,eAAAC,MAIK,SAQP,OAEE,sBAAAC,MACK,6CA2DA,MAAeC,CAOtB,CACW,MACA,QAAmB,GAO5B,YAAYC,EAA2C,CACrD,KAAK,MAAQA,EAAK,MAClB,KAAK,QAAU,EAAQA,EAAK,OAC9B,CAYA,SACEC,EACiE,CACjE,MAAMC,EAAe,KAAK,iBAAiBD,CAAW,EACtD,OAAO,KAAK,yBAAyBC,CAAY,CACnD,CAEU,yBACRA,EAOiE,CACjE,MAAMC,EAAQN,EAAYK,EAAc,CACtC,MAAO,KAAK,KAGd,CAAC,EAQKE,EAAU,IAAIT,EAIdU,EACJC,GACG,CACH,KAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,MAAAC,CAAM,EAAIJ,EAC3C,OAAQE,EAAQ,CACd,IAAK,SACHJ,EAAQ,KAAK,CACX,OAAQN,EAAmB,QAC3B,kBAAmBS,EAAQ,iBAC7B,CAAC,EACD,MACF,IAAK,OACHE,EAAO,OAAO,CACZ,KAAOE,GAAQ,CACbP,EAAQ,KAAK,CACX,OAAQN,EAAmB,MAC3B,MAAOa,CACT,CAAC,CACH,EACA,MAAQC,GAAW,CACjBR,EAAQ,KAAK,CACX,OAAQN,EAAmB,UAC3B,OAAQc,CACV,CAAC,CACH,CACF,CAAC,EACDR,EAAQ,SAAS,EACjB,MACF,IAAK,QAEHA,EAAQ,MAAMM,CAAK,EACnBN,EAAQ,SAAS,EACjB,MACF,IAAK,UACHA,EAAQ,KAAK,CACX,OAAQN,EAAmB,OAC7B,CAAC,EACDM,EAAQ,SAAS,EACjB,MACF,QACE,KAAK,yBAAyBI,CAAM,CACxC,CACF,EAEMK,EAAa,IAAInB,EAEpBoB,GAAe,CAChB,MAAMC,EAAsBX,EAAQ,UAAUU,CAAU,EACxD,MAAO,IAAM,CACXE,EAAkB,YAAY,EAC9BD,EAAoB,YAAY,EAChCZ,EAAM,KAAK,CACb,CACF,CAAC,EAEKa,EAAoBb,EAAM,UAAUE,CAAmB,EAC7D,OAAAF,EAAM,MAAM,EAEL,CACL,WAAYU,EAAW,KAAKjB,EAAM,CAAC,EACnC,OAAQ,IAAM,CACZO,EAAM,KAAK,EACXa,EAAkB,YAAY,EAC9BX,EAAoBF,EAAM,YAAY,CAAC,CACzC,CACF,CACF,CAEQ,yBAAyBK,EAAsB,CACrD,cAAQ,IAAI,kCAAmCA,CAAM,EAC/C,IAAI,MAAM,qBAAqBA,CAAM,EAAE,CAC/C,CACF",
6
6
  "names": ["Observable", "ReplaySubject", "share", "createActor", "DeviceActionStatus", "XStateDeviceAction", "args", "internalApi", "stateMachine", "actor", "subject", "handleActorSnapshot", "snapshot", "context", "status", "output", "error", "err", "result", "observable", "subscriber", "subjectSubscription", "actorSubscription"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var n=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var f=(u,e,d)=>e in u?n(u,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):u[e]=d;var m=(u,e,d,s)=>{for(var r=s>1?void 0:s?b(e,d):e,t=u.length-1,l;t>=0;t--)(l=u[t])&&(r=(s?l(e,d,r):l(r))||r);return s&&r&&n(e,d,r),r};var v=(u,e,d)=>f(u,typeof e!="symbol"?e+"":e,d);import{injectable as p}from"inversify";import{DeviceModelId as o}from"../../device/DeviceModel";import{BleDeviceInfos as I}from"../../device-model/model/BleDeviceInfos";import{TransportDeviceModel as c}from"../../device-model/model/DeviceModel";let i=class{getAllDeviceModels(){return Object.values(i.deviceModelByIds)}getDeviceModel(e){return i.deviceModelByIds[e.id]}filterDeviceModels(e){return this.getAllDeviceModels().filter(d=>Object.entries(e).every(([s,r])=>d[s]===r))}getBluetoothServicesInfos(){return Object.values(i.deviceModelByIds).reduce((e,d)=>{const{bluetoothSpec:s}=d;return s?{...e,...s.reduce((r,t)=>({...r,[t.serviceUuid]:new I(d,t.serviceUuid,t.writeUuid,t.writeCmdUuid,t.notifyUuid)}),{})}:e},{})}getBluetoothServices(){return Object.values(i.deviceModelByIds).map(e=>(e.bluetoothSpec||[]).map(d=>d.serviceUuid)).flat().filter(e=>!!e)}};v(i,"deviceModelByIds",{[o.NANO_S]:new c({id:o.NANO_S,productName:"Ledger Nano S",usbProductId:16,bootloaderUsbProductId:1,usbOnly:!0,memorySize:320*1024,masks:[823132160]}),[o.NANO_SP]:new c({id:o.NANO_SP,productName:"Ledger Nano S Plus",usbProductId:80,bootloaderUsbProductId:5,usbOnly:!0,memorySize:1533*1024,masks:[856686592]}),[o.NANO_X]:new c({id:o.NANO_X,productName:"Ledger Nano X",usbProductId:64,bootloaderUsbProductId:4,usbOnly:!1,memorySize:2*1024*1024,masks:[855638016],bluetoothSpec:[{serviceUuid:"13d63400-2c97-0004-0000-4c6564676572",notifyUuid:"13d63400-2c97-0004-0001-4c6564676572",writeUuid:"13d63400-2c97-0004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-0004-0003-4c6564676572"}]}),[o.STAX]:new c({id:o.STAX,productName:"Ledger Stax",usbProductId:96,bootloaderUsbProductId:6,usbOnly:!1,memorySize:1533*1024,masks:[857735168],bluetoothSpec:[{serviceUuid:"13d63400-2c97-6004-0000-4c6564676572",notifyUuid:"13d63400-2c97-6004-0001-4c6564676572",writeUuid:"13d63400-2c97-6004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-6004-0003-4c6564676572"}]}),[o.FLEX]:new c({id:o.FLEX,productName:"Ledger Flex",usbProductId:112,bootloaderUsbProductId:7,usbOnly:!1,memorySize:1533*1024,masks:[858783744],bluetoothSpec:[{serviceUuid:"13d63400-2c97-3004-0000-4c6564676572",notifyUuid:"13d63400-2c97-3004-0001-4c6564676572",writeUuid:"13d63400-2c97-3004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-3004-0003-4c6564676572"}]})}),i=m([p()],i);export{i as StaticDeviceModelDataSource};
1
+ var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var U=(c,e,d)=>e in c?n(c,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):c[e]=d;var m=(c,e,d,t)=>{for(var o=t>1?void 0:t?v(e,d):e,s=c.length-1,l;s>=0;s--)(l=c[s])&&(o=(t?l(e,d,o):l(o))||o);return t&&o&&n(e,d,o),o};var b=(c,e,d)=>U(c,typeof e!="symbol"?e+"":e,d);import{injectable as p}from"inversify";import{DeviceModelId as r}from"../../device/DeviceModel";import{BleDeviceInfos as f}from"../../device-model/model/BleDeviceInfos";import{TransportDeviceModel as u}from"../../device-model/model/DeviceModel";let i=class{getAllDeviceModels(){return Object.values(i.deviceModelByIds)}getDeviceModel(e){return i.deviceModelByIds[e.id]}filterDeviceModels(e){return this.getAllDeviceModels().filter(d=>Object.entries(e).every(([t,o])=>d[t]===o))}getBluetoothServicesInfos(){return Object.values(i.deviceModelByIds).reduce((e,d)=>{const{bluetoothSpec:t}=d;return t?{...e,...t.reduce((o,s)=>({...o,[s.serviceUuid]:new f(d,s.serviceUuid,s.writeUuid,s.writeCmdUuid,s.notifyUuid)}),{})}:e},{})}getBluetoothServices(){return Object.values(i.deviceModelByIds).map(e=>(e.bluetoothSpec||[]).map(d=>d.serviceUuid)).flat().filter(e=>!!e)}};b(i,"deviceModelByIds",{[r.NANO_S]:new u({id:r.NANO_S,productName:"Ledger Nano S",usbProductId:16,bootloaderUsbProductId:1,usbOnly:!0,memorySize:320*1024,blockSize:4*1024,masks:[823132160]}),[r.NANO_SP]:new u({id:r.NANO_SP,productName:"Ledger Nano S Plus",usbProductId:80,bootloaderUsbProductId:5,usbOnly:!0,memorySize:1533*1024,blockSize:32,masks:[856686592]}),[r.NANO_X]:new u({id:r.NANO_X,productName:"Ledger Nano X",usbProductId:64,bootloaderUsbProductId:4,usbOnly:!1,memorySize:2*1024*1024,blockSize:4*1024,masks:[855638016],bluetoothSpec:[{serviceUuid:"13d63400-2c97-0004-0000-4c6564676572",notifyUuid:"13d63400-2c97-0004-0001-4c6564676572",writeUuid:"13d63400-2c97-0004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-0004-0003-4c6564676572"}]}),[r.STAX]:new u({id:r.STAX,productName:"Ledger Stax",usbProductId:96,bootloaderUsbProductId:6,usbOnly:!1,memorySize:1533*1024,blockSize:32,masks:[857735168],bluetoothSpec:[{serviceUuid:"13d63400-2c97-6004-0000-4c6564676572",notifyUuid:"13d63400-2c97-6004-0001-4c6564676572",writeUuid:"13d63400-2c97-6004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-6004-0003-4c6564676572"}]}),[r.FLEX]:new u({id:r.FLEX,productName:"Ledger Flex",usbProductId:112,bootloaderUsbProductId:7,usbOnly:!1,memorySize:1533*1024,blockSize:32,masks:[858783744],bluetoothSpec:[{serviceUuid:"13d63400-2c97-3004-0000-4c6564676572",notifyUuid:"13d63400-2c97-3004-0001-4c6564676572",writeUuid:"13d63400-2c97-3004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-3004-0003-4c6564676572"}]}),[r.APEX]:new u({id:r.APEX,productName:"Ledger Apex",usbProductId:128,bootloaderUsbProductId:8,usbOnly:!1,memorySize:1533*1024,blockSize:32,masks:[859832320],bluetoothSpec:[{serviceUuid:"13d63400-2c97-8004-0000-4c6564676572",notifyUuid:"13d63400-2c97-8004-0001-4c6564676572",writeUuid:"13d63400-2c97-8004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-8004-0003-4c6564676572"}]})}),i=m([p()],i);export{i as StaticDeviceModelDataSource};
2
2
  //# sourceMappingURL=StaticDeviceModelDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-model/data/StaticDeviceModelDataSource.ts"],
4
- "sourcesContent": ["import { injectable } from \"inversify\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nimport { BleDeviceInfos } from \"@api/device-model/model/BleDeviceInfos\";\nimport { TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\n\n/**\n * Static/in memory implementation of the device model data source\n */\n@injectable()\nexport class StaticDeviceModelDataSource implements DeviceModelDataSource {\n private static deviceModelByIds: {\n [key in DeviceModelId]: TransportDeviceModel;\n } = {\n [DeviceModelId.NANO_S]: new TransportDeviceModel({\n id: DeviceModelId.NANO_S,\n productName: \"Ledger Nano S\",\n usbProductId: 0x10,\n bootloaderUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n }),\n [DeviceModelId.NANO_SP]: new TransportDeviceModel({\n id: DeviceModelId.NANO_SP,\n productName: \"Ledger Nano S Plus\",\n usbProductId: 0x50,\n bootloaderUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1533 * 1024,\n masks: [0x33100000],\n }),\n [DeviceModelId.NANO_X]: new TransportDeviceModel({\n id: DeviceModelId.NANO_X,\n productName: \"Ledger Nano X\",\n usbProductId: 0x40,\n bootloaderUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n masks: [0x33000000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-0004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.STAX]: new TransportDeviceModel({\n id: DeviceModelId.STAX,\n productName: \"Ledger Stax\",\n usbProductId: 0x60,\n bootloaderUsbProductId: 0x0006,\n usbOnly: false,\n memorySize: 1533 * 1024,\n masks: [0x33200000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-6004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-6004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-6004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-6004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.FLEX]: new TransportDeviceModel({\n id: DeviceModelId.FLEX,\n productName: \"Ledger Flex\",\n usbProductId: 0x70,\n bootloaderUsbProductId: 0x0007,\n usbOnly: false,\n memorySize: 1533 * 1024,\n masks: [0x33300000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-3004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-3004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-3004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-3004-0003-4c6564676572\",\n },\n ],\n }),\n };\n\n getAllDeviceModels(): TransportDeviceModel[] {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds);\n }\n\n getDeviceModel(params: { id: DeviceModelId }): TransportDeviceModel {\n return StaticDeviceModelDataSource.deviceModelByIds[params.id];\n }\n\n /**\n * Returns the list of device models that match all the given parameters\n */\n filterDeviceModels(\n params: Partial<TransportDeviceModel>,\n ): TransportDeviceModel[] {\n return this.getAllDeviceModels().filter((deviceModel) => {\n return Object.entries(params).every(([key, value]) => {\n return deviceModel[key as keyof TransportDeviceModel] === value;\n });\n });\n }\n\n getBluetoothServicesInfos(): Record<string, BleDeviceInfos> {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds).reduce<\n Record<string, BleDeviceInfos>\n >((acc, deviceModel) => {\n const { bluetoothSpec } = deviceModel;\n if (bluetoothSpec) {\n return {\n ...acc,\n ...bluetoothSpec.reduce<Record<string, BleDeviceInfos>>(\n (serviceToModel, bleSpec) => ({\n ...serviceToModel,\n [bleSpec.serviceUuid]: new BleDeviceInfos(\n deviceModel,\n bleSpec.serviceUuid,\n bleSpec.writeUuid,\n bleSpec.writeCmdUuid,\n bleSpec.notifyUuid,\n ),\n }),\n {},\n ),\n };\n }\n return acc;\n }, {});\n }\n\n getBluetoothServices(): string[] {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds)\n .map((deviceModel) =>\n (deviceModel.bluetoothSpec || []).map((spec) => spec.serviceUuid),\n )\n .flat()\n .filter((uuid) => !!uuid);\n }\n}\n"],
5
- "mappings": "gVAAA,OAAS,cAAAA,MAAkB,YAE3B,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,wBAAAC,MAA4B,sCAM9B,IAAMC,EAAN,KAAmE,CA2ExE,oBAA6C,CAC3C,OAAO,OAAO,OAAOA,EAA4B,gBAAgB,CACnE,CAEA,eAAeC,EAAqD,CAClE,OAAOD,EAA4B,iBAAiBC,EAAO,EAAE,CAC/D,CAKA,mBACEA,EACwB,CACxB,OAAO,KAAK,mBAAmB,EAAE,OAAQC,GAChC,OAAO,QAAQD,CAAM,EAAE,MAAM,CAAC,CAACE,EAAKC,CAAK,IACvCF,EAAYC,CAAiC,IAAMC,CAC3D,CACF,CACH,CAEA,2BAA4D,CAC1D,OAAO,OAAO,OAAOJ,EAA4B,gBAAgB,EAAE,OAEjE,CAACK,EAAKH,IAAgB,CACtB,KAAM,CAAE,cAAAI,CAAc,EAAIJ,EAC1B,OAAII,EACK,CACL,GAAGD,EACH,GAAGC,EAAc,OACf,CAACC,EAAgBC,KAAa,CAC5B,GAAGD,EACH,CAACC,EAAQ,WAAW,EAAG,IAAIC,EACzBP,EACAM,EAAQ,YACRA,EAAQ,UACRA,EAAQ,aACRA,EAAQ,UACV,CACF,GACA,CAAC,CACH,CACF,EAEKH,CACT,EAAG,CAAC,CAAC,CACP,CAEA,sBAAiC,CAC/B,OAAO,OAAO,OAAOL,EAA4B,gBAAgB,EAC9D,IAAKE,IACHA,EAAY,eAAiB,CAAC,GAAG,IAAKQ,GAASA,EAAK,WAAW,CAClE,EACC,KAAK,EACL,OAAQC,GAAS,CAAC,CAACA,CAAI,CAC5B,CACF,EAlIEC,EADWZ,EACI,mBAEX,CACF,CAACa,EAAc,MAAM,EAAG,IAAIC,EAAqB,CAC/C,GAAID,EAAc,OAClB,YAAa,gBACb,aAAc,GACd,uBAAwB,EACxB,QAAS,GACT,WAAY,IAAM,KAClB,MAAO,CAAC,SAAU,CACpB,CAAC,EACD,CAACA,EAAc,OAAO,EAAG,IAAIC,EAAqB,CAChD,GAAID,EAAc,QAClB,YAAa,qBACb,aAAc,GACd,uBAAwB,EACxB,QAAS,GACT,WAAY,KAAO,KACnB,MAAO,CAAC,SAAU,CACpB,CAAC,EACD,CAACA,EAAc,MAAM,EAAG,IAAIC,EAAqB,CAC/C,GAAID,EAAc,OAClB,YAAa,gBACb,aAAc,GACd,uBAAwB,EACxB,QAAS,GACT,WAAY,EAAI,KAAO,KACvB,MAAO,CAAC,SAAU,EAClB,cAAe,CACb,CACE,YAAa,uCACb,WAAY,uCACZ,UAAW,uCACX,aAAc,sCAChB,CACF,CACF,CAAC,EACD,CAACA,EAAc,IAAI,EAAG,IAAIC,EAAqB,CAC7C,GAAID,EAAc,KAClB,YAAa,cACb,aAAc,GACd,uBAAwB,EACxB,QAAS,GACT,WAAY,KAAO,KACnB,MAAO,CAAC,SAAU,EAClB,cAAe,CACb,CACE,YAAa,uCACb,WAAY,uCACZ,UAAW,uCACX,aAAc,sCAChB,CACF,CACF,CAAC,EACD,CAACA,EAAc,IAAI,EAAG,IAAIC,EAAqB,CAC7C,GAAID,EAAc,KAClB,YAAa,cACb,aAAc,IACd,uBAAwB,EACxB,QAAS,GACT,WAAY,KAAO,KACnB,MAAO,CAAC,SAAU,EAClB,cAAe,CACb,CACE,YAAa,uCACb,WAAY,uCACZ,UAAW,uCACX,aAAc,sCAChB,CACF,CACF,CAAC,CACH,GAzEWb,EAANe,EAAA,CADNC,EAAW,GACChB",
4
+ "sourcesContent": ["import { injectable } from \"inversify\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nimport { BleDeviceInfos } from \"@api/device-model/model/BleDeviceInfos\";\nimport { TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\n\n/**\n * Static/in memory implementation of the device model data source\n */\n@injectable()\nexport class StaticDeviceModelDataSource implements DeviceModelDataSource {\n private static deviceModelByIds: {\n [_key in DeviceModelId]: TransportDeviceModel;\n } = {\n [DeviceModelId.NANO_S]: new TransportDeviceModel({\n id: DeviceModelId.NANO_S,\n productName: \"Ledger Nano S\",\n usbProductId: 0x10,\n bootloaderUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n blockSize: 4 * 1024,\n masks: [0x31100000],\n }),\n [DeviceModelId.NANO_SP]: new TransportDeviceModel({\n id: DeviceModelId.NANO_SP,\n productName: \"Ledger Nano S Plus\",\n usbProductId: 0x50,\n bootloaderUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1533 * 1024,\n blockSize: 32,\n masks: [0x33100000],\n }),\n [DeviceModelId.NANO_X]: new TransportDeviceModel({\n id: DeviceModelId.NANO_X,\n productName: \"Ledger Nano X\",\n usbProductId: 0x40,\n bootloaderUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n blockSize: 4 * 1024,\n masks: [0x33000000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-0004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.STAX]: new TransportDeviceModel({\n id: DeviceModelId.STAX,\n productName: \"Ledger Stax\",\n usbProductId: 0x60,\n bootloaderUsbProductId: 0x0006,\n usbOnly: false,\n memorySize: 1533 * 1024,\n blockSize: 32,\n masks: [0x33200000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-6004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-6004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-6004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-6004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.FLEX]: new TransportDeviceModel({\n id: DeviceModelId.FLEX,\n productName: \"Ledger Flex\",\n usbProductId: 0x70,\n bootloaderUsbProductId: 0x0007,\n usbOnly: false,\n memorySize: 1533 * 1024,\n blockSize: 32,\n masks: [0x33300000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-3004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-3004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-3004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-3004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.APEX]: new TransportDeviceModel({\n id: DeviceModelId.APEX,\n productName: \"Ledger Apex\",\n usbProductId: 0x80,\n bootloaderUsbProductId: 0x0008,\n usbOnly: false,\n memorySize: 1533 * 1024,\n blockSize: 32,\n masks: [0x33400000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-8004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-8004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-8004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-8004-0003-4c6564676572\",\n },\n ],\n }),\n };\n\n getAllDeviceModels(): TransportDeviceModel[] {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds);\n }\n\n getDeviceModel(params: { id: DeviceModelId }): TransportDeviceModel {\n return StaticDeviceModelDataSource.deviceModelByIds[params.id];\n }\n\n /**\n * Returns the list of device models that match all the given parameters\n */\n filterDeviceModels(\n params: Partial<TransportDeviceModel>,\n ): TransportDeviceModel[] {\n return this.getAllDeviceModels().filter((deviceModel) => {\n return Object.entries(params).every(([key, value]) => {\n return deviceModel[key as keyof TransportDeviceModel] === value;\n });\n });\n }\n\n getBluetoothServicesInfos(): Record<string, BleDeviceInfos> {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds).reduce<\n Record<string, BleDeviceInfos>\n >((acc, deviceModel) => {\n const { bluetoothSpec } = deviceModel;\n if (bluetoothSpec) {\n return {\n ...acc,\n ...bluetoothSpec.reduce<Record<string, BleDeviceInfos>>(\n (serviceToModel, bleSpec) => ({\n ...serviceToModel,\n [bleSpec.serviceUuid]: new BleDeviceInfos(\n deviceModel,\n bleSpec.serviceUuid,\n bleSpec.writeUuid,\n bleSpec.writeCmdUuid,\n bleSpec.notifyUuid,\n ),\n }),\n {},\n ),\n };\n }\n return acc;\n }, {});\n }\n\n getBluetoothServices(): string[] {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds)\n .map((deviceModel) =>\n (deviceModel.bluetoothSpec || []).map((spec) => spec.serviceUuid),\n )\n .flat()\n .filter((uuid) => !!uuid);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["injectable", "DeviceModelId", "BleDeviceInfos", "TransportDeviceModel", "StaticDeviceModelDataSource", "params", "deviceModel", "key", "value", "acc", "bluetoothSpec", "serviceToModel", "bleSpec", "BleDeviceInfos", "spec", "uuid", "__publicField", "DeviceModelId", "TransportDeviceModel", "__decorateClass", "injectable"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as e}from"../../device/DeviceModel";import{BleDeviceInfos as s}from"../../device-model/model/BleDeviceInfos";import{StaticDeviceModelDataSource as d}from"./StaticDeviceModelDataSource";describe("StaticDeviceModelDataSource",()=>{describe("getAllDeviceModels",()=>{it("should return all device models",()=>{const c=new d().getAllDeviceModels();expect(c.length).toEqual(5),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_S})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_SP})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_X})),expect(c).toContainEqual(expect.objectContaining({id:e.STAX})),expect(c).toContainEqual(expect.objectContaining({id:e.FLEX}))})}),describe("getDeviceModel",()=>{it("should return the associated device model",()=>{const t=new d,c=t.getDeviceModel({id:e.NANO_S});expect(c).toEqual(expect.objectContaining({id:e.NANO_S}));const o=t.getDeviceModel({id:e.NANO_SP});expect(o).toEqual(expect.objectContaining({id:e.NANO_SP}));const i=t.getDeviceModel({id:e.NANO_X});expect(i).toEqual(expect.objectContaining({id:e.NANO_X}));const n=t.getDeviceModel({id:e.STAX});expect(n).toEqual(expect.objectContaining({id:e.STAX}));const l=t.getDeviceModel({id:e.FLEX});expect(l).toEqual(expect.objectContaining({id:e.FLEX}))})}),describe("filterDeviceModels",()=>{it("should return the device models that match the given single parameter",()=>{const t=new d,c=t.filterDeviceModels({usbOnly:!0});expect(c.length).toEqual(2),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_SP})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_S}));const o=t.filterDeviceModels({usbProductId:16});expect(o.length).toEqual(1),expect(o[0]).toEqual(expect.objectContaining({id:e.NANO_S}));const i=t.filterDeviceModels({usbProductId:64});expect(i.length).toEqual(1),expect(i[0]).toEqual(expect.objectContaining({id:e.NANO_X}));const n=t.filterDeviceModels({usbProductId:80});expect(n.length).toEqual(1),expect(n[0]).toEqual(expect.objectContaining({id:e.NANO_SP}));const l=t.filterDeviceModels({usbProductId:96});expect(l.length).toEqual(1),expect(l[0]).toEqual(expect.objectContaining({id:e.STAX}));const a=t.filterDeviceModels({usbProductId:0});expect(a.length).toEqual(0)}),it("should return the device models that match the given multiple parameters",()=>{const t=new d,c=t.filterDeviceModels({usbOnly:!1,usbProductId:64});expect(c.length).toEqual(1),expect(c[0]).toEqual(expect.objectContaining({id:e.NANO_X}));const o=t.filterDeviceModels({usbOnly:!0,usbProductId:80});expect(o.length).toEqual(1),expect(o[0]).toEqual(expect.objectContaining({id:e.NANO_SP}));const i=t.filterDeviceModels({usbOnly:!1,usbProductId:16});expect(i.length).toEqual(0)})}),describe("getBluetoothServicesInfos",()=>{it("should return the ble service infos record",()=>{const t=new d,c=t.getBluetoothServicesInfos();expect(c).toStrictEqual({"13d63400-2c97-0004-0000-4c6564676572":new s(t.getDeviceModel({id:e.NANO_X}),"13d63400-2c97-0004-0000-4c6564676572","13d63400-2c97-0004-0002-4c6564676572","13d63400-2c97-0004-0003-4c6564676572","13d63400-2c97-0004-0001-4c6564676572"),"13d63400-2c97-6004-0000-4c6564676572":new s(t.getDeviceModel({id:e.STAX}),"13d63400-2c97-6004-0000-4c6564676572","13d63400-2c97-6004-0002-4c6564676572","13d63400-2c97-6004-0003-4c6564676572","13d63400-2c97-6004-0001-4c6564676572"),"13d63400-2c97-3004-0000-4c6564676572":new s(t.getDeviceModel({id:e.FLEX}),"13d63400-2c97-3004-0000-4c6564676572","13d63400-2c97-3004-0002-4c6564676572","13d63400-2c97-3004-0003-4c6564676572","13d63400-2c97-3004-0001-4c6564676572")})})}),describe("getBluetoothServices",()=>{it("should return the bluetooth services",()=>{const c=new d().getBluetoothServices();expect(c).toStrictEqual(["13d63400-2c97-0004-0000-4c6564676572","13d63400-2c97-6004-0000-4c6564676572","13d63400-2c97-3004-0000-4c6564676572"])})})});
1
+ import{DeviceModelId as e}from"../../device/DeviceModel";import{BleDeviceInfos as a}from"../../device-model/model/BleDeviceInfos";import{StaticDeviceModelDataSource as d}from"./StaticDeviceModelDataSource";describe("StaticDeviceModelDataSource",()=>{describe("getAllDeviceModels",()=>{it("should return all device models",()=>{const c=new d().getAllDeviceModels();expect(c.length).toEqual(6),expect(c).toContainEqual(expect.objectContaining({id:e.APEX})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_S})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_SP})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_X})),expect(c).toContainEqual(expect.objectContaining({id:e.STAX})),expect(c).toContainEqual(expect.objectContaining({id:e.FLEX}))})}),describe("getDeviceModel",()=>{it("should return the associated device model",()=>{const t=new d,c=t.getDeviceModel({id:e.NANO_S});expect(c).toEqual(expect.objectContaining({id:e.NANO_S}));const o=t.getDeviceModel({id:e.NANO_SP});expect(o).toEqual(expect.objectContaining({id:e.NANO_SP}));const i=t.getDeviceModel({id:e.NANO_X});expect(i).toEqual(expect.objectContaining({id:e.NANO_X}));const n=t.getDeviceModel({id:e.STAX});expect(n).toEqual(expect.objectContaining({id:e.STAX}));const l=t.getDeviceModel({id:e.FLEX});expect(l).toEqual(expect.objectContaining({id:e.FLEX}))})}),describe("filterDeviceModels",()=>{it("should return the device models that match the given single parameter",()=>{const t=new d,c=t.filterDeviceModels({usbOnly:!0});expect(c.length).toEqual(2),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_SP})),expect(c).toContainEqual(expect.objectContaining({id:e.NANO_S}));const o=t.filterDeviceModels({usbProductId:16});expect(o.length).toEqual(1),expect(o[0]).toEqual(expect.objectContaining({id:e.NANO_S}));const i=t.filterDeviceModels({usbProductId:64});expect(i.length).toEqual(1),expect(i[0]).toEqual(expect.objectContaining({id:e.NANO_X}));const n=t.filterDeviceModels({usbProductId:80});expect(n.length).toEqual(1),expect(n[0]).toEqual(expect.objectContaining({id:e.NANO_SP}));const l=t.filterDeviceModels({usbProductId:96});expect(l.length).toEqual(1),expect(l[0]).toEqual(expect.objectContaining({id:e.STAX}));const s=t.filterDeviceModels({usbProductId:0});expect(s.length).toEqual(0)}),it("should return the device models that match the given multiple parameters",()=>{const t=new d,c=t.filterDeviceModels({usbOnly:!1,usbProductId:64});expect(c.length).toEqual(1),expect(c[0]).toEqual(expect.objectContaining({id:e.NANO_X}));const o=t.filterDeviceModels({usbOnly:!0,usbProductId:80});expect(o.length).toEqual(1),expect(o[0]).toEqual(expect.objectContaining({id:e.NANO_SP}));const i=t.filterDeviceModels({usbOnly:!1,usbProductId:16});expect(i.length).toEqual(0)})}),describe("getBluetoothServicesInfos",()=>{it("should return the ble service infos record",()=>{const t=new d,c=t.getBluetoothServicesInfos();expect(c).toStrictEqual({"13d63400-2c97-0004-0000-4c6564676572":new a(t.getDeviceModel({id:e.NANO_X}),"13d63400-2c97-0004-0000-4c6564676572","13d63400-2c97-0004-0002-4c6564676572","13d63400-2c97-0004-0003-4c6564676572","13d63400-2c97-0004-0001-4c6564676572"),"13d63400-2c97-6004-0000-4c6564676572":new a(t.getDeviceModel({id:e.STAX}),"13d63400-2c97-6004-0000-4c6564676572","13d63400-2c97-6004-0002-4c6564676572","13d63400-2c97-6004-0003-4c6564676572","13d63400-2c97-6004-0001-4c6564676572"),"13d63400-2c97-3004-0000-4c6564676572":new a(t.getDeviceModel({id:e.FLEX}),"13d63400-2c97-3004-0000-4c6564676572","13d63400-2c97-3004-0002-4c6564676572","13d63400-2c97-3004-0003-4c6564676572","13d63400-2c97-3004-0001-4c6564676572"),"13d63400-2c97-8004-0000-4c6564676572":new a(t.getDeviceModel({id:e.APEX}),"13d63400-2c97-8004-0000-4c6564676572","13d63400-2c97-8004-0002-4c6564676572","13d63400-2c97-8004-0003-4c6564676572","13d63400-2c97-8004-0001-4c6564676572")})})}),describe("getBluetoothServices",()=>{it("should return the bluetooth services",()=>{const c=new d().getBluetoothServices();expect(c).toStrictEqual(["13d63400-2c97-0004-0000-4c6564676572","13d63400-2c97-6004-0000-4c6564676572","13d63400-2c97-3004-0000-4c6564676572","13d63400-2c97-8004-0000-4c6564676572"])})})});
2
2
  //# sourceMappingURL=StaticDeviceModelDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-model/data/StaticDeviceModelDataSource.test.ts"],
4
- "sourcesContent": ["import { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { BleDeviceInfos } from \"@api/device-model/model/BleDeviceInfos\";\n\nimport { StaticDeviceModelDataSource } from \"./StaticDeviceModelDataSource\";\n\ndescribe(\"StaticDeviceModelDataSource\", () => {\n describe(\"getAllDeviceModels\", () => {\n it(\"should return all device models\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n const deviceModels = dataSource.getAllDeviceModels();\n\n // Currently supporting 4 device models\n expect(deviceModels.length).toEqual(5);\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.FLEX }),\n );\n });\n });\n\n describe(\"getDeviceModel\", () => {\n it(\"should return the associated device model\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModel1 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_S,\n });\n expect(deviceModel1).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModel2 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_SP,\n });\n expect(deviceModel2).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n const deviceModel3 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_X,\n });\n expect(deviceModel3).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModel4 = dataSource.getDeviceModel({\n id: DeviceModelId.STAX,\n });\n expect(deviceModel4).toEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n\n const deviceModel5 = dataSource.getDeviceModel({\n id: DeviceModelId.FLEX,\n });\n expect(deviceModel5).toEqual(\n expect.objectContaining({ id: DeviceModelId.FLEX }),\n );\n });\n });\n\n describe(\"filterDeviceModels\", () => {\n it(\"should return the device models that match the given single parameter\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModels1 = dataSource.filterDeviceModels({ usbOnly: true });\n expect(deviceModels1.length).toEqual(2);\n expect(deviceModels1).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n expect(deviceModels1).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModels2 = dataSource.filterDeviceModels({\n usbProductId: 0x10,\n });\n expect(deviceModels2.length).toEqual(1);\n expect(deviceModels2[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModels3 = dataSource.filterDeviceModels({\n usbProductId: 0x40,\n });\n expect(deviceModels3.length).toEqual(1);\n expect(deviceModels3[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModels4 = dataSource.filterDeviceModels({\n usbProductId: 0x50,\n });\n expect(deviceModels4.length).toEqual(1);\n expect(deviceModels4[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n const deviceModels5 = dataSource.filterDeviceModels({\n usbProductId: 0x60,\n });\n expect(deviceModels5.length).toEqual(1);\n expect(deviceModels5[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n\n const deviceModels6 = dataSource.filterDeviceModels({\n usbProductId: 0x00,\n });\n expect(deviceModels6.length).toEqual(0);\n });\n\n it(\"should return the device models that match the given multiple parameters\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModels1 = dataSource.filterDeviceModels({\n usbOnly: false,\n usbProductId: 0x40,\n });\n expect(deviceModels1.length).toEqual(1);\n expect(deviceModels1[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModels2 = dataSource.filterDeviceModels({\n usbOnly: true,\n usbProductId: 0x50,\n });\n expect(deviceModels2.length).toEqual(1);\n expect(deviceModels2[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n // Nano S is usbOnly\n const deviceModels3 = dataSource.filterDeviceModels({\n usbOnly: false,\n usbProductId: 0x10,\n });\n expect(deviceModels3.length).toEqual(0);\n });\n });\n describe(\"getBluetoothServicesInfos\", () => {\n it(\"should return the ble service infos record\", () => {\n // given\n const dataSource = new StaticDeviceModelDataSource();\n // when\n const bleServiceInfos = dataSource.getBluetoothServicesInfos();\n // then\n expect(bleServiceInfos).toStrictEqual({\n \"13d63400-2c97-0004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.NANO_X }),\n \"13d63400-2c97-0004-0000-4c6564676572\",\n \"13d63400-2c97-0004-0002-4c6564676572\",\n \"13d63400-2c97-0004-0003-4c6564676572\",\n \"13d63400-2c97-0004-0001-4c6564676572\",\n ),\n \"13d63400-2c97-6004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.STAX }),\n \"13d63400-2c97-6004-0000-4c6564676572\",\n \"13d63400-2c97-6004-0002-4c6564676572\",\n \"13d63400-2c97-6004-0003-4c6564676572\",\n \"13d63400-2c97-6004-0001-4c6564676572\",\n ),\n \"13d63400-2c97-3004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.FLEX }),\n \"13d63400-2c97-3004-0000-4c6564676572\",\n \"13d63400-2c97-3004-0002-4c6564676572\",\n \"13d63400-2c97-3004-0003-4c6564676572\",\n \"13d63400-2c97-3004-0001-4c6564676572\",\n ),\n });\n });\n });\n describe(\"getBluetoothServices\", () => {\n it(\"should return the bluetooth services\", () => {\n // given\n const dataSource = new StaticDeviceModelDataSource();\n // when\n const bleServices = dataSource.getBluetoothServices();\n // then\n expect(bleServices).toStrictEqual([\n \"13d63400-2c97-0004-0000-4c6564676572\",\n \"13d63400-2c97-6004-0000-4c6564676572\",\n \"13d63400-2c97-3004-0000-4c6564676572\",\n ]);\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { BleDeviceInfos } from \"@api/device-model/model/BleDeviceInfos\";\n\nimport { StaticDeviceModelDataSource } from \"./StaticDeviceModelDataSource\";\n\ndescribe(\"StaticDeviceModelDataSource\", () => {\n describe(\"getAllDeviceModels\", () => {\n it(\"should return all device models\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n const deviceModels = dataSource.getAllDeviceModels();\n\n expect(deviceModels.length).toEqual(6);\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.APEX }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n expect(deviceModels).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.FLEX }),\n );\n });\n });\n\n describe(\"getDeviceModel\", () => {\n it(\"should return the associated device model\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModel1 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_S,\n });\n expect(deviceModel1).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModel2 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_SP,\n });\n expect(deviceModel2).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n const deviceModel3 = dataSource.getDeviceModel({\n id: DeviceModelId.NANO_X,\n });\n expect(deviceModel3).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModel4 = dataSource.getDeviceModel({\n id: DeviceModelId.STAX,\n });\n expect(deviceModel4).toEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n\n const deviceModel5 = dataSource.getDeviceModel({\n id: DeviceModelId.FLEX,\n });\n expect(deviceModel5).toEqual(\n expect.objectContaining({ id: DeviceModelId.FLEX }),\n );\n });\n });\n\n describe(\"filterDeviceModels\", () => {\n it(\"should return the device models that match the given single parameter\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModels1 = dataSource.filterDeviceModels({ usbOnly: true });\n expect(deviceModels1.length).toEqual(2);\n expect(deviceModels1).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n expect(deviceModels1).toContainEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModels2 = dataSource.filterDeviceModels({\n usbProductId: 0x10,\n });\n expect(deviceModels2.length).toEqual(1);\n expect(deviceModels2[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_S }),\n );\n\n const deviceModels3 = dataSource.filterDeviceModels({\n usbProductId: 0x40,\n });\n expect(deviceModels3.length).toEqual(1);\n expect(deviceModels3[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModels4 = dataSource.filterDeviceModels({\n usbProductId: 0x50,\n });\n expect(deviceModels4.length).toEqual(1);\n expect(deviceModels4[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n const deviceModels5 = dataSource.filterDeviceModels({\n usbProductId: 0x60,\n });\n expect(deviceModels5.length).toEqual(1);\n expect(deviceModels5[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.STAX }),\n );\n\n const deviceModels6 = dataSource.filterDeviceModels({\n usbProductId: 0x00,\n });\n expect(deviceModels6.length).toEqual(0);\n });\n\n it(\"should return the device models that match the given multiple parameters\", () => {\n const dataSource = new StaticDeviceModelDataSource();\n\n const deviceModels1 = dataSource.filterDeviceModels({\n usbOnly: false,\n usbProductId: 0x40,\n });\n expect(deviceModels1.length).toEqual(1);\n expect(deviceModels1[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_X }),\n );\n\n const deviceModels2 = dataSource.filterDeviceModels({\n usbOnly: true,\n usbProductId: 0x50,\n });\n expect(deviceModels2.length).toEqual(1);\n expect(deviceModels2[0]).toEqual(\n expect.objectContaining({ id: DeviceModelId.NANO_SP }),\n );\n\n // Nano S is usbOnly\n const deviceModels3 = dataSource.filterDeviceModels({\n usbOnly: false,\n usbProductId: 0x10,\n });\n expect(deviceModels3.length).toEqual(0);\n });\n });\n describe(\"getBluetoothServicesInfos\", () => {\n it(\"should return the ble service infos record\", () => {\n // given\n const dataSource = new StaticDeviceModelDataSource();\n // when\n const bleServiceInfos = dataSource.getBluetoothServicesInfos();\n // then\n expect(bleServiceInfos).toStrictEqual({\n \"13d63400-2c97-0004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.NANO_X }),\n \"13d63400-2c97-0004-0000-4c6564676572\",\n \"13d63400-2c97-0004-0002-4c6564676572\",\n \"13d63400-2c97-0004-0003-4c6564676572\",\n \"13d63400-2c97-0004-0001-4c6564676572\",\n ),\n \"13d63400-2c97-6004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.STAX }),\n \"13d63400-2c97-6004-0000-4c6564676572\",\n \"13d63400-2c97-6004-0002-4c6564676572\",\n \"13d63400-2c97-6004-0003-4c6564676572\",\n \"13d63400-2c97-6004-0001-4c6564676572\",\n ),\n \"13d63400-2c97-3004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.FLEX }),\n \"13d63400-2c97-3004-0000-4c6564676572\",\n \"13d63400-2c97-3004-0002-4c6564676572\",\n \"13d63400-2c97-3004-0003-4c6564676572\",\n \"13d63400-2c97-3004-0001-4c6564676572\",\n ),\n \"13d63400-2c97-8004-0000-4c6564676572\": new BleDeviceInfos(\n dataSource.getDeviceModel({ id: DeviceModelId.APEX }),\n \"13d63400-2c97-8004-0000-4c6564676572\",\n \"13d63400-2c97-8004-0002-4c6564676572\",\n \"13d63400-2c97-8004-0003-4c6564676572\",\n \"13d63400-2c97-8004-0001-4c6564676572\",\n ),\n });\n });\n });\n describe(\"getBluetoothServices\", () => {\n it(\"should return the bluetooth services\", () => {\n // given\n const dataSource = new StaticDeviceModelDataSource();\n // when\n const bleServices = dataSource.getBluetoothServices();\n // then\n expect(bleServices).toStrictEqual([\n \"13d63400-2c97-0004-0000-4c6564676572\",\n \"13d63400-2c97-6004-0000-4c6564676572\",\n \"13d63400-2c97-3004-0000-4c6564676572\",\n \"13d63400-2c97-8004-0000-4c6564676572\",\n ]);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["DeviceModelId", "BleDeviceInfos", "StaticDeviceModelDataSource", "deviceModels", "dataSource", "deviceModel1", "deviceModel2", "deviceModel3", "deviceModel4", "deviceModel5", "deviceModels1", "deviceModels2", "deviceModels3", "deviceModels4", "deviceModels5", "deviceModels6", "bleServiceInfos", "bleServices"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import r from"semver";import{DeviceModelId as t}from"../../device/DeviceModel";class s{id;productName;usbProductId;bootloaderUsbProductId;usbOnly;memorySize;masks;bluetoothSpec;constructor(e){this.id=e.id,this.productName=e.productName,this.usbProductId=e.usbProductId,this.bootloaderUsbProductId=e.bootloaderUsbProductId,this.usbOnly=e.usbOnly,this.memorySize=e.memorySize,this.masks=e.masks,this.bluetoothSpec=e.bluetoothSpec}getBlockSize(e){switch(this.id){case t.NANO_S:return r.lt(r.coerce(e)??"","2.0.0")?4*1024:2*1024;case t.NANO_X:return 4*1024;case t.NANO_SP:case t.STAX:case t.FLEX:return 32}}}export{s as TransportDeviceModel};
1
+ import i from"semver";import{DeviceModelId as t}from"../../device/DeviceModel";class u{id;productName;usbProductId;bootloaderUsbProductId;usbOnly;memorySize;blockSize;masks;bluetoothSpec;constructor(e){this.id=e.id,this.productName=e.productName,this.usbProductId=e.usbProductId,this.bootloaderUsbProductId=e.bootloaderUsbProductId,this.usbOnly=e.usbOnly,this.memorySize=e.memorySize,this.blockSize=e.blockSize,this.masks=e.masks,this.bluetoothSpec=e.bluetoothSpec}getBlockSize(e){switch(this.id){case t.NANO_S:return i.lt(i.coerce(e)??"","2.0.0")?4*1024:2*1024;case t.NANO_X:return 4*1024;case t.NANO_SP:case t.STAX:case t.FLEX:case t.APEX:return 32}}}export{u as TransportDeviceModel};
2
2
  //# sourceMappingURL=DeviceModel.js.map