@ledgerhq/device-management-kit 0.0.0-develop-20250219001044 → 0.0.0-rnble-transport-20250219135033

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 (146) hide show
  1. package/lib/cjs/package.json +2 -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/command/utils/CommandUtils.js +1 -1
  5. package/lib/cjs/src/api/command/utils/CommandUtils.js.map +3 -3
  6. package/lib/cjs/src/api/command/utils/CommandUtils.test.js +1 -1
  7. package/lib/cjs/src/api/command/utils/CommandUtils.test.js.map +3 -3
  8. package/lib/cjs/src/api/index.js +1 -1
  9. package/lib/cjs/src/api/index.js.map +3 -3
  10. package/lib/cjs/src/api/transport/model/DeviceApduSender.js +2 -0
  11. package/lib/cjs/src/api/transport/model/DeviceApduSender.js.map +7 -0
  12. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  13. package/lib/cjs/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  14. package/lib/cjs/src/api/transport/model/DiscoveredDevice.js +1 -1
  15. package/lib/cjs/src/api/transport/model/DiscoveredDevice.js.map +1 -1
  16. package/lib/cjs/src/api/transport/model/Errors.js +1 -1
  17. package/lib/cjs/src/api/transport/model/Errors.js.map +3 -3
  18. package/lib/cjs/src/api/transport/model/Transport.js.map +1 -1
  19. package/lib/cjs/src/api/transport/model/TransportDiscoveredDevice.js +1 -1
  20. package/lib/cjs/src/api/transport/model/TransportDiscoveredDevice.js.map +1 -1
  21. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js +1 -1
  22. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js.map +2 -2
  23. package/lib/cjs/src/api/types.js.map +1 -1
  24. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  25. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  26. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  27. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  28. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  29. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  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.test.js +1 -1
  37. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +2 -2
  38. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +2 -0
  39. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +7 -0
  40. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js +2 -0
  41. package/lib/cjs/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js.map +7 -0
  42. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  43. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  44. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  45. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  46. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js +1 -1
  47. package/lib/cjs/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  48. package/lib/cjs/src/internal/transport/service/TransportService.js +1 -1
  49. package/lib/cjs/src/internal/transport/service/TransportService.js.map +1 -1
  50. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  51. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  52. package/lib/esm/package.json +2 -1
  53. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  54. package/lib/esm/src/api/DeviceManagementKit.js.map +2 -2
  55. package/lib/esm/src/api/command/utils/CommandUtils.js +1 -1
  56. package/lib/esm/src/api/command/utils/CommandUtils.js.map +3 -3
  57. package/lib/esm/src/api/command/utils/CommandUtils.test.js +1 -1
  58. package/lib/esm/src/api/command/utils/CommandUtils.test.js.map +3 -3
  59. package/lib/esm/src/api/index.js +1 -1
  60. package/lib/esm/src/api/index.js.map +3 -3
  61. package/lib/esm/src/api/transport/model/DeviceApduSender.js +1 -0
  62. package/lib/esm/src/api/transport/model/DeviceApduSender.js.map +7 -0
  63. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js +2 -0
  64. package/lib/esm/src/api/transport/model/DeviceConnectionStateMachine.js.map +7 -0
  65. package/lib/esm/src/api/transport/model/Errors.js +1 -1
  66. package/lib/esm/src/api/transport/model/Errors.js.map +3 -3
  67. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js +1 -1
  68. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js.map +2 -2
  69. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  70. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  71. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js +1 -1
  72. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +3 -3
  73. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  74. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  75. package/lib/esm/src/internal/discovery/di/discoveryModule.js +1 -1
  76. package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +3 -3
  77. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  78. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  79. package/lib/esm/src/internal/discovery/di/discoveryTypes.js +1 -1
  80. package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +2 -2
  81. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  82. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +2 -2
  83. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js +2 -0
  84. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.js.map +7 -0
  85. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js +2 -0
  86. package/lib/esm/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.js.map +7 -0
  87. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js +1 -1
  88. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +2 -2
  89. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  90. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +2 -2
  91. package/lib/esm/src/internal/transport/service/DefaultTransportService.js +1 -1
  92. package/lib/esm/src/internal/transport/service/DefaultTransportService.js.map +3 -3
  93. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  94. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  95. package/lib/types/src/api/DeviceManagementKit.d.ts +1 -1
  96. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  97. package/lib/types/src/api/command/utils/CommandUtils.d.ts +1 -0
  98. package/lib/types/src/api/command/utils/CommandUtils.d.ts.map +1 -1
  99. package/lib/types/src/api/index.d.ts +1 -0
  100. package/lib/types/src/api/index.d.ts.map +1 -1
  101. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts +17 -0
  102. package/lib/types/src/api/transport/model/DeviceApduSender.d.ts.map +1 -0
  103. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts +60 -0
  104. package/lib/types/src/api/transport/model/DeviceConnectionStateMachine.d.ts.map +1 -0
  105. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts +2 -0
  106. package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts.map +1 -1
  107. package/lib/types/src/api/transport/model/Errors.d.ts +15 -0
  108. package/lib/types/src/api/transport/model/Errors.d.ts.map +1 -1
  109. package/lib/types/src/api/transport/model/Transport.d.ts +1 -1
  110. package/lib/types/src/api/transport/model/Transport.d.ts.map +1 -1
  111. package/lib/types/src/api/transport/model/TransportDiscoveredDevice.d.ts +2 -0
  112. package/lib/types/src/api/transport/model/TransportDiscoveredDevice.d.ts.map +1 -1
  113. package/lib/types/src/api/transport/model/__mocks__/TransportMock.d.ts +1 -1
  114. package/lib/types/src/api/transport/model/__mocks__/TransportMock.d.ts.map +1 -1
  115. package/lib/types/src/api/types.d.ts +1 -0
  116. package/lib/types/src/api/types.d.ts.map +1 -1
  117. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +1 -0
  118. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  119. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts +3 -1
  120. package/lib/types/src/internal/device-session/use-case/CloseSessionsUseCase.d.ts.map +1 -1
  121. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +1 -1
  122. package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
  123. package/lib/types/src/internal/discovery/use-case/{ListenToKnownDevicesUseCase.d.ts → ListenToAvailableDevicesUseCase.d.ts} +2 -2
  124. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.d.ts.map +1 -0
  125. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.d.ts +2 -0
  126. package/lib/types/src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.d.ts.map +1 -0
  127. package/lib/types/src/internal/discovery/use-case/StartDiscoveringUseCase.d.ts.map +1 -1
  128. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts +2 -0
  129. package/lib/types/src/internal/transport/service/DefaultTransportService.d.ts.map +1 -1
  130. package/lib/types/src/internal/transport/service/TransportService.d.ts +3 -1
  131. package/lib/types/src/internal/transport/service/TransportService.d.ts.map +1 -1
  132. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts +1 -0
  133. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts.map +1 -1
  134. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  135. package/package.json +5 -4
  136. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +0 -2
  137. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +0 -7
  138. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +0 -2
  139. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +0 -7
  140. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +0 -2
  141. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +0 -7
  142. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +0 -2
  143. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +0 -7
  144. package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.d.ts.map +0 -1
  145. package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.d.ts +0 -2
  146. package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/model/DeviceSession.ts"],
4
- "sourcesContent": ["import { type Either, Left } from \"purify-ts\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { DeviceBusyError, type DmkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESH_INTERVAL } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _refresher: DeviceSessionRefresher;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n this._refresher = new DeviceSessionRefresher(\n {\n refreshInterval: DEVICE_SESSION_REFRESH_INTERVAL,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n sendApduFn: (rawApdu: Uint8Array) =>\n this.sendApdu(rawApdu, {\n isPolling: true,\n triggersDisconnection: false,\n }),\n updateStateFn: (callback) => {\n const state = this._deviceState.getValue();\n this.setDeviceSessionState(callback(state));\n },\n },\n loggerModuleFactory(\"device-session-refresher\"),\n );\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n }\n\n public get id() {\n return this._id;\n }\n\n public get connectedDevice() {\n return this._connectedDevice;\n }\n\n public get state() {\n return this._deviceState.asObservable();\n }\n\n public setDeviceSessionState(state: DeviceSessionState) {\n this._deviceState.next(state);\n }\n\n private updateDeviceStatus(deviceStatus: DeviceStatus) {\n const sessionState = this._deviceState.getValue();\n this._refresher.setDeviceStatus(deviceStatus);\n this._deviceState.next({\n ...sessionState,\n deviceStatus,\n });\n }\n\n async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n const sessionState = this._deviceState.getValue();\n if (sessionState.deviceStatus === DeviceStatus.BUSY) {\n return Left(new DeviceBusyError());\n }\n\n if (!options.isPolling) {\n this.updateDeviceStatus(DeviceStatus.BUSY);\n }\n\n const errorOrResponse = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n );\n\n return errorOrResponse\n .ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this.updateDeviceStatus(DeviceStatus.LOCKED);\n } else {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n }\n })\n .ifLeft(() => {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n });\n }\n\n async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n ) => this.sendCommand(command),\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n\n return {\n observable,\n cancel,\n };\n }\n\n close() {\n this.updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._refresher.stop();\n }\n\n toggleRefresher(enabled: boolean) {\n if (enabled) {\n this._refresher.start();\n } else {\n this._refresher.stop();\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["DeviceSession_exports", "__export", "DeviceSession", "__toCommonJS", "import_purify_ts", "import_rxjs", "import_uuid", "import_CommandUtils", "import_DeviceStatus", "import_DeviceSessionState", "import_Error", "import_DeviceSessionRefresherConst", "import_DeviceSessionRefresher", "connectedDevice", "id", "uuidv4", "loggerModuleFactory", "managerApiService", "secureChannelService", "rawApdu", "callback", "state", "deviceStatus", "sessionState", "options", "response", "command", "apdu", "err", "r", "deviceAction", "observable", "cancel", "enabled"]
4
+ "sourcesContent": ["import { type Either, Left } from \"purify-ts\";\nimport { BehaviorSubject, type Subscription } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { DeviceBusyError, type DmkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESH_INTERVAL } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _refresher: DeviceSessionRefresher;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n this._refresher = new DeviceSessionRefresher(\n {\n refreshInterval: DEVICE_SESSION_REFRESH_INTERVAL,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n sendApduFn: (rawApdu: Uint8Array) =>\n this.sendApdu(rawApdu, {\n isPolling: true,\n triggersDisconnection: false,\n }),\n updateStateFn: (callback) => {\n const state = this._deviceState.getValue();\n this.setDeviceSessionState(callback(state));\n },\n },\n loggerModuleFactory(\"device-session-refresher\"),\n );\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n }\n\n public get id() {\n return this._id;\n }\n\n public get connectedDevice() {\n return this._connectedDevice;\n }\n\n public get state() {\n return this._deviceState.asObservable();\n }\n\n public setDeviceSessionState(state: DeviceSessionState) {\n this._deviceState.next(state);\n }\n\n private updateDeviceStatus(deviceStatus: DeviceStatus) {\n const sessionState = this._deviceState.getValue();\n this._refresher.setDeviceStatus(deviceStatus);\n this._deviceState.next({\n ...sessionState,\n deviceStatus,\n });\n }\n\n async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n if (!options.isPolling) {\n this.toggleRefresher(false);\n await this.waitUntilReady();\n }\n\n const sessionState = this._deviceState.getValue();\n if (sessionState.deviceStatus === DeviceStatus.BUSY) {\n return Left(new DeviceBusyError());\n }\n\n this.updateDeviceStatus(DeviceStatus.BUSY);\n\n const errorOrResponse = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n );\n\n return errorOrResponse\n .ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this.updateDeviceStatus(DeviceStatus.LOCKED);\n } else {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n }\n\n if (!options.isPolling) {\n this.toggleRefresher(true);\n }\n })\n .ifLeft(() => {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n\n if (!options.isPolling) {\n this.toggleRefresher(true);\n }\n });\n }\n\n async waitUntilReady() {\n let deviceStateSub: Subscription;\n\n await new Promise<void>((resolve) => {\n deviceStateSub = this._deviceState.subscribe((state) => {\n if (state.deviceStatus === DeviceStatus.CONNECTED) {\n deviceStateSub?.unsubscribe();\n resolve();\n }\n });\n });\n }\n\n async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n ) => this.sendCommand(command),\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n\n return {\n observable,\n cancel,\n };\n }\n\n close() {\n this.updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._refresher.stop();\n }\n\n toggleRefresher(enabled: boolean) {\n if (enabled) {\n this._refresher.start();\n } else {\n this._refresher.stop();\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceSession_exports", "__export", "DeviceSession", "__toCommonJS", "import_purify_ts", "import_rxjs", "import_uuid", "import_CommandUtils", "import_DeviceStatus", "import_DeviceSessionState", "import_Error", "import_DeviceSessionRefresherConst", "import_DeviceSessionRefresher", "connectedDevice", "id", "uuidv4", "loggerModuleFactory", "managerApiService", "secureChannelService", "rawApdu", "callback", "state", "deviceStatus", "sessionState", "options", "response", "deviceStateSub", "resolve", "command", "apdu", "err", "r", "deviceAction", "observable", "cancel", "enabled"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var v=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var _=(i,e)=>{for(var s in e)v(i,s,{get:e[s],enumerable:!0})},a=(i,e,s,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of f(e))!y.call(i,c)&&c!==s&&v(i,c,{get:()=>e[c],enumerable:!(o=p(e,c))||o.enumerable});return i};var h=i=>a(v({},"__esModule",{value:!0}),i),m=(i,e,s,o)=>{for(var c=o>1?void 0:o?p(e,s):e,t=i.length-1,S;t>=0;t--)(S=i[t])&&(c=(o?S(e,s,c):S(c))||c);return o&&c&&v(e,s,c),c},D=(i,e)=>(s,o)=>e(s,o,i);var j={};_(j,{CloseSessionsUseCase:()=>r});module.exports=h(j);var n=require("inversify"),d=require("../../device-session/di/deviceSessionTypes");let r=class{_sessionService;constructor(e){this._sessionService=e}execute(){const e=this._sessionService.getDeviceSessions();for(const s of e)s.close()}};r=m([(0,n.injectable)(),D(0,(0,n.inject)(d.deviceSessionTypes.DeviceSessionService))],r);0&&(module.exports={CloseSessionsUseCase});
1
+ "use strict";var n=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var _=(r,e)=>{for(var i in e)n(r,i,{get:e[i],enumerable:!0})},y=(r,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of f(e))!T.call(r,s)&&s!==i&&n(r,s,{get:()=>e[s],enumerable:!(o=a(e,s))||o.enumerable});return r};var h=r=>y(n({},"__esModule",{value:!0}),r),m=(r,e,i,o)=>{for(var s=o>1?void 0:o?a(e,i):e,v=r.length-1,S;v>=0;v--)(S=r[v])&&(s=(o?S(e,i,s):S(s))||s);return o&&s&&n(e,i,s),s},p=(r,e)=>(i,o)=>e(i,o,r);var l={};_(l,{CloseSessionsUseCase:()=>c});module.exports=h(l);var t=require("inversify"),D=require("../../device-session/di/deviceSessionTypes"),d=require("../../transport/di/transportDiTypes");let c=class{_sessionService;_transportService;constructor(e,i){this._sessionService=e,this._transportService=i}execute(){const e=this._sessionService.getDeviceSessions();for(const i of e)this._transportService.closeConnection(i.connectedDevice),this._sessionService.removeDeviceSession(i.id)}};c=m([(0,t.injectable)(),p(0,(0,t.inject)(D.deviceSessionTypes.DeviceSessionService)),p(1,(0,t.inject)(d.transportDiTypes.TransportService))],c);0&&(module.exports={CloseSessionsUseCase});
2
2
  //# sourceMappingURL=CloseSessionsUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/use-case/CloseSessionsUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\n\n@injectable()\nexport class CloseSessionsUseCase {\n private readonly _sessionService: DeviceSessionService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n ) {\n this._sessionService = sessionService;\n }\n\n execute() {\n const deviceSessions = this._sessionService.getDeviceSessions();\n\n for (const dSession of deviceSessions) {\n dSession.close();\n }\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAEnCC,EAAmC,0DAI5B,IAAMC,EAAN,KAA2B,CACf,gBACjB,YAEEC,EACA,CACA,KAAK,gBAAkBA,CACzB,CAEA,SAAU,CACR,MAAMC,EAAiB,KAAK,gBAAgB,kBAAkB,EAE9D,UAAWC,KAAYD,EACrBC,EAAS,MAAM,CAEnB,CACF,EAhBaH,EAANI,EAAA,IADN,cAAW,EAIPC,EAAA,eAAO,qBAAmB,oBAAoB,IAHtCL",
