@ledgerhq/device-management-kit 0.5.1 → 0.6.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 (921) hide show
  1. package/README.md +27 -31
  2. package/lib/cjs/package.json +13 -14
  3. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  4. package/lib/cjs/src/api/DeviceManagementKit.js.map +3 -3
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  6. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  7. package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
  8. package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
  9. package/lib/cjs/src/api/DmkConfig.js +1 -1
  10. package/lib/cjs/src/api/DmkConfig.js.map +1 -1
  11. package/lib/cjs/src/api/Error.js +1 -1
  12. package/lib/cjs/src/api/Error.js.map +3 -3
  13. package/lib/cjs/src/api/apdu/utils/ApduParser.test.js +1 -1
  14. package/lib/cjs/src/api/apdu/utils/ApduParser.test.js.map +2 -2
  15. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  16. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +2 -2
  17. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  18. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  19. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js +1 -1
  20. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js.map +2 -2
  21. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js +1 -1
  22. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js.map +2 -2
  23. package/lib/cjs/src/api/command/model/CommandResult.js.map +1 -1
  24. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +1 -1
  25. package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +2 -2
  26. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  27. package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +2 -2
  28. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js +2 -0
  29. package/lib/cjs/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +7 -0
  30. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js.map +2 -2
  31. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  32. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  33. package/lib/cjs/src/api/command/utils/CommandUtils.js +1 -1
  34. package/lib/cjs/src/api/command/utils/CommandUtils.js.map +2 -2
  35. package/lib/cjs/src/api/device/DeviceModel.js +1 -1
  36. package/lib/cjs/src/api/device/DeviceModel.js.map +3 -3
  37. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  38. package/lib/cjs/src/api/device-action/__test-utils__/data.js +1 -1
  39. package/lib/cjs/src/api/device-action/__test-utils__/data.js.map +3 -3
  40. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  41. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  42. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  43. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  44. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  45. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  46. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  47. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +2 -2
  48. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  49. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  50. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/types.js.map +1 -1
  51. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  52. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +2 -2
  53. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  54. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  55. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -1
  56. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +1 -1
  57. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  58. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  59. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -1
  60. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +1 -1
  61. package/lib/cjs/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js.map +2 -2
  62. package/lib/cjs/src/api/device-model/data/DeviceModelDataSource.js +2 -0
  63. package/lib/cjs/src/api/device-model/data/DeviceModelDataSource.js.map +7 -0
  64. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +2 -0
  65. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +7 -0
  66. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js +2 -0
  67. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +7 -0
  68. package/lib/cjs/src/api/device-model/model/BleDeviceInfos.js +2 -0
  69. package/lib/cjs/src/api/device-model/model/BleDeviceInfos.js.map +7 -0
  70. package/lib/cjs/src/api/device-model/model/DeviceModel.js +2 -0
  71. package/lib/cjs/src/api/device-model/model/DeviceModel.js.map +7 -0
  72. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js +2 -0
  73. package/lib/cjs/src/api/device-model/model/DeviceModel.stub.js.map +7 -0
  74. package/lib/cjs/src/api/device-model/model/DeviceModel.test.js +2 -0
  75. package/lib/cjs/src/api/device-model/model/DeviceModel.test.js.map +7 -0
  76. package/lib/cjs/src/api/device-session/DeviceSessionState.js +1 -1
  77. package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +2 -2
  78. package/lib/cjs/src/{internal → api}/device-session/data/FramerConst.js.map +1 -1
  79. package/lib/cjs/src/api/device-session/service/ApduReceiverService.js +2 -0
  80. package/lib/cjs/src/{internal → api}/device-session/service/ApduReceiverService.js.map +2 -2
  81. package/lib/cjs/src/api/device-session/service/ApduSenderService.js +2 -0
  82. package/lib/cjs/src/api/device-session/service/ApduSenderService.js.map +7 -0
  83. package/lib/cjs/src/api/device-session/service/DefaultApduReceiverService.stub.js +2 -0
  84. package/lib/cjs/src/api/device-session/service/DefaultApduReceiverService.stub.js.map +7 -0
  85. package/lib/cjs/src/api/device-session/service/DefaultApduSenderService.stub.js +2 -0
  86. package/lib/cjs/src/api/device-session/service/DefaultApduSenderService.stub.js.map +7 -0
  87. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js +2 -0
  88. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js.map +7 -0
  89. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +2 -0
  90. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +7 -0
  91. package/lib/cjs/src/{internal → api}/device-session/utils/FramerUtils.js.map +1 -1
  92. package/lib/cjs/src/{internal → api}/device-session/utils/FramerUtils.test.js.map +1 -1
  93. package/lib/cjs/src/api/index.js +1 -1
  94. package/lib/cjs/src/api/index.js.map +3 -3
  95. package/lib/cjs/src/{internal → api}/logger-publisher/service/LoggerPublisherService.js.map +1 -1
  96. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  97. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  98. package/lib/cjs/src/api/logger-subscriber/{__mocks__ → service/__mocks__}/ConsoleLogger.js.map +1 -1
  99. package/lib/cjs/src/api/transport/model/ConnectedDevice.js +1 -1
  100. package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +2 -2
  101. package/lib/cjs/src/{internal → api}/transport/model/DeviceConnection.js.map +1 -1
  102. package/lib/cjs/src/api/transport/model/DeviceConnectionFactory.stub.js +2 -0
  103. package/lib/cjs/src/api/transport/model/DeviceConnectionFactory.stub.js.map +7 -0
  104. package/lib/cjs/src/api/transport/model/Errors.js +2 -0
  105. package/lib/cjs/src/api/transport/model/Errors.js.map +7 -0
  106. package/lib/cjs/src/api/transport/model/Transport.js +1 -1
  107. package/lib/cjs/src/api/transport/model/Transport.js.map +1 -1
  108. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js +2 -0
  109. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js.map +7 -0
  110. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.stub.js +2 -0
  111. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.stub.js.map +7 -0
  112. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.test.js +2 -0
  113. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.test.js.map +7 -0
  114. package/lib/cjs/src/api/transport/model/TransportDiscoveredDevice.js +2 -0
  115. package/lib/cjs/src/api/transport/model/TransportDiscoveredDevice.js.map +7 -0
  116. package/lib/cjs/src/api/transport/model/TransportIdentifier.js +1 -1
  117. package/lib/cjs/src/api/transport/model/TransportIdentifier.js.map +3 -3
  118. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js +2 -0
  119. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js.map +7 -0
  120. package/lib/cjs/src/api/types.js +1 -1
  121. package/lib/cjs/src/api/types.js.map +1 -1
  122. package/lib/cjs/src/di.js +1 -1
  123. package/lib/cjs/src/di.js.map +3 -3
  124. package/lib/cjs/src/internal/config/service/DefaultConfigService.js +1 -1
  125. package/lib/cjs/src/internal/config/service/DefaultConfigService.js.map +2 -2
  126. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +1 -1
  127. package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +2 -2
  128. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  129. package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  130. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +1 -1
  131. package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  132. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  133. package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  134. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  135. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  136. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  137. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  138. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  139. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +2 -2
  140. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  141. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  142. package/lib/cjs/src/internal/device-session/model/Errors.js.map +1 -1
  143. package/lib/cjs/src/internal/device-session/model/FrameHeader.js +1 -1
  144. package/lib/cjs/src/internal/device-session/model/FrameHeader.js.map +2 -2
  145. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  146. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js.map +3 -3
  147. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js +1 -1
  148. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +3 -3
  149. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  150. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +3 -3
  151. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  152. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +3 -3
  153. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  154. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  155. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +2 -2
  156. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +2 -0
  157. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +7 -0
  158. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js.map +2 -2
  159. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  160. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  161. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  162. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  163. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  164. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  165. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  166. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  167. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  168. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  169. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  170. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  171. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +1 -1
  172. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +2 -2
  173. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  174. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +2 -2
  175. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js +1 -1
  176. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js.map +2 -2
  177. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  178. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +2 -2
  179. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +1 -1
  180. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +2 -2
  181. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  182. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  183. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +1 -1
  184. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +3 -3
  185. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +1 -1
  186. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +3 -3
  187. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  188. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +3 -3
  189. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  190. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +3 -3
  191. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  192. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  193. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  194. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  195. package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +2 -2
  196. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js.map +2 -2
  197. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js +2 -0
  198. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js.map +7 -0
  199. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  200. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  201. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  202. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  203. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  204. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  205. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  206. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  207. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  208. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  209. package/lib/cjs/src/internal/manager-api/model/{ManagerApiType.js → Application.js} +2 -2
  210. package/lib/cjs/src/internal/manager-api/model/Application.js.map +7 -0
  211. package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
  212. package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
  213. package/lib/cjs/src/internal/manager-api/model/Device.js +2 -0
  214. package/lib/cjs/src/internal/manager-api/model/Device.js.map +7 -0
  215. package/lib/cjs/src/internal/manager-api/model/Errors.js +1 -1
  216. package/lib/cjs/src/internal/manager-api/model/Errors.js.map +3 -3
  217. package/lib/cjs/src/internal/manager-api/model/Firmware.js +2 -0
  218. package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +7 -0
  219. package/lib/cjs/src/internal/manager-api/model/Params.js +2 -0
  220. package/lib/cjs/src/internal/manager-api/model/Params.js.map +7 -0
  221. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  222. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  223. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  224. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  225. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +1 -1
  226. package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +1 -1
  227. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +1 -1
  228. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +2 -2
  229. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  230. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  231. package/lib/cjs/src/internal/transport/di/transportDiTypes.js +1 -1
  232. package/lib/cjs/src/internal/transport/di/transportDiTypes.js.map +2 -2
  233. package/lib/cjs/src/internal/transport/di/transportModule.js +1 -1
  234. package/lib/cjs/src/internal/transport/di/transportModule.js.map +3 -3
  235. package/lib/cjs/src/internal/transport/di/transportModule.test.js +2 -0
  236. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +7 -0
  237. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js +2 -0
  238. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js.map +7 -0
  239. package/lib/cjs/src/internal/transport/service/DefaultTransportService.test.js +2 -0
  240. package/lib/cjs/src/internal/transport/service/DefaultTransportService.test.js.map +7 -0
  241. package/lib/cjs/src/internal/transport/service/TransportService.js +2 -0
  242. package/lib/cjs/src/internal/transport/service/TransportService.js.map +7 -0
  243. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js +2 -0
  244. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +7 -0
  245. package/lib/esm/package.json +13 -14
  246. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  247. package/lib/esm/src/api/DeviceManagementKit.js.map +3 -3
  248. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  249. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  250. package/lib/esm/src/api/DeviceManagementKitBuilder.js +1 -1
  251. package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +3 -3
  252. package/lib/esm/src/api/Error.js +1 -1
  253. package/lib/esm/src/api/Error.js.map +3 -3
  254. package/lib/esm/src/api/apdu/utils/ApduParser.test.js +1 -1
  255. package/lib/esm/src/api/apdu/utils/ApduParser.test.js.map +2 -2
  256. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  257. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +2 -2
  258. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  259. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  260. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js +1 -1
  261. package/lib/esm/src/api/apdu/utils/ByteArrayParser.js.map +2 -2
  262. package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js +1 -1
  263. package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js.map +2 -2
  264. package/lib/esm/src/api/command/model/CommandResult.js.map +1 -1
  265. package/lib/esm/src/api/command/os/GetOsVersionCommand.js +1 -1
  266. package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +2 -2
  267. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +1 -1
  268. package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +3 -3
  269. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js +2 -0
  270. package/lib/esm/src/api/command/os/__mocks__/GetOsVersionCommand.js.map +7 -0
  271. package/lib/esm/src/api/command/use-case/SendCommandUseCase.js.map +2 -2
  272. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  273. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  274. package/lib/esm/src/api/command/utils/CommandUtils.js +1 -1
  275. package/lib/esm/src/api/command/utils/CommandUtils.js.map +2 -2
  276. package/lib/esm/src/api/device/DeviceModel.js +1 -1
  277. package/lib/esm/src/api/device/DeviceModel.js.map +3 -3
  278. package/lib/esm/src/api/device-action/__test-utils__/data.js +1 -1
  279. package/lib/esm/src/api/device-action/__test-utils__/data.js.map +2 -2
  280. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  281. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  282. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  283. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  284. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  285. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  286. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +1 -1
  287. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +2 -2
  288. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  289. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  290. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +1 -1
  291. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +2 -2
  292. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  293. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  294. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +1 -1
  295. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +2 -2
  296. package/lib/esm/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js.map +2 -2
  297. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +2 -0
  298. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +7 -0
  299. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js +2 -0
  300. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +7 -0
  301. package/lib/esm/src/api/device-model/model/BleDeviceInfos.js +2 -0
  302. package/lib/esm/src/api/device-model/model/BleDeviceInfos.js.map +7 -0
  303. package/lib/esm/src/api/device-model/model/DeviceModel.js +2 -0
  304. package/lib/esm/src/api/device-model/model/DeviceModel.js.map +7 -0
  305. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js +2 -0
  306. package/lib/esm/src/api/device-model/model/DeviceModel.stub.js.map +7 -0
  307. package/lib/esm/src/api/device-model/model/DeviceModel.test.js +2 -0
  308. package/lib/esm/src/api/device-model/model/DeviceModel.test.js.map +7 -0
  309. package/lib/esm/src/api/device-session/DeviceSessionState.js.map +2 -2
  310. package/lib/esm/src/{internal → api}/device-session/data/FramerConst.js.map +1 -1
  311. package/lib/esm/src/api/device-session/service/DefaultApduReceiverService.stub.js +2 -0
  312. package/lib/esm/src/api/device-session/service/DefaultApduReceiverService.stub.js.map +7 -0
  313. package/lib/esm/src/api/device-session/service/DefaultApduSenderService.stub.js +2 -0
  314. package/lib/esm/src/api/device-session/service/DefaultApduSenderService.stub.js.map +7 -0
  315. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js +2 -0
  316. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.js.map +7 -0
  317. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +2 -0
  318. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +7 -0
  319. package/lib/esm/src/{internal → api}/device-session/utils/FramerUtils.js.map +1 -1
  320. package/lib/esm/src/{internal → api}/device-session/utils/FramerUtils.test.js.map +1 -1
  321. package/lib/esm/src/api/index.js +1 -1
  322. package/lib/esm/src/api/index.js.map +3 -3
  323. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  324. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +3 -3
  325. package/lib/esm/src/api/logger-subscriber/{__mocks__ → service/__mocks__}/ConsoleLogger.js.map +1 -1
  326. package/lib/esm/src/api/transport/model/ConnectedDevice.js +1 -1
  327. package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +2 -2
  328. package/lib/esm/src/api/transport/model/DeviceConnectionFactory.stub.js +2 -0
  329. package/lib/esm/src/api/transport/model/DeviceConnectionFactory.stub.js.map +7 -0
  330. package/lib/esm/src/api/transport/model/Errors.js +2 -0
  331. package/lib/esm/src/api/transport/model/Errors.js.map +7 -0
  332. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js +2 -0
  333. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js.map +7 -0
  334. package/lib/esm/src/api/transport/model/TransportConnectedDevice.stub.js +2 -0
  335. package/lib/esm/src/api/transport/model/TransportConnectedDevice.stub.js.map +7 -0
  336. package/lib/esm/src/api/transport/model/TransportConnectedDevice.test.js +2 -0
  337. package/lib/esm/src/api/transport/model/TransportConnectedDevice.test.js.map +7 -0
  338. package/lib/esm/src/api/transport/model/TransportDiscoveredDevice.js +1 -0
  339. package/lib/esm/src/api/transport/model/TransportIdentifier.js +0 -1
  340. package/lib/esm/src/api/transport/model/TransportIdentifier.js.map +4 -4
  341. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js +2 -0
  342. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js.map +7 -0
  343. package/lib/esm/src/di.js +1 -1
  344. package/lib/esm/src/di.js.map +3 -3
  345. package/lib/esm/src/internal/config/service/DefaultConfigService.js +1 -1
  346. package/lib/esm/src/internal/config/service/DefaultConfigService.js.map +2 -2
  347. package/lib/esm/src/internal/device-model/di/deviceModelModule.js +1 -1
  348. package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +2 -2
  349. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +1 -1
  350. package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +2 -2
  351. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +1 -1
  352. package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +3 -3
  353. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +1 -1
  354. package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +2 -2
  355. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  356. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  357. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  358. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  359. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +1 -1
  360. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +2 -2
  361. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  362. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  363. package/lib/esm/src/internal/device-session/model/Errors.js.map +1 -1
  364. package/lib/esm/src/internal/device-session/model/FrameHeader.js +1 -1
  365. package/lib/esm/src/internal/device-session/model/FrameHeader.js.map +2 -2
  366. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  367. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js.map +3 -3
  368. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js +1 -1
  369. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +3 -3
  370. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  371. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +3 -3
  372. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  373. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +3 -3
  374. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  375. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  376. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +2 -2
  377. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +2 -0
  378. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +7 -0
  379. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js.map +2 -2
  380. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  381. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  382. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  383. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  384. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  385. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  386. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  387. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  388. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  389. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  390. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  391. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  392. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +1 -1
  393. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +2 -2
  394. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  395. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +2 -2
  396. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js +1 -1
  397. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js.map +2 -2
  398. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  399. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +2 -2
  400. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +1 -1
  401. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +2 -2
  402. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  403. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  404. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +1 -1
  405. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +3 -3
  406. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +1 -1
  407. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +3 -3
  408. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  409. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +3 -3
  410. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  411. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +3 -3
  412. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js +1 -1
  413. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +3 -3
  414. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  415. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +3 -3
  416. package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +2 -2
  417. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js.map +2 -2
  418. package/lib/esm/src/internal/logger-publisher/service/{__mocks__/DefaultLoggerService.js → DefaultLoggerPublisherService.stub.js} +2 -2
  419. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js.map +7 -0
  420. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  421. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  422. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  423. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  424. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  425. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  426. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  427. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +2 -2
  428. package/lib/esm/src/internal/manager-api/model/{ManagerApiType.js → Application.js} +1 -1
  429. package/lib/esm/src/internal/manager-api/model/Application.js.map +7 -0
  430. package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
  431. package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
  432. package/lib/esm/src/internal/manager-api/model/Device.js +1 -0
  433. package/lib/esm/src/internal/manager-api/model/Device.js.map +7 -0
  434. package/lib/esm/src/internal/manager-api/model/Errors.js +1 -1
  435. package/lib/esm/src/internal/manager-api/model/Errors.js.map +3 -3
  436. package/lib/esm/src/internal/manager-api/model/Firmware.js +1 -0
  437. package/lib/esm/src/internal/manager-api/model/Firmware.js.map +7 -0
  438. package/lib/esm/src/internal/manager-api/model/Params.js +1 -0
  439. package/lib/esm/src/internal/manager-api/model/Params.js.map +7 -0
  440. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  441. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +3 -3
  442. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  443. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +3 -3
  444. package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +2 -2
  445. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  446. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  447. package/lib/esm/src/internal/transport/di/transportDiTypes.js +1 -1
  448. package/lib/esm/src/internal/transport/di/transportDiTypes.js.map +2 -2
  449. package/lib/esm/src/internal/transport/di/transportModule.js +1 -1
  450. package/lib/esm/src/internal/transport/di/transportModule.js.map +3 -3
  451. package/lib/esm/src/internal/transport/di/transportModule.test.js +2 -0
  452. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +7 -0
  453. package/lib/esm/src/internal/transport/service/DefaultTransportService.js +2 -0
  454. package/lib/esm/src/internal/transport/service/DefaultTransportService.js.map +7 -0
  455. package/lib/esm/src/internal/transport/service/DefaultTransportService.test.js +2 -0
  456. package/lib/esm/src/internal/transport/service/DefaultTransportService.test.js.map +7 -0
  457. package/lib/esm/src/internal/transport/service/TransportService.js +1 -0
  458. package/lib/esm/src/internal/transport/service/TransportService.js.map +7 -0
  459. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js +2 -0
  460. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +7 -0
  461. package/lib/types/src/api/DeviceManagementKit.d.ts +9 -0
  462. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  463. package/lib/types/src/api/DeviceManagementKitBuilder.d.ts +4 -7
  464. package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -1
  465. package/lib/types/src/api/DmkConfig.d.ts +1 -0
  466. package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
  467. package/lib/types/src/api/Error.d.ts +5 -0
  468. package/lib/types/src/api/Error.d.ts.map +1 -1
  469. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +28 -0
  470. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  471. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts +24 -0
  472. package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts.map +1 -1
  473. package/lib/types/src/api/command/model/CommandResult.d.ts +1 -2
  474. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  475. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +1 -1
  476. package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
  477. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts +4 -0
  478. package/lib/types/src/api/command/os/__mocks__/GetOsVersionCommand.d.ts.map +1 -0
  479. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts +1 -1
  480. package/lib/types/src/api/command/use-case/SendCommandUseCase.d.ts.map +1 -1
  481. package/lib/types/src/api/device/DeviceModel.d.ts +1 -0
  482. package/lib/types/src/api/device/DeviceModel.d.ts.map +1 -1
  483. package/lib/types/src/api/device-action/DeviceAction.d.ts +1 -1
  484. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  485. package/lib/types/src/api/device-action/__test-utils__/data.d.ts +1 -1
  486. package/lib/types/src/api/device-action/__test-utils__/data.d.ts.map +1 -1
  487. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts +1 -1
  488. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts.map +1 -1
  489. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts +1 -1
  490. package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts.map +1 -1
  491. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
  492. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +1 -0
  493. package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
  494. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
  495. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +1 -0
  496. package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
  497. package/lib/types/src/api/device-action/use-case/ExecuteDeviceActionUseCase.d.ts +1 -1
  498. package/lib/types/src/api/device-action/use-case/ExecuteDeviceActionUseCase.d.ts.map +1 -1
  499. package/lib/types/src/api/device-model/data/DeviceModelDataSource.d.ts +16 -0
  500. package/lib/types/src/api/device-model/data/DeviceModelDataSource.d.ts.map +1 -0
  501. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts +21 -0
  502. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -0
  503. package/lib/types/src/api/device-model/data/StaticDeviceModelDataSource.test.d.ts.map +1 -0
  504. package/lib/types/src/api/device-model/model/BleDeviceInfos.d.ts +10 -0
  505. package/lib/types/src/api/device-model/model/BleDeviceInfos.d.ts.map +1 -0
  506. package/lib/types/src/{internal → api}/device-model/model/DeviceModel.d.ts +2 -2
  507. package/lib/types/src/api/device-model/model/DeviceModel.d.ts.map +1 -0
  508. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts +3 -0
  509. package/lib/types/src/api/device-model/model/DeviceModel.stub.d.ts.map +1 -0
  510. package/lib/types/src/api/device-model/model/DeviceModel.test.d.ts.map +1 -0
  511. package/lib/types/src/api/device-session/DeviceSessionState.d.ts +6 -1
  512. package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
  513. package/lib/types/src/api/device-session/data/FramerConst.d.ts.map +1 -0
  514. package/lib/types/src/api/device-session/service/ApduReceiverService.d.ts +11 -0
  515. package/lib/types/src/api/device-session/service/ApduReceiverService.d.ts.map +1 -0
  516. package/lib/types/src/api/device-session/service/ApduSenderService.d.ts +12 -0
  517. package/lib/types/src/api/device-session/service/ApduSenderService.d.ts.map +1 -0
  518. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts +5 -0
  519. package/lib/types/src/api/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -0
  520. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts +5 -0
  521. package/lib/types/src/api/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -0
  522. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.d.ts +17 -0
  523. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.d.ts.map +1 -0
  524. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.d.ts +2 -0
  525. package/lib/types/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.d.ts.map +1 -0
  526. package/lib/types/src/api/device-session/utils/FramerUtils.d.ts.map +1 -0
  527. package/lib/types/src/api/device-session/utils/FramerUtils.test.d.ts.map +1 -0
  528. package/lib/types/src/api/index.d.ts +23 -23
  529. package/lib/types/src/api/index.d.ts.map +1 -1
  530. package/lib/types/src/{internal → api}/logger-publisher/service/LoggerPublisherService.d.ts +2 -2
  531. package/lib/types/src/api/logger-publisher/service/LoggerPublisherService.d.ts.map +1 -0
  532. package/lib/types/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.d.ts.map +1 -0
  533. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +3 -3
  534. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
  535. package/lib/types/src/{internal → api}/transport/model/DeviceConnection.d.ts +3 -3
  536. package/lib/types/src/api/transport/model/DeviceConnection.d.ts.map +1 -0
  537. package/lib/types/src/api/transport/model/DeviceConnectionFactory.stub.d.ts +5 -0
  538. package/lib/types/src/api/transport/model/DeviceConnectionFactory.stub.d.ts.map +1 -0
  539. package/lib/types/src/api/transport/model/Errors.d.ts +73 -0
  540. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -0
  541. package/lib/types/src/api/transport/model/Transport.d.ts +20 -7
  542. package/lib/types/src/api/transport/model/Transport.d.ts.map +1 -1
  543. package/lib/types/src/{internal/transport/model/InternalConnectedDevice.d.ts → api/transport/model/TransportConnectedDevice.d.ts} +8 -8
  544. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts.map +1 -0
  545. package/lib/types/src/api/transport/model/TransportConnectedDevice.stub.d.ts +3 -0
  546. package/lib/types/src/api/transport/model/TransportConnectedDevice.stub.d.ts.map +1 -0
  547. package/lib/types/src/api/transport/model/TransportConnectedDevice.test.d.ts +2 -0
  548. package/lib/types/src/api/transport/model/TransportConnectedDevice.test.d.ts.map +1 -0
  549. package/lib/types/src/{internal/transport/model/InternalDiscoveredDevice.d.ts → api/transport/model/TransportDiscoveredDevice.d.ts} +6 -6
  550. package/lib/types/src/api/transport/model/TransportDiscoveredDevice.d.ts.map +1 -0
  551. package/lib/types/src/api/transport/model/TransportIdentifier.d.ts +0 -5
  552. package/lib/types/src/api/transport/model/TransportIdentifier.d.ts.map +1 -1
  553. package/lib/types/src/{internal/transport/usb/transport/__mocks__/WebUsbHidTransport.d.ts → api/transport/model/__mocks__/TransportMock.d.ts} +7 -7
  554. package/lib/types/src/api/transport/model/__mocks__/TransportMock.d.ts.map +1 -0
  555. package/lib/types/src/api/types.d.ts +21 -3
  556. package/lib/types/src/api/types.d.ts.map +1 -1
  557. package/lib/types/src/di.d.ts +3 -5
  558. package/lib/types/src/di.d.ts.map +1 -1
  559. package/lib/types/src/internal/config/service/DefaultConfigService.d.ts +1 -1
  560. package/lib/types/src/internal/config/service/DefaultConfigService.d.ts.map +1 -1
  561. package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
  562. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +1 -0
  563. package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts.map +1 -1
  564. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +7 -5
  565. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  566. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts +1 -1
  567. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  568. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +9 -2
  569. package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
  570. package/lib/types/src/internal/device-session/model/Errors.d.ts +1 -1
  571. package/lib/types/src/internal/device-session/model/Errors.d.ts.map +1 -1
  572. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.d.ts +3 -6
  573. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.d.ts.map +1 -1
  574. package/lib/types/src/internal/device-session/service/DefaultApduSenderService.d.ts +4 -9
  575. package/lib/types/src/internal/device-session/service/DefaultApduSenderService.d.ts.map +1 -1
  576. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts +1 -1
  577. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
  578. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.test.d.ts +2 -0
  579. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.test.d.ts.map +1 -0
  580. package/lib/types/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.d.ts +1 -1
  581. package/lib/types/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.d.ts.map +1 -1
  582. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +4 -4
  583. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  584. package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts +4 -4
  585. package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts.map +1 -1
  586. package/lib/types/src/internal/discovery/use-case/GetConnectedDeviceUseCase.d.ts +1 -1
  587. package/lib/types/src/internal/discovery/use-case/GetConnectedDeviceUseCase.d.ts.map +1 -1
  588. package/lib/types/src/internal/discovery/use-case/ListConnectedDevicesUseCase.d.ts +1 -1
  589. package/lib/types/src/internal/discovery/use-case/ListConnectedDevicesUseCase.d.ts.map +1 -1
  590. package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts +1 -1
  591. package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts.map +1 -1
  592. package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.d.ts +3 -3
  593. package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.d.ts.map +1 -1
  594. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts +3 -3
  595. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts.map +1 -1
  596. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts +3 -3
  597. package/lib/types/src/internal/discovery/use-case/StopDiscoveringUseCase.d.ts.map +1 -1
  598. package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
  599. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.d.ts +1 -1
  600. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.d.ts.map +1 -1
  601. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.d.ts +11 -0
  602. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.d.ts.map +1 -0
  603. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +20 -6
  604. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
  605. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +75 -3
  606. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  607. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +8 -0
  608. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
  609. package/lib/types/src/internal/manager-api/model/{ManagerApiType.d.ts → Application.d.ts} +2 -3
  610. package/lib/types/src/internal/manager-api/model/Application.d.ts.map +1 -0
  611. package/lib/types/src/internal/manager-api/model/Const.d.ts +1 -0
  612. package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
  613. package/lib/types/src/internal/manager-api/model/Device.d.ts +4 -0
  614. package/lib/types/src/internal/manager-api/model/Device.d.ts.map +1 -0
  615. package/lib/types/src/internal/manager-api/model/Errors.d.ts +6 -0
  616. package/lib/types/src/internal/manager-api/model/Errors.d.ts.map +1 -1
  617. package/lib/types/src/internal/manager-api/model/Firmware.d.ts +5 -0
  618. package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -0
  619. package/lib/types/src/internal/manager-api/model/Params.d.ts +86 -0
  620. package/lib/types/src/internal/manager-api/model/Params.d.ts.map +1 -0
  621. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts +5 -1
  622. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
  623. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +6 -1
  624. package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
  625. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +1 -1
  626. package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts.map +1 -1
  627. package/lib/types/src/internal/transport/di/transportDiTypes.d.ts +2 -1
  628. package/lib/types/src/internal/transport/di/transportDiTypes.d.ts.map +1 -1
  629. package/lib/types/src/internal/transport/di/transportModule.d.ts +3 -5
  630. package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
  631. package/lib/types/src/internal/transport/di/transportModule.test.d.ts +2 -0
  632. package/lib/types/src/internal/transport/di/transportModule.test.d.ts.map +1 -0
  633. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts +25 -0
  634. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts.map +1 -0
  635. package/lib/types/src/internal/transport/service/DefaultTransportService.test.d.ts +2 -0
  636. package/lib/types/src/internal/transport/service/DefaultTransportService.test.d.ts.map +1 -0
  637. package/lib/types/src/internal/transport/service/TransportService.d.ts +9 -0
  638. package/lib/types/src/internal/transport/service/TransportService.d.ts.map +1 -0
  639. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts +19 -0
  640. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts.map +1 -0
  641. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  642. package/package.json +15 -16
  643. package/lib/cjs/src/internal/device-model/data/DeviceModelDataSource.js +0 -2
  644. package/lib/cjs/src/internal/device-model/data/DeviceModelDataSource.js.map +0 -7
  645. package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.js +0 -2
  646. package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.js.map +0 -7
  647. package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.test.js +0 -2
  648. package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.test.js.map +0 -7
  649. package/lib/cjs/src/internal/device-model/model/DeviceModel.js +0 -2
  650. package/lib/cjs/src/internal/device-model/model/DeviceModel.js.map +0 -7
  651. package/lib/cjs/src/internal/device-model/model/DeviceModel.stub.js +0 -2
  652. package/lib/cjs/src/internal/device-model/model/DeviceModel.stub.js.map +0 -7
  653. package/lib/cjs/src/internal/device-model/model/DeviceModel.test.js +0 -2
  654. package/lib/cjs/src/internal/device-model/model/DeviceModel.test.js.map +0 -7
  655. package/lib/cjs/src/internal/device-session/service/ApduReceiverService.js +0 -2
  656. package/lib/cjs/src/internal/device-session/service/ApduSenderService.js +0 -2
  657. package/lib/cjs/src/internal/device-session/service/ApduSenderService.js.map +0 -7
  658. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.stub.js +0 -2
  659. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.stub.js.map +0 -7
  660. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.stub.js +0 -2
  661. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.stub.js.map +0 -7
  662. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseState.test.js +0 -2
  663. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseState.test.js.map +0 -7
  664. package/lib/cjs/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js +0 -2
  665. package/lib/cjs/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js.map +0 -7
  666. package/lib/cjs/src/internal/manager-api/model/ManagerApiType.js.map +0 -7
  667. package/lib/cjs/src/internal/transport/ble/di/bleDiTypes.js +0 -2
  668. package/lib/cjs/src/internal/transport/ble/di/bleDiTypes.js.map +0 -7
  669. package/lib/cjs/src/internal/transport/ble/di/bleModule.js +0 -2
  670. package/lib/cjs/src/internal/transport/ble/di/bleModule.js.map +0 -7
  671. package/lib/cjs/src/internal/transport/ble/di/bleModule.test.js +0 -2
  672. package/lib/cjs/src/internal/transport/ble/di/bleModule.test.js.map +0 -7
  673. package/lib/cjs/src/internal/transport/ble/model/BleDevice.stub.js +0 -2
  674. package/lib/cjs/src/internal/transport/ble/model/BleDevice.stub.js.map +0 -7
  675. package/lib/cjs/src/internal/transport/ble/model/BleDeviceInfos.js +0 -2
  676. package/lib/cjs/src/internal/transport/ble/model/BleDeviceInfos.js.map +0 -7
  677. package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.js +0 -2
  678. package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.js.map +0 -7
  679. package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js +0 -2
  680. package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js.map +0 -7
  681. package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.js +0 -2
  682. package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.js.map +0 -7
  683. package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.test.js +0 -2
  684. package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.test.js.map +0 -7
  685. package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.js +0 -2
  686. package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.js.map +0 -7
  687. package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.test.js +0 -2
  688. package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.test.js.map +0 -7
  689. package/lib/cjs/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js +0 -2
  690. package/lib/cjs/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js.map +0 -7
  691. package/lib/cjs/src/internal/transport/data/TransportDataSource.js +0 -2
  692. package/lib/cjs/src/internal/transport/data/TransportDataSource.js.map +0 -7
  693. package/lib/cjs/src/internal/transport/mockserver/MockserverTransport.js +0 -2
  694. package/lib/cjs/src/internal/transport/mockserver/MockserverTransport.js.map +0 -7
  695. package/lib/cjs/src/internal/transport/model/Errors.js +0 -2
  696. package/lib/cjs/src/internal/transport/model/Errors.js.map +0 -7
  697. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.js +0 -2
  698. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.js.map +0 -7
  699. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.stub.js +0 -2
  700. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.stub.js.map +0 -7
  701. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.test.js +0 -2
  702. package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.test.js.map +0 -7
  703. package/lib/cjs/src/internal/transport/model/InternalDiscoveredDevice.js +0 -2
  704. package/lib/cjs/src/internal/transport/model/InternalDiscoveredDevice.js.map +0 -7
  705. package/lib/cjs/src/internal/transport/usb/data/UsbHidConfig.js +0 -2
  706. package/lib/cjs/src/internal/transport/usb/data/UsbHidConfig.js.map +0 -7
  707. package/lib/cjs/src/internal/transport/usb/di/usbDiTypes.js +0 -2
  708. package/lib/cjs/src/internal/transport/usb/di/usbDiTypes.js.map +0 -7
  709. package/lib/cjs/src/internal/transport/usb/di/usbModule.js +0 -2
  710. package/lib/cjs/src/internal/transport/usb/di/usbModule.js.map +0 -7
  711. package/lib/cjs/src/internal/transport/usb/di/usbModule.test.js +0 -2
  712. package/lib/cjs/src/internal/transport/usb/di/usbModule.test.js.map +0 -7
  713. package/lib/cjs/src/internal/transport/usb/model/HIDDevice.stub.js +0 -2
  714. package/lib/cjs/src/internal/transport/usb/model/HIDDevice.stub.js.map +0 -7
  715. package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js +0 -2
  716. package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js.map +0 -7
  717. package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js +0 -2
  718. package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js.map +0 -7
  719. package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.js +0 -2
  720. package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.js.map +0 -7
  721. package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js +0 -2
  722. package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js.map +0 -7
  723. package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.js +0 -2
  724. package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.js.map +0 -7
  725. package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.test.js +0 -2
  726. package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.test.js.map +0 -7
  727. package/lib/cjs/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js +0 -2
  728. package/lib/cjs/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js.map +0 -7
  729. package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.js +0 -2
  730. package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.js.map +0 -7
  731. package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.test.js +0 -2
  732. package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.test.js.map +0 -7
  733. package/lib/esm/src/internal/device-model/model/DeviceModel.js +0 -2
  734. package/lib/esm/src/internal/device-model/model/DeviceModel.js.map +0 -7
  735. package/lib/esm/src/internal/device-model/model/DeviceModel.stub.js +0 -2
  736. package/lib/esm/src/internal/device-model/model/DeviceModel.stub.js.map +0 -7
  737. package/lib/esm/src/internal/device-model/model/DeviceModel.test.js +0 -2
  738. package/lib/esm/src/internal/device-model/model/DeviceModel.test.js.map +0 -7
  739. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.stub.js +0 -2
  740. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.stub.js.map +0 -7
  741. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.stub.js +0 -2
  742. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.stub.js.map +0 -7
  743. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseState.test.js +0 -2
  744. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseState.test.js.map +0 -7
  745. package/lib/esm/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js.map +0 -7
  746. package/lib/esm/src/internal/manager-api/model/ManagerApiType.js.map +0 -7
  747. package/lib/esm/src/internal/transport/ble/di/bleDiTypes.js +0 -2
  748. package/lib/esm/src/internal/transport/ble/di/bleDiTypes.js.map +0 -7
  749. package/lib/esm/src/internal/transport/ble/di/bleModule.js +0 -2
  750. package/lib/esm/src/internal/transport/ble/di/bleModule.js.map +0 -7
  751. package/lib/esm/src/internal/transport/ble/di/bleModule.test.js +0 -2
  752. package/lib/esm/src/internal/transport/ble/di/bleModule.test.js.map +0 -7
  753. package/lib/esm/src/internal/transport/ble/model/BleDevice.stub.js +0 -2
  754. package/lib/esm/src/internal/transport/ble/model/BleDevice.stub.js.map +0 -7
  755. package/lib/esm/src/internal/transport/ble/model/BleDeviceInfos.js +0 -2
  756. package/lib/esm/src/internal/transport/ble/model/BleDeviceInfos.js.map +0 -7
  757. package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.js +0 -2
  758. package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.js.map +0 -7
  759. package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js +0 -2
  760. package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js.map +0 -7
  761. package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.js +0 -2
  762. package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.js.map +0 -7
  763. package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.test.js +0 -2
  764. package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.test.js.map +0 -7
  765. package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.js +0 -2
  766. package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.js.map +0 -7
  767. package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.test.js +0 -2
  768. package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.test.js.map +0 -7
  769. package/lib/esm/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js +0 -2
  770. package/lib/esm/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js.map +0 -7
  771. package/lib/esm/src/internal/transport/data/TransportDataSource.js +0 -2
  772. package/lib/esm/src/internal/transport/data/TransportDataSource.js.map +0 -7
  773. package/lib/esm/src/internal/transport/mockserver/MockserverTransport.js +0 -2
  774. package/lib/esm/src/internal/transport/mockserver/MockserverTransport.js.map +0 -7
  775. package/lib/esm/src/internal/transport/model/Errors.js +0 -2
  776. package/lib/esm/src/internal/transport/model/Errors.js.map +0 -7
  777. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.js +0 -2
  778. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.js.map +0 -7
  779. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.stub.js +0 -2
  780. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.stub.js.map +0 -7
  781. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.test.js +0 -2
  782. package/lib/esm/src/internal/transport/model/InternalConnectedDevice.test.js.map +0 -7
  783. package/lib/esm/src/internal/transport/model/InternalDiscoveredDevice.js +0 -1
  784. package/lib/esm/src/internal/transport/usb/data/UsbHidConfig.js +0 -2
  785. package/lib/esm/src/internal/transport/usb/data/UsbHidConfig.js.map +0 -7
  786. package/lib/esm/src/internal/transport/usb/di/usbDiTypes.js +0 -2
  787. package/lib/esm/src/internal/transport/usb/di/usbDiTypes.js.map +0 -7
  788. package/lib/esm/src/internal/transport/usb/di/usbModule.js +0 -2
  789. package/lib/esm/src/internal/transport/usb/di/usbModule.js.map +0 -7
  790. package/lib/esm/src/internal/transport/usb/di/usbModule.test.js +0 -2
  791. package/lib/esm/src/internal/transport/usb/di/usbModule.test.js.map +0 -7
  792. package/lib/esm/src/internal/transport/usb/model/HIDDevice.stub.js +0 -2
  793. package/lib/esm/src/internal/transport/usb/model/HIDDevice.stub.js.map +0 -7
  794. package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js +0 -2
  795. package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js.map +0 -7
  796. package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js +0 -2
  797. package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js.map +0 -7
  798. package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.js +0 -2
  799. package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.js.map +0 -7
  800. package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js +0 -2
  801. package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js.map +0 -7
  802. package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.js +0 -2
  803. package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.js.map +0 -7
  804. package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.test.js +0 -2
  805. package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.test.js.map +0 -7
  806. package/lib/esm/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js +0 -2
  807. package/lib/esm/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js.map +0 -7
  808. package/lib/types/src/api/logger-subscriber/__mocks__/ConsoleLogger.d.ts.map +0 -1
  809. package/lib/types/src/internal/device-model/data/DeviceModelDataSource.d.ts +0 -16
  810. package/lib/types/src/internal/device-model/data/DeviceModelDataSource.d.ts.map +0 -1
  811. package/lib/types/src/internal/device-model/data/StaticDeviceModelDataSource.d.ts +0 -21
  812. package/lib/types/src/internal/device-model/data/StaticDeviceModelDataSource.d.ts.map +0 -1
  813. package/lib/types/src/internal/device-model/data/StaticDeviceModelDataSource.test.d.ts.map +0 -1
  814. package/lib/types/src/internal/device-model/model/DeviceModel.d.ts.map +0 -1
  815. package/lib/types/src/internal/device-model/model/DeviceModel.stub.d.ts +0 -3
  816. package/lib/types/src/internal/device-model/model/DeviceModel.stub.d.ts.map +0 -1
  817. package/lib/types/src/internal/device-model/model/DeviceModel.test.d.ts.map +0 -1
  818. package/lib/types/src/internal/device-session/data/FramerConst.d.ts.map +0 -1
  819. package/lib/types/src/internal/device-session/service/ApduReceiverService.d.ts +0 -7
  820. package/lib/types/src/internal/device-session/service/ApduReceiverService.d.ts.map +0 -1
  821. package/lib/types/src/internal/device-session/service/ApduSenderService.d.ts +0 -5
  822. package/lib/types/src/internal/device-session/service/ApduSenderService.d.ts.map +0 -1
  823. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.stub.d.ts +0 -5
  824. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.stub.d.ts.map +0 -1
  825. package/lib/types/src/internal/device-session/service/DefaultApduSenderService.stub.d.ts +0 -5
  826. package/lib/types/src/internal/device-session/service/DefaultApduSenderService.stub.d.ts.map +0 -1
  827. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseState.test.d.ts +0 -2
  828. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseState.test.d.ts.map +0 -1
  829. package/lib/types/src/internal/device-session/utils/FramerUtils.d.ts.map +0 -1
  830. package/lib/types/src/internal/device-session/utils/FramerUtils.test.d.ts.map +0 -1
  831. package/lib/types/src/internal/logger-publisher/service/LoggerPublisherService.d.ts.map +0 -1
  832. package/lib/types/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.d.ts +0 -11
  833. package/lib/types/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.d.ts.map +0 -1
  834. package/lib/types/src/internal/manager-api/model/ManagerApiType.d.ts.map +0 -1
  835. package/lib/types/src/internal/transport/ble/di/bleDiTypes.d.ts +0 -4
  836. package/lib/types/src/internal/transport/ble/di/bleDiTypes.d.ts.map +0 -1
  837. package/lib/types/src/internal/transport/ble/di/bleModule.d.ts +0 -3
  838. package/lib/types/src/internal/transport/ble/di/bleModule.d.ts.map +0 -1
  839. package/lib/types/src/internal/transport/ble/di/bleModule.test.d.ts +0 -2
  840. package/lib/types/src/internal/transport/ble/di/bleModule.test.d.ts.map +0 -1
  841. package/lib/types/src/internal/transport/ble/model/BleDevice.stub.d.ts +0 -3
  842. package/lib/types/src/internal/transport/ble/model/BleDevice.stub.d.ts.map +0 -1
  843. package/lib/types/src/internal/transport/ble/model/BleDeviceInfos.d.ts +0 -10
  844. package/lib/types/src/internal/transport/ble/model/BleDeviceInfos.d.ts.map +0 -1
  845. package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.d.ts +0 -13
  846. package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.d.ts.map +0 -1
  847. package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.d.ts +0 -3
  848. package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.d.ts.map +0 -1
  849. package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.d.ts +0 -104
  850. package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.d.ts.map +0 -1
  851. package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.test.d.ts +0 -2
  852. package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.test.d.ts.map +0 -1
  853. package/lib/types/src/internal/transport/ble/transport/WebBleTransport.d.ts +0 -97
  854. package/lib/types/src/internal/transport/ble/transport/WebBleTransport.d.ts.map +0 -1
  855. package/lib/types/src/internal/transport/ble/transport/WebBleTransport.test.d.ts +0 -2
  856. package/lib/types/src/internal/transport/ble/transport/WebBleTransport.test.d.ts.map +0 -1
  857. package/lib/types/src/internal/transport/ble/transport/__mocks__/WebBleTransport.d.ts +0 -14
  858. package/lib/types/src/internal/transport/ble/transport/__mocks__/WebBleTransport.d.ts.map +0 -1
  859. package/lib/types/src/internal/transport/data/TransportDataSource.d.ts +0 -8
  860. package/lib/types/src/internal/transport/data/TransportDataSource.d.ts.map +0 -1
  861. package/lib/types/src/internal/transport/mockserver/MockserverTransport.d.ts +0 -33
  862. package/lib/types/src/internal/transport/mockserver/MockserverTransport.d.ts.map +0 -1
  863. package/lib/types/src/internal/transport/model/DeviceConnection.d.ts.map +0 -1
  864. package/lib/types/src/internal/transport/model/Errors.d.ts +0 -80
  865. package/lib/types/src/internal/transport/model/Errors.d.ts.map +0 -1
  866. package/lib/types/src/internal/transport/model/InternalConnectedDevice.d.ts.map +0 -1
  867. package/lib/types/src/internal/transport/model/InternalConnectedDevice.stub.d.ts +0 -3
  868. package/lib/types/src/internal/transport/model/InternalConnectedDevice.stub.d.ts.map +0 -1
  869. package/lib/types/src/internal/transport/model/InternalConnectedDevice.test.d.ts +0 -2
  870. package/lib/types/src/internal/transport/model/InternalConnectedDevice.test.d.ts.map +0 -1
  871. package/lib/types/src/internal/transport/model/InternalDiscoveredDevice.d.ts.map +0 -1
  872. package/lib/types/src/internal/transport/usb/data/UsbHidConfig.d.ts +0 -4
  873. package/lib/types/src/internal/transport/usb/data/UsbHidConfig.d.ts.map +0 -1
  874. package/lib/types/src/internal/transport/usb/di/usbDiTypes.d.ts +0 -4
  875. package/lib/types/src/internal/transport/usb/di/usbDiTypes.d.ts.map +0 -1
  876. package/lib/types/src/internal/transport/usb/di/usbModule.d.ts +0 -7
  877. package/lib/types/src/internal/transport/usb/di/usbModule.d.ts.map +0 -1
  878. package/lib/types/src/internal/transport/usb/di/usbModule.test.d.ts +0 -2
  879. package/lib/types/src/internal/transport/usb/di/usbModule.test.d.ts.map +0 -1
  880. package/lib/types/src/internal/transport/usb/model/HIDDevice.stub.d.ts +0 -2
  881. package/lib/types/src/internal/transport/usb/model/HIDDevice.stub.d.ts.map +0 -1
  882. package/lib/types/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.d.ts +0 -20
  883. package/lib/types/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.d.ts.map +0 -1
  884. package/lib/types/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.d.ts +0 -3
  885. package/lib/types/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.d.ts.map +0 -1
  886. package/lib/types/src/internal/transport/usb/transport/UsbHidDeviceConnection.d.ts +0 -54
  887. package/lib/types/src/internal/transport/usb/transport/UsbHidDeviceConnection.d.ts.map +0 -1
  888. package/lib/types/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.d.ts +0 -2
  889. package/lib/types/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.d.ts.map +0 -1
  890. package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.d.ts +0 -97
  891. package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.d.ts.map +0 -1
  892. package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.test.d.ts +0 -2
  893. package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.test.d.ts.map +0 -1
  894. package/lib/types/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.d.ts.map +0 -1
  895. /package/lib/cjs/src/{internal → api}/device-session/data/FramerConst.js +0 -0
  896. /package/lib/cjs/src/{internal → api}/device-session/utils/FramerUtils.js +0 -0
  897. /package/lib/cjs/src/{internal → api}/device-session/utils/FramerUtils.test.js +0 -0
  898. /package/lib/cjs/src/{internal → api}/logger-publisher/service/LoggerPublisherService.js +0 -0
  899. /package/lib/cjs/src/api/logger-subscriber/{__mocks__ → service/__mocks__}/ConsoleLogger.js +0 -0
  900. /package/lib/cjs/src/{internal → api}/transport/model/DeviceConnection.js +0 -0
  901. /package/lib/esm/src/{internal → api}/device-model/data/DeviceModelDataSource.js +0 -0
  902. /package/lib/esm/src/{internal → api}/device-model/data/DeviceModelDataSource.js.map +0 -0
  903. /package/lib/esm/src/{internal → api}/device-session/data/FramerConst.js +0 -0
  904. /package/lib/esm/src/{internal → api}/device-session/service/ApduReceiverService.js +0 -0
  905. /package/lib/esm/src/{internal → api}/device-session/service/ApduReceiverService.js.map +0 -0
  906. /package/lib/esm/src/{internal → api}/device-session/service/ApduSenderService.js +0 -0
  907. /package/lib/esm/src/{internal → api}/device-session/service/ApduSenderService.js.map +0 -0
  908. /package/lib/esm/src/{internal → api}/device-session/utils/FramerUtils.js +0 -0
  909. /package/lib/esm/src/{internal → api}/device-session/utils/FramerUtils.test.js +0 -0
  910. /package/lib/esm/src/{internal → api}/logger-publisher/service/LoggerPublisherService.js +0 -0
  911. /package/lib/esm/src/{internal → api}/logger-publisher/service/LoggerPublisherService.js.map +0 -0
  912. /package/lib/esm/src/api/logger-subscriber/{__mocks__ → service/__mocks__}/ConsoleLogger.js +0 -0
  913. /package/lib/esm/src/{internal → api}/transport/model/DeviceConnection.js +0 -0
  914. /package/lib/esm/src/{internal → api}/transport/model/DeviceConnection.js.map +0 -0
  915. /package/lib/esm/src/{internal/transport/model/InternalDiscoveredDevice.js.map → api/transport/model/TransportDiscoveredDevice.js.map} +0 -0
  916. /package/lib/types/src/{internal → api}/device-model/data/StaticDeviceModelDataSource.test.d.ts +0 -0
  917. /package/lib/types/src/{internal → api}/device-model/model/DeviceModel.test.d.ts +0 -0
  918. /package/lib/types/src/{internal → api}/device-session/data/FramerConst.d.ts +0 -0
  919. /package/lib/types/src/{internal → api}/device-session/utils/FramerUtils.d.ts +0 -0
  920. /package/lib/types/src/{internal → api}/device-session/utils/FramerUtils.test.d.ts +0 -0
  921. /package/lib/types/src/api/logger-subscriber/{__mocks__ → service/__mocks__}/ConsoleLogger.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/DeviceManagementKitBuilder.ts"],
