@ledgerhq/device-management-kit 1.2.0 → 1.3.0

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 (259) hide show
  1. package/lib/cjs/package.json +1 -2
  2. package/lib/cjs/src/api/command/Errors.js +1 -1
  3. package/lib/cjs/src/api/command/Errors.js.map +3 -3
  4. package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
  5. package/lib/cjs/src/api/command/model/CommandResult.js.map +3 -3
  6. package/lib/cjs/src/api/command/os/BackupStorageCommand.js +2 -0
  7. package/lib/cjs/src/api/command/os/BackupStorageCommand.js.map +7 -0
  8. package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js +2 -0
  9. package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js.map +7 -0
  10. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.js +2 -0
  11. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.js.map +7 -0
  12. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.test.js +2 -0
  13. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.test.js.map +7 -0
  14. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  15. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +3 -3
  16. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  17. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  18. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  19. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  20. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  21. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  22. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  23. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  24. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +2 -2
  25. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  26. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +3 -3
  27. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  28. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  29. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
  30. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +2 -2
  31. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js +2 -0
  32. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js.map +7 -0
  33. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js +2 -0
  34. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js.map +7 -0
  35. package/lib/cjs/src/api/device-action/task/Errors.js +2 -0
  36. package/lib/cjs/src/api/device-action/task/Errors.js.map +7 -0
  37. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +1 -1
  38. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +3 -3
  39. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +1 -1
  40. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +3 -3
  41. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  42. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  43. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  44. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  45. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  46. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  47. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  48. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  49. package/lib/cjs/src/api/index.js +1 -1
  50. package/lib/cjs/src/api/index.js.map +3 -3
  51. package/lib/cjs/src/api/model/DmkResult.js +2 -0
  52. package/lib/cjs/src/api/model/DmkResult.js.map +7 -0
  53. package/lib/cjs/src/api/model/DmkResult.test.js +2 -0
  54. package/lib/cjs/src/api/model/DmkResult.test.js.map +7 -0
  55. package/lib/cjs/src/api/network/DmkNetworkClient.js +2 -0
  56. package/lib/cjs/src/api/network/DmkNetworkClient.js.map +7 -0
  57. package/lib/cjs/src/api/network/DmkNetworkClient.test.js +2 -0
  58. package/lib/cjs/src/api/network/DmkNetworkClient.test.js.map +7 -0
  59. package/lib/cjs/src/api/network/DmkNetworkClientError.js +2 -0
  60. package/lib/cjs/src/api/network/DmkNetworkClientError.js.map +7 -0
  61. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js +2 -0
  62. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js.map +7 -0
  63. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js +2 -0
  64. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js.map +7 -0
  65. package/lib/cjs/src/api/storage/KeyValueStorage.js +2 -0
  66. package/lib/cjs/src/api/storage/KeyValueStorage.js.map +7 -0
  67. package/lib/cjs/src/api/types.js +1 -1
  68. package/lib/cjs/src/api/types.js.map +1 -1
  69. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  70. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  71. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  72. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  73. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  74. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  75. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  76. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  77. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  78. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  79. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  80. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  81. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  82. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  83. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js +2 -0
  84. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +7 -0
  85. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +2 -0
  86. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +7 -0
  87. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js +2 -0
  88. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +7 -0
  89. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  90. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  91. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  92. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  93. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  94. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  95. package/lib/esm/package.json +1 -2
  96. package/lib/esm/src/api/command/Errors.js +1 -1
  97. package/lib/esm/src/api/command/Errors.js.map +3 -3
  98. package/lib/esm/src/api/command/model/CommandResult.js +1 -1
  99. package/lib/esm/src/api/command/model/CommandResult.js.map +3 -3
  100. package/lib/esm/src/api/command/os/BackupStorageCommand.js +2 -0
  101. package/lib/esm/src/api/command/os/BackupStorageCommand.js.map +7 -0
  102. package/lib/esm/src/api/command/os/BackupStorageCommand.test.js +2 -0
  103. package/lib/esm/src/api/command/os/BackupStorageCommand.test.js.map +7 -0
  104. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.js +2 -0
  105. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.js.map +7 -0
  106. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.test.js +2 -0
  107. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.test.js.map +7 -0
  108. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  109. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +3 -3
  110. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  111. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  112. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  113. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  114. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  115. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  116. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  117. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  118. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +2 -2
  119. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  120. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +3 -3
  121. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  122. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  123. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +2 -2
  124. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js +2 -0
  125. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js.map +7 -0
  126. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js +2 -0
  127. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js.map +7 -0
  128. package/lib/esm/src/api/device-action/task/Errors.js +2 -0
  129. package/lib/esm/src/api/device-action/task/Errors.js.map +7 -0
  130. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +1 -1
  131. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +3 -3
  132. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +1 -1
  133. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +3 -3
  134. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  135. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  136. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  137. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  138. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  139. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  140. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  141. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  142. package/lib/esm/src/api/index.js +1 -1
  143. package/lib/esm/src/api/index.js.map +3 -3
  144. package/lib/esm/src/api/model/DmkResult.js +2 -0
  145. package/lib/esm/src/api/model/DmkResult.js.map +7 -0
  146. package/lib/esm/src/api/model/DmkResult.test.js +2 -0
  147. package/lib/esm/src/api/model/DmkResult.test.js.map +7 -0
  148. package/lib/esm/src/api/network/DmkNetworkClient.js +2 -0
  149. package/lib/esm/src/api/network/DmkNetworkClient.js.map +7 -0
  150. package/lib/esm/src/api/network/DmkNetworkClient.test.js +2 -0
  151. package/lib/esm/src/api/network/DmkNetworkClient.test.js.map +7 -0
  152. package/lib/esm/src/api/network/DmkNetworkClientError.js +2 -0
  153. package/lib/esm/src/api/network/DmkNetworkClientError.js.map +7 -0
  154. package/lib/esm/src/api/network/DmkNetworkClientHelpers.js +2 -0
  155. package/lib/esm/src/api/network/DmkNetworkClientHelpers.js.map +7 -0
  156. package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js +2 -0
  157. package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js.map +7 -0
  158. package/lib/esm/src/api/storage/KeyValueStorage.js +2 -0
  159. package/lib/esm/src/api/storage/KeyValueStorage.js.map +7 -0
  160. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  161. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  162. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  163. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  164. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  165. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  166. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  167. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  168. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  169. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  170. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  171. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  172. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  173. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  174. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js +2 -0
  175. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +7 -0
  176. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +2 -0
  177. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +7 -0
  178. package/lib/esm/src/internal/manager-api/data/__mocks__/{AxiosManagerApiDataSource.js → HttpManagerApiDataSource.js} +2 -2
  179. package/lib/esm/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +7 -0
  180. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  181. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  182. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  183. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  184. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  185. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  186. package/lib/types/src/api/command/Errors.d.ts +0 -20
  187. package/lib/types/src/api/command/Errors.d.ts.map +1 -1
  188. package/lib/types/src/api/command/model/CommandResult.d.ts +11 -17
  189. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  190. package/lib/types/src/api/command/os/BackupStorageCommand.d.ts +23 -0
  191. package/lib/types/src/api/command/os/BackupStorageCommand.d.ts.map +1 -0
  192. package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts +2 -0
  193. package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts.map +1 -0
  194. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.d.ts +31 -0
  195. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.d.ts.map +1 -0
  196. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.test.d.ts +2 -0
  197. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.test.d.ts.map +1 -0
  198. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
  199. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts +9 -6
  200. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  201. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +7 -6
  202. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  203. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -1
  204. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +3 -2
  205. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
  206. package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts +23 -0
  207. package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts.map +1 -0
  208. package/lib/types/src/api/device-action/task/BackupAppStorageTask.test.d.ts +2 -0
  209. package/lib/types/src/api/device-action/task/BackupAppStorageTask.test.d.ts.map +1 -0
  210. package/lib/types/src/api/device-action/task/Errors.d.ts +12 -0
  211. package/lib/types/src/api/device-action/task/Errors.d.ts.map +1 -0
  212. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +5 -3
  213. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -1
  214. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +7 -3
  215. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -1
  216. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  217. package/lib/types/src/api/index.d.ts +10 -1
  218. package/lib/types/src/api/index.d.ts.map +1 -1
  219. package/lib/types/src/api/model/DmkResult.d.ts +24 -0
  220. package/lib/types/src/api/model/DmkResult.d.ts.map +1 -0
  221. package/lib/types/src/api/model/DmkResult.test.d.ts +2 -0
  222. package/lib/types/src/api/model/DmkResult.test.d.ts.map +1 -0
  223. package/lib/types/src/api/network/DmkNetworkClient.d.ts +97 -0
  224. package/lib/types/src/api/network/DmkNetworkClient.d.ts.map +1 -0
  225. package/lib/types/src/api/network/DmkNetworkClient.test.d.ts +2 -0
  226. package/lib/types/src/api/network/DmkNetworkClient.test.d.ts.map +1 -0
  227. package/lib/types/src/api/network/DmkNetworkClientError.d.ts +33 -0
  228. package/lib/types/src/api/network/DmkNetworkClientError.d.ts.map +1 -0
  229. package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts +73 -0
  230. package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts.map +1 -0
  231. package/lib/types/src/api/network/DmkNetworkClientHelpers.test.d.ts +2 -0
  232. package/lib/types/src/api/network/DmkNetworkClientHelpers.test.d.ts.map +1 -0
  233. package/lib/types/src/api/storage/KeyValueStorage.d.ts +7 -0
  234. package/lib/types/src/api/storage/KeyValueStorage.d.ts.map +1 -0
  235. package/lib/types/src/api/types.d.ts +1 -0
  236. package/lib/types/src/api/types.d.ts.map +1 -1
  237. package/lib/types/src/internal/manager-api/data/{AxiosManagerApiDataSource.d.ts → HttpManagerApiDataSource.d.ts} +3 -3
  238. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.d.ts.map +1 -0
  239. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.test.d.ts +2 -0
  240. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.test.d.ts.map +1 -0
  241. package/lib/types/src/internal/manager-api/data/__mocks__/{AxiosManagerApiDataSource.d.ts → HttpManagerApiDataSource.d.ts} +2 -2
  242. package/lib/types/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.d.ts.map +1 -0
  243. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  244. package/package.json +3 -4
  245. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +0 -2
  246. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +0 -7
  247. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +0 -2
  248. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +0 -7
  249. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +0 -2
  250. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +0 -7
  251. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +0 -2
  252. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +0 -7
  253. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +0 -2
  254. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +0 -7
  255. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +0 -7
  256. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +0 -1
  257. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.test.d.ts +0 -2
  258. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.test.d.ts.map +0 -1
  259. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +0 -1
@@ -2,7 +2,6 @@
2
2
  "dependencies": {
3
3
  "@noble/hashes": "^1.8.0",
4
4
  "@sentry/minimal": "catalog:",
5
- "axios": "catalog:",
6
5
  "inversify": "catalog:",
7
6
  "isomorphic-ws": "catalog:",
8
7
  "purify-ts": "catalog:",
@@ -64,5 +63,5 @@
64
63
  "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
65
64
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
66
65
  },