6
- "names": ["CloseSessionsUseCase_exports", "__export", "CloseSessionsUseCase", "__toCommonJS", "import_inversify", "import_deviceSessionTypes", "CloseSessionsUseCase", "sessionService", "deviceSessions", "dSession", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport type { TransportService } from \"@internal/transport/service/TransportService\";\n\n@injectable()\nexport class CloseSessionsUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _transportService: TransportService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(transportDiTypes.TransportService)\n transportService: TransportService,\n ) {\n this._sessionService = sessionService;\n this._transportService = transportService;\n }\n\n execute() {\n const deviceSessions = this._sessionService.getDeviceSessions();\n\n for (const dSession of deviceSessions) {\n this._transportService.closeConnection(dSession.connectedDevice);\n this._sessionService.removeDeviceSession(dSession.id);\n }\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAEnCC,EAAmC,0DAEnCC,EAAiC,mDAI1B,IAAMC,EAAN,KAA2B,CACf,gBACA,kBACjB,YAEEC,EAEAC,EACA,CACA,KAAK,gBAAkBD,EACvB,KAAK,kBAAoBC,CAC3B,CAEA,SAAU,CACR,MAAMC,EAAiB,KAAK,gBAAgB,kBAAkB,EAE9D,UAAWC,KAAYD,EACrB,KAAK,kBAAkB,gBAAgBC,EAAS,eAAe,EAC/D,KAAK,gBAAgB,oBAAoBA,EAAS,EAAE,CAExD,CACF,EArBaJ,EAANK,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,oBAAoB,GAE9CA,EAAA,eAAO,mBAAiB,gBAAgB,IANhCN",
6
+ "names": ["CloseSessionsUseCase_exports", "__export", "CloseSessionsUseCase", "__toCommonJS", "import_inversify", "import_deviceSessionTypes", "import_transportDiTypes", "CloseSessionsUseCase", "sessionService", "transportService", "deviceSessions", "dSession", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=require("../../device-session/model/DeviceSession.stub"),S=require("../../device-session/service/DefaultDeviceSessionService"),l=require("../../device-session/use-case/CloseSessionsUseCase"),p=require("../../logger-publisher/service/DefaultLoggerPublisherService"),u=require("../../manager-api/data/AxiosManagerApiDataSource"),f=require("../../manager-api/service/DefaultManagerApiService"),v=require("../../secure-channel/data/DefaultSecureChannelDataSource"),g=require("../../secure-channel/service/DefaultSecureChannelService");let r,a,t,n,c,o;describe("CloseSessionsUseCase",()=>{beforeEach(()=>{r=new p.DefaultLoggerPublisherService([],"close-sessions-use-case-test"),a=new u.AxiosManagerApiDataSource({}),t=new f.DefaultManagerApiService(a),n=new v.DefaultSecureChannelDataSource({}),c=new g.DefaultSecureChannelService(n),o=new S.DefaultDeviceSessionService(()=>r)}),it("should be able to close every session",()=>{const i=[...Array(10).keys()].map(e=>{const s=(0,m.deviceSessionStubBuilder)({id:e.toString()},()=>r,t,c);return vi.spyOn(s,"close"),s});i.forEach(e=>o.addDeviceSession(e)),new l.CloseSessionsUseCase(o).execute(),i.forEach(e=>{expect(e.close).toHaveBeenCalled()})})});
1
+ "use strict";var S=require("../../device-session/model/DeviceSession.stub"),m=require("../../device-session/service/DefaultDeviceSessionService"),l=require("../../device-session/use-case/CloseSessionsUseCase"),p=require("../../logger-publisher/service/DefaultLoggerPublisherService"),u=require("../../manager-api/data/AxiosManagerApiDataSource"),f=require("../../manager-api/service/DefaultManagerApiService"),v=require("../../secure-channel/data/DefaultSecureChannelDataSource"),D=require("../../secure-channel/service/DefaultSecureChannelService"),g=require("../../transport/service/__mocks__/DefaultTransportService");let o,i,a,t,n,r,c;describe("CloseSessionsUseCase",()=>{beforeEach(()=>{o=new p.DefaultLoggerPublisherService([],"close-sessions-use-case-test"),i=new u.AxiosManagerApiDataSource({}),a=new f.DefaultManagerApiService(i),t=new v.DefaultSecureChannelDataSource({}),n=new D.DefaultSecureChannelService(t),r=new m.DefaultDeviceSessionService(()=>o),c=new g.DefaultTransportService}),it("should be able to close every session",()=>{[...Array(10).keys()].map(e=>{const s=(0,S.deviceSessionStubBuilder)({id:e.toString()},()=>o,a,n);return vi.spyOn(s,"close"),s}).forEach(e=>r.addDeviceSession(e)),new l.CloseSessionsUseCase(r,c).execute();for(const e of r.getDeviceSessions())expect(e.close).toHaveBeenCalled()})});
2
2
  //# sourceMappingURL=CloseSessionsUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/use-case/CloseSessionsUseCase.test.ts"],
4
- "sourcesContent": ["import { type DmkConfig } from \"@api/DmkConfig\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nlet logger: LoggerPublisherService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet managerApi: ManagerApiService;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\nlet sessionService: DeviceSessionService;\n\ndescribe(\"CloseSessionsUseCase\", () => {\n beforeEach(() => {\n logger = new DefaultLoggerPublisherService(\n [],\n \"close-sessions-use-case-test\",\n );\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 sessionService = new DefaultDeviceSessionService(() => logger);\n });\n\n it(\"should be able to close every session\", () => {\n //given\n const sessions = [...Array(10).keys()].map((id) => {\n const session = deviceSessionStubBuilder(\n { id: id.toString() },\n () => logger,\n managerApi,\n secureChannel,\n );\n vi.spyOn(session, \"close\");\n return session;\n });\n sessions.forEach((session) => sessionService.addDeviceSession(session));\n const useCase = new CloseSessionsUseCase(sessionService);\n //when\n useCase.execute();\n //then\n sessions.forEach((session) => {\n expect(session.close).toHaveBeenCalled();\n });\n });\n});\n"],
5
- "mappings": "aAEA,IAAAA,EAAyC,6DACzCC,EAA4C,wEAE5CC,EAAqC,kEACrCC,EAA8C,4EAC9CC,EAA0C,gEAE1CC,EAAyC,kEAEzCC,EAA+C,wEAE/CC,EAA4C,wEAG5C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,SAAS,uBAAwB,IAAM,CACrC,WAAW,IAAM,CACfL,EAAS,IAAI,gCACX,CAAC,EACD,8BACF,EACAC,EAAuB,IAAI,4BAA0B,CAAC,CAAc,EACpEC,EAAa,IAAI,2BAAyBD,CAAoB,EAC9DE,EAA0B,IAAI,iCAC5B,CAAC,CACH,EACAC,EAAgB,IAAI,8BAA4BD,CAAuB,EACvEE,EAAiB,IAAI,8BAA4B,IAAML,CAAM,CAC/D,CAAC,EAED,GAAG,wCAAyC,IAAM,CAEhD,MAAMM,EAAW,CAAC,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,IAAKC,GAAO,CACjD,MAAMC,KAAU,4BACd,CAAE,GAAID,EAAG,SAAS,CAAE,EACpB,IAAMP,EACNE,EACAE,CACF,EACA,UAAG,MAAMI,EAAS,OAAO,EAClBA,CACT,CAAC,EACDF,EAAS,QAASE,GAAYH,EAAe,iBAAiBG,CAAO,CAAC,EACtD,IAAI,uBAAqBH,CAAc,EAE/C,QAAQ,EAEhBC,EAAS,QAASE,GAAY,CAC5B,OAAOA,EAAQ,KAAK,EAAE,iBAAiB,CACzC,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_DeviceSession", "import_DefaultDeviceSessionService", "import_CloseSessionsUseCase", "import_DefaultLoggerPublisherService", "import_AxiosManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "logger", "managerApiDataSource", "managerApi", "secureChannelDataSource", "secureChannel", "sessionService", "sessions", "id", "session"]
4
+ "sourcesContent": ["import { type DmkConfig } from \"@api/DmkConfig\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { deviceSessionStubBuilder } from \"@internal/device-session/model/DeviceSession.stub\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\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/__mocks__/DefaultTransportService\";\n\nlet logger: LoggerPublisherService;\nlet managerApiDataSource: ManagerApiDataSource;\nlet managerApi: ManagerApiService;\nlet secureChannelDataSource: SecureChannelDataSource;\nlet secureChannel: SecureChannelService;\nlet sessionService: DeviceSessionService;\nlet transportService: DefaultTransportService;\n\n// @TODO Fix this test with vi.spyOn session close [SNAPSHOT PURPOSE]\ndescribe(\"CloseSessionsUseCase\", () => {\n beforeEach(() => {\n logger = new DefaultLoggerPublisherService(\n [],\n \"close-sessions-use-case-test\",\n );\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 sessionService = new DefaultDeviceSessionService(() => logger);\n transportService = new DefaultTransportService();\n });\n\n it(\"should be able to close every session\", () => {\n //given\n const sessions = [...Array(10).keys()].map((id) => {\n const session = deviceSessionStubBuilder(\n { id: id.toString() },\n () => logger,\n managerApi,\n secureChannel,\n );\n vi.spyOn(session, \"close\");\n return session;\n });\n sessions.forEach((session) => sessionService.addDeviceSession(session));\n const useCase = new CloseSessionsUseCase(sessionService, transportService);\n //when\n useCase.execute();\n //then\n for (const session of sessionService.getDeviceSessions()) {\n expect(session.close).toHaveBeenCalled();\n }\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAyC,6DACzCC,EAA4C,wEAE5CC,EAAqC,kEACrCC,EAA8C,4EAC9CC,EAA0C,gEAE1CC,EAAyC,kEAEzCC,EAA+C,wEAE/CC,EAA4C,wEAE5CC,EAAwC,yEAExC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,SAAS,uBAAwB,IAAM,CACrC,WAAW,IAAM,CACfN,EAAS,IAAI,gCACX,CAAC,EACD,8BACF,EACAC,EAAuB,IAAI,4BAA0B,CAAC,CAAc,EACpEC,EAAa,IAAI,2BAAyBD,CAAoB,EAC9DE,EAA0B,IAAI,iCAC5B,CAAC,CACH,EACAC,EAAgB,IAAI,8BAA4BD,CAAuB,EACvEE,EAAiB,IAAI,8BAA4B,IAAML,CAAM,EAC7DM,EAAmB,IAAI,yBACzB,CAAC,EAED,GAAG,wCAAyC,IAAM,CAE/B,CAAC,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,IAAKC,GAAO,CACjD,MAAMC,KAAU,4BACd,CAAE,GAAID,EAAG,SAAS,CAAE,EACpB,IAAMP,EACNE,EACAE,CACF,EACA,UAAG,MAAMI,EAAS,OAAO,EAClBA,CACT,CAAC,EACQ,QAASA,GAAYH,EAAe,iBAAiBG,CAAO,CAAC,EACtD,IAAI,uBAAqBH,EAAgBC,CAAgB,EAEjE,QAAQ,EAEhB,UAAWE,KAAWH,EAAe,kBAAkB,EACrD,OAAOG,EAAQ,KAAK,EAAE,iBAAiB,CAE3C,CAAC,CACH,CAAC",
6
+ "names": ["import_DeviceSession", "import_DefaultDeviceSessionService", "import_CloseSessionsUseCase", "import_DefaultLoggerPublisherService", "import_AxiosManagerApiDataSource", "import_DefaultManagerApiService", "import_DefaultSecureChannelDataSource", "import_DefaultSecureChannelService", "import_DefaultTransportService", "logger", "managerApiDataSource", "managerApi", "secureChannelDataSource", "secureChannel", "sessionService", "transportService", "id", "session"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var C=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var n in e)C(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of S(e))!T.call(t,s)&&s!==n&&C(t,s,{get:()=>e[s],enumerable:!(i=y(e,s))||i.enumerable});return t};var l=t=>u(C({},"__esModule",{value:!0}),t);var F={};g(F,{discoveryModuleFactory:()=>w});module.exports=l(F);var a=require("inversify"),r=require("../../discovery/use-case/ConnectUseCase"),U=require("../../discovery/use-case/DisconnectUseCase"),m=require("../../discovery/use-case/GetConnectedDeviceUseCase"),D=require("../../discovery/use-case/ListConnectedDevicesUseCase"),v=require("../../discovery/use-case/ListenToConnectedDeviceUseCase"),p=require("../../discovery/use-case/ListenToKnownDevicesUseCase"),f=require("../../discovery/use-case/StartDiscoveringUseCase"),L=require("../../discovery/use-case/StopDiscoveringUseCase"),c=require("../../../../src/di.stub"),o=require("./discoveryTypes");const w=({stub:t=!1})=>new a.ContainerModule((e,n,i,s)=>{e(o.discoveryTypes.ConnectUseCase).to(r.ConnectUseCase),e(o.discoveryTypes.DisconnectUseCase).to(U.DisconnectUseCase),e(o.discoveryTypes.StartDiscoveringUseCase).to(f.StartDiscoveringUseCase),e(o.discoveryTypes.StopDiscoveringUseCase).to(L.StopDiscoveringUseCase),e(o.discoveryTypes.GetConnectedDeviceUseCase).to(m.GetConnectedDeviceUseCase),e(o.discoveryTypes.ListenToKnownDevicesUseCase).to(p.ListenToKnownDevicesUseCase),e(o.discoveryTypes.ListenToConnectedDeviceUseCase).to(v.ListenToConnectedDeviceUseCase),e(o.discoveryTypes.ListConnectedDevicesUseCase).to(D.ListConnectedDevicesUseCase),t&&(s(o.discoveryTypes.StartDiscoveringUseCase).to(c.StubUseCase),s(o.discoveryTypes.StopDiscoveringUseCase).to(c.StubUseCase),s(o.discoveryTypes.ConnectUseCase).to(c.StubUseCase),s(o.discoveryTypes.DisconnectUseCase).to(c.StubUseCase),s(o.discoveryTypes.GetConnectedDeviceUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListenToKnownDevicesUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListenToConnectedDeviceUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListConnectedDevicesUseCase).to(c.StubUseCase))});0&&(module.exports={discoveryModuleFactory});
1
+ "use strict";var C=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var i in e)C(t,i,{get:e[i],enumerable:!0})},g=(t,e,i,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of y(e))!S.call(t,s)&&s!==i&&C(t,s,{get:()=>e[s],enumerable:!(a=L(e,s))||a.enumerable});return t};var u=t=>g(C({},"__esModule",{value:!0}),t);var F={};T(F,{discoveryModuleFactory:()=>A});module.exports=u(F);var n=require("inversify"),r=require("../../discovery/use-case/ConnectUseCase"),U=require("../../discovery/use-case/DisconnectUseCase"),v=require("../../discovery/use-case/GetConnectedDeviceUseCase"),m=require("../../discovery/use-case/ListConnectedDevicesUseCase"),D=require("../../discovery/use-case/ListenToAvailableDevicesUseCase"),p=require("../../discovery/use-case/ListenToConnectedDeviceUseCase"),f=require("../../discovery/use-case/StartDiscoveringUseCase"),l=require("../../discovery/use-case/StopDiscoveringUseCase"),c=require("../../../../src/di.stub"),o=require("./discoveryTypes");const A=({stub:t=!1})=>new n.ContainerModule((e,i,a,s)=>{e(o.discoveryTypes.ConnectUseCase).to(r.ConnectUseCase),e(o.discoveryTypes.DisconnectUseCase).to(U.DisconnectUseCase),e(o.discoveryTypes.StartDiscoveringUseCase).to(f.StartDiscoveringUseCase),e(o.discoveryTypes.StopDiscoveringUseCase).to(l.StopDiscoveringUseCase),e(o.discoveryTypes.GetConnectedDeviceUseCase).to(v.GetConnectedDeviceUseCase),e(o.discoveryTypes.ListenToAvailableDevicesUseCase).to(D.ListenToAvailableDevicesUseCase),e(o.discoveryTypes.ListenToConnectedDeviceUseCase).to(p.ListenToConnectedDeviceUseCase),e(o.discoveryTypes.ListConnectedDevicesUseCase).to(m.ListConnectedDevicesUseCase),t&&(s(o.discoveryTypes.StartDiscoveringUseCase).to(c.StubUseCase),s(o.discoveryTypes.StopDiscoveringUseCase).to(c.StubUseCase),s(o.discoveryTypes.ConnectUseCase).to(c.StubUseCase),s(o.discoveryTypes.DisconnectUseCase).to(c.StubUseCase),s(o.discoveryTypes.GetConnectedDeviceUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListenToAvailableDevicesUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListenToConnectedDeviceUseCase).to(c.StubUseCase),s(o.discoveryTypes.ListConnectedDevicesUseCase).to(c.StubUseCase))});0&&(module.exports={discoveryModuleFactory});
2
2
  //# sourceMappingURL=discoveryModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/di/discoveryModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport { ListenToKnownDevicesUseCase } from \"@internal/discovery/use-case/ListenToKnownDevicesUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const discoveryModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, rebind) => {\n bind(discoveryTypes.ConnectUseCase).to(ConnectUseCase);\n bind(discoveryTypes.DisconnectUseCase).to(DisconnectUseCase);\n bind(discoveryTypes.StartDiscoveringUseCase).to(StartDiscoveringUseCase);\n bind(discoveryTypes.StopDiscoveringUseCase).to(StopDiscoveringUseCase);\n bind(discoveryTypes.GetConnectedDeviceUseCase).to(\n GetConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListenToKnownDevicesUseCase).to(\n ListenToKnownDevicesUseCase,\n );\n bind(discoveryTypes.ListenToConnectedDeviceUseCase).to(\n ListenToConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListConnectedDevicesUseCase).to(\n ListConnectedDevicesUseCase,\n );\n\n if (stub) {\n rebind(discoveryTypes.StartDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.StopDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.ConnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.DisconnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.GetConnectedDeviceUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListenToKnownDevicesUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListenToConnectedDeviceUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListConnectedDevicesUseCase).to(StubUseCase);\n }\n });\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA+B,uDAC/BC,EAAkC,0DAClCC,EAA0C,kEAC1CC,EAA4C,oEAC5CC,EAA+C,uEAC/CC,EAA4C,oEAC5CC,EAAwC,gEACxCC,EAAuC,+DACvCC,EAA4B,6BAE5BC,EAA+B,4BAMxB,MAAMZ,EAAyB,CAAC,CAAE,KAAAa,EAAO,EAAM,IACpD,IAAI,kBAAgB,CAACC,EAAMC,EAASC,EAAUC,IAAW,CACvDH,EAAK,iBAAe,cAAc,EAAE,GAAG,gBAAc,EACrDA,EAAK,iBAAe,iBAAiB,EAAE,GAAG,mBAAiB,EAC3DA,EAAK,iBAAe,uBAAuB,EAAE,GAAG,yBAAuB,EACvEA,EAAK,iBAAe,sBAAsB,EAAE,GAAG,wBAAsB,EACrEA,EAAK,iBAAe,yBAAyB,EAAE,GAC7C,2BACF,EACAA,EAAK,iBAAe,2BAA2B,EAAE,GAC/C,6BACF,EACAA,EAAK,iBAAe,8BAA8B,EAAE,GAClD,gCACF,EACAA,EAAK,iBAAe,2BAA2B,EAAE,GAC/C,6BACF,EAEID,IACFI,EAAO,iBAAe,uBAAuB,EAAE,GAAG,aAAW,EAC7DA,EAAO,iBAAe,sBAAsB,EAAE,GAAG,aAAW,EAC5DA,EAAO,iBAAe,cAAc,EAAE,GAAG,aAAW,EACpDA,EAAO,iBAAe,iBAAiB,EAAE,GAAG,aAAW,EACvDA,EAAO,iBAAe,yBAAyB,EAAE,GAAG,aAAW,EAC/DA,EAAO,iBAAe,2BAA2B,EAAE,GAAG,aAAW,EACjEA,EAAO,iBAAe,8BAA8B,EAAE,GAAG,aAAW,EACpEA,EAAO,iBAAe,2BAA2B,EAAE,GAAG,aAAW,EAErE,CAAC",