4
- "sourcesContent": ["import {\n DEFAULT_MANAGER_API_BASE_URL,\n DEFAULT_MOCK_SERVER_BASE_URL,\n} from \"@internal/manager-api/model/Const\";\n\nimport { type LoggerSubscriberService } from \"./logger-subscriber/service/LoggerSubscriberService\";\nimport { type Transport } from \"./transport/model/Transport\";\nimport { type BuiltinTransports } from \"./transport/model/TransportIdentifier\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\nimport { type DmkConfig } from \"./DmkConfig\";\n\n/**\n * Builder for the `DeviceManagementKit` class.\n *\n * @example\n * ```\n * const dmk = new LedgerDeviceManagementKitBuilder()\n * .setStub(false)\n * .addTransport(BuiltinTransports.USB)\n * .addCustomTransport(new MyTransport())\n * .addLogger(myLogger)\n * .build();\n * ```\n */\nexport class DeviceManagementKitBuilder {\n private stub = false;\n private readonly loggers: LoggerSubscriberService[] = [];\n private readonly transports: BuiltinTransports[] = [];\n private readonly customTransports: Transport[] = [];\n private config: DmkConfig = {\n managerApiUrl: DEFAULT_MANAGER_API_BASE_URL,\n mockUrl: DEFAULT_MOCK_SERVER_BASE_URL,\n };\n\n build(): DeviceManagementKit {\n return new DeviceManagementKit({\n stub: this.stub,\n transports: this.transports,\n customTransports: this.customTransports,\n loggers: this.loggers,\n config: this.config,\n });\n }\n\n setStub(stubbed: boolean): DeviceManagementKitBuilder {\n this.stub = stubbed;\n return this;\n }\n\n addTransport(transport: BuiltinTransports): DeviceManagementKitBuilder {\n this.transports.push(transport);\n return this;\n }\n\n addCustomTransport(transport: Transport): DeviceManagementKitBuilder {\n this.customTransports.push(transport);\n return this;\n }\n\n /**\n * Add a logger to the SDK that will receive its logs\n */\n addLogger(logger: LoggerSubscriberService): DeviceManagementKitBuilder {\n this.loggers.push(logger);\n return this;\n }\n\n addConfig(config: Partial<DmkConfig>): DeviceManagementKitBuilder {\n this.config = {\n ...this.config,\n ...config,\n };\n return this;\n }\n}\n"],
5
- "mappings": "AAAA,OACE,gCAAAA,EACA,gCAAAC,MACK,oCAKP,OAAS,uBAAAC,MAA2B,wBAgB7B,MAAMC,CAA2B,CAC9B,KAAO,GACE,QAAqC,CAAC,EACtC,WAAkC,CAAC,EACnC,iBAAgC,CAAC,EAC1C,OAAoB,CAC1B,cAAeH,EACf,QAASC,CACX,EAEA,OAA6B,CAC3B,OAAO,IAAIC,EAAoB,CAC7B,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,iBAAkB,KAAK,iBACvB,QAAS,KAAK,QACd,OAAQ,KAAK,MACf,CAAC,CACH,CAEA,QAAQE,EAA8C,CACpD,YAAK,KAAOA,EACL,IACT,CAEA,aAAaC,EAA0D,CACrE,YAAK,WAAW,KAAKA,CAAS,EACvB,IACT,CAEA,mBAAmBA,EAAkD,CACnE,YAAK,iBAAiB,KAAKA,CAAS,EAC7B,IACT,CAKA,UAAUC,EAA6D,CACrE,YAAK,QAAQ,KAAKA,CAAM,EACjB,IACT,CAEA,UAAUC,EAAwD,CAChE,YAAK,OAAS,CACZ,GAAG,KAAK,OACR,GAAGA,CACL,EACO,IACT,CACF",
6
- "names": ["DEFAULT_MANAGER_API_BASE_URL", "DEFAULT_MOCK_SERVER_BASE_URL", "DeviceManagementKit", "DeviceManagementKitBuilder", "stubbed", "transport", "logger", "config"]
4
+ "sourcesContent": ["import {\n DEFAULT_MANAGER_API_BASE_URL,\n DEFAULT_MOCK_SERVER_BASE_URL,\n DEFAULT_WEB_SOCKET_BASE_URL,\n} from \"@internal/manager-api/model/Const\";\n\nimport { type LoggerSubscriberService } from \"./logger-subscriber/service/LoggerSubscriberService\";\nimport { type TransportFactory } from \"./transport/model/Transport\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\nimport { type DmkConfig } from \"./DmkConfig\";\n\n/**\n * Builder for the `DeviceManagementKit` class.\n *\n * @example\n * ```\n * const dmk = new LedgerDeviceManagementKitBuilder()\n * .setStub(false)\n * .addTransport((args) => transportFactory(args))\n * .addTransport(transportFactory)\n * .addLogger(myLogger)\n * .build();\n * ```\n */\nexport class DeviceManagementKitBuilder {\n private stub = false;\n private readonly loggers: LoggerSubscriberService[] = [];\n private readonly transports: TransportFactory[] = [];\n private config: DmkConfig = {\n managerApiUrl: DEFAULT_MANAGER_API_BASE_URL,\n mockUrl: DEFAULT_MOCK_SERVER_BASE_URL,\n webSocketUrl: DEFAULT_WEB_SOCKET_BASE_URL,\n };\n\n build(): DeviceManagementKit {\n return new DeviceManagementKit({\n stub: this.stub,\n transports: this.transports,\n loggers: this.loggers,\n config: this.config,\n });\n }\n\n setStub(stubbed: boolean): DeviceManagementKitBuilder {\n this.stub = stubbed;\n return this;\n }\n\n addTransport(transport: TransportFactory): DeviceManagementKitBuilder {\n this.transports.push(transport);\n return this;\n }\n\n /**\n * Add a logger to the SDK that will receive its logs\n */\n addLogger(logger: LoggerSubscriberService): DeviceManagementKitBuilder {\n this.loggers.push(logger);\n return this;\n }\n\n addConfig(config: Partial<DmkConfig>): DeviceManagementKitBuilder {\n this.config = {\n ...this.config,\n ...config,\n };\n return this;\n }\n}\n"],
5
+ "mappings": "AAAA,OACE,gCAAAA,EACA,gCAAAC,EACA,+BAAAC,MACK,oCAIP,OAAS,uBAAAC,MAA2B,wBAgB7B,MAAMC,CAA2B,CAC9B,KAAO,GACE,QAAqC,CAAC,EACtC,WAAiC,CAAC,EAC3C,OAAoB,CAC1B,cAAeJ,EACf,QAASC,EACT,aAAcC,CAChB,EAEA,OAA6B,CAC3B,OAAO,IAAIC,EAAoB,CAC7B,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,OAAQ,KAAK,MACf,CAAC,CACH,CAEA,QAAQE,EAA8C,CACpD,YAAK,KAAOA,EACL,IACT,CAEA,aAAaC,EAAyD,CACpE,YAAK,WAAW,KAAKA,CAAS,EACvB,IACT,CAKA,UAAUC,EAA6D,CACrE,YAAK,QAAQ,KAAKA,CAAM,EACjB,IACT,CAEA,UAAUC,EAAwD,CAChE,YAAK,OAAS,CACZ,GAAG,KAAK,OACR,GAAGA,CACL,EACO,IACT,CACF",
6
+ "names": ["DEFAULT_MANAGER_API_BASE_URL", "DEFAULT_MOCK_SERVER_BASE_URL", "DEFAULT_WEB_SOCKET_BASE_URL", "DeviceManagementKit", "DeviceManagementKitBuilder", "stubbed", "transport", "logger", "config"]
7
7
  }
