@ledgerhq/device-management-kit 1.2.0 → 1.4.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 (317) hide show
  1. package/lib/cjs/package.json +1 -2
  2. package/lib/cjs/src/api/Error.js +1 -1
  3. package/lib/cjs/src/api/Error.js.map +3 -3
  4. package/lib/cjs/src/api/command/Errors.js +1 -1
  5. package/lib/cjs/src/api/command/Errors.js.map +3 -3
  6. package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
  7. package/lib/cjs/src/api/command/model/CommandResult.js.map +3 -3
  8. package/lib/cjs/src/api/command/os/BackupStorageCommand.js +2 -0
  9. package/lib/cjs/src/api/command/os/BackupStorageCommand.js.map +7 -0
  10. package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js +2 -0
  11. package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js.map +7 -0
  12. package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.js +2 -0
  13. package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.js.map +7 -0
  14. package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.test.js +2 -0
  15. package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.test.js.map +7 -0
  16. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.js +2 -0
  17. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.js.map +7 -0
  18. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.test.js +2 -0
  19. package/lib/cjs/src/api/command/os/GetAppStorageInfoCommand.test.js.map +7 -0
  20. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  21. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +3 -3
  22. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  23. package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  24. package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
  25. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  26. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  27. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  28. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  29. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  30. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  31. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +2 -2
  32. package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
  33. package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
  34. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  35. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +3 -3
  36. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  37. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  38. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js +1 -1
  39. package/lib/cjs/src/api/device-action/os/GetDeviceMetadata/types.js.map +2 -2
  40. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js +2 -0
  41. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js.map +7 -0
  42. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js +2 -0
  43. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js.map +7 -0
  44. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/types.js +2 -0
  45. package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/types.js.map +7 -0
  46. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js +2 -0
  47. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js.map +7 -0
  48. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js +2 -0
  49. package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js.map +7 -0
  50. package/lib/cjs/src/api/device-action/task/Errors.js +2 -0
  51. package/lib/cjs/src/api/device-action/task/Errors.js.map +7 -0
  52. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js +1 -1
  53. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.js.map +3 -3
  54. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js +1 -1
  55. package/lib/cjs/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +3 -3
  56. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  57. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  58. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  59. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  60. package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.js +2 -0
  61. package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.js.map +7 -0
  62. package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.test.js +9 -0
  63. package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.test.js.map +7 -0
  64. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  65. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  66. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  67. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  68. package/lib/cjs/src/api/index.js +1 -1
  69. package/lib/cjs/src/api/index.js.map +3 -3
  70. package/lib/cjs/src/api/model/DmkResult.js +2 -0
  71. package/lib/cjs/src/api/model/DmkResult.js.map +7 -0
  72. package/lib/cjs/src/api/model/DmkResult.test.js +2 -0
  73. package/lib/cjs/src/api/model/DmkResult.test.js.map +7 -0
  74. package/lib/cjs/src/api/network/DmkNetworkClient.js +2 -0
  75. package/lib/cjs/src/api/network/DmkNetworkClient.js.map +7 -0
  76. package/lib/cjs/src/api/network/DmkNetworkClient.test.js +2 -0
  77. package/lib/cjs/src/api/network/DmkNetworkClient.test.js.map +7 -0
  78. package/lib/cjs/src/api/network/DmkNetworkClientError.js +2 -0
  79. package/lib/cjs/src/api/network/DmkNetworkClientError.js.map +7 -0
  80. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js +2 -0
  81. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js.map +7 -0
  82. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js +2 -0
  83. package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js.map +7 -0
  84. package/lib/cjs/src/api/storage/KeyValueStorage.js +2 -0
  85. package/lib/cjs/src/api/storage/KeyValueStorage.js.map +7 -0
  86. package/lib/cjs/src/api/types.js +1 -1
  87. package/lib/cjs/src/api/types.js.map +1 -1
  88. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  89. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  90. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  91. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  92. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  93. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  94. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  95. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  96. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  97. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  98. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  99. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  100. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  101. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  102. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js +2 -0
  103. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +7 -0
  104. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +2 -0
  105. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +7 -0
  106. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js +2 -0
  107. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +7 -0
  108. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  109. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  110. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  111. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  112. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  113. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  114. package/lib/esm/package.json +1 -2
  115. package/lib/esm/src/api/Error.js +1 -1
  116. package/lib/esm/src/api/Error.js.map +3 -3
  117. package/lib/esm/src/api/command/Errors.js +1 -1
  118. package/lib/esm/src/api/command/Errors.js.map +3 -3
  119. package/lib/esm/src/api/command/model/CommandResult.js +1 -1
  120. package/lib/esm/src/api/command/model/CommandResult.js.map +3 -3
  121. package/lib/esm/src/api/command/os/BackupStorageCommand.js +2 -0
  122. package/lib/esm/src/api/command/os/BackupStorageCommand.js.map +7 -0
  123. package/lib/esm/src/api/command/os/BackupStorageCommand.test.js +2 -0
  124. package/lib/esm/src/api/command/os/BackupStorageCommand.test.js.map +7 -0
  125. package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.js +2 -0
  126. package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.js.map +7 -0
  127. package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.test.js +2 -0
  128. package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.test.js.map +7 -0
  129. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.js +2 -0
  130. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.js.map +7 -0
  131. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.test.js +2 -0
  132. package/lib/esm/src/api/command/os/GetAppStorageInfoCommand.test.js.map +7 -0
  133. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +1 -1
  134. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +3 -3
  135. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +1 -1
  136. package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +3 -3
  137. package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
  138. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  139. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  140. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +1 -1
  141. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +3 -3
  142. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +1 -1
  143. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +3 -3
  144. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +2 -2
  145. package/lib/esm/src/api/device-action/os/Errors.js +1 -1
  146. package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
  147. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js +1 -1
  148. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.js.map +3 -3
  149. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js +1 -1
  150. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.js.map +3 -3
  151. package/lib/esm/src/api/device-action/os/GetDeviceMetadata/types.js.map +2 -2
  152. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js +2 -0
  153. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js.map +7 -0
  154. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js +2 -0
  155. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js.map +7 -0
  156. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/types.js +2 -0
  157. package/lib/esm/src/api/device-action/os/InstallLanguagePackage/types.js.map +7 -0
  158. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js +2 -0
  159. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js.map +7 -0
  160. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js +2 -0
  161. package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js.map +7 -0
  162. package/lib/esm/src/api/device-action/task/Errors.js +2 -0
  163. package/lib/esm/src/api/device-action/task/Errors.js.map +7 -0
  164. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js +1 -1
  165. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.js.map +3 -3
  166. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js +1 -1
  167. package/lib/esm/src/api/device-action/task/GetApplicationsMetadataTask.test.js.map +3 -3
  168. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  169. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  170. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  171. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  172. package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.js +2 -0
  173. package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.js.map +7 -0
  174. package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.test.js +9 -0
  175. package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.test.js.map +7 -0
  176. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  177. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  178. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  179. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +3 -3
  180. package/lib/esm/src/api/index.js +1 -1
  181. package/lib/esm/src/api/index.js.map +3 -3
  182. package/lib/esm/src/api/model/DmkResult.js +2 -0
  183. package/lib/esm/src/api/model/DmkResult.js.map +7 -0
  184. package/lib/esm/src/api/model/DmkResult.test.js +2 -0
  185. package/lib/esm/src/api/model/DmkResult.test.js.map +7 -0
  186. package/lib/esm/src/api/network/DmkNetworkClient.js +2 -0
  187. package/lib/esm/src/api/network/DmkNetworkClient.js.map +7 -0
  188. package/lib/esm/src/api/network/DmkNetworkClient.test.js +2 -0
  189. package/lib/esm/src/api/network/DmkNetworkClient.test.js.map +7 -0
  190. package/lib/esm/src/api/network/DmkNetworkClientError.js +2 -0
  191. package/lib/esm/src/api/network/DmkNetworkClientError.js.map +7 -0
  192. package/lib/esm/src/api/network/DmkNetworkClientHelpers.js +2 -0
  193. package/lib/esm/src/api/network/DmkNetworkClientHelpers.js.map +7 -0
  194. package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js +2 -0
  195. package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js.map +7 -0
  196. package/lib/esm/src/api/storage/KeyValueStorage.js +2 -0
  197. package/lib/esm/src/api/storage/KeyValueStorage.js.map +7 -0
  198. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  199. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  200. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  201. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  202. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  203. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  204. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  205. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  206. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  207. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  208. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  209. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  210. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  211. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  212. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js +2 -0
  213. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +7 -0
  214. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +2 -0
  215. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +7 -0
  216. package/lib/esm/src/internal/manager-api/data/__mocks__/{AxiosManagerApiDataSource.js → HttpManagerApiDataSource.js} +2 -2
  217. package/lib/esm/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +7 -0
  218. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  219. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  220. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  221. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  222. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  223. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  224. package/lib/types/src/api/Error.d.ts +5 -0
  225. package/lib/types/src/api/Error.d.ts.map +1 -1
  226. package/lib/types/src/api/command/Errors.d.ts +0 -20
  227. package/lib/types/src/api/command/Errors.d.ts.map +1 -1
  228. package/lib/types/src/api/command/model/CommandResult.d.ts +11 -17
  229. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  230. package/lib/types/src/api/command/os/BackupStorageCommand.d.ts +23 -0
  231. package/lib/types/src/api/command/os/BackupStorageCommand.d.ts.map +1 -0
  232. package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts +2 -0
  233. package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts.map +1 -0
  234. package/lib/types/src/api/command/os/DeleteLanguagePackCommand.d.ts +24 -0
  235. package/lib/types/src/api/command/os/DeleteLanguagePackCommand.d.ts.map +1 -0
  236. package/lib/types/src/api/command/os/DeleteLanguagePackCommand.test.d.ts +2 -0
  237. package/lib/types/src/api/command/os/DeleteLanguagePackCommand.test.d.ts.map +1 -0
  238. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.d.ts +31 -0
  239. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.d.ts.map +1 -0
  240. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.test.d.ts +2 -0
  241. package/lib/types/src/api/command/os/GetAppStorageInfoCommand.test.d.ts.map +1 -0
  242. package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
  243. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +1 -1
  244. package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -1
  245. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts +9 -6
  246. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -1
  247. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +7 -6
  248. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -1
  249. package/lib/types/src/api/device-action/os/Errors.d.ts +20 -0
  250. package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
  251. package/lib/types/src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.d.ts.map +1 -1
  252. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts +3 -2
  253. package/lib/types/src/api/device-action/os/GetDeviceMetadata/types.d.ts.map +1 -1
  254. package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.d.ts +23 -0
  255. package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.d.ts.map +1 -0
  256. package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.d.ts +2 -0
  257. package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.d.ts.map +1 -0
  258. package/lib/types/src/api/device-action/os/InstallLanguagePackage/types.d.ts +27 -0
  259. package/lib/types/src/api/device-action/os/InstallLanguagePackage/types.d.ts.map +1 -0
  260. package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts +23 -0
  261. package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts.map +1 -0
  262. package/lib/types/src/api/device-action/task/BackupAppStorageTask.test.d.ts +2 -0
  263. package/lib/types/src/api/device-action/task/BackupAppStorageTask.test.d.ts.map +1 -0
  264. package/lib/types/src/api/device-action/task/Errors.d.ts +12 -0
  265. package/lib/types/src/api/device-action/task/Errors.d.ts.map +1 -0
  266. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts +5 -3
  267. package/lib/types/src/api/device-action/task/GetApplicationsMetadataTask.d.ts.map +1 -1
  268. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts +7 -3
  269. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -1
  270. package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.d.ts +19 -0
  271. package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.d.ts.map +1 -0
  272. package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.test.d.ts +2 -0
  273. package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.test.d.ts.map +1 -0
  274. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  275. package/lib/types/src/api/index.d.ts +14 -2
  276. package/lib/types/src/api/index.d.ts.map +1 -1
  277. package/lib/types/src/api/model/DmkResult.d.ts +24 -0
  278. package/lib/types/src/api/model/DmkResult.d.ts.map +1 -0
  279. package/lib/types/src/api/model/DmkResult.test.d.ts +2 -0
  280. package/lib/types/src/api/model/DmkResult.test.d.ts.map +1 -0
  281. package/lib/types/src/api/network/DmkNetworkClient.d.ts +97 -0
  282. package/lib/types/src/api/network/DmkNetworkClient.d.ts.map +1 -0
  283. package/lib/types/src/api/network/DmkNetworkClient.test.d.ts +2 -0
  284. package/lib/types/src/api/network/DmkNetworkClient.test.d.ts.map +1 -0
  285. package/lib/types/src/api/network/DmkNetworkClientError.d.ts +33 -0
  286. package/lib/types/src/api/network/DmkNetworkClientError.d.ts.map +1 -0
  287. package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts +94 -0
  288. package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts.map +1 -0
  289. package/lib/types/src/api/network/DmkNetworkClientHelpers.test.d.ts +2 -0
  290. package/lib/types/src/api/network/DmkNetworkClientHelpers.test.d.ts.map +1 -0
  291. package/lib/types/src/api/storage/KeyValueStorage.d.ts +7 -0
  292. package/lib/types/src/api/storage/KeyValueStorage.d.ts.map +1 -0
  293. package/lib/types/src/api/types.d.ts +2 -0
  294. package/lib/types/src/api/types.d.ts.map +1 -1
  295. package/lib/types/src/internal/manager-api/data/{AxiosManagerApiDataSource.d.ts → HttpManagerApiDataSource.d.ts} +3 -3
  296. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.d.ts.map +1 -0
  297. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.test.d.ts +2 -0
  298. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.test.d.ts.map +1 -0
  299. package/lib/types/src/internal/manager-api/data/__mocks__/{AxiosManagerApiDataSource.d.ts → HttpManagerApiDataSource.d.ts} +2 -2
  300. package/lib/types/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.d.ts.map +1 -0
  301. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  302. package/package.json +2 -3
  303. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +0 -2
  304. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +0 -7
  305. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +0 -2
  306. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +0 -7
  307. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +0 -2
  308. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +0 -7
  309. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +0 -2
  310. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +0 -7
  311. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +0 -2
  312. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +0 -7
  313. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +0 -7
  314. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +0 -1
  315. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.test.d.ts +0 -2
  316. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.test.d.ts.map +0 -1
  317. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction.test.ts"],