6
- "names": ["discoveryModule_exports", "__export", "discoveryModuleFactory", "__toCommonJS", "import_inversify", "import_ConnectUseCase", "import_DisconnectUseCase", "import_GetConnectedDeviceUseCase", "import_ListConnectedDevicesUseCase", "import_ListenToConnectedDeviceUseCase", "import_ListenToKnownDevicesUseCase", "import_StartDiscoveringUseCase", "import_StopDiscoveringUseCase", "import_di", "import_discoveryTypes", "stub", "bind", "_unbind", "_isBound", "rebind"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { ListenToConnectedDeviceUseCase } from \"@internal/discovery/use-case/ListenToConnectedDeviceUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const discoveryModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, rebind) => {\n bind(discoveryTypes.ConnectUseCase).to(ConnectUseCase);\n bind(discoveryTypes.DisconnectUseCase).to(DisconnectUseCase);\n bind(discoveryTypes.StartDiscoveringUseCase).to(StartDiscoveringUseCase);\n bind(discoveryTypes.StopDiscoveringUseCase).to(StopDiscoveringUseCase);\n bind(discoveryTypes.GetConnectedDeviceUseCase).to(\n GetConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListenToAvailableDevicesUseCase).to(\n ListenToAvailableDevicesUseCase,\n );\n bind(discoveryTypes.ListenToConnectedDeviceUseCase).to(\n ListenToConnectedDeviceUseCase,\n );\n bind(discoveryTypes.ListConnectedDevicesUseCase).to(\n ListConnectedDevicesUseCase,\n );\n\n if (stub) {\n rebind(discoveryTypes.StartDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.StopDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.ConnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.DisconnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.GetConnectedDeviceUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListenToAvailableDevicesUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListenToConnectedDeviceUseCase).to(StubUseCase);\n rebind(discoveryTypes.ListConnectedDevicesUseCase).to(StubUseCase);\n }\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA+B,uDAC/BC,EAAkC,0DAClCC,EAA0C,kEAC1CC,EAA4C,oEAC5CC,EAAgD,wEAChDC,EAA+C,uEAC/CC,EAAwC,gEACxCC,EAAuC,+DACvCC,EAA4B,6BAE5BC,EAA+B,4BAMxB,MAAMZ,EAAyB,CAAC,CAAE,KAAAa,EAAO,EAAM,IACpD,IAAI,kBAAgB,CAACC,EAAMC,EAASC,EAAUC,IAAW,CACvDH,EAAK,iBAAe,cAAc,EAAE,GAAG,gBAAc,EACrDA,EAAK,iBAAe,iBAAiB,EAAE,GAAG,mBAAiB,EAC3DA,EAAK,iBAAe,uBAAuB,EAAE,GAAG,yBAAuB,EACvEA,EAAK,iBAAe,sBAAsB,EAAE,GAAG,wBAAsB,EACrEA,EAAK,iBAAe,yBAAyB,EAAE,GAC7C,2BACF,EACAA,EAAK,iBAAe,+BAA+B,EAAE,GACnD,iCACF,EACAA,EAAK,iBAAe,8BAA8B,EAAE,GAClD,gCACF,EACAA,EAAK,iBAAe,2BAA2B,EAAE,GAC/C,6BACF,EAEID,IACFI,EAAO,iBAAe,uBAAuB,EAAE,GAAG,aAAW,EAC7DA,EAAO,iBAAe,sBAAsB,EAAE,GAAG,aAAW,EAC5DA,EAAO,iBAAe,cAAc,EAAE,GAAG,aAAW,EACpDA,EAAO,iBAAe,iBAAiB,EAAE,GAAG,aAAW,EACvDA,EAAO,iBAAe,yBAAyB,EAAE,GAAG,aAAW,EAC/DA,EAAO,iBAAe,+BAA+B,EAAE,GAAG,aAAW,EACrEA,EAAO,iBAAe,8BAA8B,EAAE,GAAG,aAAW,EACpEA,EAAO,iBAAe,2BAA2B,EAAE,GAAG,aAAW,EAErE,CAAC",
6
+ "names": ["discoveryModule_exports", "__export", "discoveryModuleFactory", "__toCommonJS", "import_inversify", "import_ConnectUseCase", "import_DisconnectUseCase", "import_GetConnectedDeviceUseCase", "import_ListConnectedDevicesUseCase", "import_ListenToAvailableDevicesUseCase", "import_ListenToConnectedDeviceUseCase", "import_StartDiscoveringUseCase", "import_StopDiscoveringUseCase", "import_di", "import_discoveryTypes", "stub", "bind", "_unbind", "_isBound", "rebind"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var r=require("inversify"),n=require("../../../api/transport/model/__mocks__/TransportMock"),c=require("../../device-model/di/deviceModelModule"),i=require("../../device-session/di/deviceSessionModule"),a=require("../../discovery/use-case/ConnectUseCase"),m=require("../../discovery/use-case/DisconnectUseCase"),p=require("../../discovery/use-case/ListConnectedDevicesUseCase"),f=require("../../discovery/use-case/ListenToKnownDevicesUseCase"),l=require("../../discovery/use-case/StartDiscoveringUseCase"),d=require("../../discovery/use-case/StopDiscoveringUseCase"),C=require("../../logger-publisher/di/loggerModule"),u=require("../../manager-api/di/managerApiModule"),g=require("../../secure-channel/di/secureChannelModule"),U=require("../../transport/di/transportModule"),v=require("./discoveryModule"),o=require("./discoveryTypes");describe("discoveryModuleFactory",()=>{let e,t,s;beforeEach(()=>{t=(0,v.discoveryModuleFactory)({stub:!1}),e=new r.Container,s=new n.TransportMock,e.load(t,(0,C.loggerModuleFactory)(),(0,c.deviceModelModuleFactory)({stub:!1}),(0,i.deviceSessionModuleFactory)(),(0,U.transportModuleFactory)({transports:[vi.fn().mockImplementation(()=>s)]}),(0,u.managerApiModuleFactory)({config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url"}}),(0,g.secureChannelModuleFactory)({config:{webSocketUrl:"http://fake-websocket.url"}}))}),it("should return the device module",()=>{expect(t).toBeDefined()}),it("should return none mocked use cases",()=>{const y=e.get(o.discoveryTypes.StartDiscoveringUseCase);expect(y).toBeInstanceOf(l.StartDiscoveringUseCase);const D=e.get(o.discoveryTypes.StopDiscoveringUseCase);expect(D).toBeInstanceOf(d.StopDiscoveringUseCase);const k=e.get(o.discoveryTypes.DisconnectUseCase);expect(k).toBeInstanceOf(m.DisconnectUseCase);const M=e.get(o.discoveryTypes.ConnectUseCase);expect(M).toBeInstanceOf(a.ConnectUseCase);const F=e.get(o.discoveryTypes.ListenToKnownDevicesUseCase);expect(F).toBeInstanceOf(f.ListenToKnownDevicesUseCase);const h=e.get(o.discoveryTypes.ListConnectedDevicesUseCase);expect(h).toBeInstanceOf(p.ListConnectedDevicesUseCase)})});
1
+ "use strict";var r=require("inversify"),n=require("../../../api/transport/model/__mocks__/TransportMock"),c=require("../../device-model/di/deviceModelModule"),i=require("../../device-session/di/deviceSessionModule"),a=require("../../discovery/use-case/ConnectUseCase"),m=require("../../discovery/use-case/DisconnectUseCase"),p=require("../../discovery/use-case/ListConnectedDevicesUseCase"),f=require("../../discovery/use-case/ListenToAvailableDevicesUseCase"),l=require("../../discovery/use-case/StartDiscoveringUseCase"),d=require("../../discovery/use-case/StopDiscoveringUseCase"),C=require("../../logger-publisher/di/loggerModule"),v=require("../../manager-api/di/managerApiModule"),u=require("../../secure-channel/di/secureChannelModule"),g=require("../../transport/di/transportModule"),U=require("./discoveryModule"),o=require("./discoveryTypes");describe("discoveryModuleFactory",()=>{let e,t,s;beforeEach(()=>{t=(0,U.discoveryModuleFactory)({stub:!1}),e=new r.Container,s=new n.TransportMock,e.load(t,(0,C.loggerModuleFactory)(),(0,c.deviceModelModuleFactory)({stub:!1}),(0,i.deviceSessionModuleFactory)(),(0,g.transportModuleFactory)({transports:[vi.fn().mockImplementation(()=>s)]}),(0,v.managerApiModuleFactory)({config:{managerApiUrl:"http://fake.url",mockUrl:"http://fake-mock.url"}}),(0,u.secureChannelModuleFactory)({config:{webSocketUrl:"http://fake-websocket.url"}}))}),it("should return the device module",()=>{expect(t).toBeDefined()}),it("should return none mocked use cases",()=>{const y=e.get(o.discoveryTypes.StartDiscoveringUseCase);expect(y).toBeInstanceOf(l.StartDiscoveringUseCase);const D=e.get(o.discoveryTypes.StopDiscoveringUseCase);expect(D).toBeInstanceOf(d.StopDiscoveringUseCase);const k=e.get(o.discoveryTypes.DisconnectUseCase);expect(k).toBeInstanceOf(m.DisconnectUseCase);const M=e.get(o.discoveryTypes.ConnectUseCase);expect(M).toBeInstanceOf(a.ConnectUseCase);const b=e.get(o.discoveryTypes.ListenToAvailableDevicesUseCase);expect(b).toBeInstanceOf(f.ListenToAvailableDevicesUseCase);const F=e.get(o.discoveryTypes.ListConnectedDevicesUseCase);expect(F).toBeInstanceOf(p.ListConnectedDevicesUseCase)})});
2
2
  //# sourceMappingURL=discoveryModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/di/discoveryModule.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type DmkConfig, type Transport } from \"@api/types\";\nimport { deviceModelModuleFactory } from \"@internal/device-model/di/deviceModelModule\";\nimport { deviceSessionModuleFactory } from \"@internal/device-session/di/deviceSessionModule\";\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToKnownDevicesUseCase } from \"@internal/discovery/use-case/ListenToKnownDevicesUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { loggerModuleFactory } from \"@internal/logger-publisher/di/loggerModule\";\nimport { managerApiModuleFactory } from \"@internal/manager-api/di/managerApiModule\";\nimport { secureChannelModuleFactory } from \"@internal/secure-channel/di/secureChannelModule\";\nimport { transportModuleFactory } from \"@internal/transport/di/transportModule\";\n\nimport { discoveryModuleFactory } from \"./discoveryModule\";\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ndescribe(\"discoveryModuleFactory\", () => {\n let container: Container;\n let mod: ReturnType<typeof discoveryModuleFactory>;\n let transport: Transport;\n beforeEach(() => {\n mod = discoveryModuleFactory({ stub: false });\n container = new Container();\n transport = new TransportMock();\n\n container.load(\n mod,\n // The following modules are injected into discovery module\n loggerModuleFactory(),\n deviceModelModuleFactory({ stub: false }),\n deviceSessionModuleFactory(),\n transportModuleFactory({\n transports: [vi.fn().mockImplementation(() => transport)],\n }),\n managerApiModuleFactory({\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n } as DmkConfig,\n }),\n secureChannelModuleFactory({\n config: {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig,\n }),\n );\n });\n it(\"should return the device module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return none mocked use cases\", () => {\n const startDiscoveringUseCase = container.get(\n discoveryTypes.StartDiscoveringUseCase,\n );\n expect(startDiscoveringUseCase).toBeInstanceOf(StartDiscoveringUseCase);\n\n const stopDiscoveringUseCase = container.get(\n discoveryTypes.StopDiscoveringUseCase,\n );\n expect(stopDiscoveringUseCase).toBeInstanceOf(StopDiscoveringUseCase);\n\n const disconnectUseCase = container.get(discoveryTypes.DisconnectUseCase);\n expect(disconnectUseCase).toBeInstanceOf(DisconnectUseCase);\n\n const connectUseCase = container.get(discoveryTypes.ConnectUseCase);\n expect(connectUseCase).toBeInstanceOf(ConnectUseCase);\n\n const listenToKnownDevicesUseCase = container.get(\n discoveryTypes.ListenToKnownDevicesUseCase,\n );\n expect(listenToKnownDevicesUseCase).toBeInstanceOf(\n ListenToKnownDevicesUseCase,\n );\n const listConnectedDevicesUseCase = container.get(\n discoveryTypes.ListConnectedDevicesUseCase,\n );\n expect(listConnectedDevicesUseCase).toBeInstanceOf(\n ListConnectedDevicesUseCase,\n );\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAA8B,wDAE9BC,EAAyC,uDACzCC,EAA2C,2DAC3CC,EAA+B,uDAC/BC,EAAkC,0DAClCC,EAA4C,oEAC5CC,EAA4C,oEAC5CC,EAAwC,gEACxCC,EAAuC,+DACvCC,EAAoC,sDACpCC,EAAwC,qDACxCC,EAA2C,2DAC3CC,EAAuC,kDAEvCC,EAAuC,6BACvCC,EAA+B,4BAE/B,SAAS,yBAA0B,IAAM,CACvC,IAAIC,EACAC,EACAC,EACJ,WAAW,IAAM,CACfD,KAAM,0BAAuB,CAAE,KAAM,EAAM,CAAC,EAC5CD,EAAY,IAAI,YAChBE,EAAY,IAAI,gBAEhBF,EAAU,KACRC,KAEA,uBAAoB,KACpB,4BAAyB,CAAE,KAAM,EAAM,CAAC,KACxC,8BAA2B,KAC3B,0BAAuB,CACrB,WAAY,CAAC,GAAG,GAAG,EAAE,mBAAmB,IAAMC,CAAS,CAAC,CAC1D,CAAC,KACD,2BAAwB,CACtB,OAAQ,CACN,cAAe,kBACf,QAAS,sBACX,CACF,CAAC,KACD,8BAA2B,CACzB,OAAQ,CACN,aAAc,2BAChB,CACF,CAAC,CACH,CACF,CAAC,EACD,GAAG,kCAAmC,IAAM,CAC1C,OAAOD,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAME,EAA0BH,EAAU,IACxC,iBAAe,uBACjB,EACA,OAAOG,CAAuB,EAAE,eAAe,yBAAuB,EAEtE,MAAMC,EAAyBJ,EAAU,IACvC,iBAAe,sBACjB,EACA,OAAOI,CAAsB,EAAE,eAAe,wBAAsB,EAEpE,MAAMC,EAAoBL,EAAU,IAAI,iBAAe,iBAAiB,EACxE,OAAOK,CAAiB,EAAE,eAAe,mBAAiB,EAE1D,MAAMC,EAAiBN,EAAU,IAAI,iBAAe,cAAc,EAClE,OAAOM,CAAc,EAAE,eAAe,gBAAc,EAEpD,MAAMC,EAA8BP,EAAU,IAC5C,iBAAe,2BACjB,EACA,OAAOO,CAA2B,EAAE,eAClC,6BACF,EACA,MAAMC,EAA8BR,EAAU,IAC5C,iBAAe,2BACjB,EACA,OAAOQ,CAA2B,EAAE,eAClC,6BACF,CACF,CAAC,CACH,CAAC",
6
- "names": ["import_inversify", "import_TransportMock", "import_deviceModelModule", "import_deviceSessionModule", "import_ConnectUseCase", "import_DisconnectUseCase", "import_ListConnectedDevicesUseCase", "import_ListenToKnownDevicesUseCase", "import_StartDiscoveringUseCase", "import_StopDiscoveringUseCase", "import_loggerModule", "import_managerApiModule", "import_secureChannelModule", "import_transportModule", "import_discoveryModule", "import_discoveryTypes", "container", "mod", "transport", "startDiscoveringUseCase", "stopDiscoveringUseCase", "disconnectUseCase", "connectUseCase", "listenToKnownDevicesUseCase", "listConnectedDevicesUseCase"]
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type DmkConfig, type Transport } from \"@api/types\";\nimport { deviceModelModuleFactory } from \"@internal/device-model/di/deviceModelModule\";\nimport { deviceSessionModuleFactory } from \"@internal/device-session/di/deviceSessionModule\";\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { ListConnectedDevicesUseCase } from \"@internal/discovery/use-case/ListConnectedDevicesUseCase\";\nimport { ListenToAvailableDevicesUseCase } from \"@internal/discovery/use-case/ListenToAvailableDevicesUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { loggerModuleFactory } from \"@internal/logger-publisher/di/loggerModule\";\nimport { managerApiModuleFactory } from \"@internal/manager-api/di/managerApiModule\";\nimport { secureChannelModuleFactory } from \"@internal/secure-channel/di/secureChannelModule\";\nimport { transportModuleFactory } from \"@internal/transport/di/transportModule\";\n\nimport { discoveryModuleFactory } from \"./discoveryModule\";\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ndescribe(\"discoveryModuleFactory\", () => {\n let container: Container;\n let mod: ReturnType<typeof discoveryModuleFactory>;\n let transport: Transport;\n beforeEach(() => {\n mod = discoveryModuleFactory({ stub: false });\n container = new Container();\n transport = new TransportMock();\n\n container.load(\n mod,\n // The following modules are injected into discovery module\n loggerModuleFactory(),\n deviceModelModuleFactory({ stub: false }),\n deviceSessionModuleFactory(),\n transportModuleFactory({\n transports: [vi.fn().mockImplementation(() => transport)],\n }),\n managerApiModuleFactory({\n config: {\n managerApiUrl: \"http://fake.url\",\n mockUrl: \"http://fake-mock.url\",\n } as DmkConfig,\n }),\n secureChannelModuleFactory({\n config: {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig,\n }),\n );\n });\n it(\"should return the device module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return none mocked use cases\", () => {\n const startDiscoveringUseCase = container.get(\n discoveryTypes.StartDiscoveringUseCase,\n );\n expect(startDiscoveringUseCase).toBeInstanceOf(StartDiscoveringUseCase);\n\n const stopDiscoveringUseCase = container.get(\n discoveryTypes.StopDiscoveringUseCase,\n );\n expect(stopDiscoveringUseCase).toBeInstanceOf(StopDiscoveringUseCase);\n\n const disconnectUseCase = container.get(discoveryTypes.DisconnectUseCase);\n expect(disconnectUseCase).toBeInstanceOf(DisconnectUseCase);\n\n const connectUseCase = container.get(discoveryTypes.ConnectUseCase);\n expect(connectUseCase).toBeInstanceOf(ConnectUseCase);\n\n const listenToAvailableDevicesUseCase = container.get(\n discoveryTypes.ListenToAvailableDevicesUseCase,\n );\n expect(listenToAvailableDevicesUseCase).toBeInstanceOf(\n ListenToAvailableDevicesUseCase,\n );\n const listConnectedDevicesUseCase = container.get(\n discoveryTypes.ListConnectedDevicesUseCase,\n );\n expect(listConnectedDevicesUseCase).toBeInstanceOf(\n ListConnectedDevicesUseCase,\n );\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAA8B,wDAE9BC,EAAyC,uDACzCC,EAA2C,2DAC3CC,EAA+B,uDAC/BC,EAAkC,0DAClCC,EAA4C,oEAC5CC,EAAgD,wEAChDC,EAAwC,gEACxCC,EAAuC,+DACvCC,EAAoC,sDACpCC,EAAwC,qDACxCC,EAA2C,2DAC3CC,EAAuC,kDAEvCC,EAAuC,6BACvCC,EAA+B,4BAE/B,SAAS,yBAA0B,IAAM,CACvC,IAAIC,EACAC,EACAC,EACJ,WAAW,IAAM,CACfD,KAAM,0BAAuB,CAAE,KAAM,EAAM,CAAC,EAC5CD,EAAY,IAAI,YAChBE,EAAY,IAAI,gBAEhBF,EAAU,KACRC,KAEA,uBAAoB,KACpB,4BAAyB,CAAE,KAAM,EAAM,CAAC,KACxC,8BAA2B,KAC3B,0BAAuB,CACrB,WAAY,CAAC,GAAG,GAAG,EAAE,mBAAmB,IAAMC,CAAS,CAAC,CAC1D,CAAC,KACD,2BAAwB,CACtB,OAAQ,CACN,cAAe,kBACf,QAAS,sBACX,CACF,CAAC,KACD,8BAA2B,CACzB,OAAQ,CACN,aAAc,2BAChB,CACF,CAAC,CACH,CACF,CAAC,EACD,GAAG,kCAAmC,IAAM,CAC1C,OAAOD,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAME,EAA0BH,EAAU,IACxC,iBAAe,uBACjB,EACA,OAAOG,CAAuB,EAAE,eAAe,yBAAuB,EAEtE,MAAMC,EAAyBJ,EAAU,IACvC,iBAAe,sBACjB,EACA,OAAOI,CAAsB,EAAE,eAAe,wBAAsB,EAEpE,MAAMC,EAAoBL,EAAU,IAAI,iBAAe,iBAAiB,EACxE,OAAOK,CAAiB,EAAE,eAAe,mBAAiB,EAE1D,MAAMC,EAAiBN,EAAU,IAAI,iBAAe,cAAc,EAClE,OAAOM,CAAc,EAAE,eAAe,gBAAc,EAEpD,MAAMC,EAAkCP,EAAU,IAChD,iBAAe,+BACjB,EACA,OAAOO,CAA+B,EAAE,eACtC,iCACF,EACA,MAAMC,EAA8BR,EAAU,IAC5C,iBAAe,2BACjB,EACA,OAAOQ,CAA2B,EAAE,eAClC,6BACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["import_inversify", "import_TransportMock", "import_deviceModelModule", "import_deviceSessionModule", "import_ConnectUseCase", "import_DisconnectUseCase", "import_ListConnectedDevicesUseCase", "import_ListenToAvailableDevicesUseCase", "import_StartDiscoveringUseCase", "import_StopDiscoveringUseCase", "import_loggerModule", "import_managerApiModule", "import_secureChannelModule", "import_transportModule", "import_discoveryModule", "import_discoveryTypes", "container", "mod", "transport", "startDiscoveringUseCase", "stopDiscoveringUseCase", "disconnectUseCase", "connectUseCase", "listenToAvailableDevicesUseCase", "listConnectedDevicesUseCase"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var r=(s,e)=>{for(var n in e)c(s,n,{get:e[n],enumerable:!0})},U=(s,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!a.call(s,o)&&o!==n&&c(s,o,{get:()=>e[o],enumerable:!(t=i(e,o))||t.enumerable});return s};var D=s=>U(c({},"__esModule",{value:!0}),s);var S={};r(S,{discoveryTypes:()=>v});module.exports=D(S);const v={StartDiscoveringUseCase:Symbol.for("StartDiscoveringUseCase"),StopDiscoveringUseCase:Symbol.for("StopDiscoveringUseCase"),ConnectUseCase:Symbol.for("ConnectUseCase"),DisconnectUseCase:Symbol.for("DisconnectUseCase"),GetConnectedDeviceUseCase:Symbol.for("GetConnectedDeviceUseCase"),ListenToKnownDevicesUseCase:Symbol.for("ListenToKnownDevicesUseCase"),ListenToConnectedDeviceUseCase:Symbol.for("ListenToConnectedDeviceUseCase"),ListConnectedDevicesUseCase:Symbol.for("ListConnectedDevicesUseCase")};0&&(module.exports={discoveryTypes});
1
+ "use strict";var i=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var r=(s,e)=>{for(var n in e)i(s,n,{get:e[n],enumerable:!0})},U=(s,e,n,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!a.call(s,o)&&o!==n&&i(s,o,{get:()=>e[o],enumerable:!(c=t(e,o))||c.enumerable});return s};var v=s=>U(i({},"__esModule",{value:!0}),s);var l={};r(l,{discoveryTypes:()=>D});module.exports=v(l);const D={StartDiscoveringUseCase:Symbol.for("StartDiscoveringUseCase"),StopDiscoveringUseCase:Symbol.for("StopDiscoveringUseCase"),ConnectUseCase:Symbol.for("ConnectUseCase"),DisconnectUseCase:Symbol.for("DisconnectUseCase"),GetConnectedDeviceUseCase:Symbol.for("GetConnectedDeviceUseCase"),ListenToAvailableDevicesUseCase:Symbol.for("ListenToAvailableDevicesUseCase"),ListenToConnectedDeviceUseCase:Symbol.for("ListenToConnectedDeviceUseCase"),ListConnectedDevicesUseCase:Symbol.for("ListConnectedDevicesUseCase")};0&&(module.exports={discoveryTypes});
2
2
  //# sourceMappingURL=discoveryTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/di/discoveryTypes.ts"],
4
- "sourcesContent": ["export const discoveryTypes = {\n StartDiscoveringUseCase: Symbol.for(\"StartDiscoveringUseCase\"),\n StopDiscoveringUseCase: Symbol.for(\"StopDiscoveringUseCase\"),\n ConnectUseCase: Symbol.for(\"ConnectUseCase\"),\n DisconnectUseCase: Symbol.for(\"DisconnectUseCase\"),\n GetConnectedDeviceUseCase: Symbol.for(\"GetConnectedDeviceUseCase\"),\n ListenToKnownDevicesUseCase: Symbol.for(\"ListenToKnownDevicesUseCase\"),\n ListenToConnectedDeviceUseCase: Symbol.for(\"ListenToConnectedDeviceUseCase\"),\n ListConnectedDevicesUseCase: Symbol.for(\"ListConnectedDevicesUseCase\"),\n};\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAiB,CAC5B,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,eAAgB,OAAO,IAAI,gBAAgB,EAC3C,kBAAmB,OAAO,IAAI,mBAAmB,EACjD,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,+BAAgC,OAAO,IAAI,gCAAgC,EAC3E,4BAA6B,OAAO,IAAI,6BAA6B,CACvE",
4
+ "sourcesContent": ["export const discoveryTypes = {\n StartDiscoveringUseCase: Symbol.for(\"StartDiscoveringUseCase\"),\n StopDiscoveringUseCase: Symbol.for(\"StopDiscoveringUseCase\"),\n ConnectUseCase: Symbol.for(\"ConnectUseCase\"),\n DisconnectUseCase: Symbol.for(\"DisconnectUseCase\"),\n GetConnectedDeviceUseCase: Symbol.for(\"GetConnectedDeviceUseCase\"),\n ListenToAvailableDevicesUseCase: Symbol.for(\n \"ListenToAvailableDevicesUseCase\",\n ),\n ListenToConnectedDeviceUseCase: Symbol.for(\"ListenToConnectedDeviceUseCase\"),\n ListConnectedDevicesUseCase: Symbol.for(\"ListConnectedDevicesUseCase\"),\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAiB,CAC5B,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,eAAgB,OAAO,IAAI,gBAAgB,EAC3C,kBAAmB,OAAO,IAAI,mBAAmB,EACjD,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,gCAAiC,OAAO,IACtC,iCACF,EACA,+BAAgC,OAAO,IAAI,gCAAgC,EAC3E,4BAA6B,OAAO,IAAI,6BAA6B,CACvE",
6
6
  "names": ["discoveryTypes_exports", "__export", "discoveryTypes", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("purify-ts"),l=require("../../../api/transport/model/__mocks__/TransportMock"),s=require("../../../api/transport/model/Errors"),S=require("../../../api/transport/model/TransportConnectedDevice.stub"),D=require("../../device-session/service/DefaultDeviceSessionService"),g=require("../../logger-publisher/service/DefaultLoggerPublisherService"),d=require("../../manager-api/data/AxiosManagerApiDataSource"),y=require("../../manager-api/service/DefaultManagerApiService"),k=require("../../secure-channel/data/DefaultSecureChannelDataSource"),C=require("../../secure-channel/service/DefaultSecureChannelService"),w=require("../../transport/service/DefaultTransportService"),p=require("./ConnectUseCase");vi.mock("uuid",()=>({v4:vi.fn().mockReturnValue("fakeSessionId")}));vi.mock("@internal/manager-api/data/AxiosManagerApiDataSource");vi.mock("@internal/transport/service/DefaultTransportService");let o,t,n,r,c,u,f,a;const M="fakeSessionId";describe("ConnectUseCase",()=>{const m={id:"",deviceModel:{},transport:"USB"},A=(0,S.connectedDeviceStubBuilder)({id:"1"}),h="logger-tag";beforeAll(()=>{n=new g.DefaultLoggerPublisherService([],h),o=new l.TransportMock,r=new D.DefaultDeviceSessionService(()=>n),u=new d.AxiosManagerApiDataSource({}),c=new y.DefaultManagerApiService(u),f=new k.DefaultSecureChannelDataSource({}),a=new C.DefaultSecureChannelService(f),t=new w.DefaultTransportService}),afterEach(()=>{for(const i of r.getDeviceSessions())r.removeDeviceSession(i.id)}),afterAll(()=>{vi.restoreAllMocks()}),test("If connect use case encounter an error, return it",async()=>{vi.spyOn(o,"connect").mockResolvedValue((0,e.Left)(new s.UnknownDeviceError)),vi.spyOn(t,"getTransport").mockReturnValue(e.Maybe.of(o));const i=new p.ConnectUseCase(t,r,()=>n,c,a);await expect(i.execute({device:m})).rejects.toBeInstanceOf(s.UnknownDeviceError)}),test("If connect is in success, return a deviceSession id",async()=>{vi.spyOn(o,"connect").mockResolvedValue((0,e.Right)(A)),vi.spyOn(t,"getTransport").mockReturnValue(e.Maybe.of(o));const v=await new p.ConnectUseCase(t,r,()=>n,c,a).execute({device:m});expect(v).toBe(M),r.removeDeviceSession(v)})});
1
+ "use strict";var e=require("purify-ts"),l=require("../../../api/transport/model/__mocks__/TransportMock"),s=require("../../../api/transport/model/Errors"),S=require("../../../api/transport/model/TransportConnectedDevice.stub"),D=require("../../device-session/service/DefaultDeviceSessionService"),g=require("../../logger-publisher/service/DefaultLoggerPublisherService"),d=require("../../manager-api/data/AxiosManagerApiDataSource"),y=require("../../manager-api/service/DefaultManagerApiService"),k=require("../../secure-channel/data/DefaultSecureChannelDataSource"),C=require("../../secure-channel/service/DefaultSecureChannelService"),w=require("../../transport/service/DefaultTransportService"),p=require("./ConnectUseCase");vi.mock("uuid",()=>({v4:vi.fn().mockReturnValue("fakeSessionId")}));vi.mock("@internal/manager-api/data/AxiosManagerApiDataSource");vi.mock("@internal/transport/service/DefaultTransportService");let o,t,n,r,a,u,f,c;const M="fakeSessionId";describe("ConnectUseCase",()=>{const m={id:"",deviceModel:{},transport:"USB",name:"TEST"},A=(0,S.connectedDeviceStubBuilder)({id:"1"}),h="logger-tag";beforeAll(()=>{n=new g.DefaultLoggerPublisherService([],h),o=new l.TransportMock,r=new D.DefaultDeviceSessionService(()=>n),u=new d.AxiosManagerApiDataSource({}),a=new y.DefaultManagerApiService(u),f=new k.DefaultSecureChannelDataSource({}),c=new C.DefaultSecureChannelService(f),t=new w.DefaultTransportService}),afterEach(()=>{for(const i of r.getDeviceSessions())r.removeDeviceSession(i.id)}),afterAll(()=>{vi.restoreAllMocks()}),test("If connect use case encounter an error, return it",async()=>{vi.spyOn(o,"connect").mockResolvedValue((0,e.Left)(new s.UnknownDeviceError)),vi.spyOn(t,"getTransport").mockReturnValue(e.Maybe.of(o));const i=new p.ConnectUseCase(t,r,()=>n,a,c);await expect(i.execute({device:m})).rejects.toBeInstanceOf(s.UnknownDeviceError)}),test("If connect is in success, return a deviceSession id",async()=>{vi.spyOn(o,"connect").mockResolvedValue((0,e.Right)(A)),vi.spyOn(t,"getTransport").mockReturnValue(e.Maybe.of(o));const v=await new p.ConnectUseCase(t,r,()=>n,a,c).execute({device:m});expect(v).toBe(M),r.removeDeviceSession(v)})});
2
2
  //# sourceMappingURL=ConnectUseCase.test.js.map
@@ -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 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 };\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\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 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,qBAInCC,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,KACb,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,EAEA,GAAG,MAAMT,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EAUA,MAAMc,EAAY,MARF,IAAI,iBAClBb,EACAE,EACA,IAAMD,EACNE,EACAG,CACF,EAEgC,QAAQ,CACtC,OAAQE,CACV,CAAC,EACD,OAAOK,CAAS,EAAE,KAAKN,CAAa,EACpCL,EAAe,oBAAoBW,CAAS,CAC9C,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { Left, Maybe, Right } from \"purify-ts\";\n\nimport { type DeviceModel } from \"@api/device/DeviceModel\";\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\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 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,qBAInCC,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,EAEA,GAAG,MAAMT,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EAUA,MAAMc,EAAY,MARF,IAAI,iBAClBb,EACAE,EACA,IAAMD,EACNE,EACAG,CACF,EAEgC,QAAQ,CACtC,OAAQE,CACV,CAAC,EACD,OAAOK,CAAS,EAAE,KAAKN,CAAa,EACpCL,EAAe,oBAAoBW,CAAS,CAC9C,CAAC,CACH,CAAC",
6
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", "sessionId"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var b=(o,r)=>{for(var e in r)n(o,e,{get:r[e],enumerable:!0})},h=(o,r,e,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of f(r))!u.call(o,t)&&t!==e&&n(o,t,{get:()=>r[t],enumerable:!(p=v(r,t))||p.enumerable});return o};var y=o=>h(n({},"__esModule",{value:!0}),o),d=(o,r,e,p)=>{for(var t=p>1?void 0:p?v(r,e):r,m=o.length-1,c;m>=0;m--)(c=o[m])&&(t=(p?c(r,e,t):c(t))||t);return p&&t&&n(r,e,t),t},D=(o,r)=>(e,p)=>r(e,p,o);var x={};b(x,{ListenToAvailableDevicesUseCase:()=>s});module.exports=y(x);var a=require("inversify"),i=require("rxjs"),l=require("../../../api/device/DeviceModel"),T=require("../../transport/di/transportDiTypes");let s=class{_transports;constructor(r){this._transports=r.getAllTransports()}mapTransportDiscoveredDeviceToDiscoveredDevice(r){const e=new l.DeviceModel({id:r.id,model:r.deviceModel.id,name:r.deviceModel.productName});return{id:r.id,deviceModel:e,transport:r.transport,name:r.name||e.name,rssi:r.rssi}}execute(){if(this._transports.length===0)return(0,i.from)([[]]);const r=this._transports.map((e,p)=>e.listenToAvailableDevices().pipe((0,i.map)(t=>({index:p,arr:t}))));return(0,i.merge)(...r).pipe((0,i.scan)((e,{index:p,arr:t})=>(e[p]=t,e),{}),(0,i.map)(e=>Object.values(e).flat().map(this.mapTransportDiscoveredDeviceToDiscoveredDevice)))}};s=d([(0,a.injectable)(),D(0,(0,a.inject)(T.transportDiTypes.TransportService))],s);0&&(module.exports={ListenToAvailableDevicesUseCase});
2
+ //# sourceMappingURL=ListenToAvailableDevicesUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { from, map, merge, Observable, scan } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport type { Transport } from \"@api/transport/model/Transport\";\nimport { TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { DiscoveredDevice } from \"@api/types\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\n/**\n * Listen to list of known discovered devices (and later BLE).\n */\n@injectable()\nexport class ListenToAvailableDevicesUseCase {\n private readonly _transports: Transport[];\n constructor(\n @inject(transportDiTypes.TransportService)\n transportService: TransportService,\n ) {\n this._transports = transportService.getAllTransports();\n }\n\n private mapTransportDiscoveredDeviceToDiscoveredDevice(\n discoveredDevice: TransportDiscoveredDevice,\n ): DiscoveredDevice {\n const deviceModel = new DeviceModel({\n id: discoveredDevice.id,\n model: discoveredDevice.deviceModel.id,\n name: discoveredDevice.deviceModel.productName,\n });\n return {\n id: discoveredDevice.id,\n deviceModel,\n transport: discoveredDevice.transport,\n name: discoveredDevice.name || deviceModel.name,\n rssi: discoveredDevice.rssi,\n };\n }\n\n execute(): Observable<DiscoveredDevice[]> {\n if (this._transports.length === 0) {\n return from([[]]);\n }\n\n /**\n * Note: we're not using combineLatest because combineLatest will\n * - wait for all observables to emit at least once before emitting.\n * - complete as soon as one of the observables completes.\n * Some transports will just return an empty array and complete.\n * We want to keep listening to all transports until all have completed.\n */\n\n const observablesWithIndex = this._transports.map((transport, index) =>\n transport.listenToAvailableDevices().pipe(\n map((arr) => ({\n index,\n arr,\n })),\n ),\n );\n\n return merge(...observablesWithIndex).pipe(\n scan<\n { index: number; arr: TransportDiscoveredDevice[] },\n { [key: number]: TransportDiscoveredDevice[] }\n >((acc, { index, arr }) => {\n acc[index] = arr;\n return acc;\n }, {}),\n map((acc) =>\n Object.values(acc)\n .flat()\n .map(this.mapTransportDiscoveredDeviceToDiscoveredDevice),\n ),\n );\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAAmD,gBAEnDC,EAA4B,mCAI5BC,EAAiC,mDAO1B,IAAMC,EAAN,KAAsC,CAC1B,YACjB,YAEEC,EACA,CACA,KAAK,YAAcA,EAAiB,iBAAiB,CACvD,CAEQ,+CACNC,EACkB,CAClB,MAAMC,EAAc,IAAI,cAAY,CAClC,GAAID,EAAiB,GACrB,MAAOA,EAAiB,YAAY,GACpC,KAAMA,EAAiB,YAAY,WACrC,CAAC,EACD,MAAO,CACL,GAAIA,EAAiB,GACrB,YAAAC,EACA,UAAWD,EAAiB,UAC5B,KAAMA,EAAiB,MAAQC,EAAY,KAC3C,KAAMD,EAAiB,IACzB,CACF,CAEA,SAA0C,CACxC,GAAI,KAAK,YAAY,SAAW,EAC9B,SAAO,QAAK,CAAC,CAAC,CAAC,CAAC,EAWlB,MAAME,EAAuB,KAAK,YAAY,IAAI,CAACC,EAAWC,IAC5DD,EAAU,yBAAyB,EAAE,QACnC,OAAKE,IAAS,CACZ,MAAAD,EACA,IAAAC,CACF,EAAE,CACJ,CACF,EAEA,SAAO,SAAM,GAAGH,CAAoB,EAAE,QACpC,QAGE,CAACI,EAAK,CAAE,MAAAF,EAAO,IAAAC,CAAI,KACnBC,EAAIF,CAAK,EAAIC,EACNC,GACN,CAAC,CAAC,KACL,OAAKA,GACH,OAAO,OAAOA,CAAG,EACd,KAAK,EACL,IAAI,KAAK,8CAA8C,CAC5D,CACF,CACF,CACF,EA/DaR,EAANS,EAAA,IADN,cAAW,EAIPC,EAAA,eAAO,mBAAiB,gBAAgB,IAHhCV",
6
+ "names": ["ListenToAvailableDevicesUseCase_exports", "__export", "ListenToAvailableDevicesUseCase", "__toCommonJS", "import_inversify", "import_rxjs", "import_DeviceModel", "import_transportDiTypes", "ListenToAvailableDevicesUseCase", "transportService", "discoveredDevice", "deviceModel", "observablesWithIndex", "transport", "index", "arr", "acc", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var l=require("rxjs"),D=require("../../../api/device/DeviceModel"),f=require("../../../api/device-model/model/DeviceModel.stub"),A=require("../../transport/service/DefaultTransportService"),v=require("./ListenToAvailableDevicesUseCase");vi.mock("@internal/transport/service/DefaultTransportService");let i;function m(e){return{listenToAvailableDevices:vi.fn(),connect:vi.fn(),disconnect:vi.fn(),startDiscovering:vi.fn(),stopDiscovering:vi.fn(),getIdentifier:vi.fn(),isSupported:vi.fn(),...e}}const u=(0,f.deviceModelStubBuilder)();function n(e){return new D.DeviceModel({id:e,model:u.id,name:u.productName})}function p(){const e=new l.Subject,r=new l.Subject,o=m({listenToAvailableDevices:()=>e.asObservable()}),s=m({listenToAvailableDevices:()=>r.asObservable()});return{transportAKnownDevicesSubject:e,transportBKnownDevicesSubject:r,transportA:o,transportB:s}}function c(e){return{id:e,deviceModel:u,transport:"mock"}}describe("ListenToKnownDevicesUseCase",()=>{beforeEach(()=>{vi.clearAllMocks(),i=new A.DefaultTransportService}),describe("when no transports are available",()=>{it("should return no discovered devices",()=>new Promise((e,r)=>{vi.spyOn(i,"getAllTransports").mockReturnValue([]);const o=new v.ListenToAvailableDevicesUseCase(i),s=[];o.execute().subscribe({next:t=>{s.push(t)},complete:()=>{try{expect(s).toEqual([[]]),e()}catch(t){r(t)}},error:t=>{r(t)}})}))}),describe("when one transport is available",()=>{it("should return discovered devices from one transport",()=>{const{transportA:e,transportAKnownDevicesSubject:r}=p();vi.spyOn(i,"getAllTransports").mockReturnValue([e]);const o=[];new v.ListenToAvailableDevicesUseCase(i).execute().subscribe(s=>{o.push(s)}),r.next([c("transportA-device1")]),expect(o[0]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),name:"Ledger Nano X",transport:"mock",rssi:void 0}]),r.next([c("transportA-device1"),c("transportA-device2")]),expect(o[1]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0},{id:"transportA-device2",deviceModel:n("transportA-device2"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),r.next([c("transportA-device2")]),expect(o[2]).toEqual([{id:"transportA-device2",deviceModel:n("transportA-device2"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),r.next([]),expect(o[3]).toEqual([])})}),describe("when multiple transports are available",()=>{it("should return discovered devices from one of the transports as soon as it emits",()=>{const{transportAKnownDevicesSubject:e,transportA:r,transportB:o}=p();vi.spyOn(i,"getAllTransports").mockReturnValue([r,o]);const s=[],t=vi.fn(),a=vi.fn();new v.ListenToAvailableDevicesUseCase(i).execute().subscribe({next:d=>{s.push(d)},error:t,complete:a}),e.next([c("transportA-device1")]),expect(s[0]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),e.complete(),expect(t).not.toHaveBeenCalled(),expect(a).not.toHaveBeenCalled()}),it("should combine discovered devices from multiple transports",()=>{const{transportAKnownDevicesSubject:e,transportBKnownDevicesSubject:r,transportA:o,transportB:s}=p(),t=[];vi.spyOn(i,"getAllTransports").mockReturnValue([o,s]);const a=vi.fn(),d=vi.fn();new v.ListenToAvailableDevicesUseCase(i).execute().subscribe({next:b=>{t.push(b)},error:a,complete:d}),e.next([c("transportA-device1")]),expect(t[0]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),r.next([c("transportB-device1")]),expect(t[1]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0},{id:"transportB-device1",deviceModel:n("transportB-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),r.next([c("transportB-device1"),c("transportB-device2")]),expect(t[2]).toEqual([{id:"transportA-device1",deviceModel:n("transportA-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0},{id:"transportB-device1",deviceModel:n("transportB-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0},{id:"transportB-device2",deviceModel:n("transportB-device2"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),e.next([]),expect(t[3]).toEqual([{id:"transportB-device1",deviceModel:n("transportB-device1"),transport:"mock",name:"Ledger Nano X",rssi:void 0},{id:"transportB-device2",deviceModel:n("transportB-device2"),transport:"mock",name:"Ledger Nano X",rssi:void 0}]),e.complete(),expect(a).not.toHaveBeenCalled(),expect(d).not.toHaveBeenCalled(),r.next([]),expect(t[4]).toEqual([]),r.complete(),expect(a).not.toHaveBeenCalled(),expect(d).toHaveBeenCalled()})})});
2
+ //# sourceMappingURL=ListenToAvailableDevicesUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/discovery/use-case/ListenToAvailableDevicesUseCase.test.ts"],
4
+ "sourcesContent": ["import { Subject } from \"rxjs\";\n\nimport { type DeviceId, DeviceModel } from \"@api/device/DeviceModel\";\nimport { deviceModelStubBuilder } from \"@api/device-model/model/DeviceModel.stub\";\nimport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { type DiscoveredDevice, type Transport } from \"@api/types\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { ListenToAvailableDevicesUseCase } from \"./ListenToAvailableDevicesUseCase\";\n\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\nlet transportService: TransportService;\nfunction makeMockTransport(props: Partial<Transport>): Transport {\n return {\n listenToAvailableDevices: vi.fn(),\n connect: vi.fn(),\n disconnect: vi.fn(),\n startDiscovering: vi.fn(),\n stopDiscovering: vi.fn(),\n getIdentifier: vi.fn(),\n isSupported: vi.fn(),\n ...props,\n };\n}\n\nconst mockInternalDeviceModel = deviceModelStubBuilder();\nfunction makeMockDeviceModel(id: DeviceId): DeviceModel {\n return new DeviceModel({\n id,\n model: mockInternalDeviceModel.id,\n name: mockInternalDeviceModel.productName,\n });\n}\n\nfunction setup2MockTransports() {\n const transportAKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportBKnownDevicesSubject = new Subject<\n TransportDiscoveredDevice[]\n >();\n const transportA = makeMockTransport({\n listenToAvailableDevices: () =>\n transportAKnownDevicesSubject.asObservable(),\n });\n const transportB = makeMockTransport({\n listenToAvailableDevices: () =>\n transportBKnownDevicesSubject.asObservable(),\n });\n return {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n };\n}\n\nfunction makeMockTransportDiscoveredDevice(\n id: string,\n): TransportDiscoveredDevice {\n return {\n id,\n deviceModel: mockInternalDeviceModel,\n transport: \"mock\",\n };\n}\n\ndescribe(\"ListenToKnownDevicesUseCase\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n describe(\"when no transports are available\", () => {\n it(\"should return no discovered devices\", () =>\n new Promise<void>((resolve, reject) => {\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([]);\n\n const useCase = new ListenToAvailableDevicesUseCase(transportService);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n useCase.execute().subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n complete: () => {\n try {\n expect(observedDiscoveredDevices).toEqual([[]]);\n resolve();\n } catch (error) {\n reject(error as Error);\n }\n },\n error: (error) => {\n reject(error);\n },\n });\n }));\n });\n\n describe(\"when one transport is available\", () => {\n it(\"should return discovered devices from one transport\", () => {\n const { transportA, transportAKnownDevicesSubject } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe((devices) => {\n observedDiscoveredDevices.push(devices);\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n name: \"Ledger Nano X\",\n transport: \"mock\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 2 known devices\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 1 known device (device1 disconnects)\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device2\",\n deviceModel: makeMockDeviceModel(\"transportA-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices (device2 disconnects)\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([]);\n });\n });\n\n describe(\"when multiple transports are available\", () => {\n it(\"should return discovered devices from one of the transports as soon as it emits\", () => {\n const { transportAKnownDevicesSubject, transportA, transportB } =\n setup2MockTransports();\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n });\n\n it(\"should combine discovered devices from multiple transports\", () => {\n const {\n transportAKnownDevicesSubject,\n transportBKnownDevicesSubject,\n transportA,\n transportB,\n } = setup2MockTransports();\n\n const observedDiscoveredDevices: DiscoveredDevice[][] = [];\n\n vi.spyOn(transportService, \"getAllTransports\").mockReturnValue([\n transportA,\n transportB,\n ]);\n\n const onError = vi.fn();\n const onComplete = vi.fn();\n new ListenToAvailableDevicesUseCase(transportService)\n .execute()\n .subscribe({\n next: (devices) => {\n observedDiscoveredDevices.push(devices);\n },\n error: onError,\n complete: onComplete,\n });\n\n // When transportA emits 1 known device\n transportAKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportA-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[0]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 1 known device\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n ]);\n\n expect(observedDiscoveredDevices[1]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportB emits 2 known devices\n transportBKnownDevicesSubject.next([\n makeMockTransportDiscoveredDevice(\"transportB-device1\"),\n makeMockTransportDiscoveredDevice(\"transportB-device2\"),\n ]);\n\n expect(observedDiscoveredDevices[2]).toEqual([\n {\n id: \"transportA-device1\",\n deviceModel: makeMockDeviceModel(\"transportA-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transportA emits 0 known devices\n transportAKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[3]).toEqual([\n {\n id: \"transportB-device1\",\n deviceModel: makeMockDeviceModel(\"transportB-device1\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n {\n id: \"transportB-device2\",\n deviceModel: makeMockDeviceModel(\"transportB-device2\"),\n transport: \"mock\",\n name: \"Ledger Nano X\",\n rssi: undefined,\n },\n ]);\n\n // When transport A listen observable completes\n transportAKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).not.toHaveBeenCalled(); // Should not complete yet because transportB has not completed\n\n // When transport B emits 0 known devices\n transportBKnownDevicesSubject.next([]);\n\n expect(observedDiscoveredDevices[4]).toEqual([]);\n\n // When transport B listen observable completes\n transportBKnownDevicesSubject.complete();\n\n expect(onError).not.toHaveBeenCalled();\n expect(onComplete).toHaveBeenCalled(); // Should complete now because all transports have completed\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_rxjs", "import_DeviceModel", "import_DefaultTransportService", "import_ListenToAvailableDevicesUseCase", "transportService", "makeMockTransport", "props", "mockInternalDeviceModel", "makeMockDeviceModel", "id", "setup2MockTransports", "transportAKnownDevicesSubject", "transportBKnownDevicesSubject", "transportA", "transportB", "makeMockTransportDiscoveredDevice", "resolve", "reject", "useCase", "observedDiscoveredDevices", "devices", "error", "onError", "onComplete"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var h=(t,r)=>{for(var o in r)c(t,o,{get:r[o],enumerable:!0})},S=(t,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of u(r))!g.call(t,e)&&e!==o&&c(t,e,{get:()=>r[e],enumerable:!(i=m(r,e))||i.enumerable});return t};var b=t=>S(c({},"__esModule",{value:!0}),t),d=(t,r,o,i)=>{for(var e=i>1?void 0:i?m(r,o):r,s=t.length-1,v;s>=0;s--)(v=t[s])&&(e=(i?v(r,o,e):v(e))||e);return i&&e&&c(r,o,e),e},D=(t,r)=>(o,i)=>r(o,i,t);var w={};h(w,{StartDiscoveringUseCase:()=>n});module.exports=b(w);var a=require("inversify"),p=require("rxjs"),f=require("../../../api/device/DeviceModel"),l=require("../../../api/transport/model/Errors"),T=require("../../transport/di/transportDiTypes");let n=class{constructor(r){this._transportService=r}mapDiscoveredDevice(r){const o=new f.DeviceModel({id:r.id,model:r.deviceModel.id,name:r.deviceModel.productName});return{id:r.id,deviceModel:o,transport:r.transport}}execute({transport:r}){if(!r){const i=this._transportService.getAllTransports();return(0,p.of)(...i).pipe((0,p.mergeMap)(e=>e.startDiscovering().pipe((0,p.map)(s=>this.mapDiscoveredDevice(s)))))}return this._transportService.getTransport(r).caseOf({Just:i=>i.startDiscovering().pipe((0,p.map)(e=>this.mapDiscoveredDevice(e))),Nothing:()=>{throw new l.TransportNotSupportedError(new Error("Unknown transport"))}})}};n=d([(0,a.injectable)(),D(0,(0,a.inject)(T.transportDiTypes.TransportService))],n);0&&(module.exports={StartDiscoveringUseCase});
1
+ "use strict";var a=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var h=(o,r)=>{for(var t in r)a(o,t,{get:r[t],enumerable:!0})},S=(o,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of u(r))!g.call(o,e)&&e!==t&&a(o,e,{get:()=>r[e],enumerable:!(i=v(r,e))||i.enumerable});return o};var b=o=>S(a({},"__esModule",{value:!0}),o),d=(o,r,t,i)=>{for(var e=i>1?void 0:i?v(r,t):r,p=o.length-1,m;p>=0;p--)(m=o[p])&&(e=(i?m(r,t,e):m(e))||e);return i&&e&&a(r,t,e),e},D=(o,r)=>(t,i)=>r(t,i,o);var w={};h(w,{StartDiscoveringUseCase:()=>n});module.exports=b(w);var c=require("inversify"),s=require("rxjs"),f=require("../../../api/device/DeviceModel"),l=require("../../../api/transport/model/Errors"),T=require("../../transport/di/transportDiTypes");let n=class{constructor(r){this._transportService=r}mapDiscoveredDevice(r){const t=new f.DeviceModel({id:r.id,model:r.deviceModel.id,name:r.deviceModel.productName});return{id:r.id,deviceModel:t,transport:r.transport,name:r.name||t.name,rssi:r.rssi}}execute({transport:r}){if(!r){const i=this._transportService.getAllTransports();return(0,s.of)(...i).pipe((0,s.mergeMap)(e=>e.startDiscovering().pipe((0,s.map)(p=>this.mapDiscoveredDevice(p)))))}return this._transportService.getTransport(r).caseOf({Just:i=>i.startDiscovering().pipe((0,s.map)(e=>this.mapDiscoveredDevice(e))),Nothing:()=>{throw new l.TransportNotSupportedError(new Error("Unknown transport"))}})}};n=d([(0,c.injectable)(),D(0,(0,c.inject)(T.transportDiTypes.TransportService))],n);0&&(module.exports={StartDiscoveringUseCase});
2
2
  //# sourceMappingURL=StartDiscoveringUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/StartDiscoveringUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { map, mergeMap, Observable, of } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport { DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport { TransportNotSupportedError } from \"@api/transport/model/Errors\";\nimport { TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nexport type StartDiscoveringUseCaseArgs = {\n /**\n * Identifier of the transport to start discovering devices.\n * Can be undefined to discover all available transports in parralel.\n */\n transport?: TransportIdentifier;\n};\n\n/**\n * Starts discovering devices connected.\n *\n * For the WebHID implementation, this use-case needs to be called as a result of an user interaction (button \"click\" event for ex).\n */\n@injectable()\nexport class StartDiscoveringUseCase {\n constructor(\n @inject(transportDiTypes.TransportService)\n private readonly _transportService: TransportService,\n ) {}\n\n private mapDiscoveredDevice(\n device: TransportDiscoveredDevice,\n ): DiscoveredDevice {\n const deviceModel = new DeviceModel({\n id: device.id,\n model: device.deviceModel.id,\n name: device.deviceModel.productName,\n });\n return {\n id: device.id,\n deviceModel,\n transport: device.transport,\n };\n }\n\n execute({\n transport,\n }: StartDiscoveringUseCaseArgs): Observable<DiscoveredDevice> {\n if (!transport) {\n const transports = this._transportService.getAllTransports();\n return of(...transports).pipe(\n mergeMap((instance) =>\n instance\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device))),\n ),\n );\n }\n\n const instance = this._transportService.getTransport(transport);\n\n return instance.caseOf({\n Just: (t) => {\n return t\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device)));\n },\n Nothing: () => {\n throw new TransportNotSupportedError(new Error(\"Unknown transport\"));\n },\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA8C,gBAE9CC,EAA4B,mCAE5BC,EAA2C,uCAG3CC,EAAiC,mDAiB1B,IAAMC,EAAN,KAA8B,CACnC,YAEmBC,EACjB,CADiB,uBAAAA,CAChB,CAEK,oBACNC,EACkB,CAClB,MAAMC,EAAc,IAAI,cAAY,CAClC,GAAID,EAAO,GACX,MAAOA,EAAO,YAAY,GAC1B,KAAMA,EAAO,YAAY,WAC3B,CAAC,EACD,MAAO,CACL,GAAIA,EAAO,GACX,YAAAC,EACA,UAAWD,EAAO,SACpB,CACF,CAEA,QAAQ,CACN,UAAAE,CACF,EAA8D,CAC5D,GAAI,CAACA,EAAW,CACd,MAAMC,EAAa,KAAK,kBAAkB,iBAAiB,EAC3D,SAAO,MAAG,GAAGA,CAAU,EAAE,QACvB,YAAUC,GACRA,EACG,iBAAiB,EACjB,QAAK,OAAKJ,GAAW,KAAK,oBAAoBA,CAAM,CAAC,CAAC,CAC3D,CACF,CACF,CAIA,OAFiB,KAAK,kBAAkB,aAAaE,CAAS,EAE9C,OAAO,CACrB,KAAOG,GACEA,EACJ,iBAAiB,EACjB,QAAK,OAAKL,GAAW,KAAK,oBAAoBA,CAAM,CAAC,CAAC,EAE3D,QAAS,IAAM,CACb,MAAM,IAAI,6BAA2B,IAAI,MAAM,mBAAmB,CAAC,CACrE,CACF,CAAC,CACH,CACF,EAhDaF,EAANQ,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,mBAAiB,gBAAgB,IAFhCT",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { map, mergeMap, Observable, of } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport { DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport { TransportNotSupportedError } from \"@api/transport/model/Errors\";\nimport { TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport { TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nexport type StartDiscoveringUseCaseArgs = {\n /**\n * Identifier of the transport to start discovering devices.\n * Can be undefined to discover all available transports in parralel.\n */\n transport?: TransportIdentifier;\n};\n\n/**\n * Starts discovering devices connected.\n *\n * For the WebHID implementation, this use-case needs to be called as a result of an user interaction (button \"click\" event for ex).\n */\n@injectable()\nexport class StartDiscoveringUseCase {\n constructor(\n @inject(transportDiTypes.TransportService)\n private readonly _transportService: TransportService,\n ) {}\n\n private mapDiscoveredDevice(\n device: TransportDiscoveredDevice,\n ): DiscoveredDevice {\n const deviceModel = new DeviceModel({\n id: device.id,\n model: device.deviceModel.id,\n name: device.deviceModel.productName,\n });\n return {\n id: device.id,\n deviceModel,\n transport: device.transport,\n name: device.name || deviceModel.name,\n rssi: device.rssi,\n };\n }\n\n execute({\n transport,\n }: StartDiscoveringUseCaseArgs): Observable<DiscoveredDevice> {\n if (!transport) {\n const transports = this._transportService.getAllTransports();\n return of(...transports).pipe(\n mergeMap((instance) =>\n instance\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device))),\n ),\n );\n }\n\n const instance = this._transportService.getTransport(transport);\n\n return instance.caseOf({\n Just: (t) => {\n return t\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device)));\n },\n Nothing: () => {\n throw new TransportNotSupportedError(new Error(\"Unknown transport\"));\n },\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA8C,gBAE9CC,EAA4B,mCAE5BC,EAA2C,uCAG3CC,EAAiC,mDAiB1B,IAAMC,EAAN,KAA8B,CACnC,YAEmBC,EACjB,CADiB,uBAAAA,CAChB,CAEK,oBACNC,EACkB,CAClB,MAAMC,EAAc,IAAI,cAAY,CAClC,GAAID,EAAO,GACX,MAAOA,EAAO,YAAY,GAC1B,KAAMA,EAAO,YAAY,WAC3B,CAAC,EACD,MAAO,CACL,GAAIA,EAAO,GACX,YAAAC,EACA,UAAWD,EAAO,UAClB,KAAMA,EAAO,MAAQC,EAAY,KACjC,KAAMD,EAAO,IACf,CACF,CAEA,QAAQ,CACN,UAAAE,CACF,EAA8D,CAC5D,GAAI,CAACA,EAAW,CACd,MAAMC,EAAa,KAAK,kBAAkB,iBAAiB,EAC3D,SAAO,MAAG,GAAGA,CAAU,EAAE,QACvB,YAAUC,GACRA,EACG,iBAAiB,EACjB,QAAK,OAAKJ,GAAW,KAAK,oBAAoBA,CAAM,CAAC,CAAC,CAC3D,CACF,CACF,CAIA,OAFiB,KAAK,kBAAkB,aAAaE,CAAS,EAE9C,OAAO,CACrB,KAAOG,GACEA,EACJ,iBAAiB,EACjB,QAAK,OAAKL,GAAW,KAAK,oBAAoBA,CAAM,CAAC,CAAC,EAE3D,QAAS,IAAM,CACb,MAAM,IAAI,6BAA2B,IAAI,MAAM,mBAAmB,CAAC,CACrE,CACF,CAAC,CACH,CACF,EAlDaF,EAANQ,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,mBAAiB,gBAAgB,IAFhCT",
6
6
  "names": ["StartDiscoveringUseCase_exports", "__export", "StartDiscoveringUseCase", "__toCommonJS", "import_inversify", "import_rxjs", "import_DeviceModel", "import_Errors", "import_transportDiTypes", "StartDiscoveringUseCase", "_transportService", "device", "deviceModel", "transport", "transports", "instance", "t", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=require("purify-ts"),s=require("rxjs"),n=require("../../../api/device/DeviceModel"),a=require("../../../api/transport/model/__mocks__/TransportMock"),d=require("../../transport/service/DefaultTransportService"),p=require("./StartDiscoveringUseCase");vi.mock("@internal/transport/service/DefaultTransportService");let r,o;describe("StartDiscoveringUseCase",()=>{const v={id:"internal-discovered-device-id",deviceModel:{id:"nanoSP",productName:"productName"},transport:"USB"};beforeEach(()=>{r=new a.TransportMock,o=new d.DefaultTransportService}),afterEach(()=>{vi.restoreAllMocks()}),test("If connect use case encounter an error, return it",()=>new Promise((m,t)=>{const i=vi.fn(()=>(0,s.of)(v));vi.spyOn(r,"startDiscovering").mockImplementation(i),vi.spyOn(o,"getTransport").mockReturnValue(c.Maybe.of(r));const l=new p.StartDiscoveringUseCase(o).execute({transport:"USB"});expect(i).toHaveBeenCalled(),l.subscribe({next:e=>{try{expect(e).toStrictEqual({id:"internal-discovered-device-id",transport:"USB",deviceModel:new n.DeviceModel({id:"internal-discovered-device-id",model:"nanoSP",name:"productName"})}),m()}catch(D){t(D)}},error:e=>{t(e)}})}))});
1
+ "use strict";var s=require("purify-ts"),c=require("rxjs"),n=require("../../../api/device/DeviceModel"),a=require("../../../api/transport/model/__mocks__/TransportMock"),d=require("../../transport/service/DefaultTransportService"),p=require("./StartDiscoveringUseCase");vi.mock("@internal/transport/service/DefaultTransportService");let r,o;describe("StartDiscoveringUseCase",()=>{const v={id:"internal-discovered-device-id",deviceModel:{id:"nanoSP",productName:"productName"},transport:"USB",rssi:void 0};beforeEach(()=>{r=new a.TransportMock,o=new d.DefaultTransportService}),afterEach(()=>{vi.restoreAllMocks()}),test("If connect use case encounter an error, return it",()=>new Promise((m,t)=>{const i=vi.fn(()=>(0,c.of)(v));vi.spyOn(r,"startDiscovering").mockImplementation(i),vi.spyOn(o,"getTransport").mockReturnValue(s.Maybe.of(r));const l=new p.StartDiscoveringUseCase(o).execute({transport:"USB"});expect(i).toHaveBeenCalled(),l.subscribe({next:e=>{try{expect(e).toStrictEqual({id:"internal-discovered-device-id",transport:"USB",name:"productName",deviceModel:new n.DeviceModel({id:"internal-discovered-device-id",model:"nanoSP",name:"productName"}),rssi:void 0}),m()}catch(D){t(D)}},error:e=>{t(e)}})}))});
2
2
  //# sourceMappingURL=StartDiscoveringUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/discovery/use-case/StartDiscoveringUseCase.test.ts"],
4
- "sourcesContent": ["import { Maybe } from \"purify-ts\";\nimport { of } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport { type TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport {\n type DeviceModelId,\n type DiscoveredDevice,\n type Transport,\n} from \"@api/types\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { StartDiscoveringUseCase } from \"./StartDiscoveringUseCase\";\n\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\nlet transport: Transport;\nlet transportService: TransportService;\n\ndescribe(\"StartDiscoveringUseCase\", () => {\n const stubDiscoveredDevice: TransportDiscoveredDevice = {\n id: \"internal-discovered-device-id\",\n deviceModel: {\n id: \"nanoSP\" as DeviceModelId,\n productName: \"productName\",\n } as TransportDeviceModel,\n transport: \"USB\",\n };\n\n beforeEach(() => {\n transport = new TransportMock();\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n test(\"If connect use case encounter an error, return it\", () =>\n new Promise<void>((resolve, reject) => {\n const mockedStartDiscovering = vi.fn(() => {\n return of(stubDiscoveredDevice);\n });\n vi.spyOn(transport, \"startDiscovering\").mockImplementation(\n mockedStartDiscovering,\n );\n\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n\n const usecase = new StartDiscoveringUseCase(transportService);\n\n const discover = usecase.execute({ transport: \"USB\" });\n\n expect(mockedStartDiscovering).toHaveBeenCalled();\n\n discover.subscribe({\n next: (discoveredDevice) => {\n try {\n expect(discoveredDevice).toStrictEqual({\n id: \"internal-discovered-device-id\",\n transport: \"USB\",\n deviceModel: new DeviceModel({\n id: \"internal-discovered-device-id\",\n model: \"nanoSP\" as DeviceModelId,\n name: \"productName\",\n }),\n } as DiscoveredDevice);\n resolve();\n } catch (error) {\n reject(error);\n }\n },\n error: (error) => {\n reject(error);\n },\n });\n }));\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAsB,qBACtBC,EAAmB,gBAEnBC,EAA4B,mCAE5BC,EAA8B,wDAO9BC,EAAwC,+DAGxCC,EAAwC,qCAExC,GAAG,KAAK,qDAAqD,EAE7D,IAAIC,EACAC,EAEJ,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAkD,CACtD,GAAI,gCACJ,YAAa,CACX,GAAI,SACJ,YAAa,aACf,EACA,UAAW,KACb,EAEA,WAAW,IAAM,CACfF,EAAY,IAAI,gBAEhBC,EAAmB,IAAI,yBACzB,CAAC,EAED,UAAU,IAAM,CACd,GAAG,gBAAgB,CACrB,CAAC,EAED,KAAK,oDAAqD,IACxD,IAAI,QAAc,CAACE,EAASC,IAAW,CACrC,MAAMC,EAAyB,GAAG,GAAG,OAC5B,MAAGH,CAAoB,CAC/B,EACD,GAAG,MAAMF,EAAW,kBAAkB,EAAE,mBACtCK,CACF,EAEA,GAAG,MAAMJ,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EAIA,MAAMM,EAFU,IAAI,0BAAwBL,CAAgB,EAEnC,QAAQ,CAAE,UAAW,KAAM,CAAC,EAErD,OAAOI,CAAsB,EAAE,iBAAiB,EAEhDC,EAAS,UAAU,CACjB,KAAOC,GAAqB,CAC1B,GAAI,CACF,OAAOA,CAAgB,EAAE,cAAc,CACrC,GAAI,gCACJ,UAAW,MACX,YAAa,IAAI,cAAY,CAC3B,GAAI,gCACJ,MAAO,SACP,KAAM,aACR,CAAC,CACH,CAAqB,EACrBJ,EAAQ,CACV,OAASK,EAAO,CACdJ,EAAOI,CAAK,CACd,CACF,EACA,MAAQA,GAAU,CAChBJ,EAAOI,CAAK,CACd,CACF,CAAC,CACH,CAAC,CAAC,CACN,CAAC",
4
+ "sourcesContent": ["import { Maybe } from \"purify-ts\";\nimport { of } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport { type TransportDeviceModel } from \"@api/device-model/model/DeviceModel\";\nimport { TransportMock } from \"@api/transport/model/__mocks__/TransportMock\";\nimport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nimport {\n type DeviceModelId,\n type DiscoveredDevice,\n type Transport,\n} from \"@api/types\";\nimport { DefaultTransportService } from \"@internal/transport/service/DefaultTransportService\";\nimport { type TransportService } from \"@internal/transport/service/TransportService\";\n\nimport { StartDiscoveringUseCase } from \"./StartDiscoveringUseCase\";\n\nvi.mock(\"@internal/transport/service/DefaultTransportService\");\n\nlet transport: Transport;\nlet transportService: TransportService;\n\ndescribe(\"StartDiscoveringUseCase\", () => {\n const stubDiscoveredDevice: TransportDiscoveredDevice = {\n id: \"internal-discovered-device-id\",\n deviceModel: {\n id: \"nanoSP\" as DeviceModelId,\n productName: \"productName\",\n } as TransportDeviceModel,\n transport: \"USB\",\n rssi: undefined,\n };\n\n beforeEach(() => {\n transport = new TransportMock();\n // @ts-expect-error mock\n transportService = new DefaultTransportService();\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n test(\"If connect use case encounter an error, return it\", () =>\n new Promise<void>((resolve, reject) => {\n const mockedStartDiscovering = vi.fn(() => {\n return of(stubDiscoveredDevice);\n });\n vi.spyOn(transport, \"startDiscovering\").mockImplementation(\n mockedStartDiscovering,\n );\n\n vi.spyOn(transportService, \"getTransport\").mockReturnValue(\n Maybe.of(transport),\n );\n\n const usecase = new StartDiscoveringUseCase(transportService);\n\n const discover = usecase.execute({ transport: \"USB\" });\n\n expect(mockedStartDiscovering).toHaveBeenCalled();\n\n discover.subscribe({\n next: (discoveredDevice) => {\n try {\n expect(discoveredDevice).toStrictEqual({\n id: \"internal-discovered-device-id\",\n transport: \"USB\",\n name: \"productName\",\n deviceModel: new DeviceModel({\n id: \"internal-discovered-device-id\",\n model: \"nanoSP\" as DeviceModelId,\n name: \"productName\",\n }),\n rssi: undefined,\n } as DiscoveredDevice);\n resolve();\n } catch (error) {\n reject(error);\n }\n },\n error: (error) => {\n reject(error);\n },\n });\n }));\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAsB,qBACtBC,EAAmB,gBAEnBC,EAA4B,mCAE5BC,EAA8B,wDAO9BC,EAAwC,+DAGxCC,EAAwC,qCAExC,GAAG,KAAK,qDAAqD,EAE7D,IAAIC,EACAC,EAEJ,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAkD,CACtD,GAAI,gCACJ,YAAa,CACX,GAAI,SACJ,YAAa,aACf,EACA,UAAW,MACX,KAAM,MACR,EAEA,WAAW,IAAM,CACfF,EAAY,IAAI,gBAEhBC,EAAmB,IAAI,yBACzB,CAAC,EAED,UAAU,IAAM,CACd,GAAG,gBAAgB,CACrB,CAAC,EAED,KAAK,oDAAqD,IACxD,IAAI,QAAc,CAACE,EAASC,IAAW,CACrC,MAAMC,EAAyB,GAAG,GAAG,OAC5B,MAAGH,CAAoB,CAC/B,EACD,GAAG,MAAMF,EAAW,kBAAkB,EAAE,mBACtCK,CACF,EAEA,GAAG,MAAMJ,EAAkB,cAAc,EAAE,gBACzC,QAAM,GAAGD,CAAS,CACpB,EAIA,MAAMM,EAFU,IAAI,0BAAwBL,CAAgB,EAEnC,QAAQ,CAAE,UAAW,KAAM,CAAC,EAErD,OAAOI,CAAsB,EAAE,iBAAiB,EAEhDC,EAAS,UAAU,CACjB,KAAOC,GAAqB,CAC1B,GAAI,CACF,OAAOA,CAAgB,EAAE,cAAc,CACrC,GAAI,gCACJ,UAAW,MACX,KAAM,cACN,YAAa,IAAI,cAAY,CAC3B,GAAI,gCACJ,MAAO,SACP,KAAM,aACR,CAAC,EACD,KAAM,MACR,CAAqB,EACrBJ,EAAQ,CACV,OAASK,EAAO,CACdJ,EAAOI,CAAK,CACd,CACF,EACA,MAAQA,GAAU,CAChBJ,EAAOI,CAAK,CACd,CACF,CAAC,CACH,CAAC,CAAC,CACN,CAAC",
6
6
  "names": ["import_purify_ts", "import_rxjs", "import_DeviceModel", "import_TransportMock", "import_DefaultTransportService", "import_StartDiscoveringUseCase", "transport", "transportService", "stubDiscoveredDevice", "resolve", "reject", "mockedStartDiscovering", "discover", "discoveredDevice", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var g=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var M=(o,r)=>{for(var e in r)g(o,e,{get:r[e],enumerable:!0})},A=(o,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of F(r))!_.call(o,t)&&t!==e&&g(o,t,{get:()=>r[t],enumerable:!(i=m(r,t))||i.enumerable});return o};var b=o=>A(g({},"__esModule",{value:!0}),o),f=(o,r,e,i)=>{for(var t=i>1?void 0:i?m(r,e):r,c=o.length-1,d;c>=0;c--)(d=o[c])&&(t=(i?d(r,e,t):d(t))||t);return i&&t&&g(r,e,t),t},s=(o,r)=>(e,i)=>r(e,i,o);var D={};M(D,{DefaultTransportService:()=>p});module.exports=b(D);var a=require("inversify"),n=require("purify-ts"),v=require("../../../api/transport/model/Errors"),h=require("../../device-model/di/deviceModelTypes"),y=require("../../device-session/di/deviceSessionTypes"),S=require("../../logger-publisher/di/loggerTypes"),l=require("../../transport/di/transportDiTypes");let p=class{constructor(r,e,i,t,c,d){this._config=e;this._loggerModuleFactory=i;this._deviceModelDataSource=t;this._apduSenderServiceFactory=c;this._apduReceiverServiceFactory=d;if(this._logger=i("TransportService"),r.length===0)throw this._logger.warn("No transports provided, please check your configuration"),new v.NoTransportProvidedError("No transports provided, please check your configuration");for(const T of r){const u=this.addTransport(T);if(u.isLeft())throw u.extract()}}_transports=new Map;_logger;addTransport(r){const e=r({deviceModelDataSource:this._deviceModelDataSource,loggerServiceFactory:this._loggerModuleFactory,config:this._config,apduSenderServiceFactory:this._apduSenderServiceFactory,apduReceiverServiceFactory:this._apduReceiverServiceFactory});return this.addTransportInternal(e)}addTransportInternal(r){return this.getTransport(r.getIdentifier()).isJust()?(this._logger.warn(`Transport ${r.getIdentifier()} already exists, please check your configuration`),(0,n.Left)(new v.TransportAlreadyExistsError(`Transport ${r.getIdentifier()} already exists, please check your configuration`))):(this._transports.set(r.getIdentifier(),r),(0,n.Right)(void 0))}getTransport(r){return n.Maybe.fromNullable(this._transports.get(r))}getAllTransports(){return Array.from(this._transports.values())}};p=f([(0,a.injectable)(),s(0,(0,a.inject)(l.transportDiTypes.TransportsInput)),s(1,(0,a.inject)(l.transportDiTypes.DmkConfig)),s(2,(0,a.inject)(S.loggerTypes.LoggerPublisherServiceFactory)),s(3,(0,a.inject)(h.deviceModelTypes.DeviceModelDataSource)),s(4,(0,a.inject)(y.deviceSessionTypes.ApduSenderServiceFactory)),s(5,(0,a.inject)(y.deviceSessionTypes.ApduReceiverServiceFactory))],p);0&&(module.exports={DefaultTransportService});
1
+ "use strict";var g=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var M=(o,r)=>{for(var e in r)g(o,e,{get:r[e],enumerable:!0})},A=(o,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of F(r))!_.call(o,t)&&t!==e&&g(o,t,{get:()=>r[t],enumerable:!(i=u(r,t))||i.enumerable});return o};var D=o=>A(g({},"__esModule",{value:!0}),o),f=(o,r,e,i)=>{for(var t=i>1?void 0:i?u(r,e):r,c=o.length-1,d;c>=0;c--)(d=o[c])&&(t=(i?d(r,e,t):d(t))||t);return i&&t&&g(r,e,t),t},n=(o,r)=>(e,i)=>r(e,i,o);var b={};M(b,{DefaultTransportService:()=>p});module.exports=D(b);var a=require("inversify"),s=require("purify-ts"),v=require("../../../api/transport/model/Errors"),h=require("../../device-model/di/deviceModelTypes"),y=require("../../device-session/di/deviceSessionTypes"),T=require("../../logger-publisher/di/loggerTypes"),l=require("../../transport/di/transportDiTypes");let p=class{constructor(r,e,i,t,c,d){this._config=e;this._loggerModuleFactory=i;this._deviceModelDataSource=t;this._apduSenderServiceFactory=c;this._apduReceiverServiceFactory=d;if(this._logger=i("TransportService"),r.length===0)throw this._logger.warn("No transports provided, please check your configuration"),new v.NoTransportProvidedError("No transports provided, please check your configuration");for(const S of r){const m=this.addTransport(S);if(m.isLeft())throw m.extract()}}_transports=new Map;_logger;addTransport(r){const e=r({deviceModelDataSource:this._deviceModelDataSource,loggerServiceFactory:this._loggerModuleFactory,config:this._config,apduSenderServiceFactory:this._apduSenderServiceFactory,apduReceiverServiceFactory:this._apduReceiverServiceFactory});return this.addTransportInternal(e)}addTransportInternal(r){return this.getTransport(r.getIdentifier()).isJust()?(this._logger.warn(`Transport ${r.getIdentifier()} already exists, please check your configuration`),(0,s.Left)(new v.TransportAlreadyExistsError(`Transport ${r.getIdentifier()} already exists, please check your configuration`))):(this._transports.set(r.getIdentifier(),r),(0,s.Right)(void 0))}getTransport(r){return s.Maybe.fromNullable(this._transports.get(r))}getAllTransports(){return Array.from(this._transports.values())}closeConnection(r){this.getTransport(r.transport).map(i=>i.disconnect({connectedDevice:r}))}};p=f([(0,a.injectable)(),n(0,(0,a.inject)(l.transportDiTypes.TransportsInput)),n(1,(0,a.inject)(l.transportDiTypes.DmkConfig)),n(2,(0,a.inject)(T.loggerTypes.LoggerPublisherServiceFactory)),n(3,(0,a.inject)(h.deviceModelTypes.DeviceModelDataSource)),n(4,(0,a.inject)(y.deviceSessionTypes.ApduSenderServiceFactory)),n(5,(0,a.inject)(y.deviceSessionTypes.ApduReceiverServiceFactory))],p);0&&(module.exports={DefaultTransportService});
2
2
  //# sourceMappingURL=DefaultTransportService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transport/service/DefaultTransportService.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\nimport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nimport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nimport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport {\n NoTransportProvidedError,\n TransportAlreadyExistsError,\n} from \"@api/transport/model/Errors\";\nimport { TransportFactory } from \"@api/transport/model/Transport\";\nimport { Transport } from \"@api/types\";\nimport { deviceModelTypes } from \"@internal/device-model/di/deviceModelTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\n\nimport { TransportService } from \"./TransportService\";\n\n@injectable()\nexport class DefaultTransportService implements TransportService {\n private _transports: Map<string, Transport> = new Map();\n private _logger: LoggerPublisherService;\n\n constructor(\n @inject(transportDiTypes.TransportsInput)\n _transports: TransportFactory[],\n @inject(transportDiTypes.DmkConfig)\n private readonly _config: DmkConfig,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n private readonly _loggerModuleFactory: (\n tag: string,\n ) => LoggerPublisherService,\n @inject(deviceModelTypes.DeviceModelDataSource)\n private readonly _deviceModelDataSource: DeviceModelDataSource,\n @inject(deviceSessionTypes.ApduSenderServiceFactory)\n private readonly _apduSenderServiceFactory: ApduSenderServiceFactory,\n @inject(deviceSessionTypes.ApduReceiverServiceFactory)\n private readonly _apduReceiverServiceFactory: ApduReceiverServiceFactory,\n ) {\n this._logger = _loggerModuleFactory(\"TransportService\");\n\n if (_transports.length === 0) {\n this._logger.warn(\n \"No transports provided, please check your configuration\",\n );\n\n throw new NoTransportProvidedError(\n \"No transports provided, please check your configuration\",\n );\n }\n\n for (const transport of _transports) {\n const either = this.addTransport(transport);\n\n if (either.isLeft()) {\n throw either.extract();\n }\n }\n }\n\n addTransport(\n factory: TransportFactory,\n ): Either<TransportAlreadyExistsError, void> {\n const transport = factory({\n deviceModelDataSource: this._deviceModelDataSource,\n loggerServiceFactory: this._loggerModuleFactory,\n config: this._config,\n apduSenderServiceFactory: this._apduSenderServiceFactory,\n apduReceiverServiceFactory: this._apduReceiverServiceFactory,\n });\n\n return this.addTransportInternal(transport);\n }\n\n private addTransportInternal(\n transport: Transport,\n ): Either<TransportAlreadyExistsError, void> {\n const MaybeTransport = this.getTransport(transport.getIdentifier());\n\n if (MaybeTransport.isJust()) {\n this._logger.warn(\n `Transport ${transport.getIdentifier()} already exists, please check your configuration`,\n );\n\n return Left(\n new TransportAlreadyExistsError(\n `Transport ${transport.getIdentifier()} already exists, please check your configuration`,\n ),\n );\n }\n\n this._transports.set(transport.getIdentifier(), transport);\n return Right(undefined);\n }\n\n getTransport(identifier: string): Maybe<Transport> {\n return Maybe.fromNullable(this._transports.get(identifier));\n }\n\n getAllTransports(): Transport[] {\n return Array.from(this._transports.values());\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA2C,qBAO3CC,EAGO,uCAGPC,EAAiC,sDACjCC,EAAmC,0DACnCC,EAA4B,qDAC5BC,EAAiC,mDAK1B,IAAMC,EAAN,KAA0D,CAI/D,YAEEC,EAEiBC,EAEAC,EAIAC,EAEAC,EAEAC,EACjB,CAXiB,aAAAJ,EAEA,0BAAAC,EAIA,4BAAAC,EAEA,+BAAAC,EAEA,iCAAAC,EAIjB,GAFA,KAAK,QAAUH,EAAqB,kBAAkB,EAElDF,EAAY,SAAW,EACzB,WAAK,QAAQ,KACX,yDACF,EAEM,IAAI,2BACR,yDACF,EAGF,UAAWM,KAAaN,EAAa,CACnC,MAAMO,EAAS,KAAK,aAAaD,CAAS,EAE1C,GAAIC,EAAO,OAAO,EAChB,MAAMA,EAAO,QAAQ,CAEzB,CACF,CAtCQ,YAAsC,IAAI,IAC1C,QAuCR,aACEC,EAC2C,CAC3C,MAAMF,EAAYE,EAAQ,CACxB,sBAAuB,KAAK,uBAC5B,qBAAsB,KAAK,qBAC3B,OAAQ,KAAK,QACb,yBAA0B,KAAK,0BAC/B,2BAA4B,KAAK,2BACnC,CAAC,EAED,OAAO,KAAK,qBAAqBF,CAAS,CAC5C,CAEQ,qBACNA,EAC2C,CAG3C,OAFuB,KAAK,aAAaA,EAAU,cAAc,CAAC,EAE/C,OAAO,GACxB,KAAK,QAAQ,KACX,aAAaA,EAAU,cAAc,CAAC,kDACxC,KAEO,QACL,IAAI,8BACF,aAAaA,EAAU,cAAc,CAAC,kDACxC,CACF,IAGF,KAAK,YAAY,IAAIA,EAAU,cAAc,EAAGA,CAAS,KAClD,SAAM,MAAS,EACxB,CAEA,aAAaG,EAAsC,CACjD,OAAO,QAAM,aAAa,KAAK,YAAY,IAAIA,CAAU,CAAC,CAC5D,CAEA,kBAAgC,CAC9B,OAAO,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC,CAC7C,CACF,EAnFaV,EAANW,EAAA,IADN,cAAW,EAMPC,EAAA,eAAO,mBAAiB,eAAe,GAEvCA,EAAA,eAAO,mBAAiB,SAAS,GAEjCA,EAAA,eAAO,cAAY,6BAA6B,GAIhDA,EAAA,eAAO,mBAAiB,qBAAqB,GAE7CA,EAAA,eAAO,qBAAmB,wBAAwB,GAElDA,EAAA,eAAO,qBAAmB,0BAA0B,IAjB5CZ",
6
- "names": ["DefaultTransportService_exports", "__export", "DefaultTransportService", "__toCommonJS", "import_inversify", "import_purify_ts", "import_Errors", "import_deviceModelTypes", "import_deviceSessionTypes", "import_loggerTypes", "import_transportDiTypes", "DefaultTransportService", "_transports", "_config", "_loggerModuleFactory", "_deviceModelDataSource", "_apduSenderServiceFactory", "_apduReceiverServiceFactory", "transport", "either", "factory", "identifier", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\nimport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nimport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nimport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport {\n NoTransportProvidedError,\n TransportAlreadyExistsError,\n} from \"@api/transport/model/Errors\";\nimport { TransportFactory } from \"@api/transport/model/Transport\";\nimport { TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { Transport } from \"@api/types\";\nimport { deviceModelTypes } from \"@internal/device-model/di/deviceModelTypes\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\n\nimport { TransportService } from \"./TransportService\";\n\n@injectable()\nexport class DefaultTransportService implements TransportService {\n private _transports: Map<string, Transport> = new Map();\n private _logger: LoggerPublisherService;\n\n constructor(\n @inject(transportDiTypes.TransportsInput)\n _transports: TransportFactory[],\n @inject(transportDiTypes.DmkConfig)\n private readonly _config: DmkConfig,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n private readonly _loggerModuleFactory: (\n tag: string,\n ) => LoggerPublisherService,\n @inject(deviceModelTypes.DeviceModelDataSource)\n private readonly _deviceModelDataSource: DeviceModelDataSource,\n @inject(deviceSessionTypes.ApduSenderServiceFactory)\n private readonly _apduSenderServiceFactory: ApduSenderServiceFactory,\n @inject(deviceSessionTypes.ApduReceiverServiceFactory)\n private readonly _apduReceiverServiceFactory: ApduReceiverServiceFactory,\n ) {\n this._logger = _loggerModuleFactory(\"TransportService\");\n\n if (_transports.length === 0) {\n this._logger.warn(\n \"No transports provided, please check your configuration\",\n );\n\n throw new NoTransportProvidedError(\n \"No transports provided, please check your configuration\",\n );\n }\n\n for (const transport of _transports) {\n const either = this.addTransport(transport);\n\n if (either.isLeft()) {\n throw either.extract();\n }\n }\n }\n\n addTransport(\n factory: TransportFactory,\n ): Either<TransportAlreadyExistsError, void> {\n const transport = factory({\n deviceModelDataSource: this._deviceModelDataSource,\n loggerServiceFactory: this._loggerModuleFactory,\n config: this._config,\n apduSenderServiceFactory: this._apduSenderServiceFactory,\n apduReceiverServiceFactory: this._apduReceiverServiceFactory,\n });\n\n return this.addTransportInternal(transport);\n }\n\n private addTransportInternal(\n transport: Transport,\n ): Either<TransportAlreadyExistsError, void> {\n const MaybeTransport = this.getTransport(transport.getIdentifier());\n\n if (MaybeTransport.isJust()) {\n this._logger.warn(\n `Transport ${transport.getIdentifier()} already exists, please check your configuration`,\n );\n\n return Left(\n new TransportAlreadyExistsError(\n `Transport ${transport.getIdentifier()} already exists, please check your configuration`,\n ),\n );\n }\n\n this._transports.set(transport.getIdentifier(), transport);\n return Right(undefined);\n }\n\n getTransport(identifier: string): Maybe<Transport> {\n return Maybe.fromNullable(this._transports.get(identifier));\n }\n\n getAllTransports(): Transport[] {\n return Array.from(this._transports.values());\n }\n\n closeConnection(connectedDevice: TransportConnectedDevice) {\n const transport = this.getTransport(connectedDevice.transport);\n transport.map((t) =>\n t.disconnect({\n connectedDevice,\n }),\n );\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAA2C,qBAO3CC,EAGO,uCAIPC,EAAiC,sDACjCC,EAAmC,0DACnCC,EAA4B,qDAC5BC,EAAiC,mDAK1B,IAAMC,EAAN,KAA0D,CAI/D,YAEEC,EAEiBC,EAEAC,EAIAC,EAEAC,EAEAC,EACjB,CAXiB,aAAAJ,EAEA,0BAAAC,EAIA,4BAAAC,EAEA,+BAAAC,EAEA,iCAAAC,EAIjB,GAFA,KAAK,QAAUH,EAAqB,kBAAkB,EAElDF,EAAY,SAAW,EACzB,WAAK,QAAQ,KACX,yDACF,EAEM,IAAI,2BACR,yDACF,EAGF,UAAWM,KAAaN,EAAa,CACnC,MAAMO,EAAS,KAAK,aAAaD,CAAS,EAE1C,GAAIC,EAAO,OAAO,EAChB,MAAMA,EAAO,QAAQ,CAEzB,CACF,CAtCQ,YAAsC,IAAI,IAC1C,QAuCR,aACEC,EAC2C,CAC3C,MAAMF,EAAYE,EAAQ,CACxB,sBAAuB,KAAK,uBAC5B,qBAAsB,KAAK,qBAC3B,OAAQ,KAAK,QACb,yBAA0B,KAAK,0BAC/B,2BAA4B,KAAK,2BACnC,CAAC,EAED,OAAO,KAAK,qBAAqBF,CAAS,CAC5C,CAEQ,qBACNA,EAC2C,CAG3C,OAFuB,KAAK,aAAaA,EAAU,cAAc,CAAC,EAE/C,OAAO,GACxB,KAAK,QAAQ,KACX,aAAaA,EAAU,cAAc,CAAC,kDACxC,KAEO,QACL,IAAI,8BACF,aAAaA,EAAU,cAAc,CAAC,kDACxC,CACF,IAGF,KAAK,YAAY,IAAIA,EAAU,cAAc,EAAGA,CAAS,KAClD,SAAM,MAAS,EACxB,CAEA,aAAaG,EAAsC,CACjD,OAAO,QAAM,aAAa,KAAK,YAAY,IAAIA,CAAU,CAAC,CAC5D,CAEA,kBAAgC,CAC9B,OAAO,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC,CAC7C,CAEA,gBAAgBC,EAA2C,CACvC,KAAK,aAAaA,EAAgB,SAAS,EACnD,IAAKC,GACbA,EAAE,WAAW,CACX,gBAAAD,CACF,CAAC,CACH,CACF,CACF,EA5FaX,EAANa,EAAA,IADN,cAAW,EAMPC,EAAA,eAAO,mBAAiB,eAAe,GAEvCA,EAAA,eAAO,mBAAiB,SAAS,GAEjCA,EAAA,eAAO,cAAY,6BAA6B,GAIhDA,EAAA,eAAO,mBAAiB,qBAAqB,GAE7CA,EAAA,eAAO,qBAAmB,wBAAwB,GAElDA,EAAA,eAAO,qBAAmB,0BAA0B,IAjB5Cd",
6
+ "names": ["DefaultTransportService_exports", "__export", "DefaultTransportService", "__toCommonJS", "import_inversify", "import_purify_ts", "import_Errors", "import_deviceModelTypes", "import_deviceSessionTypes", "import_loggerTypes", "import_transportDiTypes", "DefaultTransportService", "_transports", "_config", "_loggerModuleFactory", "_deviceModelDataSource", "_apduSenderServiceFactory", "_apduReceiverServiceFactory", "transport", "either", "factory", "identifier", "connectedDevice", "t", "__decorateClass", "__decorateParam"]
7
7
  }