@@ -1,2 +1,2 @@
1
- class s{_tag;originalError;errorCode;message;constructor({tag:r,errorCode:o,originalError:n,message:i}){this._tag=r,this.originalError=n,this.errorCode=o,this.message=i??"An error occured during device exchange."}}class a{_tag="UnknownDeviceExchangeError";originalError;message;constructor(r){this.originalError=r,this.message="Unexpected device exchange error happened."}}export{s as DeviceExchangeError,a as UnknownDeviceExchangeError};
1
+ class s{_tag;originalError;errorCode;message;constructor({tag:r,errorCode:o,originalError:n,message:i}){this._tag=r,this.originalError=n,this.errorCode=o,this.message=i??"An error occured during device exchange."}}class a{_tag="UnknownDeviceExchangeError";originalError;message;constructor(r){this.originalError=r,this.message="Unexpected device exchange error happened."}}class c{_tag="DeviceBusyError";originalError;constructor(r){this.originalError=r??new Error("Device is busy, please try again later")}}export{c as DeviceBusyError,s as DeviceExchangeError,a as UnknownDeviceExchangeError};
2
2
  //# sourceMappingURL=Error.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/Error.ts"],
4
- "sourcesContent": ["export interface DmkError {\n readonly _tag: string;\n readonly originalError?: unknown;\n message?: string;\n}\n\nexport type DeviceExchangeErrorArgs<SpecificErrorCodes> = {\n tag: string;\n originalError?: unknown;\n errorCode: SpecificErrorCodes;\n message: string;\n};\n\nexport type CommandErrorArgs<SpecificErrorCodes> = Omit<\n DeviceExchangeErrorArgs<SpecificErrorCodes>,\n \"tag\"\n>;\n\nexport abstract class DeviceExchangeError<SpecificErrorCodes = void> {\n readonly _tag: string;\n readonly originalError?: unknown;\n readonly errorCode: SpecificErrorCodes;\n readonly message: string;\n\n protected constructor({\n tag,\n errorCode,\n originalError,\n message,\n }: DeviceExchangeErrorArgs<SpecificErrorCodes>) {\n this._tag = tag;\n this.originalError = originalError;\n this.errorCode = errorCode;\n this.message = message ?? \"An error occured during device exchange.\";\n }\n}\n\nexport class UnknownDeviceExchangeError implements DmkError {\n readonly _tag = \"UnknownDeviceExchangeError\";\n readonly originalError?: unknown;\n readonly message: string;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n this.message = \"Unexpected device exchange error happened.\";\n }\n}\n"],
5
- "mappings": "AAkBO,MAAeA,CAA+C,CAC1D,KACA,cACA,UACA,QAEC,YAAY,CACpB,IAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,CACF,EAAgD,CAC9C,KAAK,KAAOH,EACZ,KAAK,cAAgBE,EACrB,KAAK,UAAYD,EACjB,KAAK,QAAUE,GAAW,0CAC5B,CACF,CAEO,MAAMC,CAA+C,CACjD,KAAO,6BACP,cACA,QAET,YAAYF,EAAyB,CACnC,KAAK,cAAgBA,EACrB,KAAK,QAAU,4CACjB,CACF",
6
- "names": ["DeviceExchangeError", "tag", "errorCode", "originalError", "message", "UnknownDeviceExchangeError"]
4
+ "sourcesContent": ["export interface DmkError {\n readonly _tag: string;\n readonly originalError?: unknown;\n message?: string;\n}\n\nexport type DeviceExchangeErrorArgs<SpecificErrorCodes> = {\n tag: string;\n originalError?: unknown;\n errorCode: SpecificErrorCodes;\n message: string;\n};\n\nexport type CommandErrorArgs<SpecificErrorCodes> = Omit<\n DeviceExchangeErrorArgs<SpecificErrorCodes>,\n \"tag\"\n>;\n\nexport abstract class DeviceExchangeError<SpecificErrorCodes = void> {\n readonly _tag: string;\n readonly originalError?: unknown;\n readonly errorCode: SpecificErrorCodes;\n readonly message: string;\n\n protected constructor({\n tag,\n errorCode,\n originalError,\n message,\n }: DeviceExchangeErrorArgs<SpecificErrorCodes>) {\n this._tag = tag;\n this.originalError = originalError;\n this.errorCode = errorCode;\n this.message = message ?? \"An error occured during device exchange.\";\n }\n}\n\nexport class UnknownDeviceExchangeError implements DmkError {\n readonly _tag = \"UnknownDeviceExchangeError\";\n readonly originalError?: unknown;\n readonly message: string;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n this.message = \"Unexpected device exchange error happened.\";\n }\n}\n\nexport class DeviceBusyError implements DmkError {\n readonly _tag = \"DeviceBusyError\";\n originalError?: Error;\n\n constructor(originalError?: Error) {\n this.originalError =\n originalError ?? new Error(\"Device is busy, please try again later\");\n }\n}\n"],
5
+ "mappings": "AAkBO,MAAeA,CAA+C,CAC1D,KACA,cACA,UACA,QAEC,YAAY,CACpB,IAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,CACF,EAAgD,CAC9C,KAAK,KAAOH,EACZ,KAAK,cAAgBE,EACrB,KAAK,UAAYD,EACjB,KAAK,QAAUE,GAAW,0CAC5B,CACF,CAEO,MAAMC,CAA+C,CACjD,KAAO,6BACP,cACA,QAET,YAAYF,EAAyB,CACnC,KAAK,cAAgBA,EACrB,KAAK,QAAU,4CACjB,CACF,CAEO,MAAMG,CAAoC,CACtC,KAAO,kBAChB,cAEA,YAAYH,EAAuB,CACjC,KAAK,cACHA,GAAiB,IAAI,MAAM,wCAAwC,CACvE,CACF",
6
+ "names": ["DeviceExchangeError", "tag", "errorCode", "originalError", "message", "UnknownDeviceExchangeError", "DeviceBusyError"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as r}from"../../device-session/ApduResponse";import{ApduParser as t}from"./ApduParser";const a=new Uint8Array([144,0]),x=new Uint8Array([1]),c=new Uint8Array([0]),i=new Uint8Array([1,2,3,...Array(253).fill(170)]);let e,n=new r({statusCode:a,data:x});describe("ApduParser",()=>{it("should create an instance",()=>{e=new t(n),expect(e).toBeDefined(),expect(e).toBeInstanceOf(t)}),it("Extract a single byte",()=>{e=new t(n),expect(e.extract8BitUInt()).toBe(1)}),it("Extract 16-bit & 32-bit number",()=>{n=new r({statusCode:a,data:i}),e=new t(n),expect(e.extract16BitUInt()).toBe(258),expect(e.extract16BitUInt()).toBe(938)}),it("Test zero length",()=>{const s=new r({statusCode:a,data:c});e=new t(s);const o=e.extract8BitUInt();expect(o).toBe(0)})});
1
+ import{ApduResponse as a}from"../../device-session/ApduResponse";import{ApduParser as n}from"./ApduParser";const r=new Uint8Array([144,0]),o=new Uint8Array([1]),x=new Uint8Array([0]),c=new Uint8Array([1,2,3,...Array(253).fill(170)]);let t,e=new a({statusCode:r,data:o});describe("ApduParser",()=>{it("should create an instance",()=>{t=new n(e),expect(t).toBeDefined(),expect(t).toBeInstanceOf(n)}),it("Extract a single byte",()=>{t=new n(e),expect(t.extract8BitUInt()).toBe(1)}),it("Extract 16-bit & 32-bit number",()=>{e=new a({statusCode:r,data:c}),t=new n(e),expect(t.extract16BitUInt()).toBe(258),expect(t.extract16BitUInt()).toBe(938)}),it("Test zero length",()=>{e=new a({statusCode:r,data:x}),t=new n(e);const s=t.extract8BitUInt();expect(s).toBe(0)})});
2
2
  //# sourceMappingURL=ApduParser.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/apdu/utils/ApduParser.test.ts"],
