@ledgerhq/device-management-kit 0.0.0-test-recursive-stack-20251002122259 → 0.0.0-test-ble-20251112111541

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 (126) hide show
  1. package/lib/cjs/package.json +1 -1
  2. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.js.map +2 -2
  4. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  6. package/lib/cjs/src/api/command/Errors.js +1 -1
  7. package/lib/cjs/src/api/command/Errors.js.map +3 -3
  8. package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
  9. package/lib/cjs/src/api/command/model/CommandResult.js.map +2 -2
  10. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  11. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  12. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  13. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.js.map +2 -2
  14. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  15. package/lib/cjs/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +2 -2
  16. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  17. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  18. package/lib/cjs/src/api/index.js +1 -1
  19. package/lib/cjs/src/api/index.js.map +2 -2
  20. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  21. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  22. package/lib/cjs/src/api/transport/model/ConnectedDevice.js +1 -1
  23. package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +3 -3
  24. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js +1 -1
  25. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  26. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  27. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  28. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  29. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  30. package/lib/cjs/src/internal/discovery/di/discoveryModule.js +1 -1
  31. package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +3 -3
  32. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  33. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  34. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js +1 -1
  35. package/lib/cjs/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  36. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  37. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  38. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  39. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  40. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  41. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  42. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +1 -1
  43. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +2 -2
  44. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  45. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  46. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  47. package/lib/cjs/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  48. package/lib/esm/package.json +1 -1
  49. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  50. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  51. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  52. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  53. package/lib/esm/src/api/command/Errors.js +1 -1
  54. package/lib/esm/src/api/command/Errors.js.map +3 -3
  55. package/lib/esm/src/api/command/model/CommandResult.js.map +2 -2
  56. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  57. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  58. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js +1 -1
  59. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.js.map +3 -3
  60. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js +1 -1
  61. package/lib/esm/src/api/device-action/task/GetFirmwareMetadataTask.test.js.map +3 -3
  62. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  63. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  64. package/lib/esm/src/api/index.js +1 -1
  65. package/lib/esm/src/api/index.js.map +3 -3
  66. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  67. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  68. package/lib/esm/src/api/transport/model/ConnectedDevice.js +1 -1
  69. package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +3 -3
  70. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js +1 -1
  71. package/lib/esm/src/api/transport/model/TransportConnectedDevice.js.map +3 -3
  72. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  73. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  74. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  75. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  76. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  77. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  78. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  79. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  80. package/lib/esm/src/internal/discovery/di/discoveryTypes.js +1 -1
  81. package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  82. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  83. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  84. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  85. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  86. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +1 -1
  87. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +3 -3
  88. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +1 -1
  89. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +2 -2
  90. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js +2 -0
  91. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.js.map +7 -0
  92. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js +2 -0
  93. package/lib/esm/src/internal/discovery/use-case/ReconnectUseCase.test.js.map +7 -0
  94. package/lib/types/src/api/DeviceManagementKit.d.ts +12 -0
  95. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  96. package/lib/types/src/api/command/Errors.d.ts +5 -0
  97. package/lib/types/src/api/command/Errors.d.ts.map +1 -1
  98. package/lib/types/src/api/command/model/CommandResult.d.ts +3 -3
  99. package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
  100. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +2 -1
  101. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  102. package/lib/types/src/api/device-action/task/GetFirmwareMetadataTask.d.ts.map +1 -1
  103. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  104. package/lib/types/src/api/index.d.ts +1 -1
  105. package/lib/types/src/api/index.d.ts.map +1 -1
  106. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +1 -0
  107. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
  108. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +3 -2
  109. package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
  110. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts +3 -1
  111. package/lib/types/src/api/transport/model/TransportConnectedDevice.d.ts.map +1 -1
  112. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  113. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
  114. package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
  115. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +1 -0
  116. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
  117. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +3 -2
  118. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  119. package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts.map +1 -1
  120. package/lib/types/src/internal/discovery/use-case/GetConnectedDeviceUseCase.d.ts.map +1 -1
  121. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts +32 -0
  122. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.d.ts.map +1 -0
  123. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts +2 -0
  124. package/lib/types/src/internal/discovery/use-case/ReconnectUseCase.test.d.ts.map +1 -0
  125. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  126. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/ConnectUseCase.test.ts"],