4
- "sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { BTC_APP } from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupListAppsMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { goToDashboardDAStateStep } from \"@api/device-action/os/GoToDashboard/types\";\nimport { listAppsDAStateStep } from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type DeviceSessionState,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@api/Error\";\nimport {\n type SecureChannelEventPayload,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nimport { GetDeviceMetadataDeviceAction } from \"./GetDeviceMetadataDeviceAction\";\nimport {\n type GetDeviceMetadataDAState,\n getDeviceMetadataDAStateStep,\n} from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"GetDeviceMetadataDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const getDeviceMetadataMock = vi.fn();\n const getFirmwareMetadataMock = vi.fn();\n const getApplicationsMetadataMock = vi.fn();\n const listAppsSecureChannelMock = vi.fn();\n\n const DEVICE_VERSION = \"device_version\" as unknown as DeviceVersion;\n const FIRMWARE = \"firmware\" as unknown as FinalFirmware;\n const FIRMWARE_VERSION = \"firmware_version\" as unknown as FirmwareVersion;\n const FIRMWARE_UPDATE = \"fm_update\" as unknown as FirmwareUpdateContext;\n const CUSTOM_IMAGE = \"image\" as unknown as CustomImage;\n const APPS = \"apps\" as unknown as Application[];\n const APPS_UPDATE = \"apps_update\" as unknown as Application[];\n const LANGUAGES = \"lang\" as unknown as InstalledLanguagePackage[];\n const CATALOG = \"catalog\" as unknown as Catalog;\n\n function extractDependenciesMock() {\n return {\n getDeviceMetadata: getDeviceMetadataMock,\n getFirmwareMetadata: getFirmwareMetadataMock,\n getApplicationsMetadata: getApplicationsMetadataMock,\n listAppsSecureChannel: listAppsSecureChannelMock,\n };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n });\n\n describe(\"success cases\", () => {\n it(\"get metadata from device state\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce({\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata without secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard wrapper\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level step: GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps wrapper (still under GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with forced update\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { forceUpdate: true },\n });\n\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GoToDashboard - Initial step (forced update still starts at GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata - After GoToDashboard, while fetching firmware, high-level step is GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps - While listing apps, high-level step still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Applications metadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n of(\n {\n type: SecureChannelEventType.Exchange,\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Result,\n payload: [\n {\n flags: 123456,\n hash: \"hash_test\",\n hash_code_data: \"hash_code_data_test\",\n name: \"Bitcoin\",\n },\n ],\n },\n ),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper around GoToDashboard \u2013 machine still tags it as GET_DEVICE_METADATA\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata \u2013 surfaced as GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper \u2013 still GO_TO_DASHBOARD for the first emissions\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // More secure-channel emissions, still under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // First applications-metadata-like transition (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Permission requested for secure channel \u2013 AllowSecureConnection, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Back to \u201Capplications metadata\u201D stream, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // One more pending under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Final pending before success: tagged as LIST_APPS_SECURE_CHANNEL\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS_SECURE_CHANNEL,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"get metadata from device state with external dependencies\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n installedApps: [APPS] as unknown as Application[],\n appsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n } as DeviceSessionState);\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: [APPS] as unknown as Application[],\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n\n describe(\"Error cases\", () => {\n it(\"error during GoToDashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper for GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetFirmwareMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListApps\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([], true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"ListApps failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetApplicationsMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GetApplicationsMetadata (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListAppsSecureChannel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n concat(\n of({\n type: SecureChannelEventType.Exchange,\n payload: {\n data: new Uint8Array([0x00, 0x01, 0x02, 0x03]),\n } as SecureChannelEventPayload[\"Exchange\"],\n }),\n throwError(() => new UnknownDAError(\"Secure channel error\")),\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Last pending before error \u2013 back to GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"Secure channel error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["concat", "of", "throwError", "CommandResultFactory", "DeviceStatus", "BTC_APP", "makeDeviceActionInternalApiMock", "setupGoToDashboardMock", "setupListAppsMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "goToDashboardDAStateStep", "listAppsDAStateStep", "DeviceSessionStateType", "UnknownDeviceExchangeError", "SecureChannelEventType", "GetDeviceMetadataDeviceAction", "getDeviceMetadataDAStateStep", "apiMock", "getDeviceMetadataMock", "getFirmwareMetadataMock", "getApplicationsMetadataMock", "listAppsSecureChannelMock", "DEVICE_VERSION", "FIRMWARE", "FIRMWARE_VERSION", "FIRMWARE_UPDATE", "CUSTOM_IMAGE", "APPS", "APPS_UPDATE", "LANGUAGES", "CATALOG", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
4
+ "sourcesContent": ["import { concat, of, throwError } from \"rxjs\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { BTC_APP } from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { setupListAppsMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { goToDashboardDAStateStep } from \"@api/device-action/os/GoToDashboard/types\";\nimport { listAppsDAStateStep } from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type DeviceSessionState,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@api/Error\";\nimport { DmkResultFactory } from \"@api/model/DmkResult\";\nimport {\n type SecureChannelEventPayload,\n SecureChannelEventType,\n} from \"@api/secure-channel/task/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nimport { GetDeviceMetadataDeviceAction } from \"./GetDeviceMetadataDeviceAction\";\nimport {\n type GetDeviceMetadataDAState,\n getDeviceMetadataDAStateStep,\n} from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\nvi.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"GetDeviceMetadataDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const getDeviceMetadataMock = vi.fn();\n const getFirmwareMetadataMock = vi.fn();\n const getApplicationsMetadataMock = vi.fn();\n const listAppsSecureChannelMock = vi.fn();\n\n const DEVICE_VERSION = \"device_version\" as unknown as DeviceVersion;\n const FIRMWARE = \"firmware\" as unknown as FinalFirmware;\n const FIRMWARE_VERSION = \"firmware_version\" as unknown as FirmwareVersion;\n const FIRMWARE_UPDATE = \"fm_update\" as unknown as FirmwareUpdateContext;\n const CUSTOM_IMAGE = \"image\" as unknown as CustomImage;\n const APPS = \"apps\" as unknown as Application[];\n const APPS_UPDATE = \"apps_update\" as unknown as Application[];\n const LANGUAGES = \"lang\" as unknown as InstalledLanguagePackage[];\n const CATALOG = \"catalog\" as unknown as Catalog;\n\n function extractDependenciesMock() {\n return {\n getDeviceMetadata: getDeviceMetadataMock,\n getFirmwareMetadata: getFirmwareMetadataMock,\n getApplicationsMetadata: getApplicationsMetadataMock,\n listAppsSecureChannel: listAppsSecureChannelMock,\n };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n } as DeviceSessionState);\n });\n\n describe(\"success cases\", () => {\n it(\"get metadata from device state\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce({\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata without secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard wrapper\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level step: GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps wrapper (still under GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with forced update\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { forceUpdate: true },\n });\n\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GoToDashboard - Initial step (forced update still starts at GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata - After GoToDashboard, while fetching firmware, high-level step is GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps - While listing apps, high-level step still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListApps inner (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Applications metadata wrapper (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"fetch metadata with secure channel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n of(\n {\n type: SecureChannelEventType.Exchange,\n },\n {\n type: SecureChannelEventType.PermissionRequested,\n },\n {\n type: SecureChannelEventType.PermissionGranted,\n },\n {\n type: SecureChannelEventType.Result,\n payload: [\n {\n flags: 123456,\n hash: \"hash_test\",\n hash_code_data: \"hash_code_data_test\",\n name: \"Bitcoin\",\n },\n ],\n },\n ),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper around GoToDashboard \u2013 machine still tags it as GET_DEVICE_METADATA\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // GoToDashboard inner\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata \u2013 surfaced as GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper \u2013 still GO_TO_DASHBOARD for the first emissions\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // More secure-channel emissions, still under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // First applications-metadata-like transition (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Permission requested for secure channel \u2013 AllowSecureConnection, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.AllowSecureConnection,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Back to \u201Capplications metadata\u201D stream, still GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // One more pending under GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetApplicationsMetadata - Final pending before success: tagged as LIST_APPS_SECURE_CHANNEL\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS_SECURE_CHANNEL,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: APPS,\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"get metadata from device state with external dependencies\", () =>\n new Promise<void>((resolve, reject) => {\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n installedApps: [APPS] as unknown as Application[],\n appsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n } as DeviceSessionState);\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: {\n firmwareVersion: {\n metadata: FIRMWARE_VERSION,\n } as unknown as FirmwareVersion,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n applications: [APPS] as unknown as Application[],\n applicationsUpdates: APPS_UPDATE,\n installedLanguages: LANGUAGES,\n catalog: CATALOG,\n },\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n\n describe(\"Error cases\", () => {\n it(\"error during GoToDashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper for GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetFirmwareMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (high-level GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\"GetFirmwareMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListApps\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([], true);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps (AllowListApps)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"ListApps failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during GetApplicationsMetadata\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n setupListAppsMock([BTC_APP]);\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: {},\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n getApplicationsMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n }),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper ListApps (still GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner ListApps\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n step: listAppsDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GetApplicationsMetadata (step: LIST_APPS)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.LIST_APPS,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDeviceExchangeError(\n \"GetApplicationsMetadata failed\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n\n it(\"error during ListAppsSecureChannel\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const deviceAction = new GetDeviceMetadataDeviceAction({\n input: { useSecureChannel: true },\n });\n\n getDeviceMetadataMock.mockResolvedValueOnce(null);\n getFirmwareMetadataMock.mockResolvedValueOnce(\n DmkResultFactory({\n data: {\n deviceVersion: DEVICE_VERSION,\n firmware: FIRMWARE,\n firmwareVersion: FIRMWARE_VERSION,\n firmwareUpdateContext: FIRMWARE_UPDATE,\n customImage: CUSTOM_IMAGE,\n },\n }),\n );\n listAppsSecureChannelMock.mockReturnValue(\n concat(\n of({\n type: SecureChannelEventType.Exchange,\n payload: {\n data: new Uint8Array([0x00, 0x01, 0x02, 0x03]),\n } as SecureChannelEventPayload[\"Exchange\"],\n }),\n throwError(() => new UnknownDAError(\"Secure channel error\")),\n ),\n );\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n const expectedStates: Array<GetDeviceMetadataDAState> = [\n // GetDeviceMetadataFromContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Wrapper GoToDashboard (still GET_DEVICE_METADATA)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // Inner GoToDashboard\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: goToDashboardDAStateStep.GET_DEVICE_STATUS,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetFirmwareMetadata (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // ListAppsSecureChannel wrapper (GO_TO_DASHBOARD)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Last pending before error \u2013 back to GO_TO_DASHBOARD\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: getDeviceMetadataDAStateStep.GO_TO_DASHBOARD,\n },\n status: DeviceActionStatus.Pending,\n },\n // Error\n {\n error: new UnknownDAError(\"Secure channel error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: resolve,\n onError: reject,\n });\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["concat", "of", "throwError", "DeviceStatus", "BTC_APP", "makeDeviceActionInternalApiMock", "setupGoToDashboardMock", "setupListAppsMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "goToDashboardDAStateStep", "listAppsDAStateStep", "DeviceSessionStateType", "UnknownDeviceExchangeError", "DmkResultFactory", "SecureChannelEventType", "GetDeviceMetadataDeviceAction", "getDeviceMetadataDAStateStep", "apiMock", "getDeviceMetadataMock", "getFirmwareMetadataMock", "getApplicationsMetadataMock", "listAppsSecureChannelMock", "DEVICE_VERSION", "FIRMWARE", "FIRMWARE_VERSION", "FIRMWARE_UPDATE", "CUSTOM_IMAGE", "APPS", "APPS_UPDATE", "LANGUAGES", "CATALOG", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GetDeviceMetadata/types.ts"],
4
- "sourcesContent": ["import { type CommandErrorResult } from \"@api/command/model/CommandResult\";\nimport { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type GetDeviceStatusDAStateStep } from \"@api/device-action/os/GetDeviceStatus/types\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDARequiredInteraction,\n type GoToDashboardDAStateStep,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport {\n type ListAppsDAError,\n type ListAppsDARequiredInteraction,\n type ListAppsDAStateStep,\n} from \"@api/device-action/os/ListApps/types\";\nimport {\n type Catalog,\n type CustomImage,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDARequiredInteraction,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type SecureChannelDAErrors } from \"@internal/secure-channel/model/Errors\";\n\nexport const getDeviceMetadataDAStateStep = Object.freeze({\n GET_DEVICE_METADATA: \"os.getDeviceMetadata.steps.getDeviceMetadata\",\n GO_TO_DASHBOARD: \"os.getDeviceMetadata.steps.goToDashboard\",\n GET_FIRMWARE_METADATA: \"os.getDeviceMetadata.steps.getFirmwareMetadata\",\n LIST_APPS_SECURE_CHANNEL: \"os.getDeviceMetadata.steps.listAppsSecureChannel\",\n LIST_APPS: \"os.getDeviceMetadata.steps.listApps\",\n GET_APPLICATIONS_METADATA:\n \"os.getDeviceMetadata.steps.getApplicationsMetadata\",\n} as const);\n\nexport type GetDeviceMetadataDAStateStep =\n (typeof getDeviceMetadataDAStateStep)[keyof typeof getDeviceMetadataDAStateStep];\n\nexport type GetDeviceMetadataDAOutput = {\n readonly firmwareVersion: FirmwareVersion;\n readonly firmwareUpdateContext: FirmwareUpdateContext;\n readonly applications: Application[];\n readonly applicationsUpdates: Application[];\n readonly installedLanguages: InstalledLanguagePackage[];\n readonly catalog: Catalog;\n readonly customImage: CustomImage;\n};\n\nexport type GetDeviceMetadataDAInput = GoToDashboardDAInput & {\n readonly useSecureChannel?: boolean;\n readonly forceUpdate?: boolean;\n};\n\nexport type GetDeviceMetadataDAError =\n | GoToDashboardDAError\n | ListAppsDAError\n | ListInstalledAppsDAError\n | SecureChannelDAErrors\n | CommandErrorResult[\"error\"];\n\nexport type GetDeviceMetadataDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | ListAppsDARequiredInteraction\n | ListInstalledAppsDARequiredInteraction;\n\nexport type GetDeviceMetadataDAIntermediateValue = {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n deviceId?: Uint8Array;\n step:\n | GetDeviceMetadataDAStateStep\n | GoToDashboardDAStateStep\n | GetDeviceStatusDAStateStep\n | ListAppsDAStateStep;\n};\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
5
- "mappings": "AA4BO,MAAMA,EAA+B,OAAO,OAAO,CACxD,oBAAqB,+CACrB,gBAAiB,2CACjB,sBAAuB,iDACvB,yBAA0B,mDAC1B,UAAW,sCACX,0BACE,oDACJ,CAAU",
4
+ "sourcesContent": ["import { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type GetDeviceStatusDAStateStep } from \"@api/device-action/os/GetDeviceStatus/types\";\nimport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDARequiredInteraction,\n type GoToDashboardDAStateStep,\n} from \"@api/device-action/os/GoToDashboard/types\";\nimport {\n type ListAppsDAError,\n type ListAppsDARequiredInteraction,\n type ListAppsDAStateStep,\n} from \"@api/device-action/os/ListApps/types\";\nimport { type GetApplicationsMetadataTaskError } from \"@api/device-action/task/Errors\";\nimport { type GetFirmwareMetadataTaskError } from \"@api/device-action/task/GetFirmwareMetadataTask\";\nimport {\n type Catalog,\n type CustomImage,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n type InstalledLanguagePackage,\n} from \"@api/device-session/DeviceSessionState\";\nimport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDARequiredInteraction,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\nimport { type SecureChannelDAErrors } from \"@internal/secure-channel/model/Errors\";\n\nexport const getDeviceMetadataDAStateStep = Object.freeze({\n GET_DEVICE_METADATA: \"os.getDeviceMetadata.steps.getDeviceMetadata\",\n GO_TO_DASHBOARD: \"os.getDeviceMetadata.steps.goToDashboard\",\n GET_FIRMWARE_METADATA: \"os.getDeviceMetadata.steps.getFirmwareMetadata\",\n LIST_APPS_SECURE_CHANNEL: \"os.getDeviceMetadata.steps.listAppsSecureChannel\",\n LIST_APPS: \"os.getDeviceMetadata.steps.listApps\",\n GET_APPLICATIONS_METADATA:\n \"os.getDeviceMetadata.steps.getApplicationsMetadata\",\n} as const);\n\nexport type GetDeviceMetadataDAStateStep =\n (typeof getDeviceMetadataDAStateStep)[keyof typeof getDeviceMetadataDAStateStep];\n\nexport type GetDeviceMetadataDAOutput = {\n readonly firmwareVersion: FirmwareVersion;\n readonly firmwareUpdateContext: FirmwareUpdateContext;\n readonly applications: Application[];\n readonly applicationsUpdates: Application[];\n readonly installedLanguages: InstalledLanguagePackage[];\n readonly catalog: Catalog;\n readonly customImage: CustomImage;\n};\n\nexport type GetDeviceMetadataDAInput = GoToDashboardDAInput & {\n readonly useSecureChannel?: boolean;\n readonly forceUpdate?: boolean;\n};\n\nexport type GetDeviceMetadataDAError =\n | GoToDashboardDAError\n | ListAppsDAError\n | ListInstalledAppsDAError\n | SecureChannelDAErrors\n | GetApplicationsMetadataTaskError\n | GetFirmwareMetadataTaskError;\n\nexport type GetDeviceMetadataDARequiredInteraction =\n | GoToDashboardDARequiredInteraction\n | ListAppsDARequiredInteraction\n | ListInstalledAppsDARequiredInteraction;\n\nexport type GetDeviceMetadataDAIntermediateValue = {\n requiredUserInteraction: GetDeviceMetadataDARequiredInteraction;\n deviceId?: Uint8Array;\n step:\n | GetDeviceMetadataDAStateStep\n | GoToDashboardDAStateStep\n | GetDeviceStatusDAStateStep\n | ListAppsDAStateStep;\n};\n\nexport type GetDeviceMetadataDAState = DeviceActionState<\n GetDeviceMetadataDAOutput,\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAIntermediateValue\n>;\n"],
5
+ "mappings": "AA6BO,MAAMA,EAA+B,OAAO,OAAO,CACxD,oBAAqB,+CACrB,gBAAiB,2CACjB,sBAAuB,iDACvB,yBAA0B,mDAC1B,UAAW,sCACX,0BACE,oDACJ,CAAU",
6
6
  "names": ["getDeviceMetadataDAStateStep"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{Left as m,Right as P}from"purify-ts";import{assign as n,fromObservable as E,fromPromise as S,setup as h}from"xstate";import{isSuccessCommandResult as A}from"../../../command/model/CommandResult";import{DeleteLanguagePackCommand as f}from"../../../command/os/DeleteLanguagePackCommand";import{UserInteractionRequired as y}from"../../../device-action/model/UserInteractionRequired";import{DEFAULT_UNLOCK_TIMEOUT_MS as v}from"../../../device-action/os/Const";import{DeleteLanguagePackDAError as M,MissingLanguagePackageDAError as C,MissingLanguagePackagesForOSDAError as x}from"../../../device-action/os/Errors";import{GetDeviceMetadataDeviceAction as V}from"../../../device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction";import{getDeviceMetadataDAStateStep as T}from"../../../device-action/os/GetDeviceMetadata/types";import{InstallLanguagePackageTask as G}from"../../../device-action/task/InstallLanguagePackageTask";import{XStateDeviceAction as _}from"../../../device-action/xstate-utils/XStateDeviceAction";import{installLanguagePackageDAStateStep as U}from"./types";class J extends _{makeStateMachine(r){const{deleteCurrentLanguagePack:l,installLanguagePack:p}=this.extractDependencies(r),c=this.input.unlockTimeout??v,u=this.input.language,{None:i}=y,{DEVICE_READY:d,GET_DEVICE_METADATA:k,DELETE_CURRENT_LANGUAGE_PACK:D,INSTALL_LANGUAGE_PACK:L}=U,I=new V({input:{unlockTimeout:c}}).makeStateMachine(r);return h({types:{input:{unlockTimeout:c,language:u},context:{},output:{}},actors:{getDeviceMetadata:I,deleteCurrentLanguagePack:S(l),installLanguagePack:E(({input:e})=>p(e.apduInstallUrl))},guards:{isDefaultLanguage:({context:e})=>e.input.language==="english",hasError:({context:e})=>e._internalState.error!==null,shouldSkipInstall:({context:e})=>e._internalState.shouldSkipInstall},actions:{assignErrorFromEvent:n({_internalState:e=>({...e.context._internalState,error:e.event.error,shouldSkipInstall:!1})}),assignGetDeviceMetadataSnapshot:n({intermediateValue:e=>{const a=e.event.snapshot.context.intermediateValue;return a.step===T.GET_DEVICE_METADATA?{...a,step:k}:a}}),assignGetDeviceMetadataDone:n({_internalState:e=>e.event.output.caseOf({Right:a=>{const g=a.catalog.languagePackages;if(!g)return{...e.context._internalState,error:new x(`Language packages not found for OS ${a?.firmwareVersion?.os}.`)};const s=g.find(o=>o.language===u);return s?(a.installedLanguages??[]).map(({id:o})=>o).includes(s.languagePackageId)?{...e.context._internalState,shouldSkipInstall:!0}:{...e.context._internalState,languagePackage:s}:{...e.context._internalState,error:new C(`Language package not found for ${u}.`)}},Left:a=>({...e.context._internalState,error:a})})}),assignDeleteCurrentLanguagePackSnapshot:n({intermediateValue:e=>({requiredUserInteraction:i,step:D})}),assignDeleteCurrentLanguagePackDone:n({_internalState:e=>{const t=e.event.output;return A(t)?e.context._internalState:{...e.context._internalState,error:new M("message"in t.error?t.error.message:"Delete language pack failed.")}}}),assignInstallLanguagePackSnapshot:n({intermediateValue:e=>{const a=e.event.snapshot.context,g=e.context,s="progress"in g.intermediateValue?g.intermediateValue.progress??0:0;return{requiredUserInteraction:i,step:L,progress:a?.type==="progress"?a.progress:s}}})}}).createMachine({id:"InstallLanguagePackageDeviceAction",initial:"CheckRequestedLanguage",context:e=>({input:{unlockTimeout:e.input.unlockTimeout,language:e.input.language},intermediateValue:{requiredUserInteraction:i,step:d,progress:0},_internalState:{error:null,languagePackage:null,shouldSkipInstall:!1}}),states:{CheckRequestedLanguage:{always:[{guard:"isDefaultLanguage",target:"DeleteCurrentLanguagePack"},{target:"GetDeviceMetadata"}]},GetDeviceMetadata:{invoke:{id:"GetDeviceMetadata",src:"getDeviceMetadata",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout,forceUpdate:!0,useSecureChannel:!0}),onSnapshot:{actions:"assignGetDeviceMetadataSnapshot"},onDone:{target:"LanguagePackCheck",actions:"assignGetDeviceMetadataDone"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},LanguagePackCheck:{always:[{guard:"hasError",target:"Error"},{guard:"shouldSkipInstall",target:"Success"},{target:"DeleteCurrentLanguagePack"}]},DeleteCurrentLanguagePack:{invoke:{id:"DeleteCurrentLanguagePack",src:"deleteCurrentLanguagePack",onSnapshot:{actions:"assignDeleteCurrentLanguagePackSnapshot"},onDone:{target:"DeleteCurrentLanguagePackResultCheck",actions:"assignDeleteCurrentLanguagePackDone"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},DeleteCurrentLanguagePackResultCheck:{always:[{guard:"hasError",target:"Error"},{guard:"isDefaultLanguage",target:"Success"},{target:"InstallLanguagePack"}]},InstallLanguagePack:{invoke:{id:"InstallLanguagePack",src:"installLanguagePack",input:({context:e})=>({apduInstallUrl:e._internalState.languagePackage.apduInstallUrl}),onSnapshot:{actions:"assignInstallLanguagePackSnapshot"},onDone:{target:"Success"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Success:{type:"final"},Error:{type:"final"}},output:e=>e.context._internalState.error!==null?m(e.context._internalState.error):P(void 0)})}extractDependencies(r){return{deleteCurrentLanguagePack:()=>r.sendCommand(new f({languagePackageId:255})),installLanguagePack:l=>new G(r,{apduInstallUrl:l}).run()}}}export{J as InstallLanguagePackageDeviceAction};
2
+ //# sourceMappingURL=InstallLanguagePackageDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.ts"],
4
+ "sourcesContent": ["import { type Either, Left, Right } from \"purify-ts\";\nimport { type Observable } from \"rxjs\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n DeleteLanguagePackCommand,\n type DeleteLanguagePackCommandResult,\n} from \"@api/command/os/DeleteLanguagePackCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport {\n DeleteLanguagePackDAError,\n MissingLanguagePackageDAError,\n MissingLanguagePackagesForOSDAError,\n} from \"@api/device-action/os/Errors\";\nimport { GetDeviceMetadataDeviceAction } from \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\";\nimport {\n type GetDeviceMetadataDAError,\n type GetDeviceMetadataDAIntermediateValue,\n type GetDeviceMetadataDAOutput,\n getDeviceMetadataDAStateStep,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport {\n type InstallLanguagePackageEvent,\n InstallLanguagePackageTask,\n} from \"@api/device-action/task/InstallLanguagePackageTask\";\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 LanguagePackage } from \"@internal/manager-api/model/Language\";\n\nimport {\n type InstallLanguagePackageDAError,\n type InstallLanguagePackageDAInput,\n type InstallLanguagePackageDAIntermediateValue,\n type InstallLanguagePackageDAOutput,\n installLanguagePackageDAStateStep,\n} from \"./types\";\n\ntype InstallLanguagePackageMachineInternalState = {\n readonly error: InstallLanguagePackageDAError | null;\n readonly languagePackage: LanguagePackage | null;\n readonly shouldSkipInstall: boolean;\n};\n\nexport type MachineDependencies = {\n readonly deleteCurrentLanguagePack: () => Promise<DeleteLanguagePackCommandResult>;\n readonly installLanguagePack: (\n apduInstallUrl: string,\n ) => Observable<InstallLanguagePackageEvent>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class InstallLanguagePackageDeviceAction extends XStateDeviceAction<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n > {\n type types = StateMachineTypes<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n >;\n\n const { deleteCurrentLanguagePack, installLanguagePack } =\n this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n const language = this.input.language;\n\n const { None } = UserInteractionRequired;\n const {\n DEVICE_READY,\n GET_DEVICE_METADATA,\n DELETE_CURRENT_LANGUAGE_PACK,\n INSTALL_LANGUAGE_PACK,\n } = installLanguagePackageDAStateStep;\n\n const getDeviceMetadataMachine = new GetDeviceMetadataDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n language,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getDeviceMetadata: getDeviceMetadataMachine,\n deleteCurrentLanguagePack: fromPromise(deleteCurrentLanguagePack),\n installLanguagePack: fromObservable(\n ({ input }: { input: { apduInstallUrl: string } }) =>\n installLanguagePack(input.apduInstallUrl),\n ),\n },\n guards: {\n // The default language package (English) cannot be installed as a language pack.\n // If the requested language is English, we still delete all installed packs and only skip the install step.\n isDefaultLanguage: ({ context }) =>\n context.input.language === \"english\",\n hasError: ({ context }: { context: types[\"context\"] }) =>\n context._internalState.error !== null,\n shouldSkipInstall: ({ context }) =>\n context._internalState.shouldSkipInstall,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"] as InstallLanguagePackageDAError,\n shouldSkipInstall: false,\n }),\n }),\n assignGetDeviceMetadataSnapshot: assign({\n intermediateValue: (_) => {\n const snapshot = _.event[\"snapshot\"] as {\n context: {\n intermediateValue: GetDeviceMetadataDAIntermediateValue;\n };\n };\n const childIv = snapshot.context.intermediateValue;\n if (\n childIv.step === getDeviceMetadataDAStateStep.GET_DEVICE_METADATA\n ) {\n return {\n ...childIv,\n step: GET_DEVICE_METADATA,\n } satisfies types[\"context\"][\"intermediateValue\"];\n }\n return childIv as types[\"context\"][\"intermediateValue\"];\n },\n }),\n assignGetDeviceMetadataDone: assign({\n _internalState: (_) => {\n const output = _.event[\"output\"] as Either<\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAOutput\n >;\n return output.caseOf({\n Right: (metadata) => {\n const languagePackages = metadata.catalog.languagePackages;\n if (!languagePackages) {\n return {\n ..._.context._internalState,\n error: new MissingLanguagePackagesForOSDAError(\n `Language packages not found for OS ${metadata?.firmwareVersion?.os}.`,\n ) as InstallLanguagePackageDAError,\n };\n }\n\n const languagePackage = languagePackages.find(\n (lp) => lp.language === language,\n );\n if (!languagePackage) {\n return {\n ..._.context._internalState,\n error: new MissingLanguagePackageDAError(\n `Language package not found for ${language}.`,\n ),\n };\n }\n\n const installedLanguageIds = (\n metadata.installedLanguages ?? []\n ).map(({ id }) => id);\n\n const isAlreadyInstalled = installedLanguageIds.includes(\n languagePackage.languagePackageId,\n );\n\n if (isAlreadyInstalled) {\n return {\n ..._.context._internalState,\n shouldSkipInstall: true,\n };\n }\n return {\n ..._.context._internalState,\n languagePackage,\n };\n },\n Left: (error: InstallLanguagePackageDAError) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n assignDeleteCurrentLanguagePackSnapshot: assign({\n intermediateValue: (_) =>\n ({\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignDeleteCurrentLanguagePackDone: assign({\n _internalState: (_) => {\n const result = _.event[\"output\"] as DeleteLanguagePackCommandResult;\n if (isSuccessCommandResult(result)) {\n return _.context._internalState;\n }\n\n return {\n ..._.context._internalState,\n error: new DeleteLanguagePackDAError(\n \"message\" in result.error\n ? result.error.message\n : \"Delete language pack failed.\",\n ),\n };\n },\n }),\n assignInstallLanguagePackSnapshot: assign({\n intermediateValue: (_) => {\n const snapshot = _.event[\"snapshot\"] as {\n context: InstallLanguagePackageEvent | null;\n };\n const event = snapshot.context;\n const ctx = _.context as types[\"context\"];\n const currentProgress =\n \"progress\" in ctx.intermediateValue\n ? (ctx.intermediateValue.progress ?? 0)\n : 0;\n return {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress:\n event?.type === \"progress\" ? event.progress : currentProgress,\n } satisfies types[\"context\"][\"intermediateValue\"];\n },\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEkB2sAuBDANjgMlqlAK5YwAKWAxgNblgAiYAbgJbVgCC1GbA9qgB0AYQAWYOgCUwARxJwMkQsTIwAxAG0ADAF1EoAA79YbPoIMgAHogBMATltCAjPYCsAZm0AWAOwAObTdfe18AGhAAT0RvRyEPW39nZw9nb20PBIBfLIi0TFwCIlIGKjoGZnZOHnNhcUlaGXlFZWK1MC1nfSQQY1NayxsEBydXTx8AoJDwqMRk+yE-ADY3Vb9fNxSPHLz0bDwVEsoaehhKjm5eAWEAcTAMc84AWXusCCxsdQhBMCE2VBY-FovzuD1YFxe2He2B03SMJjM10GiH8cUc9iWS3cbhWthWEWiw20S0WzkxvhS3g8S38wVsOxA+X2RVUpROFXB1SugiEoMeYEhbw+WHUYAATmL+GKhIYcB8AGZSgC2vPu-MF0KwsMsfURFh6Q1RTnRmOxuPxswQSSEbm0drttPs-l8LoZTMKh3aZVOTE5l1qQk9bLo9ToWj0OoRAwNc2pHiEtlioXSTu8Sw8BLstnjvjxqxdQQ8Gypbr2HrawZ9-Jq10DFeOIYkYc0XUj-SRMYQKXTCaTvhT-jTGctRfj-kSzm0-hp-aWPlLBQO9bA3o5VX9teYOHuYBEJAlYFQGCDDdoXx+fwBQN+W53e4PR5PK5O2p6uujoCGrgSQinbnsdqxEs3jeLYMyElivguDi2a2mB-7aPYC7Mk+q5nH6NY8reSj3mKh7Hsu3rnqgvz-ICwJCNhu77nhj6ES+rZvlGHafnM9g-n+AE+BiIFgZmCBuImQiDum3iDm4zq+JiyHlqyp5rhcmHCFRuH4ahJyihKUoynKGCKmKKoqTRan0XQr7wu2+qsV27FOJxgE8aB4GIB4oEJnmSy2M4EmJr4MlLnJz7lOh65KUI7oBUcQVnt8JGXuRvwRSyUXeuZvTMVZ1h2C6-i-h4AG2sB6TBPxwRQQBnkJFifjpPSuSMmWkVeuyIWKdywhJepYbipK0qygqyrhY1yXNWZEZMZZqDIsMOV5QVxIgVM-Fid4iyePMdpFiBGw5PVqD8BAcCWJ1plVhh7VtnqU2dgAtEs-E3W4Qj2C9r1vW92z1SdgVob6oXtaITaNHICiYK0gWXR+WUIKB-HOEJaQJGB060vDdW7IuI2VgpXIBnyfoasKkMsdDtqrf2r1LCESSrG4-H2Ktth5p4tirB4OLeM4-lY-JrW47WXW0KGtDE5lX7eU9-jswBL0rEExL8UzuX5QkXiIem-afRjKGnTjG5YWA244cZdE-ScovXdZ3l4r+jopLY9qTsOhLs1BCRJNS-75VLXNfcNgt62F30pebE1XdN2bjnNxKZMsrPLQBwlDqzjm5n5fuYwHfP68IADKJDUJwsDwGHUNDF4CPOmJqTAVOIGlVL8RM-YTtebZSEZzrZvBX9bUBgAolpYoW9NFerc4Vc+7Xg7eIrrNNysuabGkwTUrtWRAA */\n id: \"InstallLanguagePackageDeviceAction\",\n initial: \"CheckRequestedLanguage\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n language: _.input.language,\n },\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n _internalState: {\n error: null,\n languagePackage: null,\n shouldSkipInstall: false,\n },\n };\n },\n states: {\n CheckRequestedLanguage: {\n always: [\n {\n guard: \"isDefaultLanguage\",\n target: \"DeleteCurrentLanguagePack\",\n },\n { target: \"GetDeviceMetadata\" },\n ],\n },\n GetDeviceMetadata: {\n invoke: {\n id: \"GetDeviceMetadata\",\n src: \"getDeviceMetadata\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n forceUpdate: true, // ensures the Language pack is fresh and forces user to go to Dashboard\n useSecureChannel: true,\n }),\n onSnapshot: {\n actions: \"assignGetDeviceMetadataSnapshot\",\n },\n onDone: {\n target: \"LanguagePackCheck\",\n actions: \"assignGetDeviceMetadataDone\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n LanguagePackCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"shouldSkipInstall\",\n target: \"Success\",\n },\n { target: \"DeleteCurrentLanguagePack\" },\n ],\n },\n DeleteCurrentLanguagePack: {\n invoke: {\n id: \"DeleteCurrentLanguagePack\",\n src: \"deleteCurrentLanguagePack\",\n onSnapshot: {\n actions: \"assignDeleteCurrentLanguagePackSnapshot\",\n },\n onDone: {\n target: \"DeleteCurrentLanguagePackResultCheck\",\n actions: \"assignDeleteCurrentLanguagePackDone\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n DeleteCurrentLanguagePackResultCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDefaultLanguage\",\n target: \"Success\",\n },\n { target: \"InstallLanguagePack\" },\n ],\n },\n InstallLanguagePack: {\n invoke: {\n id: \"InstallLanguagePack\",\n src: \"installLanguagePack\",\n input: ({ context }) => ({\n apduInstallUrl:\n context._internalState.languagePackage!.apduInstallUrl,\n }),\n onSnapshot: {\n actions: \"assignInstallLanguagePackSnapshot\",\n },\n onDone: {\n target: \"Success\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error !== null) {\n return Left(_.context._internalState.error);\n }\n return Right(undefined);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n return {\n deleteCurrentLanguagePack: () =>\n internalApi.sendCommand(\n new DeleteLanguagePackCommand({ languagePackageId: 0xff }),\n ),\n installLanguagePack: (apduInstallUrl: string) =>\n new InstallLanguagePackageTask(internalApi, {\n apduInstallUrl,\n }).run(),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Left", "Right", "assign", "fromObservable", "fromPromise", "setup", "isSuccessCommandResult", "DeleteLanguagePackCommand", "UserInteractionRequired", "DEFAULT_UNLOCK_TIMEOUT_MS", "DeleteLanguagePackDAError", "MissingLanguagePackageDAError", "MissingLanguagePackagesForOSDAError", "GetDeviceMetadataDeviceAction", "getDeviceMetadataDAStateStep", "InstallLanguagePackageTask", "XStateDeviceAction", "installLanguagePackageDAStateStep", "InstallLanguagePackageDeviceAction", "internalApi", "deleteCurrentLanguagePack", "installLanguagePack", "unlockTimeout", "language", "None", "DEVICE_READY", "GET_DEVICE_METADATA", "DELETE_CURRENT_LANGUAGE_PACK", "INSTALL_LANGUAGE_PACK", "getDeviceMetadataMachine", "input", "context", "_", "childIv", "metadata", "languagePackages", "languagePackage", "lp", "id", "error", "result", "event", "ctx", "currentProgress", "apduInstallUrl"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{of as I,throwError as L}from"rxjs";import{CommandResultFactory as P}from"../../../command/model/CommandResult";import{DeleteLanguagePackCommandError as h}from"../../../command/os/DeleteLanguagePackCommand";import{makeDeviceActionInternalApiMock as w}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGetDeviceMetadataMock as g}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as S}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as y}from"../../../device-action/model/UserInteractionRequired";import{DeleteLanguagePackDAError as k,MissingLanguagePackageDAError as E,MissingLanguagePackagesForOSDAError as C,UnknownDAError as A}from"../../../device-action/os/Errors";import{InstallLanguagePackageDeviceAction as c}from"./InstallLanguagePackageDeviceAction";import{installLanguagePackageDAStateStep as M}from"./types";vi.mock("@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction");describe("InstallLanguagePackageDeviceAction",()=>{const f=w(),i=vi.fn(),l=vi.fn(),s={language:"french",languagePackageVersionId:1,version:"1.0.0",languagePackageId:42,apduInstallUrl:"https://example.com/install-french",apduUninstallUrl:"https://example.com/uninstall-french",bytes:1024,dateCreation:"2024-01-01",dateLastModified:"2024-01-01"},{None:t}=y,{DEVICE_READY:u,GET_DEVICE_METADATA:r,DELETE_CURRENT_LANGUAGE_PACK:o,INSTALL_LANGUAGE_PACK:m}=M,D={deleteCurrentLanguagePack:i,installLanguagePack:l},p=(a={})=>({installedLanguages:[],...a,catalog:{languagePackages:[],...a.catalog??{}}}),d=(a,n,v)=>new Promise((U,V)=>{vi.spyOn(a,"extractDependencies").mockReturnValue(D),S(a,n,f,{onDone:()=>{try{v?.(),U()}catch(q){V(q)}},onError:V})});beforeEach(()=>{vi.clearAllMocks()}),describe("success cases",()=>{it("should install a non-default language package",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:.5},{type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:.5},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n)}),it("should install when a different language pack is already installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:999,size:2048}]}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).toHaveBeenCalledOnce(),expect(l).toHaveBeenCalledOnce()})}),it("should succeed without delete or install when the language pack is already installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:s.languagePackageId,size:s.bytes}]}));const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).not.toHaveBeenCalled(),expect(l).not.toHaveBeenCalled()})}),it("should install when only a matching languagePackageVersionId is reported as installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:s.languagePackageVersionId,size:s.bytes}]}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(l).toHaveBeenCalledOnce()})}),it("should delete and skip install for the default language (english)",()=>{const a=new c({input:{language:"english"}});i.mockResolvedValueOnce(P({data:void 0}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).toHaveBeenCalledOnce(),expect(l).not.toHaveBeenCalled()})})}),describe("error cases",()=>{it("should error when GetDeviceMetadata fails",()=>{g({},!0);const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new A("GetDeviceMetadata failed"),status:e.Error}];return d(a,n)}),it("should error when language packages are missing from metadata",()=>{g(p({firmwareVersion:{mcu:"1.0.0",bootloader:"1.0.0",os:"2.4.0"},catalog:{languagePackages:void 0}}));const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new C("Language packages not found for OS 2.4.0."),status:e.Error}];return d(a,n)}),it("should error when the requested language is not found",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"spanish"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new E("Language package not found for spanish."),status:e.Error}];return d(a,n)}),it("should error when DeleteCurrentLanguagePack returns a command error",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({error:new h({message:"Invalid LANG_ID value.",errorCode:"681a"})}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{error:new k("Invalid LANG_ID value."),status:e.Error}];return d(a,n)}),it("should error when DeleteCurrentLanguagePack promise rejects",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockRejectedValueOnce(new k("Delete failed"));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{error:new k("Delete failed"),status:e.Error}];return d(a,n)}),it("should error when InstallLanguagePack observable errors",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(L(()=>new A("Install failed")));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{error:new A("Install failed"),status:e.Error}];return d(a,n)})})});
2
+ //# sourceMappingURL=InstallLanguagePackageDeviceAction.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.ts"],
4
+ "sourcesContent": ["import { of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { DeleteLanguagePackCommandError } from \"@api/command/os/DeleteLanguagePackCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGetDeviceMetadataMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n DeleteLanguagePackDAError,\n MissingLanguagePackageDAError,\n MissingLanguagePackagesForOSDAError,\n UnknownDAError,\n} from \"@api/device-action/os/Errors\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { LanguagePackage } from \"@internal/manager-api/model/Language\";\n\nimport { InstallLanguagePackageDeviceAction } from \"./InstallLanguagePackageDeviceAction\";\nimport {\n type InstallLanguagePackageDAState,\n installLanguagePackageDAStateStep,\n} from \"./types\";\n\nvi.mock(\n \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\",\n);\n\ndescribe(\"InstallLanguagePackageDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const deleteCurrentLanguagePackMock = vi.fn();\n const installLanguagePackMock = vi.fn();\n\n const LANGUAGE_PACKAGE: LanguagePackage = {\n language: \"french\",\n languagePackageVersionId: 1,\n version: \"1.0.0\",\n languagePackageId: 42,\n apduInstallUrl: \"https://example.com/install-french\",\n apduUninstallUrl: \"https://example.com/uninstall-french\",\n bytes: 1024,\n dateCreation: \"2024-01-01\",\n dateLastModified: \"2024-01-01\",\n };\n\n const { None } = UserInteractionRequired;\n const {\n DEVICE_READY,\n GET_DEVICE_METADATA,\n DELETE_CURRENT_LANGUAGE_PACK,\n INSTALL_LANGUAGE_PACK,\n } = installLanguagePackageDAStateStep;\n\n const extractDependenciesMock = {\n deleteCurrentLanguagePack: deleteCurrentLanguagePackMock,\n installLanguagePack: installLanguagePackMock,\n };\n\n const buildMetadata = (\n partial: {\n installedLanguages?: Array<{ id: number; size: number }>;\n catalog?: { languagePackages?: LanguagePackage[] | undefined };\n firmwareVersion?: GetDeviceMetadataDAOutput[\"firmwareVersion\"];\n } = {},\n ): GetDeviceMetadataDAOutput =>\n ({\n installedLanguages: [],\n ...partial,\n catalog: {\n languagePackages: [],\n ...(partial.catalog ?? {}),\n },\n }) as unknown as GetDeviceMetadataDAOutput;\n\n const runTest = (\n deviceAction: InstallLanguagePackageDeviceAction,\n expectedStates: Array<InstallLanguagePackageDAState>,\n onDoneExtra?: () => void,\n ) =>\n new Promise<void>((resolve, reject) => {\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock,\n );\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: () => {\n try {\n onDoneExtra?.();\n resolve();\n } catch (e) {\n reject(e as Error);\n }\n },\n onError: reject,\n });\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"success cases\", () => {\n it(\"should install a non-default language package\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of(\n { type: \"progress\", progress: 0.5 },\n { type: \"progress\", progress: 1 },\n ),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n // Initial\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // DeleteCurrentLanguagePack\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallLanguagePack\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0.5,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should install when a different language pack is already installed\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [{ id: 999, size: 2048 }],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of({ type: \"progress\", progress: 1 }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).toHaveBeenCalledOnce();\n expect(installLanguagePackMock).toHaveBeenCalledOnce();\n });\n });\n\n it(\"should succeed without delete or install when the language pack is already installed\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [\n {\n id: LANGUAGE_PACKAGE.languagePackageId,\n size: LANGUAGE_PACKAGE.bytes,\n },\n ],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).not.toHaveBeenCalled();\n expect(installLanguagePackMock).not.toHaveBeenCalled();\n });\n });\n\n it(\"should install when only a matching languagePackageVersionId is reported as installed\", () => {\n // Guards against a regression where the implementation compares against\n // languagePackageVersionId instead of languagePackageId.\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [\n {\n id: LANGUAGE_PACKAGE.languagePackageVersionId,\n size: LANGUAGE_PACKAGE.bytes,\n },\n ],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of({ type: \"progress\", progress: 1 }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(installLanguagePackMock).toHaveBeenCalledOnce();\n });\n });\n\n it(\"should delete and skip install for the default language (english)\", () => {\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"english\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).toHaveBeenCalledOnce();\n expect(installLanguagePackMock).not.toHaveBeenCalled();\n });\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should error when GetDeviceMetadata fails\", () => {\n setupGetDeviceMetadataMock(\n {} as unknown as GetDeviceMetadataDAOutput,\n true,\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new UnknownDAError(\"GetDeviceMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when language packages are missing from metadata\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n firmwareVersion: {\n mcu: \"1.0.0\",\n bootloader: \"1.0.0\",\n os: \"2.4.0\",\n } as GetDeviceMetadataDAOutput[\"firmwareVersion\"],\n catalog: { languagePackages: undefined },\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new MissingLanguagePackagesForOSDAError(\n \"Language packages not found for OS 2.4.0.\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when the requested language is not found\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"spanish\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new MissingLanguagePackageDAError(\n \"Language package not found for spanish.\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when DeleteCurrentLanguagePack returns a command error\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new DeleteLanguagePackCommandError({\n message: \"Invalid LANG_ID value.\",\n errorCode: \"681a\",\n }),\n }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new DeleteLanguagePackDAError(\"Invalid LANG_ID value.\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when DeleteCurrentLanguagePack promise rejects\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockRejectedValueOnce(\n new DeleteLanguagePackDAError(\"Delete failed\"),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new DeleteLanguagePackDAError(\"Delete failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when InstallLanguagePack observable errors\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n throwError(() => new UnknownDAError(\"Install failed\")),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new UnknownDAError(\"Install failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["of", "throwError", "CommandResultFactory", "DeleteLanguagePackCommandError", "makeDeviceActionInternalApiMock", "setupGetDeviceMetadataMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "DeleteLanguagePackDAError", "MissingLanguagePackageDAError", "MissingLanguagePackagesForOSDAError", "UnknownDAError", "InstallLanguagePackageDeviceAction", "installLanguagePackageDAStateStep", "apiMock", "deleteCurrentLanguagePackMock", "installLanguagePackMock", "LANGUAGE_PACKAGE", "None", "DEVICE_READY", "GET_DEVICE_METADATA", "DELETE_CURRENT_LANGUAGE_PACK", "INSTALL_LANGUAGE_PACK", "extractDependenciesMock", "buildMetadata", "partial", "runTest", "deviceAction", "expectedStates", "onDoneExtra", "resolve", "reject", "e"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const e=Object.freeze({DEVICE_READY:"os.installLanguagePackage.steps.deviceReady",GET_DEVICE_METADATA:"os.installLanguagePackage.steps.getDeviceMetadata",DELETE_CURRENT_LANGUAGE_PACK:"os.installLanguagePackage.steps.deleteCurrentLanguagePack",INSTALL_LANGUAGE_PACK:"os.installLanguagePackage.steps.installLanguagePack"});export{e as installLanguagePackageDAStateStep};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/api/device-action/os/InstallLanguagePackage/types.ts"],
4
+ "sourcesContent": ["import { type DeviceActionState } from \"@api/device-action/model/DeviceActionState\";\nimport { type UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n type DeleteLanguagePackDAError,\n type MissingLanguagePackageDAError,\n type MissingLanguagePackagesForOSDAError,\n type OutOfMemoryDAError,\n type RefusedByUserDAError,\n type UnknownDAError,\n} from \"@api/device-action/os/Errors\";\nimport {\n type GetDeviceMetadataDAError,\n type GetDeviceMetadataDAIntermediateValue,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport { type GoToDashboardDAInput } from \"@api/device-action/os/GoToDashboard/types\";\n\nexport type Language =\n | \"french\"\n | \"english\"\n | \"spanish\"\n | \"brazilian\"\n | \"german\"\n | \"russian\"\n | \"turkish\"\n | \"thai\";\n\nexport const installLanguagePackageDAStateStep = Object.freeze({\n DEVICE_READY: \"os.installLanguagePackage.steps.deviceReady\",\n GET_DEVICE_METADATA: \"os.installLanguagePackage.steps.getDeviceMetadata\",\n DELETE_CURRENT_LANGUAGE_PACK:\n \"os.installLanguagePackage.steps.deleteCurrentLanguagePack\",\n INSTALL_LANGUAGE_PACK: \"os.installLanguagePackage.steps.installLanguagePack\",\n} as const);\n\nexport type InstallLanguagePackageDAInput = GoToDashboardDAInput & {\n readonly language: Language;\n};\n\nexport type InstallLanguagePackageDAOutput = undefined;\n\nexport type InstallLanguagePackageDAGetDeviceMetadataIntermediateValue = Omit<\n GetDeviceMetadataDAIntermediateValue,\n \"step\"\n> & {\n readonly step: typeof installLanguagePackageDAStateStep.GET_DEVICE_METADATA;\n};\n\nexport type InstallLanguagePackageDAIntermediateValue =\n | GetDeviceMetadataDAIntermediateValue\n | InstallLanguagePackageDAGetDeviceMetadataIntermediateValue\n | {\n readonly requiredUserInteraction: UserInteractionRequired.None;\n readonly step: Exclude<\n (typeof installLanguagePackageDAStateStep)[keyof typeof installLanguagePackageDAStateStep],\n typeof installLanguagePackageDAStateStep.GET_DEVICE_METADATA\n >;\n readonly progress?: number;\n };\n\nexport type InstallLanguagePackageDAError =\n | GetDeviceMetadataDAError\n | MissingLanguagePackagesForOSDAError\n | MissingLanguagePackageDAError\n | DeleteLanguagePackDAError\n | RefusedByUserDAError // from InstallLanguagePackageTask\n | OutOfMemoryDAError // from InstallLanguagePackageTask\n | UnknownDAError; // from InstallLanguagePackageTask (network error, invalid APDU, etc.)\n\nexport type InstallLanguagePackageDAState = DeviceActionState<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue\n>;\n"],
5
+ "mappings": "AA0BO,MAAMA,EAAoC,OAAO,OAAO,CAC7D,aAAc,8CACd,oBAAqB,oDACrB,6BACE,4DACF,sBAAuB,qDACzB,CAAU",
6
+ "names": ["installLanguagePackageDAStateStep"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{isSuccessCommandResult as g}from"../../command/model/CommandResult";import{BackupStorageCommand as u}from"../../command/os/BackupStorageCommand";import{GetAppStorageInfoCommand as d}from"../../command/os/GetAppStorageInfoCommand";import{DmkResultFactory as o}from"../../model/DmkResult";import{bufferToHexaString as c}from"../../utils/HexaString";class y{constructor(t,r,p){this.args=t;this.api=r;this.logger=p}async run(){this.logger.debug("[run] Starting BackupAppStorageTask",{data:{appName:this.args.appName}});const{appName:t}=this.args,r=await this.api.sendCommand(new d({appName:t}));if(!g(r))return this.logger.debug("[run] Failed to get app storage info",{data:{error:r.error}}),o({error:r.error});const{storageSize:p}=r.data;let s=0,e=new Uint8Array(0);for(;s<p;){const a=await this.api.sendCommand(new u);if(!g(a))return this.logger.debug("[run] Failed to backup app storage",{data:{error:a.error}}),o({error:a.error});const{chunkData:m,chunkSize:i}=a.data;e=Uint8Array.from([...e,...m]),s+=i}const n=c(e);return this.logger.debug("[run] App storage data backed up successfully",{data:{appStorageData:n}}),o({data:{appStorageData:n}})}}export{y as BackupAppStorageTask};
2
+ //# sourceMappingURL=BackupAppStorageTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/BackupAppStorageTask.ts"],
4
+ "sourcesContent": ["import {\n type CommandErrorResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport {\n BackupStorageCommand,\n type BackupStorageCommandErrorCodes,\n} from \"@api/command/os/BackupStorageCommand\";\nimport {\n GetAppStorageInfoCommand,\n type GetAppStorageInfoCommandErrorCodes,\n} from \"@api/command/os/GetAppStorageInfoCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DmkResult, DmkResultFactory } from \"@api/model/DmkResult\";\nimport { bufferToHexaString, type HexaString } from \"@api/utils/HexaString\";\n\nexport type BackupAppStorageTaskArgs = {\n appName: string;\n};\n\nexport type BackupAppStorageTaskResponse = {\n appStorageData: HexaString;\n};\n\nexport type BackupAppStorageTaskErrorCodes =\n | GetAppStorageInfoCommandErrorCodes\n | BackupStorageCommandErrorCodes;\n\nexport type BackupAppStorageTaskError =\n | CommandErrorResult<GetAppStorageInfoCommandErrorCodes>[\"error\"]\n | CommandErrorResult<BackupStorageCommandErrorCodes>[\"error\"];\n\nexport class BackupAppStorageTask {\n constructor(\n private readonly args: BackupAppStorageTaskArgs,\n private readonly api: InternalApi,\n private readonly logger: LoggerPublisherService,\n ) {}\n\n public async run(): Promise<\n DmkResult<BackupAppStorageTaskResponse, BackupAppStorageTaskError>\n > {\n this.logger.debug(\"[run] Starting BackupAppStorageTask\", {\n data: {\n appName: this.args.appName,\n },\n });\n\n const { appName } = this.args;\n\n const getAppStorageInfo = await this.api.sendCommand(\n new GetAppStorageInfoCommand({\n appName,\n }),\n );\n\n if (!isSuccessCommandResult(getAppStorageInfo)) {\n this.logger.debug(\"[run] Failed to get app storage info\", {\n data: { error: getAppStorageInfo.error },\n });\n return DmkResultFactory({\n error: getAppStorageInfo.error,\n });\n }\n\n const { storageSize } = getAppStorageInfo.data;\n let offset = 0;\n let appStorageDataBytes = new Uint8Array(0);\n\n while (offset < storageSize) {\n const backupStorage = await this.api.sendCommand(\n new BackupStorageCommand(),\n );\n if (!isSuccessCommandResult(backupStorage)) {\n this.logger.debug(\"[run] Failed to backup app storage\", {\n data: { error: backupStorage.error },\n });\n return DmkResultFactory({\n error: backupStorage.error,\n });\n }\n\n const { chunkData, chunkSize } = backupStorage.data;\n appStorageDataBytes = Uint8Array.from([\n ...appStorageDataBytes,\n ...chunkData,\n ]);\n offset += chunkSize;\n }\n\n const appStorageData = bufferToHexaString(appStorageDataBytes);\n this.logger.debug(\"[run] App storage data backed up successfully\", {\n data: {\n appStorageData,\n },\n });\n\n return DmkResultFactory({\n data: {\n appStorageData,\n },\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,0BAAAA,MACK,mCACP,OACE,wBAAAC,MAEK,uCACP,OACE,4BAAAC,MAEK,2CAGP,OAAyB,oBAAAC,MAAwB,uBACjD,OAAS,sBAAAC,MAA2C,wBAkB7C,MAAMC,CAAqB,CAChC,YACmBC,EACAC,EACAC,EACjB,CAHiB,UAAAF,EACA,SAAAC,EACA,YAAAC,CAChB,CAEH,MAAa,KAEX,CACA,KAAK,OAAO,MAAM,sCAAuC,CACvD,KAAM,CACJ,QAAS,KAAK,KAAK,OACrB,CACF,CAAC,EAED,KAAM,CAAE,QAAAC,CAAQ,EAAI,KAAK,KAEnBC,EAAoB,MAAM,KAAK,IAAI,YACvC,IAAIR,EAAyB,CAC3B,QAAAO,CACF,CAAC,CACH,EAEA,GAAI,CAACT,EAAuBU,CAAiB,EAC3C,YAAK,OAAO,MAAM,uCAAwC,CACxD,KAAM,CAAE,MAAOA,EAAkB,KAAM,CACzC,CAAC,EACMP,EAAiB,CACtB,MAAOO,EAAkB,KAC3B,CAAC,EAGH,KAAM,CAAE,YAAAC,CAAY,EAAID,EAAkB,KAC1C,IAAIE,EAAS,EACTC,EAAsB,IAAI,WAAW,CAAC,EAE1C,KAAOD,EAASD,GAAa,CAC3B,MAAMG,EAAgB,MAAM,KAAK,IAAI,YACnC,IAAIb,CACN,EACA,GAAI,CAACD,EAAuBc,CAAa,EACvC,YAAK,OAAO,MAAM,qCAAsC,CACtD,KAAM,CAAE,MAAOA,EAAc,KAAM,CACrC,CAAC,EACMX,EAAiB,CACtB,MAAOW,EAAc,KACvB,CAAC,EAGH,KAAM,CAAE,UAAAC,EAAW,UAAAC,CAAU,EAAIF,EAAc,KAC/CD,EAAsB,WAAW,KAAK,CACpC,GAAGA,EACH,GAAGE,CACL,CAAC,EACDH,GAAUI,CACZ,CAEA,MAAMC,EAAiBb,EAAmBS,CAAmB,EAC7D,YAAK,OAAO,MAAM,gDAAiD,CACjE,KAAM,CACJ,eAAAI,CACF,CACF,CAAC,EAEMd,EAAiB,CACtB,KAAM,CACJ,eAAAc,CACF,CACF,CAAC,CACH,CACF",
6
+ "names": ["isSuccessCommandResult", "BackupStorageCommand", "GetAppStorageInfoCommand", "DmkResultFactory", "bufferToHexaString", "BackupAppStorageTask", "args", "api", "logger", "appName", "getAppStorageInfo", "storageSize", "offset", "appStorageDataBytes", "backupStorage", "chunkData", "chunkSize", "appStorageData"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{BackupStorageCommandError as c}from"../../command/os/BackupStorageCommand";import{GetAppStorageInfoCommandError as p}from"../../command/os/GetAppStorageInfoCommand";import{BackupAppStorageTask as n}from"../../device-action/task/BackupAppStorageTask";import{CommandResultFactory as a,DmkResultFactory as i,isSuccessDmkResult as u}from"../../index";describe("BackupAppStorageTask",()=>{let o,t;const s=vi.fn();beforeEach(()=>{vi.clearAllMocks(),o={sendCommand:s},t={debug:vi.fn()}}),describe("Success",()=>{it("should backup app storage data successfully",async()=>{const r=new n({appName:"MyApp"},o,t);s.mockResolvedValueOnce(a({data:{storageSize:15}})).mockResolvedValueOnce(a({data:{chunkData:new Uint8Array([1,35,69,103,137]),chunkSize:5}})).mockResolvedValueOnce(a({data:{chunkData:new Uint8Array([10,11,12,13,14]),chunkSize:5}})).mockResolvedValueOnce(a({data:{chunkData:new Uint8Array([15,16,17,18,19]),chunkSize:5}}));const e=await r.run();expect(u(e)).toBe(!0),expect(e.data.appStorageData).toBe("0x01234567890a0b0c0d0e0f10111213")})}),describe("Error",()=>{it("should return error when getting app storage info fails",async()=>{const r=new n({appName:"MyApp"},o,t);s.mockResolvedValueOnce(a({error:new p({message:"Application not found.",errorCode:"5123"})}));const e=await r.run();expect(e).toStrictEqual(i({error:new p({message:"Application not found.",errorCode:"5123"})}))}),it("should return error when backing up app storage data fails",async()=>{const r=new n({appName:"MyApp"},o,t);s.mockResolvedValueOnce(a({data:{storageSize:100}})).mockResolvedValueOnce(a({error:new c({message:"Failed to backup app storage data.",errorCode:"541c"})}));const e=await r.run();expect(u(e)).toBe(!1),expect(e.error).toBeInstanceOf(c),expect(e.error.message).toBe("Failed to backup app storage data.")})})});
2
+ //# sourceMappingURL=BackupAppStorageTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/BackupAppStorageTask.test.ts"],
4
+ "sourcesContent": ["import { BackupStorageCommandError } from \"@api/command/os/BackupStorageCommand\";\nimport { GetAppStorageInfoCommandError } from \"@api/command/os/GetAppStorageInfoCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n BackupAppStorageTask,\n type BackupAppStorageTaskResponse,\n} from \"@api/device-action/task/BackupAppStorageTask\";\nimport {\n CommandResultFactory,\n DmkResultFactory,\n isSuccessDmkResult,\n} from \"@api/index\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\n\ndescribe(\"BackupAppStorageTask\", () => {\n let api: InternalApi;\n let logger: LoggerPublisherService;\n const sendCommand = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n api = {\n sendCommand,\n } as unknown as InternalApi;\n logger = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n });\n\n describe(\"Success\", () => {\n it(\"should backup app storage data successfully\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { storageSize: 15 } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89]),\n chunkSize: 5,\n },\n }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x0a, 0x0b, 0x0c, 0x0d, 0x0e]),\n chunkSize: 5,\n },\n }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x0f, 0x10, 0x11, 0x12, 0x13]),\n chunkSize: 5,\n },\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(true);\n expect(\n (result as { data: BackupAppStorageTaskResponse }).data.appStorageData,\n ).toBe(\"0x01234567890a0b0c0d0e0f10111213\");\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return error when getting app storage info fails\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new GetAppStorageInfoCommandError({\n message: \"Application not found.\",\n errorCode: \"5123\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(result).toStrictEqual(\n DmkResultFactory({\n error: new GetAppStorageInfoCommandError({\n message: \"Application not found.\",\n errorCode: \"5123\",\n }),\n }),\n );\n });\n\n it(\"should return error when backing up app storage data fails\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { storageSize: 100 } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new BackupStorageCommandError({\n message: \"Failed to backup app storage data.\",\n errorCode: \"541c\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(false);\n expect(\n (result as { error: BackupStorageCommandError }).error,\n ).toBeInstanceOf(BackupStorageCommandError);\n expect(\n (result as { error: BackupStorageCommandError }).error.message,\n ).toBe(\"Failed to backup app storage data.\");\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,6BAAAA,MAAiC,uCAC1C,OAAS,iCAAAC,MAAqC,2CAE9C,OACE,wBAAAC,MAEK,+CACP,OACE,wBAAAC,EACA,oBAAAC,EACA,sBAAAC,MACK,aAGP,SAAS,uBAAwB,IAAM,CACrC,IAAIC,EACAC,EACJ,MAAMC,EAAc,GAAG,GAAG,EAE1B,WAAW,IAAM,CACf,GAAG,cAAc,EACjBF,EAAM,CACJ,YAAAE,CACF,EACAD,EAAS,CACP,MAAO,GAAG,GAAG,CACf,CACF,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,8CAA+C,SAAY,CAE5D,MAAME,EAAO,IAAIP,EACf,CACE,QAAS,OACX,EACAI,EACAC,CACF,EAEAC,EACG,sBACCL,EAAqB,CAAE,KAAM,CAAE,YAAa,EAAG,CAAE,CAAC,CACpD,EACC,sBACCA,EAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,EAAM,GAAM,GAAM,IAAM,GAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EACC,sBACCA,EAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EACC,sBACCA,EAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EAGF,MAAMO,EAAS,MAAMD,EAAK,IAAI,EAG9B,OAAOJ,EAAmBK,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5C,OACGA,EAAkD,KAAK,cAC1D,EAAE,KAAK,kCAAkC,CAC3C,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,0DAA2D,SAAY,CAExE,MAAMD,EAAO,IAAIP,EACf,CACE,QAAS,OACX,EACAI,EACAC,CACF,EAEAC,EAAY,sBACVL,EAAqB,CACnB,MAAO,IAAIF,EAA8B,CACvC,QAAS,yBACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGA,MAAMS,EAAS,MAAMD,EAAK,IAAI,EAG9B,OAAOC,CAAM,EAAE,cACbN,EAAiB,CACf,MAAO,IAAIH,EAA8B,CACvC,QAAS,yBACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAED,GAAG,6DAA8D,SAAY,CAE3E,MAAMQ,EAAO,IAAIP,EACf,CACE,QAAS,OACX,EACAI,EACAC,CACF,EAEAC,EACG,sBACCL,EAAqB,CAAE,KAAM,CAAE,YAAa,GAAI,CAAE,CAAC,CACrD,EACC,sBACCA,EAAqB,CACnB,MAAO,IAAIH,EAA0B,CACnC,QAAS,qCACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGF,MAAMU,EAAS,MAAMD,EAAK,IAAI,EAG9B,OAAOJ,EAAmBK,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,OACGA,EAAgD,KACnD,EAAE,eAAeV,CAAyB,EAC1C,OACGU,EAAgD,MAAM,OACzD,EAAE,KAAK,oCAAoC,CAC7C,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["BackupStorageCommandError", "GetAppStorageInfoCommandError", "BackupAppStorageTask", "CommandResultFactory", "DmkResultFactory", "isSuccessDmkResult", "api", "logger", "sendCommand", "task", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ class o{_tag="InvalidGetFirmwareMetadataResponseError";originalError;constructor(r){this.originalError=new Error(r??"Invalid Firmware Metadata response error.")}}class t{_tag="GetApplicationsMetadataTaskError";originalError;constructor(r){this.originalError=new Error(r??"Failed to get applications metadata.")}}export{t as GetApplicationsMetadataTaskError,o as InvalidGetFirmwareMetadataResponseError};
2
+ //# sourceMappingURL=Errors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/api/device-action/task/Errors.ts"],
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\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\nexport class GetApplicationsMetadataTaskError implements DmkError {\n readonly _tag = \"GetApplicationsMetadataTaskError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Failed to get applications metadata.\",\n );\n }\n}\n"],
5
+ "mappings": "AAEO,MAAMA,CAA4D,CAC9D,KAAO,0CACP,cAET,YAAYC,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,2CACb,CACF,CACF,CAEO,MAAMC,CAAqD,CACvD,KAAO,mCACP,cAET,YAAYD,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,sCACb,CACF,CACF",
6
+ "names": ["InvalidGetFirmwareMetadataResponseError", "message", "GetApplicationsMetadataTaskError"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{gt as v}from"semver";import{InvalidStatusWordError as m}from"../../command/Errors";import{CommandResultFactory as p,isSuccessCommandResult as y}from"../../command/model/CommandResult";import{ListLanguagePackCommand as C}from"../../command/os/ListLanguagePackCommand";const w="0000000000000000000000000000000000000000000000000000000000000000";class M{constructor(e,n){this.api=e;this.args=n}async run(){const e=this.args.installedApps.filter(a=>this.isApplication(a)),n=this.api.getManagerApiService(),u=e.map(a=>a.hash),l=await n.getAppsByHash(u).chain(a=>n.getAppList(this.args.firmwareVersion.metadata).map(t=>({applications:a,catalog:t})));if(l.isLeft())return p({error:new m("Cannot get the application catalog")});const{applications:c,catalog:s}=l.unsafeCoerce(),A=c.reduce((a,t,i)=>{if(t!==null)return[...a,t];const o=e[i],d=s.find(h=>h.versionName===o.name);return d?[...a,d]:a},[]),f=c.filter(a=>a!==null).reduce((a,t)=>{const i=s.find(o=>o.versionName===t.versionName);return i&&v(i.version,t.version)?[...a,i]:a},[]);let r=[];for(let a=0;;a++){const t=await this.api.sendCommand(new C({firstChunk:a===0}));if(!y(t)||t.data===void 0)break;r=[...r,t.data]}const g=await n.getLanguagePackages(this.args.deviceVersion,this.args.firmware);return g.isRight()?p({data:{applications:A,applicationsUpdates:f,installedLanguages:r,catalog:{applications:s,languagePackages:g.extract()}}}):p({error:new m("Cannot get the languages catalog")})}isApplication(e){return e.hashCode!==w}}export{M as GetApplicationsMetadataTask};
1
+ import{gt as k}from"semver";import{isSuccessCommandResult as y}from"../../command/model/CommandResult";import{ListLanguagePackCommand as v}from"../../command/os/ListLanguagePackCommand";import{GetApplicationsMetadataTaskError as m}from"../../device-action/task/Errors";import{DmkResultFactory as p}from"../../model/DmkResult";const w="0000000000000000000000000000000000000000000000000000000000000000";class V{constructor(e,s){this.api=e;this.args=s}async run(){const e=this.args.installedApps.filter(a=>this.isApplication(a)),s=this.api.getManagerApiService(),u=e.map(a=>a.hash),l=await s.getAppsByHash(u).chain(a=>s.getAppList(this.args.firmwareVersion.metadata).map(t=>({applications:a,catalog:t})));if(l.isLeft())return p({error:new m("Cannot get the application catalog")});const{applications:c,catalog:n}=l.unsafeCoerce(),A=c.reduce((a,t,i)=>{if(t!==null)return[...a,t];const o=e[i],d=n.find(h=>h.versionName===o.name);return d?[...a,d]:a},[]),f=c.filter(a=>a!==null).reduce((a,t)=>{const i=n.find(o=>o.versionName===t.versionName);return i&&k(i.version,t.version)?[...a,i]:a},[]);let r=[];for(let a=0;;a++){const t=await this.api.sendCommand(new v({firstChunk:a===0}));if(!y(t)||t.data===void 0)break;r=[...r,t.data]}const g=await s.getLanguagePackages(this.args.deviceVersion,this.args.firmware);return g.isRight()?p({data:{applications:A,applicationsUpdates:f,installedLanguages:r,catalog:{applications:n,languagePackages:g.extract()}}}):p({error:new m("Cannot get the languages catalog")})}isApplication(e){return e.hashCode!==w}}export{V as GetApplicationsMetadataTask};
2
2
  //# sourceMappingURL=GetApplicationsMetadataTask.js.map