4
- "sourcesContent": ["import { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport { ApduParser } from \"./ApduParser\";\n\nconst STATUS_WORD_SUCCESS = new Uint8Array([0x90, 0x00]);\nconst RESPONSE_ONE_BYTE = new Uint8Array([0x01]);\nconst RESPONSE_LV_ZERO = new Uint8Array([0x00]);\nconst RESPONSE_ALL_BYTES = new Uint8Array([\n 0x01,\n 0x02,\n 0x03,\n ...Array<number>(253).fill(0xaa),\n]);\n\nlet parser: ApduParser;\nlet response: ApduResponse = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_ONE_BYTE,\n});\n\ndescribe(\"ApduParser\", () => {\n it(\"should create an instance\", () => {\n parser = new ApduParser(response);\n expect(parser).toBeDefined();\n expect(parser).toBeInstanceOf(ApduParser);\n });\n\n it(\"Extract a single byte\", () => {\n parser = new ApduParser(response);\n expect(parser.extract8BitUInt()).toBe(0x01);\n });\n\n it(\"Extract 16-bit & 32-bit number\", () => {\n response = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_ALL_BYTES,\n });\n parser = new ApduParser(response);\n expect(parser.extract16BitUInt()).toBe(0x0102);\n expect(parser.extract16BitUInt()).toBe(0x03aa);\n });\n\n it(\"Test zero length\", () => {\n const response: ApduResponse = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_LV_ZERO,\n });\n parser = new ApduParser(response);\n const value = parser.extract8BitUInt();\n expect(value).toBe(0);\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,gBAAAA,MAAoB,mCAE7B,OAAS,cAAAC,MAAkB,eAE3B,MAAMC,EAAsB,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACjDC,EAAoB,IAAI,WAAW,CAAC,CAAI,CAAC,EACzCC,EAAmB,IAAI,WAAW,CAAC,CAAI,CAAC,EACxCC,EAAqB,IAAI,WAAW,CACxC,EACA,EACA,EACA,GAAG,MAAc,GAAG,EAAE,KAAK,GAAI,CACjC,CAAC,EAED,IAAIC,EACAC,EAAyB,IAAIP,EAAa,CAC5C,WAAYE,EACZ,KAAMC,CACR,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,4BAA6B,IAAM,CACpCG,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,CAAM,EAAE,YAAY,EAC3B,OAAOA,CAAM,EAAE,eAAeL,CAAU,CAC1C,CAAC,EAED,GAAG,wBAAyB,IAAM,CAChCK,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,EAAO,gBAAgB,CAAC,EAAE,KAAK,CAAI,CAC5C,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzCC,EAAW,IAAIP,EAAa,CAC1B,WAAYE,EACZ,KAAMG,CACR,CAAC,EACDC,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,EAAO,iBAAiB,CAAC,EAAE,KAAK,GAAM,EAC7C,OAAOA,EAAO,iBAAiB,CAAC,EAAE,KAAK,GAAM,CAC/C,CAAC,EAED,GAAG,mBAAoB,IAAM,CAC3B,MAAMC,EAAyB,IAAIP,EAAa,CAC9C,WAAYE,EACZ,KAAME,CACR,CAAC,EACDE,EAAS,IAAIL,EAAWM,CAAQ,EAChC,MAAMC,EAAQF,EAAO,gBAAgB,EACrC,OAAOE,CAAK,EAAE,KAAK,CAAC,CACtB,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nimport { ApduParser } from \"./ApduParser\";\n\nconst STATUS_WORD_SUCCESS = new Uint8Array([0x90, 0x00]);\nconst RESPONSE_ONE_BYTE = new Uint8Array([0x01]);\nconst RESPONSE_LV_ZERO = new Uint8Array([0x00]);\nconst RESPONSE_ALL_BYTES = new Uint8Array([\n 0x01,\n 0x02,\n 0x03,\n ...Array<number>(253).fill(0xaa),\n]);\n\nlet parser: ApduParser;\nlet response: ApduResponse = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_ONE_BYTE,\n});\n\ndescribe(\"ApduParser\", () => {\n it(\"should create an instance\", () => {\n parser = new ApduParser(response);\n expect(parser).toBeDefined();\n expect(parser).toBeInstanceOf(ApduParser);\n });\n\n it(\"Extract a single byte\", () => {\n parser = new ApduParser(response);\n expect(parser.extract8BitUInt()).toBe(0x01);\n });\n\n it(\"Extract 16-bit & 32-bit number\", () => {\n response = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_ALL_BYTES,\n });\n parser = new ApduParser(response);\n expect(parser.extract16BitUInt()).toBe(0x0102);\n expect(parser.extract16BitUInt()).toBe(0x03aa);\n });\n\n it(\"Test zero length\", () => {\n response = new ApduResponse({\n statusCode: STATUS_WORD_SUCCESS,\n data: RESPONSE_LV_ZERO,\n });\n parser = new ApduParser(response);\n const value = parser.extract8BitUInt();\n expect(value).toBe(0);\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,gBAAAA,MAAoB,mCAE7B,OAAS,cAAAC,MAAkB,eAE3B,MAAMC,EAAsB,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACjDC,EAAoB,IAAI,WAAW,CAAC,CAAI,CAAC,EACzCC,EAAmB,IAAI,WAAW,CAAC,CAAI,CAAC,EACxCC,EAAqB,IAAI,WAAW,CACxC,EACA,EACA,EACA,GAAG,MAAc,GAAG,EAAE,KAAK,GAAI,CACjC,CAAC,EAED,IAAIC,EACAC,EAAyB,IAAIP,EAAa,CAC5C,WAAYE,EACZ,KAAMC,CACR,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,4BAA6B,IAAM,CACpCG,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,CAAM,EAAE,YAAY,EAC3B,OAAOA,CAAM,EAAE,eAAeL,CAAU,CAC1C,CAAC,EAED,GAAG,wBAAyB,IAAM,CAChCK,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,EAAO,gBAAgB,CAAC,EAAE,KAAK,CAAI,CAC5C,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzCC,EAAW,IAAIP,EAAa,CAC1B,WAAYE,EACZ,KAAMG,CACR,CAAC,EACDC,EAAS,IAAIL,EAAWM,CAAQ,EAChC,OAAOD,EAAO,iBAAiB,CAAC,EAAE,KAAK,GAAM,EAC7C,OAAOA,EAAO,iBAAiB,CAAC,EAAE,KAAK,GAAM,CAC/C,CAAC,EAED,GAAG,mBAAoB,IAAM,CAC3BC,EAAW,IAAIP,EAAa,CAC1B,WAAYE,EACZ,KAAME,CACR,CAAC,EACDE,EAAS,IAAIL,EAAWM,CAAQ,EAChC,MAAMC,EAAQF,EAAO,gBAAgB,EACrC,OAAOE,CAAK,EAAE,KAAK,CAAC,CACtB,CAAC,CACH,CAAC",
6
6
  "names": ["ApduResponse", "ApduParser", "STATUS_WORD_SUCCESS", "RESPONSE_ONE_BYTE", "RESPONSE_LV_ZERO", "RESPONSE_ALL_BYTES", "parser", "response", "value"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as u}from"../../utils/HexaString";import{DataOverflowError as a,HexaStringEncodeError as f,ValueOverflowError as h}from"./AppBuilderError";const g=4294967295;class m{constructor(r=g){this.maxPayloadSize=r}data=new Uint8Array;errors=[];build=()=>this.data;tryBuild=()=>this.hasErrors()?void 0:this.data;add8BitUIntToData=r=>this.addNumberToData(r,8n,!1,!1);add16BitUIntToData=(r,t=!0)=>this.addNumberToData(r,16n,!1,t);add32BitUIntToData=(r,t=!0)=>this.addNumberToData(r,32n,!1,t);add64BitUIntToData=(r,t=!0)=>this.addNumberToData(r,64n,!1,t);add16BitIntToData=(r,t=!0)=>this.addNumberToData(r,16n,!0,t);add32BitIntToData=(r,t=!0)=>this.addNumberToData(r,32n,!0,t);add64BitIntToData=(r,t=!0)=>this.addNumberToData(r,64n,!0,t);addBufferToData=r=>this.hasEnoughLengthRemaining(r)?(this.data=Uint8Array.from([...this.data,...r]),this):(this.errors.push(new a(r.toString())),this);addHexaStringToData=r=>{const t=u(r);return t===null||t.length===0?(this.errors.push(new f(r)),this):(this.addBufferToData(t),this)};addAsciiStringToData=r=>{const t=new TextEncoder().encode(r);return this.addBufferToData(t),this};encodeInLVFromHexa=r=>{const t=u(r);return t===null||t.length===0?(this.errors.push(new f(r)),this):this.hasEnoughLengthRemaining(t,!0)?(this.add8BitUIntToData(t.length),this.addBufferToData(t),this):(this.errors.push(new a(r)),this)};encodeInLVFromBuffer=r=>this.hasEnoughLengthRemaining(r,!0)?(this.add8BitUIntToData(r.length),this.addBufferToData(r),this):(this.errors.push(new a(r.toString())),this);encodeInLVFromAscii=r=>this.hasEnoughLengthRemaining(r,!0)?(this.add8BitUIntToData(r.length),this.addAsciiStringToData(r),this):(this.errors.push(new a(r)),this);getAvailablePayloadLength=()=>this.maxPayloadSize-this.data.length;getErrors=()=>this.errors;hasErrors=()=>this.errors.length!==0;hasEnoughLengthRemaining=(r,t=!1)=>this.data.length+r.length+(t?1:0)<=this.maxPayloadSize;addNumberToData(r,t,o,e){let n=this.checkBoundsAndConvert(r,t,o);if(n===void 0)return this;const s=Number(t)/8,d=new Uint8Array(s);if(e)for(let i=s-1;i>=0;i--)d[i]=Number(n&0xffn),n>>=8n;else for(let i=0;i<s;i++)d[i]=Number(n&0xffn),n>>=8n;return this.addBufferToData(d)}checkBoundsAndConvert(r,t,o){if(typeof r=="number"){if(!Number.isInteger(r)||r>Number.MAX_SAFE_INTEGER){this.errors.push(new h(r.toString()));return}r=BigInt(r)}if(o){const e=1n<<t-1n;if(r>=e||r<-e){this.errors.push(new h(r.toString(),e-1n));return}if(r<0n){const n=(1n<<t)-1n;r=-r,r=(~r&n)+1n}}else{const e=1n<<t;if(r<0||r>=e){this.errors.push(new h(r.toString(),e-1n));return}}return r}}export{m as ByteArrayBuilder};
1
+ import{hexaStringToBuffer as h}from"../../utils/HexaString";import{DataOverflowError as a,HexaStringEncodeError as b,ValueOverflowError as u}from"./AppBuilderError";const B=4294967295;class l{constructor(r=B){this.maxPayloadSize=r}data=new Uint8Array;errors=[];build=()=>this.data;tryBuild=()=>this.hasErrors()?void 0:this.data;add8BitUIntToData=r=>this.addNumberToData(r,8n,!1,!1);add16BitUIntToData=(r,t=!0)=>this.addNumberToData(r,16n,!1,t);add32BitUIntToData=(r,t=!0)=>this.addNumberToData(r,32n,!1,t);add64BitUIntToData=(r,t=!0)=>this.addNumberToData(r,64n,!1,t);add128BitUIntToData=(r,t=!0)=>this.addNumberToData(r,128n,!1,t);add256BitUIntToData=(r,t=!0)=>this.addNumberToData(r,256n,!1,t);add16BitIntToData=(r,t=!0)=>this.addNumberToData(r,16n,!0,t);add32BitIntToData=(r,t=!0)=>this.addNumberToData(r,32n,!0,t);add64BitIntToData=(r,t=!0)=>this.addNumberToData(r,64n,!0,t);add128BitIntToData=(r,t=!0)=>this.addNumberToData(r,128n,!0,t);add256BitIntToData=(r,t=!0)=>this.addNumberToData(r,256n,!0,t);addBufferToData=r=>this.hasEnoughLengthRemaining(r)?(this.data=Uint8Array.from([...this.data,...r]),this):(this.errors.push(new a(r.toString())),this);addHexaStringToData=r=>{const t=h(r);return t===null||t.length===0?(this.errors.push(new b(r)),this):(this.addBufferToData(t),this)};addAsciiStringToData=r=>{const t=new TextEncoder().encode(r);return this.addBufferToData(t),this};encodeInLVFromHexa=r=>{const t=h(r);return t===null||t.length===0?(this.errors.push(new b(r)),this):this.hasEnoughLengthRemaining(t,!0)?(this.add8BitUIntToData(t.length),this.addBufferToData(t),this):(this.errors.push(new a(r)),this)};encodeInLVFromBuffer=r=>this.hasEnoughLengthRemaining(r,!0)?(this.add8BitUIntToData(r.length),this.addBufferToData(r),this):(this.errors.push(new a(r.toString())),this);encodeInLVFromAscii=r=>this.hasEnoughLengthRemaining(r,!0)?(this.add8BitUIntToData(r.length),this.addAsciiStringToData(r),this):(this.errors.push(new a(r)),this);getAvailablePayloadLength=()=>this.maxPayloadSize-this.data.length;getErrors=()=>this.errors;hasErrors=()=>this.errors.length!==0;hasEnoughLengthRemaining=(r,t=!1)=>this.data.length+r.length+(t?1:0)<=this.maxPayloadSize;addNumberToData(r,t,o,e){let n=this.checkBoundsAndConvert(r,t,o);if(n===void 0)return this;const d=Number(t)/8,s=new Uint8Array(d);if(e)for(let i=d-1;i>=0;i--)s[i]=Number(n&0xffn),n>>=8n;else for(let i=0;i<d;i++)s[i]=Number(n&0xffn),n>>=8n;return this.addBufferToData(s)}checkBoundsAndConvert(r,t,o){if(typeof r=="number"){if(!Number.isInteger(r)||r>Number.MAX_SAFE_INTEGER){this.errors.push(new u(r.toString()));return}r=BigInt(r)}if(o){const e=1n<<t-1n;if(r>=e||r<-e){this.errors.push(new u(r.toString(),e-1n));return}if(r<0n){const n=(1n<<t)-1n;r=-r,r=(~r&n)+1n}}else{const e=1n<<t;if(r<0||r>=e){this.errors.push(new u(r.toString(),e-1n));return}}return r}}export{l as ByteArrayBuilder};
2
2
  //# sourceMappingURL=ByteArrayBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/apdu/utils/ByteArrayBuilder.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@api/utils/HexaString\";\n\nimport {\n type AppBuilderError,\n DataOverflowError,\n HexaStringEncodeError,\n ValueOverflowError,\n} from \"./AppBuilderError\";\n\nconst MAX_32_BIT_UINT = 0xffffffff;\n\n/**\n * ByteArrayBuilder is a utility class to help build APDU payloads.\n * It allows to easily add data to the payload of an APDU command\n * and to encode this data in different formats.\n *\n * @example\n * ```\n * const builder = new ByteArrayBuilder(255)\n * .add8BitUIntToData(0x05)\n * .add16BitUIntToData(0x0607)\n * .addHexaStringToData(\"0x0809\")\n * .addAsciiStringToData(\"hello\")\n *\n * const payload = builder.build();\n * const builderErrors = builder.getErrors();\n * ```\n */\nexport class ByteArrayBuilder {\n private data: Uint8Array = new Uint8Array();\n private readonly errors: AppBuilderError[] = []; // Custom Error\n\n constructor(private maxPayloadSize: number = MAX_32_BIT_UINT) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Build a new payload instance with the current state of the builder\n * @returns {payload} - Returns a new payload instance\n */\n build = (): Uint8Array => this.data;\n\n /**\n * Try to build a new payload instance with the current state of the builder\n * if the builder don't contain any error.\n * @returns {payload | undefined} - Returns a new payload instance or undefined\n */\n tryBuild = (): Uint8Array | undefined => {\n return this.hasErrors() ? undefined : this.data;\n };\n\n /**\n * Add a 8-bit unsigned integer to the payload (max value 0xff = 255)\n * @param value: number | bigint - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add8BitUIntToData = (value: number | bigint): ByteArrayBuilder => {\n return this.addNumberToData(value, 8n, false, false);\n };\n\n /**\n * Add a 16-bit unsigned integer to the payload (max value 0xffff = 65535)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, false, bigEndian);\n };\n\n /**\n * Add a 32-bit unsigned integer to the payload (max value 0xffffffff = 4294967295)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, false, bigEndian);\n };\n\n /**\n * Add a 64-bit unsigned integer to the payload (max value 0xffffffffffffffff = 18446744073709551615)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, false, bigEndian);\n };\n\n /**\n * Add a 16-bit signed integer to the payload (value between -0x8000 to 0x7fff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, true, bigEndian);\n };\n\n /**\n * Add a 32-bit signed integer to the payload (value between -0x80000000 to 0x7fffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, true, bigEndian);\n };\n\n /**\n * Add a 64-bit signed integer to the payload (value between -0x8000000000000000 to 0x7fffffffffffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, true, bigEndian);\n };\n\n /**\n * Add a Uint8Array to the payload if it has enough remaining space\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addBufferToData = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.data = Uint8Array.from([...this.data, ...value]);\n return this;\n };\n\n /**\n * Add a string to the payload if it has enough remaining space\n * and it can be formatted as a hexadecimal string\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addHexaStringToData = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add an ascii string to the data field if it has enough remaining space\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addAsciiStringToData = (value: string): ByteArrayBuilder => {\n const bytes = new TextEncoder().encode(value);\n this.addBufferToData(bytes);\n return this;\n };\n\n /**\n * Add a Length-Value encoded hexadecimal string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromHexa = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n\n if (!this.hasEnoughLengthRemaining(result, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n // values are always being well formatted at this point\n // therefore no status test is needed\n this.add8BitUIntToData(result.length);\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add a Length-Value encoded buffer to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromBuffer = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addBufferToData(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded ascii string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromAscii = (value: string): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addAsciiStringToData(value);\n return this;\n };\n\n /**\n * Returns the remaining payload length\n * @returns {number}\n */\n getAvailablePayloadLength = (): number => {\n return this.maxPayloadSize - this.data.length;\n };\n\n /**\n * Returns the current errors\n * @returns {AppBuilderError[]} - Returns an array of errors\n */\n getErrors = (): AppBuilderError[] => this.errors;\n\n /**\n * Verifies if the builder contains errors\n * @returns {boolean} - Returns wether the builder contains errors or not\n */\n hasErrors = (): boolean => this.errors.length !== 0;\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check if there is enough space to add a value to the data field\n * @param value {string | Uint8Array | number[]} - Value to add to the data\n * @param hasLv {boolean} - Length-Value encoding flag\n * @returns {boolean} - Returns true if there is enough space to add the value\n */\n private hasEnoughLengthRemaining = (\n value: string | Uint8Array | number[],\n hasLv: boolean = false,\n ): boolean => {\n return (\n this.data.length + value.length + (hasLv ? 1 : 0) <= this.maxPayloadSize\n );\n };\n\n /**\n * Add a number to the payload\n * @param value: number | bigint - The value to add to the data\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - Whether the value is signed or unsigned.\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n private addNumberToData(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): ByteArrayBuilder {\n // Convert the number to two's complement and check its bounds\n let converted = this.checkBoundsAndConvert(value, sizeInBits, signed);\n if (converted === undefined) {\n return this;\n }\n\n // Compute the buffer\n const sizeInBytes = Number(sizeInBits) / 8;\n const buffer = new Uint8Array(sizeInBytes);\n if (bigEndian) {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n } else {\n for (let i = 0; i < sizeInBytes; i++) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n }\n return this.addBufferToData(buffer);\n }\n\n /**\n * Checks the bounds of a signed or unsigned integer value and converts it to two's complement if it is signed and negative.\n * @param value The value to check and convert.\n * @param sizeInBits The size of the value in bits.\n * @param signed Whether the value is signed or unsigned.\n * @returns The converted value, or null if the value is out of bounds.\n */\n private checkBoundsAndConvert(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n ): bigint | undefined {\n // Normalize the value to a bigint\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || value > Number.MAX_SAFE_INTEGER) {\n this.errors.push(new ValueOverflowError(value.toString()));\n return;\n }\n value = BigInt(value);\n }\n\n if (!signed) {\n // Check if the value is within the bounds of an unsigned integer\n const limit = 1n << sizeInBits;\n if (value < 0 || value >= limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n } else {\n // Check if the value is within the bounds of a signed integer\n const limit = 1n << (sizeInBits - 1n);\n if (value >= limit || value < -limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (value < 0n) {\n const mask = (1n << sizeInBits) - 1n;\n value = -value;\n value = (~value & mask) + 1n;\n }\n }\n return value;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@api/utils/HexaString\";\n\nimport {\n type AppBuilderError,\n DataOverflowError,\n HexaStringEncodeError,\n ValueOverflowError,\n} from \"./AppBuilderError\";\n\nconst MAX_32_BIT_UINT = 0xffffffff;\n\n/**\n * ByteArrayBuilder is a utility class to help build APDU payloads.\n * It allows to easily add data to the payload of an APDU command\n * and to encode this data in different formats.\n *\n * @example\n * ```\n * const builder = new ByteArrayBuilder(255)\n * .add8BitUIntToData(0x05)\n * .add16BitUIntToData(0x0607)\n * .addHexaStringToData(\"0x0809\")\n * .addAsciiStringToData(\"hello\")\n *\n * const payload = builder.build();\n * const builderErrors = builder.getErrors();\n * ```\n */\nexport class ByteArrayBuilder {\n private data: Uint8Array = new Uint8Array();\n private readonly errors: AppBuilderError[] = []; // Custom Error\n\n constructor(private maxPayloadSize: number = MAX_32_BIT_UINT) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Build a new payload instance with the current state of the builder\n * @returns {payload} - Returns a new payload instance\n */\n build = (): Uint8Array => this.data;\n\n /**\n * Try to build a new payload instance with the current state of the builder\n * if the builder don't contain any error.\n * @returns {payload | undefined} - Returns a new payload instance or undefined\n */\n tryBuild = (): Uint8Array | undefined => {\n return this.hasErrors() ? undefined : this.data;\n };\n\n /**\n * Add a 8-bit unsigned integer to the payload (max value 0xff = 255)\n * @param value: number | bigint - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add8BitUIntToData = (value: number | bigint): ByteArrayBuilder => {\n return this.addNumberToData(value, 8n, false, false);\n };\n\n /**\n * Add a 16-bit unsigned integer to the payload (max value 0xffff = 65535)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, false, bigEndian);\n };\n\n /**\n * Add a 32-bit unsigned integer to the payload (max value 0xffffffff = 4294967295)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, false, bigEndian);\n };\n\n /**\n * Add a 64-bit unsigned integer to the payload (max value 0xffffffffffffffff = 18446744073709551615)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, false, bigEndian);\n };\n\n /**\n * Add a 128-bit unsigned integer to the payload\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add128BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 128n, false, bigEndian);\n };\n\n /**\n * Add a 256-bit unsigned integer to the payload\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add256BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 256n, false, bigEndian);\n };\n\n /**\n * Add a 16-bit signed integer to the payload (value between -0x8000 to 0x7fff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, true, bigEndian);\n };\n\n /**\n * Add a 32-bit signed integer to the payload (value between -0x80000000 to 0x7fffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, true, bigEndian);\n };\n\n /**\n * Add a 64-bit signed integer to the payload (value between -0x8000000000000000 to 0x7fffffffffffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, true, bigEndian);\n };\n\n /**\n * Add a 128-bit signed integer to the payload\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add128BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 128n, true, bigEndian);\n };\n\n /**\n * Add a 256-bit signed integer to the payload\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add256BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 256n, true, bigEndian);\n };\n\n /**\n * Add a Uint8Array to the payload if it has enough remaining space\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addBufferToData = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.data = Uint8Array.from([...this.data, ...value]);\n return this;\n };\n\n /**\n * Add a string to the payload if it has enough remaining space\n * and it can be formatted as a hexadecimal string\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addHexaStringToData = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add an ascii string to the data field if it has enough remaining space\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addAsciiStringToData = (value: string): ByteArrayBuilder => {\n const bytes = new TextEncoder().encode(value);\n this.addBufferToData(bytes);\n return this;\n };\n\n /**\n * Add a Length-Value encoded hexadecimal string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromHexa = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n\n if (!this.hasEnoughLengthRemaining(result, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n // values are always being well formatted at this point\n // therefore no status test is needed\n this.add8BitUIntToData(result.length);\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add a Length-Value encoded buffer to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromBuffer = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addBufferToData(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded ascii string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromAscii = (value: string): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addAsciiStringToData(value);\n return this;\n };\n\n /**\n * Returns the remaining payload length\n * @returns {number}\n */\n getAvailablePayloadLength = (): number => {\n return this.maxPayloadSize - this.data.length;\n };\n\n /**\n * Returns the current errors\n * @returns {AppBuilderError[]} - Returns an array of errors\n */\n getErrors = (): AppBuilderError[] => this.errors;\n\n /**\n * Verifies if the builder contains errors\n * @returns {boolean} - Returns wether the builder contains errors or not\n */\n hasErrors = (): boolean => this.errors.length !== 0;\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check if there is enough space to add a value to the data field\n * @param value {string | Uint8Array | number[]} - Value to add to the data\n * @param hasLv {boolean} - Length-Value encoding flag\n * @returns {boolean} - Returns true if there is enough space to add the value\n */\n private hasEnoughLengthRemaining = (\n value: string | Uint8Array | number[],\n hasLv: boolean = false,\n ): boolean => {\n return (\n this.data.length + value.length + (hasLv ? 1 : 0) <= this.maxPayloadSize\n );\n };\n\n /**\n * Add a number to the payload\n * @param value: number | bigint - The value to add to the data\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - Whether the value is signed or unsigned.\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n private addNumberToData(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): ByteArrayBuilder {\n // Convert the number to two's complement and check its bounds\n let converted = this.checkBoundsAndConvert(value, sizeInBits, signed);\n if (converted === undefined) {\n return this;\n }\n\n // Compute the buffer\n const sizeInBytes = Number(sizeInBits) / 8;\n const buffer = new Uint8Array(sizeInBytes);\n if (bigEndian) {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n } else {\n for (let i = 0; i < sizeInBytes; i++) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n }\n return this.addBufferToData(buffer);\n }\n\n /**\n * Checks the bounds of a signed or unsigned integer value and converts it to two's complement if it is signed and negative.\n * @param value The value to check and convert.\n * @param sizeInBits The size of the value in bits.\n * @param signed Whether the value is signed or unsigned.\n * @returns The converted value, or null if the value is out of bounds.\n */\n private checkBoundsAndConvert(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n ): bigint | undefined {\n // Normalize the value to a bigint\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || value > Number.MAX_SAFE_INTEGER) {\n this.errors.push(new ValueOverflowError(value.toString()));\n return;\n }\n value = BigInt(value);\n }\n\n if (!signed) {\n // Check if the value is within the bounds of an unsigned integer\n const limit = 1n << sizeInBits;\n if (value < 0 || value >= limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n } else {\n // Check if the value is within the bounds of a signed integer\n const limit = 1n << (sizeInBits - 1n);\n if (value >= limit || value < -limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (value < 0n) {\n const mask = (1n << sizeInBits) - 1n;\n value = -value;\n value = (~value & mask) + 1n;\n }\n }\n return value;\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,sBAAAA,MAA0B,wBAEnC,OAEE,qBAAAC,EACA,yBAAAC,EACA,sBAAAC,MACK,oBAEP,MAAMC,EAAkB,WAmBjB,MAAMC,CAAiB,CAI5B,YAAoBC,EAAyBF,EAAiB,CAA1C,oBAAAE,CAA2C,CAHvD,KAAmB,IAAI,WACd,OAA4B,CAAC,EAY9C,MAAQ,IAAkB,KAAK,KAO/B,SAAW,IACF,KAAK,UAAU,EAAI,OAAY,KAAK,KAQ7C,kBAAqBC,GACZ,KAAK,gBAAgBA,EAAO,GAAI,GAAO,EAAK,EASrD,mBAAqB,CACnBA,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAOC,CAAS,EAS1D,mBAAqB,CACnBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAOC,CAAS,EAS1D,mBAAqB,CACnBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAOC,CAAS,EAS1D,oBAAsB,CACpBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,KAAM,GAAOC,CAAS,EAS3D,oBAAsB,CACpBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,KAAM,GAAOC,CAAS,EAS3D,kBAAoB,CAClBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAMC,CAAS,EASzD,kBAAoB,CAClBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAMC,CAAS,EASzD,kBAAoB,CAClBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,IAAK,GAAMC,CAAS,EASzD,mBAAqB,CACnBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,KAAM,GAAMC,CAAS,EAS1D,mBAAqB,CACnBD,EACAC,EAAqB,KAEd,KAAK,gBAAgBD,EAAO,KAAM,GAAMC,CAAS,EAQ1D,gBAAmBD,GACZ,KAAK,yBAAyBA,CAAK,GAKxC,KAAK,KAAO,WAAW,KAAK,CAAC,GAAG,KAAK,KAAM,GAAGA,CAAK,CAAC,EAC7C,OALL,KAAK,OAAO,KAAK,IAAIN,EAAkBM,EAAM,SAAS,CAAC,CAAC,EACjD,MAaX,oBAAuBA,GAAoC,CACzD,MAAME,EAAST,EAAmBO,CAAK,EACvC,OAAIE,IAAW,MAAQA,EAAO,SAAW,GACvC,KAAK,OAAO,KAAK,IAAIP,EAAsBK,CAAK,CAAC,EAC1C,OAET,KAAK,gBAAgBE,CAAM,EACpB,KACT,EAOA,qBAAwBF,GAAoC,CAC1D,MAAMG,EAAQ,IAAI,YAAY,EAAE,OAAOH,CAAK,EAC5C,YAAK,gBAAgBG,CAAK,EACnB,IACT,EASA,mBAAsBH,GAAoC,CACxD,MAAME,EAAST,EAAmBO,CAAK,EACvC,OAAIE,IAAW,MAAQA,EAAO,SAAW,GACvC,KAAK,OAAO,KAAK,IAAIP,EAAsBK,CAAK,CAAC,EAC1C,MAGJ,KAAK,yBAAyBE,EAAQ,EAAI,GAM/C,KAAK,kBAAkBA,EAAO,MAAM,EACpC,KAAK,gBAAgBA,CAAM,EACpB,OAPL,KAAK,OAAO,KAAK,IAAIR,EAAkBM,CAAK,CAAC,EACtC,KAOX,EASA,qBAAwBA,GACjB,KAAK,yBAAyBA,EAAO,EAAI,GAK9C,KAAK,kBAAkBA,EAAM,MAAM,EACnC,KAAK,gBAAgBA,CAAK,EACnB,OANL,KAAK,OAAO,KAAK,IAAIN,EAAkBM,EAAM,SAAS,CAAC,CAAC,EACjD,MAeX,oBAAuBA,GAChB,KAAK,yBAAyBA,EAAO,EAAI,GAK9C,KAAK,kBAAkBA,EAAM,MAAM,EACnC,KAAK,qBAAqBA,CAAK,EACxB,OANL,KAAK,OAAO,KAAK,IAAIN,EAAkBM,CAAK,CAAC,EACtC,MAYX,0BAA4B,IACnB,KAAK,eAAiB,KAAK,KAAK,OAOzC,UAAY,IAAyB,KAAK,OAM1C,UAAY,IAAe,KAAK,OAAO,SAAW,EAY1C,yBAA2B,CACjCA,EACAI,EAAiB,KAGf,KAAK,KAAK,OAASJ,EAAM,QAAUI,EAAQ,EAAI,IAAM,KAAK,eAYtD,gBACNJ,EACAK,EACAC,EACAL,EACkB,CAElB,IAAIM,EAAY,KAAK,sBAAsBP,EAAOK,EAAYC,CAAM,EACpE,GAAIC,IAAc,OAChB,OAAO,KAIT,MAAMC,EAAc,OAAOH,CAAU,EAAI,EACnCI,EAAS,IAAI,WAAWD,CAAW,EACzC,GAAIP,EACF,QAAS,EAAIO,EAAc,EAAG,GAAK,EAAG,IACpCC,EAAO,CAAC,EAAI,OAAOF,EAAY,KAAK,EACpCA,IAAc,OAGhB,SAAS,EAAI,EAAG,EAAIC,EAAa,IAC/BC,EAAO,CAAC,EAAI,OAAOF,EAAY,KAAK,EACpCA,IAAc,GAGlB,OAAO,KAAK,gBAAgBE,CAAM,CACpC,CASQ,sBACNT,EACAK,EACAC,EACoB,CAEpB,GAAI,OAAON,GAAU,SAAU,CAC7B,GAAI,CAAC,OAAO,UAAUA,CAAK,GAAKA,EAAQ,OAAO,iBAAkB,CAC/D,KAAK,OAAO,KAAK,IAAIJ,EAAmBI,EAAM,SAAS,CAAC,CAAC,EACzD,MACF,CACAA,EAAQ,OAAOA,CAAK,CACtB,CAEA,GAAKM,EAOE,CAEL,MAAMI,EAAQ,IAAOL,EAAa,GAClC,GAAIL,GAASU,GAASV,EAAQ,CAACU,EAAO,CACpC,KAAK,OAAO,KAAK,IAAId,EAAmBI,EAAM,SAAS,EAAGU,EAAQ,EAAE,CAAC,EACrE,MACF,CAIA,GAAIV,EAAQ,GAAI,CACd,MAAMW,GAAQ,IAAMN,GAAc,GAClCL,EAAQ,CAACA,EACTA,GAAS,CAACA,EAAQW,GAAQ,EAC5B,CACF,KAtBa,CAEX,MAAMD,EAAQ,IAAML,EACpB,GAAIL,EAAQ,GAAKA,GAASU,EAAO,CAC/B,KAAK,OAAO,KAAK,IAAId,EAAmBI,EAAM,SAAS,EAAGU,EAAQ,EAAE,CAAC,EACrE,MACF,CACF,CAgBA,OAAOV,CACT,CACF",
6
6
  "names": ["hexaStringToBuffer", "DataOverflowError", "HexaStringEncodeError", "ValueOverflowError", "MAX_32_BIT_UINT", "ByteArrayBuilder", "maxPayloadSize", "value", "bigEndian", "result", "bytes", "hasLv", "sizeInBits", "signed", "converted", "sizeInBytes", "buffer", "limit", "mask"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as s}from"../../utils/HexaString";import{APDU_MAX_PAYLOAD as r}from"./ApduBuilder";import{DataOverflowError as f,HexaStringEncodeError as x}from"./AppBuilderError";import{ByteArrayBuilder as l}from"./ByteArrayBuilder";const u=new Uint8Array([]),y=new Uint8Array([1]),A=new Uint8Array([128,129,130,131,132]),p=new Uint8Array([133,134,135,136]),E=new Uint8Array([3,161,162,163]),w=new Uint8Array([5,109,97,109,97,110]),b=new Uint8Array([2,240,241]),h=new Uint8Array([1,51,2,1,35,69,103,128,129,130,131,132,133,134,135,136,3,161,162,163,5,109,97,109,97,110,2,240,241]),i=new Uint8Array([...Array(255).fill(170)]),g=new Uint8Array([...Array(254).fill(170)]);let e;describe("ByteArrayBuilder",()=>{const d=(t,a,o,n)=>{if(n)switch(o){case 2:e.add16BitIntToData(t,a);break;case 4:e.add32BitIntToData(t,a);break;case 8:e.add64BitIntToData(t,a);break}else switch(o){case 2:e.add16BitUIntToData(t,a);break;case 4:e.add32BitUIntToData(t,a);break;case 8:e.add64BitUIntToData(t,a);break}};describe("clean",()=>{beforeEach(()=>{e=new l(r)}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(l)})}),describe("simple",()=>{beforeEach(()=>{e=new l(r)}),it("should serialize with an empty body",()=>{expect(e.build()).toEqual(u)}),it("should serialize with an single byte body",()=>{e=new l(1),e.add8BitUIntToData(1),expect(e.build()).toEqual(y),expect(e.getErrors()).toEqual([])}),it.each([[2,!1,!0,13058,"3302"],[2,!1,!1,0x3302n,"0233"],[2,!0,!0,4200n,"1068"],[2,!0,!0,-4200n,"ef98"],[2,!0,!1,4200,"6810"],[2,!0,!1,-4200,"98ef"],[4,!1,!0,0x01234567n,"01234567"],[4,!1,!1,0x01234567n,"67452301"],[4,!0,!0,123456789,"075bcd15"],[4,!0,!0,-123456789,"f8a432eb"],[4,!0,!1,123456789,"15cd5b07"],[4,!0,!1,-123456789,"eb32a4f8"],[8,!1,!0,14147778004927559n,"0032435442584447"],[8,!1,!1,14147778004927559n,"4744584254433200"],[8,!0,!0,14147778004927559n,"0032435442584447"],[8,!0,!0,-14147778004927559n,"ffcdbcabbda7bbb9"],[8,!0,!1,14147778004927559n,"4744584254433200"],[8,!0,!1,-14147778004927559n,"b9bba7bdabbccdff"]])("serialize the following number: size %i, signed %s, bigEndian %s, value %i, expected %s",(t,a,o,n,c)=>{e=new l(t),d(n,o,t,a),expect(e.build()).toEqual(s(c)),expect(e.getErrors()).toEqual([]),e=new l(t-1),d(n,o,t,a),expect(e.getErrors().length).toEqual(1),expect(e.build()).toEqual(Uint8Array.from([]))}),it.each([[2,!1,!0,0xffffn,"ffff"],[2,!0,!0,0x7fffn,"7fff"],[2,!0,!0,-0x8000n,"8000"],[4,!1,!0,0xffffffffn,"ffffffff"],[4,!0,!0,0x7fffffffn,"7fffffff"],[4,!0,!0,-0x80000000n,"80000000"],[8,!1,!0,0xffffffffffffffffn,"ffffffffffffffff"],[8,!0,!0,0x7fffffffffffffffn,"7fffffffffffffff"],[8,!0,!0,-0x8000000000000000n,"8000000000000000"]])("serialize the number to the limit: size %i, signed %s, bigEndian %s, value %i, expected %s",(t,a,o,n,c)=>{e=new l(t),d(n,o,t,a),expect(e.build()).toEqual(s(c)),expect(e.getErrors()).toEqual([])}),it("Serialize from float to bigint",()=>{e=new l(4),e.add32BitIntToData(1234567893e-1,!1),expect(e.getErrors().length).toEqual(1),expect(e.build()).toEqual(Uint8Array.from([]))}),it("should serialize with an 5 byte body from an hexastring",()=>{e.addHexaStringToData("0x8081828384"),expect(e.build()).toEqual(A),expect(e.getErrors()).toEqual([])}),it("should serialize with an 4 byte body from an hexastring without '0x'",()=>{e.addHexaStringToData("85868788"),expect(e.build()).toEqual(p),expect(e.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from an hexastring",()=>{e.encodeInLVFromHexa("0xA1A2A3"),expect(e.build()).toEqual(E),expect(e.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from an ascci string",()=>{e.encodeInLVFromAscii("maman"),expect(e.build()).toEqual(w),expect(e.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from a buffer",()=>{const t=new Uint8Array([240,241]);e.encodeInLVFromBuffer(t),expect(e.build()).toEqual(b),expect(e.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from a buffer",()=>{const t=new Uint8Array([240,241]);e.encodeInLVFromBuffer(t),expect(e.build()).toEqual(b),expect(e.getErrors()).toEqual([])}),it("should serialize with an complete body of 0xAA",()=>{const t=new Uint8Array(255).fill(170,0,255);e.addBufferToData(t),expect(e.build()).toEqual(i),expect(e.getErrors()).toEqual([])})}),describe("mixed",()=>{beforeEach(()=>{e=new l(r)}),it("should serialize with all previous field",()=>{let t=r;e.add8BitUIntToData(1),t--,expect(e.getAvailablePayloadLength()).toBe(t),e.add16BitUIntToData(13058),t-=2,expect(e.getAvailablePayloadLength()).toBe(t),e.add32BitUIntToData(19088743),t-=4,expect(e.getAvailablePayloadLength()).toBe(t),e.addHexaStringToData("0x8081828384"),t-=5,expect(e.getAvailablePayloadLength()).toBe(t),e.addHexaStringToData("85868788"),t-=4,expect(e.getAvailablePayloadLength()).toBe(t),e.encodeInLVFromHexa("0xA1A2A3"),t-=4,expect(e.getAvailablePayloadLength()).toBe(t),e.encodeInLVFromAscii("maman"),t-=6,expect(e.getAvailablePayloadLength()).toBe(t);const a=new Uint8Array([240,241]);e.encodeInLVFromBuffer(a),t-=3,expect(e.getAvailablePayloadLength()).toBe(t),expect(e.build()).toEqual(h)})}),describe("error",()=>{beforeEach(()=>{e=new l(r)}),it.each([[2,!1,!0,0x10000n],[2,!0,!0,0x8000n],[2,!0,!0,-0x8001n],[4,!1,!0,0x100000000n],[4,!0,!0,0x80000000n],[4,!0,!0,-0x80000001n],[8,!1,!0,0x10000000000000000n],[8,!0,!0,0x8000000000000000n],[8,!0,!0,-0x8000000000000001n]])("serialize the number overflowed: size %i, signed %s, bigEndian %s, value %i",(t,a,o,n)=>{e=new l(t),d(n,o,t,a),expect(e.getErrors().length).toEqual(1),expect(e.build()).toEqual(Uint8Array.from([]))}),it("error due to a string not well coded",()=>{e.addHexaStringToData(":08081828384").addHexaStringToData("80818n8384").addHexaStringToData("808182838z"),expect(e.build()).toEqual(u),expect(e.getAvailablePayloadLength()).toBe(r),expect(e.getErrors()).toEqual([new x(":08081828384"),new x("80818n8384"),new x("808182838z")])}),it("error due direct overflow",()=>{const t=new Uint8Array(256).fill(170,0,256);e.addBufferToData(t),expect(e.build()).toEqual(u),expect(e.getAvailablePayloadLength()).toBe(r),expect(e.getErrors()).toEqual([new f(t.toString())])}),it("error due to subsequent overflow with 1-byte array",()=>{const t=new Uint8Array(r).fill(170,0,r);e.addBufferToData(t),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0);const a=new Uint8Array(1);a.set([255],0),e.addBufferToData(a),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0),expect(e.getErrors()).toEqual([new f(a.toString())])}),it("error due to subsequent overflow with 1-char ascii",()=>{const t=new Uint8Array(r).fill(170,0,r);e.addBufferToData(t),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0);const a="a";e.addAsciiStringToData(a),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0),expect(e.getErrors()).toEqual([new f(new TextEncoder().encode(a).toString())])}),it("error due to subsequent overflow with 1-char hexastring",()=>{const t=new Uint8Array(r).fill(170,0,r);e.addBufferToData(t),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0),e.addHexaStringToData("0xB4").addHexaStringToData("e1"),expect(e.build()).toEqual(i),expect(e.getAvailablePayloadLength()).toBe(0),expect(e.getErrors()).toEqual([new f("180"),new f("225")])}),it("error due to empty values",()=>{const t="";e.addHexaStringToData(t).encodeInLVFromHexa(t),expect(e.build()).toEqual(u),expect(e.getAvailablePayloadLength()).toBe(r),expect(e.getErrors()).toEqual([new x(t),new x(t)])}),it("error due to subsequent overflow with 1-char LV",()=>{const t=new Uint8Array(r-1).fill(170,0,r-1);e.addBufferToData(t),expect(e.build()).toEqual(g),expect(e.getAvailablePayloadLength()).toBe(1);const a="n",o="e1",n=new Uint8Array(1);n.set([255],0),e.encodeInLVFromAscii(a).encodeInLVFromHexa(o).encodeInLVFromBuffer(n),expect(e.build()).toEqual(g),expect(e.getAvailablePayloadLength()).toBe(1),expect(e.getErrors()).toEqual([new f(a),new f(o),new f(n.toString())])})})});