4
- "sourcesContent": ["import { Left, Maybe, Right } from \"purify-ts\";\n\nimport { type DeviceModel } from \"@api/device/DeviceModel\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport { UnknownDeviceError } from \"@api/transport/model/Errors\";\nimport { connectedDeviceStubBuilder } from \"@api/transport/model/TransportConnectedDevice.stub\";\nimport type { DmkConfig, Transport } from \"@api/types\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { ConnectUseCase } from \"./ConnectUseCase\";\n\nvi.mock(\"uuid\", () => ({\n v4: vi.fn().mockReturnValue(\"fakeSessionId\"),\n}));\n\nvi.mock(\"@internal/manager-api/data/AxiosManagerApiDataSource\");\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\n// TODO test several transports\n// let transports: WebUsbHidTransport[];\nlet transport: Transport;\nlet transportService: TransportService;\nlet logger: LoggerPublisherService;\nlet sessionService: DeviceSessionService;\nlet managerApi: ManagerApiService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\nconst fakeSessionId = \"fakeSessionId\";\n\ndescribe(\"ConnectUseCase\", () => {\n const stubDiscoveredDevice: DiscoveredDevice = {\n id: \"\",\n deviceModel: {} as DeviceModel,\n transport: \"USB\",\n name: \"TEST\",\n };\n const stubConnectedDevice = connectedDeviceStubBuilder({ id: \"1\" });\n const tag = \"logger-tag\";\n\n beforeAll(() => {\n logger = new DefaultLoggerPublisherService([], tag);\n transport = new TransportMock();\n sessionService = new DefaultDeviceSessionService(() => logger);\n managerApiDataSource = new AxiosManagerApiDataSource({} as DmkConfig);\n managerApi = new DefaultManagerApiService(managerApiDataSource);\n secureChannelDataSource = new DefaultSecureChannelDataSource(\n {} as DmkConfig,\n );\n secureChannel = new DefaultSecureChannelService(secureChannelDataSource);\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n afterEach(() => {\n for (const session of sessionService.getDeviceSessions()) {\n sessionService.removeDeviceSession(session.id);\n }\n });\n\n afterAll(() => {\n vi.restoreAllMocks();\n });\n\n test(\"If connect use case encounter an error, return it\", async () => {\n vi.spyOn(transport, \"connect\").mockResolvedValue(\n Left(new UnknownDeviceError()),\n );\n\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n\n const usecase = new ConnectUseCase(\n transportService,\n sessionService,\n () => logger,\n managerApi,\n secureChannel,\n );\n\n await expect(\n usecase.execute({ device: stubDiscoveredDevice }),\n ).rejects.toBeInstanceOf(UnknownDeviceError);\n });\n\n test(\"If connect is in success, return a deviceSession id\", async () => {\n vi.spyOn(transport, \"connect\").mockResolvedValue(\n Right(stubConnectedDevice),\n );\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n vi.spyOn(sessionService, \"addDeviceSession\").mockImplementation(\n (deviceSession) => {\n deviceSession.setDeviceSessionState({} as DeviceSessionState);\n return sessionService;\n },\n );\n\n const usecase = new ConnectUseCase(\n transportService,\n sessionService,\n () => logger,\n managerApi,\n secureChannel,\n );\n\n const sessionId = await usecase.execute({\n device: stubDiscoveredDevice,\n });\n expect(sessionId).toBe(fakeSessionId);\n sessionService.removeDeviceSession(sessionId);\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAmC,qBAKnCC,EAA8B,wDAE9BC,EAAmC,uCACnCC,EAA2C,8DAE3CC,EAA4C,wEAE5CC,EAA8C,4EAC9CC,EAA0C,gEAE1CC,EAAyC,kEAEzCC,EAA+C,wEAE/CC,EAA4C,wEAE5CC,EAAwC,+DAGxCC,EAA+B,4BAE/B,GAAG,KAAK,OAAQ,KAAO,CACrB,GAAI,GAAG,GAAG,EAAE,gBAAgB,eAAe,CAC7C,EAAE,EAEF,GAAG,KAAK,sDAAsD,EAC9D,GAAG,KAAK,qDAAqD,EAI7D,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAgB,gBAEtB,SAAS,iBAAkB,IAAM,CAC/B,MAAMC,EAAyC,CAC7C,GAAI,GACJ,YAAa,CAAC,EACd,UAAW,MACX,KAAM,MACR,EACMC,KAAsB,8BAA2B,CAAE,GAAI,GAAI,CAAC,EAC5DC,EAAM,aAEZ,UAAU,IAAM,CACdT,EAAS,IAAI,gCAA8B,CAAC,EAAGS,CAAG,EAClDX,EAAY,IAAI,gBAChBG,EAAiB,IAAI,8BAA4B,IAAMD,CAAM,EAC7DG,EAAuB,IAAI,4BAA0B,CAAC,CAAc,EACpED,EAAa,IAAI,2BAAyBC,CAAoB,EAC9DC,EAA0B,IAAI,iCAC5B,CAAC,CACH,EACAC,EAAgB,IAAI,8BAA4BD,CAAuB,EAEvEL,EAAmB,IAAI,yBACzB,CAAC,EAED,UAAU,IAAM,CACd,UAAWW,KAAWT,EAAe,kBAAkB,EACrDA,EAAe,oBAAoBS,EAAQ,EAAE,CAEjD,CAAC,EAED,SAAS,IAAM,CACb,GAAG,gBAAgB,CACrB,CAAC,EAED,KAAK,oDAAqD,SAAY,CACpE,GAAG,MAAMZ,EAAW,SAAS,EAAE,qBAC7B,QAAK,IAAI,oBAAoB,CAC/B,EAEA,GAAG,MAAMC,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EAEA,MAAMa,EAAU,IAAI,iBAClBZ,EACAE,EACA,IAAMD,EACNE,EACAG,CACF,EAEA,MAAM,OACJM,EAAQ,QAAQ,CAAE,OAAQJ,CAAqB,CAAC,CAClD,EAAE,QAAQ,eAAe,oBAAkB,CAC7C,CAAC,EAED,KAAK,sDAAuD,SAAY,CACtE,GAAG,MAAMT,EAAW,SAAS,EAAE,qBAC7B,SAAMU,CAAmB,CAC3B,EACA,GAAG,MAAMT,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EACA,GAAG,MAAMG,EAAgB,kBAAkB,EAAE,mBAC1CW,IACCA,EAAc,sBAAsB,CAAC,CAAuB,EACrDX,EAEX,EAUA,MAAMY,EAAY,MARF,IAAI,iBAClBd,EACAE,EACA,IAAMD,EACNE,EACAG,CACF,EAEgC,QAAQ,CACtC,OAAQE,CACV,CAAC,EACD,OAAOM,CAAS,EAAE,KAAKP,CAAa,EACpCL,EAAe,oBAAoBY,CAAS,CAC9C,CAAC,CACH,CAAC",
6
- "names": ["import_purify_ts", "import_TransportMock", "import_Errors", "import_TransportConnectedDevice", "import_DefaultDeviceSessionService", "import_DefaultLoggerPublisherService", "import_AxiosManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "import_DefaultTransportService", "import_ConnectUseCase", "transport", "transportService", "logger", "sessionService", "managerApi", "managerApiDataSource", "secureChannelDataSource", "secureChannel", "fakeSessionId", "stubDiscoveredDevice", "stubConnectedDevice", "tag", "session", "usecase", "deviceSession", "sessionId"]
4
+ "sourcesContent": ["import { Left, Maybe, Right } from \"purify-ts\";\n\nimport { type DeviceModel, type DeviceModelId } from \"@api/device/DeviceModel\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport { type DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport { UnknownDeviceError } from \"@api/transport/model/Errors\";\nimport { type Transport } from \"@api/transport/model/Transport\";\nimport { connectedDeviceStubBuilder } from \"@api/transport/model/TransportConnectedDevice.stub\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { ConnectUseCase } from \"./ConnectUseCase\";\n\nvi.mock(\"uuid\", () => ({\n v4: vi.fn().mockReturnValue(\"fakeSessionId\"),\n}));\n\nvi.mock(\"@internal/manager-api/data/AxiosManagerApiDataSource\");\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\n// TODO test several transports\n// let transports: WebUsbHidTransport[];\nlet transport: Transport;\nlet transportService: TransportService;\nlet logger: LoggerPublisherService;\nlet sessionService: DeviceSessionService;\nlet managerApi: ManagerApiService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\nconst fakeSessionId = \"fakeSessionId\";\nconst fakeSessionIdConnectedDevice = \"fakeSessionIdConnectedDevice\";\n\ndescribe(\"ConnectUseCase\", () => {\n const stubDiscoveredDevice: DiscoveredDevice = {\n id: \"\",\n deviceModel: {} as DeviceModel,\n transport: \"USB\",\n name: \"TEST\",\n };\n const stubTransportConnectedDevice = connectedDeviceStubBuilder({ id: \"1\" });\n const stubConnectedDevice = {\n id: \"1\",\n sessionId: fakeSessionIdConnectedDevice,\n modelId: \"model-id\" as unknown as DeviceModelId,\n name: \"device-name\",\n type: \"MOCK\" as unknown as ConnectionType,\n transport: \"USB\",\n } as unknown as ConnectedDevice;\n const tag = \"logger-tag\";\n\n beforeAll(() => {\n logger = new DefaultLoggerPublisherService([], tag);\n transport = new TransportMock();\n sessionService = new DefaultDeviceSessionService(() => logger);\n managerApiDataSource = new AxiosManagerApiDataSource({} as DmkConfig);\n managerApi = new DefaultManagerApiService(managerApiDataSource);\n secureChannelDataSource = new DefaultSecureChannelDataSource(\n {} as DmkConfig,\n );\n secureChannel = new DefaultSecureChannelService(secureChannelDataSource);\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n afterEach(() => {\n for (const session of sessionService.getDeviceSessions()) {\n sessionService.removeDeviceSession(session.id);\n }\n });\n\n afterAll(() => {\n vi.restoreAllMocks();\n });\n\n test(\"If connect use case encounter an error, return it\", async () => {\n vi.spyOn(transport, \"connect\").mockResolvedValue(\n Left(new UnknownDeviceError()),\n );\n\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n\n const usecase = new ConnectUseCase(\n transportService,\n sessionService,\n () => logger,\n managerApi,\n secureChannel,\n );\n\n await expect(\n usecase.execute({ device: stubDiscoveredDevice }),\n ).rejects.toBeInstanceOf(UnknownDeviceError);\n });\n\n test(\"If connect is in success, return a deviceSession id\", async () => {\n vi.spyOn(transport, \"connect\").mockResolvedValue(\n Right(stubTransportConnectedDevice),\n );\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n vi.spyOn(sessionService, \"addDeviceSession\").mockImplementation(\n (deviceSession) => {\n deviceSession.setDeviceSessionState({} as DeviceSessionState);\n return sessionService;\n },\n );\n\n const usecase = new ConnectUseCase(\n transportService,\n sessionService,\n () => logger,\n managerApi,\n secureChannel,\n );\n\n const sessionId = await usecase.execute({\n device: stubDiscoveredDevice,\n });\n expect(sessionId).toBe(fakeSessionId);\n sessionService.removeDeviceSession(sessionId);\n });\n\n test(\"If connect is in success after a reconnect, return the same deviceSession id\", async () => {\n vi.spyOn(transport, \"connect\").mockResolvedValue(\n Right(stubTransportConnectedDevice),\n );\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n vi.spyOn(sessionService, \"addDeviceSession\").mockImplementation(\n (deviceSession) => {\n deviceSession.setDeviceSessionState({} as DeviceSessionState);\n return sessionService;\n },\n );\n\n const usecase = new ConnectUseCase(\n transportService,\n sessionService,\n () => logger,\n managerApi,\n secureChannel,\n );\n\n const sessionId = await usecase.execute({\n device: stubConnectedDevice,\n });\n expect(sessionId).toBe(fakeSessionIdConnectedDevice); // same session id as the connected device\n sessionService.removeDeviceSession(sessionId);\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_TransportMock", "import_Errors", "import_TransportConnectedDevice", "import_DefaultDeviceSessionService", "import_DefaultLoggerPublisherService", "import_AxiosManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "import_DefaultTransportService", "import_ConnectUseCase", "transport", "transportService", "logger", "sessionService", "managerApi", "managerApiDataSource", "secureChannelDataSource", "secureChannel", "fakeSessionId", "fakeSessionIdConnectedDevice", "stubDiscoveredDevice", "stubTransportConnectedDevice", "stubConnectedDevice", "tag", "session", "usecase", "deviceSession", "sessionId"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var _=(s,e)=>{for(var r in e)p(s,r,{get:e[r],enumerable:!0})},u=(s,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!D.call(s,o)&&o!==r&&p(s,o,{get:()=>e[o],enumerable:!(i=S(e,o))||i.enumerable});return s};var T=s=>u(p({},"__esModule",{value:!0}),s),g=(s,e,r,i)=>{for(var o=i>1?void 0:i?S(e,r):e,n=s.length-1,c;n>=0;n--)(c=s[n])&&(o=(i?c(e,r,o):c(o))||o);return i&&o&&p(e,r,o),o},a=(s,e)=>(r,i)=>e(r,i,s);var w={};_(w,{DisconnectUseCase:()=>v});module.exports=T(w);var t=require("inversify"),m=require("purify-ts"),d=require("../../../api/transport/model/Errors"),f=require("../../device-session/di/deviceSessionTypes"),y=require("../../logger-publisher/di/loggerTypes"),h=require("../../transport/di/transportDiTypes");let v=class{_transportService;_sessionService;_logger;constructor(e,r,i){this._sessionService=r,this._transportService=e,this._logger=i("DisconnectUseCase")}async execute({sessionId:e}){return(0,m.EitherAsync)(async({liftEither:r})=>{const i=await r(this._sessionService.getDeviceSessionById(e).ifLeft(c=>{this._logger.error("Device session not found",{data:{sessionId:e,error:c}})})),o=i.connectedDevice.transport,n=await r(this._transportService.getTransport(o).toEither(new d.TransportNotSupportedError(new Error("Unknown transport"))));i.close(),this._sessionService.removeDeviceSession(e),await n.disconnect({connectedDevice:i.connectedDevice})}).caseOf({Left:r=>{throw this._logger.error("Error disconnecting from device",{data:{error:r}}),r},Right:()=>{}})}};v=g([(0,t.injectable)(),a(0,(0,t.inject)(h.transportDiTypes.TransportService)),a(1,(0,t.inject)(f.deviceSessionTypes.DeviceSessionService)),a(2,(0,t.inject)(y.loggerTypes.LoggerPublisherServiceFactory))],v);0&&(module.exports={DisconnectUseCase});
1
+ "use strict";var a=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var _=(s,e)=>{for(var r in e)a(s,r,{get:e[r],enumerable:!0})},u=(s,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!D.call(s,o)&&o!==r&&a(s,o,{get:()=>e[o],enumerable:!(i=S(e,o))||i.enumerable});return s};var T=s=>u(a({},"__esModule",{value:!0}),s),g=(s,e,r,i)=>{for(var o=i>1?void 0:i?S(e,r):e,n=s.length-1,c;n>=0;n--)(c=s[n])&&(o=(i?c(e,r,o):c(o))||o);return i&&o&&a(e,r,o),o},p=(s,e)=>(r,i)=>e(r,i,s);var w={};_(w,{DisconnectUseCase:()=>v});module.exports=T(w);var t=require("inversify"),m=require("purify-ts"),d=require("../../../api/transport/model/Errors"),f=require("../../device-session/di/deviceSessionTypes"),h=require("../../logger-publisher/di/loggerTypes"),l=require("../../transport/di/transportDiTypes");let v=class{_transportService;_sessionService;_logger;constructor(e,r,i){this._sessionService=r,this._transportService=e,this._logger=i("DisconnectUseCase")}async execute({sessionId:e}){return this._logger.debug("Disconnecting from device",{data:{test:this._sessionService.getDeviceSessions().map(r=>r.id)}}),(0,m.EitherAsync)(async({liftEither:r})=>{const i=await r(this._sessionService.getDeviceSessionById(e).ifLeft(c=>{this._logger.error("Device session not found",{data:{sessionId:e,error:c}})})),o=i.connectedDevice.transport,n=await r(this._transportService.getTransport(o).toEither(new d.TransportNotSupportedError(new Error("Unknown transport"))));i.close(),this._sessionService.removeDeviceSession(e),await n.disconnect({connectedDevice:i.connectedDevice})}).caseOf({Left:r=>{throw this._logger.error("Error disconnecting from device",{data:{error:r}}),r},Right:()=>{}})}};v=g([(0,t.injectable)(),p(0,(0,t.inject)(l.transportDiTypes.TransportService)),p(1,(0,t.inject)(f.deviceSessionTypes.DeviceSessionService)),p(2,(0,t.inject)(h.loggerTypes.LoggerPublisherServiceFactory))],v);0&&(module.exports={DisconnectUseCase});
2
2
  //# sourceMappingURL=DisconnectUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/DisconnectUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { EitherAsync } from \"purify-ts\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { TransportNotSupportedError } from \"@api/transport/model/Errors\";\nimport type { DeviceSessionId } from \"@api/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\n/**\n * The arguments for the DisconnectUseCase.\n */\nexport type DisconnectUseCaseArgs = {\n /**\n * Device session identifier from `DeviceManagementKit.connect`.\n */\n sessionId: DeviceSessionId;\n};\n\n/**\n * Disconnects to a discovered device.\n */\n@injectable()\nexport class DisconnectUseCase {\n private readonly _transportService: TransportService;\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(transportDiTypes.TransportService)\n transportService: TransportService,\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._transportService = transportService;\n this._logger = loggerFactory(\"DisconnectUseCase\");\n }\n\n async execute({ sessionId }: DisconnectUseCaseArgs): Promise<void> {\n return EitherAsync(async ({ liftEither }) => {\n const session = await liftEither(\n this._sessionService.getDeviceSessionById(sessionId).ifLeft((error) => {\n this._logger.error(\"Device session not found\", {\n data: { sessionId, error },\n });\n }),\n );\n\n const transportIdentifier = session.connectedDevice.transport;\n const transport = await liftEither(\n this._transportService\n .getTransport(transportIdentifier)\n .toEither(\n new TransportNotSupportedError(new Error(\"Unknown transport\")),\n ),\n );\n\n session.close();\n this._sessionService.removeDeviceSession(sessionId);\n\n await transport.disconnect({\n connectedDevice: session.connectedDevice,\n });\n }).caseOf({\n Left: (error) => {\n this._logger.error(\"Error disconnecting from device\", {\n data: { error },\n });\n throw error;\n },\n Right: () => {},\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA4B,qBAG5BC,EAA2C,uCAE3CC,EAAmC,0DAEnCC,EAA4B,qDAC5BC,EAAiC,mDAiB1B,IAAMC,EAAN,KAAwB,CACZ,kBACA,gBACA,QAEjB,YAEEC,EAEAC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,kBAAoBD,EACzB,KAAK,QAAUE,EAAc,mBAAmB,CAClD,CAEA,MAAM,QAAQ,CAAE,UAAAC,CAAU,EAAyC,CACjE,SAAO,eAAY,MAAO,CAAE,WAAAC,CAAW,IAAM,CAC3C,MAAMC,EAAU,MAAMD,EACpB,KAAK,gBAAgB,qBAAqBD,CAAS,EAAE,OAAQG,GAAU,CACrE,KAAK,QAAQ,MAAM,2BAA4B,CAC7C,KAAM,CAAE,UAAAH,EAAW,MAAAG,CAAM,CAC3B,CAAC,CACH,CAAC,CACH,EAEMC,EAAsBF,EAAQ,gBAAgB,UAC9CG,EAAY,MAAMJ,EACtB,KAAK,kBACF,aAAaG,CAAmB,EAChC,SACC,IAAI,6BAA2B,IAAI,MAAM,mBAAmB,CAAC,CAC/D,CACJ,EAEAF,EAAQ,MAAM,EACd,KAAK,gBAAgB,oBAAoBF,CAAS,EAElD,MAAMK,EAAU,WAAW,CACzB,gBAAiBH,EAAQ,eAC3B,CAAC,CACH,CAAC,EAAE,OAAO,CACR,KAAOC,GAAU,CACf,WAAK,QAAQ,MAAM,kCAAmC,CACpD,KAAM,CAAE,MAAAA,CAAM,CAChB,CAAC,EACKA,CACR,EACA,MAAO,IAAM,CAAC,CAChB,CAAC,CACH,CACF,EArDaP,EAANU,EAAA,IADN,cAAW,EAOPC,EAAA,eAAO,mBAAiB,gBAAgB,GAExCA,EAAA,eAAO,qBAAmB,oBAAoB,GAE9CA,EAAA,eAAO,cAAY,6BAA6B,IAVxCX",
6
- "names": ["DisconnectUseCase_exports", "__export", "DisconnectUseCase", "__toCommonJS", "import_inversify", "import_purify_ts", "import_Errors", "import_deviceSessionTypes", "import_loggerTypes", "import_transportDiTypes", "DisconnectUseCase", "transportService", "sessionService", "loggerFactory", "sessionId", "liftEither", "session", "error", "transportIdentifier", "transport", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { EitherAsync } from \"purify-ts\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { TransportNotSupportedError } from \"@api/transport/model/Errors\";\nimport type { DeviceSessionId } from \"@api/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\n/**\n * The arguments for the DisconnectUseCase.\n */\nexport type DisconnectUseCaseArgs = {\n /**\n * Device session identifier from `DeviceManagementKit.connect`.\n */\n sessionId: DeviceSessionId;\n};\n\n/**\n * Disconnects to a discovered device.\n */\n@injectable()\nexport class DisconnectUseCase {\n private readonly _transportService: TransportService;\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(transportDiTypes.TransportService)\n transportService: TransportService,\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._transportService = transportService;\n this._logger = loggerFactory(\"DisconnectUseCase\");\n }\n\n async execute({ sessionId }: DisconnectUseCaseArgs): Promise<void> {\n this._logger.debug(\"Disconnecting from device\", {\n data: {\n test: this._sessionService\n .getDeviceSessions()\n .map((session) => session.id),\n },\n });\n return EitherAsync(async ({ liftEither }) => {\n const session = await liftEither(\n this._sessionService.getDeviceSessionById(sessionId).ifLeft((error) => {\n this._logger.error(\"Device session not found\", {\n data: { sessionId, error },\n });\n }),\n );\n\n const transportIdentifier = session.connectedDevice.transport;\n const transport = await liftEither(\n this._transportService\n .getTransport(transportIdentifier)\n .toEither(\n new TransportNotSupportedError(new Error(\"Unknown transport\")),\n ),\n );\n\n session.close();\n this._sessionService.removeDeviceSession(sessionId);\n\n await transport.disconnect({\n connectedDevice: session.connectedDevice,\n });\n }).caseOf({\n Left: (error) => {\n this._logger.error(\"Error disconnecting from device\", {\n data: { error },\n });\n throw error;\n },\n Right: () => {},\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA4B,qBAG5BC,EAA2C,uCAE3CC,EAAmC,0DAEnCC,EAA4B,qDAC5BC,EAAiC,mDAiB1B,IAAMC,EAAN,KAAwB,CACZ,kBACA,gBACA,QAEjB,YAEEC,EAEAC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,kBAAoBD,EACzB,KAAK,QAAUE,EAAc,mBAAmB,CAClD,CAEA,MAAM,QAAQ,CAAE,UAAAC,CAAU,EAAyC,CACjE,YAAK,QAAQ,MAAM,4BAA6B,CAC9C,KAAM,CACJ,KAAM,KAAK,gBACR,kBAAkB,EAClB,IAAKC,GAAYA,EAAQ,EAAE,CAChC,CACF,CAAC,KACM,eAAY,MAAO,CAAE,WAAAC,CAAW,IAAM,CAC3C,MAAMD,EAAU,MAAMC,EACpB,KAAK,gBAAgB,qBAAqBF,CAAS,EAAE,OAAQG,GAAU,CACrE,KAAK,QAAQ,MAAM,2BAA4B,CAC7C,KAAM,CAAE,UAAAH,EAAW,MAAAG,CAAM,CAC3B,CAAC,CACH,CAAC,CACH,EAEMC,EAAsBH,EAAQ,gBAAgB,UAC9CI,EAAY,MAAMH,EACtB,KAAK,kBACF,aAAaE,CAAmB,EAChC,SACC,IAAI,6BAA2B,IAAI,MAAM,mBAAmB,CAAC,CAC/D,CACJ,EAEAH,EAAQ,MAAM,EACd,KAAK,gBAAgB,oBAAoBD,CAAS,EAElD,MAAMK,EAAU,WAAW,CACzB,gBAAiBJ,EAAQ,eAC3B,CAAC,CACH,CAAC,EAAE,OAAO,CACR,KAAOE,GAAU,CACf,WAAK,QAAQ,MAAM,kCAAmC,CACpD,KAAM,CAAE,MAAAA,CAAM,CAChB,CAAC,EACKA,CACR,EACA,MAAO,IAAM,CAAC,CAChB,CAAC,CACH,CACF,EA5DaP,EAANU,EAAA,IADN,cAAW,EAOPC,EAAA,eAAO,mBAAiB,gBAAgB,GAExCA,EAAA,eAAO,qBAAmB,oBAAoB,GAE9CA,EAAA,eAAO,cAAY,6BAA6B,IAVxCX",
6
+ "names": ["DisconnectUseCase_exports", "__export", "DisconnectUseCase", "__toCommonJS", "import_inversify", "import_purify_ts", "import_Errors", "import_deviceSessionTypes", "import_loggerTypes", "import_transportDiTypes", "DisconnectUseCase", "transportService", "sessionService", "loggerFactory", "sessionId", "session", "liftEither", "error", "transportIdentifier", "transport", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var f=(r,e)=>{for(var s in e)n(r,s,{get:e[s],enumerable:!0})},y=(r,e,s,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of D(e))!h.call(r,o)&&o!==s&&n(r,o,{get:()=>e[o],enumerable:!(i=d(e,o))||i.enumerable});return r};var u=r=>y(n({},"__esModule",{value:!0}),r),p=(r,e,s,i)=>{for(var o=i>1?void 0:i?d(e,s):e,v=r.length-1,g;v>=0;v--)(g=r[v])&&(o=(i?g(e,s,o):g(o))||o);return i&&o&&n(e,s,o),o},S=(r,e)=>(s,i)=>e(s,i,r);var _={};f(_,{GetConnectedDeviceUseCase:()=>c});module.exports=u(_);var t=require("inversify"),m=require("../../../api/transport/model/ConnectedDevice"),a=require("../../device-session/di/deviceSessionTypes"),l=require("../../logger-publisher/di/loggerTypes");let c=class{_sessionService;_logger;constructor(e,s){this._sessionService=e,this._logger=s("GetConnectedDeviceUseCase")}execute({sessionId:e}){return this._sessionService.getDeviceSessionById(e).caseOf({Right:i=>new m.ConnectedDevice({sessionId:i.id,transportConnectedDevice:i.connectedDevice}),Left:i=>{throw this._logger.error("Error getting session",{data:{error:i}}),i}})}};c=p([(0,t.injectable)(),S(0,(0,t.inject)(a.deviceSessionTypes.DeviceSessionService)),S(1,(0,t.inject)(l.loggerTypes.LoggerPublisherServiceFactory))],c);0&&(module.exports={GetConnectedDeviceUseCase});
1
+ "use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var f=(i,e)=>{for(var o in e)n(i,o,{get:e[o],enumerable:!0})},u=(i,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of m(e))!h.call(i,s)&&s!==o&&n(i,s,{get:()=>e[s],enumerable:!(r=p(e,s))||r.enumerable});return i};var y=i=>u(n({},"__esModule",{value:!0}),i),a=(i,e,o,r)=>{for(var s=r>1?void 0:r?p(e,o):e,v=i.length-1,g;v>=0;v--)(g=i[v])&&(s=(r?g(e,o,s):g(s))||s);return r&&s&&n(e,o,s),s},d=(i,e)=>(o,r)=>e(o,r,i);var _={};f(_,{GetConnectedDeviceUseCase:()=>t});module.exports=y(_);var c=require("inversify"),S=require("../../../api/transport/model/ConnectedDevice"),D=require("../../device-session/di/deviceSessionTypes"),l=require("../../logger-publisher/di/loggerTypes");let t=class{_sessionService;_logger;constructor(e,o){this._sessionService=e,this._logger=o("GetConnectedDeviceUseCase")}execute({sessionId:e}){return this._sessionService.getDeviceSessionById(e).caseOf({Right:r=>(this._logger.info("Getting connected device",{data:{transportConnectedDevice:r.connectedDevice,connectedDevice:new S.ConnectedDevice({sessionId:r.id,transportConnectedDevice:r.connectedDevice})}}),new S.ConnectedDevice({sessionId:r.id,transportConnectedDevice:r.connectedDevice})),Left:r=>{throw this._logger.error("Error getting session",{data:{error:r}}),r}})}};t=a([(0,c.injectable)(),d(0,(0,c.inject)(D.deviceSessionTypes.DeviceSessionService)),d(1,(0,c.inject)(l.loggerTypes.LoggerPublisherServiceFactory))],t);0&&(module.exports={GetConnectedDeviceUseCase});
2
2
  //# sourceMappingURL=GetConnectedDeviceUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/GetConnectedDeviceUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\nexport type GetConnectedDeviceUseCaseArgs = {\n sessionId: DeviceSessionId;\n};\n\n/**\n * Get a connected device from deviceSession id.\n */\n@injectable()\nexport class GetConnectedDeviceUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"GetConnectedDeviceUseCase\");\n }\n\n execute({ sessionId }: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n Right: (deviceSession) =>\n new ConnectedDevice({\n sessionId: deviceSession.id,\n transportConnectedDevice: deviceSession.connectedDevice,\n }),\n Left: (error) => {\n this._logger.error(\"Error getting session\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAAgC,gDAChCC,EAAmC,0DAEnCC,EAA4B,qDAUrB,IAAMC,EAAN,KAAgC,CACpB,gBACA,QAEjB,YAEEC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,QAAUC,EAAc,2BAA2B,CAC1D,CAEA,QAAQ,CAAE,UAAAC,CAAU,EAAmD,CAIrE,OAFE,KAAK,gBAAgB,qBAAqBA,CAAS,EAEzB,OAAO,CACjC,MAAQC,GACN,IAAI,kBAAgB,CAClB,UAAWA,EAAc,GACzB,yBAA0BA,EAAc,eAC1C,CAAC,EACH,KAAOC,GAAU,CACf,WAAK,QAAQ,MAAM,wBAAyB,CAC1C,KAAM,CAAE,MAAAA,CAAM,CAChB,CAAC,EACKA,CACR,CACF,CAAC,CACH,CACF,EAhCaL,EAANM,EAAA,IADN,cAAW,EAMPC,EAAA,eAAO,qBAAmB,oBAAoB,GAE9CA,EAAA,eAAO,cAAY,6BAA6B,IAPxCP",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\nexport type GetConnectedDeviceUseCaseArgs = {\n sessionId: DeviceSessionId;\n};\n\n/**\n * Get a connected device from deviceSession id.\n */\n@injectable()\nexport class GetConnectedDeviceUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"GetConnectedDeviceUseCase\");\n }\n\n execute({ sessionId }: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n Right: (deviceSession) => {\n this._logger.info(\"Getting connected device\", {\n data: {\n transportConnectedDevice: deviceSession.connectedDevice,\n connectedDevice: new ConnectedDevice({\n sessionId: deviceSession.id,\n transportConnectedDevice: deviceSession.connectedDevice,\n }),\n },\n });\n return new ConnectedDevice({\n sessionId: deviceSession.id,\n transportConnectedDevice: deviceSession.connectedDevice,\n });\n },\n Left: (error) => {\n this._logger.error(\"Error getting session\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAAgC,gDAChCC,EAAmC,0DAEnCC,EAA4B,qDAUrB,IAAMC,EAAN,KAAgC,CACpB,gBACA,QAEjB,YAEEC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,QAAUC,EAAc,2BAA2B,CAC1D,CAEA,QAAQ,CAAE,UAAAC,CAAU,EAAmD,CAIrE,OAFE,KAAK,gBAAgB,qBAAqBA,CAAS,EAEzB,OAAO,CACjC,MAAQC,IACN,KAAK,QAAQ,KAAK,2BAA4B,CAC5C,KAAM,CACJ,yBAA0BA,EAAc,gBACxC,gBAAiB,IAAI,kBAAgB,CACnC,UAAWA,EAAc,GACzB,yBAA0BA,EAAc,eAC1C,CAAC,CACH,CACF,CAAC,EACM,IAAI,kBAAgB,CACzB,UAAWA,EAAc,GACzB,yBAA0BA,EAAc,eAC1C,CAAC,GAEH,KAAOC,GAAU,CACf,WAAK,QAAQ,MAAM,wBAAyB,CAC1C,KAAM,CAAE,MAAAA,CAAM,CAChB,CAAC,EACKA,CACR,CACF,CAAC,CACH,CACF,EA1CaL,EAANM,EAAA,IADN,cAAW,EAMPC,EAAA,eAAO,qBAAmB,oBAAoB,GAE9CA,EAAA,eAAO,cAAY,6BAA6B,IAPxCP",
6
6
  "names": ["GetConnectedDeviceUseCase_exports", "__export", "GetConnectedDeviceUseCase", "__toCommonJS", "import_inversify", "import_ConnectedDevice", "import_deviceSessionTypes", "import_loggerTypes", "GetConnectedDeviceUseCase", "sessionService", "loggerFactory", "sessionId", "deviceSession", "error", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var h=(s,e)=>{for(var o in e)c(s,o,{get:e[o],enumerable:!0})},u=(s,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of l(e))!f.call(s,r)&&r!==o&&c(s,r,{get:()=>e[r],enumerable:!(i=d(e,r))||i.enumerable});return s};var U=s=>u(c({},"__esModule",{value:!0}),s),C=(s,e,o,i)=>{for(var r=i>1?void 0:i?d(e,o):e,g=s.length-1,p;g>=0;g--)(p=s[g])&&(r=(i?p(e,o,r):p(r))||r);return i&&r&&c(e,o,r),r},a=(s,e)=>(o,i)=>e(o,i,s);var y={};h(y,{ReconnectUseCase:()=>n});module.exports=U(y);var t=require("inversify"),m=require("../../discovery/di/discoveryTypes"),v=require("../../logger-publisher/di/loggerTypes");let n=class{constructor(e,o,i){this.connectUseCase=e;this.disconnectUseCase=o;this._logger=i("ReconnectUseCase")}_logger;async execute({device:e,sessionRefresherOptions:o}){return this._logger.debug("Reconnecting device session",{data:{deviceId:e.id,transport:e.transport}}),await this.disconnectUseCase.execute({sessionId:e.sessionId}),this.connectUseCase.execute({device:e,sessionRefresherOptions:o})}};n=C([(0,t.injectable)(),a(0,(0,t.inject)(m.discoveryTypes.ConnectUseCase)),a(1,(0,t.inject)(m.discoveryTypes.DisconnectUseCase)),a(2,(0,t.inject)(v.loggerTypes.LoggerPublisherServiceFactory))],n);0&&(module.exports={ReconnectUseCase});
2
+ //# sourceMappingURL=ReconnectUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/discovery/use-case/ReconnectUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { ConnectedDevice } from \"@api/index\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceSessionRefresherOptions } from \"@internal/device-session/model/DeviceSession\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\nimport { ConnectUseCase } from \"./ConnectUseCase\";\nimport { DisconnectUseCase } from \"./DisconnectUseCase\";\n\n/**\n * The arguments for the ReconnectUseCase.\n */\nexport type ReconnectUseCaseArgs = {\n /**\n * Connected device\n */\n device: ConnectedDevice;\n\n /**\n * sessionRefresherOptions - optional\n * isRefresherDisabled - whether the refresher is disabled\n * pollingInterval - optional - the refresh interval in milliseconds\n */\n sessionRefresherOptions?: DeviceSessionRefresherOptions;\n};\n\n/**\n * Reconnects a device session by disconnecting and reconnecting to the device.\n */\n@injectable()\nexport class ReconnectUseCase {\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(discoveryTypes.ConnectUseCase)\n private readonly connectUseCase: ConnectUseCase,\n @inject(discoveryTypes.DisconnectUseCase)\n private readonly disconnectUseCase: DisconnectUseCase,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._logger = loggerFactory(\"ReconnectUseCase\");\n }\n\n async execute({\n device,\n sessionRefresherOptions,\n }: ReconnectUseCaseArgs): Promise<DeviceSessionId> {\n this._logger.debug(\"Reconnecting device session\", {\n data: { deviceId: device.id, transport: device.transport },\n });\n await this.disconnectUseCase.execute({ sessionId: device.sessionId });\n\n return this.connectUseCase.execute({\n device,\n sessionRefresherOptions,\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAMnCC,EAA+B,iDAC/BC,EAA4B,qDA0BrB,IAAMC,EAAN,KAAuB,CAG5B,YAEmBC,EAEAC,EAEjBC,EACA,CALiB,oBAAAF,EAEA,uBAAAC,EAIjB,KAAK,QAAUC,EAAc,kBAAkB,CACjD,CAXiB,QAajB,MAAM,QAAQ,CACZ,OAAAC,EACA,wBAAAC,CACF,EAAmD,CACjD,YAAK,QAAQ,MAAM,8BAA+B,CAChD,KAAM,CAAE,SAAUD,EAAO,GAAI,UAAWA,EAAO,SAAU,CAC3D,CAAC,EACD,MAAM,KAAK,kBAAkB,QAAQ,CAAE,UAAWA,EAAO,SAAU,CAAC,EAE7D,KAAK,eAAe,QAAQ,CACjC,OAAAA,EACA,wBAAAC,CACF,CAAC,CACH,CACF,EA5BaL,EAANM,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,iBAAe,cAAc,GAEpCA,EAAA,eAAO,iBAAe,iBAAiB,GAEvCA,EAAA,eAAO,cAAY,6BAA6B,IARxCP",
6
+ "names": ["ReconnectUseCase_exports", "__export", "ReconnectUseCase", "__toCommonJS", "import_inversify", "import_discoveryTypes", "import_loggerTypes", "ReconnectUseCase", "connectUseCase", "disconnectUseCase", "loggerFactory", "device", "sessionRefresherOptions", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("../../logger-publisher/service/DefaultLoggerPublisherService"),i=require("./ReconnectUseCase");vi.mock("uuid",()=>({v4:vi.fn().mockReturnValue("newSessionId")}));let s,e,n;const a="newSessionId";describe("ReconnectUseCase",()=>{const c={sessionId:"session-id",id:"device-id",transport:"USB",type:"MOCK",modelId:"model-id",name:"device-name"},d="logger-tag";beforeAll(()=>{s=new r.DefaultLoggerPublisherService([],d),e={},n={}}),afterAll(()=>{vi.restoreAllMocks()}),test("Should successfully reconnect device session (disconnect then connect)",async()=>{e.execute=vi.fn().mockResolvedValue(a),n.execute=vi.fn().mockResolvedValue(void 0);const o=await new i.ReconnectUseCase(e,n,()=>s).execute({device:c});expect(n.execute).toHaveBeenCalledWith({sessionId:c.sessionId}),expect(e.execute).toHaveBeenCalledWith({device:c,sessionRefresherOptions:void 0}),expect(o).toBe(a)}),test("Should throw an error when disconnect fails",async()=>{const t=new Error("Disconnect failed");n.execute=vi.fn().mockRejectedValue(t),e.execute=vi.fn();const o=new i.ReconnectUseCase(e,n,()=>s);await expect(o.execute({device:c})).rejects.toThrow(t),expect(n.execute).toHaveBeenCalled(),expect(e.execute).not.toHaveBeenCalled()}),test("Should throw an error when connect fails after successful disconnect",async()=>{const t=new Error("Connect failed");n.execute=vi.fn().mockResolvedValue(void 0),e.execute=vi.fn().mockRejectedValue(t);const o=new i.ReconnectUseCase(e,n,()=>s);await expect(o.execute({device:c})).rejects.toThrow(t),expect(n.execute).toHaveBeenCalled(),expect(e.execute).toHaveBeenCalled()})});
2
+ //# sourceMappingURL=ReconnectUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/discovery/use-case/ReconnectUseCase.test.ts"],
4
+ "sourcesContent": ["import { type DeviceModelId } from \"@api/device/DeviceModel\";\nimport { type ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\n\nimport { type ConnectUseCase } from \"./ConnectUseCase\";\nimport { type DisconnectUseCase } from \"./DisconnectUseCase\";\nimport { ReconnectUseCase } from \"./ReconnectUseCase\";\n\nvi.mock(\"uuid\", () => ({\n v4: vi.fn().mockReturnValue(\"newSessionId\"),\n}));\n\nlet logger: LoggerPublisherService;\nlet connectUseCase: ConnectUseCase;\nlet disconnectUseCase: DisconnectUseCase;\n\nconst newSessionId = \"newSessionId\";\n\ndescribe(\"ReconnectUseCase\", () => {\n const stubConnectedDevice = {\n sessionId: \"session-id\",\n id: \"device-id\",\n transport: \"USB\",\n type: \"MOCK\" as unknown as ConnectionType,\n modelId: \"model-id\" as unknown as DeviceModelId,\n name: \"device-name\",\n };\n const tag = \"logger-tag\";\n\n beforeAll(() => {\n logger = new DefaultLoggerPublisherService([], tag);\n connectUseCase = {} as ConnectUseCase;\n disconnectUseCase = {} as DisconnectUseCase;\n });\n\n afterAll(() => {\n vi.restoreAllMocks();\n });\n\n test(\"Should successfully reconnect device session (disconnect then connect)\", async () => {\n // Given\n connectUseCase.execute = vi.fn().mockResolvedValue(newSessionId);\n disconnectUseCase.execute = vi.fn().mockResolvedValue(undefined);\n\n const usecase = new ReconnectUseCase(\n connectUseCase,\n disconnectUseCase,\n () => logger,\n );\n\n // When\n const sessionId = await usecase.execute({\n device: stubConnectedDevice,\n });\n\n // Then\n expect(disconnectUseCase.execute).toHaveBeenCalledWith({\n sessionId: stubConnectedDevice.sessionId,\n });\n expect(connectUseCase.execute).toHaveBeenCalledWith({\n device: stubConnectedDevice,\n sessionRefresherOptions: undefined,\n });\n expect(sessionId).toBe(newSessionId);\n });\n\n test(\"Should throw an error when disconnect fails\", async () => {\n // Given\n const disconnectError = new Error(\"Disconnect failed\");\n disconnectUseCase.execute = vi.fn().mockRejectedValue(disconnectError);\n connectUseCase.execute = vi.fn();\n\n const usecase = new ReconnectUseCase(\n connectUseCase,\n disconnectUseCase,\n () => logger,\n );\n\n // When / Then\n await expect(\n usecase.execute({\n device: stubConnectedDevice as unknown as ConnectedDevice,\n }),\n ).rejects.toThrow(disconnectError);\n expect(disconnectUseCase.execute).toHaveBeenCalled();\n expect(connectUseCase.execute).not.toHaveBeenCalled();\n });\n\n test(\"Should throw an error when connect fails after successful disconnect\", async () => {\n // Given\n const connectError = new Error(\"Connect failed\");\n disconnectUseCase.execute = vi.fn().mockResolvedValue(undefined);\n connectUseCase.execute = vi.fn().mockRejectedValue(connectError);\n\n const usecase = new ReconnectUseCase(\n connectUseCase,\n disconnectUseCase,\n () => logger,\n );\n\n // When / Then\n await expect(\n usecase.execute({\n device: stubConnectedDevice as unknown as ConnectedDevice,\n }),\n ).rejects.toThrow(connectError);\n expect(disconnectUseCase.execute).toHaveBeenCalled();\n expect(connectUseCase.execute).toHaveBeenCalled();\n });\n});\n"],
5
+ "mappings": "aAIA,IAAAA,EAA8C,4EAI9CC,EAAiC,8BAEjC,GAAG,KAAK,OAAQ,KAAO,CACrB,GAAI,GAAG,GAAG,EAAE,gBAAgB,cAAc,CAC5C,EAAE,EAEF,IAAIC,EACAC,EACAC,EAEJ,MAAMC,EAAe,eAErB,SAAS,mBAAoB,IAAM,CACjC,MAAMC,EAAsB,CAC1B,UAAW,aACX,GAAI,YACJ,UAAW,MACX,KAAM,OACN,QAAS,WACT,KAAM,aACR,EACMC,EAAM,aAEZ,UAAU,IAAM,CACdL,EAAS,IAAI,gCAA8B,CAAC,EAAGK,CAAG,EAClDJ,EAAiB,CAAC,EAClBC,EAAoB,CAAC,CACvB,CAAC,EAED,SAAS,IAAM,CACb,GAAG,gBAAgB,CACrB,CAAC,EAED,KAAK,yEAA0E,SAAY,CAEzFD,EAAe,QAAU,GAAG,GAAG,EAAE,kBAAkBE,CAAY,EAC/DD,EAAkB,QAAU,GAAG,GAAG,EAAE,kBAAkB,MAAS,EAS/D,MAAMI,EAAY,MAPF,IAAI,mBAClBL,EACAC,EACA,IAAMF,CACR,EAGgC,QAAQ,CACtC,OAAQI,CACV,CAAC,EAGD,OAAOF,EAAkB,OAAO,EAAE,qBAAqB,CACrD,UAAWE,EAAoB,SACjC,CAAC,EACD,OAAOH,EAAe,OAAO,EAAE,qBAAqB,CAClD,OAAQG,EACR,wBAAyB,MAC3B,CAAC,EACD,OAAOE,CAAS,EAAE,KAAKH,CAAY,CACrC,CAAC,EAED,KAAK,8CAA+C,SAAY,CAE9D,MAAMI,EAAkB,IAAI,MAAM,mBAAmB,EACrDL,EAAkB,QAAU,GAAG,GAAG,EAAE,kBAAkBK,CAAe,EACrEN,EAAe,QAAU,GAAG,GAAG,EAE/B,MAAMO,EAAU,IAAI,mBAClBP,EACAC,EACA,IAAMF,CACR,EAGA,MAAM,OACJQ,EAAQ,QAAQ,CACd,OAAQJ,CACV,CAAC,CACH,EAAE,QAAQ,QAAQG,CAAe,EACjC,OAAOL,EAAkB,OAAO,EAAE,iBAAiB,EACnD,OAAOD,EAAe,OAAO,EAAE,IAAI,iBAAiB,CACtD,CAAC,EAED,KAAK,uEAAwE,SAAY,CAEvF,MAAMQ,EAAe,IAAI,MAAM,gBAAgB,EAC/CP,EAAkB,QAAU,GAAG,GAAG,EAAE,kBAAkB,MAAS,EAC/DD,EAAe,QAAU,GAAG,GAAG,EAAE,kBAAkBQ,CAAY,EAE/D,MAAMD,EAAU,IAAI,mBAClBP,EACAC,EACA,IAAMF,CACR,EAGA,MAAM,OACJQ,EAAQ,QAAQ,CACd,OAAQJ,CACV,CAAC,CACH,EAAE,QAAQ,QAAQK,CAAY,EAC9B,OAAOP,EAAkB,OAAO,EAAE,iBAAiB,EACnD,OAAOD,EAAe,OAAO,EAAE,iBAAiB,CAClD,CAAC,CACH,CAAC",
6
+ "names": ["import_DefaultLoggerPublisherService", "import_ReconnectUseCase", "logger", "connectUseCase", "disconnectUseCase", "newSessionId", "stubConnectedDevice", "tag", "sessionId", "disconnectError", "usecase", "connectError"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/device-management-kit",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
- import{commandTypes as c}from"./command/di/commandTypes";import{configTypes as a}from"../internal/config/di/configTypes";import{deviceSessionTypes as t}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as s}from"../internal/discovery/di/discoveryTypes";import{managerApiTypes as r}from"../internal/manager-api/di/managerApiTypes";import{sendTypes as p}from"../internal/send/di/sendTypes";import{transportDiTypes as m}from"../internal/transport/di/transportDiTypes";import{makeContainer as C}from"../../src/di";import{deviceActionTypes as v}from"./device-action/di/deviceActionTypes";class x{container;constructor({stub:e,transports:i,loggers:o,config:n}={}){this.container=C({stub:e,transports:i,loggers:o,config:n})}getVersion(){return this.container.get(a.GetDmkVersionUseCase).getDmkVersion()}startDiscovering(e){return this.container.get(s.StartDiscoveringUseCase).execute(e)}stopDiscovering(){return this.container.get(s.StopDiscoveringUseCase).execute()}listenToAvailableDevices(e){return this.container.get(s.ListenToAvailableDevicesUseCase).execute(e)}connect(e){return this.container.get(s.ConnectUseCase).execute(e)}disconnect(e){return this.container.get(s.DisconnectUseCase).execute(e)}sendApdu(e){return this.container.get(p.SendApduUseCase).execute(e)}sendCommand(e){return this.container.get(c.SendCommandUseCase).execute(e)}executeDeviceAction(e){return this.container.get(v.ExecuteDeviceActionUseCase).execute(e)}getConnectedDevice(e){return this.container.get(s.GetConnectedDeviceUseCase).execute(e)}getDeviceSessionState(e){return this.container.get(t.GetDeviceSessionStateUseCase).execute(e)}close(){return this.container.get(t.CloseSessionsUseCase).execute()}listConnectedDevices(){return this.container.get(s.ListConnectedDevicesUseCase).execute()}listenToConnectedDevice(){return this.container.get(s.ListenToConnectedDeviceUseCase).execute()}disableDeviceSessionRefresher(e){return this.container.get(t.DisableDeviceSessionRefresherUseCase).execute(e)}setProvider(e){return this.container.get(r.SetProviderUseCase).execute(e)}getProvider(){return this.container.get(r.ManagerApiDataSource).getProvider()}isEnvironmentSupported(){return this.container.get(m.TransportService).getAllTransports().some(e=>e.isSupported())}}export{x as DeviceManagementKit};
1
+ import{commandTypes as c}from"./command/di/commandTypes";import{configTypes as a}from"../internal/config/di/configTypes";import{deviceSessionTypes as t}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as s}from"../internal/discovery/di/discoveryTypes";import{managerApiTypes as r}from"../internal/manager-api/di/managerApiTypes";import{sendTypes as p}from"../internal/send/di/sendTypes";import{transportDiTypes as m}from"../internal/transport/di/transportDiTypes";import{makeContainer as C}from"../../src/di";import{deviceActionTypes as v}from"./device-action/di/deviceActionTypes";class x{container;constructor({stub:e,transports:i,loggers:o,config:n}={}){this.container=C({stub:e,transports:i,loggers:o,config:n})}getVersion(){return this.container.get(a.GetDmkVersionUseCase).getDmkVersion()}startDiscovering(e){return this.container.get(s.StartDiscoveringUseCase).execute(e)}stopDiscovering(){return this.container.get(s.StopDiscoveringUseCase).execute()}listenToAvailableDevices(e){return this.container.get(s.ListenToAvailableDevicesUseCase).execute(e)}async reconnect(e){return this.container.get(s.ReconnectUseCase).execute(e)}connect(e){return this.container.get(s.ConnectUseCase).execute(e)}disconnect(e){return this.container.get(s.DisconnectUseCase).execute(e)}sendApdu(e){return this.container.get(p.SendApduUseCase).execute(e)}sendCommand(e){return this.container.get(c.SendCommandUseCase).execute(e)}executeDeviceAction(e){return this.container.get(v.ExecuteDeviceActionUseCase).execute(e)}getConnectedDevice(e){return this.container.get(s.GetConnectedDeviceUseCase).execute(e)}getDeviceSessionState(e){return this.container.get(t.GetDeviceSessionStateUseCase).execute(e)}close(){return this.container.get(t.CloseSessionsUseCase).execute()}listConnectedDevices(){return this.container.get(s.ListConnectedDevicesUseCase).execute()}listenToConnectedDevice(){return this.container.get(s.ListenToConnectedDeviceUseCase).execute()}disableDeviceSessionRefresher(e){return this.container.get(t.DisableDeviceSessionRefresherUseCase).execute(e)}setProvider(e){return this.container.get(r.SetProviderUseCase).execute(e)}getProvider(){return this.container.get(r.ManagerApiDataSource).getProvider()}isEnvironmentSupported(){return this.container.get(m.TransportService).getAllTransports().some(e=>e.isSupported())}}export{x as DeviceManagementKit};
2
2
  //# sourceMappingURL=DeviceManagementKit.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/DeviceManagementKit.ts"],
4
- "sourcesContent": ["import { type Container } from \"inversify\";\nimport { type Observable } from \"rxjs\";\n\nimport { commandTypes } from \"@api/command/di/commandTypes\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type SendCommandUseCase,\n type SendCommandUseCaseArgs,\n} from \"@api/command/use-case/SendCommandUseCase\";\nimport {\n type ExecuteDeviceActionUseCase,\n type ExecuteDeviceActionUseCaseArgs,\n} from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport {\n type ConnectUseCaseArgs,\n type DisconnectUseCaseArgs,\n type DiscoveredDevice,\n type GetConnectedDeviceUseCaseArgs,\n type SendApduUseCaseArgs,\n type StartDiscoveringUseCaseArgs,\n} from \"@api/types\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { type GetDmkVersionUseCase } from \"@internal/config/use-case/GetDmkVersionUseCase\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { type CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { type GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { type ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { type DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { type GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { type ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport {\n type ListenToAvailableDevicesUseCase,\n type ListenToAvailableDevicesUseCaseArgs,\n} from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { type ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport type { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport type { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { type SetProviderUseCase } from \"@internal/manager-api/use-case/SetProviderUseCase\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport { type SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\nimport { makeContainer, type MakeContainerProps } from \"@root/src/di\";\n\nimport {\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"./device-action/DeviceAction\";\nimport { deviceActionTypes } from \"./device-action/di/deviceActionTypes\";\nimport { type DisableDeviceSessionRefresherUseCase } from \"./device-session/use-case/DisableDeviceSessionRefresher\";\nimport { type DmkError } from \"./Error\";\n\n/**\n * The main class to interact with the Device Management Kit.\n *\n * NB: do not instantiate this class directly, instead, use `LedgerDMKBuilder`.\n */\nexport class DeviceManagementKit {\n readonly container: Container;\n /** @internal */\n constructor({\n stub,\n transports,\n loggers,\n config,\n }: Partial<MakeContainerProps> = {}) {\n // NOTE: MakeContainerProps might not be the exact type here\n // For the init of the project this is sufficient, but we might need to\n // update the constructor arguments as we go (we might have more than just the container config)\n this.container = makeContainer({\n stub,\n transports,\n loggers,\n config,\n });\n }\n\n /**\n * Returns a promise resolving to the version of the SDK.\n */\n getVersion(): Promise<string> {\n return this.container\n .get<GetDmkVersionUseCase>(configTypes.GetDmkVersionUseCase)\n .getDmkVersion();\n }\n\n /**\n * Starts discovering devices connected.\n *\n * For the WeHID implementation, this use-case needs to be called as a result\n * of an user interaction (button \"click\" event for ex).\n *\n * @param {StartDiscoveringUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice>} An observable of discovered devices.\n */\n startDiscovering(\n args: StartDiscoveringUseCaseArgs,\n ): Observable<DiscoveredDevice> {\n return this.container\n .get<StartDiscoveringUseCase>(discoveryTypes.StartDiscoveringUseCase)\n .execute(args);\n }\n\n /**\n * Stops discovering devices connected.\n */\n stopDiscovering() {\n return this.container\n .get<StopDiscoveringUseCase>(discoveryTypes.StopDiscoveringUseCase)\n .execute();\n }\n\n /**\n * Listen to list of known discovered devices (and later BLE).\n * @param {ListenToAvailableDevicesUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice[]>} An observable of known discovered devices.\n */\n listenToAvailableDevices(\n args: ListenToAvailableDevicesUseCaseArgs,\n ): Observable<DiscoveredDevice[]> {\n return this.container\n .get<ListenToAvailableDevicesUseCase>(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n )\n .execute(args);\n }\n\n /**\n * Connects to a device previously discovered with `DeviceManagementKit.startDiscovering`.\n * Creates a new device session which:\n * - Represents the connection to the device.\n * - Is terminated upon disconnection of the device.\n * - Exposes the device state through an observable (see `DeviceManagementKit.getDeviceSessionState`)\n * - Should be used for all subsequent communication with the device.\n *\n * @param {ConnectUseCaseArgs} args - The arguments for connecting to the device.\n * - `device`: The discovered device obtained from `StartDiscoveringUseCase`.\n * - `sessionRefresherOptions` (optional): Configuration for session refreshing.\n * - `isRefresherDisabled`: Whether the refresher is disabled.\n * - `pollingInterval`: The refresh interval in milliseconds\n * @returns The session ID to use for further communication with the device.\n */\n connect(args: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ConnectUseCase>(discoveryTypes.ConnectUseCase)\n .execute(args);\n }\n\n /**\n * Disconnects to a discovered device.\n *\n * @param {DisconnectUseCaseArgs} args - The session ID to disconnect.\n */\n disconnect(args: DisconnectUseCaseArgs): Promise<void> {\n return this.container\n .get<DisconnectUseCase>(discoveryTypes.DisconnectUseCase)\n .execute(args);\n }\n\n /**\n * Sends an APDU command to a device through a device session.\n *\n * @param {SendApduUseCaseArgs} args - The device session ID and APDU command to send.\n */\n sendApdu(args: SendApduUseCaseArgs): Promise<ApduResponse> {\n return this.container\n .get<SendApduUseCase>(sendTypes.SendApduUseCase)\n .execute(args);\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param {SendCommandUseCaseArgs<Response, Args, ErrorCodes>} args - The device session ID, command, command error codes and command parameters to send.\n * @returns A promise resolving with the response from the command.\n */\n sendCommand<Response, Args, ErrorCodes>(\n args: SendCommandUseCaseArgs<Response, Args, ErrorCodes>,\n ): Promise<CommandResult<Response, ErrorCodes>> {\n return this.container\n .get<SendCommandUseCase>(commandTypes.SendCommandUseCase)\n .execute(args);\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n args: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n return this.container\n .get<ExecuteDeviceActionUseCase>(\n deviceActionTypes.ExecuteDeviceActionUseCase,\n )\n .execute(args);\n }\n\n /**\n * Gets the connected from its device session ID.\n *\n * @param {GetConnectedDeviceUseCaseArgs} args - The device session ID.\n * @returns {ConnectedDevice} The connected device.\n */\n getConnectedDevice(args: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n return this.container\n .get<GetConnectedDeviceUseCase>(discoveryTypes.GetConnectedDeviceUseCase)\n .execute(args);\n }\n\n /**\n * Gets the device state of a session.\n *\n * @param {{ sessionId: DeviceSessionId }} args - The device session ID.\n * @returns {Observable<DeviceSessionState>} An observable of the session device state.\n */\n getDeviceSessionState(args: {\n sessionId: DeviceSessionId;\n }): Observable<DeviceSessionState> {\n return this.container\n .get<GetDeviceSessionStateUseCase>(\n deviceSessionTypes.GetDeviceSessionStateUseCase,\n )\n .execute(args);\n }\n\n /**\n * Close the Device Management kit.\n *\n */\n close() {\n return this.container\n .get<CloseSessionsUseCase>(deviceSessionTypes.CloseSessionsUseCase)\n .execute();\n }\n\n /**\n * Lists all connected devices.\n *\n * @returns {ConnectedDevice[]} The list of device sessions.\n */\n listConnectedDevices(): ConnectedDevice[] {\n return this.container\n .get<ListConnectedDevicesUseCase>(\n discoveryTypes.ListConnectedDevicesUseCase,\n )\n .execute();\n }\n\n /**\n * Listen to connected device.\n *\n * @returns {Observable<ConnectedDevice>} An observable of connected device.\n */\n listenToConnectedDevice(): Observable<ConnectedDevice> {\n return this.container\n .get<ListenToConnectedDeviceUseCase>(\n discoveryTypes.ListenToConnectedDeviceUseCase,\n )\n .execute();\n }\n\n /**\n * Disable the device session refresher.\n *\n * @param {DisableDeviceSessionRefresherUseCaseArgs} args - The device session ID and a string to identify the blocker.\n * @returns {() => void} A function to reenable the device session refresher.\n */\n disableDeviceSessionRefresher(args: {\n sessionId: DeviceSessionId;\n blockerId: string;\n }): () => void {\n return this.container\n .get<DisableDeviceSessionRefresherUseCase>(\n deviceSessionTypes.DisableDeviceSessionRefresherUseCase,\n )\n .execute(args);\n }\n /**\n * Sets the provider for the manager API.\n *\n * @param {number} provider - The provider to set.\n */\n setProvider(provider: number): void {\n return this.container\n .get<SetProviderUseCase>(managerApiTypes.SetProviderUseCase)\n .execute(provider);\n }\n\n /**\n * Returns the current provider value from the manager API data source.\n */\n getProvider(): number {\n return this.container\n .get<ManagerApiDataSource>(managerApiTypes.ManagerApiDataSource)\n .getProvider();\n }\n\n /**\n * Check if the current environment is supported by any transport.\n */\n isEnvironmentSupported(): boolean {\n return this.container\n .get<TransportService>(transportDiTypes.TransportService)\n .getAllTransports()\n .some((transport) => transport.isSupported());\n }\n}\n"],
5
- "mappings": "AAGA,OAAS,gBAAAA,MAAoB,+BAsB7B,OAAS,eAAAC,MAAmB,kCAE5B,OAAS,sBAAAC,MAA0B,iDAGnC,OAAS,kBAAAC,MAAsB,wCAa/B,OAAS,mBAAAC,MAAuB,2CAEhC,OAAS,aAAAC,MAAiB,8BAE1B,OAAS,oBAAAC,MAAwB,0CAEjC,OAAS,iBAAAC,MAA8C,eAMvD,OAAS,qBAAAC,MAAyB,uCAS3B,MAAMC,CAAoB,CACtB,UAET,YAAY,CACV,KAAAC,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,EAAiC,CAAC,EAAG,CAInC,KAAK,UAAYN,EAAc,CAC7B,KAAAG,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,CAAC,CACH,CAKA,YAA8B,CAC5B,OAAO,KAAK,UACT,IAA0BZ,EAAY,oBAAoB,EAC1D,cAAc,CACnB,CAWA,iBACEa,EAC8B,CAC9B,OAAO,KAAK,UACT,IAA6BX,EAAe,uBAAuB,EACnE,QAAQW,CAAI,CACjB,CAKA,iBAAkB,CAChB,OAAO,KAAK,UACT,IAA4BX,EAAe,sBAAsB,EACjE,QAAQ,CACb,CAOA,yBACEW,EACgC,CAChC,OAAO,KAAK,UACT,IACCX,EAAe,+BACjB,EACC,QAAQW,CAAI,CACjB,CAiBA,QAAQA,EAAoD,CAC1D,OAAO,KAAK,UACT,IAAoBX,EAAe,cAAc,EACjD,QAAQW,CAAI,CACjB,CAOA,WAAWA,EAA4C,CACrD,OAAO,KAAK,UACT,IAAuBX,EAAe,iBAAiB,EACvD,QAAQW,CAAI,CACjB,CAOA,SAASA,EAAkD,CACzD,OAAO,KAAK,UACT,IAAqBT,EAAU,eAAe,EAC9C,QAAQS,CAAI,CACjB,CAQA,YACEA,EAC8C,CAC9C,OAAO,KAAK,UACT,IAAwBd,EAAa,kBAAkB,EACvD,QAAQc,CAAI,CACjB,CAEA,oBAMEA,EAMiE,CACjE,OAAO,KAAK,UACT,IACCN,EAAkB,0BACpB,EACC,QAAQM,CAAI,CACjB,CAQA,mBAAmBA,EAAsD,CACvE,OAAO,KAAK,UACT,IAA+BX,EAAe,yBAAyB,EACvE,QAAQW,CAAI,CACjB,CAQA,sBAAsBA,EAEa,CACjC,OAAO,KAAK,UACT,IACCZ,EAAmB,4BACrB,EACC,QAAQY,CAAI,CACjB,CAMA,OAAQ,CACN,OAAO,KAAK,UACT,IAA0BZ,EAAmB,oBAAoB,EACjE,QAAQ,CACb,CAOA,sBAA0C,CACxC,OAAO,KAAK,UACT,IACCC,EAAe,2BACjB,EACC,QAAQ,CACb,CAOA,yBAAuD,CACrD,OAAO,KAAK,UACT,IACCA,EAAe,8BACjB,EACC,QAAQ,CACb,CAQA,8BAA8BW,EAGf,CACb,OAAO,KAAK,UACT,IACCZ,EAAmB,oCACrB,EACC,QAAQY,CAAI,CACjB,CAMA,YAAYC,EAAwB,CAClC,OAAO,KAAK,UACT,IAAwBX,EAAgB,kBAAkB,EAC1D,QAAQW,CAAQ,CACrB,CAKA,aAAsB,CACpB,OAAO,KAAK,UACT,IAA0BX,EAAgB,oBAAoB,EAC9D,YAAY,CACjB,CAKA,wBAAkC,CAChC,OAAO,KAAK,UACT,IAAsBE,EAAiB,gBAAgB,EACvD,iBAAiB,EACjB,KAAMU,GAAcA,EAAU,YAAY,CAAC,CAChD,CACF",
4
+ "sourcesContent": ["import { type Container } from \"inversify\";\nimport { type Observable } from \"rxjs\";\n\nimport { commandTypes } from \"@api/command/di/commandTypes\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport {\n type SendCommandUseCase,\n type SendCommandUseCaseArgs,\n} from \"@api/command/use-case/SendCommandUseCase\";\nimport {\n type ExecuteDeviceActionUseCase,\n type ExecuteDeviceActionUseCaseArgs,\n} from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport {\n type ConnectUseCaseArgs,\n type DisconnectUseCaseArgs,\n type DiscoveredDevice,\n type GetConnectedDeviceUseCaseArgs,\n type SendApduUseCaseArgs,\n type StartDiscoveringUseCaseArgs,\n} from \"@api/types\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { type GetDmkVersionUseCase } from \"@internal/config/use-case/GetDmkVersionUseCase\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { type CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { type GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { type ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { type DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { type GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { type ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport {\n type ListenToAvailableDevicesUseCase,\n type ListenToAvailableDevicesUseCaseArgs,\n} from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { type ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport {\n type ReconnectUseCase,\n type ReconnectUseCaseArgs,\n} from \"@internal/discovery/use-case/ReconnectUseCase\";\nimport type { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport type { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { type SetProviderUseCase } from \"@internal/manager-api/use-case/SetProviderUseCase\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport { type SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\nimport { makeContainer, type MakeContainerProps } from \"@root/src/di\";\n\nimport {\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"./device-action/DeviceAction\";\nimport { deviceActionTypes } from \"./device-action/di/deviceActionTypes\";\nimport { type DisableDeviceSessionRefresherUseCase } from \"./device-session/use-case/DisableDeviceSessionRefresher\";\nimport { type DmkError } from \"./Error\";\n\n/**\n * The main class to interact with the Device Management Kit.\n *\n * NB: do not instantiate this class directly, instead, use `LedgerDMKBuilder`.\n */\nexport class DeviceManagementKit {\n readonly container: Container;\n /** @internal */\n constructor({\n stub,\n transports,\n loggers,\n config,\n }: Partial<MakeContainerProps> = {}) {\n // NOTE: MakeContainerProps might not be the exact type here\n // For the init of the project this is sufficient, but we might need to\n // update the constructor arguments as we go (we might have more than just the container config)\n this.container = makeContainer({\n stub,\n transports,\n loggers,\n config,\n });\n }\n\n /**\n * Returns a promise resolving to the version of the SDK.\n */\n getVersion(): Promise<string> {\n return this.container\n .get<GetDmkVersionUseCase>(configTypes.GetDmkVersionUseCase)\n .getDmkVersion();\n }\n\n /**\n * Starts discovering devices connected.\n *\n * For the WeHID implementation, this use-case needs to be called as a result\n * of an user interaction (button \"click\" event for ex).\n *\n * @param {StartDiscoveringUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice>} An observable of discovered devices.\n */\n startDiscovering(\n args: StartDiscoveringUseCaseArgs,\n ): Observable<DiscoveredDevice> {\n return this.container\n .get<StartDiscoveringUseCase>(discoveryTypes.StartDiscoveringUseCase)\n .execute(args);\n }\n\n /**\n * Stops discovering devices connected.\n */\n stopDiscovering() {\n return this.container\n .get<StopDiscoveringUseCase>(discoveryTypes.StopDiscoveringUseCase)\n .execute();\n }\n\n /**\n * Listen to list of known discovered devices (and later BLE).\n * @param {ListenToAvailableDevicesUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice[]>} An observable of known discovered devices.\n */\n listenToAvailableDevices(\n args: ListenToAvailableDevicesUseCaseArgs,\n ): Observable<DiscoveredDevice[]> {\n return this.container\n .get<ListenToAvailableDevicesUseCase>(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n )\n .execute(args);\n }\n\n /**\n * Reconnects a device session by disconnecting and reconnecting to the device.\n *\n * @param args - The arguments for reconnecting the device session.\n * - `device`: The connected device.\n * - `sessionRefresherOptions` (optional): Configuration for session refreshing.\n * - `isRefresherDisabled`: Whether the refresher is disabled.\n * - `pollingInterval`: The refresh interval in milliseconds\n * @returns The session ID to use for further communication with the device.\n */\n async reconnect(args: ReconnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ReconnectUseCase>(discoveryTypes.ReconnectUseCase)\n .execute(args);\n }\n\n /**\n * Connects to a device previously discovered with `DeviceManagementKit.startDiscovering`.\n * Creates a new device session which:\n * - Represents the connection to the device.\n * - Is terminated upon disconnection of the device.\n * - Exposes the device state through an observable (see `DeviceManagementKit.getDeviceSessionState`)\n * - Should be used for all subsequent communication with the device.\n *\n * @param {ConnectUseCaseArgs} args - The arguments for connecting to the device.\n * - `device`: The discovered device obtained from `StartDiscoveringUseCase`.\n * - `sessionRefresherOptions` (optional): Configuration for session refreshing.\n * - `isRefresherDisabled`: Whether the refresher is disabled.\n * - `pollingInterval`: The refresh interval in milliseconds\n * @returns The session ID to use for further communication with the device.\n */\n connect(args: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ConnectUseCase>(discoveryTypes.ConnectUseCase)\n .execute(args);\n }\n\n /**\n * Disconnects to a discovered device.\n *\n * @param {DisconnectUseCaseArgs} args - The session ID to disconnect.\n */\n disconnect(args: DisconnectUseCaseArgs): Promise<void> {\n return this.container\n .get<DisconnectUseCase>(discoveryTypes.DisconnectUseCase)\n .execute(args);\n }\n\n /**\n * Sends an APDU command to a device through a device session.\n *\n * @param {SendApduUseCaseArgs} args - The device session ID and APDU command to send.\n */\n sendApdu(args: SendApduUseCaseArgs): Promise<ApduResponse> {\n return this.container\n .get<SendApduUseCase>(sendTypes.SendApduUseCase)\n .execute(args);\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param {SendCommandUseCaseArgs<Response, Args, ErrorCodes>} args - The device session ID, command, command error codes and command parameters to send.\n * @returns A promise resolving with the response from the command.\n */\n sendCommand<Response, Args, ErrorCodes>(\n args: SendCommandUseCaseArgs<Response, Args, ErrorCodes>,\n ): Promise<CommandResult<Response, ErrorCodes>> {\n return this.container\n .get<SendCommandUseCase>(commandTypes.SendCommandUseCase)\n .execute(args);\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n args: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n return this.container\n .get<ExecuteDeviceActionUseCase>(\n deviceActionTypes.ExecuteDeviceActionUseCase,\n )\n .execute(args);\n }\n\n /**\n * Gets the connected from its device session ID.\n *\n * @param {GetConnectedDeviceUseCaseArgs} args - The device session ID.\n * @returns {ConnectedDevice} The connected device.\n */\n getConnectedDevice(args: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n return this.container\n .get<GetConnectedDeviceUseCase>(discoveryTypes.GetConnectedDeviceUseCase)\n .execute(args);\n }\n\n /**\n * Gets the device state of a session.\n *\n * @param {{ sessionId: DeviceSessionId }} args - The device session ID.\n * @returns {Observable<DeviceSessionState>} An observable of the session device state.\n */\n getDeviceSessionState(args: {\n sessionId: DeviceSessionId;\n }): Observable<DeviceSessionState> {\n return this.container\n .get<GetDeviceSessionStateUseCase>(\n deviceSessionTypes.GetDeviceSessionStateUseCase,\n )\n .execute(args);\n }\n\n /**\n * Close the Device Management kit.\n *\n */\n close() {\n return this.container\n .get<CloseSessionsUseCase>(deviceSessionTypes.CloseSessionsUseCase)\n .execute();\n }\n\n /**\n * Lists all connected devices.\n *\n * @returns {ConnectedDevice[]} The list of device sessions.\n */\n listConnectedDevices(): ConnectedDevice[] {\n return this.container\n .get<ListConnectedDevicesUseCase>(\n discoveryTypes.ListConnectedDevicesUseCase,\n )\n .execute();\n }\n\n /**\n * Listen to connected device.\n *\n * @returns {Observable<ConnectedDevice>} An observable of connected device.\n */\n listenToConnectedDevice(): Observable<ConnectedDevice> {\n return this.container\n .get<ListenToConnectedDeviceUseCase>(\n discoveryTypes.ListenToConnectedDeviceUseCase,\n )\n .execute();\n }\n\n /**\n * Disable the device session refresher.\n *\n * @param {DisableDeviceSessionRefresherUseCaseArgs} args - The device session ID and a string to identify the blocker.\n * @returns {() => void} A function to reenable the device session refresher.\n */\n disableDeviceSessionRefresher(args: {\n sessionId: DeviceSessionId;\n blockerId: string;\n }): () => void {\n return this.container\n .get<DisableDeviceSessionRefresherUseCase>(\n deviceSessionTypes.DisableDeviceSessionRefresherUseCase,\n )\n .execute(args);\n }\n /**\n * Sets the provider for the manager API.\n *\n * @param {number} provider - The provider to set.\n */\n setProvider(provider: number): void {\n return this.container\n .get<SetProviderUseCase>(managerApiTypes.SetProviderUseCase)\n .execute(provider);\n }\n\n /**\n * Returns the current provider value from the manager API data source.\n */\n getProvider(): number {\n return this.container\n .get<ManagerApiDataSource>(managerApiTypes.ManagerApiDataSource)\n .getProvider();\n }\n\n /**\n * Check if the current environment is supported by any transport.\n */\n isEnvironmentSupported(): boolean {\n return this.container\n .get<TransportService>(transportDiTypes.TransportService)\n .getAllTransports()\n .some((transport) => transport.isSupported());\n }\n}\n"],
5
+ "mappings": "AAGA,OAAS,gBAAAA,MAAoB,+BAsB7B,OAAS,eAAAC,MAAmB,kCAE5B,OAAS,sBAAAC,MAA0B,iDAGnC,OAAS,kBAAAC,MAAsB,wCAiB/B,OAAS,mBAAAC,MAAuB,2CAEhC,OAAS,aAAAC,MAAiB,8BAE1B,OAAS,oBAAAC,MAAwB,0CAEjC,OAAS,iBAAAC,MAA8C,eAMvD,OAAS,qBAAAC,MAAyB,uCAS3B,MAAMC,CAAoB,CACtB,UAET,YAAY,CACV,KAAAC,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,EAAiC,CAAC,EAAG,CAInC,KAAK,UAAYN,EAAc,CAC7B,KAAAG,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,CAAC,CACH,CAKA,YAA8B,CAC5B,OAAO,KAAK,UACT,IAA0BZ,EAAY,oBAAoB,EAC1D,cAAc,CACnB,CAWA,iBACEa,EAC8B,CAC9B,OAAO,KAAK,UACT,IAA6BX,EAAe,uBAAuB,EACnE,QAAQW,CAAI,CACjB,CAKA,iBAAkB,CAChB,OAAO,KAAK,UACT,IAA4BX,EAAe,sBAAsB,EACjE,QAAQ,CACb,CAOA,yBACEW,EACgC,CAChC,OAAO,KAAK,UACT,IACCX,EAAe,+BACjB,EACC,QAAQW,CAAI,CACjB,CAYA,MAAM,UAAUA,EAAsD,CACpE,OAAO,KAAK,UACT,IAAsBX,EAAe,gBAAgB,EACrD,QAAQW,CAAI,CACjB,CAiBA,QAAQA,EAAoD,CAC1D,OAAO,KAAK,UACT,IAAoBX,EAAe,cAAc,EACjD,QAAQW,CAAI,CACjB,CAOA,WAAWA,EAA4C,CACrD,OAAO,KAAK,UACT,IAAuBX,EAAe,iBAAiB,EACvD,QAAQW,CAAI,CACjB,CAOA,SAASA,EAAkD,CACzD,OAAO,KAAK,UACT,IAAqBT,EAAU,eAAe,EAC9C,QAAQS,CAAI,CACjB,CAQA,YACEA,EAC8C,CAC9C,OAAO,KAAK,UACT,IAAwBd,EAAa,kBAAkB,EACvD,QAAQc,CAAI,CACjB,CAEA,oBAMEA,EAMiE,CACjE,OAAO,KAAK,UACT,IACCN,EAAkB,0BACpB,EACC,QAAQM,CAAI,CACjB,CAQA,mBAAmBA,EAAsD,CACvE,OAAO,KAAK,UACT,IAA+BX,EAAe,yBAAyB,EACvE,QAAQW,CAAI,CACjB,CAQA,sBAAsBA,EAEa,CACjC,OAAO,KAAK,UACT,IACCZ,EAAmB,4BACrB,EACC,QAAQY,CAAI,CACjB,CAMA,OAAQ,CACN,OAAO,KAAK,UACT,IAA0BZ,EAAmB,oBAAoB,EACjE,QAAQ,CACb,CAOA,sBAA0C,CACxC,OAAO,KAAK,UACT,IACCC,EAAe,2BACjB,EACC,QAAQ,CACb,CAOA,yBAAuD,CACrD,OAAO,KAAK,UACT,IACCA,EAAe,8BACjB,EACC,QAAQ,CACb,CAQA,8BAA8BW,EAGf,CACb,OAAO,KAAK,UACT,IACCZ,EAAmB,oCACrB,EACC,QAAQY,CAAI,CACjB,CAMA,YAAYC,EAAwB,CAClC,OAAO,KAAK,UACT,IAAwBX,EAAgB,kBAAkB,EAC1D,QAAQW,CAAQ,CACrB,CAKA,aAAsB,CACpB,OAAO,KAAK,UACT,IAA0BX,EAAgB,oBAAoB,EAC9D,YAAY,CACjB,CAKA,wBAAkC,CAChC,OAAO,KAAK,UACT,IAAsBE,EAAiB,gBAAgB,EACvD,iBAAiB,EACjB,KAAMU,GAAcA,EAAU,YAAY,CAAC,CAChD,CACF",
6
6
  "names": ["commandTypes", "configTypes", "deviceSessionTypes", "discoveryTypes", "managerApiTypes", "sendTypes", "transportDiTypes", "makeContainer", "deviceActionTypes", "DeviceManagementKit", "stub", "transports", "loggers", "config", "args", "provider", "transport"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{StubLocalConfigDataSource as c}from"../internal/config/data/LocalConfigDataSource.stub";import{configTypes as p}from"../internal/config/di/configTypes";import{deviceSessionTypes as d}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as n}from"../internal/discovery/di/discoveryTypes";import{managerApiTypes as l}from"../internal/manager-api/di/managerApiTypes";import{sendTypes as u}from"../internal/send/di/sendTypes";import m from"../../package.json";import{StubUseCase as v}from"../../src/di.stub";import{commandTypes as f}from"./command/di/commandTypes";import{ConsoleLogger as h}from"./logger-subscriber/service/ConsoleLogger";import{DeviceManagementKit as r}from"./DeviceManagementKit";vi.mock("./logger-subscriber/service/ConsoleLogger");let e,a;describe("DeviceManagementKit",()=>{describe("clean",()=>{beforeEach(()=>{a=new h,e=new r({stub:!1,loggers:[a],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url",firmwareDistributionSalt:"salt"}})}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(r)}),it("should return a clean `version`",async()=>{expect(await e.getVersion()).toBe(m.version)}),it("should have startDiscovery method",()=>{expect(e.startDiscovering).toBeDefined()}),it("should have stopDiscovery method",()=>{expect(e.stopDiscovering).toBeDefined()}),it("should have connect method",()=>{expect(e.connect).toBeDefined()}),it("should have sendApdu method",()=>{expect(e.sendApdu).toBeDefined()}),it("should have getConnectedDevice method",()=>{expect(e.getConnectedDevice).toBeDefined()}),it("should have sendCommand method",()=>{expect(e.sendCommand).toBeDefined()}),it("should have listConnectedDevices method",()=>{expect(e.listConnectedDevices).toBeDefined()}),it("should have listenToConnectedDevice method",()=>{expect(e.listenToConnectedDevice).toBeDefined()}),it("should have disableDeviceSessionRefresher method",()=>{expect(e.disableDeviceSessionRefresher).toBeDefined()}),it("should have setProvider method",()=>{expect(e.setProvider).toBeDefined()}),it("should have isEnvironmentSupported method",()=>{expect(e.isEnvironmentSupported).toBeDefined()}),describe("isEnvironmentSupported",()=>{it("should return true when at least one transport is supported",()=>{const t={isSupported:vi.fn().mockReturnValue(!1)},o={isSupported:vi.fn().mockReturnValue(!0)},s={getAllTransports:vi.fn().mockReturnValue([t,o])};vi.spyOn(e.container,"get").mockReturnValue(s);const i=e.isEnvironmentSupported();expect(i).toBe(!0),expect(s.getAllTransports).toHaveBeenCalled(),expect(t.isSupported).toHaveBeenCalled(),expect(o.isSupported).toHaveBeenCalled()}),it("should return false when no transports are supported",()=>{const t={isSupported:vi.fn().mockReturnValue(!1)},o={isSupported:vi.fn().mockReturnValue(!1)},s={getAllTransports:vi.fn().mockReturnValue([t,o])};vi.spyOn(e.container,"get").mockReturnValue(s);const i=e.isEnvironmentSupported();expect(i).toBe(!1),expect(s.getAllTransports).toHaveBeenCalled(),expect(t.isSupported).toHaveBeenCalled(),expect(o.isSupported).toHaveBeenCalled()}),it("should return false when no transports are available",()=>{const t={getAllTransports:vi.fn().mockReturnValue([])};vi.spyOn(e.container,"get").mockReturnValue(t);const o=e.isEnvironmentSupported();expect(o).toBe(!1),expect(t.getAllTransports).toHaveBeenCalled()})})}),describe("stubbed",()=>{beforeEach(()=>{e=new r({stub:!0,loggers:[],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url",firmwareDistributionSalt:"salt"}})}),it("should create a stubbed dmk",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(r)}),it("should return a stubbed config",()=>{expect(e.container.get(p.LocalConfigDataSource)).toBeInstanceOf(c)}),it("should return a stubbed version",async()=>{expect(await e.getVersion()).toBe("0.0.0-stub.1")}),it.each([[n.StartDiscoveringUseCase],[n.StopDiscoveringUseCase],[n.ConnectUseCase],[u.SendApduUseCase],[f.SendCommandUseCase],[n.GetConnectedDeviceUseCase],[n.DisconnectUseCase],[d.GetDeviceSessionStateUseCase],[n.ListConnectedDevicesUseCase],[n.ListenToConnectedDeviceUseCase],[l.SetProviderUseCase]])("should have %s use case",t=>{const o=e.container.get(t);expect(o).toBeInstanceOf(v),expect(o.execute()).toBe("stub")})})});
1
+ import{StubLocalConfigDataSource as c}from"../internal/config/data/LocalConfigDataSource.stub";import{configTypes as p}from"../internal/config/di/configTypes";import{deviceSessionTypes as d}from"../internal/device-session/di/deviceSessionTypes";import{discoveryTypes as n}from"../internal/discovery/di/discoveryTypes";import{managerApiTypes as l}from"../internal/manager-api/di/managerApiTypes";import{sendTypes as u}from"../internal/send/di/sendTypes";import m from"../../package.json";import{StubUseCase as v}from"../../src/di.stub";import{commandTypes as f}from"./command/di/commandTypes";import{ConsoleLogger as h}from"./logger-subscriber/service/ConsoleLogger";import{DeviceManagementKit as r}from"./DeviceManagementKit";vi.mock("./logger-subscriber/service/ConsoleLogger");let e,a;describe("DeviceManagementKit",()=>{describe("clean",()=>{beforeEach(()=>{a=new h,e=new r({stub:!1,loggers:[a],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url",firmwareDistributionSalt:"salt"}})}),it("should create an instance",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(r)}),it("should return a clean `version`",async()=>{expect(await e.getVersion()).toBe(m.version)}),it("should have startDiscovery method",()=>{expect(e.startDiscovering).toBeDefined()}),it("should have stopDiscovery method",()=>{expect(e.stopDiscovering).toBeDefined()}),it("should have connect method",()=>{expect(e.connect).toBeDefined()}),it("should have reconnect method",()=>{expect(e.reconnect).toBeDefined()}),it("should have sendApdu method",()=>{expect(e.sendApdu).toBeDefined()}),it("should have getConnectedDevice method",()=>{expect(e.getConnectedDevice).toBeDefined()}),it("should have sendCommand method",()=>{expect(e.sendCommand).toBeDefined()}),it("should have listConnectedDevices method",()=>{expect(e.listConnectedDevices).toBeDefined()}),it("should have listenToConnectedDevice method",()=>{expect(e.listenToConnectedDevice).toBeDefined()}),it("should have disableDeviceSessionRefresher method",()=>{expect(e.disableDeviceSessionRefresher).toBeDefined()}),it("should have setProvider method",()=>{expect(e.setProvider).toBeDefined()}),it("should have isEnvironmentSupported method",()=>{expect(e.isEnvironmentSupported).toBeDefined()}),describe("isEnvironmentSupported",()=>{it("should return true when at least one transport is supported",()=>{const t={isSupported:vi.fn().mockReturnValue(!1)},o={isSupported:vi.fn().mockReturnValue(!0)},s={getAllTransports:vi.fn().mockReturnValue([t,o])};vi.spyOn(e.container,"get").mockReturnValue(s);const i=e.isEnvironmentSupported();expect(i).toBe(!0),expect(s.getAllTransports).toHaveBeenCalled(),expect(t.isSupported).toHaveBeenCalled(),expect(o.isSupported).toHaveBeenCalled()}),it("should return false when no transports are supported",()=>{const t={isSupported:vi.fn().mockReturnValue(!1)},o={isSupported:vi.fn().mockReturnValue(!1)},s={getAllTransports:vi.fn().mockReturnValue([t,o])};vi.spyOn(e.container,"get").mockReturnValue(s);const i=e.isEnvironmentSupported();expect(i).toBe(!1),expect(s.getAllTransports).toHaveBeenCalled(),expect(t.isSupported).toHaveBeenCalled(),expect(o.isSupported).toHaveBeenCalled()}),it("should return false when no transports are available",()=>{const t={getAllTransports:vi.fn().mockReturnValue([])};vi.spyOn(e.container,"get").mockReturnValue(t);const o=e.isEnvironmentSupported();expect(o).toBe(!1),expect(t.getAllTransports).toHaveBeenCalled()})})}),describe("stubbed",()=>{beforeEach(()=>{e=new r({stub:!0,loggers:[],config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url",webSocketUrl:"http://fake-websocket.url",firmwareDistributionSalt:"salt"}})}),it("should create a stubbed dmk",()=>{expect(e).toBeDefined(),expect(e).toBeInstanceOf(r)}),it("should return a stubbed config",()=>{expect(e.container.get(p.LocalConfigDataSource)).toBeInstanceOf(c)}),it("should return a stubbed version",async()=>{expect(await e.getVersion()).toBe("0.0.0-stub.1")}),it.each([[n.StartDiscoveringUseCase],[n.StopDiscoveringUseCase],[n.ConnectUseCase],[u.SendApduUseCase],[f.SendCommandUseCase],[n.GetConnectedDeviceUseCase],[n.DisconnectUseCase],[d.GetDeviceSessionStateUseCase],[n.ListConnectedDevicesUseCase],[n.ListenToConnectedDeviceUseCase],[l.SetProviderUseCase]])("should have %s use case",t=>{const o=e.container.get(t);expect(o).toBeInstanceOf(v),expect(o.execute()).toBe("stub")})})});
2
2
  //# sourceMappingURL=DeviceManagementKit.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/DeviceManagementKit.test.ts"],
4
- "sourcesContent": ["import { type ServiceIdentifier } from \"inversify\";\n\nimport { type LocalConfigDataSource } from \"@internal/config/data/ConfigDataSource\";\nimport { StubLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource.stub\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport pkg from \"@root/package.json\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { commandTypes } from \"./command/di/commandTypes\";\nimport { ConsoleLogger } from \"./logger-subscriber/service/ConsoleLogger\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\nimport { type DmkConfig } from \"./DmkConfig\";\n\nvi.mock(\"./logger-subscriber/service/ConsoleLogger\");\n\nlet dmk: DeviceManagementKit;\nlet logger: ConsoleLogger;\ndescribe(\"DeviceManagementKit\", () => {\n describe(\"clean\", () => {\n beforeEach(() => {\n logger = new ConsoleLogger();\n dmk = new DeviceManagementKit({\n stub: false,\n loggers: [logger],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n firmwareDistributionSalt: \"salt\",\n } as DmkConfig,\n });\n });\n\n it(\"should create an instance\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a clean `version`\", async () => {\n expect(await dmk.getVersion()).toBe(pkg.version);\n });\n\n it(\"should have startDiscovery method\", () => {\n expect(dmk.startDiscovering).toBeDefined();\n });\n\n it(\"should have stopDiscovery method\", () => {\n expect(dmk.stopDiscovering).toBeDefined();\n });\n\n it(\"should have connect method\", () => {\n expect(dmk.connect).toBeDefined();\n });\n\n it(\"should have sendApdu method\", () => {\n expect(dmk.sendApdu).toBeDefined();\n });\n\n it(\"should have getConnectedDevice method\", () => {\n expect(dmk.getConnectedDevice).toBeDefined();\n });\n\n it(\"should have sendCommand method\", () => {\n expect(dmk.sendCommand).toBeDefined();\n });\n\n it(\"should have listConnectedDevices method\", () => {\n expect(dmk.listConnectedDevices).toBeDefined();\n });\n\n it(\"should have listenToConnectedDevice method\", () => {\n expect(dmk.listenToConnectedDevice).toBeDefined();\n });\n\n it(\"should have disableDeviceSessionRefresher method\", () => {\n expect(dmk.disableDeviceSessionRefresher).toBeDefined();\n });\n\n it(\"should have setProvider method\", () => {\n expect(dmk.setProvider).toBeDefined();\n });\n\n it(\"should have isEnvironmentSupported method\", () => {\n expect(dmk.isEnvironmentSupported).toBeDefined();\n });\n\n describe(\"isEnvironmentSupported\", () => {\n it(\"should return true when at least one transport is supported\", () => {\n // Mock the TransportService to return transports where at least one is supported\n const mockTransport1 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransport2 = {\n isSupported: vi.fn().mockReturnValue(true),\n };\n const mockTransportService = {\n getAllTransports: vi\n .fn()\n .mockReturnValue([mockTransport1, mockTransport2]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(true);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n expect(mockTransport1.isSupported).toHaveBeenCalled();\n expect(mockTransport2.isSupported).toHaveBeenCalled();\n });\n\n it(\"should return false when no transports are supported\", () => {\n // Mock the TransportService to return transports where none are supported\n const mockTransport1 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransport2 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransportService = {\n getAllTransports: vi\n .fn()\n .mockReturnValue([mockTransport1, mockTransport2]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(false);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n expect(mockTransport1.isSupported).toHaveBeenCalled();\n expect(mockTransport2.isSupported).toHaveBeenCalled();\n });\n\n it(\"should return false when no transports are available\", () => {\n // Mock the TransportService to return an empty array\n const mockTransportService = {\n getAllTransports: vi.fn().mockReturnValue([]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(false);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n });\n });\n });\n\n describe(\"stubbed\", () => {\n beforeEach(() => {\n dmk = new DeviceManagementKit({\n stub: true,\n loggers: [],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n firmwareDistributionSalt: \"salt\",\n } as DmkConfig,\n });\n });\n\n it(\"should create a stubbed dmk\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a stubbed config\", () => {\n expect(\n dmk.container.get<LocalConfigDataSource>(\n configTypes.LocalConfigDataSource,\n ),\n ).toBeInstanceOf(StubLocalConfigDataSource);\n });\n\n it(\"should return a stubbed version\", async () => {\n expect(await dmk.getVersion()).toBe(\"0.0.0-stub.1\");\n });\n\n it.each([\n [discoveryTypes.StartDiscoveringUseCase],\n [discoveryTypes.StopDiscoveringUseCase],\n [discoveryTypes.ConnectUseCase],\n [sendTypes.SendApduUseCase],\n [commandTypes.SendCommandUseCase],\n [discoveryTypes.GetConnectedDeviceUseCase],\n [discoveryTypes.DisconnectUseCase],\n [deviceSessionTypes.GetDeviceSessionStateUseCase],\n [discoveryTypes.ListConnectedDevicesUseCase],\n [discoveryTypes.ListenToConnectedDeviceUseCase],\n [managerApiTypes.SetProviderUseCase],\n ])(\n \"should have %s use case\",\n (diSymbol: ServiceIdentifier<StubUseCase>) => {\n const uc = dmk.container.get<StubUseCase>(diSymbol);\n expect(uc).toBeInstanceOf(StubUseCase);\n expect(uc.execute()).toBe(\"stub\");\n },\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type ServiceIdentifier } from \"inversify\";\n\nimport { type LocalConfigDataSource } from \"@internal/config/data/ConfigDataSource\";\nimport { StubLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource.stub\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport pkg from \"@root/package.json\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { commandTypes } from \"./command/di/commandTypes\";\nimport { ConsoleLogger } from \"./logger-subscriber/service/ConsoleLogger\";\nimport { DeviceManagementKit } from \"./DeviceManagementKit\";\nimport { type DmkConfig } from \"./DmkConfig\";\n\nvi.mock(\"./logger-subscriber/service/ConsoleLogger\");\n\nlet dmk: DeviceManagementKit;\nlet logger: ConsoleLogger;\ndescribe(\"DeviceManagementKit\", () => {\n describe(\"clean\", () => {\n beforeEach(() => {\n logger = new ConsoleLogger();\n dmk = new DeviceManagementKit({\n stub: false,\n loggers: [logger],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n firmwareDistributionSalt: \"salt\",\n } as DmkConfig,\n });\n });\n\n it(\"should create an instance\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a clean `version`\", async () => {\n expect(await dmk.getVersion()).toBe(pkg.version);\n });\n\n it(\"should have startDiscovery method\", () => {\n expect(dmk.startDiscovering).toBeDefined();\n });\n\n it(\"should have stopDiscovery method\", () => {\n expect(dmk.stopDiscovering).toBeDefined();\n });\n\n it(\"should have connect method\", () => {\n expect(dmk.connect).toBeDefined();\n });\n\n it(\"should have reconnect method\", () => {\n expect(dmk.reconnect).toBeDefined();\n });\n\n it(\"should have sendApdu method\", () => {\n expect(dmk.sendApdu).toBeDefined();\n });\n\n it(\"should have getConnectedDevice method\", () => {\n expect(dmk.getConnectedDevice).toBeDefined();\n });\n\n it(\"should have sendCommand method\", () => {\n expect(dmk.sendCommand).toBeDefined();\n });\n\n it(\"should have listConnectedDevices method\", () => {\n expect(dmk.listConnectedDevices).toBeDefined();\n });\n\n it(\"should have listenToConnectedDevice method\", () => {\n expect(dmk.listenToConnectedDevice).toBeDefined();\n });\n\n it(\"should have disableDeviceSessionRefresher method\", () => {\n expect(dmk.disableDeviceSessionRefresher).toBeDefined();\n });\n\n it(\"should have setProvider method\", () => {\n expect(dmk.setProvider).toBeDefined();\n });\n\n it(\"should have isEnvironmentSupported method\", () => {\n expect(dmk.isEnvironmentSupported).toBeDefined();\n });\n\n describe(\"isEnvironmentSupported\", () => {\n it(\"should return true when at least one transport is supported\", () => {\n // Mock the TransportService to return transports where at least one is supported\n const mockTransport1 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransport2 = {\n isSupported: vi.fn().mockReturnValue(true),\n };\n const mockTransportService = {\n getAllTransports: vi\n .fn()\n .mockReturnValue([mockTransport1, mockTransport2]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(true);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n expect(mockTransport1.isSupported).toHaveBeenCalled();\n expect(mockTransport2.isSupported).toHaveBeenCalled();\n });\n\n it(\"should return false when no transports are supported\", () => {\n // Mock the TransportService to return transports where none are supported\n const mockTransport1 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransport2 = {\n isSupported: vi.fn().mockReturnValue(false),\n };\n const mockTransportService = {\n getAllTransports: vi\n .fn()\n .mockReturnValue([mockTransport1, mockTransport2]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(false);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n expect(mockTransport1.isSupported).toHaveBeenCalled();\n expect(mockTransport2.isSupported).toHaveBeenCalled();\n });\n\n it(\"should return false when no transports are available\", () => {\n // Mock the TransportService to return an empty array\n const mockTransportService = {\n getAllTransports: vi.fn().mockReturnValue([]),\n };\n\n // Mock the container to return our mock TransportService\n vi.spyOn(dmk.container, \"get\").mockReturnValue(mockTransportService);\n\n const result = dmk.isEnvironmentSupported();\n\n expect(result).toBe(false);\n expect(mockTransportService.getAllTransports).toHaveBeenCalled();\n });\n });\n });\n\n describe(\"stubbed\", () => {\n beforeEach(() => {\n dmk = new DeviceManagementKit({\n stub: true,\n loggers: [],\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n webSocketUrl: \"http://fake-websocket.url\",\n firmwareDistributionSalt: \"salt\",\n } as DmkConfig,\n });\n });\n\n it(\"should create a stubbed dmk\", () => {\n expect(dmk).toBeDefined();\n expect(dmk).toBeInstanceOf(DeviceManagementKit);\n });\n\n it(\"should return a stubbed config\", () => {\n expect(\n dmk.container.get<LocalConfigDataSource>(\n configTypes.LocalConfigDataSource,\n ),\n ).toBeInstanceOf(StubLocalConfigDataSource);\n });\n\n it(\"should return a stubbed version\", async () => {\n expect(await dmk.getVersion()).toBe(\"0.0.0-stub.1\");\n });\n\n it.each([\n [discoveryTypes.StartDiscoveringUseCase],\n [discoveryTypes.StopDiscoveringUseCase],\n [discoveryTypes.ConnectUseCase],\n [sendTypes.SendApduUseCase],\n [commandTypes.SendCommandUseCase],\n [discoveryTypes.GetConnectedDeviceUseCase],\n [discoveryTypes.DisconnectUseCase],\n [deviceSessionTypes.GetDeviceSessionStateUseCase],\n [discoveryTypes.ListConnectedDevicesUseCase],\n [discoveryTypes.ListenToConnectedDeviceUseCase],\n [managerApiTypes.SetProviderUseCase],\n ])(\n \"should have %s use case\",\n (diSymbol: ServiceIdentifier<StubUseCase>) => {\n const uc = dmk.container.get<StubUseCase>(diSymbol);\n expect(uc).toBeInstanceOf(StubUseCase);\n expect(uc.execute()).toBe(\"stub\");\n },\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["StubLocalConfigDataSource", "configTypes", "deviceSessionTypes", "discoveryTypes", "managerApiTypes", "sendTypes", "pkg", "StubUseCase", "commandTypes", "ConsoleLogger", "DeviceManagementKit", "dmk", "logger", "mockTransport1", "mockTransport2", "mockTransportService", "result", "diSymbol", "uc"]
7
7
  }
@@ -1,2 +1,2 @@
1
- class t{_tag="InvalidStatusWordError";originalError;constructor(r){this.originalError=new Error(r??"Invalid status word.")}}class a{_tag="InvalidBatteryStatusTypeError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery status type.")}}class n{_tag="InvalidBatteryDataError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery data.")}}class i{_tag="InvalidBatteryFlagsError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery flags.")}}class e{_tag="InvalidResponseFormatError";originalError;constructor(r){this.originalError=new Error(r??"Invalid response format.")}}export{n as InvalidBatteryDataError,i as InvalidBatteryFlagsError,a as InvalidBatteryStatusTypeError,e as InvalidResponseFormatError,t as InvalidStatusWordError};
1
+ class a{_tag="InvalidStatusWordError";originalError;constructor(r){this.originalError=new Error(r??"Invalid status word.")}}class t{_tag="InvalidBatteryStatusTypeError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery status type.")}}class n{_tag="InvalidBatteryDataError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery data.")}}class e{_tag="InvalidBatteryFlagsError";originalError;constructor(r){this.originalError=new Error(r??"Invalid battery flags.")}}class i{_tag="InvalidResponseFormatError";originalError;constructor(r){this.originalError=new Error(r??"Invalid response format.")}}class s{_tag="InvalidGetFirmwareMetadataResponseError";originalError;constructor(r){this.originalError=new Error(r??"Invalid Firmware Metadata response error.")}}export{n as InvalidBatteryDataError,e as InvalidBatteryFlagsError,t as InvalidBatteryStatusTypeError,s as InvalidGetFirmwareMetadataResponseError,i as InvalidResponseFormatError,a as InvalidStatusWordError};
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/command/Errors.ts"],
4
- "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class InvalidStatusWordError implements DmkError {\n readonly _tag = \"InvalidStatusWordError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid status word.\");\n }\n}\n\nexport class InvalidBatteryStatusTypeError implements DmkError {\n readonly _tag = \"InvalidBatteryStatusTypeError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery status type.\");\n }\n}\n\nexport class InvalidBatteryDataError implements DmkError {\n readonly _tag = \"InvalidBatteryDataError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery data.\");\n }\n}\n\nexport class InvalidBatteryFlagsError implements DmkError {\n readonly _tag = \"InvalidBatteryFlagsError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery flags.\");\n }\n}\n\nexport class InvalidResponseFormatError implements DmkError {\n readonly _tag = \"InvalidResponseFormatError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid response format.\");\n }\n}\n"],
5
- "mappings": "AAEO,MAAMA,CAA2C,CAC7C,KAAO,yBACP,cAET,YAAYC,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,sBAAsB,CAClE,CACF,CAEO,MAAMC,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYD,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,8BAA8B,CAC1E,CACF,CAEO,MAAME,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYF,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMG,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYH,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,wBAAwB,CACpE,CACF,CAEO,MAAMI,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYJ,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,0BAA0B,CACtE,CACF",
6
- "names": ["InvalidStatusWordError", "message", "InvalidBatteryStatusTypeError", "InvalidBatteryDataError", "InvalidBatteryFlagsError", "InvalidResponseFormatError"]
4
+ "sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class InvalidStatusWordError implements DmkError {\n readonly _tag = \"InvalidStatusWordError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid status word.\");\n }\n}\n\nexport class InvalidBatteryStatusTypeError implements DmkError {\n readonly _tag = \"InvalidBatteryStatusTypeError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery status type.\");\n }\n}\n\nexport class InvalidBatteryDataError implements DmkError {\n readonly _tag = \"InvalidBatteryDataError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery data.\");\n }\n}\n\nexport class InvalidBatteryFlagsError implements DmkError {\n readonly _tag = \"InvalidBatteryFlagsError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery flags.\");\n }\n}\n\nexport class InvalidResponseFormatError implements DmkError {\n readonly _tag = \"InvalidResponseFormatError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid response format.\");\n }\n}\n\nexport class InvalidGetFirmwareMetadataResponseError implements DmkError {\n readonly _tag = \"InvalidGetFirmwareMetadataResponseError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Invalid Firmware Metadata response error.\",\n );\n }\n}\n"],
5
+ "mappings": "AAEO,MAAMA,CAA2C,CAC7C,KAAO,yBACP,cAET,YAAYC,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,sBAAsB,CAClE,CACF,CAEO,MAAMC,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYD,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,8BAA8B,CAC1E,CACF,CAEO,MAAME,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYF,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMG,CAA6C,CAC/C,KAAO,2BACP,cAET,YAAYH,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,wBAAwB,CACpE,CACF,CAEO,MAAMI,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYJ,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,0BAA0B,CACtE,CACF,CAEO,MAAMK,CAA4D,CAC9D,KAAO,0CACP,cAET,YAAYL,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,2CACb,CACF,CACF",
6
+ "names": ["InvalidStatusWordError", "message", "InvalidBatteryStatusTypeError", "InvalidBatteryDataError", "InvalidBatteryFlagsError", "InvalidResponseFormatError", "InvalidGetFirmwareMetadataResponseError"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/command/model/CommandResult.ts"],
4
- "sourcesContent": ["import {\n type InvalidBatteryDataError,\n type InvalidBatteryStatusTypeError,\n type InvalidResponseFormatError,\n type InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport { type GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport {\n type DeviceExchangeError,\n type UnknownDeviceExchangeError,\n} from \"@api/Error\";\n\nexport enum CommandResultStatus {\n Error = \"ERROR\",\n Success = \"SUCCESS\",\n}\nexport type CommandSuccessResult<Data> = {\n status: CommandResultStatus.Success;\n data: Data;\n};\nexport type CommandErrorResult<SpecificErrorCodes = void> = {\n error:\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n status: CommandResultStatus.Error;\n};\nexport type CommandResult<Data, SpecificErrorCodes = void> =\n | CommandSuccessResult<Data>\n | CommandErrorResult<SpecificErrorCodes>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error:\n | DeviceExchangeError<SpecificErrorCodes>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error) {\n return {\n status: CommandResultStatus.Error,\n error,\n };\n }\n return {\n status: CommandResultStatus.Success,\n data,\n };\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return result.status === CommandResultStatus.Success;\n}\n"],
5
- "mappings": "AAYO,IAAKA,OACVA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAFAA,OAAA,IAsBL,SAASC,EAAsD,CACpE,KAAAC,EACA,MAAAC,CACF,EAWgD,CAC9C,OAAIA,EACK,CACL,OAAQ,QACR,MAAAA,CACF,EAEK,CACL,OAAQ,UACR,KAAAD,CACF,CACF,CAEO,SAASE,EACdC,EACsC,CACtC,OAAOA,EAAO,SAAW,SAC3B",
4
+ "sourcesContent": ["import {\n type InvalidBatteryDataError,\n type InvalidBatteryStatusTypeError,\n type InvalidGetFirmwareMetadataResponseError,\n type InvalidResponseFormatError,\n type InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport { type GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport {\n type DeviceExchangeError,\n type UnknownDeviceExchangeError,\n} from \"@api/Error\";\n\nexport enum CommandResultStatus {\n Error = \"ERROR\",\n Success = \"SUCCESS\",\n}\nexport type CommandSuccessResult<Data> = {\n status: CommandResultStatus.Success;\n data: Data;\n};\nexport type CommandErrorResult<SpecificErrorCodes = void> = {\n error:\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | InvalidGetFirmwareMetadataResponseError\n | UnknownDeviceExchangeError;\n status: CommandResultStatus.Error;\n};\nexport type CommandResult<Data, SpecificErrorCodes = void> =\n | CommandSuccessResult<Data>\n | CommandErrorResult<SpecificErrorCodes>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error:\n | DeviceExchangeError<SpecificErrorCodes>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | InvalidGetFirmwareMetadataResponseError\n | UnknownDeviceExchangeError;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error) {\n return {\n status: CommandResultStatus.Error,\n error,\n };\n }\n return {\n status: CommandResultStatus.Success,\n data,\n };\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return result.status === CommandResultStatus.Success;\n}\n"],
5
+ "mappings": "AAaO,IAAKA,OACVA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAFAA,OAAA,IAuBL,SAASC,EAAsD,CACpE,KAAAC,EACA,MAAAC,CACF,EAYgD,CAC9C,OAAIA,EACK,CACL,OAAQ,QACR,MAAAA,CACF,EAEK,CACL,OAAQ,UACR,KAAAD,CACF,CACF,CAEO,SAASE,EACdC,EACsC,CACtC,OAAOA,EAAO,SAAW,SAC3B",
6
6
  "names": ["CommandResultStatus", "CommandResultFactory", "data", "error", "isSuccessCommandResult", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var p=(o=>(o.None="none",o.UnlockDevice="unlock-device",o.AllowSecureConnection="allow-secure-connection",o.ConfirmOpenApp="confirm-open-app",o.SignTransaction="sign-transaction",o.SignTypedData="sign-typed-data",o.AllowListApps="allow-list-apps",o.VerifyAddress="verify-address",o.SignPersonalMessage="sign-personal-message",o.SignDelegationAuthorization="sign-delegation-authorization",o.Web3ChecksOptIn="web3-checks-opt-in",o))(p||{});export{p as UserInteractionRequired};
1
+ var s=(p=>(p.None="none",p.UnlockDevice="unlock-device",p.AllowSecureConnection="allow-secure-connection",p.ConfirmOpenApp="confirm-open-app",p.SignTransaction="sign-transaction",p.SignTypedData="sign-typed-data",p.AllowListApps="allow-list-apps",p.VerifyAddress="verify-address",p.SignPersonalMessage="sign-personal-message",p.SignDelegationAuthorization="sign-delegation-authorization",p.Web3ChecksOptIn="web3-checks-opt-in",p.VerifySafeAddress="verify-safe-address",p))(s||{});export{s as UserInteractionRequired};
2
2
  //# sourceMappingURL=UserInteractionRequired.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/model/UserInteractionRequired.ts"],
4
- "sourcesContent": ["/**\n * The user interaction required on the device to move further in a device action.\n * This is used to inform the users about the action they need to take on the device.\n */\nexport enum UserInteractionRequired {\n None = \"none\",\n UnlockDevice = \"unlock-device\",\n AllowSecureConnection = \"allow-secure-connection\",\n ConfirmOpenApp = \"confirm-open-app\",\n SignTransaction = \"sign-transaction\",\n SignTypedData = \"sign-typed-data\",\n AllowListApps = \"allow-list-apps\",\n VerifyAddress = \"verify-address\",\n SignPersonalMessage = \"sign-personal-message\",\n SignDelegationAuthorization = \"sign-delegation-authorization\",\n Web3ChecksOptIn = \"web3-checks-opt-in\",\n}\n"],
5
- "mappings": "AAIO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,aAAe,gBACfA,EAAA,sBAAwB,0BACxBA,EAAA,eAAiB,mBACjBA,EAAA,gBAAkB,mBAClBA,EAAA,cAAgB,kBAChBA,EAAA,cAAgB,kBAChBA,EAAA,cAAgB,iBAChBA,EAAA,oBAAsB,wBACtBA,EAAA,4BAA8B,gCAC9BA,EAAA,gBAAkB,qBAXRA,OAAA",
4
+ "sourcesContent": ["/**\n * The user interaction required on the device to move further in a device action.\n * This is used to inform the users about the action they need to take on the device.\n */\nexport enum UserInteractionRequired {\n None = \"none\",\n UnlockDevice = \"unlock-device\",\n AllowSecureConnection = \"allow-secure-connection\",\n ConfirmOpenApp = \"confirm-open-app\",\n SignTransaction = \"sign-transaction\",\n SignTypedData = \"sign-typed-data\",\n AllowListApps = \"allow-list-apps\",\n VerifyAddress = \"verify-address\",\n SignPersonalMessage = \"sign-personal-message\",\n SignDelegationAuthorization = \"sign-delegation-authorization\",\n Web3ChecksOptIn = \"web3-checks-opt-in\",\n VerifySafeAddress = \"verify-safe-address\",\n}\n"],
5
+ "mappings": "AAIO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,aAAe,gBACfA,EAAA,sBAAwB,0BACxBA,EAAA,eAAiB,mBACjBA,EAAA,gBAAkB,mBAClBA,EAAA,cAAgB,kBAChBA,EAAA,cAAgB,kBAChBA,EAAA,cAAgB,iBAChBA,EAAA,oBAAsB,wBACtBA,EAAA,4BAA8B,gCAC9BA,EAAA,gBAAkB,qBAClBA,EAAA,kBAAoB,sBAZVA,OAAA",
6
6
  "names": ["UserInteractionRequired"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{InvalidStatusWordError as C}from"../../command/Errors";import{CommandResultFactory as c,isSuccessCommandResult as u}from"../../command/model/CommandResult";import{GetCustomImageSizeCommand as V}from"../../command/os/GetCustomImageSizeCommand";import{GetOsVersionCommand as F}from"../../command/os/GetOsVersionCommand";class x{constructor(e){this.api=e}async run(){const e=await this.api.sendCommand(new F);if(!u(e))return e;const m={mcu:e.data.mcuSephVersion,bootloader:e.data.mcuBootloaderVersion,os:e.data.seVersion,metadata:e.data},r=this.api.getManagerApiService(),n=await r.getDeviceVersion(e.data).chain(a=>r.getFirmwareVersion(e.data,a).map(i=>({deviceVersion:a,currentFirmware:i})));if(n.isLeft())return c({error:new C("Cannot fetch current firmware metadata")});const{deviceVersion:s,currentFirmware:o}=n.unsafeCoerce(),w=(await r.getLatestFirmwareVersion(o,s).chain(a=>r.getNextFirmwareVersion(a).chain(i=>r.getMcuList().map(t=>t.find(l=>l.name===m.mcu)).map(t=>t===void 0||!i.mcuVersions.includes(t.id)).map(t=>({osuFirmware:a,finalFirmware:i,mcuUpdateRequired:t}))))).caseOf({Right:a=>a,Left:a=>{}}),f={currentFirmware:o,availableUpdate:w};let d={};const p=await this.api.sendCommand(new V);return u(p)&&(d={size:p.data}),c({data:{deviceVersion:s,firmware:o,firmwareVersion:m,firmwareUpdateContext:f,customImage:d}})}}export{x as GetFirmwareMetadataTask};
1
+ import{InvalidGetFirmwareMetadataResponseError as F}from"../../command/Errors";import{CommandResultFactory as c,isSuccessCommandResult as u}from"../../command/model/CommandResult";import{GetCustomImageSizeCommand as V}from"../../command/os/GetCustomImageSizeCommand";import{GetOsVersionCommand as C}from"../../command/os/GetOsVersionCommand";class R{constructor(e){this.api=e}async run(){const e=await this.api.sendCommand(new C);if(!u(e))return e;const m={mcu:e.data.mcuSephVersion,bootloader:e.data.mcuBootloaderVersion,os:e.data.seVersion,metadata:e.data},r=this.api.getManagerApiService(),n=await r.getDeviceVersion(e.data).chain(a=>r.getFirmwareVersion(e.data,a).map(i=>({deviceVersion:a,currentFirmware:i})));if(n.isLeft())return c({error:new F});const{deviceVersion:s,currentFirmware:o}=n.unsafeCoerce(),w=(await r.getLatestFirmwareVersion(o,s).chain(a=>r.getNextFirmwareVersion(a).chain(i=>r.getMcuList().map(t=>t.find(l=>l.name===m.mcu)).map(t=>t===void 0||!i.mcuVersions.includes(t.id)).map(t=>({osuFirmware:a,finalFirmware:i,mcuUpdateRequired:t}))))).caseOf({Right:a=>a,Left:a=>{}}),f={currentFirmware:o,availableUpdate:w};let d={};const p=await this.api.sendCommand(new V);return u(p)&&(d={size:p.data}),c({data:{deviceVersion:s,firmware:o,firmwareVersion:m,firmwareUpdateContext:f,customImage:d}})}}export{R as GetFirmwareMetadataTask};
2
2
  //# sourceMappingURL=GetFirmwareMetadataTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/api/device-action/task/GetFirmwareMetadataTask.ts"],
4
- "sourcesContent": ["import { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { GetCustomImageSizeCommand } from \"@api/command/os/GetCustomImageSizeCommand\";\nimport { GetOsVersionCommand } from \"@api/command/os/GetOsVersionCommand\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type CustomImage,\n type FirmwareUpdate,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nexport type GetFirmwareMetadataTaskResult = CommandResult<{\n deviceVersion: DeviceVersion;\n firmware: FinalFirmware;\n firmwareVersion: FirmwareVersion;\n firmwareUpdateContext: FirmwareUpdateContext;\n customImage: CustomImage;\n}>;\n\nexport class GetFirmwareMetadataTask {\n constructor(private readonly api: InternalApi) {}\n\n async run(): Promise<GetFirmwareMetadataTaskResult> {\n // Get installed firmware metadata\n const osVersion = await this.api.sendCommand(new GetOsVersionCommand());\n if (!isSuccessCommandResult(osVersion)) {\n return osVersion;\n }\n const firmwareVersion: FirmwareVersion = {\n mcu: osVersion.data.mcuSephVersion,\n bootloader: osVersion.data.mcuBootloaderVersion,\n os: osVersion.data.seVersion,\n metadata: osVersion.data,\n };\n\n // Fetch current firmware metadata from app store\n const manager = this.api.getManagerApiService();\n const result = await manager\n .getDeviceVersion(osVersion.data)\n .chain((deviceVersion) =>\n manager\n .getFirmwareVersion(osVersion.data, deviceVersion)\n .map((currentFirmware) => ({ deviceVersion, currentFirmware })),\n );\n if (result.isLeft()) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Cannot fetch current firmware metadata\",\n ),\n });\n }\n const { deviceVersion, currentFirmware } = result.unsafeCoerce();\n\n // Fetch latest firmware available, if any\n const maybeUpdate = await manager\n .getLatestFirmwareVersion(currentFirmware, deviceVersion)\n .chain((osuFirmware) =>\n manager.getNextFirmwareVersion(osuFirmware).chain((finalFirmware) =>\n manager\n .getMcuList()\n .map((mcus) => mcus.find((mcu) => mcu.name === firmwareVersion.mcu))\n .map(\n (mcu) =>\n mcu === undefined ||\n !finalFirmware.mcuVersions.includes(mcu.id),\n )\n .map((mcuUpdateRequired) => ({\n osuFirmware,\n finalFirmware,\n mcuUpdateRequired,\n })),\n ),\n );\n const availableUpdate: FirmwareUpdate | undefined = maybeUpdate.caseOf({\n Right: (data) => data,\n Left: (_error) => undefined,\n });\n const firmwareUpdateContext = {\n currentFirmware,\n availableUpdate,\n };\n\n // Get custom image metadata\n let customImage: CustomImage = {};\n const imageSize = await this.api.sendCommand(\n new GetCustomImageSizeCommand(),\n );\n if (isSuccessCommandResult(imageSize)) {\n customImage = { size: imageSize.data };\n }\n\n // Return firmware metadata\n return CommandResultFactory({\n data: {\n deviceVersion,\n firmware: currentFirmware,\n firmwareVersion,\n firmwareUpdateContext,\n customImage,\n },\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAAS,0BAAAA,MAA8B,sBACvC,OAEE,wBAAAC,EACA,0BAAAC,MACK,mCACP,OAAS,6BAAAC,MAAiC,4CAC1C,OAAS,uBAAAC,MAA2B,sCAmB7B,MAAMC,CAAwB,CACnC,YAA6BC,EAAkB,CAAlB,SAAAA,CAAmB,CAEhD,MAAM,KAA8C,CAElD,MAAMC,EAAY,MAAM,KAAK,IAAI,YAAY,IAAIH,CAAqB,EACtE,GAAI,CAACF,EAAuBK,CAAS,EACnC,OAAOA,EAET,MAAMC,EAAmC,CACvC,IAAKD,EAAU,KAAK,eACpB,WAAYA,EAAU,KAAK,qBAC3B,GAAIA,EAAU,KAAK,UACnB,SAAUA,EAAU,IACtB,EAGME,EAAU,KAAK,IAAI,qBAAqB,EACxCC,EAAS,MAAMD,EAClB,iBAAiBF,EAAU,IAAI,EAC/B,MAAOI,GACNF,EACG,mBAAmBF,EAAU,KAAMI,CAAa,EAChD,IAAKC,IAAqB,CAAE,cAAAD,EAAe,gBAAAC,CAAgB,EAAE,CAClE,EACF,GAAIF,EAAO,OAAO,EAChB,OAAOT,EAAqB,CAC1B,MAAO,IAAID,EACT,wCACF,CACF,CAAC,EAEH,KAAM,CAAE,cAAAW,EAAe,gBAAAC,CAAgB,EAAIF,EAAO,aAAa,EAsBzDG,GAnBc,MAAMJ,EACvB,yBAAyBG,EAAiBD,CAAa,EACvD,MAAOG,GACNL,EAAQ,uBAAuBK,CAAW,EAAE,MAAOC,GACjDN,EACG,WAAW,EACX,IAAKO,GAASA,EAAK,KAAMC,GAAQA,EAAI,OAAST,EAAgB,GAAG,CAAC,EAClE,IACES,GACCA,IAAQ,QACR,CAACF,EAAc,YAAY,SAASE,EAAI,EAAE,CAC9C,EACC,IAAKC,IAAuB,CAC3B,YAAAJ,EACA,cAAAC,EACA,kBAAAG,CACF,EAAE,CACN,CACF,GAC8D,OAAO,CACrE,MAAQC,GAASA,EACjB,KAAOC,GAAQ,EACjB,CAAC,EACKC,EAAwB,CAC5B,gBAAAT,EACA,gBAAAC,CACF,EAGA,IAAIS,EAA2B,CAAC,EAChC,MAAMC,EAAY,MAAM,KAAK,IAAI,YAC/B,IAAIpB,CACN,EACA,OAAID,EAAuBqB,CAAS,IAClCD,EAAc,CAAE,KAAMC,EAAU,IAAK,GAIhCtB,EAAqB,CAC1B,KAAM,CACJ,cAAAU,EACA,SAAUC,EACV,gBAAAJ,EACA,sBAAAa,EACA,YAAAC,CACF,CACF,CAAC,CACH,CACF",
6
- "names": ["InvalidStatusWordError", "CommandResultFactory", "isSuccessCommandResult", "GetCustomImageSizeCommand", "GetOsVersionCommand", "GetFirmwareMetadataTask", "api", "osVersion", "firmwareVersion", "manager", "result", "deviceVersion", "currentFirmware", "availableUpdate", "osuFirmware", "finalFirmware", "mcus", "mcu", "mcuUpdateRequired", "data", "_error", "firmwareUpdateContext", "customImage", "imageSize"]
4
+ "sourcesContent": ["import { InvalidGetFirmwareMetadataResponseError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { GetCustomImageSizeCommand } from \"@api/command/os/GetCustomImageSizeCommand\";\nimport { GetOsVersionCommand } from \"@api/command/os/GetOsVersionCommand\";\nimport type { InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n type CustomImage,\n type FirmwareUpdate,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceVersion } from \"@internal/manager-api/model/Device\";\nimport { type FinalFirmware } from \"@internal/manager-api/model/Firmware\";\n\nexport type GetFirmwareMetadataTaskResult = CommandResult<{\n deviceVersion: DeviceVersion;\n firmware: FinalFirmware;\n firmwareVersion: FirmwareVersion;\n firmwareUpdateContext: FirmwareUpdateContext;\n customImage: CustomImage;\n}>;\n\nexport class GetFirmwareMetadataTask {\n constructor(private readonly api: InternalApi) {}\n\n async run(): Promise<GetFirmwareMetadataTaskResult> {\n // Get installed firmware metadata\n const osVersion = await this.api.sendCommand(new GetOsVersionCommand());\n if (!isSuccessCommandResult(osVersion)) {\n return osVersion;\n }\n const firmwareVersion: FirmwareVersion = {\n mcu: osVersion.data.mcuSephVersion,\n bootloader: osVersion.data.mcuBootloaderVersion,\n os: osVersion.data.seVersion,\n metadata: osVersion.data,\n };\n\n // Fetch current firmware metadata from app store\n const manager = this.api.getManagerApiService();\n const result = await manager\n .getDeviceVersion(osVersion.data)\n .chain((deviceVersion) =>\n manager\n .getFirmwareVersion(osVersion.data, deviceVersion)\n .map((currentFirmware) => ({ deviceVersion, currentFirmware })),\n );\n if (result.isLeft()) {\n return CommandResultFactory({\n error: new InvalidGetFirmwareMetadataResponseError(),\n });\n }\n const { deviceVersion, currentFirmware } = result.unsafeCoerce();\n\n // Fetch latest firmware available, if any\n const maybeUpdate = await manager\n .getLatestFirmwareVersion(currentFirmware, deviceVersion)\n .chain((osuFirmware) =>\n manager.getNextFirmwareVersion(osuFirmware).chain((finalFirmware) =>\n manager\n .getMcuList()\n .map((mcus) => mcus.find((mcu) => mcu.name === firmwareVersion.mcu))\n .map(\n (mcu) =>\n mcu === undefined ||\n !finalFirmware.mcuVersions.includes(mcu.id),\n )\n .map((mcuUpdateRequired) => ({\n osuFirmware,\n finalFirmware,\n mcuUpdateRequired,\n })),\n ),\n );\n const availableUpdate: FirmwareUpdate | undefined = maybeUpdate.caseOf({\n Right: (data) => data,\n Left: (_error) => undefined,\n });\n const firmwareUpdateContext = {\n currentFirmware,\n availableUpdate,\n };\n\n // Get custom image metadata\n let customImage: CustomImage = {};\n const imageSize = await this.api.sendCommand(\n new GetCustomImageSizeCommand(),\n );\n if (isSuccessCommandResult(imageSize)) {\n customImage = { size: imageSize.data };\n }\n\n // Return firmware metadata\n return CommandResultFactory({\n data: {\n deviceVersion,\n firmware: currentFirmware,\n firmwareVersion,\n firmwareUpdateContext,\n customImage,\n },\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,2CAAAA,MAA+C,sBACxD,OAEE,wBAAAC,EACA,0BAAAC,MACK,mCACP,OAAS,6BAAAC,MAAiC,4CAC1C,OAAS,uBAAAC,MAA2B,sCAmB7B,MAAMC,CAAwB,CACnC,YAA6BC,EAAkB,CAAlB,SAAAA,CAAmB,CAEhD,MAAM,KAA8C,CAElD,MAAMC,EAAY,MAAM,KAAK,IAAI,YAAY,IAAIH,CAAqB,EACtE,GAAI,CAACF,EAAuBK,CAAS,EACnC,OAAOA,EAET,MAAMC,EAAmC,CACvC,IAAKD,EAAU,KAAK,eACpB,WAAYA,EAAU,KAAK,qBAC3B,GAAIA,EAAU,KAAK,UACnB,SAAUA,EAAU,IACtB,EAGME,EAAU,KAAK,IAAI,qBAAqB,EACxCC,EAAS,MAAMD,EAClB,iBAAiBF,EAAU,IAAI,EAC/B,MAAOI,GACNF,EACG,mBAAmBF,EAAU,KAAMI,CAAa,EAChD,IAAKC,IAAqB,CAAE,cAAAD,EAAe,gBAAAC,CAAgB,EAAE,CAClE,EACF,GAAIF,EAAO,OAAO,EAChB,OAAOT,EAAqB,CAC1B,MAAO,IAAID,CACb,CAAC,EAEH,KAAM,CAAE,cAAAW,EAAe,gBAAAC,CAAgB,EAAIF,EAAO,aAAa,EAsBzDG,GAnBc,MAAMJ,EACvB,yBAAyBG,EAAiBD,CAAa,EACvD,MAAOG,GACNL,EAAQ,uBAAuBK,CAAW,EAAE,MAAOC,GACjDN,EACG,WAAW,EACX,IAAKO,GAASA,EAAK,KAAMC,GAAQA,EAAI,OAAST,EAAgB,GAAG,CAAC,EAClE,IACES,GACCA,IAAQ,QACR,CAACF,EAAc,YAAY,SAASE,EAAI,EAAE,CAC9C,EACC,IAAKC,IAAuB,CAC3B,YAAAJ,EACA,cAAAC,EACA,kBAAAG,CACF,EAAE,CACN,CACF,GAC8D,OAAO,CACrE,MAAQC,GAASA,EACjB,KAAOC,GAAQ,EACjB,CAAC,EACKC,EAAwB,CAC5B,gBAAAT,EACA,gBAAAC,CACF,EAGA,IAAIS,EAA2B,CAAC,EAChC,MAAMC,EAAY,MAAM,KAAK,IAAI,YAC/B,IAAIpB,CACN,EACA,OAAID,EAAuBqB,CAAS,IAClCD,EAAc,CAAE,KAAMC,EAAU,IAAK,GAIhCtB,EAAqB,CAC1B,KAAM,CACJ,cAAAU,EACA,SAAUC,EACV,gBAAAJ,EACA,sBAAAa,EACA,YAAAC,CACF,CACF,CAAC,CACH,CACF",
6
+ "names": ["InvalidGetFirmwareMetadataResponseError", "CommandResultFactory", "isSuccessCommandResult", "GetCustomImageSizeCommand", "GetOsVersionCommand", "GetFirmwareMetadataTask", "api", "osVersion", "firmwareVersion", "manager", "result", "deviceVersion", "currentFirmware", "availableUpdate", "osuFirmware", "finalFirmware", "mcus", "mcu", "mcuUpdateRequired", "data", "_error", "firmwareUpdateContext", "customImage", "imageSize"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{EitherAsync as n}from"purify-ts";import{InvalidStatusWordError as m}from"../../command/Errors";import{CommandResultFactory as e}from"../../command/model/CommandResult";import{makeDeviceActionInternalApiMock as V}from"../../device-action/__test-utils__/makeInternalApi";import{GetFirmwareMetadataTask as u}from"./GetFirmwareMetadataTask";describe("GetFirmwareMetadataTask",()=>{const a=V(),o={mcuSephVersion:"mcu_version",mcuBootloaderVersion:"bl_version",seVersion:"se_version"},w=97,c={id:7},i={id:361,version:"1.6.0",perso:"perso_11"},l={id:362,perso:"perso_11"},d={id:363,version:"1.7.0",perso:"perso_11",mcuVersions:[1]},v=[{id:3,name:"other_version"},{id:1,name:"mcu_version"}],r={getDeviceVersion:vi.fn(),getFirmwareVersion:vi.fn(),getLatestFirmwareVersion:vi.fn(),getNextFirmwareVersion:vi.fn(),getMcuList:vi.fn()};beforeEach(()=>{vi.clearAllMocks(),a.getManagerApiService.mockReturnValue(r),r.getDeviceVersion.mockReturnValue(n(async()=>c)),r.getFirmwareVersion.mockReturnValue(n(async()=>i)),r.getLatestFirmwareVersion.mockReturnValue(n(async()=>l)),r.getNextFirmwareVersion.mockReturnValue(n(async()=>d)),r.getMcuList.mockReturnValue(n(async()=>v))}),it("success with no firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({data:w})),r.getLatestFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:void 0},customImage:{size:w}}}))}),it("success with a firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new m("error")}));const t=await new u(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:l,finalFirmware:d,mcuUpdateRequired:!1}},customImage:{}}})),expect(r.getDeviceVersion).toHaveBeenCalledWith(o),expect(r.getFirmwareVersion).toHaveBeenCalledWith(o,c),expect(r.getLatestFirmwareVersion).toHaveBeenCalledWith(i,c),expect(r.getNextFirmwareVersion).toHaveBeenCalledWith(l)}),it("success with a firmware update available and MCU update",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new m("error")}));const t={...d,mcuVersions:[3]};r.getNextFirmwareVersion.mockReturnValue(n(async()=>t));const s=await new u(a).run();expect(s).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:l,finalFirmware:t,mcuUpdateRequired:!0}},customImage:{}}}))}),it("should fail when OS version cannot be retrieved",async()=>{a.sendCommand.mockResolvedValueOnce(e({error:new m("error")}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("error")}))}),it("should fail if device version cannot be fetched",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getDeviceVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("Cannot fetch current firmware metadata")}))}),it("should fail if firmware version cannot be fetched",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new u(a).run();expect(t).toStrictEqual(e({error:new m("Cannot fetch current firmware metadata")}))})});
1
+ import{EitherAsync as n}from"purify-ts";import{InvalidGetFirmwareMetadataResponseError as v,InvalidStatusWordError as l}from"../../command/Errors";import{CommandResultFactory as e}from"../../command/model/CommandResult";import{makeDeviceActionInternalApiMock as p}from"../../device-action/__test-utils__/makeInternalApi";import{GetFirmwareMetadataTask as m}from"./GetFirmwareMetadataTask";describe("GetFirmwareMetadataTask",()=>{const a=p(),o={mcuSephVersion:"mcu_version",mcuBootloaderVersion:"bl_version",seVersion:"se_version"},w=97,c={id:7},i={id:361,version:"1.6.0",perso:"perso_11"},u={id:362,perso:"perso_11"},d={id:363,version:"1.7.0",perso:"perso_11",mcuVersions:[1]},V=[{id:3,name:"other_version"},{id:1,name:"mcu_version"}],r={getDeviceVersion:vi.fn(),getFirmwareVersion:vi.fn(),getLatestFirmwareVersion:vi.fn(),getNextFirmwareVersion:vi.fn(),getMcuList:vi.fn()};beforeEach(()=>{vi.clearAllMocks(),a.getManagerApiService.mockReturnValue(r),r.getDeviceVersion.mockReturnValue(n(async()=>c)),r.getFirmwareVersion.mockReturnValue(n(async()=>i)),r.getLatestFirmwareVersion.mockReturnValue(n(async()=>u)),r.getNextFirmwareVersion.mockReturnValue(n(async()=>d)),r.getMcuList.mockReturnValue(n(async()=>V))}),it("success with no firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({data:w})),r.getLatestFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new m(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:void 0},customImage:{size:w}}}))}),it("success with a firmware update available",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new l("error")}));const t=await new m(a).run();expect(t).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:u,finalFirmware:d,mcuUpdateRequired:!1}},customImage:{}}})),expect(r.getDeviceVersion).toHaveBeenCalledWith(o),expect(r.getFirmwareVersion).toHaveBeenCalledWith(o,c),expect(r.getLatestFirmwareVersion).toHaveBeenCalledWith(i,c),expect(r.getNextFirmwareVersion).toHaveBeenCalledWith(u)}),it("success with a firmware update available and MCU update",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})).mockResolvedValueOnce(e({error:new l("error")}));const t={...d,mcuVersions:[3]};r.getNextFirmwareVersion.mockReturnValue(n(async()=>t));const s=await new m(a).run();expect(s).toStrictEqual(e({data:{deviceVersion:c,firmware:i,firmwareVersion:{mcu:"mcu_version",bootloader:"bl_version",os:"se_version",metadata:o},firmwareUpdateContext:{currentFirmware:i,availableUpdate:{osuFirmware:u,finalFirmware:t,mcuUpdateRequired:!0}},customImage:{}}}))}),it("should fail when OS version cannot be retrieved",async()=>{a.sendCommand.mockResolvedValueOnce(e({error:new l("error")}));const t=await new m(a).run();expect(t).toStrictEqual(e({error:new l("error")}))}),it("should fail if device version cannot be fetched with InvalidGetFirmwareMetadataResponseError",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getDeviceVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new m(a).run();expect(t).toStrictEqual(e({error:new v}))}),it("should fail if firmware version cannot be fetched with InvalidGetFirmwareMetadataResponseError",async()=>{a.sendCommand.mockResolvedValueOnce(e({data:o})),r.getFirmwareVersion.mockReturnValueOnce(n(async({throwE:s})=>{s(new Error("error"))}));const t=await new m(a).run();expect(t).toStrictEqual(e({error:new v}))})});
2
2
  //# sourceMappingURL=GetFirmwareMetadataTask.test.js.map