67
- "version": "1.2.0"
66
+ "version": "1.3.0"
68
67
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var t in r)n(o,t,{get:r[t],enumerable:!0})},d=(o,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of s(r))!l.call(o,a)&&a!==t&&n(o,a,{get:()=>r[a],enumerable:!(e=i(r,a))||e.enumerable});return o};var g=o=>d(n({},"__esModule",{value:!0}),o);var u={};E(u,{InvalidBatteryDataError:()=>p,InvalidBatteryFlagsError:()=>c,InvalidBatteryStatusTypeError:()=>y,InvalidGetFirmwareMetadataResponseError:()=>I,InvalidResponseFormatError:()=>v,InvalidStatusWordError:()=>m});module.exports=g(u);class m{_tag="InvalidStatusWordError";originalError;constructor(r){this.originalError=new Error(r??"Invalid status word.")}}class y{_tag="InvalidBatteryStatusTypeError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery status type.")}}class p{_tag="InvalidBatteryDataError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery data.")}}class c{_tag="InvalidBatteryFlagsError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery flags.")}}class v{_tag="InvalidResponseFormatError";originalError;constructor(r){this.originalError=new Error(r??"Invalid response format.")}}class I{_tag="InvalidGetFirmwareMetadataResponseError";originalError;constructor(r){this.originalError=new Error(r??"Invalid Firmware Metadata response error.")}}0&&(module.exports={InvalidBatteryDataError,InvalidBatteryFlagsError,InvalidBatteryStatusTypeError,InvalidGetFirmwareMetadataResponseError,InvalidResponseFormatError,InvalidStatusWordError});
1
+ "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var e=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var t in r)a(o,t,{get:r[t],enumerable:!0})},d=(o,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of e(r))!l.call(o,n)&&n!==t&&a(o,n,{get:()=>r[n],enumerable:!(s=i(r,n))||s.enumerable});return o};var m=o=>d(a({},"__esModule",{value:!0}),o);var c={};E(c,{InvalidResponseFormatError:()=>g,InvalidStatusWordError:()=>p});module.exports=m(c);class p{_tag="InvalidStatusWordError";originalError;constructor(r){this.originalError=new Error(r??"Invalid status word.")}}class g{_tag="InvalidResponseFormatError";originalError;constructor(r){this.originalError=new Error(r??"Invalid response format.")}}0&&(module.exports={InvalidResponseFormatError,InvalidStatusWordError});
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/command/Errors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class InvalidStatusWordError implements DmkError {\n readonly _tag = \"InvalidStatusWordError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid status word.\");\n }\n}\n\nexport class InvalidBatteryStatusTypeError implements DmkError {\n readonly _tag = \"InvalidBatteryStatusTypeError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery status type.\");\n }\n}\n\nexport class InvalidBatteryDataError implements DmkError {\n readonly _tag = \"InvalidBatteryDataError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery data.\");\n }\n}\n\nexport class InvalidBatteryFlagsError implements DmkError {\n readonly _tag = \"InvalidBatteryFlagsError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery flags.\");\n }\n}\n\nexport class InvalidResponseFormatError implements DmkError {\n readonly _tag = \"InvalidResponseFormatError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid response format.\");\n }\n}\n\nexport class InvalidGetFirmwareMetadataResponseError implements DmkError {\n readonly _tag = \"InvalidGetFirmwareMetadataResponseError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Invalid Firmware Metadata response error.\",\n );\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,6BAAAC,EAAA,kCAAAC,EAAA,4CAAAC,EAAA,+BAAAC,EAAA,2BAAAC,IAAA,eAAAC,EAAAR,GAEO,MAAMO,CAA2C,CAC7C,KAAO,yBACP,cAET,YAAYE,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,sBAAsB,CAClE,CACF,CAEO,MAAML,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYK,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,8BAA8B,CAC1E,CACF,CAEO,MAAMP,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYO,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMN,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYM,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,wBAAwB,CACpE,CACF,CAEO,MAAMH,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYG,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,0BAA0B,CACtE,CACF,CAEO,MAAMJ,CAA4D,CAC9D,KAAO,0CACP,cAET,YAAYI,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,2CACb,CACF,CACF",
6
- "names": ["Errors_exports", "__export", "InvalidBatteryDataError", "InvalidBatteryFlagsError", "InvalidBatteryStatusTypeError", "InvalidGetFirmwareMetadataResponseError", "InvalidResponseFormatError", "InvalidStatusWordError", "__toCommonJS", "message"]
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class InvalidStatusWordError implements DmkError {\n readonly _tag = \"InvalidStatusWordError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid status word.\");\n }\n}\n\nexport class InvalidResponseFormatError implements DmkError {\n readonly _tag = \"InvalidResponseFormatError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid response format.\");\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,EAAA,2BAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAMG,CAA2C,CAC7C,KAAO,yBACP,cAET,YAAYE,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,sBAAsB,CAClE,CACF,CAEO,MAAMH,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYG,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,0BAA0B,CACtE,CACF",
6
+ "names": ["Errors_exports", "__export", "InvalidResponseFormatError", "InvalidStatusWordError", "__toCommonJS", "message"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(t,r)=>{for(var e in r)o(t,e,{get:r[e],enumerable:!0})},m=(t,r,e,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of i(r))!u.call(t,a)&&a!==e&&o(t,a,{get:()=>r[a],enumerable:!(s=d(r,a))||s.enumerable});return t};var E=t=>m(o({},"__esModule",{value:!0}),t);var S={};c(S,{CommandResultFactory:()=>p,CommandResultStatus:()=>n,isSuccessCommandResult:()=>l});module.exports=E(S);var n=(e=>(e.Error="ERROR",e.Success="SUCCESS",e))(n||{});function p({data:t,error:r}){return r?{status:"ERROR",error:r}:{status:"SUCCESS",data:t}}function l(t){return t.status==="SUCCESS"}0&&(module.exports={CommandResultFactory,CommandResultStatus,isSuccessCommandResult});
1
+ "use strict";var m=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var c=(o,r)=>{for(var a in r)m(o,a,{get:r[a],enumerable:!0})},u=(o,r,a,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of i(r))!n.call(o,t)&&t!==a&&m(o,t,{get:()=>r[t],enumerable:!(s=d(r,t))||s.enumerable});return o};var p=o=>u(m({},"__esModule",{value:!0}),o);var C={};c(C,{CommandResultFactory:()=>E,CommandResultStatus:()=>e.DmkResultStatus,isSuccessCommandResult:()=>l});module.exports=p(C);var e=require("../../model/DmkResult");function E({data:o,error:r}){return r!==void 0?(0,e.DmkResultFactory)({error:r}):(0,e.DmkResultFactory)({data:o})}function l(o){return(0,e.isSuccessDmkResult)(o)}0&&(module.exports={CommandResultFactory,CommandResultStatus,isSuccessCommandResult});
2
2
  //# sourceMappingURL=CommandResult.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/model/CommandResult.ts"],
4
- "sourcesContent": ["import {\n type InvalidBatteryDataError,\n type InvalidBatteryStatusTypeError,\n type InvalidGetFirmwareMetadataResponseError,\n type InvalidResponseFormatError,\n type InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport { type GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport {\n type DeviceExchangeError,\n type UnknownDeviceExchangeError,\n} from \"@api/Error\";\n\nexport enum CommandResultStatus {\n Error = \"ERROR\",\n Success = \"SUCCESS\",\n}\nexport type CommandSuccessResult<Data> = {\n status: CommandResultStatus.Success;\n data: Data;\n};\nexport type CommandErrorResult<SpecificErrorCodes = void> = {\n error:\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | InvalidGetFirmwareMetadataResponseError\n | UnknownDeviceExchangeError;\n status: CommandResultStatus.Error;\n};\nexport type CommandResult<Data, SpecificErrorCodes = void> =\n | CommandSuccessResult<Data>\n | CommandErrorResult<SpecificErrorCodes>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error:\n | DeviceExchangeError<SpecificErrorCodes>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | InvalidGetFirmwareMetadataResponseError\n | UnknownDeviceExchangeError;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error) {\n return {\n status: CommandResultStatus.Error,\n error,\n };\n }\n return {\n status: CommandResultStatus.Success,\n data,\n };\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return result.status === CommandResultStatus.Success;\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,wBAAAC,EAAA,2BAAAC,IAAA,eAAAC,EAAAL,GAaO,IAAKG,OACVA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAFAA,OAAA,IAuBL,SAASD,EAAsD,CACpE,KAAAI,EACA,MAAAC,CACF,EAYgD,CAC9C,OAAIA,EACK,CACL,OAAQ,QACR,MAAAA,CACF,EAEK,CACL,OAAQ,UACR,KAAAD,CACF,CACF,CAEO,SAASF,EACdI,EACsC,CACtC,OAAOA,EAAO,SAAW,SAC3B",
6
- "names": ["CommandResult_exports", "__export", "CommandResultFactory", "CommandResultStatus", "isSuccessCommandResult", "__toCommonJS", "data", "error", "result"]
4
+ "sourcesContent": ["import type {\n InvalidResponseFormatError,\n InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport type { GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport type {\n DeviceExchangeError,\n UnknownDeviceExchangeError,\n} from \"@api/Error\";\nimport type {\n DmkErrorResult,\n DmkResult,\n DmkSuccessResult,\n} from \"@api/model/DmkResult\";\nimport {\n DmkResultFactory,\n DmkResultStatus,\n isSuccessDmkResult,\n} from \"@api/model/DmkResult\";\n\nexport { DmkResultStatus as CommandResultStatus };\ntype CommandError<SpecificErrorCodes = void> =\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n\nexport type CommandSuccessResult<Data> = DmkSuccessResult<Data>;\nexport type CommandErrorResult<SpecificErrorCodes = void> = DmkErrorResult<\n CommandError<SpecificErrorCodes>\n>;\nexport type CommandResult<Data, SpecificErrorCodes = void> = DmkResult<\n Data,\n CommandError<SpecificErrorCodes>\n>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error: CommandError<SpecificErrorCodes>;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error !== undefined) {\n return DmkResultFactory({\n error,\n });\n }\n\n return DmkResultFactory({\n data,\n });\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return isSuccessDmkResult(result);\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,qEAAAC,IAAA,eAAAC,EAAAJ,GAcA,IAAAK,EAIO,gCAkBA,SAASC,EAAsD,CACpE,KAAAC,EACA,MAAAC,CACF,EAKgD,CAC9C,OAAIA,IAAU,UACL,oBAAiB,CACtB,MAAAA,CACF,CAAC,KAGI,oBAAiB,CACtB,KAAAD,CACF,CAAC,CACH,CAEO,SAASE,EACdC,EACsC,CACtC,SAAO,sBAAmBA,CAAM,CAClC",
6
+ "names": ["CommandResult_exports", "__export", "CommandResultFactory", "isSuccessCommandResult", "__toCommonJS", "import_DmkResult", "CommandResultFactory", "data", "error", "isSuccessCommandResult", "result"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var E=(e,r)=>{for(var a in r)n(e,a,{get:r[a],enumerable:!0})},y=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of S(r))!f.call(e,o)&&o!==a&&n(e,o,{get:()=>r[o],enumerable:!(t=k(r,o))||t.enumerable});return e};var B=e=>y(n({},"__esModule",{value:!0}),e);var h={};E(h,{BACKUP_STORAGE_ERRORS:()=>d,BackupStorageCommand:()=>x,BackupStorageCommandError:()=>l});module.exports=B(h);var p=require("../../apdu/utils/ApduBuilder"),s=require("../../apdu/utils/ApduParser"),c=require("../../command/Errors"),m=require("../../command/model/CommandResult"),u=require("../../command/utils/CommandErrors"),i=require("../../command/utils/CommandUtils"),C=require("../../command/utils/GlobalCommandError"),g=require("../../Error");const d={5123:{message:"Invalid context. Get info must be called."},5419:{message:"Failed to generate AES key."},"541a":{message:"Internal error, crypto operation failed."},"541b":{message:"Internal error, failed to compute AES CMAC."},"541c":{message:"Failed to encrypt the app storage backup."},"622f":{message:"Invalid device state, recovery mode."},6642:{message:"Invalid backup state, backup already performed."}};class l extends g.DeviceExchangeError{constructor(r){super({tag:"BackupStorageCommandError",...r})}}class x{name="BackupStorage";header={cla:224,ins:107,p1:0,p2:0};getApdu(){return new p.ApduBuilder(this.header).build()}parseResponse(r){const a=new s.ApduParser(r);if(!i.CommandUtils.isSuccessResponse(r)){const o=a.encodeToHexaString(r.statusCode);return(0,u.isCommandErrorCode)(o,d)?(0,m.CommandResultFactory)({error:new l({...d[o],errorCode:o})}):(0,m.CommandResultFactory)({error:C.GlobalCommandErrorHandler.handle(r)})}const t=a.extractFieldByLength(a.getUnparsedRemainingLength());return t===void 0?(0,m.CommandResultFactory)({error:new c.InvalidStatusWordError("Failed to extract app storage data chunk")}):(0,m.CommandResultFactory)({data:{chunkData:t,chunkSize:t.length}})}}0&&(module.exports={BACKUP_STORAGE_ERRORS,BackupStorageCommand,BackupStorageCommandError});
2
+ //# sourceMappingURL=BackupStorageCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/BackupStorageCommand.ts"],
4
+ "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type BackupStorageCommandResponse = {\n chunkData: Uint8Array;\n chunkSize: number;\n};\n\nexport type BackupStorageCommandErrorCodes =\n | \"5123\"\n | \"5419\"\n | \"541a\"\n | \"541b\"\n | \"541c\"\n | \"622f\"\n | \"6642\";\n\nexport const BACKUP_STORAGE_ERRORS: CommandErrors<BackupStorageCommandErrorCodes> =\n {\n \"5123\": { message: \"Invalid context. Get info must be called.\" },\n \"5419\": { message: \"Failed to generate AES key.\" },\n \"541a\": { message: \"Internal error, crypto operation failed.\" },\n \"541b\": { message: \"Internal error, failed to compute AES CMAC.\" },\n \"541c\": { message: \"Failed to encrypt the app storage backup.\" },\n \"622f\": { message: \"Invalid device state, recovery mode.\" },\n \"6642\": { message: \"Invalid backup state, backup already performed.\" },\n };\n\nexport class BackupStorageCommandError extends DeviceExchangeError<BackupStorageCommandErrorCodes> {\n constructor(args: CommandErrorArgs<BackupStorageCommandErrorCodes>) {\n super({ tag: \"BackupStorageCommandError\", ...args });\n }\n}\n\nexport type BackupStorageCommandResult = CommandResult<\n BackupStorageCommandResponse,\n BackupStorageCommandErrorCodes\n>;\n\nexport class BackupStorageCommand\n implements\n Command<BackupStorageCommandResponse, void, BackupStorageCommandErrorCodes>\n{\n readonly name = \"BackupStorage\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6b,\n p1: 0x00,\n p2: 0x00,\n };\n\n getApdu(): Apdu {\n return new ApduBuilder(this.header).build();\n }\n\n parseResponse(apduResponse: ApduResponse): BackupStorageCommandResult {\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, BACKUP_STORAGE_ERRORS)) {\n return CommandResultFactory({\n error: new BackupStorageCommandError({\n ...BACKUP_STORAGE_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n const appStorageDataChunk = parser.extractFieldByLength(\n parser.getUnparsedRemainingLength(),\n );\n\n if (appStorageDataChunk === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract app storage data chunk\",\n ),\n });\n }\n\n return CommandResultFactory({\n data: {\n chunkData: appStorageDataChunk,\n chunkSize: appStorageDataChunk.length,\n },\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,EAAA,yBAAAC,EAAA,8BAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAAuC,+BACvCC,EAGO,4CACPC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBAgBpD,MAAMX,EACX,CACE,KAAQ,CAAE,QAAS,2CAA4C,EAC/D,KAAQ,CAAE,QAAS,6BAA8B,EACjD,OAAQ,CAAE,QAAS,0CAA2C,EAC9D,OAAQ,CAAE,QAAS,6CAA8C,EACjE,OAAQ,CAAE,QAAS,2CAA4C,EAC/D,OAAQ,CAAE,QAAS,sCAAuC,EAC1D,KAAQ,CAAE,QAAS,iDAAkD,CACvE,EAEK,MAAME,UAAkC,qBAAoD,CACjG,YAAYU,EAAwD,CAClE,MAAM,CAAE,IAAK,4BAA6B,GAAGA,CAAK,CAAC,CACrD,CACF,CAOO,MAAMX,CAGb,CACW,KAAO,gBAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAEA,SAAgB,CACd,OAAO,IAAI,cAAY,KAAK,MAAM,EAAE,MAAM,CAC5C,CAEA,cAAcY,EAAwD,CACpE,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAE1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWf,CAAqB,KAC9C,wBAAqB,CAC1B,MAAO,IAAIE,EAA0B,CACnC,GAAGF,EAAsBe,CAAS,EAClC,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,MAAMG,EAAsBF,EAAO,qBACjCA,EAAO,2BAA2B,CACpC,EAEA,OAAIE,IAAwB,UACnB,wBAAqB,CAC1B,MAAO,IAAI,yBACT,0CACF,CACF,CAAC,KAGI,wBAAqB,CAC1B,KAAM,CACJ,UAAWA,EACX,UAAWA,EAAoB,MACjC,CACF,CAAC,CACH,CACF",
6
+ "names": ["BackupStorageCommand_exports", "__export", "BACKUP_STORAGE_ERRORS", "BackupStorageCommand", "BackupStorageCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_Errors", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "apduResponse", "parser", "errorCode", "appStorageDataChunk"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var s=require("../../command/model/CommandResult"),a=require("../../command/os/BackupStorageCommand"),r=require("../../device-session/ApduResponse");describe("BackupStorageCommand",()=>{describe("Name",()=>{it("name should be 'BackupStorage'",()=>{const e=new a.BackupStorageCommand().name;expect(e).toBe("BackupStorage")})}),describe("Command",()=>{it("should return the correct APDU for backing up app storage",()=>{const t=Uint8Array.from([224,107,0,0,0]),e=new a.BackupStorageCommand().getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return the app storage data chunk as a hex string",()=>{const t=Uint8Array.from([144,0]),e=new r.ApduResponse({statusCode:t,data:Uint8Array.from([171,205,239,1,35])}),o=new a.BackupStorageCommand().parseResponse(e);expect((0,s.isSuccessCommandResult)(o)).toBe(!0),expect(o).toEqual({data:{chunkData:Uint8Array.from([171,205,239,1,35]),chunkSize:5},status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"get info was not called first",statusCode:[81,35],expectedMessage:"Invalid context. Get info must be called."},{description:"AES key generation fails",statusCode:[84,25],expectedMessage:"Failed to generate AES key."},{description:"crypto operation fails",statusCode:[84,26],expectedMessage:"Internal error, crypto operation failed."},{description:"AES CMAC computation fails",statusCode:[84,27],expectedMessage:"Internal error, failed to compute AES CMAC."},{description:"encryption of backup fails",statusCode:[84,28],expectedMessage:"Failed to encrypt the app storage backup."},{description:"device is in recovery mode",statusCode:[98,47],expectedMessage:"Invalid device state, recovery mode."},{description:"backup was already performed",statusCode:[102,66],expectedMessage:"Invalid backup state, backup already performed."},{description:"error code is not specific to BackupStorageCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const o=new r.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),c=new a.BackupStorageCommand().parseResponse(o);expect((0,s.isSuccessCommandResult)(c)).toBe(!1),expect(c.error.message).toBe(e)})})});
2
+ //# sourceMappingURL=BackupStorageCommand.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/BackupStorageCommand.test.ts"],
4
+ "sourcesContent": ["import { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { BackupStorageCommand } from \"@api/command/os/BackupStorageCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"BackupStorageCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'BackupStorage'\", () => {\n // ARRANGE\n const command = new BackupStorageCommand();\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"BackupStorage\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for backing up app storage\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([0xe0, 0x6b, 0x00, 0x00, 0x00]);\n\n // ACT\n const apdu = new BackupStorageCommand().getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return the app storage data chunk as a hex string\", () => {\n // ARRANGE\n const statusCode = Uint8Array.from([0x90, 0x00]);\n const response = new ApduResponse({\n statusCode,\n data: Uint8Array.from([0xab, 0xcd, 0xef, 0x01, 0x23]),\n });\n\n // ACT\n const result = new BackupStorageCommand().parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: {\n chunkData: Uint8Array.from([0xab, 0xcd, 0xef, 0x01, 0x23]),\n chunkSize: 5,\n },\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"get info was not called first\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Invalid context. Get info must be called.\",\n },\n {\n description: \"AES key generation fails\",\n statusCode: [0x54, 0x19],\n expectedMessage: \"Failed to generate AES key.\",\n },\n {\n description: \"crypto operation fails\",\n statusCode: [0x54, 0x1a],\n expectedMessage: \"Internal error, crypto operation failed.\",\n },\n {\n description: \"AES CMAC computation fails\",\n statusCode: [0x54, 0x1b],\n expectedMessage: \"Internal error, failed to compute AES CMAC.\",\n },\n {\n description: \"encryption of backup fails\",\n statusCode: [0x54, 0x1c],\n expectedMessage: \"Failed to encrypt the app storage backup.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x62, 0x2f],\n expectedMessage: \"Invalid device state, recovery mode.\",\n },\n {\n description: \"backup was already performed\",\n statusCode: [0x66, 0x42],\n expectedMessage: \"Invalid backup state, backup already performed.\",\n },\n {\n description:\n \"error code is not specific to BackupStorageCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new BackupStorageCommand().parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAuC,4CACvCC,EAAqC,gDACrCC,EAA6B,4CAE7B,SAAS,uBAAwB,IAAM,CACrC,SAAS,OAAQ,IAAM,CACrB,GAAG,iCAAkC,IAAM,CAKzC,MAAMC,EAHU,IAAI,uBAAqB,EAGpB,KAGrB,OAAOA,CAAI,EAAE,KAAK,eAAe,CACnC,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,4DAA6D,IAAM,CAEpE,MAAMC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,EAAM,EAAM,CAAI,CAAC,EAG7DC,EAAO,IAAI,uBAAqB,EAAE,QAAQ,EAGhD,OAAOA,EAAK,WAAW,CAAC,EAAE,QAAQD,CAAY,CAChD,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,2DAA4D,IAAM,CAEnE,MAAME,EAAa,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACzCC,EAAW,IAAI,eAAa,CAChC,WAAAD,EACA,KAAM,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAM,EAAI,CAAC,CACtD,CAAC,EAGKE,EAAS,IAAI,uBAAqB,EAAE,cAAcD,CAAQ,EAGhE,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,OAAOA,CAAM,EAAE,QAAQ,CACrB,KAAM,CACJ,UAAW,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAM,EAAI,CAAC,EACzD,UAAW,CACb,EACA,OAAQ,SACV,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,KAAK,CACN,CACE,YAAa,gCACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YAAa,2BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,6BACnB,EACA,CACE,YAAa,yBACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,0CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,6CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,sCACnB,EACA,CACE,YAAa,+BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,iDACnB,EACA,CACE,YACE,oEACF,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,mBACnB,CACF,CAAC,EACC,wCACA,CAAC,CAAE,WAAAF,EAAY,gBAAAG,CAAgB,IAAM,CAEnC,MAAMF,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAKD,CAAU,EACtC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKE,EAAS,IAAI,uBAAqB,EAAE,cAAcD,CAAQ,EAGhE,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OAAQA,EAAuC,MAAM,OAAO,EAAE,KAC5DC,CACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["import_CommandResult", "import_BackupStorageCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "statusCode", "response", "result", "expectedMessage"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var y=(o,e)=>{for(var r in e)i(o,r,{get:e[r],enumerable:!0})},R=(o,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of E(e))!h.call(o,t)&&t!==r&&i(o,t,{get:()=>e[t],enumerable:!(n=G(e,t))||n.enumerable});return o};var v=o=>R(i({},"__esModule",{value:!0}),o);var b={};y(b,{GET_APP_STORAGE_INFO_ERRORS:()=>d,GetAppStorageInfoCommand:()=>w,GetAppStorageInfoCommandError:()=>x});module.exports=v(b);var S=require("../../apdu/utils/ApduBuilder"),l=require("../../apdu/utils/ApduParser"),s=require("../../command/Errors"),a=require("../../command/model/CommandResult"),A=require("../../command/utils/CommandErrors"),c=require("../../command/utils/CommandUtils"),u=require("../../command/utils/GlobalCommandError"),I=require("../../Error");const d={5123:{message:"Application not found."},"662f":{message:"Device is in recovery mode."},"670a":{message:"Invalid application name length, two chars minimum."}};class x extends I.DeviceExchangeError{constructor(e){super({tag:"GetAppStorageInfoCommandError",...e})}}class w{constructor(e){this.args=e}name="GetAppStorageInfo";header={cla:224,ins:106,p1:0,p2:0};getApdu(){const{appName:e}=this.args;return new S.ApduBuilder(this.header).addAsciiStringToData(e).build()}parseResponse(e){const r=new l.ApduParser(e);if(!c.CommandUtils.isSuccessResponse(e)){const p=r.encodeToHexaString(e.statusCode);return(0,A.isCommandErrorCode)(p,d)?(0,a.CommandResultFactory)({error:new x({...d[p],errorCode:p})}):(0,a.CommandResultFactory)({error:u.GlobalCommandErrorHandler.handle(e)})}const n=r.extract32BitUInt();if(n===void 0)return(0,a.CommandResultFactory)({error:new s.InvalidStatusWordError("Failed to extract app storage size")});let t="",g=!1,f=!1,C="";if(n!==0){const p=r.extract32BitUInt();if(p===void 0)return(0,a.CommandResultFactory)({error:new s.InvalidStatusWordError("Failed to extract app storage version")});t=p.toString(16);const m=r.extract16BitUInt();if(m===void 0)return(0,a.CommandResultFactory)({error:new s.InvalidStatusWordError("Failed to extract app storage properties")});g=(m&1)===1,f=(m&2)===2,C=r.encodeToHexaString(r.extractFieldByLength(32))}return(0,a.CommandResultFactory)({data:{storageSize:n,storageVersion:t,hasSettings:g,hasData:f,storageHash:C}})}}0&&(module.exports={GET_APP_STORAGE_INFO_ERRORS,GetAppStorageInfoCommand,GetAppStorageInfoCommandError});
2
+ //# sourceMappingURL=GetAppStorageInfoCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/GetAppStorageInfoCommand.ts"],
4
+ "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { isCommandErrorCode } from \"@api/command/utils/CommandErrors\";\nimport { type CommandErrors } from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type GetAppStorageInfoCommandArgs = {\n appName: string;\n};\n\nexport type GetAppStorageInfoCommandResponse = {\n storageSize: number;\n storageVersion: string;\n hasSettings: boolean;\n hasData: boolean;\n storageHash: string;\n};\n\nexport type GetAppStorageInfoCommandErrorCodes = \"5123\" | \"662f\" | \"670a\";\n\nexport const GET_APP_STORAGE_INFO_ERRORS: CommandErrors<GetAppStorageInfoCommandErrorCodes> =\n {\n \"5123\": { message: \"Application not found.\" },\n \"662f\": { message: \"Device is in recovery mode.\" },\n \"670a\": { message: \"Invalid application name length, two chars minimum.\" },\n };\n\nexport class GetAppStorageInfoCommandError extends DeviceExchangeError<GetAppStorageInfoCommandErrorCodes> {\n constructor(args: CommandErrorArgs<GetAppStorageInfoCommandErrorCodes>) {\n super({ tag: \"GetAppStorageInfoCommandError\", ...args });\n }\n}\n\nexport type GetAppStorageInfoCommandResult = CommandResult<\n GetAppStorageInfoCommandResponse,\n GetAppStorageInfoCommandErrorCodes\n>;\n\nexport class GetAppStorageInfoCommand\n implements\n Command<\n GetAppStorageInfoCommandResponse,\n GetAppStorageInfoCommandArgs,\n GetAppStorageInfoCommandErrorCodes\n >\n{\n readonly name = \"GetAppStorageInfo\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6a,\n p1: 0x00,\n p2: 0x00,\n };\n\n constructor(private readonly args: GetAppStorageInfoCommandArgs) {}\n\n getApdu(): Apdu {\n const { appName } = this.args;\n return new ApduBuilder(this.header).addAsciiStringToData(appName).build();\n }\n\n parseResponse(apduResponse: ApduResponse): GetAppStorageInfoCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, GET_APP_STORAGE_INFO_ERRORS)) {\n return CommandResultFactory({\n error: new GetAppStorageInfoCommandError({\n ...GET_APP_STORAGE_INFO_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n const appStorageSize = parser.extract32BitUInt();\n if (appStorageSize === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Failed to extract app storage size\"),\n });\n }\n\n let appStorageVersion = \"\";\n let hasAppStorageSettings = false;\n let hasAppStorageData = false;\n let hash = \"\";\n\n if (appStorageSize !== 0) {\n const appStorageVersionNumber = parser.extract32BitUInt();\n if (appStorageVersionNumber === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract app storage version\",\n ),\n });\n }\n appStorageVersion = appStorageVersionNumber.toString(16);\n /**\n * The properties byte is a bitfield with the following structure:\n * - Bit 0: hasSettings\n * - Bit 1: hasData\n */\n const appStorageProperties = parser.extract16BitUInt();\n if (appStorageProperties === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract app storage properties\",\n ),\n });\n }\n\n hasAppStorageSettings = (appStorageProperties & 1) === 1;\n hasAppStorageData = (appStorageProperties & 2) === 2;\n hash = parser.encodeToHexaString(parser.extractFieldByLength(0x20));\n }\n\n return CommandResultFactory({\n data: {\n storageSize: appStorageSize,\n storageVersion: appStorageVersion,\n hasSettings: hasAppStorageSettings,\n hasData: hasAppStorageData,\n storageHash: hash,\n },\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,6BAAAC,EAAA,kCAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAAuC,+BACvCC,EAGO,4CACPC,EAAmC,4CAEnCC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBAgBpD,MAAMX,EACX,CACE,KAAQ,CAAE,QAAS,wBAAyB,EAC5C,OAAQ,CAAE,QAAS,6BAA8B,EACjD,OAAQ,CAAE,QAAS,qDAAsD,CAC3E,EAEK,MAAME,UAAsC,qBAAwD,CACzG,YAAYU,EAA4D,CACtE,MAAM,CAAE,IAAK,gCAAiC,GAAGA,CAAK,CAAC,CACzD,CACF,CAOO,MAAMX,CAOb,CAUE,YAA6BW,EAAoC,CAApC,UAAAA,CAAqC,CATzD,KAAO,oBAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAIA,SAAgB,CACd,KAAM,CAAE,QAAAC,CAAQ,EAAI,KAAK,KACzB,OAAO,IAAI,cAAY,KAAK,MAAM,EAAE,qBAAqBA,CAAO,EAAE,MAAM,CAC1E,CAEA,cAAcC,EAA4D,CACxE,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAC1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWhB,CAA2B,KACpD,wBAAqB,CAC1B,MAAO,IAAIE,EAA8B,CACvC,GAAGF,EAA4BgB,CAAS,EACxC,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,MAAMG,EAAiBF,EAAO,iBAAiB,EAC/C,GAAIE,IAAmB,OACrB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,oCAAoC,CACxE,CAAC,EAGH,IAAIC,EAAoB,GACpBC,EAAwB,GACxBC,EAAoB,GACpBC,EAAO,GAEX,GAAIJ,IAAmB,EAAG,CACxB,MAAMK,EAA0BP,EAAO,iBAAiB,EACxD,GAAIO,IAA4B,OAC9B,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,uCACF,CACF,CAAC,EAEHJ,EAAoBI,EAAwB,SAAS,EAAE,EAMvD,MAAMC,EAAuBR,EAAO,iBAAiB,EACrD,GAAIQ,IAAyB,OAC3B,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,0CACF,CACF,CAAC,EAGHJ,GAAyBI,EAAuB,KAAO,EACvDH,GAAqBG,EAAuB,KAAO,EACnDF,EAAON,EAAO,mBAAmBA,EAAO,qBAAqB,EAAI,CAAC,CACpE,CAEA,SAAO,wBAAqB,CAC1B,KAAM,CACJ,YAAaE,EACb,eAAgBC,EAChB,YAAaC,EACb,QAASC,EACT,YAAaC,CACf,CACF,CAAC,CACH,CACF",
6
+ "names": ["GetAppStorageInfoCommand_exports", "__export", "GET_APP_STORAGE_INFO_ERRORS", "GetAppStorageInfoCommand", "GetAppStorageInfoCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_Errors", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "appName", "apduResponse", "parser", "errorCode", "appStorageSize", "appStorageVersion", "hasAppStorageSettings", "hasAppStorageData", "hash", "appStorageVersionNumber", "appStorageProperties"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=require("../../command/Errors"),s=require("../../command/model/CommandResult"),a=require("../../command/os/GetAppStorageInfoCommand"),n=require("../../device-session/ApduResponse");describe("GetAppStorageInfoCommand",()=>{describe("Name",()=>{it("name should be 'GetAppStorageInfo'",()=>{const e=new a.GetAppStorageInfoCommand({appName:"MyApp"}).name;expect(e).toBe("GetAppStorageInfo")})}),describe("Command",()=>{it("should return the correct APDU for getting the app storage info",()=>{const t=Uint8Array.from([224,106,0,0,5,77,121,65,112,112]),e=new a.GetAppStorageInfoCommand({appName:"MyApp"}).getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return correct app storage info when app storage size is not 0",()=>{const t=Uint8Array.from([144,0]),e=new n.ApduResponse({statusCode:t,data:Uint8Array.from([0,0,0,1,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1])}),r=new a.GetAppStorageInfoCommand({appName:"MyApp"}).parseResponse(e);expect((0,s.isSuccessCommandResult)(r)).toBe(!0),expect(r).toEqual({data:{storageSize:1,storageVersion:"1",hasSettings:!0,hasData:!0,storageHash:"0000000000000000000000000000000000000000000000000000000000000001"},status:"SUCCESS"})}),it("should return correct app storage info when app storage size is 0",()=>{const t=Uint8Array.from([144,0]),e=new n.ApduResponse({statusCode:t,data:Uint8Array.from([0,0,0,0])}),r=new a.GetAppStorageInfoCommand({appName:"MyApp"}).parseResponse(e);expect((0,s.isSuccessCommandResult)(r)).toBe(!0),expect(r).toEqual({data:{storageSize:0,storageVersion:"",hasSettings:!1,hasData:!1,storageHash:""},status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"application is not found",statusCode:[81,35],expectedMessage:"Application not found."},{description:"device is in recovery mode",statusCode:[102,47],expectedMessage:"Device is in recovery mode."},{description:"application name length is invalid",statusCode:[103,10],expectedMessage:"Invalid application name length, two chars minimum."},{description:"error code is not specific to GetAppStorageInfoCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const r=new n.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),o=new a.GetAppStorageInfoCommand({appName:"MyApp"}).parseResponse(r);expect((0,s.isSuccessCommandResult)(o)).toBe(!1),expect(o.error.message).toBe(e)}),it.each([{description:"app storage size extraction fails",data:new Uint8Array([]),expectedOriginalMessage:"Failed to extract app storage size"},{description:"app storage version extraction fails",data:Uint8Array.from([0,0,0,1]),expectedOriginalMessage:"Failed to extract app storage version"},{description:"app storage properties extraction fails",data:Uint8Array.from([0,0,0,1,0,0,0,1]),expectedOriginalMessage:"Failed to extract app storage properties"}])("should return error when $description",({data:t,expectedOriginalMessage:e})=>{const r=new n.ApduResponse({statusCode:Uint8Array.from([144,0]),data:t}),o=new a.GetAppStorageInfoCommand({appName:"MyApp"}).parseResponse(r);expect((0,s.isSuccessCommandResult)(o)).toBe(!1),expect(o.error).toBeInstanceOf(p.InvalidStatusWordError),expect(o.error.originalError?.message).toBe(e)})})});
2
+ //# sourceMappingURL=GetAppStorageInfoCommand.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/command/os/GetAppStorageInfoCommand.test.ts"],
4
+ "sourcesContent": ["import { InvalidStatusWordError } from \"@api/command/Errors\";\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { GetAppStorageInfoCommand } from \"@api/command/os/GetAppStorageInfoCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"GetAppStorageInfoCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'GetAppStorageInfo'\", () => {\n // ARRANGE\n const command = new GetAppStorageInfoCommand({ appName: \"MyApp\" });\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"GetAppStorageInfo\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for getting the app storage info\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([\n 0xe0, 0x6a, 0x00, 0x00, 0x05, 0x4d, 0x79, 0x41, 0x70, 0x70,\n ]);\n\n // ACT\n const apdu = new GetAppStorageInfoCommand({ appName: \"MyApp\" }).getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return correct app storage info when app storage size is not 0\", () => {\n // ARRANGE\n const statusCode = Uint8Array.from([0x90, 0x00]);\n const response = new ApduResponse({\n statusCode,\n data: Uint8Array.from([\n // appStorageSize (32-bit BE) = 1\n 0x00, 0x00, 0x00, 0x01,\n // appStorageVersion (32-bit BE) = 1\n 0x00, 0x00, 0x00, 0x01,\n // appStorageProperties (16-bit BE) = 0x0003 (bits 0 and 1 set)\n 0x00, 0x03,\n // appStorageHash (32 bytes)\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n ]),\n });\n\n // ACT\n const result = new GetAppStorageInfoCommand({\n appName: \"MyApp\",\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: {\n storageSize: 1,\n storageVersion: \"1\",\n hasSettings: true,\n hasData: true,\n storageHash:\n \"0000000000000000000000000000000000000000000000000000000000000001\",\n },\n status: \"SUCCESS\",\n });\n });\n\n it(\"should return correct app storage info when app storage size is 0\", () => {\n // ARRANGE\n const statusCode = Uint8Array.from([0x90, 0x00]);\n const response = new ApduResponse({\n statusCode,\n data: Uint8Array.from([\n // appStorageSize (32-bit BE) = 0\n 0x00, 0x00, 0x00, 0x00,\n ]),\n });\n\n // ACT\n const result = new GetAppStorageInfoCommand({\n appName: \"MyApp\",\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: {\n storageSize: 0,\n storageVersion: \"\",\n hasSettings: false,\n hasData: false,\n storageHash: \"\",\n },\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"application is not found\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Application not found.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x66, 0x2f],\n expectedMessage: \"Device is in recovery mode.\",\n },\n {\n description: \"application name length is invalid\",\n statusCode: [0x67, 0x0a],\n expectedMessage: \"Invalid application name length, two chars minimum.\",\n },\n {\n description:\n \"error code is not specific to GetAppStorageInfoCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new GetAppStorageInfoCommand({\n appName: \"MyApp\",\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n\n it.each([\n {\n description: \"app storage size extraction fails\",\n data: new Uint8Array([]),\n expectedOriginalMessage: \"Failed to extract app storage size\",\n },\n {\n description: \"app storage version extraction fails\",\n data: Uint8Array.from([0x00, 0x00, 0x00, 0x01]),\n expectedOriginalMessage: \"Failed to extract app storage version\",\n },\n {\n description: \"app storage properties extraction fails\",\n data: Uint8Array.from([0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01]),\n expectedOriginalMessage: \"Failed to extract app storage properties\",\n },\n ])(\n \"should return error when $description\",\n ({ data, expectedOriginalMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data,\n });\n\n // ACT\n const result = new GetAppStorageInfoCommand({\n appName: \"MyApp\",\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect(\n (result as unknown as { error: InvalidStatusWordError }).error,\n ).toBeInstanceOf(InvalidStatusWordError);\n expect(\n (result as unknown as { error: InvalidStatusWordError }).error\n .originalError?.message,\n ).toBe(expectedOriginalMessage);\n },\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_Errors", "import_CommandResult", "import_GetAppStorageInfoCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "statusCode", "response", "result", "expectedMessage", "data", "expectedOriginalMessage"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var m=(a,t)=>{for(var s in t)p(a,s,{get:t[s],enumerable:!0})},c=(a,t,s,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of T(t))!B.call(a,o)&&o!==s&&p(a,o,{get:()=>t[o],enumerable:!(e=R(t,o))||e.enumerable});return a};var S=a=>c(p({},"__esModule",{value:!0}),a);var y={};m(y,{BatteryStatusType:()=>i,ChargingMode:()=>d,GetBatteryStatusCommand:()=>x});module.exports=S(y);var E=require("../../apdu/utils/ApduBuilder"),A=require("../../apdu/utils/ApduParser"),u=require("../../command/Errors"),n=require("../../command/model/CommandResult"),i=(r=>(r[r.BATTERY_PERCENTAGE=0]="BATTERY_PERCENTAGE",r[r.BATTERY_VOLTAGE=1]="BATTERY_VOLTAGE",r[r.BATTERY_TEMPERATURE=2]="BATTERY_TEMPERATURE",r[r.BATTERY_CURRENT=3]="BATTERY_CURRENT",r[r.BATTERY_FLAGS=4]="BATTERY_FLAGS",r))(i||{}),d=(e=>(e[e.NONE=0]="NONE",e[e.USB=1]="USB",e[e.QI=2]="QI",e))(d||{});class x{name="getBatteryStatus";args;constructor(t){this.args=t}getApdu(){const t={cla:224,ins:16,p1:0,p2:this.args.statusType};return new E.ApduBuilder(t).build()}parseResponse(t){const s=new A.ApduParser(t);switch(this.args.statusType){case 0:{const e=s.extract8BitUInt();return e===void 0?(0,n.CommandResultFactory)({error:new u.InvalidBatteryDataError("Cannot parse APDU response")}):(0,n.CommandResultFactory)({data:e>100?-1:e})}case 1:{const e=s.extract16BitUInt();return e===void 0?(0,n.CommandResultFactory)({error:new u.InvalidBatteryDataError("Cannot parse APDU response")}):(0,n.CommandResultFactory)({data:e})}case 2:case 3:{const e=s.extract8BitUInt();return e===void 0?(0,n.CommandResultFactory)({error:new u.InvalidBatteryDataError("Cannot parse APDU response")}):(0,n.CommandResultFactory)({data:e<<24>>24})}case 4:{const e=s.extract32BitUInt();if(e===void 0)return(0,n.CommandResultFactory)({error:new u.InvalidBatteryDataError("Cannot parse APDU response")});const o=!!(e&8),r=!o&&!!(e&1);return(0,n.CommandResultFactory)({data:{charging:r?2:o?1:0,issueCharging:!!(e&16),issueTemperature:!!(e&32),issueBattery:!!(e&128)}})}default:return(0,n.CommandResultFactory)({error:new u.InvalidBatteryStatusTypeError("One or some case(s) not covered")})}}}0&&(module.exports={BatteryStatusType,ChargingMode,GetBatteryStatusCommand});
1
+ "use strict";var u=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var c=(a,e)=>{for(var n in e)u(a,n,{get:e[n],enumerable:!0})},g=(a,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of y(e))!S.call(a,t)&&t!==n&&u(a,t,{get:()=>e[t],enumerable:!(r=d(e,t))||r.enumerable});return a};var x=a=>g(u({},"__esModule",{value:!0}),a);var G={};c(G,{BatteryStatusType:()=>B,ChargingMode:()=>T,GetBatteryStatusCommand:()=>l});module.exports=x(G);var i=require("../../apdu/utils/ApduBuilder"),p=require("../../apdu/utils/ApduParser"),E=require("../../command/Errors"),o=require("../../command/model/CommandResult"),m=require("../../command/utils/CommandUtils"),R=require("../../command/utils/GlobalCommandError"),B=(s=>(s[s.BATTERY_PERCENTAGE=0]="BATTERY_PERCENTAGE",s[s.BATTERY_VOLTAGE=1]="BATTERY_VOLTAGE",s[s.BATTERY_TEMPERATURE=2]="BATTERY_TEMPERATURE",s[s.BATTERY_CURRENT=3]="BATTERY_CURRENT",s[s.BATTERY_FLAGS=4]="BATTERY_FLAGS",s))(B||{}),T=(r=>(r[r.NONE=0]="NONE",r[r.USB=1]="USB",r[r.QI=2]="QI",r))(T||{});class l{name="getBatteryStatus";args;constructor(e){this.args=e}getApdu(){const e={cla:224,ins:16,p1:0,p2:this.args.statusType};return new i.ApduBuilder(e).build()}parseResponse(e){if(!m.CommandUtils.isSuccessResponse(e))return(0,o.CommandResultFactory)({error:R.GlobalCommandErrorHandler.handle(e)});const n=new p.ApduParser(e),r=t=>(0,o.CommandResultFactory)({error:new E.InvalidResponseFormatError(t)});switch(this.args.statusType){case 0:{const t=n.extract8BitUInt();return t===void 0?r("getBatteryStatus: missing battery percentage in response"):(0,o.CommandResultFactory)({data:t>100?-1:t})}case 1:{const t=n.extract16BitUInt();return t===void 0?r("getBatteryStatus: missing battery voltage in response"):(0,o.CommandResultFactory)({data:t})}case 2:case 3:{const t=n.extract8BitUInt();return t===void 0?r(this.args.statusType===2?"getBatteryStatus: missing battery temperature in response":"getBatteryStatus: missing battery current in response"):(0,o.CommandResultFactory)({data:t<<24>>24})}case 4:{const t=n.extract32BitUInt();if(t===void 0)return r("getBatteryStatus: missing battery flags in response");const s=!!(t&8),A=!s&&!!(t&1);return(0,o.CommandResultFactory)({data:{charging:A?2:s?1:0,issueCharging:!!(t&16),issueTemperature:!!(t&32),issueBattery:!!(t&128)}})}default:return r("getBatteryStatus: unsupported battery status type")}}}0&&(module.exports={BatteryStatusType,ChargingMode,GetBatteryStatusCommand});
2
2
  //# sourceMappingURL=GetBatteryStatusCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/os/GetBatteryStatusCommand.ts"],
4
- "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n InvalidBatteryDataError,\n InvalidBatteryStatusTypeError,\n} from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\n\n/**\n * The type of battery information to retrieve.\n */\nexport enum BatteryStatusType {\n /**\n * The command response will be the battery percentage.\n */\n BATTERY_PERCENTAGE = 0x00,\n /**\n * The command response will be the battery voltage in mV.\n */\n BATTERY_VOLTAGE = 0x01,\n /**\n * The command response will be the battery temperature in degree celsius\n */\n BATTERY_TEMPERATURE = 0x02,\n /**\n * The command response will be the battery current in mA.\n */\n BATTERY_CURRENT = 0x03,\n /**\n * The command response will be the battery status (cf. `BatteryStatusFlags`)\n */\n BATTERY_FLAGS = 0x04,\n}\n\nexport enum ChargingMode {\n NONE = 0x00,\n USB = 0x01,\n QI = 0x02,\n}\n\nenum FlagMasks {\n CHARGING = 0x00000001,\n USB = 0x00000002,\n USB_POWERED = 0x00000008,\n BLE = 0x00000004,\n ISSUE_BATTERY = 0x00000080,\n ISSUE_CHARGING = 0x00000010,\n ISSUE_TEMPERATURE = 0x00000020,\n}\n\nexport type BatteryStatusFlags = {\n readonly charging: ChargingMode;\n readonly issueCharging: boolean;\n readonly issueTemperature: boolean;\n readonly issueBattery: boolean;\n};\n\n/**\n * The response type depends on the `statusType` parameter sent with the command,\n * cf. `BatteryStatusType`.\n */\nexport type GetBatteryStatusResponse = number | BatteryStatusFlags;\n\nexport type GetBatteryStatusArgs = {\n readonly statusType: BatteryStatusType;\n};\n\n/**\n * Command to get the battery status of the device.\n * The parameter statusType defines the type of information to retrieve, cf.\n * `BatteryStatusType`.\n *\n * WARNING: this command should not be sent within a logic of polling as it is\n * going to decrease the overall performance of the communication with the device.\n */\nexport class GetBatteryStatusCommand\n implements Command<GetBatteryStatusResponse, GetBatteryStatusArgs>\n{\n readonly name = \"getBatteryStatus\";\n readonly args: GetBatteryStatusArgs;\n\n constructor(args: GetBatteryStatusArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const getBatteryStatusArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x10,\n p1: 0x00,\n p2: this.args.statusType,\n };\n return new ApduBuilder(getBatteryStatusArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetBatteryStatusResponse> {\n const parser = new ApduParser(apduResponse);\n\n switch (this.args.statusType) {\n case BatteryStatusType.BATTERY_PERCENTAGE: {\n const percentage = parser.extract8BitUInt();\n if (percentage === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data: percentage > 100 ? -1 : percentage,\n });\n }\n case BatteryStatusType.BATTERY_VOLTAGE: {\n const data = parser.extract16BitUInt();\n if (data === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data,\n });\n }\n case BatteryStatusType.BATTERY_TEMPERATURE:\n case BatteryStatusType.BATTERY_CURRENT: {\n const data = parser.extract8BitUInt();\n if (data === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data: (data << 24) >> 24,\n });\n }\n case BatteryStatusType.BATTERY_FLAGS: {\n const flags = parser.extract32BitUInt();\n if (flags === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n const chargingUSB = !!(flags & FlagMasks.USB_POWERED);\n const chargingQi = !chargingUSB && !!(flags & FlagMasks.CHARGING);\n return CommandResultFactory({\n data: {\n charging: chargingQi\n ? ChargingMode.QI\n : chargingUSB\n ? ChargingMode.USB\n : ChargingMode.NONE,\n issueCharging: !!(flags & FlagMasks.ISSUE_CHARGING),\n issueTemperature: !!(flags & FlagMasks.ISSUE_TEMPERATURE),\n issueBattery: !!(flags & FlagMasks.ISSUE_BATTERY),\n },\n });\n }\n default:\n return CommandResultFactory({\n error: new InvalidBatteryStatusTypeError(\n \"One or some case(s) not covered\",\n ),\n });\n }\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,iBAAAC,EAAA,4BAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAAkD,uCAClDC,EAA2B,sCAE3BC,EAGO,+BACPC,EAGO,4CAMKP,OAIVA,IAAA,mBAAqB,GAArB,qBAIAA,IAAA,gBAAkB,GAAlB,kBAIAA,IAAA,oBAAsB,GAAtB,sBAIAA,IAAA,gBAAkB,GAAlB,kBAIAA,IAAA,cAAgB,GAAhB,gBApBUA,OAAA,IAuBAC,OACVA,IAAA,KAAO,GAAP,OACAA,IAAA,IAAM,GAAN,MACAA,IAAA,GAAK,GAAL,KAHUA,OAAA,IAyCL,MAAMO,CAEb,CACW,KAAO,mBACP,KAET,YAAYC,EAA4B,CACtC,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,MAAMC,EAAwC,CAC5C,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,KAAK,KAAK,UAChB,EACA,OAAO,IAAI,cAAYA,CAAoB,EAAE,MAAM,CACrD,CAEA,cACEC,EACyC,CACzC,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAE1C,OAAQ,KAAK,KAAK,WAAY,CAC5B,IAAK,GAAsC,CACzC,MAAME,EAAaD,EAAO,gBAAgB,EAC1C,OAAIC,IAAe,UACV,wBAAqB,CAC1B,MAAO,IAAI,0BAAwB,4BAA4B,CACjE,CAAC,KAEI,wBAAqB,CAC1B,KAAMA,EAAa,IAAM,GAAKA,CAChC,CAAC,CACH,CACA,IAAK,GAAmC,CACtC,MAAMC,EAAOF,EAAO,iBAAiB,EACrC,OAAIE,IAAS,UACJ,wBAAqB,CAC1B,MAAO,IAAI,0BAAwB,4BAA4B,CACjE,CAAC,KAEI,wBAAqB,CAC1B,KAAAA,CACF,CAAC,CACH,CACA,IAAK,GACL,IAAK,GAAmC,CACtC,MAAMA,EAAOF,EAAO,gBAAgB,EACpC,OAAIE,IAAS,UACJ,wBAAqB,CAC1B,MAAO,IAAI,0BAAwB,4BAA4B,CACjE,CAAC,KAEI,wBAAqB,CAC1B,KAAOA,GAAQ,IAAO,EACxB,CAAC,CACH,CACA,IAAK,GAAiC,CACpC,MAAMC,EAAQH,EAAO,iBAAiB,EACtC,GAAIG,IAAU,OACZ,SAAO,wBAAqB,CAC1B,MAAO,IAAI,0BAAwB,4BAA4B,CACjE,CAAC,EAEH,MAAMC,EAAc,CAAC,EAAED,EAAQ,GACzBE,EAAa,CAACD,GAAe,CAAC,EAAED,EAAQ,GAC9C,SAAO,wBAAqB,CAC1B,KAAM,CACJ,SAAUE,EACN,EACAD,EACE,EACA,EACN,cAAe,CAAC,EAAED,EAAQ,IAC1B,iBAAkB,CAAC,EAAEA,EAAQ,IAC7B,aAAc,CAAC,EAAEA,EAAQ,IAC3B,CACF,CAAC,CACH,CACA,QACE,SAAO,wBAAqB,CAC1B,MAAO,IAAI,gCACT,iCACF,CACF,CAAC,CACL,CACF,CACF",
6
- "names": ["GetBatteryStatusCommand_exports", "__export", "BatteryStatusType", "ChargingMode", "GetBatteryStatusCommand", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_Errors", "import_CommandResult", "GetBatteryStatusCommand", "args", "getBatteryStatusArgs", "apduResponse", "parser", "percentage", "data", "flags", "chargingUSB", "chargingQi"]
4
+ "sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidResponseFormatError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\n\n/**\n * The type of battery information to retrieve.\n */\nexport enum BatteryStatusType {\n /**\n * The command response will be the battery percentage.\n */\n BATTERY_PERCENTAGE = 0x00,\n /**\n * The command response will be the battery voltage in mV.\n */\n BATTERY_VOLTAGE = 0x01,\n /**\n * The command response will be the battery temperature in degree celsius\n */\n BATTERY_TEMPERATURE = 0x02,\n /**\n * The command response will be the battery current in mA.\n */\n BATTERY_CURRENT = 0x03,\n /**\n * The command response will be the battery status (cf. `BatteryStatusFlags`)\n */\n BATTERY_FLAGS = 0x04,\n}\n\nexport enum ChargingMode {\n NONE = 0x00,\n USB = 0x01,\n QI = 0x02,\n}\n\nenum FlagMasks {\n CHARGING = 0x00000001,\n USB = 0x00000002,\n USB_POWERED = 0x00000008,\n BLE = 0x00000004,\n ISSUE_BATTERY = 0x00000080,\n ISSUE_CHARGING = 0x00000010,\n ISSUE_TEMPERATURE = 0x00000020,\n}\n\nexport type BatteryStatusFlags = {\n readonly charging: ChargingMode;\n readonly issueCharging: boolean;\n readonly issueTemperature: boolean;\n readonly issueBattery: boolean;\n};\n\n/**\n * The response type depends on the `statusType` parameter sent with the command,\n * cf. `BatteryStatusType`.\n */\nexport type GetBatteryStatusResponse = number | BatteryStatusFlags;\n\nexport type GetBatteryStatusArgs = {\n readonly statusType: BatteryStatusType;\n};\n\n/**\n * Command to get the battery status of the device.\n * The parameter statusType defines the type of information to retrieve, cf.\n * `BatteryStatusType`.\n *\n * WARNING: this command should not be sent within a logic of polling as it is\n * going to decrease the overall performance of the communication with the device.\n */\nexport class GetBatteryStatusCommand\n implements Command<GetBatteryStatusResponse, GetBatteryStatusArgs>\n{\n readonly name = \"getBatteryStatus\";\n readonly args: GetBatteryStatusArgs;\n\n constructor(args: GetBatteryStatusArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const getBatteryStatusArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x10,\n p1: 0x00,\n p2: this.args.statusType,\n };\n return new ApduBuilder(getBatteryStatusArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetBatteryStatusResponse> {\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n const parser = new ApduParser(apduResponse);\n const invalidResponseFormat = (message: string) =>\n CommandResultFactory<GetBatteryStatusResponse>({\n error: new InvalidResponseFormatError(message),\n });\n\n switch (this.args.statusType) {\n case BatteryStatusType.BATTERY_PERCENTAGE: {\n const percentage = parser.extract8BitUInt();\n if (percentage === undefined) {\n return invalidResponseFormat(\n \"getBatteryStatus: missing battery percentage in response\",\n );\n }\n return CommandResultFactory({\n data: percentage > 100 ? -1 : percentage,\n });\n }\n case BatteryStatusType.BATTERY_VOLTAGE: {\n const data = parser.extract16BitUInt();\n if (data === undefined) {\n return invalidResponseFormat(\n \"getBatteryStatus: missing battery voltage in response\",\n );\n }\n return CommandResultFactory({\n data,\n });\n }\n case BatteryStatusType.BATTERY_TEMPERATURE:\n case BatteryStatusType.BATTERY_CURRENT: {\n const data = parser.extract8BitUInt();\n if (data === undefined) {\n return invalidResponseFormat(\n this.args.statusType === BatteryStatusType.BATTERY_TEMPERATURE\n ? \"getBatteryStatus: missing battery temperature in response\"\n : \"getBatteryStatus: missing battery current in response\",\n );\n }\n return CommandResultFactory({\n data: (data << 24) >> 24,\n });\n }\n case BatteryStatusType.BATTERY_FLAGS: {\n const flags = parser.extract32BitUInt();\n if (flags === undefined) {\n return invalidResponseFormat(\n \"getBatteryStatus: missing battery flags in response\",\n );\n }\n const chargingUSB = !!(flags & FlagMasks.USB_POWERED);\n const chargingQi = !chargingUSB && !!(flags & FlagMasks.CHARGING);\n return CommandResultFactory({\n data: {\n charging: chargingQi\n ? ChargingMode.QI\n : chargingUSB\n ? ChargingMode.USB\n : ChargingMode.NONE,\n issueCharging: !!(flags & FlagMasks.ISSUE_CHARGING),\n issueTemperature: !!(flags & FlagMasks.ISSUE_TEMPERATURE),\n issueBattery: !!(flags & FlagMasks.ISSUE_BATTERY),\n },\n });\n }\n default:\n return invalidResponseFormat(\n \"getBatteryStatus: unsupported battery status type\",\n );\n }\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,iBAAAC,EAAA,4BAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAAkD,uCAClDC,EAA2B,sCAE3BC,EAA2C,+BAC3CC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAM9BT,OAIVA,IAAA,mBAAqB,GAArB,qBAIAA,IAAA,gBAAkB,GAAlB,kBAIAA,IAAA,oBAAsB,GAAtB,sBAIAA,IAAA,gBAAkB,GAAlB,kBAIAA,IAAA,cAAgB,GAAhB,gBApBUA,OAAA,IAuBAC,OACVA,IAAA,KAAO,GAAP,OACAA,IAAA,IAAM,GAAN,MACAA,IAAA,GAAK,GAAL,KAHUA,OAAA,IAyCL,MAAMS,CAEb,CACW,KAAO,mBACP,KAET,YAAYC,EAA4B,CACtC,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,MAAMC,EAAwC,CAC5C,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,KAAK,KAAK,UAChB,EACA,OAAO,IAAI,cAAYA,CAAoB,EAAE,MAAM,CACrD,CAEA,cACEC,EACyC,CACzC,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAC9C,SAAO,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOA,CAAY,CACtD,CAAC,EAEH,MAAMC,EAAS,IAAI,aAAWD,CAAY,EACpCE,EAAyBC,MAC7B,wBAA+C,CAC7C,MAAO,IAAI,6BAA2BA,CAAO,CAC/C,CAAC,EAEH,OAAQ,KAAK,KAAK,WAAY,CAC5B,IAAK,GAAsC,CACzC,MAAMC,EAAaH,EAAO,gBAAgB,EAC1C,OAAIG,IAAe,OACVF,EACL,0DACF,KAEK,wBAAqB,CAC1B,KAAME,EAAa,IAAM,GAAKA,CAChC,CAAC,CACH,CACA,IAAK,GAAmC,CACtC,MAAMC,EAAOJ,EAAO,iBAAiB,EACrC,OAAII,IAAS,OACJH,EACL,uDACF,KAEK,wBAAqB,CAC1B,KAAAG,CACF,CAAC,CACH,CACA,IAAK,GACL,IAAK,GAAmC,CACtC,MAAMA,EAAOJ,EAAO,gBAAgB,EACpC,OAAII,IAAS,OACJH,EACL,KAAK,KAAK,aAAe,EACrB,4DACA,uDACN,KAEK,wBAAqB,CAC1B,KAAOG,GAAQ,IAAO,EACxB,CAAC,CACH,CACA,IAAK,GAAiC,CACpC,MAAMC,EAAQL,EAAO,iBAAiB,EACtC,GAAIK,IAAU,OACZ,OAAOJ,EACL,qDACF,EAEF,MAAMK,EAAc,CAAC,EAAED,EAAQ,GACzBE,EAAa,CAACD,GAAe,CAAC,EAAED,EAAQ,GAC9C,SAAO,wBAAqB,CAC1B,KAAM,CACJ,SAAUE,EACN,EACAD,EACE,EACA,EACN,cAAe,CAAC,EAAED,EAAQ,IAC1B,iBAAkB,CAAC,EAAEA,EAAQ,IAC7B,aAAc,CAAC,EAAEA,EAAQ,IAC3B,CACF,CAAC,CACH,CACA,QACE,OAAOJ,EACL,mDACF,CACJ,CACF,CACF",
6
+ "names": ["GetBatteryStatusCommand_exports", "__export", "BatteryStatusType", "ChargingMode", "GetBatteryStatusCommand", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_Errors", "import_CommandResult", "import_CommandUtils", "import_GlobalCommandError", "GetBatteryStatusCommand", "args", "getBatteryStatusArgs", "apduResponse", "parser", "invalidResponseFormat", "message", "percentage", "data", "flags", "chargingUSB", "chargingQi"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=require("../../command/model/CommandResult"),r=require("../../device-session/ApduResponse"),t=require("./GetBatteryStatusCommand");const p=Uint8Array.from([224,16,0,0,0]),u=Uint8Array.from([224,16,0,1,0]),R=Uint8Array.from([224,16,0,2,0]),d=Uint8Array.from([224,16,0,3,0]),i=Uint8Array.from([224,16,0,4,0]),n=Uint8Array.from([55,144,0]),o=Uint8Array.from([15,255,144,0]),T=Uint8Array.from([16,144,0]),c=Uint8Array.from([0,0,0,15,144,0]),A=Uint8Array.from([103,0]);describe("GetBatteryStatus",()=>{describe("name",()=>{it("should be 'getBatteryStatus'",()=>{const e=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE});expect(e.name).toBe("getBatteryStatus")})}),describe("getApdu",()=>{it("should return the GetBatteryStatus APDU",()=>{expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).getApdu().getRawApdu()).toStrictEqual(p),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_VOLTAGE}).getApdu().getRawApdu()).toStrictEqual(u),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_TEMPERATURE}).getApdu().getRawApdu()).toStrictEqual(R),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_CURRENT}).getApdu().getRawApdu()).toStrictEqual(d),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).getApdu().getRawApdu()).toStrictEqual(i)})}),describe("parseResponse",()=>{it("should parse the response when querying percentage",()=>{const e=new r.ApduResponse({statusCode:n.slice(-2),data:n.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:55}))}),it("should parse the response when querying voltage",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_VOLTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:4095}))}),it("should parse the response when querying temperature",()=>{const e=new r.ApduResponse({statusCode:T.slice(-2),data:T.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_TEMPERATURE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:16}))}),it("should parse the response when querying flags",()=>{const e=new r.ApduResponse({statusCode:c.slice(-2),data:c.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:{charging:t.ChargingMode.USB,issueCharging:!1,issueTemperature:!1,issueBattery:!1}}))}),it("should return an error if the response returned unsupported format",()=>{const e=new r.ApduResponse({statusCode:A.slice(-2),data:A.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect((0,a.isSuccessCommandResult)(s)).toBeFalsy()})})});
1
+ "use strict";var E=require("../../command/Errors"),a=require("../../command/model/CommandResult"),l=require("../../command/utils/GlobalCommandError"),r=require("../../device-session/ApduResponse"),t=require("./GetBatteryStatusCommand");const A=Uint8Array.from([224,16,0,0,0]),x=Uint8Array.from([224,16,0,1,0]),_=Uint8Array.from([224,16,0,2,0]),y=Uint8Array.from([224,16,0,3,0]),g=Uint8Array.from([224,16,0,4,0]),c=Uint8Array.from([55,144,0]),i=Uint8Array.from([101,144,0]),u=Uint8Array.from([15,255,144,0]),p=Uint8Array.from([16,144,0]),d=Uint8Array.from([255,144,0]),T=Uint8Array.from([0,0,0,15,144,0]),S=Uint8Array.from([0,0,0,1,144,0]),m=Uint8Array.from([0,0,0,0,144,0]),o=Uint8Array.from([144,0]),R=Uint8Array.from([103,0]);describe("GetBatteryStatus",()=>{describe("name",()=>{it("should be 'getBatteryStatus'",()=>{const e=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE});expect(e.name).toBe("getBatteryStatus")})}),describe("getApdu",()=>{it("should return the GetBatteryStatus APDU",()=>{expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).getApdu().getRawApdu()).toStrictEqual(A),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_VOLTAGE}).getApdu().getRawApdu()).toStrictEqual(x),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_TEMPERATURE}).getApdu().getRawApdu()).toStrictEqual(_),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_CURRENT}).getApdu().getRawApdu()).toStrictEqual(y),expect(new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).getApdu().getRawApdu()).toStrictEqual(g)})}),describe("parseResponse",()=>{it("should parse the response when querying percentage",()=>{const e=new r.ApduResponse({statusCode:c.slice(-2),data:c.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:55}))}),it("should return -1 when battery percentage is above 100",()=>{const e=new r.ApduResponse({statusCode:i.slice(-2),data:i.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:-1}))}),it("should parse the response when querying voltage",()=>{const e=new r.ApduResponse({statusCode:u.slice(-2),data:u.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_VOLTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:4095}))}),it("should parse the response when querying temperature",()=>{const e=new r.ApduResponse({statusCode:p.slice(-2),data:p.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_TEMPERATURE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:16}))}),it("should parse the response when querying current",()=>{const e=new r.ApduResponse({statusCode:d.slice(-2),data:d.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_CURRENT}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:-1}))}),it("should parse the response when querying flags",()=>{const e=new r.ApduResponse({statusCode:T.slice(-2),data:T.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:{charging:t.ChargingMode.USB,issueCharging:!1,issueTemperature:!1,issueBattery:!1}}))}),it("should parse the response when querying flags with Qi charging",()=>{const e=new r.ApduResponse({statusCode:S.slice(-2),data:S.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:{charging:t.ChargingMode.QI,issueCharging:!1,issueTemperature:!1,issueBattery:!1}}))}),it("should parse the response when querying flags with no charging",()=>{const e=new r.ApduResponse({statusCode:m.slice(-2),data:m.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({data:{charging:t.ChargingMode.NONE,issueCharging:!1,issueTemperature:!1,issueBattery:!1}}))}),it("should return a handled command error when the status word is not successful",()=>{const e=new r.ApduResponse({statusCode:R.slice(-2),data:R.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:l.GlobalCommandErrorHandler.handle(e)}))}),it("should return InvalidResponseFormatError when expected battery data is missing",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_PERCENTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: missing battery percentage in response")}))}),it("should return InvalidResponseFormatError when voltage data is missing",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_VOLTAGE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: missing battery voltage in response")}))}),it("should return InvalidResponseFormatError when temperature data is missing",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_TEMPERATURE}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: missing battery temperature in response")}))}),it("should return InvalidResponseFormatError when current data is missing",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_CURRENT}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: missing battery current in response")}))}),it("should return InvalidResponseFormatError when flags data is missing",()=>{const e=new r.ApduResponse({statusCode:o.slice(-2),data:o.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:t.BatteryStatusType.BATTERY_FLAGS}).parseResponse(e);expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: missing battery flags in response")}))}),it("should return InvalidResponseFormatError when status type is unsupported",()=>{const e=new r.ApduResponse({statusCode:c.slice(-2),data:c.slice(0,-2)}),s=new t.GetBatteryStatusCommand({statusType:255}).parseResponse(e);expect((0,a.isSuccessCommandResult)(s)).toBeFalsy(),expect(s).toStrictEqual((0,a.CommandResultFactory)({error:new E.InvalidResponseFormatError("getBatteryStatus: unsupported battery status type")}))})})});
2
2
  //# sourceMappingURL=GetBatteryStatusCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/os/GetBatteryStatusCommand.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport {\n BatteryStatusType,\n ChargingMode,\n GetBatteryStatusCommand,\n} from \"./GetBatteryStatusCommand\";\n\nconst GET_BATTERY_STATUS_APDU_PERCENTAGE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x00, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_VOLTAGE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x01, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_TEMPERATURE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x02, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_CURRENT = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x03, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_FLAGS = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x04, 0x00,\n]);\n\nconst PERCENTAGE_RESPONSE_HEX = Uint8Array.from([0x37, 0x90, 0x00]);\nconst VOLTAGE_RESPONSE_HEX = Uint8Array.from([0x0f, 0xff, 0x90, 0x00]);\nconst TEMPERATURE_RESPONSE_HEX = Uint8Array.from([0x10, 0x90, 0x00]);\nconst FLAGS_RESPONSE_HEX = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x0f, 0x90, 0x00,\n]);\nconst FAILED_RESPONSE_HEX = Uint8Array.from([0x67, 0x00]);\n\ndescribe(\"GetBatteryStatus\", () => {\n describe(\"name\", () => {\n it(\"should be 'getBatteryStatus'\", () => {\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n expect(command.name).toBe(\"getBatteryStatus\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the GetBatteryStatus APDU\", () => {\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_PERCENTAGE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_VOLTAGE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_VOLTAGE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_TEMPERATURE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_TEMPERATURE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_CURRENT,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_CURRENT);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_FLAGS);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should parse the response when querying percentage\", () => {\n const PERCENTAGE_RESPONSE = new ApduResponse({\n statusCode: PERCENTAGE_RESPONSE_HEX.slice(-2),\n data: PERCENTAGE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const parsed = command.parseResponse(PERCENTAGE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 55 }));\n });\n it(\"should parse the response when querying voltage\", () => {\n const VOLTAGE_RESPONSE = new ApduResponse({\n statusCode: VOLTAGE_RESPONSE_HEX.slice(-2),\n data: VOLTAGE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_VOLTAGE,\n });\n const parsed = command.parseResponse(VOLTAGE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 4095 }));\n });\n it(\"should parse the response when querying temperature\", () => {\n const TEMPERATURE_RESPONSE = new ApduResponse({\n statusCode: TEMPERATURE_RESPONSE_HEX.slice(-2),\n data: TEMPERATURE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_TEMPERATURE,\n });\n const parsed = command.parseResponse(TEMPERATURE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 16 }));\n });\n it(\"should parse the response when querying flags\", () => {\n const FLAGS_RESPONSE = new ApduResponse({\n statusCode: FLAGS_RESPONSE_HEX.slice(-2),\n data: FLAGS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n });\n const parsed = command.parseResponse(FLAGS_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n charging: ChargingMode.USB,\n issueCharging: false,\n issueTemperature: false,\n issueBattery: false,\n },\n }),\n );\n });\n it(\"should return an error if the response returned unsupported format\", () => {\n const FAILED_RESPONSE = new ApduResponse({\n statusCode: FAILED_RESPONSE_HEX.slice(-2),\n data: FAILED_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const result = command.parseResponse(FAILED_RESPONSE);\n expect(isSuccessCommandResult(result)).toBeFalsy();\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_CommandResult", "import_ApduResponse", "import_GetBatteryStatusCommand", "GET_BATTERY_STATUS_APDU_PERCENTAGE", "GET_BATTERY_STATUS_APDU_VOLTAGE", "GET_BATTERY_STATUS_APDU_TEMPERATURE", "GET_BATTERY_STATUS_APDU_CURRENT", "GET_BATTERY_STATUS_APDU_FLAGS", "PERCENTAGE_RESPONSE_HEX", "VOLTAGE_RESPONSE_HEX", "TEMPERATURE_RESPONSE_HEX", "FLAGS_RESPONSE_HEX", "FAILED_RESPONSE_HEX", "command", "PERCENTAGE_RESPONSE", "parsed", "VOLTAGE_RESPONSE", "TEMPERATURE_RESPONSE", "FLAGS_RESPONSE", "FAILED_RESPONSE", "result"]
4
+ "sourcesContent": ["import { InvalidResponseFormatError } from \"@api/command/Errors\";\nimport {\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport {\n BatteryStatusType,\n ChargingMode,\n GetBatteryStatusCommand,\n} from \"./GetBatteryStatusCommand\";\n\nconst GET_BATTERY_STATUS_APDU_PERCENTAGE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x00, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_VOLTAGE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x01, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_TEMPERATURE = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x02, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_CURRENT = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x03, 0x00,\n]);\nconst GET_BATTERY_STATUS_APDU_FLAGS = Uint8Array.from([\n 0xe0, 0x10, 0x00, 0x04, 0x00,\n]);\n\nconst PERCENTAGE_RESPONSE_HEX = Uint8Array.from([0x37, 0x90, 0x00]);\nconst PERCENTAGE_OVERFLOW_RESPONSE_HEX = Uint8Array.from([0x65, 0x90, 0x00]);\nconst VOLTAGE_RESPONSE_HEX = Uint8Array.from([0x0f, 0xff, 0x90, 0x00]);\nconst TEMPERATURE_RESPONSE_HEX = Uint8Array.from([0x10, 0x90, 0x00]);\nconst CURRENT_RESPONSE_HEX = Uint8Array.from([0xff, 0x90, 0x00]);\nconst FLAGS_RESPONSE_HEX = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x0f, 0x90, 0x00,\n]);\nconst QI_FLAGS_RESPONSE_HEX = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x01, 0x90, 0x00,\n]);\nconst NONE_FLAGS_RESPONSE_HEX = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x00, 0x90, 0x00,\n]);\nconst EMPTY_SUCCESS_RESPONSE_HEX = Uint8Array.from([0x90, 0x00]);\nconst FAILED_RESPONSE_HEX = Uint8Array.from([0x67, 0x00]);\n\ndescribe(\"GetBatteryStatus\", () => {\n describe(\"name\", () => {\n it(\"should be 'getBatteryStatus'\", () => {\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n expect(command.name).toBe(\"getBatteryStatus\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the GetBatteryStatus APDU\", () => {\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_PERCENTAGE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_VOLTAGE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_VOLTAGE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_TEMPERATURE,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_TEMPERATURE);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_CURRENT,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_CURRENT);\n expect(\n new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n })\n .getApdu()\n .getRawApdu(),\n ).toStrictEqual(GET_BATTERY_STATUS_APDU_FLAGS);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should parse the response when querying percentage\", () => {\n const PERCENTAGE_RESPONSE = new ApduResponse({\n statusCode: PERCENTAGE_RESPONSE_HEX.slice(-2),\n data: PERCENTAGE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const parsed = command.parseResponse(PERCENTAGE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 55 }));\n });\n it(\"should return -1 when battery percentage is above 100\", () => {\n const PERCENTAGE_OVERFLOW_RESPONSE = new ApduResponse({\n statusCode: PERCENTAGE_OVERFLOW_RESPONSE_HEX.slice(-2),\n data: PERCENTAGE_OVERFLOW_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const parsed = command.parseResponse(PERCENTAGE_OVERFLOW_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: -1 }));\n });\n it(\"should parse the response when querying voltage\", () => {\n const VOLTAGE_RESPONSE = new ApduResponse({\n statusCode: VOLTAGE_RESPONSE_HEX.slice(-2),\n data: VOLTAGE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_VOLTAGE,\n });\n const parsed = command.parseResponse(VOLTAGE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 4095 }));\n });\n it(\"should parse the response when querying temperature\", () => {\n const TEMPERATURE_RESPONSE = new ApduResponse({\n statusCode: TEMPERATURE_RESPONSE_HEX.slice(-2),\n data: TEMPERATURE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_TEMPERATURE,\n });\n const parsed = command.parseResponse(TEMPERATURE_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: 16 }));\n });\n it(\"should parse the response when querying current\", () => {\n const CURRENT_RESPONSE = new ApduResponse({\n statusCode: CURRENT_RESPONSE_HEX.slice(-2),\n data: CURRENT_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_CURRENT,\n });\n const parsed = command.parseResponse(CURRENT_RESPONSE);\n expect(parsed).toStrictEqual(CommandResultFactory({ data: -1 }));\n });\n it(\"should parse the response when querying flags\", () => {\n const FLAGS_RESPONSE = new ApduResponse({\n statusCode: FLAGS_RESPONSE_HEX.slice(-2),\n data: FLAGS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n });\n const parsed = command.parseResponse(FLAGS_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n charging: ChargingMode.USB,\n issueCharging: false,\n issueTemperature: false,\n issueBattery: false,\n },\n }),\n );\n });\n it(\"should parse the response when querying flags with Qi charging\", () => {\n const QI_FLAGS_RESPONSE = new ApduResponse({\n statusCode: QI_FLAGS_RESPONSE_HEX.slice(-2),\n data: QI_FLAGS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n });\n const parsed = command.parseResponse(QI_FLAGS_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n charging: ChargingMode.QI,\n issueCharging: false,\n issueTemperature: false,\n issueBattery: false,\n },\n }),\n );\n });\n it(\"should parse the response when querying flags with no charging\", () => {\n const NONE_FLAGS_RESPONSE = new ApduResponse({\n statusCode: NONE_FLAGS_RESPONSE_HEX.slice(-2),\n data: NONE_FLAGS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n });\n const parsed = command.parseResponse(NONE_FLAGS_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n charging: ChargingMode.NONE,\n issueCharging: false,\n issueTemperature: false,\n issueBattery: false,\n },\n }),\n );\n });\n it(\"should return a handled command error when the status word is not successful\", () => {\n const FAILED_RESPONSE = new ApduResponse({\n statusCode: FAILED_RESPONSE_HEX.slice(-2),\n data: FAILED_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const result = command.parseResponse(FAILED_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(FAILED_RESPONSE),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when expected battery data is missing\", () => {\n const EMPTY_SUCCESS_RESPONSE = new ApduResponse({\n statusCode: EMPTY_SUCCESS_RESPONSE_HEX.slice(-2),\n data: EMPTY_SUCCESS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_PERCENTAGE,\n });\n const result = command.parseResponse(EMPTY_SUCCESS_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: missing battery percentage in response\",\n ),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when voltage data is missing\", () => {\n const EMPTY_SUCCESS_RESPONSE = new ApduResponse({\n statusCode: EMPTY_SUCCESS_RESPONSE_HEX.slice(-2),\n data: EMPTY_SUCCESS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_VOLTAGE,\n });\n const result = command.parseResponse(EMPTY_SUCCESS_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: missing battery voltage in response\",\n ),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when temperature data is missing\", () => {\n const EMPTY_SUCCESS_RESPONSE = new ApduResponse({\n statusCode: EMPTY_SUCCESS_RESPONSE_HEX.slice(-2),\n data: EMPTY_SUCCESS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_TEMPERATURE,\n });\n const result = command.parseResponse(EMPTY_SUCCESS_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: missing battery temperature in response\",\n ),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when current data is missing\", () => {\n const EMPTY_SUCCESS_RESPONSE = new ApduResponse({\n statusCode: EMPTY_SUCCESS_RESPONSE_HEX.slice(-2),\n data: EMPTY_SUCCESS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_CURRENT,\n });\n const result = command.parseResponse(EMPTY_SUCCESS_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: missing battery current in response\",\n ),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when flags data is missing\", () => {\n const EMPTY_SUCCESS_RESPONSE = new ApduResponse({\n statusCode: EMPTY_SUCCESS_RESPONSE_HEX.slice(-2),\n data: EMPTY_SUCCESS_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: BatteryStatusType.BATTERY_FLAGS,\n });\n const result = command.parseResponse(EMPTY_SUCCESS_RESPONSE);\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: missing battery flags in response\",\n ),\n }),\n );\n });\n it(\"should return InvalidResponseFormatError when status type is unsupported\", () => {\n const PERCENTAGE_RESPONSE = new ApduResponse({\n statusCode: PERCENTAGE_RESPONSE_HEX.slice(-2),\n data: PERCENTAGE_RESPONSE_HEX.slice(0, -2),\n });\n const command = new GetBatteryStatusCommand({\n statusType: 0xff as BatteryStatusType,\n });\n const result = command.parseResponse(PERCENTAGE_RESPONSE);\n expect(isSuccessCommandResult(result)).toBeFalsy();\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getBatteryStatus: unsupported battery status type\",\n ),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_Errors", "import_CommandResult", "import_GlobalCommandError", "import_ApduResponse", "import_GetBatteryStatusCommand", "GET_BATTERY_STATUS_APDU_PERCENTAGE", "GET_BATTERY_STATUS_APDU_VOLTAGE", "GET_BATTERY_STATUS_APDU_TEMPERATURE", "GET_BATTERY_STATUS_APDU_CURRENT", "GET_BATTERY_STATUS_APDU_FLAGS", "PERCENTAGE_RESPONSE_HEX", "PERCENTAGE_OVERFLOW_RESPONSE_HEX", "VOLTAGE_RESPONSE_HEX", "TEMPERATURE_RESPONSE_HEX", "CURRENT_RESPONSE_HEX", "FLAGS_RESPONSE_HEX", "QI_FLAGS_RESPONSE_HEX", "NONE_FLAGS_RESPONSE_HEX", "EMPTY_SUCCESS_RESPONSE_HEX", "FAILED_RESPONSE_HEX", "command", "PERCENTAGE_RESPONSE", "parsed", "PERCENTAGE_OVERFLOW_RESPONSE", "VOLTAGE_RESPONSE", "TEMPERATURE_RESPONSE", "CURRENT_RESPONSE", "FLAGS_RESPONSE", "QI_FLAGS_RESPONSE", "NONE_FLAGS_RESPONSE", "FAILED_RESPONSE", "result", "EMPTY_SUCCESS_RESPONSE"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var d=require("purify-ts"),n=require("../../command/model/CommandResult"),p=require("../../../internal/device-session/data/DeviceSessionRefresherConst"),f=require("../../../internal/device-session/model/DeviceSession.stub"),v=require("../../../internal/device-session/service/DefaultDeviceSessionService"),l=require("../../../internal/logger-publisher/service/DefaultLoggerPublisherService"),g=require("../../../internal/manager-api/data/AxiosManagerApiDataSource"),D=require("../../../internal/manager-api/service/DefaultManagerApiService"),C=require("../../../internal/secure-channel/data/DefaultSecureChannelDataSource"),h=require("../../../internal/secure-channel/service/DefaultSecureChannelService"),i=require("./SendCommandUseCase");let o,t,a,c,m,u;const S="fakeSessionId";let r={name:"testCommand",getApdu:vi.fn(),parseResponse:vi.fn()};describe("SendCommandUseCase",()=>{beforeEach(()=>{o=new l.DefaultLoggerPublisherService([],"send-command-use-case"),t=new v.DefaultDeviceSessionService(()=>o),c=new g.AxiosManagerApiDataSource({}),a=new D.DefaultManagerApiService(c),u=new C.DefaultSecureChannelDataSource({}),m=new h.DefaultSecureChannelService(u),r={name:"testCommand",getApdu:vi.fn(),parseResponse:vi.fn()}}),afterEach(()=>{vi.restoreAllMocks()}),it("should send a command to a connected device",async()=>{const e=(0,f.deviceSessionStubBuilder)({},()=>o,a,m,p.DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS);t.addDeviceSession(e);const s=new i.SendCommandUseCase(t,()=>o);vi.spyOn(e,"sendCommand").mockResolvedValue({status:n.CommandResultStatus.Success,data:void 0});const y=await s.execute({sessionId:S,command:r});e.close(),expect(y).toStrictEqual({status:n.CommandResultStatus.Success,data:void 0})}),it("should throw an error if the session is not found",async()=>{const e=new i.SendCommandUseCase(t,()=>o);vi.spyOn(t,"getDeviceSessionById").mockReturnValue((0,d.Left)({_tag:"DeviceSessionNotFound"}));const s=e.execute({sessionId:S,command:r});await expect(s).rejects.toMatchObject({_tag:"DeviceSessionNotFound"})})});
1
+ "use strict";var d=require("purify-ts"),n=require("../../command/model/CommandResult"),p=require("../../../internal/device-session/data/DeviceSessionRefresherConst"),f=require("../../../internal/device-session/model/DeviceSession.stub"),v=require("../../../internal/device-session/service/DefaultDeviceSessionService"),l=require("../../../internal/logger-publisher/service/DefaultLoggerPublisherService"),g=require("../../../internal/manager-api/data/HttpManagerApiDataSource"),D=require("../../../internal/manager-api/service/DefaultManagerApiService"),C=require("../../../internal/secure-channel/data/DefaultSecureChannelDataSource"),h=require("../../../internal/secure-channel/service/DefaultSecureChannelService"),a=require("./SendCommandUseCase");let o,t,i,c,m,u;const S="fakeSessionId";let r={name:"testCommand",getApdu:vi.fn(),parseResponse:vi.fn()};describe("SendCommandUseCase",()=>{beforeEach(()=>{o=new l.DefaultLoggerPublisherService([],"send-command-use-case"),t=new v.DefaultDeviceSessionService(()=>o),c=new g.HttpManagerApiDataSource({}),i=new D.DefaultManagerApiService(c),u=new C.DefaultSecureChannelDataSource({}),m=new h.DefaultSecureChannelService(u),r={name:"testCommand",getApdu:vi.fn(),parseResponse:vi.fn()}}),afterEach(()=>{vi.restoreAllMocks()}),it("should send a command to a connected device",async()=>{const e=(0,f.deviceSessionStubBuilder)({},()=>o,i,m,p.DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS);t.addDeviceSession(e);const s=new a.SendCommandUseCase(t,()=>o);vi.spyOn(e,"sendCommand").mockResolvedValue({status:n.CommandResultStatus.Success,data:void 0});const y=await s.execute({sessionId:S,command:r});e.close(),expect(y).toStrictEqual({status:n.CommandResultStatus.Success,data:void 0})}),it("should throw an error if the session is not found",async()=>{const e=new a.SendCommandUseCase(t,()=>o);vi.spyOn(t,"getDeviceSessionById").mockReturnValue((0,d.Left)({_tag:"DeviceSessionNotFound"}));const s=e.execute({sessionId:S,command:r});await expect(s).rejects.toMatchObject({_tag:"DeviceSessionNotFound"})})});
2
2
  //# sourceMappingURL=SendCommandUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/use-case/SendCommandUseCase.test.ts"],
4
- "sourcesContent": ["import { Left } from \"purify-ts\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { CommandResultStatus } from \"@api/command/model/CommandResult\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { SendCommandUseCase } from \"./SendCommandUseCase\";\n\nlet logger: LoggerPublisherService;\nlet sessionService: DeviceSessionService;\nlet managerApi: ManagerApiService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet secureChannel: SecureChannelService;\nlet secureChannelDataSource: SecureChannelDataSource;\nconst fakeSessionId = \"fakeSessionId\";\nlet command: Command<{ status: string }, void, void> = {\n name: \"testCommand\",\n getApdu: vi.fn(),\n parseResponse: vi.fn(),\n};\n\ndescribe(\"SendCommandUseCase\", () => {\n beforeEach(() => {\n logger = new DefaultLoggerPublisherService([], \"send-command-use-case\");\n sessionService = new DefaultDeviceSessionService(() => logger);\n managerApiDataSource = new AxiosManagerApiDataSource({} as DmkConfig);\n managerApi = new DefaultManagerApiService(managerApiDataSource);\n secureChannelDataSource = new DefaultSecureChannelDataSource(\n {} as DmkConfig,\n );\n secureChannel = new DefaultSecureChannelService(secureChannelDataSource);\n command = {\n name: \"testCommand\",\n getApdu: vi.fn(),\n parseResponse: vi.fn(),\n };\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n it(\"should send a command to a connected device\", async () => {\n const deviceSession = deviceSessionStubBuilder(\n {},\n () => logger,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n sessionService.addDeviceSession(deviceSession);\n const useCase = new SendCommandUseCase(sessionService, () => logger);\n\n vi.spyOn(deviceSession, \"sendCommand\").mockResolvedValue({\n status: CommandResultStatus.Success,\n data: undefined,\n });\n\n const response = await useCase.execute<{ status: string }, void, void>({\n sessionId: fakeSessionId,\n command,\n });\n\n deviceSession.close();\n\n expect(response).toStrictEqual({\n status: CommandResultStatus.Success,\n data: undefined,\n });\n });\n\n it(\"should throw an error if the session is not found\", async () => {\n const useCase = new SendCommandUseCase(sessionService, () => logger);\n vi.spyOn(sessionService, \"getDeviceSessionById\").mockReturnValue(\n Left({ _tag: \"DeviceSessionNotFound\" }),\n );\n\n const res = useCase.execute<{ status: string }, void, void>({\n sessionId: fakeSessionId,\n command,\n });\n\n await expect(res).rejects.toMatchObject({ _tag: \"DeviceSessionNotFound\" });\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAqB,qBAGrBC,EAAoC,4CAGpCC,EAAyD,qEACzDC,EAAyC,6DACzCC,EAA4C,wEAE5CC,EAA8C,4EAC9CC,EAA0C,gEAE1CC,EAAyC,kEAEzCC,EAA+C,wEAE/CC,EAA4C,wEAG5CC,EAAmC,gCAEnC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAgB,gBACtB,IAAIC,EAAmD,CACrD,KAAM,cACN,QAAS,GAAG,GAAG,EACf,cAAe,GAAG,GAAG,CACvB,EAEA,SAAS,qBAAsB,IAAM,CACnC,WAAW,IAAM,CACfP,EAAS,IAAI,gCAA8B,CAAC,EAAG,uBAAuB,EACtEC,EAAiB,IAAI,8BAA4B,IAAMD,CAAM,EAC7DG,EAAuB,IAAI,4BAA0B,CAAC,CAAc,EACpED,EAAa,IAAI,2BAAyBC,CAAoB,EAC9DE,EAA0B,IAAI,iCAC5B,CAAC,CACH,EACAD,EAAgB,IAAI,8BAA4BC,CAAuB,EACvEE,EAAU,CACR,KAAM,cACN,QAAS,GAAG,GAAG,EACf,cAAe,GAAG,GAAG,CACvB,CACF,CAAC,EAED,UAAU,IAAM,CACd,GAAG,gBAAgB,CACrB,CAAC,EAED,GAAG,8CAA+C,SAAY,CAC5D,MAAMC,KAAgB,4BACpB,CAAC,EACD,IAAMR,EACNE,EACAE,EACA,0CACF,EACAH,EAAe,iBAAiBO,CAAa,EAC7C,MAAMC,EAAU,IAAI,qBAAmBR,EAAgB,IAAMD,CAAM,EAEnE,GAAG,MAAMQ,EAAe,aAAa,EAAE,kBAAkB,CACvD,OAAQ,sBAAoB,QAC5B,KAAM,MACR,CAAC,EAED,MAAME,EAAW,MAAMD,EAAQ,QAAwC,CACrE,UAAWH,EACX,QAAAC,CACF,CAAC,EAEDC,EAAc,MAAM,EAEpB,OAAOE,CAAQ,EAAE,cAAc,CAC7B,OAAQ,sBAAoB,QAC5B,KAAM,MACR,CAAC,CACH,CAAC,EAED,GAAG,oDAAqD,SAAY,CAClE,MAAMD,EAAU,IAAI,qBAAmBR,EAAgB,IAAMD,CAAM,EACnE,GAAG,MAAMC,EAAgB,sBAAsB,EAAE,mBAC/C,QAAK,CAAE,KAAM,uBAAwB,CAAC,CACxC,EAEA,MAAMU,EAAMF,EAAQ,QAAwC,CAC1D,UAAWH,EACX,QAAAC,CACF,CAAC,EAED,MAAM,OAAOI,CAAG,EAAE,QAAQ,cAAc,CAAE,KAAM,uBAAwB,CAAC,CAC3E,CAAC,CACH,CAAC",
6
- "names": ["import_purify_ts", "import_CommandResult", "import_DeviceSessionRefresherConst", "import_DeviceSession", "import_DefaultDeviceSessionService", "import_DefaultLoggerPublisherService", "import_AxiosManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "import_SendCommandUseCase", "logger", "sessionService", "managerApi", "managerApiDataSource", "secureChannel", "secureChannelDataSource", "fakeSessionId", "command", "deviceSession", "useCase", "response", "res"]
4
+ "sourcesContent": ["import { Left } from \"purify-ts\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { CommandResultStatus } from \"@api/command/model/CommandResult\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { HttpManagerApiDataSource } from \"@internal/manager-api/data/HttpManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { SendCommandUseCase } from \"./SendCommandUseCase\";\n\nlet logger: LoggerPublisherService;\nlet sessionService: DeviceSessionService;\nlet managerApi: ManagerApiService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet secureChannel: SecureChannelService;\nlet secureChannelDataSource: SecureChannelDataSource;\nconst fakeSessionId = \"fakeSessionId\";\nlet command: Command<{ status: string }, void, void> = {\n name: \"testCommand\",\n getApdu: vi.fn(),\n parseResponse: vi.fn(),\n};\n\ndescribe(\"SendCommandUseCase\", () => {\n beforeEach(() => {\n logger = new DefaultLoggerPublisherService([], \"send-command-use-case\");\n sessionService = new DefaultDeviceSessionService(() => logger);\n managerApiDataSource = new HttpManagerApiDataSource({} as DmkConfig);\n managerApi = new DefaultManagerApiService(managerApiDataSource);\n secureChannelDataSource = new DefaultSecureChannelDataSource(\n {} as DmkConfig,\n );\n secureChannel = new DefaultSecureChannelService(secureChannelDataSource);\n command = {\n name: \"testCommand\",\n getApdu: vi.fn(),\n parseResponse: vi.fn(),\n };\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n it(\"should send a command to a connected device\", async () => {\n const deviceSession = deviceSessionStubBuilder(\n {},\n () => logger,\n managerApi,\n secureChannel,\n DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n );\n sessionService.addDeviceSession(deviceSession);\n const useCase = new SendCommandUseCase(sessionService, () => logger);\n\n vi.spyOn(deviceSession, \"sendCommand\").mockResolvedValue({\n status: CommandResultStatus.Success,\n data: undefined,\n });\n\n const response = await useCase.execute<{ status: string }, void, void>({\n sessionId: fakeSessionId,\n command,\n });\n\n deviceSession.close();\n\n expect(response).toStrictEqual({\n status: CommandResultStatus.Success,\n data: undefined,\n });\n });\n\n it(\"should throw an error if the session is not found\", async () => {\n const useCase = new SendCommandUseCase(sessionService, () => logger);\n vi.spyOn(sessionService, \"getDeviceSessionById\").mockReturnValue(\n Left({ _tag: \"DeviceSessionNotFound\" }),\n );\n\n const res = useCase.execute<{ status: string }, void, void>({\n sessionId: fakeSessionId,\n command,\n });\n\n await expect(res).rejects.toMatchObject({ _tag: \"DeviceSessionNotFound\" });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAqB,qBAGrBC,EAAoC,4CAGpCC,EAAyD,qEACzDC,EAAyC,6DACzCC,EAA4C,wEAE5CC,EAA8C,4EAC9CC,EAAyC,+DAEzCC,EAAyC,kEAEzCC,EAA+C,wEAE/CC,EAA4C,wEAG5CC,EAAmC,gCAEnC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAgB,gBACtB,IAAIC,EAAmD,CACrD,KAAM,cACN,QAAS,GAAG,GAAG,EACf,cAAe,GAAG,GAAG,CACvB,EAEA,SAAS,qBAAsB,IAAM,CACnC,WAAW,IAAM,CACfP,EAAS,IAAI,gCAA8B,CAAC,EAAG,uBAAuB,EACtEC,EAAiB,IAAI,8BAA4B,IAAMD,CAAM,EAC7DG,EAAuB,IAAI,2BAAyB,CAAC,CAAc,EACnED,EAAa,IAAI,2BAAyBC,CAAoB,EAC9DE,EAA0B,IAAI,iCAC5B,CAAC,CACH,EACAD,EAAgB,IAAI,8BAA4BC,CAAuB,EACvEE,EAAU,CACR,KAAM,cACN,QAAS,GAAG,GAAG,EACf,cAAe,GAAG,GAAG,CACvB,CACF,CAAC,EAED,UAAU,IAAM,CACd,GAAG,gBAAgB,CACrB,CAAC,EAED,GAAG,8CAA+C,SAAY,CAC5D,MAAMC,KAAgB,4BACpB,CAAC,EACD,IAAMR,EACNE,EACAE,EACA,0CACF,EACAH,EAAe,iBAAiBO,CAAa,EAC7C,MAAMC,EAAU,IAAI,qBAAmBR,EAAgB,IAAMD,CAAM,EAEnE,GAAG,MAAMQ,EAAe,aAAa,EAAE,kBAAkB,CACvD,OAAQ,sBAAoB,QAC5B,KAAM,MACR,CAAC,EAED,MAAME,EAAW,MAAMD,EAAQ,QAAwC,CACrE,UAAWH,EACX,QAAAC,CACF,CAAC,EAEDC,EAAc,MAAM,EAEpB,OAAOE,CAAQ,EAAE,cAAc,CAC7B,OAAQ,sBAAoB,QAC5B,KAAM,MACR,CAAC,CACH,CAAC,EAED,GAAG,oDAAqD,SAAY,CAClE,MAAMD,EAAU,IAAI,qBAAmBR,EAAgB,IAAMD,CAAM,EACnE,GAAG,MAAMC,EAAgB,sBAAsB,EAAE,mBAC/C,QAAK,CAAE,KAAM,uBAAwB,CAAC,CACxC,EAEA,MAAMU,EAAMF,EAAQ,QAAwC,CAC1D,UAAWH,EACX,QAAAC,CACF,CAAC,EAED,MAAM,OAAOI,CAAG,EAAE,QAAQ,cAAc,CAAE,KAAM,uBAAwB,CAAC,CAC3E,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_CommandResult", "import_DeviceSessionRefresherConst", "import_DeviceSession", "import_DefaultDeviceSessionService", "import_DefaultLoggerPublisherService", "import_HttpManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "import_SendCommandUseCase", "logger", "sessionService", "managerApi", "managerApiDataSource", "secureChannel", "secureChannelDataSource", "fakeSessionId", "command", "deviceSession", "useCase", "response", "res"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var m=(r,t)=>{for(var s in t)i(r,s,{get:t[s],enumerable:!0})},d=(r,t,s,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of I(t))!C.call(r,n)&&n!==s&&i(r,n,{get:()=>t[n],enumerable:!(e=T(t,n))||e.enumerable});return r};var S=r=>d(i({},"__esModule",{value:!0}),r);var E={};m(E,{CallTaskInAppDeviceAction:()=>D});module.exports=S(E);var o=require("purify-ts"),a=require("xstate"),c=require("../../../command/model/CommandResult"),l=require("../../../device-action/model/UserInteractionRequired"),u=require("../../../device-action/os/Errors"),k=require("../../../device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),A=require("../../../device-action/xstate-utils/XStateDeviceAction"),p=require("./CallTaskInAppDeviceActionTypes");class D extends A.XStateDeviceAction{makeStateMachine(t){const{callTask:s}=this.extractDependencies(t);return(0,a.setup)({types:{input:{},context:{},output:{}},actors:{callTask:(0,a.fromPromise)(s),openAppStateMachine:new k.OpenAppDeviceAction({input:{appName:this.input.appName}}).makeStateMachine(t)},guards:{skipOpenApp:()=>this.input.skipOpenApp,noInternalError:({context:e})=>e._internalState.error===null},actions:{assignErrorFromEvent:(0,a.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"CallTaskInAppDeviceAction",initial:"InitialState",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:l.UserInteractionRequired.None,step:p.callTaskInAppDAStateStep.OPEN_APP},_internalState:{taskResponse:null,error:null}}),states:{InitialState:{always:[{target:"CallTask",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:this.input.appName},src:"openAppStateMachine",onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:n=>({...e.context._internalState,error:n})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"CallTask",guard:"noInternalError"},"Error"]},CallTask:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:this.input.requiredUserInteraction,step:p.callTaskInAppDAStateStep.CALL_TASK}}),exit:(0,a.assign)({intermediateValue:{requiredUserInteraction:l.UserInteractionRequired.None,step:p.callTaskInAppDAStateStep.CALL_TASK}}),invoke:{id:"callTask",src:"callTask",input:e=>e.context.input.task,onDone:{target:"CallTaskResultCheck",actions:[(0,a.assign)({_internalState:({event:e,context:n})=>(0,c.isSuccessCommandResult)(e.output)?{...n._internalState,taskResponse:e.output.data}:{...n._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CallTaskResultCheck:{always:[{target:"Success",guard:"noInternalError"},"Error"]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.taskResponse?(0,o.Right)(e._internalState.taskResponse):(0,o.Left)(e._internalState.error||new u.UnknownDAError("No error in final state"))})}extractDependencies(t){return{callTask:s=>s.input(t)}}}0&&(module.exports={CallTaskInAppDeviceAction});
1
+ "use strict";var i=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var D=(n,t)=>{for(var s in t)i(n,s,{get:t[s],enumerable:!0})},S=(n,t,s,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of I(t))!m.call(n,r)&&r!==s&&i(n,r,{get:()=>t[r],enumerable:!(e=T(t,r))||e.enumerable});return n};var C=n=>S(i({},"__esModule",{value:!0}),n);var R={};D(R,{CallTaskInAppDeviceAction:()=>E});module.exports=C(R);var o=require("purify-ts"),a=require("xstate"),l=require("../../../device-action/model/UserInteractionRequired"),k=require("../../../device-action/os/Errors"),c=require("../../../device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),u=require("../../../device-action/xstate-utils/XStateDeviceAction"),A=require("../../../model/DmkResult"),p=require("./CallTaskInAppDeviceActionTypes");class E extends u.XStateDeviceAction{makeStateMachine(t){const{callTask:s}=this.extractDependencies(t);return(0,a.setup)({types:{input:{},context:{},output:{}},actors:{callTask:(0,a.fromPromise)(s),openAppStateMachine:new c.OpenAppDeviceAction({input:{appName:this.input.appName}}).makeStateMachine(t)},guards:{skipOpenApp:()=>this.input.skipOpenApp,noInternalError:({context:e})=>e._internalState.error===null},actions:{assignErrorFromEvent:(0,a.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"CallTaskInAppDeviceAction",initial:"InitialState",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:l.UserInteractionRequired.None,step:p.callTaskInAppDAStateStep.OPEN_APP},_internalState:{taskResponse:null,error:null}}),states:{InitialState:{always:[{target:"CallTask",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:this.input.appName},src:"openAppStateMachine",onSnapshot:{actions:(0,a.assign)({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:(0,a.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:r=>({...e.context._internalState,error:r})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"CallTask",guard:"noInternalError"},"Error"]},CallTask:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:this.input.requiredUserInteraction,step:p.callTaskInAppDAStateStep.CALL_TASK}}),exit:(0,a.assign)({intermediateValue:{requiredUserInteraction:l.UserInteractionRequired.None,step:p.callTaskInAppDAStateStep.CALL_TASK}}),invoke:{id:"callTask",src:"callTask",input:e=>e.context.input.task,onDone:{target:"CallTaskResultCheck",actions:[(0,a.assign)({_internalState:({event:e,context:r})=>(0,A.isSuccessDmkResult)(e.output)?{...r._internalState,taskResponse:e.output.data}:{...r._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CallTaskResultCheck:{always:[{target:"Success",guard:"noInternalError"},"Error"]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.taskResponse?(0,o.Right)(e._internalState.taskResponse):(0,o.Left)(e._internalState.error||new k.UnknownDAError("No error in final state"))})}extractDependencies(t){return{callTask:s=>s.input(t)}}}0&&(module.exports={CallTaskInAppDeviceAction});
2
2
  //# sourceMappingURL=CallTaskInAppDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type CommandResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAInput,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAInternalState,\n type CallTaskInAppDAOutput,\n callTaskInAppDAStateStep,\n} from \"./CallTaskInAppDeviceActionTypes\";\n\n/**\n * Tries to open an app on the device, and if it is successful, calls a task\n * in the app.\n * The output will be the result of the task.\n *\n * ```ts\n * input: {\n * appName: string;\n * task: (internalApi: InternalApi) => Promise<CommandResult<TaskResponse, TaskErrorCodes>>;\n * requiredUserInteraction: UserInteraction;\n * }\n * ```\n *\n * Example of usage:\n *\n * ```ts\n * const deviceAction = new CallTaskInAppDeviceAction({\n * input: {\n * appName: \"MyApp\",\n * task: async (internalApi: InternalApi) => internalApi.sendCommand(new MyAppSpecificCommand()),\n * requiredUserInteraction: UserInteractionRequired.None,\n * },\n * });\n * dmk.executeDeviceAction({ sessionId: \"mySessionId\", deviceAction });\n * ```\n */\nexport class CallTaskInAppDeviceAction<\n TaskResponse,\n TaskErrorCodes,\n UserInteraction extends UserInteractionRequired,\n> extends XStateDeviceAction<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskErrorCodes, UserInteraction>,\n CallTaskInAppDAError<TaskErrorCodes>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes>\n> {\n makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskErrorCodes, UserInteraction>,\n CallTaskInAppDAError<TaskErrorCodes>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes>\n > {\n type types = StateMachineTypes<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskErrorCodes, UserInteraction>,\n CallTaskInAppDAError<TaskErrorCodes>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes>\n >;\n\n const { callTask } = this.extractDependencies(internalAPI);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n callTask: fromPromise(callTask),\n openAppStateMachine: new OpenAppDeviceAction({\n input: {\n appName: this.input.appName,\n },\n }).makeStateMachine(internalAPI),\n },\n guards: {\n skipOpenApp: () => this.input.skipOpenApp,\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n id: \"CallTaskInAppDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input: input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: callTaskInAppDAStateStep.OPEN_APP,\n },\n _internalState: {\n taskResponse: null,\n error: null,\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"CallTask\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: this.input.appName,\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<\n CallTaskInAppDAInternalState<TaskResponse, TaskErrorCodes>\n >({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"CallTask\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n CallTask: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: this.input.requiredUserInteraction,\n step: callTaskInAppDAStateStep.CALL_TASK,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: callTaskInAppDAStateStep.CALL_TASK,\n },\n }),\n invoke: {\n id: \"callTask\",\n src: \"callTask\",\n input: (_: { context: types[\"context\"] }) => _.context.input.task,\n onDone: {\n target: \"CallTaskResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n taskResponse: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CallTaskResultCheck: {\n always: [\n {\n target: \"Success\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.taskResponse\n ? Right(context._internalState.taskResponse)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n return {\n callTask: (_: {\n input: (\n internalApi: InternalApi,\n ) => Promise<CommandResult<TaskResponse, TaskErrorCodes>>;\n }): Promise<CommandResult<TaskResponse, TaskErrorCodes>> =>\n _.input(internalApi),\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["CallTaskInAppDeviceAction_exports", "__export", "CallTaskInAppDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_CommandResult", "import_UserInteractionRequired", "import_Errors", "import_OpenAppDeviceAction", "import_XStateDeviceAction", "import_CallTaskInAppDeviceActionTypes", "internalAPI", "callTask", "context", "_", "input", "error", "event", "internalApi"]
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport { type DmkError } from \"@api/Error\";\nimport { type DmkResult, isSuccessDmkResult } from \"@api/model/DmkResult\";\n\nimport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAInput,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAInternalState,\n type CallTaskInAppDAOutput,\n callTaskInAppDAStateStep,\n} from \"./CallTaskInAppDeviceActionTypes\";\n\n/**\n * Tries to open an app on the device, and if it is successful, calls a task\n * in the app.\n * The output will be the result of the task.\n *\n * ```ts\n * input: {\n * appName: string;\n * task: (\n * internalApi: InternalApi,\n * ) => Promise<DmkResult<TaskResponse, TaskError>>;\n * requiredUserInteraction: UserInteraction;\n * }\n * ```\n *\n * Example of usage:\n *\n * ```ts\n * const deviceAction = new CallTaskInAppDeviceAction({\n * input: {\n * appName: \"MyApp\",\n * task: async (internalApi: InternalApi) => internalApi.sendCommand(new MyAppSpecificCommand()),\n * requiredUserInteraction: UserInteractionRequired.None,\n * },\n * });\n * dmk.executeDeviceAction({ sessionId: \"mySessionId\", deviceAction });\n * ```\n */\nexport class CallTaskInAppDeviceAction<\n TaskResponse,\n TaskError extends DmkError,\n UserInteraction extends UserInteractionRequired,\n> extends XStateDeviceAction<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskError, UserInteraction>,\n CallTaskInAppDAError<TaskError>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskError>\n> {\n makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskError, UserInteraction>,\n CallTaskInAppDAError<TaskError>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskError>\n > {\n type types = StateMachineTypes<\n CallTaskInAppDAOutput<TaskResponse>,\n CallTaskInAppDAInput<TaskResponse, TaskError, UserInteraction>,\n CallTaskInAppDAError<TaskError>,\n CallTaskInAppDAIntermediateValue<UserInteraction>,\n CallTaskInAppDAInternalState<TaskResponse, TaskError>\n >;\n\n const { callTask } = this.extractDependencies(internalAPI);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n callTask: fromPromise(callTask),\n openAppStateMachine: new OpenAppDeviceAction({\n input: {\n appName: this.input.appName,\n },\n }).makeStateMachine(internalAPI),\n },\n guards: {\n skipOpenApp: () => this.input.skipOpenApp,\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n id: \"CallTaskInAppDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input: input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: callTaskInAppDAStateStep.OPEN_APP,\n },\n _internalState: {\n taskResponse: null,\n error: null,\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"CallTask\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: this.input.appName,\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<\n CallTaskInAppDAInternalState<TaskResponse, TaskError>\n >({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"CallTask\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n CallTask: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: this.input.requiredUserInteraction,\n step: callTaskInAppDAStateStep.CALL_TASK,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: callTaskInAppDAStateStep.CALL_TASK,\n },\n }),\n invoke: {\n id: \"callTask\",\n src: \"callTask\",\n input: (_: { context: types[\"context\"] }) => _.context.input.task,\n onDone: {\n target: \"CallTaskResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessDmkResult(event.output)) {\n return {\n ...context._internalState,\n taskResponse: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CallTaskResultCheck: {\n always: [\n {\n target: \"Success\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.taskResponse\n ? Right(context._internalState.taskResponse)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n return {\n callTask: (_: {\n input: (\n internalApi: InternalApi,\n ) => Promise<DmkResult<TaskResponse, TaskError>>;\n }): Promise<DmkResult<TaskResponse, TaskError>> => _.input(internalApi),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CallTaskInAppDeviceAction_exports", "__export", "CallTaskInAppDeviceAction", "__toCommonJS", "import_purify_ts", "import_xstate", "import_UserInteractionRequired", "import_Errors", "import_OpenAppDeviceAction", "import_XStateDeviceAction", "import_DmkResult", "import_CallTaskInAppDeviceActionTypes", "internalAPI", "callTask", "context", "_", "input", "error", "event", "internalApi"]
7
7
  }