1
+ import{hexaStringToBuffer as b}from"../../utils/HexaString";import{APDU_MAX_PAYLOAD as a}from"./ApduBuilder";import{DataOverflowError as l,HexaStringEncodeError as d}from"./AppBuilderError";import{ByteArrayBuilder as n}from"./ByteArrayBuilder";const u=new Uint8Array([]),y=new Uint8Array([1]),A=new Uint8Array([128,129,130,131,132]),p=new Uint8Array([133,134,135,136]),E=new Uint8Array([3,161,162,163]),w=new Uint8Array([5,109,97,109,97,110]),s=new Uint8Array([2,240,241]),h=new Uint8Array([1,51,2,1,35,69,103,128,129,130,131,132,133,134,135,136,3,161,162,163,5,109,97,109,97,110,2,240,241]),i=new Uint8Array([...Array(255).fill(170)]),g=new Uint8Array([...Array(254).fill(170)]);let f;describe("ByteArrayBuilder",()=>{const x=(e,t,r,o)=>{if(o)switch(r){case 2:f.add16BitIntToData(e,t);break;case 4:f.add32BitIntToData(e,t);break;case 8:f.add64BitIntToData(e,t);break;case 16:f.add128BitIntToData(e,t);break;case 32:f.add256BitIntToData(e,t);break}else switch(r){case 2:f.add16BitUIntToData(e,t);break;case 4:f.add32BitUIntToData(e,t);break;case 8:f.add64BitUIntToData(e,t);break;case 16:f.add128BitUIntToData(e,t);break;case 32:f.add256BitUIntToData(e,t);break}};describe("clean",()=>{beforeEach(()=>{f=new n(a)}),it("should create an instance",()=>{expect(f).toBeDefined(),expect(f).toBeInstanceOf(n)})}),describe("simple",()=>{beforeEach(()=>{f=new n(a)}),it("should serialize with an empty body",()=>{expect(f.build()).toEqual(u)}),it("should serialize with an single byte body",()=>{f=new n(1),f.add8BitUIntToData(1),expect(f.build()).toEqual(y),expect(f.getErrors()).toEqual([])}),it.each([[2,!1,!0,13058,"3302"],[2,!1,!1,0x3302n,"0233"],[2,!0,!0,4200n,"1068"],[2,!0,!0,-4200n,"ef98"],[2,!0,!1,4200,"6810"],[2,!0,!1,-4200,"98ef"],[4,!1,!0,0x01234567n,"01234567"],[4,!1,!1,0x01234567n,"67452301"],[4,!0,!0,123456789,"075bcd15"],[4,!0,!0,-123456789,"f8a432eb"],[4,!0,!1,123456789,"15cd5b07"],[4,!0,!1,-123456789,"eb32a4f8"],[8,!1,!0,14147778004927559n,"0032435442584447"],[8,!1,!1,14147778004927559n,"4744584254433200"],[8,!0,!0,14147778004927559n,"0032435442584447"],[8,!0,!0,-14147778004927559n,"ffcdbcabbda7bbb9"],[8,!0,!1,14147778004927559n,"4744584254433200"],[8,!0,!1,-14147778004927559n,"b9bba7bdabbccdff"],[16,!1,!0,0x00324354425844470032435442584447n,"00324354425844470032435442584447"],[16,!1,!1,0x00324354425844470032435442584447n,"47445842544332004744584254433200"],[16,!0,!0,0x00324354425844470032435442584447n,"00324354425844470032435442584447"],[16,!0,!0,-0x00324354425844470032435442584447n,"ffcdbcabbda7bbb8ffcdbcabbda7bbb9"],[16,!0,!1,0x00324354425844470032435442584447n,"47445842544332004744584254433200"],[16,!0,!1,-0x00324354425844470032435442584447n,"b9bba7bdabbccdffb8bba7bdabbccdff"],[32,!1,!0,0x0032435442584447003243544258444700324354425844470032435442584447n,"0032435442584447003243544258444700324354425844470032435442584447"],[32,!1,!1,0x0032435442584447003243544258444700324354425844470032435442584447n,"4744584254433200474458425443320047445842544332004744584254433200"],[32,!0,!0,0x0032435442584447003243544258444700324354425844470032435442584447n,"0032435442584447003243544258444700324354425844470032435442584447"],[32,!0,!0,-0x0032435442584447003243544258444700324354425844470032435442584447n,"ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb9"],[32,!0,!1,0x0032435442584447003243544258444700324354425844470032435442584447n,"4744584254433200474458425443320047445842544332004744584254433200"],[32,!0,!1,-0x0032435442584447003243544258444700324354425844470032435442584447n,"b9bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdff"]])("serialize the following number: size %i, signed %s, bigEndian %s, value %i, expected %s",(e,t,r,o,c)=>{f=new n(e),x(o,r,e,t),expect(f.build()).toEqual(b(c)),expect(f.getErrors()).toEqual([]),f=new n(e-1),x(o,r,e,t),expect(f.getErrors().length).toEqual(1),expect(f.build()).toEqual(Uint8Array.from([]))}),it.each([[2,!1,!0,0xffffn,"ffff"],[2,!0,!0,0x7fffn,"7fff"],[2,!0,!0,-0x8000n,"8000"],[4,!1,!0,0xffffffffn,"ffffffff"],[4,!0,!0,0x7fffffffn,"7fffffff"],[4,!0,!0,-0x80000000n,"80000000"],[8,!1,!0,0xffffffffffffffffn,"ffffffffffffffff"],[8,!0,!0,0x7fffffffffffffffn,"7fffffffffffffff"],[8,!0,!0,-0x8000000000000000n,"8000000000000000"],[16,!1,!0,0xffffffffffffffffffffffffffffffffn,"ffffffffffffffffffffffffffffffff"],[16,!0,!0,0x7fffffffffffffffffffffffffffffffn,"7fffffffffffffffffffffffffffffff"],[16,!0,!0,-0x80000000000000000000000000000000n,"80000000000000000000000000000000"],[32,!1,!0,0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"],[32,!0,!0,0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"],[32,!0,!0,-0x8000000000000000000000000000000000000000000000000000000000000000n,"8000000000000000000000000000000000000000000000000000000000000000"]])("serialize the number to the limit: size %i, signed %s, bigEndian %s, value %i, expected %s",(e,t,r,o,c)=>{f=new n(e),x(o,r,e,t),expect(f.build()).toEqual(b(c)),expect(f.getErrors()).toEqual([])}),it("Serialize from float to bigint",()=>{f=new n(4),f.add32BitIntToData(1234567893e-1,!1),expect(f.getErrors().length).toEqual(1),expect(f.build()).toEqual(Uint8Array.from([]))}),it("should serialize with an 5 byte body from an hexastring",()=>{f.addHexaStringToData("0x8081828384"),expect(f.build()).toEqual(A),expect(f.getErrors()).toEqual([])}),it("should serialize with an 4 byte body from an hexastring without '0x'",()=>{f.addHexaStringToData("85868788"),expect(f.build()).toEqual(p),expect(f.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from an hexastring",()=>{f.encodeInLVFromHexa("0xA1A2A3"),expect(f.build()).toEqual(E),expect(f.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from an ascci string",()=>{f.encodeInLVFromAscii("maman"),expect(f.build()).toEqual(w),expect(f.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from a buffer",()=>{const e=new Uint8Array([240,241]);f.encodeInLVFromBuffer(e),expect(f.build()).toEqual(s),expect(f.getErrors()).toEqual([])}),it("should serialize with an 4 byte body LV encoded from a buffer",()=>{const e=new Uint8Array([240,241]);f.encodeInLVFromBuffer(e),expect(f.build()).toEqual(s),expect(f.getErrors()).toEqual([])}),it("should serialize with an complete body of 0xAA",()=>{const e=new Uint8Array(255).fill(170,0,255);f.addBufferToData(e),expect(f.build()).toEqual(i),expect(f.getErrors()).toEqual([])})}),describe("mixed",()=>{beforeEach(()=>{f=new n(a)}),it("should serialize with all previous field",()=>{let e=a;f.add8BitUIntToData(1),e--,expect(f.getAvailablePayloadLength()).toBe(e),f.add16BitUIntToData(13058),e-=2,expect(f.getAvailablePayloadLength()).toBe(e),f.add32BitUIntToData(19088743),e-=4,expect(f.getAvailablePayloadLength()).toBe(e),f.addHexaStringToData("0x8081828384"),e-=5,expect(f.getAvailablePayloadLength()).toBe(e),f.addHexaStringToData("85868788"),e-=4,expect(f.getAvailablePayloadLength()).toBe(e),f.encodeInLVFromHexa("0xA1A2A3"),e-=4,expect(f.getAvailablePayloadLength()).toBe(e),f.encodeInLVFromAscii("maman"),e-=6,expect(f.getAvailablePayloadLength()).toBe(e);const t=new Uint8Array([240,241]);f.encodeInLVFromBuffer(t),e-=3,expect(f.getAvailablePayloadLength()).toBe(e),expect(f.build()).toEqual(h)})}),describe("error",()=>{beforeEach(()=>{f=new n(a)}),it.each([[2,!1,!0,0x10000n],[2,!0,!0,0x8000n],[2,!0,!0,-0x8001n],[4,!1,!0,0x100000000n],[4,!0,!0,0x80000000n],[4,!0,!0,-0x80000001n],[8,!1,!0,0x10000000000000000n],[8,!0,!0,0x8000000000000000n],[8,!0,!0,-0x8000000000000001n]])("serialize the number overflowed: size %i, signed %s, bigEndian %s, value %i",(e,t,r,o)=>{f=new n(e),x(o,r,e,t),expect(f.getErrors().length).toEqual(1),expect(f.build()).toEqual(Uint8Array.from([]))}),it("error due to a string not well coded",()=>{f.addHexaStringToData(":08081828384").addHexaStringToData("80818n8384").addHexaStringToData("808182838z"),expect(f.build()).toEqual(u),expect(f.getAvailablePayloadLength()).toBe(a),expect(f.getErrors()).toEqual([new d(":08081828384"),new d("80818n8384"),new d("808182838z")])}),it("error due direct overflow",()=>{const e=new Uint8Array(256).fill(170,0,256);f.addBufferToData(e),expect(f.build()).toEqual(u),expect(f.getAvailablePayloadLength()).toBe(a),expect(f.getErrors()).toEqual([new l(e.toString())])}),it("error due to subsequent overflow with 1-byte array",()=>{const e=new Uint8Array(a).fill(170,0,a);f.addBufferToData(e),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0);const t=new Uint8Array(1);t.set([255],0),f.addBufferToData(t),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0),expect(f.getErrors()).toEqual([new l(t.toString())])}),it("error due to subsequent overflow with 1-char ascii",()=>{const e=new Uint8Array(a).fill(170,0,a);f.addBufferToData(e),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0);const t="a";f.addAsciiStringToData(t),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0),expect(f.getErrors()).toEqual([new l(new TextEncoder().encode(t).toString())])}),it("error due to subsequent overflow with 1-char hexastring",()=>{const e=new Uint8Array(a).fill(170,0,a);f.addBufferToData(e),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0),f.addHexaStringToData("0xB4").addHexaStringToData("e1"),expect(f.build()).toEqual(i),expect(f.getAvailablePayloadLength()).toBe(0),expect(f.getErrors()).toEqual([new l("180"),new l("225")])}),it("error due to empty values",()=>{const e="";f.addHexaStringToData(e).encodeInLVFromHexa(e),expect(f.build()).toEqual(u),expect(f.getAvailablePayloadLength()).toBe(a),expect(f.getErrors()).toEqual([new d(e),new d(e)])}),it("error due to subsequent overflow with 1-char LV",()=>{const e=new Uint8Array(a-1).fill(170,0,a-1);f.addBufferToData(e),expect(f.build()).toEqual(g),expect(f.getAvailablePayloadLength()).toBe(1);const t="n",r="e1",o=new Uint8Array(1);o.set([255],0),f.encodeInLVFromAscii(t).encodeInLVFromHexa(r).encodeInLVFromBuffer(o),expect(f.build()).toEqual(g),expect(f.getAvailablePayloadLength()).toBe(1),expect(f.getErrors()).toEqual([new l(t),new l(r),new l(o.toString())])})})});
2
2
  //# sourceMappingURL=ByteArrayBuilder.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/apdu/utils/ByteArrayBuilder.test.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@api/utils/HexaString\";\n\nimport { APDU_MAX_PAYLOAD } from \"./ApduBuilder\";\nimport { DataOverflowError, HexaStringEncodeError } from \"./AppBuilderError\";\nimport { ByteArrayBuilder } from \"./ByteArrayBuilder\";\n\nconst COMMAND_NO_BODY = new Uint8Array([]);\n\nconst COMMAND_BODY_SINGLE = new Uint8Array([0x01]);\n\nconst COMMAND_BODY_HEXA1 = new Uint8Array([0x80, 0x81, 0x82, 0x83, 0x84]);\n\nconst COMMAND_BODY_HEXA2 = new Uint8Array([0x85, 0x86, 0x87, 0x88]);\n\nconst COMMAND_BODY_LV_HEXA = new Uint8Array([0x03, 0xa1, 0xa2, 0xa3]);\n\nconst COMMAND_BODY_LV_ASCII = new Uint8Array([\n 0x05, 0x6d, 0x61, 0x6d, 0x61, 0x6e,\n]);\n\nconst COMMAND_BODY_LV_ARRAY = new Uint8Array([0x02, 0xf0, 0xf1]);\n\nconst COMMAND_BODY_COMBINED = new Uint8Array([\n 0x01, 0x33, 0x02, 0x01, 0x23, 0x45, 0x67, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85,\n 0x86, 0x87, 0x88, 0x03, 0xa1, 0xa2, 0xa3, 0x05, 0x6d, 0x61, 0x6d, 0x61, 0x6e,\n 0x02, 0xf0, 0xf1,\n]);\n\nconst COMMAND_BODY_MAX = new Uint8Array([...Array<number>(255).fill(0xaa)]);\n\nconst COMMAND_BODY_NEARLY = new Uint8Array([...Array<number>(254).fill(0xaa)]);\n\nlet builder: ByteArrayBuilder;\n\ndescribe(\"ByteArrayBuilder\", () => {\n const builderAddNumber = (\n num: number | bigint,\n bigEndian: boolean,\n sizeInBits: number,\n signed: boolean,\n ) => {\n if (signed) {\n switch (sizeInBits) {\n case 2:\n builder.add16BitIntToData(num, bigEndian);\n break;\n case 4:\n builder.add32BitIntToData(num, bigEndian);\n break;\n case 8:\n builder.add64BitIntToData(num, bigEndian);\n break;\n }\n } else {\n switch (sizeInBits) {\n case 2:\n builder.add16BitUIntToData(num, bigEndian);\n break;\n case 4:\n builder.add32BitUIntToData(num, bigEndian);\n break;\n case 8:\n builder.add64BitUIntToData(num, bigEndian);\n break;\n }\n }\n };\n\n describe(\"clean\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should create an instance\", () => {\n expect(builder).toBeDefined();\n expect(builder).toBeInstanceOf(ByteArrayBuilder);\n });\n });\n\n describe(\"simple\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should serialize with an empty body\", () => {\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n });\n\n it(\"should serialize with an single byte body\", () => {\n builder = new ByteArrayBuilder(1);\n builder.add8BitUIntToData(0x01);\n expect(builder.build()).toEqual(COMMAND_BODY_SINGLE);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it.each([\n [2, false, true, 0x3302, \"3302\"],\n [2, false, false, 0x3302n, \"0233\"],\n [2, true, true, 4200n, \"1068\"],\n [2, true, true, -4200n, \"ef98\"],\n [2, true, false, 4200, \"6810\"],\n [2, true, false, -4200, \"98ef\"],\n [4, false, true, 0x01234567n, \"01234567\"],\n [4, false, false, 0x01234567n, \"67452301\"],\n [4, true, true, 123456789, \"075bcd15\"],\n [4, true, true, -123456789, \"f8a432eb\"],\n [4, true, false, 123456789, \"15cd5b07\"],\n [4, true, false, -123456789, \"eb32a4f8\"],\n [8, false, true, 14147778004927559n, \"0032435442584447\"],\n [8, false, false, 14147778004927559n, \"4744584254433200\"],\n [8, true, true, 14147778004927559n, \"0032435442584447\"],\n [8, true, true, -14147778004927559n, \"ffcdbcabbda7bbb9\"],\n [8, true, false, 14147778004927559n, \"4744584254433200\"],\n [8, true, false, -14147778004927559n, \"b9bba7bdabbccdff\"],\n ])(\n \"serialize the following number: size %i, signed %s, bigEndian %s, value %i, expected %s\",\n (sizeInBits, signed, bigEndian, input, output) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.build()).toEqual(hexaStringToBuffer(output));\n expect(builder.getErrors()).toEqual([]);\n\n // Retry with a buffer too small\n builder = new ByteArrayBuilder(sizeInBits - 1);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n },\n );\n\n it.each([\n [2, false, true, 0xffffn, \"ffff\"],\n [2, true, true, 0x7fffn, \"7fff\"],\n [2, true, true, -0x8000n, \"8000\"],\n [4, false, true, 0xffffffffn, \"ffffffff\"],\n [4, true, true, 0x7fffffffn, \"7fffffff\"],\n [4, true, true, -0x80000000n, \"80000000\"],\n [8, false, true, 0xffffffffffffffffn, \"ffffffffffffffff\"],\n [8, true, true, 0x7fffffffffffffffn, \"7fffffffffffffff\"],\n [8, true, true, -0x8000000000000000n, \"8000000000000000\"],\n ])(\n \"serialize the number to the limit: size %i, signed %s, bigEndian %s, value %i, expected %s\",\n (sizeInBits, signed, bigEndian, input, output) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.build()).toEqual(hexaStringToBuffer(output));\n expect(builder.getErrors()).toEqual([]);\n },\n );\n\n it(\"Serialize from float to bigint\", () => {\n builder = new ByteArrayBuilder(4);\n builder.add32BitIntToData(123456789.3, false);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n });\n\n it(\"should serialize with an 5 byte body from an hexastring\", () => {\n builder.addHexaStringToData(\"0x8081828384\");\n expect(builder.build()).toEqual(COMMAND_BODY_HEXA1);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body from an hexastring without '0x'\", () => {\n builder.addHexaStringToData(\"85868788\");\n expect(builder.build()).toEqual(COMMAND_BODY_HEXA2);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from an hexastring\", () => {\n builder.encodeInLVFromHexa(\"0xA1A2A3\");\n expect(builder.build()).toEqual(COMMAND_BODY_LV_HEXA);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from an ascci string\", () => {\n builder.encodeInLVFromAscii(\"maman\");\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ASCII);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from a buffer\", () => {\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ARRAY);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from a buffer\", () => {\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ARRAY);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an complete body of 0xAA\", () => {\n const myarray = new Uint8Array(255).fill(0xaa, 0, 255);\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getErrors()).toEqual([]);\n });\n });\n\n describe(\"mixed\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should serialize with all previous field\", () => {\n let available = APDU_MAX_PAYLOAD;\n builder.add8BitUIntToData(0x01);\n available--;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.add16BitUIntToData(0x3302);\n available -= 2;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.add32BitUIntToData(0x01234567);\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.addHexaStringToData(\"0x8081828384\");\n available -= 5;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.addHexaStringToData(\"85868788\");\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.encodeInLVFromHexa(\"0xA1A2A3\");\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.encodeInLVFromAscii(\"maman\");\n available -= 6;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n available -= 3;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n expect(builder.build()).toEqual(COMMAND_BODY_COMBINED);\n });\n });\n\n describe(\"error\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it.each([\n [2, false, true, 0x10000n],\n [2, true, true, 0x8000n],\n [2, true, true, -0x8001n],\n [4, false, true, 0x100000000n],\n [4, true, true, 0x80000000n],\n [4, true, true, -0x80000001n],\n [8, false, true, 0x10000000000000000n],\n [8, true, true, 0x8000000000000000n],\n [8, true, true, -0x8000000000000001n],\n ])(\n \"serialize the number overflowed: size %i, signed %s, bigEndian %s, value %i\",\n (sizeInBits, signed, bigEndian, input) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n },\n );\n\n it(\"error due to a string not well coded\", () => {\n builder\n .addHexaStringToData(\":08081828384\")\n .addHexaStringToData(\"80818n8384\")\n .addHexaStringToData(\"808182838z\");\n\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new HexaStringEncodeError(\":08081828384\"),\n new HexaStringEncodeError(\"80818n8384\"),\n new HexaStringEncodeError(\"808182838z\"),\n ]);\n });\n\n it(\"error due direct overflow\", () => {\n const myarray = new Uint8Array(256).fill(0xaa, 0, 256);\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(myarray.toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-byte array\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const mybuffer = new Uint8Array(1);\n mybuffer.set([0xff], 0);\n\n builder.addBufferToData(mybuffer);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(mybuffer.toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char ascii\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const mystring = \"a\";\n\n builder.addAsciiStringToData(mystring);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(new TextEncoder().encode(mystring).toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char hexastring\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const firstString = \"0xB4\";\n const secondString = \"e1\";\n\n builder\n .addHexaStringToData(firstString)\n .addHexaStringToData(secondString);\n\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError((0xb4).toString()),\n new DataOverflowError((0xe1).toString()),\n ]);\n });\n\n it(\"error due to empty values\", () => {\n const mystring = \"\";\n\n builder.addHexaStringToData(mystring).encodeInLVFromHexa(mystring);\n\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new HexaStringEncodeError(mystring),\n new HexaStringEncodeError(mystring),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char LV\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD - 1).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD - 1,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_NEARLY);\n expect(builder.getAvailablePayloadLength()).toBe(1);\n\n const firstString = \"n\";\n const secondString = \"e1\";\n const mybuffer = new Uint8Array(1);\n mybuffer.set([0xff], 0);\n\n builder\n .encodeInLVFromAscii(firstString)\n .encodeInLVFromHexa(secondString)\n .encodeInLVFromBuffer(mybuffer);\n\n expect(builder.build()).toEqual(COMMAND_BODY_NEARLY);\n expect(builder.getAvailablePayloadLength()).toBe(1);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(firstString),\n new DataOverflowError(secondString),\n new DataOverflowError(mybuffer.toString()),\n ]);\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@api/utils/HexaString\";\n\nimport { APDU_MAX_PAYLOAD } from \"./ApduBuilder\";\nimport { DataOverflowError, HexaStringEncodeError } from \"./AppBuilderError\";\nimport { ByteArrayBuilder } from \"./ByteArrayBuilder\";\n\nconst COMMAND_NO_BODY = new Uint8Array([]);\n\nconst COMMAND_BODY_SINGLE = new Uint8Array([0x01]);\n\nconst COMMAND_BODY_HEXA1 = new Uint8Array([0x80, 0x81, 0x82, 0x83, 0x84]);\n\nconst COMMAND_BODY_HEXA2 = new Uint8Array([0x85, 0x86, 0x87, 0x88]);\n\nconst COMMAND_BODY_LV_HEXA = new Uint8Array([0x03, 0xa1, 0xa2, 0xa3]);\n\nconst COMMAND_BODY_LV_ASCII = new Uint8Array([\n 0x05, 0x6d, 0x61, 0x6d, 0x61, 0x6e,\n]);\n\nconst COMMAND_BODY_LV_ARRAY = new Uint8Array([0x02, 0xf0, 0xf1]);\n\nconst COMMAND_BODY_COMBINED = new Uint8Array([\n 0x01, 0x33, 0x02, 0x01, 0x23, 0x45, 0x67, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85,\n 0x86, 0x87, 0x88, 0x03, 0xa1, 0xa2, 0xa3, 0x05, 0x6d, 0x61, 0x6d, 0x61, 0x6e,\n 0x02, 0xf0, 0xf1,\n]);\n\nconst COMMAND_BODY_MAX = new Uint8Array([...Array<number>(255).fill(0xaa)]);\n\nconst COMMAND_BODY_NEARLY = new Uint8Array([...Array<number>(254).fill(0xaa)]);\n\nlet builder: ByteArrayBuilder;\n\ndescribe(\"ByteArrayBuilder\", () => {\n const builderAddNumber = (\n num: number | bigint,\n bigEndian: boolean,\n sizeInBits: number,\n signed: boolean,\n ) => {\n if (signed) {\n switch (sizeInBits) {\n case 2:\n builder.add16BitIntToData(num, bigEndian);\n break;\n case 4:\n builder.add32BitIntToData(num, bigEndian);\n break;\n case 8:\n builder.add64BitIntToData(num, bigEndian);\n break;\n case 16:\n builder.add128BitIntToData(num, bigEndian);\n break;\n case 32:\n builder.add256BitIntToData(num, bigEndian);\n break;\n }\n } else {\n switch (sizeInBits) {\n case 2:\n builder.add16BitUIntToData(num, bigEndian);\n break;\n case 4:\n builder.add32BitUIntToData(num, bigEndian);\n break;\n case 8:\n builder.add64BitUIntToData(num, bigEndian);\n break;\n case 16:\n builder.add128BitUIntToData(num, bigEndian);\n break;\n case 32:\n builder.add256BitUIntToData(num, bigEndian);\n break;\n }\n }\n };\n\n describe(\"clean\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should create an instance\", () => {\n expect(builder).toBeDefined();\n expect(builder).toBeInstanceOf(ByteArrayBuilder);\n });\n });\n\n describe(\"simple\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should serialize with an empty body\", () => {\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n });\n\n it(\"should serialize with an single byte body\", () => {\n builder = new ByteArrayBuilder(1);\n builder.add8BitUIntToData(0x01);\n expect(builder.build()).toEqual(COMMAND_BODY_SINGLE);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it.each([\n [2, false, true, 0x3302, \"3302\"],\n [2, false, false, 0x3302n, \"0233\"],\n [2, true, true, 4200n, \"1068\"],\n [2, true, true, -4200n, \"ef98\"],\n [2, true, false, 4200, \"6810\"],\n [2, true, false, -4200, \"98ef\"],\n [4, false, true, 0x01234567n, \"01234567\"],\n [4, false, false, 0x01234567n, \"67452301\"],\n [4, true, true, 123456789, \"075bcd15\"],\n [4, true, true, -123456789, \"f8a432eb\"],\n [4, true, false, 123456789, \"15cd5b07\"],\n [4, true, false, -123456789, \"eb32a4f8\"],\n [8, false, true, 14147778004927559n, \"0032435442584447\"],\n [8, false, false, 14147778004927559n, \"4744584254433200\"],\n [8, true, true, 14147778004927559n, \"0032435442584447\"],\n [8, true, true, -14147778004927559n, \"ffcdbcabbda7bbb9\"],\n [8, true, false, 14147778004927559n, \"4744584254433200\"],\n [8, true, false, -14147778004927559n, \"b9bba7bdabbccdff\"],\n [\n 16,\n false,\n true,\n 0x00324354425844470032435442584447n,\n \"00324354425844470032435442584447\",\n ],\n [\n 16,\n false,\n false,\n 0x00324354425844470032435442584447n,\n \"47445842544332004744584254433200\",\n ],\n [\n 16,\n true,\n true,\n 0x00324354425844470032435442584447n,\n \"00324354425844470032435442584447\",\n ],\n [\n 16,\n true,\n true,\n -0x00324354425844470032435442584447n,\n \"ffcdbcabbda7bbb8ffcdbcabbda7bbb9\",\n ],\n [\n 16,\n true,\n false,\n 0x00324354425844470032435442584447n,\n \"47445842544332004744584254433200\",\n ],\n [\n 16,\n true,\n false,\n -0x00324354425844470032435442584447n,\n \"b9bba7bdabbccdffb8bba7bdabbccdff\",\n ],\n [\n 32,\n false,\n true,\n 0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"0032435442584447003243544258444700324354425844470032435442584447\",\n ],\n [\n 32,\n false,\n false,\n 0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"4744584254433200474458425443320047445842544332004744584254433200\",\n ],\n [\n 32,\n true,\n true,\n 0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"0032435442584447003243544258444700324354425844470032435442584447\",\n ],\n [\n 32,\n true,\n true,\n -0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb9\",\n ],\n [\n 32,\n true,\n false,\n 0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"4744584254433200474458425443320047445842544332004744584254433200\",\n ],\n [\n 32,\n true,\n false,\n -0x0032435442584447003243544258444700324354425844470032435442584447n,\n \"b9bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdff\",\n ],\n ])(\n \"serialize the following number: size %i, signed %s, bigEndian %s, value %i, expected %s\",\n (sizeInBits, signed, bigEndian, input, output) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.build()).toEqual(hexaStringToBuffer(output));\n expect(builder.getErrors()).toEqual([]);\n\n // Retry with a buffer too small\n builder = new ByteArrayBuilder(sizeInBits - 1);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n },\n );\n\n it.each([\n [2, false, true, 0xffffn, \"ffff\"],\n [2, true, true, 0x7fffn, \"7fff\"],\n [2, true, true, -0x8000n, \"8000\"],\n [4, false, true, 0xffffffffn, \"ffffffff\"],\n [4, true, true, 0x7fffffffn, \"7fffffff\"],\n [4, true, true, -0x80000000n, \"80000000\"],\n [8, false, true, 0xffffffffffffffffn, \"ffffffffffffffff\"],\n [8, true, true, 0x7fffffffffffffffn, \"7fffffffffffffff\"],\n [8, true, true, -0x8000000000000000n, \"8000000000000000\"],\n [\n 16,\n false,\n true,\n 0xffffffffffffffffffffffffffffffffn,\n \"ffffffffffffffffffffffffffffffff\",\n ],\n [\n 16,\n true,\n true,\n 0x7fffffffffffffffffffffffffffffffn,\n \"7fffffffffffffffffffffffffffffff\",\n ],\n [\n 16,\n true,\n true,\n -0x80000000000000000000000000000000n,\n \"80000000000000000000000000000000\",\n ],\n [\n 32,\n false,\n true,\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,\n \"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n ],\n [\n 32,\n true,\n true,\n 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,\n \"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n ],\n [\n 32,\n true,\n true,\n -0x8000000000000000000000000000000000000000000000000000000000000000n,\n \"8000000000000000000000000000000000000000000000000000000000000000\",\n ],\n ])(\n \"serialize the number to the limit: size %i, signed %s, bigEndian %s, value %i, expected %s\",\n (sizeInBits, signed, bigEndian, input, output) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.build()).toEqual(hexaStringToBuffer(output));\n expect(builder.getErrors()).toEqual([]);\n },\n );\n\n it(\"Serialize from float to bigint\", () => {\n builder = new ByteArrayBuilder(4);\n builder.add32BitIntToData(123456789.3, false);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n });\n\n it(\"should serialize with an 5 byte body from an hexastring\", () => {\n builder.addHexaStringToData(\"0x8081828384\");\n expect(builder.build()).toEqual(COMMAND_BODY_HEXA1);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body from an hexastring without '0x'\", () => {\n builder.addHexaStringToData(\"85868788\");\n expect(builder.build()).toEqual(COMMAND_BODY_HEXA2);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from an hexastring\", () => {\n builder.encodeInLVFromHexa(\"0xA1A2A3\");\n expect(builder.build()).toEqual(COMMAND_BODY_LV_HEXA);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from an ascci string\", () => {\n builder.encodeInLVFromAscii(\"maman\");\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ASCII);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from a buffer\", () => {\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ARRAY);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an 4 byte body LV encoded from a buffer\", () => {\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_LV_ARRAY);\n expect(builder.getErrors()).toEqual([]);\n });\n\n it(\"should serialize with an complete body of 0xAA\", () => {\n const myarray = new Uint8Array(255).fill(0xaa, 0, 255);\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getErrors()).toEqual([]);\n });\n });\n\n describe(\"mixed\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it(\"should serialize with all previous field\", () => {\n let available = APDU_MAX_PAYLOAD;\n builder.add8BitUIntToData(0x01);\n available--;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.add16BitUIntToData(0x3302);\n available -= 2;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.add32BitUIntToData(0x01234567);\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.addHexaStringToData(\"0x8081828384\");\n available -= 5;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.addHexaStringToData(\"85868788\");\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.encodeInLVFromHexa(\"0xA1A2A3\");\n available -= 4;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n builder.encodeInLVFromAscii(\"maman\");\n available -= 6;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n const myarray = new Uint8Array([0xf0, 0xf1]);\n builder.encodeInLVFromBuffer(myarray);\n available -= 3;\n expect(builder.getAvailablePayloadLength()).toBe(available);\n\n expect(builder.build()).toEqual(COMMAND_BODY_COMBINED);\n });\n });\n\n describe(\"error\", () => {\n beforeEach(() => {\n builder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n });\n\n it.each([\n [2, false, true, 0x10000n],\n [2, true, true, 0x8000n],\n [2, true, true, -0x8001n],\n [4, false, true, 0x100000000n],\n [4, true, true, 0x80000000n],\n [4, true, true, -0x80000001n],\n [8, false, true, 0x10000000000000000n],\n [8, true, true, 0x8000000000000000n],\n [8, true, true, -0x8000000000000001n],\n ])(\n \"serialize the number overflowed: size %i, signed %s, bigEndian %s, value %i\",\n (sizeInBits, signed, bigEndian, input) => {\n builder = new ByteArrayBuilder(sizeInBits);\n builderAddNumber(input, bigEndian, sizeInBits, signed);\n expect(builder.getErrors().length).toEqual(1);\n expect(builder.build()).toEqual(Uint8Array.from([]));\n },\n );\n\n it(\"error due to a string not well coded\", () => {\n builder\n .addHexaStringToData(\":08081828384\")\n .addHexaStringToData(\"80818n8384\")\n .addHexaStringToData(\"808182838z\");\n\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new HexaStringEncodeError(\":08081828384\"),\n new HexaStringEncodeError(\"80818n8384\"),\n new HexaStringEncodeError(\"808182838z\"),\n ]);\n });\n\n it(\"error due direct overflow\", () => {\n const myarray = new Uint8Array(256).fill(0xaa, 0, 256);\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(myarray.toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-byte array\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const mybuffer = new Uint8Array(1);\n mybuffer.set([0xff], 0);\n\n builder.addBufferToData(mybuffer);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(mybuffer.toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char ascii\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const mystring = \"a\";\n\n builder.addAsciiStringToData(mystring);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(new TextEncoder().encode(mystring).toString()),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char hexastring\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n\n const firstString = \"0xB4\";\n const secondString = \"e1\";\n\n builder\n .addHexaStringToData(firstString)\n .addHexaStringToData(secondString);\n\n expect(builder.build()).toEqual(COMMAND_BODY_MAX);\n expect(builder.getAvailablePayloadLength()).toBe(0);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError((0xb4).toString()),\n new DataOverflowError((0xe1).toString()),\n ]);\n });\n\n it(\"error due to empty values\", () => {\n const mystring = \"\";\n\n builder.addHexaStringToData(mystring).encodeInLVFromHexa(mystring);\n\n expect(builder.build()).toEqual(COMMAND_NO_BODY);\n expect(builder.getAvailablePayloadLength()).toBe(APDU_MAX_PAYLOAD);\n expect(builder.getErrors()).toEqual([\n new HexaStringEncodeError(mystring),\n new HexaStringEncodeError(mystring),\n ]);\n });\n\n it(\"error due to subsequent overflow with 1-char LV\", () => {\n const myarray = new Uint8Array(APDU_MAX_PAYLOAD - 1).fill(\n 0xaa,\n 0,\n APDU_MAX_PAYLOAD - 1,\n );\n builder.addBufferToData(myarray);\n expect(builder.build()).toEqual(COMMAND_BODY_NEARLY);\n expect(builder.getAvailablePayloadLength()).toBe(1);\n\n const firstString = \"n\";\n const secondString = \"e1\";\n const mybuffer = new Uint8Array(1);\n mybuffer.set([0xff], 0);\n\n builder\n .encodeInLVFromAscii(firstString)\n .encodeInLVFromHexa(secondString)\n .encodeInLVFromBuffer(mybuffer);\n\n expect(builder.build()).toEqual(COMMAND_BODY_NEARLY);\n expect(builder.getAvailablePayloadLength()).toBe(1);\n expect(builder.getErrors()).toEqual([\n new DataOverflowError(firstString),\n new DataOverflowError(secondString),\n new DataOverflowError(mybuffer.toString()),\n ]);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["hexaStringToBuffer", "APDU_MAX_PAYLOAD", "DataOverflowError", "HexaStringEncodeError", "ByteArrayBuilder", "COMMAND_NO_BODY", "COMMAND_BODY_SINGLE", "COMMAND_BODY_HEXA1", "COMMAND_BODY_HEXA2", "COMMAND_BODY_LV_HEXA", "COMMAND_BODY_LV_ASCII", "COMMAND_BODY_LV_ARRAY", "COMMAND_BODY_COMBINED", "COMMAND_BODY_MAX", "COMMAND_BODY_NEARLY", "builder", "builderAddNumber", "num", "bigEndian", "sizeInBits", "signed", "input", "output", "myarray", "available", "mybuffer", "mystring", "firstString", "secondString"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{bufferToHexaString as d}from"../../utils/HexaString";class s{constructor(e){this.buffer=e}index=0;testMinimalLength(e){return e<=this.buffer.length-this.index}extract8BitUInt(){if(!this.outOfRange(1))return this.buffer[this.index++]}extract16BitUInt(e=!0){const t=this.extractNumber(16n,!1,e);return t===void 0?void 0:Number(t)}extract16BitInt(e=!0){const t=this.extractNumber(16n,!0,e);return t===void 0?void 0:Number(t)}extract32BitUInt(e=!0){const t=this.extractNumber(32n,!1,e);return t===void 0?void 0:Number(t)}extract32BitInt(e=!0){const t=this.extractNumber(32n,!0,e);return t===void 0?void 0:Number(t)}extract64BitUInt(e=!0){return this.extractNumber(64n,!1,e)}extract64BitInt(e=!0){return this.extractNumber(64n,!0,e)}extractFieldByLength(e){if(this.outOfRange(e))return;if(e===0)return new Uint8Array;const t=this.buffer.slice(this.index,this.index+e);return this.index+=e,t}extractFieldLVEncoded(){const e=this.extract8BitUInt();if(e===void 0)return;if(e===0)return new Uint8Array;const t=this.extractFieldByLength(e);return t===void 0&&this.index--,t}extractFieldTLVEncoded(){if(this.outOfRange(2))return;const e=this.extract8BitUInt(),t=this.extractFieldLVEncoded();if(e===void 0||t===void 0){this.index--;return}return{tag:e,value:t}}encodeToHexaString(e,t=!1){if(e===void 0||e.length===0)return"";const r=d(e);return t?r:r.slice(2)}encodeToString(e){let t="",r=0;if(!e)return t;for(;r<=e.length;){const i=e[r];i&&(t+=String.fromCharCode(i)),r++}return t}getCurrentIndex(){return this.index}resetIndex(){this.index=0}getUnparsedRemainingLength(){return this.buffer.length-this.index}outOfRange(e){return this.index+e>this.buffer.length}extractNumber(e,t,r){const i=Number(e)/8;if(this.outOfRange(i))return;let u=0n;if(r)for(let n=0;n<i;n++)u=u<<8n|BigInt(this.buffer[n+this.index]);else for(let n=i-1;n>=0;n--)u=u<<8n|BigInt(this.buffer[n+this.index]);if(t){const n=1n<<e-1n;u&n&&(u-=n<<1n)}return this.index+=i,u}}export{s as ByteArrayParser};
1
+ import{bufferToHexaString as d}from"../../utils/HexaString";class s{constructor(e){this.buffer=e}index=0;testMinimalLength(e){return e<=this.buffer.length-this.index}extract8BitUInt(){if(!this.outOfRange(1))return this.buffer[this.index++]}extract16BitUInt(e=!0){const t=this.extractNumber(16n,!1,e);return t===void 0?void 0:Number(t)}extract16BitInt(e=!0){const t=this.extractNumber(16n,!0,e);return t===void 0?void 0:Number(t)}extract32BitUInt(e=!0){const t=this.extractNumber(32n,!1,e);return t===void 0?void 0:Number(t)}extract32BitInt(e=!0){const t=this.extractNumber(32n,!0,e);return t===void 0?void 0:Number(t)}extract64BitUInt(e=!0){return this.extractNumber(64n,!1,e)}extract64BitInt(e=!0){return this.extractNumber(64n,!0,e)}extract128BitUInt(e=!0){return this.extractNumber(128n,!1,e)}extract128BitInt(e=!0){return this.extractNumber(128n,!0,e)}extract256BitUInt(e=!0){return this.extractNumber(256n,!1,e)}extract256BitInt(e=!0){return this.extractNumber(256n,!0,e)}extractFieldByLength(e){if(this.outOfRange(e))return;if(e===0)return new Uint8Array;const t=this.buffer.slice(this.index,this.index+e);return this.index+=e,t}extractFieldLVEncoded(){const e=this.extract8BitUInt();if(e===void 0)return;if(e===0)return new Uint8Array;const t=this.extractFieldByLength(e);return t===void 0&&this.index--,t}extractFieldTLVEncoded(){if(this.outOfRange(2))return;const e=this.extract8BitUInt(),t=this.extractFieldLVEncoded();if(e===void 0||t===void 0){this.index--;return}return{tag:e,value:t}}encodeToHexaString(e,t=!1){if(e===void 0||e.length===0)return"";const r=d(e);return t?r:r.slice(2)}encodeToString(e){let t="",r=0;if(!e)return t;for(;r<=e.length;){const i=e[r];i&&(t+=String.fromCharCode(i)),r++}return t}getCurrentIndex(){return this.index}resetIndex(){this.index=0}getUnparsedRemainingLength(){return this.buffer.length-this.index}outOfRange(e){return this.index+e>this.buffer.length}extractNumber(e,t,r){const i=Number(e)/8;if(this.outOfRange(i))return;let u=0n;if(r)for(let n=0;n<i;n++)u=u<<8n|BigInt(this.buffer[n+this.index]);else for(let n=i-1;n>=0;n--)u=u<<8n|BigInt(this.buffer[n+this.index]);if(t){const n=1n<<e-1n;u&n&&(u-=n<<1n)}return this.index+=i,u}}export{s as ByteArrayParser};
2
2
  //# sourceMappingURL=ByteArrayParser.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/apdu/utils/ByteArrayParser.ts"],
4
- "sourcesContent": ["import { bufferToHexaString, type HexaString } from \"@api/utils/HexaString\";\n\nexport type TaggedField = {\n readonly tag: number;\n readonly value: Uint8Array;\n};\n\n/**\n * ByteArrayParser is a utility class to help parse a byte array.\n *\n * It provides methods to extract fields of different types from the buffer.\n *\n * @example\n * ```\n * const parser = new ByteArrayParser(buffer);\n * const targetId = parser.encodeToHexaString(parser.extractFieldByLength(4));\n * const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n * ```\n */\nexport class ByteArrayParser {\n private index: number = 0;\n\n constructor(private readonly buffer: Uint8Array) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Test if the length is greater than the response length\n * @param length: number\n * @returns {boolean} - Returns false if the length is greater than the response length\n */\n testMinimalLength(length: number): boolean {\n return length <= this.buffer.length - this.index;\n }\n\n /**\n * Extract a single byte from the response\n * @returns {number | undefined} - Returns the byte extracted from the response\n */\n extract8BitUInt(): number | undefined {\n if (this.outOfRange(1)) return;\n return this.buffer[this.index++];\n }\n\n /**\n * Extract a 16-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit unsigned integer extracted from the response\n */\n extract16BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 16-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit signed integer extracted from the response\n */\n extract16BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit unsigned integer extracted from the response\n */\n extract32BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit signed integer extracted from the response\n */\n extract32BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 64-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit unsigned integer extracted from the response\n */\n extract64BitUInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, false, bigEndian);\n }\n\n /**\n * Extract a 64-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit signed integer extracted from the response\n */\n extract64BitInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, true, bigEndian);\n }\n\n /**\n * Extract a field of a specified length from the response\n * @param length: number - The length of the field to extract\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldByLength(length: number): Uint8Array | undefined {\n if (this.outOfRange(length)) return;\n if (length === 0) return new Uint8Array();\n const field = this.buffer.slice(this.index, this.index + length);\n this.index += length;\n return field;\n }\n\n /**\n * Extract a field from the response that is length-value encoded\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldLVEncoded(): Uint8Array | undefined {\n // extract Length field\n const length = this.extract8BitUInt();\n if (length === undefined) return;\n else if (length === 0) return new Uint8Array();\n const field = this.extractFieldByLength(length);\n // if the field is inconsistent then roll back to the initial point\n if (field === undefined) this.index--;\n return field;\n }\n\n /**\n * Extract a field from the response that is tag-length-value encoded\n * @returns {TaggedField | undefined} - Returns the field extracted from the response\n */\n extractFieldTLVEncoded(): TaggedField | undefined {\n if (this.outOfRange(2)) return;\n\n const tag = this.extract8BitUInt();\n const value = this.extractFieldLVEncoded();\n\n if (tag === undefined || value === undefined) {\n this.index--;\n return;\n }\n return { tag, value };\n }\n\n /**\n * Encode a value to a hexadecimal string\n * @param value {Uint8Array} - The value to encode\n * @param prefix {boolean} - Whether to add a prefix to the encoded value\n * @returns {string} - The encoded value as a hexadecimal string\n */\n encodeToHexaString(value?: Uint8Array, prefix?: false): string;\n encodeToHexaString(value?: Uint8Array, prefix?: true): HexaString;\n encodeToHexaString(\n value?: Uint8Array,\n prefix: boolean = false,\n ): HexaString | string {\n if (value === undefined || value.length === 0) return \"\";\n const result = bufferToHexaString(value);\n return prefix ? result : result.slice(2);\n }\n\n /**\n * Encode a value to an ASCII string\n * @param value {Uint8Array} - The value to encode\n * @returns {string} - The encoded value as an ASCII string\n */\n encodeToString(value?: Uint8Array): string {\n let result = \"\";\n let index = 0;\n\n if (!value) return result;\n\n while (index <= value.length) {\n const item = value[index];\n if (item) result += String.fromCharCode(item);\n index++;\n }\n\n return result;\n }\n\n /**\n * Get the current index of the parser\n * @returns {number} - The current index of the parser\n */\n getCurrentIndex(): number {\n return this.index;\n }\n\n /**\n * Reset the index of the parser to 0\n */\n resetIndex() {\n this.index = 0;\n }\n\n /**\n * Get the remaining length of the response\n * @returns {number} - The remaining length of the response\n */\n getUnparsedRemainingLength(): number {\n return this.buffer.length - this.index;\n }\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check whether the expected length is out of range\n * @param length: number\n * @returns {boolean} - Returns true if the expected length is out of range\n */\n private outOfRange(length: number): boolean {\n return this.index + length > this.buffer.length;\n }\n\n /**\n * Extract a number from the buffer\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - True is the number can be signed and converted to two's compliment\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {bigint | undefined} - Returns the number extracted from the buffer\n */\n private extractNumber(\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): bigint | undefined {\n // Check the range\n const sizeInBytes: number = Number(sizeInBits) / 8;\n if (this.outOfRange(sizeInBytes)) return;\n\n // Compute the number\n let value: bigint = 0n;\n if (bigEndian) {\n for (let i = 0; i < sizeInBytes; i++) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n } else {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (signed) {\n const limit = 1n << (sizeInBits - 1n);\n if (value & limit) {\n value -= limit << 1n;\n }\n }\n\n this.index += sizeInBytes;\n return value;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { bufferToHexaString, type HexaString } from \"@api/utils/HexaString\";\n\nexport type TaggedField = {\n readonly tag: number;\n readonly value: Uint8Array;\n};\n\n/**\n * ByteArrayParser is a utility class to help parse a byte array.\n *\n * It provides methods to extract fields of different types from the buffer.\n *\n * @example\n * ```\n * const parser = new ByteArrayParser(buffer);\n * const targetId = parser.encodeToHexaString(parser.extractFieldByLength(4));\n * const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n * ```\n */\nexport class ByteArrayParser {\n private index: number = 0;\n\n constructor(private readonly buffer: Uint8Array) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Test if the length is greater than the response length\n * @param length: number\n * @returns {boolean} - Returns false if the length is greater than the response length\n */\n testMinimalLength(length: number): boolean {\n return length <= this.buffer.length - this.index;\n }\n\n /**\n * Extract a single byte from the response\n * @returns {number | undefined} - Returns the byte extracted from the response\n */\n extract8BitUInt(): number | undefined {\n if (this.outOfRange(1)) return;\n return this.buffer[this.index++];\n }\n\n /**\n * Extract a 16-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit unsigned integer extracted from the response\n */\n extract16BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 16-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit signed integer extracted from the response\n */\n extract16BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit unsigned integer extracted from the response\n */\n extract32BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit signed integer extracted from the response\n */\n extract32BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 64-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit unsigned integer extracted from the response\n */\n extract64BitUInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, false, bigEndian);\n }\n\n /**\n * Extract a 64-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit signed integer extracted from the response\n */\n extract64BitInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, true, bigEndian);\n }\n\n /**\n * Extract a 128-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 128-bit unsigned integer extracted from the response\n */\n extract128BitUInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(128n, false, bigEndian);\n }\n\n /**\n * Extract a 128-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 128-bit signed integer extracted from the response\n */\n extract128BitInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(128n, true, bigEndian);\n }\n\n /**\n * Extract a 256-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 256-bit unsigned integer extracted from the response\n */\n extract256BitUInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(256n, false, bigEndian);\n }\n\n /**\n * Extract a 256-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 256-bit signed integer extracted from the response\n */\n extract256BitInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(256n, true, bigEndian);\n }\n\n /**\n * Extract a field of a specified length from the response\n * @param length: number - The length of the field to extract\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldByLength(length: number): Uint8Array | undefined {\n if (this.outOfRange(length)) return;\n if (length === 0) return new Uint8Array();\n const field = this.buffer.slice(this.index, this.index + length);\n this.index += length;\n return field;\n }\n\n /**\n * Extract a field from the response that is length-value encoded\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldLVEncoded(): Uint8Array | undefined {\n // extract Length field\n const length = this.extract8BitUInt();\n if (length === undefined) return;\n else if (length === 0) return new Uint8Array();\n const field = this.extractFieldByLength(length);\n // if the field is inconsistent then roll back to the initial point\n if (field === undefined) this.index--;\n return field;\n }\n\n /**\n * Extract a field from the response that is tag-length-value encoded\n * @returns {TaggedField | undefined} - Returns the field extracted from the response\n */\n extractFieldTLVEncoded(): TaggedField | undefined {\n if (this.outOfRange(2)) return;\n\n const tag = this.extract8BitUInt();\n const value = this.extractFieldLVEncoded();\n\n if (tag === undefined || value === undefined) {\n this.index--;\n return;\n }\n return { tag, value };\n }\n\n /**\n * Encode a value to a hexadecimal string\n * @param value {Uint8Array} - The value to encode\n * @param prefix {boolean} - Whether to add a prefix to the encoded value\n * @returns {string} - The encoded value as a hexadecimal string\n */\n encodeToHexaString(value?: Uint8Array, prefix?: false): string;\n encodeToHexaString(value?: Uint8Array, prefix?: true): HexaString;\n encodeToHexaString(\n value?: Uint8Array,\n prefix: boolean = false,\n ): HexaString | string {\n if (value === undefined || value.length === 0) return \"\";\n const result = bufferToHexaString(value);\n return prefix ? result : result.slice(2);\n }\n\n /**\n * Encode a value to an ASCII string\n * @param value {Uint8Array} - The value to encode\n * @returns {string} - The encoded value as an ASCII string\n */\n encodeToString(value?: Uint8Array): string {\n let result = \"\";\n let index = 0;\n\n if (!value) return result;\n\n while (index <= value.length) {\n const item = value[index];\n if (item) result += String.fromCharCode(item);\n index++;\n }\n\n return result;\n }\n\n /**\n * Get the current index of the parser\n * @returns {number} - The current index of the parser\n */\n getCurrentIndex(): number {\n return this.index;\n }\n\n /**\n * Reset the index of the parser to 0\n */\n resetIndex() {\n this.index = 0;\n }\n\n /**\n * Get the remaining length of the response\n * @returns {number} - The remaining length of the response\n */\n getUnparsedRemainingLength(): number {\n return this.buffer.length - this.index;\n }\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check whether the expected length is out of range\n * @param length: number\n * @returns {boolean} - Returns true if the expected length is out of range\n */\n private outOfRange(length: number): boolean {\n return this.index + length > this.buffer.length;\n }\n\n /**\n * Extract a number from the buffer\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - True is the number can be signed and converted to two's compliment\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {bigint | undefined} - Returns the number extracted from the buffer\n */\n private extractNumber(\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): bigint | undefined {\n // Check the range\n const sizeInBytes: number = Number(sizeInBits) / 8;\n if (this.outOfRange(sizeInBytes)) return;\n\n // Compute the number\n let value: bigint = 0n;\n if (bigEndian) {\n for (let i = 0; i < sizeInBytes; i++) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n } else {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (signed) {\n const limit = 1n << (sizeInBits - 1n);\n if (value & limit) {\n value -= limit << 1n;\n }\n }\n\n this.index += sizeInBytes;\n return value;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["bufferToHexaString", "ByteArrayParser", "buffer", "length", "bigEndian", "value", "field", "tag", "prefix", "result", "index", "item", "sizeInBits", "signed", "sizeInBytes", "i", "limit"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as s}from"../../utils/HexaString";import{ByteArrayParser as a}from"./ByteArrayParser";const B=new Uint8Array([1]),u=new Uint8Array([0]),l=new Uint8Array([1,1]),U=new Uint8Array([171,0]),g=new Uint8Array([1,2,3,...Array(253).fill(170)]),E="33000004",R="0xe6000000",m=3858759680,d="2.2.3",C="2.30",S="1.16",b=0,A=1,T=0,h=new Uint8Array([51,0,0,4,5,50,46,50,46,51,4,230,0,0,0,4,50,46,51,48,4,49,46,49,54,1,0,1,1,1,0]),I=new Uint8Array([66,79,76,79,83]),L="BOLOS",p=new Uint8Array([1,5,66,79,76,79,83,5,50,46,50,46,51]);let e,c=B;describe("ByteArrayParser",()=>{const f=(n,t,r)=>{if(r)switch(t){case 2:return e.extract16BitInt(n);case 4:return e.extract32BitInt(n);case 8:return e.extract64BitInt(n)}else switch(t){case 2:return e.extract16BitUInt(n);case 4:return e.extract32BitUInt(n);case 8:return e.extract64BitUInt(n)}};describe("clean",()=>{beforeEach(()=>{jest.resetAllMocks()}),it("should create an instance",()=>{e=new a(c),expect(e).toBeDefined(),expect(e).toBeInstanceOf(a)}),it("Extract a single byte",()=>{e=new a(c),expect(e.extract8BitUInt()).toBe(1),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0)}),it("Extract one byte",()=>{c=g,e=new a(c);let n=0,t=g.length;for(expect(t).toBe(256),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),n++,t--,expect(e.extract8BitUInt()).toBe(1),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),n++,t--,expect(e.extract8BitUInt()).toBe(2),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),n++,t--,expect(e.extract8BitUInt()).toBe(3),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),n++,t--;t!=0;)expect(e.extract8BitUInt()).toBe(170),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),n++,t--}),it.each([[2,!1,!0,"ffff",65535],[2,!0,!0,"7fff",32767],[2,!0,!0,"8000",-32768],[4,!1,!0,"ffffffff",4294967295],[4,!0,!0,"7fffffff",2147483647],[4,!0,!0,"80000000",-2147483648],[8,!1,!0,"ffffffffffffffff",0xffffffffffffffffn],[8,!0,!0,"7fffffffffffffff",0x7fffffffffffffffn],[8,!0,!0,"8000000000000000",-0x8000000000000000n]])("Extract a number to the limit: size %i, signed %s, bigEndian %s, buffer %s, expected %i",(n,t,r,x,o)=>{e=new a(s(x));const i=f(r,n,t);expect(i).toStrictEqual(o)}),it.each([[2,!1,!0,"3302",13058],[2,!1,!1,"0233",13058],[2,!0,!0,"1068",4200],[2,!0,!0,"ef98",-4200],[2,!0,!1,"6810",4200],[2,!0,!1,"98ef",-4200],[4,!1,!0,"01234567",19088743],[4,!1,!1,"67452301",19088743],[4,!0,!0,"075bcd15",123456789],[4,!0,!0,"f8a432eb",-123456789],[4,!0,!1,"15cd5b07",123456789],[4,!0,!1,"eb32a4f8",-123456789],[8,!1,!0,"0032435442584447",14147778004927559n],[8,!1,!1,"4744584254433200",14147778004927559n],[8,!0,!0,"0032435442584447",14147778004927559n],[8,!0,!0,"ffcdbcabbda7bbb9",-14147778004927559n],[8,!0,!1,"4744584254433200",14147778004927559n],[8,!0,!1,"b9bba7bdabbccdff",-14147778004927559n]])("Extract the following number: size %i, signed %s, bigEndian %s, buffer %s, expected %i",(n,t,r,x,o)=>{e=new a(s(x));const i=f(r,n,t);expect(i).toStrictEqual(o)}),it("Extract 16-bit & 32-bit number",()=>{c=g,e=new a(c);let n=0,t=g.length;expect(t).toBe(256),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract16BitUInt()).toBe(258),n+=2,t-=2,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract16BitUInt()).toBe(938),n+=2,t-=2,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),e.resetIndex(),n=0,t=g.length,expect(e.extract32BitUInt()).toBe(16909226),n+=4,t-=4,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract32BitUInt()).toBe(2863311530),n+=4,t-=4,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t)}),it("Parse a GetAppVersion response",()=>{c=p,e=new a(c);let n=0,t=p.length;expect(t).toBe(13),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);const r=e.extract8BitUInt();n++,t--,expect(r).toBe(1),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);let x=e.extractFieldLVEncoded();expect(x).toStrictEqual(I),expect(e.encodeToString(x)).toBe(L),n+=6,t-=6,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),x=e.extractFieldLVEncoded(),expect(e.encodeToString(x)).toBe(d),n+=6,t-=6,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),e.resetIndex(),n=0,t=p.length,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);const o=e.extractFieldTLVEncoded();expect(o?.tag).toBe(1),expect(o?.value).toStrictEqual(I),expect(e.encodeToString(o?.value)).toBe(L),n+=7,t-=7,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),x=e.extractFieldLVEncoded(),expect(e.encodeToString(x)).toBe(d),n+=6,t-=6,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t)}),it("Parse a GetVersion response",()=>{c=h,e=new a(c);let n=0,t=h.length;expect(t).toBe(31),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.testMinimalLength(25)).toBe(!0);let r=e.extractFieldByLength(4);expect(e.encodeToHexaString(r)).toBe(E),n+=4,t-=4,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(e.encodeToString(r)).toBe(d),n+=6,t-=6,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded();const x=e.encodeToHexaString(r,!0);expect(x).toBe(R),expect(parseInt(x,16)).toBe(m),n+=5,t-=5,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(e.encodeToString(r)).toBe(C),n+=5,t-=5,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(e.encodeToString(r)).toBe(S),n+=5,t-=5,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(r?.at(0)).toBe(b),n+=2,t-=2,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(r?.at(0)).toBe(A),n+=2,t-=2,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(r?.at(0)).toBe(T),n+=2,t-=2,expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t)})}),describe("errors",()=>{it("no response",()=>{c=new Uint8Array,e=new a(c);const n=0,t=0;expect(e.testMinimalLength(1)).toBe(!1),expect(e.extract8BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract16BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract32BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);let r=e.extractFieldByLength(2);expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);const x=e.extractFieldTLVEncoded();expect(x).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t)}),it("length error",()=>{c=B,e=new a(c);const n=0,t=B.length;expect(t).toBe(1),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract16BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),expect(e.extract32BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);let r=e.extractFieldByLength(2);expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),r=e.extractFieldLVEncoded(),expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t);let x=e.extractFieldTLVEncoded();expect(x).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(t),c=l,e=new a(c),x=e.extractFieldTLVEncoded(),expect(x).toBeUndefined(),expect(e.getCurrentIndex()).toBe(n),expect(e.getUnparsedRemainingLength()).toBe(l.length)}),it("Test zero length",()=>{c=u,e=new a(c);const n=new Uint8Array,t=0;let r=u.length;expect(r).toBe(1),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(r);const x=e.extract8BitUInt();expect(x).toBe(0),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0),e.resetIndex();let o=e.extractFieldByLength(0);expect(o).toStrictEqual(n),expect(e.encodeToString(o)).toBe(""),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(r),o=e.extractFieldLVEncoded(),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0),expect(o).toStrictEqual(n),expect(e.encodeToString(o)).toBe(""),c=U,e=new a(c),r=U.length,expect(r).toBe(2),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(r);const i=e.extractFieldTLVEncoded();expect(i?.tag).toBe(171),expect(i?.value).toStrictEqual(n),expect(e.encodeToString(i?.value)).toBe(""),expect(e.getCurrentIndex()).toBe(2),expect(e.getUnparsedRemainingLength()).toBe(0),expect(e.encodeToHexaString()).toBe(""),expect(e.encodeToString()).toBe("")})})});
1
+ import{hexaStringToBuffer as s}from"../../utils/HexaString";import{ByteArrayParser as c}from"./ByteArrayParser";const p=new Uint8Array([1]),u=new Uint8Array([0]),l=new Uint8Array([1,1]),b=new Uint8Array([171,0]),d=new Uint8Array([1,2,3,...Array(253).fill(170)]),L="33000004",R="0xe6000000",E=3858759680,i="2.2.3",m="2.30",C="1.16",S=0,A=1,T=0,U=new Uint8Array([51,0,0,4,5,50,46,50,46,51,4,230,0,0,0,4,50,46,51,48,4,49,46,49,54,1,0,1,1,1,0]),I=new Uint8Array([66,79,76,79,83]),h="BOLOS",g=new Uint8Array([1,5,66,79,76,79,83,5,50,46,50,46,51]);let e,x=p;describe("ByteArrayParser",()=>{const B=(t,f,n)=>{if(n)switch(f){case 2:return e.extract16BitInt(t);case 4:return e.extract32BitInt(t);case 8:return e.extract64BitInt(t);case 16:return e.extract128BitInt(t);case 32:return e.extract256BitInt(t)}else switch(f){case 2:return e.extract16BitUInt(t);case 4:return e.extract32BitUInt(t);case 8:return e.extract64BitUInt(t);case 16:return e.extract128BitUInt(t);case 32:return e.extract256BitUInt(t)}};describe("clean",()=>{beforeEach(()=>{jest.resetAllMocks()}),it("should create an instance",()=>{e=new c(x),expect(e).toBeDefined(),expect(e).toBeInstanceOf(c)}),it("Extract a single byte",()=>{e=new c(x),expect(e.extract8BitUInt()).toBe(1),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0)}),it("Extract one byte",()=>{x=d,e=new c(x);let t=0,f=d.length;for(expect(f).toBe(256),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),t++,f--,expect(e.extract8BitUInt()).toBe(1),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),t++,f--,expect(e.extract8BitUInt()).toBe(2),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),t++,f--,expect(e.extract8BitUInt()).toBe(3),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),t++,f--;f!=0;)expect(e.extract8BitUInt()).toBe(170),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),t++,f--}),it.each([[2,!1,!0,"ffff",65535],[2,!0,!0,"7fff",32767],[2,!0,!0,"8000",-32768],[4,!1,!0,"ffffffff",4294967295],[4,!0,!0,"7fffffff",2147483647],[4,!0,!0,"80000000",-2147483648],[8,!1,!0,"ffffffffffffffff",0xffffffffffffffffn],[8,!0,!0,"7fffffffffffffff",0x7fffffffffffffffn],[8,!0,!0,"8000000000000000",-0x8000000000000000n],[16,!1,!0,"ffffffffffffffffffffffffffffffff",0xffffffffffffffffffffffffffffffffn],[16,!0,!0,"7fffffffffffffffffffffffffffffff",0x7fffffffffffffffffffffffffffffffn],[16,!0,!0,"80000000000000000000000000000000",-0x80000000000000000000000000000000n],[32,!1,!0,"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn],[32,!0,!0,"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn],[32,!0,!0,"8000000000000000000000000000000000000000000000000000000000000000",-0x8000000000000000000000000000000000000000000000000000000000000000n]])("Extract a number to the limit: size %i, signed %s, bigEndian %s, buffer %s, expected %i",(t,f,n,r,a)=>{e=new c(s(r));const o=B(n,t,f);expect(o).toStrictEqual(a)}),it.each([[2,!1,!0,"3302",13058],[2,!1,!1,"0233",13058],[2,!0,!0,"1068",4200],[2,!0,!0,"ef98",-4200],[2,!0,!1,"6810",4200],[2,!0,!1,"98ef",-4200],[4,!1,!0,"01234567",19088743],[4,!1,!1,"67452301",19088743],[4,!0,!0,"075bcd15",123456789],[4,!0,!0,"f8a432eb",-123456789],[4,!0,!1,"15cd5b07",123456789],[4,!0,!1,"eb32a4f8",-123456789],[8,!1,!0,"0032435442584447",14147778004927559n],[8,!1,!1,"4744584254433200",14147778004927559n],[8,!0,!0,"0032435442584447",14147778004927559n],[8,!0,!0,"ffcdbcabbda7bbb9",-14147778004927559n],[8,!0,!1,"4744584254433200",14147778004927559n],[8,!0,!1,"b9bba7bdabbccdff",-14147778004927559n],[16,!1,!0,"00324354425844470032435442584447",0x00324354425844470032435442584447n],[16,!1,!1,"47445842544332004744584254433200",0x00324354425844470032435442584447n],[16,!0,!0,"00324354425844470032435442584447",0x00324354425844470032435442584447n],[16,!0,!0,"ffcdbcabbda7bbb8ffcdbcabbda7bbb9",-0x00324354425844470032435442584447n],[16,!0,!1,"47445842544332004744584254433200",0x00324354425844470032435442584447n],[16,!0,!1,"b9bba7bdabbccdffb8bba7bdabbccdff",-0x00324354425844470032435442584447n],[32,!1,!0,"0032435442584447003243544258444700324354425844470032435442584447",0x0032435442584447003243544258444700324354425844470032435442584447n],[32,!1,!1,"4744584254433200474458425443320047445842544332004744584254433200",0x0032435442584447003243544258444700324354425844470032435442584447n],[32,!0,!0,"0032435442584447003243544258444700324354425844470032435442584447",0x0032435442584447003243544258444700324354425844470032435442584447n],[32,!0,!0,"ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb8ffcdbcabbda7bbb9",-0x0032435442584447003243544258444700324354425844470032435442584447n],[32,!0,!1,"4744584254433200474458425443320047445842544332004744584254433200",0x0032435442584447003243544258444700324354425844470032435442584447n],[32,!0,!1,"b9bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdffb8bba7bdabbccdff",-0x0032435442584447003243544258444700324354425844470032435442584447n]])("Extract the following number: size %i, signed %s, bigEndian %s, buffer %s, expected %i",(t,f,n,r,a)=>{e=new c(s(r));const o=B(n,t,f);expect(o).toStrictEqual(a)}),it("Extract 16-bit & 32-bit number",()=>{x=d,e=new c(x);let t=0,f=d.length;expect(f).toBe(256),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract16BitUInt()).toBe(258),t+=2,f-=2,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract16BitUInt()).toBe(938),t+=2,f-=2,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),e.resetIndex(),t=0,f=d.length,expect(e.extract32BitUInt()).toBe(16909226),t+=4,f-=4,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract32BitUInt()).toBe(2863311530),t+=4,f-=4,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f)}),it("Parse a GetAppVersion response",()=>{x=g,e=new c(x);let t=0,f=g.length;expect(f).toBe(13),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);const n=e.extract8BitUInt();t++,f--,expect(n).toBe(1),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);let r=e.extractFieldLVEncoded();expect(r).toStrictEqual(I),expect(e.encodeToString(r)).toBe(h),t+=6,f-=6,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),r=e.extractFieldLVEncoded(),expect(e.encodeToString(r)).toBe(i),t+=6,f-=6,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),e.resetIndex(),t=0,f=g.length,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);const a=e.extractFieldTLVEncoded();expect(a?.tag).toBe(1),expect(a?.value).toStrictEqual(I),expect(e.encodeToString(a?.value)).toBe(h),t+=7,f-=7,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),r=e.extractFieldLVEncoded(),expect(e.encodeToString(r)).toBe(i),t+=6,f-=6,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f)}),it("Parse a GetVersion response",()=>{x=U,e=new c(x);let t=0,f=U.length;expect(f).toBe(31),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.testMinimalLength(25)).toBe(!0);let n=e.extractFieldByLength(4);expect(e.encodeToHexaString(n)).toBe(L),t+=4,f-=4,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(e.encodeToString(n)).toBe(i),t+=6,f-=6,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded();const r=e.encodeToHexaString(n,!0);expect(r).toBe(R),expect(parseInt(r,16)).toBe(E),t+=5,f-=5,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(e.encodeToString(n)).toBe(m),t+=5,f-=5,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(e.encodeToString(n)).toBe(C),t+=5,f-=5,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(n?.at(0)).toBe(S),t+=2,f-=2,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(n?.at(0)).toBe(A),t+=2,f-=2,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(n?.at(0)).toBe(T),t+=2,f-=2,expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f)})}),describe("errors",()=>{it("no response",()=>{x=new Uint8Array,e=new c(x);const t=0,f=0;expect(e.testMinimalLength(1)).toBe(!1),expect(e.extract8BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract16BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract32BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);let n=e.extractFieldByLength(2);expect(n).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(n).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);const r=e.extractFieldTLVEncoded();expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f)}),it("length error",()=>{x=p,e=new c(x);const t=0,f=p.length;expect(f).toBe(1),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract16BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),expect(e.extract32BitUInt()).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);let n=e.extractFieldByLength(2);expect(n).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),n=e.extractFieldLVEncoded(),expect(n).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f);let r=e.extractFieldTLVEncoded();expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(f),x=l,e=new c(x),r=e.extractFieldTLVEncoded(),expect(r).toBeUndefined(),expect(e.getCurrentIndex()).toBe(t),expect(e.getUnparsedRemainingLength()).toBe(l.length)}),it("Test zero length",()=>{x=u,e=new c(x);const t=new Uint8Array,f=0;let n=u.length;expect(n).toBe(1),expect(e.getCurrentIndex()).toBe(f),expect(e.getUnparsedRemainingLength()).toBe(n);const r=e.extract8BitUInt();expect(r).toBe(0),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0),e.resetIndex();let a=e.extractFieldByLength(0);expect(a).toStrictEqual(t),expect(e.encodeToString(a)).toBe(""),expect(e.getCurrentIndex()).toBe(f),expect(e.getUnparsedRemainingLength()).toBe(n),a=e.extractFieldLVEncoded(),expect(e.getCurrentIndex()).toBe(1),expect(e.getUnparsedRemainingLength()).toBe(0),expect(a).toStrictEqual(t),expect(e.encodeToString(a)).toBe(""),x=b,e=new c(x),n=b.length,expect(n).toBe(2),expect(e.getCurrentIndex()).toBe(f),expect(e.getUnparsedRemainingLength()).toBe(n);const o=e.extractFieldTLVEncoded();expect(o?.tag).toBe(171),expect(o?.value).toStrictEqual(t),expect(e.encodeToString(o?.value)).toBe(""),expect(e.getCurrentIndex()).toBe(2),expect(e.getUnparsedRemainingLength()).toBe(0),expect(e.encodeToHexaString()).toBe(""),expect(e.encodeToString()).toBe("")})})});
2
2
  //# sourceMappingURL=ByteArrayParser.test.js.map