@ledgerhq/device-transport-kit-react-native-hid 0.0.0-rnhid-transport-20250411151739 → 0.0.0-sol-signer-20251203164116

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 (72) hide show
  1. package/android/src/main/kotlin/com/ledger/androidtransporthid/TransportHidModule.kt +60 -20
  2. package/android/src/main/kotlin/com/ledger/androidtransporthid/bridge/serialization.kt +2 -0
  3. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMain/transport/usb/DefaultAndroidUsbTransport.kt +119 -34
  4. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMain/transport/usb/connection/AndroidUsbApduSender.kt +70 -29
  5. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMain/transport/usb/utils/UsbDeviceMapper.kt +3 -0
  6. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMainInternal/transport/deviceconnection/DeviceApduSender.kt +2 -1
  7. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMainInternal/transport/deviceconnection/DeviceConnection.kt +5 -4
  8. package/android/src/main/kotlin/com/ledger/devicesdk/shared/androidMainInternal/transport/deviceconnection/DeviceConnectionStateMachine.kt +103 -33
  9. package/android/src/main/kotlin/com/ledger/devicesdk/shared/api/apdu/SendApduResult.kt +4 -0
  10. package/android/src/main/kotlin/com/ledger/devicesdk/shared/api/device/LedgerDevice.kt +16 -0
  11. package/android/src/main/kotlin/com/ledger/devicesdk/shared/internal/connection/InternalConnectedDevice.kt +1 -1
  12. package/android/src/main/kotlin/com/ledger/devicesdk/shared/internal/transport/framer/FramerService.kt +1 -1
  13. package/android/src/test/kotlin/com/ledger/devicesdk/shared/androidMainInternal/transport/deviceconnection/DeviceConnectionStateMachineTest.kt +189 -46
  14. package/android/src/test/kotlin/com/ledger/devicesdk/shared/androidMainInternal/transport/deviceconnection/DeviceConnectionTest.kt +9 -5
  15. package/lib/cjs/api/bridge/DefaultNativeModuleWrapper.js +1 -1
  16. package/lib/cjs/api/bridge/DefaultNativeModuleWrapper.js.map +3 -3
  17. package/lib/cjs/api/bridge/NativeTransportModule.js +1 -1
  18. package/lib/cjs/api/bridge/NativeTransportModule.js.map +1 -1
  19. package/lib/cjs/api/bridge/mapper.js +1 -1
  20. package/lib/cjs/api/bridge/mapper.js.map +2 -2
  21. package/lib/cjs/api/bridge/mapper.test.js +1 -1
  22. package/lib/cjs/api/bridge/mapper.test.js.map +2 -2
  23. package/lib/cjs/api/bridge/types.js +1 -1
  24. package/lib/cjs/api/bridge/types.js.map +1 -1
  25. package/lib/cjs/api/transport/Errors.js +1 -1
  26. package/lib/cjs/api/transport/Errors.js.map +3 -3
  27. package/lib/cjs/api/transport/NativeModuleWrapper.js +1 -1
  28. package/lib/cjs/api/transport/NativeModuleWrapper.js.map +1 -1
  29. package/lib/cjs/api/transport/RNHidTransport.js +1 -1
  30. package/lib/cjs/api/transport/RNHidTransport.js.map +3 -3
  31. package/lib/cjs/api/transport/RNHidTransport.test.js +1 -1
  32. package/lib/cjs/api/transport/RNHidTransport.test.js.map +2 -2
  33. package/lib/cjs/index.js +1 -1
  34. package/lib/cjs/index.js.map +3 -3
  35. package/lib/cjs/package.json +49 -40
  36. package/lib/esm/api/bridge/DefaultNativeModuleWrapper.js +1 -1
  37. package/lib/esm/api/bridge/DefaultNativeModuleWrapper.js.map +3 -3
  38. package/lib/esm/api/bridge/NativeTransportModule.js +1 -1
  39. package/lib/esm/api/bridge/NativeTransportModule.js.map +1 -1
  40. package/lib/esm/api/bridge/mapper.js +1 -1
  41. package/lib/esm/api/bridge/mapper.js.map +3 -3
  42. package/lib/esm/api/bridge/mapper.test.js +1 -1
  43. package/lib/esm/api/bridge/mapper.test.js.map +3 -3
  44. package/lib/esm/api/bridge/types.js.map +1 -1
  45. package/lib/esm/api/transport/Errors.js +1 -1
  46. package/lib/esm/api/transport/Errors.js.map +3 -3
  47. package/lib/esm/api/transport/RNHidTransport.js +1 -1
  48. package/lib/esm/api/transport/RNHidTransport.js.map +3 -3
  49. package/lib/esm/api/transport/RNHidTransport.test.js +1 -1
  50. package/lib/esm/api/transport/RNHidTransport.test.js.map +3 -3
  51. package/lib/esm/index.js +1 -1
  52. package/lib/esm/index.js.map +3 -3
  53. package/lib/esm/package.json +49 -40
  54. package/lib/types/api/bridge/DefaultNativeModuleWrapper.d.ts +1 -1
  55. package/lib/types/api/bridge/DefaultNativeModuleWrapper.d.ts.map +1 -1
  56. package/lib/types/api/bridge/NativeTransportModule.d.ts.map +1 -1
  57. package/lib/types/api/bridge/mapper.d.ts.map +1 -1
  58. package/lib/types/api/bridge/types.d.ts +2 -2
  59. package/lib/types/api/bridge/types.d.ts.map +1 -1
  60. package/lib/types/api/transport/Errors.d.ts +1 -1
  61. package/lib/types/api/transport/Errors.d.ts.map +1 -1
  62. package/lib/types/api/transport/NativeModuleWrapper.d.ts +1 -1
  63. package/lib/types/api/transport/NativeModuleWrapper.d.ts.map +1 -1
  64. package/lib/types/api/transport/RNHidTransport.d.ts.map +1 -1
  65. package/lib/types/index.d.ts +1 -0
  66. package/lib/types/index.d.ts.map +1 -1
  67. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  68. package/package.json +47 -38
  69. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  70. package/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  71. package/android/gradlew +0 -252
  72. package/android/gradlew.bat +0 -94
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/transport/RNHidTransport.test.ts"],
4
- "sourcesContent": ["import {\n DeviceModelId,\n DisconnectError,\n type LoggerPublisherService,\n LogLevel,\n type LogParams,\n OpeningConnectionError,\n StaticDeviceModelDataSource,\n TransportConnectedDevice,\n type TransportDiscoveredDevice,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts/Either\";\nimport { Subject } from \"rxjs\";\n\nimport { TRANSPORT_IDENTIFIER } from \"@api/transport/rnHidTransportIdentifier\";\n\nimport { SendApduError } from \"./Errors\";\nimport { type NativeModuleWrapper } from \"./NativeModuleWrapper\";\nimport { RNHidTransport } from \"./RNHidTransport\";\nimport { type InternalDeviceDisconnected } from \"./types\";\n\nconst deviceModelDataSource = new StaticDeviceModelDataSource();\n\nconst makeMockTransportDiscoveredDevice = (\n id: string,\n deviceModelId: DeviceModelId,\n): TransportDiscoveredDevice => ({\n id,\n transport: TRANSPORT_IDENTIFIER,\n name: deviceModelId,\n deviceModel: deviceModelDataSource.getDeviceModel({\n id: deviceModelId,\n }),\n});\n\nconst mockDiscoveredDevice1 = makeMockTransportDiscoveredDevice(\n \"1\",\n DeviceModelId.NANO_S,\n);\nconst mockDiscoveredDevice2 = makeMockTransportDiscoveredDevice(\n \"2\",\n DeviceModelId.NANO_X,\n);\nconst mockDiscoveredDevice3 = makeMockTransportDiscoveredDevice(\n \"3\",\n DeviceModelId.NANO_S,\n);\n\ndescribe(\"RNHidTransport\", () => {\n let discoveredDevicesSubject: Subject<Array<TransportDiscoveredDevice>>;\n let deviceDisconnectedSubject: Subject<InternalDeviceDisconnected>;\n let transportLogsSubject: Subject<LogParams>;\n let nativeModuleWrapper: NativeModuleWrapper;\n const fakeLogger: LoggerPublisherService = {\n error: vi.fn(),\n warn: vi.fn(),\n info: vi.fn(),\n debug: vi.fn(),\n subscribers: [],\n };\n const loggerServiceFactory = vi.fn(() => fakeLogger);\n\n const wrapperStartScan = vi.fn();\n const wrapperStopScan = vi.fn();\n const wrapperConnectDevice = vi.fn();\n const wrapperDisconnectDevice = vi.fn();\n const wrapperSendApdu = vi.fn();\n\n beforeEach(() => {\n discoveredDevicesSubject = new Subject();\n deviceDisconnectedSubject = new Subject();\n transportLogsSubject = new Subject();\n\n vi.clearAllMocks();\n\n wrapperStartScan.mockResolvedValue(undefined);\n wrapperStopScan.mockResolvedValue(undefined);\n wrapperConnectDevice.mockResolvedValue(undefined);\n wrapperDisconnectDevice.mockResolvedValue(undefined);\n wrapperSendApdu.mockResolvedValue(undefined);\n\n nativeModuleWrapper = {\n startScan: wrapperStartScan,\n stopScan: wrapperStopScan,\n subscribeToDiscoveredDevicesEvents: vi.fn(() =>\n discoveredDevicesSubject.asObservable(),\n ),\n subscribeToDeviceDisconnectedEvents: vi.fn(() =>\n deviceDisconnectedSubject.asObservable(),\n ),\n subscribeToTransportLogs: vi.fn(() =>\n transportLogsSubject.asObservable(),\n ),\n connectDevice: wrapperConnectDevice,\n disconnectDevice: wrapperDisconnectDevice,\n sendApdu: wrapperSendApdu,\n };\n });\n\n test(\"getIdentifier returns TRANSPORT_IDENTIFIER\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transport.getIdentifier()).toBe(TRANSPORT_IDENTIFIER);\n });\n\n describe(\"isSupported returns the provided support flag\", () => {\n test(\"supported\", () => {\n // given\n const transportTrue = new RNHidTransport(\n true, // when\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transportTrue.isSupported()).toBe(true);\n });\n\n test(\"not supported\", () => {\n // given\n const transportFalse = new RNHidTransport(\n false, // when\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transportFalse.isSupported()).toBe(false);\n });\n });\n\n test(\"constructor subscribes to transport logs and calls logger methods\", () => {\n // given\n new RNHidTransport(true, nativeModuleWrapper, loggerServiceFactory);\n\n // when\n const logEvent: LogParams = [\n LogLevel.Info,\n \"Test message\",\n {\n tag: \"TestTag\",\n data: { key: \"value\" },\n timestamp: 123456789,\n },\n ];\n transportLogsSubject.next(logEvent);\n\n // then\n expect(fakeLogger.info).toHaveBeenCalledWith(\"Test message\", {\n tag: \"TestTag\",\n data: { key: \"value\" },\n timestamp: 123456789,\n });\n });\n\n describe(\"startDiscovering\", () => {\n it(\"calls startScan\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n transport.startDiscovering().subscribe();\n\n // then\n expect(wrapperStartScan).toHaveBeenCalled();\n });\n\n it(\"emits new discovered devices\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const discoveredDevices: TransportDiscoveredDevice[] = [];\n\n // when\n transport.startDiscovering().subscribe({\n next: (device) => {\n discoveredDevices.push(device);\n if (discoveredDevices.length === 3) {\n try {\n // then\n expect(discoveredDevices).toEqual([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n mockDiscoveredDevice3,\n ]);\n resolve();\n } catch (e) {\n reject(e);\n }\n }\n },\n error: reject,\n });\n // Simulate getObservableOfArraysNewItems behavior:\n // emit first array with one device then the subsequent arrays with a new device.\n discoveredDevicesSubject.next([mockDiscoveredDevice1]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n ]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n mockDiscoveredDevice3,\n ]);\n });\n });\n\n it(\"propagates startScan error\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"scan failed\");\n wrapperStartScan.mockRejectedValueOnce(error);\n transport.startDiscovering().subscribe({\n next: () => {},\n error: (err) => {\n try {\n // then\n expect(err).toBe(error);\n resolve();\n } catch (e) {\n reject(e);\n }\n },\n });\n });\n });\n });\n\n describe(\"stopDiscovering\", () => {\n it(\"calls stopScan\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n await transport.stopDiscovering();\n\n // then\n expect(nativeModuleWrapper.stopScan).toHaveBeenCalled();\n });\n\n it(\"logs error when stopScan fails\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"stop failed\");\n wrapperStopScan.mockRejectedValueOnce(error);\n\n // then\n await transport.stopDiscovering();\n expect(fakeLogger.error).toHaveBeenCalledWith(\n \"stopDiscovering error\",\n error,\n );\n });\n });\n\n describe(\"listenToKnownDevices\", () => {\n it(\"emits arrays of discovered devices\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const observedEvents: Array<Array<TransportDiscoveredDevice>> = [];\n\n // when\n transport.listenToAvailableDevices().subscribe({\n next: (devices) => {\n observedEvents.push(devices);\n if (observedEvents.length === 2) {\n try {\n // then\n expect(observedEvents).toEqual([\n [mockDiscoveredDevice1, mockDiscoveredDevice2],\n [mockDiscoveredDevice1, mockDiscoveredDevice3],\n ]);\n resolve();\n } catch (e) {\n reject(e);\n }\n }\n },\n complete: () => {\n reject(\"should not complete\");\n },\n error: reject,\n });\n\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n ]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice3,\n ]);\n });\n });\n\n it(\"propagates startScan error\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"start scan failed\");\n wrapperStartScan.mockRejectedValueOnce(error);\n transport.listenToAvailableDevices().subscribe({\n error: (err) => {\n // then\n try {\n expect(err).toBe(error);\n resolve();\n } catch (e) {\n reject(e);\n }\n },\n });\n });\n });\n\n it(\"calls stopScan on unsubscribe\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"stop scan failed\");\n wrapperStopScan.mockRejectedValueOnce(error);\n const subscription = transport.listenToAvailableDevices().subscribe({});\n subscription.unsubscribe();\n\n expect(wrapperStopScan).toHaveBeenCalled();\n });\n });\n\n describe(\"connect\", () => {\n describe(\"connection successful\", () => {\n it(\"should return a Right(TransportConnectedDevice) on successful connection\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result.isRight()).toBe(true);\n const connectedDevice = result.extract() as TransportConnectedDevice;\n expect(connectedDevice).toBeInstanceOf(TransportConnectedDevice);\n expect(connectedDevice.id).toBe(sessionId);\n expect(connectedDevice.deviceModel).toEqual(fakeDeviceModel);\n expect(connectedDevice.transport).toBe(TRANSPORT_IDENTIFIER);\n expect(connectedDevice.type).toBe(\"USB\");\n });\n\n test(\"should trigger onDisconnect when a matching disconnect event is emitted\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const onDisconnect = vi.fn();\n\n // when\n await transport.connect({\n deviceId: sessionId,\n onDisconnect,\n });\n deviceDisconnectedSubject.next({ sessionId });\n\n // then\n expect(onDisconnect).toHaveBeenCalledWith(sessionId);\n });\n\n test(\"should handle sendApdu success (Right)\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n\n // when\n wrapperSendApdu.mockResolvedValueOnce(Right(\"apduResponse\"));\n const apdu = new Uint8Array([1, 2, 3]);\n const apduResult = await connectedDevice.sendApdu(apdu);\n\n // then\n expect(nativeModuleWrapper.sendApdu).toHaveBeenCalledWith(\n sessionId,\n apdu,\n );\n expect(apduResult).toEqual(Right(\"apduResponse\"));\n });\n\n test(\"should handle sendApdu failure (Left)\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n\n // when\n wrapperSendApdu.mockResolvedValueOnce(Left(\"some error\"));\n const apdu = new Uint8Array([1, 2, 3]);\n const apduResult = await connectedDevice.sendApdu(apdu);\n\n // then\n expect(apduResult).toEqual(Left(\"some error\"));\n });\n\n test(\"should handle sendApdu rejection\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n const apduError = new Error(\"apdu failed\");\n\n // when\n wrapperSendApdu.mockRejectedValueOnce(apduError);\n const apduResult = await connectedDevice.sendApdu(new Uint8Array([]));\n\n // then\n expect(apduResult).toEqual(Left(new SendApduError(apduError)));\n });\n });\n\n describe(\"connection failure\", () => {\n test(\"should return a Left when nativeModuleWrapper.connectDevice resolves a Left\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const errorResult = Left(\n new OpeningConnectionError(\"connection failed\"),\n );\n wrapperConnectDevice.mockResolvedValueOnce(errorResult);\n const result = await transport.connect({\n deviceId: \"any\",\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result).toEqual(errorResult);\n });\n\n test(\"should return a Left when nativeModuleWrapper.connectDevice rejects\", async () => {\n // given\n const error = new Error(\"connection failed\");\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n wrapperConnectDevice.mockRejectedValueOnce(error);\n const result = await transport.connect({\n deviceId: \"any\",\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result).toEqual(Left(new OpeningConnectionError(error)));\n });\n });\n });\n\n describe(\"disconnect\", () => {\n it(\"returns Right on successful disconnect\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const result = await transport.disconnect({\n connectedDevice: { id: \"session789\" } as TransportConnectedDevice,\n });\n\n // then\n expect(nativeModuleWrapper.disconnectDevice).toHaveBeenCalledWith(\n \"session789\",\n );\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"returns Left on disconnect failure\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"disconnect failed\");\n wrapperDisconnectDevice.mockRejectedValueOnce(error);\n const result = await transport.disconnect({\n connectedDevice: { id: \"session000\" } as TransportConnectedDevice,\n });\n\n // then\n expect(result).toEqual(Left(new DisconnectError(error)));\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["DeviceModelId", "DisconnectError", "LogLevel", "OpeningConnectionError", "StaticDeviceModelDataSource", "TransportConnectedDevice", "Left", "Right", "Subject", "TRANSPORT_IDENTIFIER", "SendApduError", "RNHidTransport", "deviceModelDataSource", "makeMockTransportDiscoveredDevice", "id", "deviceModelId", "mockDiscoveredDevice1", "mockDiscoveredDevice2", "mockDiscoveredDevice3", "discoveredDevicesSubject", "deviceDisconnectedSubject", "transportLogsSubject", "nativeModuleWrapper", "fakeLogger", "loggerServiceFactory", "wrapperStartScan", "wrapperStopScan", "wrapperConnectDevice", "wrapperDisconnectDevice", "wrapperSendApdu", "transport", "transportTrue", "transportFalse", "logEvent", "resolve", "reject", "discoveredDevices", "device", "e", "error", "err", "observedEvents", "devices", "fakeDeviceModel", "sessionId", "result", "connectedDevice", "onDisconnect", "apdu", "apduResult", "apduError", "errorResult"]
4
+ "sourcesContent": ["import {\n DeviceModelId,\n DisconnectError,\n type LoggerPublisherService,\n LogLevel,\n type LogParams,\n OpeningConnectionError,\n StaticDeviceModelDataSource,\n TransportConnectedDevice,\n type TransportDiscoveredDevice,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts/Either\";\nimport { Subject } from \"rxjs\";\n\nimport { TRANSPORT_IDENTIFIER } from \"@api/transport/rnHidTransportIdentifier\";\n\nimport { HidTransportSendApduUnknownError } from \"./Errors\";\nimport { type NativeModuleWrapper } from \"./NativeModuleWrapper\";\nimport { RNHidTransport } from \"./RNHidTransport\";\nimport { type InternalDeviceDisconnected } from \"./types\";\n\nconst deviceModelDataSource = new StaticDeviceModelDataSource();\n\nconst makeMockTransportDiscoveredDevice = (\n id: string,\n deviceModelId: DeviceModelId,\n): TransportDiscoveredDevice => ({\n id,\n transport: TRANSPORT_IDENTIFIER,\n name: deviceModelId,\n deviceModel: deviceModelDataSource.getDeviceModel({\n id: deviceModelId,\n }),\n});\n\nconst mockDiscoveredDevice1 = makeMockTransportDiscoveredDevice(\n \"1\",\n DeviceModelId.NANO_S,\n);\nconst mockDiscoveredDevice2 = makeMockTransportDiscoveredDevice(\n \"2\",\n DeviceModelId.NANO_X,\n);\nconst mockDiscoveredDevice3 = makeMockTransportDiscoveredDevice(\n \"3\",\n DeviceModelId.NANO_S,\n);\n\ndescribe(\"RNHidTransport\", () => {\n let discoveredDevicesSubject: Subject<Array<TransportDiscoveredDevice>>;\n let deviceDisconnectedSubject: Subject<InternalDeviceDisconnected>;\n let transportLogsSubject: Subject<LogParams>;\n let nativeModuleWrapper: NativeModuleWrapper;\n const fakeLogger: LoggerPublisherService = {\n error: vi.fn(),\n warn: vi.fn(),\n info: vi.fn(),\n debug: vi.fn(),\n subscribers: [],\n };\n const loggerServiceFactory = vi.fn(() => fakeLogger);\n\n const wrapperStartScan = vi.fn();\n const wrapperStopScan = vi.fn();\n const wrapperConnectDevice = vi.fn();\n const wrapperDisconnectDevice = vi.fn();\n const wrapperSendApdu = vi.fn();\n\n beforeEach(() => {\n discoveredDevicesSubject = new Subject();\n deviceDisconnectedSubject = new Subject();\n transportLogsSubject = new Subject();\n\n vi.clearAllMocks();\n\n wrapperStartScan.mockResolvedValue(undefined);\n wrapperStopScan.mockResolvedValue(undefined);\n wrapperConnectDevice.mockResolvedValue(undefined);\n wrapperDisconnectDevice.mockResolvedValue(undefined);\n wrapperSendApdu.mockResolvedValue(undefined);\n\n nativeModuleWrapper = {\n startScan: wrapperStartScan,\n stopScan: wrapperStopScan,\n subscribeToDiscoveredDevicesEvents: vi.fn(() =>\n discoveredDevicesSubject.asObservable(),\n ),\n subscribeToDeviceDisconnectedEvents: vi.fn(() =>\n deviceDisconnectedSubject.asObservable(),\n ),\n subscribeToTransportLogs: vi.fn(() =>\n transportLogsSubject.asObservable(),\n ),\n connectDevice: wrapperConnectDevice,\n disconnectDevice: wrapperDisconnectDevice,\n sendApdu: wrapperSendApdu,\n };\n });\n\n test(\"getIdentifier returns TRANSPORT_IDENTIFIER\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transport.getIdentifier()).toBe(TRANSPORT_IDENTIFIER);\n });\n\n describe(\"isSupported returns the provided support flag\", () => {\n test(\"supported\", () => {\n // given\n const transportTrue = new RNHidTransport(\n true, // when\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transportTrue.isSupported()).toBe(true);\n });\n\n test(\"not supported\", () => {\n // given\n const transportFalse = new RNHidTransport(\n false, // when\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n // then\n expect(transportFalse.isSupported()).toBe(false);\n });\n });\n\n test(\"constructor subscribes to transport logs and calls logger methods\", () => {\n // given\n new RNHidTransport(true, nativeModuleWrapper, loggerServiceFactory);\n\n // when\n const logEvent: LogParams = [\n LogLevel.Info,\n \"Test message\",\n {\n tag: \"TestTag\",\n data: { key: \"value\" },\n timestamp: 123456789,\n },\n ];\n transportLogsSubject.next(logEvent);\n\n // then\n expect(fakeLogger.info).toHaveBeenCalledWith(\"Test message\", {\n tag: \"TestTag\",\n data: { key: \"value\" },\n timestamp: 123456789,\n });\n });\n\n describe(\"startDiscovering\", () => {\n it(\"calls startScan\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n transport.startDiscovering().subscribe();\n\n // then\n expect(wrapperStartScan).toHaveBeenCalled();\n });\n\n it(\"emits new discovered devices\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const discoveredDevices: TransportDiscoveredDevice[] = [];\n\n // when\n transport.startDiscovering().subscribe({\n next: (device) => {\n discoveredDevices.push(device);\n if (discoveredDevices.length === 3) {\n try {\n // then\n expect(discoveredDevices).toEqual([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n mockDiscoveredDevice3,\n ]);\n resolve();\n } catch (e) {\n reject(e);\n }\n }\n },\n error: reject,\n });\n // Simulate getObservableOfArraysNewItems behavior:\n // emit first array with one device then the subsequent arrays with a new device.\n discoveredDevicesSubject.next([mockDiscoveredDevice1]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n ]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n mockDiscoveredDevice3,\n ]);\n });\n });\n\n it(\"propagates startScan error\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"scan failed\");\n wrapperStartScan.mockRejectedValueOnce(error);\n transport.startDiscovering().subscribe({\n next: () => {},\n error: (err) => {\n try {\n // then\n expect(err).toBe(error);\n resolve();\n } catch (e) {\n reject(e);\n }\n },\n });\n });\n });\n });\n\n describe(\"stopDiscovering\", () => {\n it(\"calls stopScan\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n await transport.stopDiscovering();\n\n // then\n expect(nativeModuleWrapper.stopScan).toHaveBeenCalled();\n });\n\n it(\"logs error when stopScan fails\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"stop failed\");\n wrapperStopScan.mockRejectedValueOnce(error);\n\n // then\n await transport.stopDiscovering();\n expect(fakeLogger.error).toHaveBeenCalledWith(\n \"stopDiscovering error\",\n error,\n );\n });\n });\n\n describe(\"listenToKnownDevices\", () => {\n it(\"emits arrays of discovered devices\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const observedEvents: Array<Array<TransportDiscoveredDevice>> = [];\n\n // when\n transport.listenToAvailableDevices().subscribe({\n next: (devices) => {\n observedEvents.push(devices);\n if (observedEvents.length === 2) {\n try {\n // then\n expect(observedEvents).toEqual([\n [mockDiscoveredDevice1, mockDiscoveredDevice2],\n [mockDiscoveredDevice1, mockDiscoveredDevice3],\n ]);\n resolve();\n } catch (e) {\n reject(e);\n }\n }\n },\n complete: () => {\n reject(\"should not complete\");\n },\n error: reject,\n });\n\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice2,\n ]);\n discoveredDevicesSubject.next([\n mockDiscoveredDevice1,\n mockDiscoveredDevice3,\n ]);\n });\n });\n\n it(\"propagates startScan error\", () => {\n return new Promise<void>((resolve, reject) => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"start scan failed\");\n wrapperStartScan.mockRejectedValueOnce(error);\n transport.listenToAvailableDevices().subscribe({\n error: (err) => {\n // then\n try {\n expect(err).toBe(error);\n resolve();\n } catch (e) {\n reject(e);\n }\n },\n });\n });\n });\n\n it(\"calls stopScan on unsubscribe\", () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"stop scan failed\");\n wrapperStopScan.mockRejectedValueOnce(error);\n const subscription = transport.listenToAvailableDevices().subscribe({});\n subscription.unsubscribe();\n\n expect(wrapperStopScan).toHaveBeenCalled();\n });\n });\n\n describe(\"connect\", () => {\n describe(\"connection successful\", () => {\n it(\"should return a Right(TransportConnectedDevice) on successful connection\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result.isRight()).toBe(true);\n const connectedDevice = result.extract() as TransportConnectedDevice;\n expect(connectedDevice).toBeInstanceOf(TransportConnectedDevice);\n expect(connectedDevice.id).toBe(sessionId);\n expect(connectedDevice.deviceModel).toEqual(fakeDeviceModel);\n expect(connectedDevice.transport).toBe(TRANSPORT_IDENTIFIER);\n expect(connectedDevice.type).toBe(\"USB\");\n });\n\n test(\"should trigger onDisconnect when a matching disconnect event is emitted\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const onDisconnect = vi.fn();\n\n // when\n await transport.connect({\n deviceId: sessionId,\n onDisconnect,\n });\n deviceDisconnectedSubject.next({ sessionId });\n\n // then\n expect(onDisconnect).toHaveBeenCalledWith(sessionId);\n });\n\n test(\"should handle sendApdu success (Right)\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n\n // when\n wrapperSendApdu.mockResolvedValueOnce(Right(\"apduResponse\"));\n const apdu = new Uint8Array([1, 2, 3]);\n const apduResult = await connectedDevice.sendApdu(apdu, false, 0);\n\n // then\n expect(nativeModuleWrapper.sendApdu).toHaveBeenCalledWith(\n sessionId,\n apdu,\n false,\n 0,\n );\n expect(apduResult).toEqual(Right(\"apduResponse\"));\n });\n\n test(\"should handle sendApdu failure (Left)\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n\n // when\n wrapperSendApdu.mockResolvedValueOnce(Left(\"some error\"));\n const apdu = new Uint8Array([1, 2, 3]);\n const apduResult = await connectedDevice.sendApdu(apdu);\n\n // then\n expect(apduResult).toEqual(Left(\"some error\"));\n });\n\n test(\"should handle sendApdu rejection\", async () => {\n // given\n const fakeDeviceModel = { model: \"TestModel\" };\n const sessionId = \"session123\";\n wrapperConnectDevice.mockResolvedValueOnce(\n Right({ sessionId, transportDeviceModel: fakeDeviceModel }),\n );\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n const result = await transport.connect({\n deviceId: sessionId,\n onDisconnect: vi.fn(),\n });\n const connectedDevice = result.extract() as TransportConnectedDevice;\n const apduError = new Error(\"apdu failed\");\n\n // when\n wrapperSendApdu.mockRejectedValueOnce(apduError);\n const apduResult = await connectedDevice.sendApdu(new Uint8Array([]));\n\n // then\n expect(apduResult).toEqual(\n Left(new HidTransportSendApduUnknownError(apduError)),\n );\n });\n });\n\n describe(\"connection failure\", () => {\n test(\"should return a Left when nativeModuleWrapper.connectDevice resolves a Left\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const errorResult = Left(\n new OpeningConnectionError(\"connection failed\"),\n );\n wrapperConnectDevice.mockResolvedValueOnce(errorResult);\n const result = await transport.connect({\n deviceId: \"any\",\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result).toEqual(errorResult);\n });\n\n test(\"should return a Left when nativeModuleWrapper.connectDevice rejects\", async () => {\n // given\n const error = new Error(\"connection failed\");\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n wrapperConnectDevice.mockRejectedValueOnce(error);\n const result = await transport.connect({\n deviceId: \"any\",\n onDisconnect: vi.fn(),\n });\n\n // then\n expect(result).toEqual(Left(new OpeningConnectionError(error)));\n });\n });\n });\n\n describe(\"disconnect\", () => {\n it(\"returns Right on successful disconnect\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const result = await transport.disconnect({\n connectedDevice: { id: \"session789\" } as TransportConnectedDevice,\n });\n\n // then\n expect(nativeModuleWrapper.disconnectDevice).toHaveBeenCalledWith(\n \"session789\",\n );\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"returns Left on disconnect failure\", async () => {\n // given\n const transport = new RNHidTransport(\n true,\n nativeModuleWrapper,\n loggerServiceFactory,\n );\n\n // when\n const error = new Error(\"disconnect failed\");\n wrapperDisconnectDevice.mockRejectedValueOnce(error);\n const result = await transport.disconnect({\n connectedDevice: { id: \"session000\" } as TransportConnectedDevice,\n });\n\n // then\n expect(result).toEqual(Left(new DisconnectError(error)));\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "DisconnectError", "LogLevel", "OpeningConnectionError", "StaticDeviceModelDataSource", "TransportConnectedDevice", "Left", "Right", "Subject", "TRANSPORT_IDENTIFIER", "HidTransportSendApduUnknownError", "RNHidTransport", "deviceModelDataSource", "makeMockTransportDiscoveredDevice", "id", "deviceModelId", "mockDiscoveredDevice1", "mockDiscoveredDevice2", "mockDiscoveredDevice3", "discoveredDevicesSubject", "deviceDisconnectedSubject", "transportLogsSubject", "nativeModuleWrapper", "fakeLogger", "loggerServiceFactory", "wrapperStartScan", "wrapperStopScan", "wrapperConnectDevice", "wrapperDisconnectDevice", "wrapperSendApdu", "transport", "transportTrue", "transportFalse", "logEvent", "resolve", "reject", "discoveredDevices", "device", "e", "error", "err", "observedEvents", "devices", "fakeDeviceModel", "sessionId", "result", "connectedDevice", "onDisconnect", "apdu", "apduResult", "apduError", "errorResult"]
7
7
  }
package/lib/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{RNHidTransportFactory as t}from"./api/RNHidTransportFactory";import{TRANSPORT_IDENTIFIER as a}from"./api/transport/rnHidTransportIdentifier";export{t as RNHidTransportFactory,a as rnHidTransportIdentifier};
1
+ import{RNHidTransportFactory as n}from"./api/RNHidTransportFactory";import{HidTransportSendApduUnknownError as p}from"./api/transport/Errors";import{TRANSPORT_IDENTIFIER as e}from"./api/transport/rnHidTransportIdentifier";export{p as HidTransportSendApduUnknownError,n as RNHidTransportFactory,e as rnHidTransportIdentifier};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export { RNHidTransportFactory } from \"@api/RNHidTransportFactory\";\nexport { TRANSPORT_IDENTIFIER as rnHidTransportIdentifier } from \"@api/transport/rnHidTransportIdentifier\";\n"],
5
- "mappings": "AAAA,OAAS,yBAAAA,MAA6B,6BACtC,OAAiC,wBAAxBC,MAAwD",
6
- "names": ["RNHidTransportFactory", "TRANSPORT_IDENTIFIER"]
4
+ "sourcesContent": ["export { RNHidTransportFactory } from \"@api/RNHidTransportFactory\";\nexport { HidTransportSendApduUnknownError } from \"@api/transport/Errors\";\nexport { TRANSPORT_IDENTIFIER as rnHidTransportIdentifier } from \"@api/transport/rnHidTransportIdentifier\";\n"],
5
+ "mappings": "AAAA,OAAS,yBAAAA,MAA6B,6BACtC,OAAS,oCAAAC,MAAwC,wBACjD,OAAiC,wBAAxBC,MAAwD",
6
+ "names": ["RNHidTransportFactory", "HidTransportSendApduUnknownError", "TRANSPORT_IDENTIFIER"]
7
7
  }
@@ -1,61 +1,70 @@
1
1
  {
2
- "name": "@ledgerhq/device-transport-kit-react-native-hid",
3
- "version": "0.0.1",
4
- "license": "Apache-2.0",
5
- "private": false,
6
- "react-native": "src/index.ts",
7
- "nativePackage": true,
2
+ "dependencies": {
3
+ "@sentry/minimal": "catalog:",
4
+ "purify-ts": "catalog:",
5
+ "uuid": "catalog:"
6
+ },
7
+ "devDependencies": {
8
+ "@ledgerhq/device-management-kit": "workspace:^",
9
+ "@ledgerhq/eslint-config-dsdk": "workspace:^",
10
+ "@ledgerhq/ldmk-tool": "workspace:^",
11
+ "@ledgerhq/prettier-config-dsdk": "workspace:^",
12
+ "@ledgerhq/tsconfig-dsdk": "workspace:^",
13
+ "@ledgerhq/vitest-config-dmk": "workspace:^",
14
+ "@types/uuid": "catalog:",
15
+ "react-native": "catalog:",
16
+ "rxjs": "catalog:"
17
+ },
8
18
  "exports": {
9
19
  ".": {
10
- "types": "./lib/types/index.d.ts",
11
20
  "import": "./lib/esm/index.js",
12
- "require": "./lib/cjs/index.js"
21
+ "require": "./lib/cjs/index.js",
22
+ "types": "./lib/types/index.d.ts"
13
23
  },
14
24
  "./*": {
15
- "types": "./lib/types/*",
16
25
  "import": "./lib/esm/*",
17
- "require": "./lib/cjs/*"
26
+ "require": "./lib/cjs/*",
27
+ "types": "./lib/types/*"
18
28
  }
19
29
  },
20
30
  "files": [
21
31
  "./android",
22
- "./lib"
32
+ "./lib",
33
+ "!android/build",
34
+ "!android/gradle",
35
+ "!android/gradlew",
36
+ "!android/gradlew.bat",
37
+ "!android/local.properties"
23
38
  ],
39
+ "license": "Apache-2.0",
40
+ "name": "@ledgerhq/device-transport-kit-react-native-hid",
41
+ "nativePackage": true,
42
+ "peerDependencies": {
43
+ "@ledgerhq/device-management-kit": "workspace:^",
44
+ "react-native": ">0.74.1",
45
+ "rxjs": "catalog:"
46
+ },
47
+ "private": false,
48
+ "react-native": "src/index.ts",
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
52
+ },
24
53
  "scripts": {
25
- "prebuild": "rimraf lib",
26
- "build": "pnpm lmdk-build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
54
+ "build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
27
55
  "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
28
- "watch:builds": "pnpm lmdk-watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
29
- "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
30
- "lint": "eslint",
56
+ "lint": "eslint src/**/*.ts",
31
57
  "lint:fix": "pnpm lint --fix",
32
58
  "postpack": "find . -name '*.tgz' -exec cp {} ../../../dist/ \\; ",
59
+ "prebuild": "rimraf lib",
33
60
  "prettier": "prettier . --check",
34
61
  "prettier:fix": "prettier . --write",
35
- "typecheck": "tsc --noEmit",
36
- "test": "vitest run --passWithNoTests && cd android && ./gradlew testDebugUnitTest --tests \"*\" --info",
62
+ "test": "vitest run --passWithNoTests",
63
+ "test:coverage": "vitest run --coverage --passWithNoTests",
37
64
  "test:watch": "vitest --passWithNoTests",
38
- "test:coverage": "vitest run --coverage --passWithNoTests"
39
- },
40
- "dependencies": {
41
- "@sentry/minimal": "^6.19.7",
42
- "purify-ts": "^2.1.0",
43
- "uuid": "^10.0.0"
44
- },
45
- "devDependencies": {
46
- "@ledgerhq/device-management-kit": "workspace:*",
47
- "@ledgerhq/esbuild-tools": "workspace:*",
48
- "@ledgerhq/eslint-config-dsdk": "workspace:*",
49
- "@ledgerhq/vitest-config-dmk": "workspace:*",
50
- "@ledgerhq/prettier-config-dsdk": "workspace:*",
51
- "@ledgerhq/tsconfig-dsdk": "workspace:*",
52
- "@types/uuid": "^10.0.0",
53
- "react-native": "^0.76.3",
54
- "rxjs": "^7.8.1"
65
+ "typecheck": "tsc --noEmit",
66
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
67
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
55
68
  },
56
- "peerDependencies": {
57
- "@ledgerhq/device-management-kit": "workspace:*",
58
- "react-native": ">0.72",
59
- "rxjs": "^7.8.1"
60
- }
69
+ "version": "0.0.0-sol-signer-20251203164116"
61
70
  }
@@ -17,6 +17,6 @@ export declare class DefaultNativeModuleWrapper implements NativeModuleWrapper {
17
17
  subscribeToTransportLogs(): Observable<LogParams>;
18
18
  connectDevice(uid: string): Promise<InternalConnectionResult>;
19
19
  disconnectDevice(sessionId: string): Promise<void>;
20
- sendApdu(sessionId: string, apdu: Uint8Array): Promise<SendApduResult>;
20
+ sendApdu(sessionId: string, apdu: Uint8Array, triggersDisconnection: boolean, abortTimeout: number): Promise<SendApduResult>;
21
21
  }
22
22
  //# sourceMappingURL=DefaultNativeModuleWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultNativeModuleWrapper.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/DefaultNativeModuleWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;gBAEnD,IAAI,EAAE;QAChB,YAAY,EAAE,yBAAyB,CAAC;QACxC,qBAAqB,EAAE,qBAAqB,CAAC;KAC9C;IAKD,SAAS;IAIT,QAAQ;IAIR,kCAAkC,IAAI,UAAU,CAC9C,KAAK,CAAC,yBAAyB,CAAC,CACjC;IAyBD,mCAAmC,IAAI,UAAU,CAAC,0BAA0B,CAAC;IAkB7E,wBAAwB,IAAI,UAAU,CAAC,SAAS,CAAC;IAgB3C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAQ7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;CAO7E"}
1
+ {"version":3,"file":"DefaultNativeModuleWrapper.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/DefaultNativeModuleWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;gBAEnD,IAAI,EAAE;QAChB,YAAY,EAAE,yBAAyB,CAAC;QACxC,qBAAqB,EAAE,qBAAqB,CAAC;KAC9C;IAKD,SAAS;IAIT,QAAQ;IAIR,kCAAkC,IAAI,UAAU,CAC9C,KAAK,CAAC,yBAAyB,CAAC,CACjC;IAyBD,mCAAmC,IAAI,UAAU,CAAC,0BAA0B,CAAC;IAkB7E,wBAAwB,IAAI,UAAU,CAAC,SAAS,CAAC;IAgB3C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAQ7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,qBAAqB,EAAE,OAAO,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC;CAS3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeTransportModule.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/NativeTransportModule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGzD,eAAO,MAAM,qBAAqB,EAAE,yBACI,CAAC"}
1
+ {"version":3,"file":"NativeTransportModule.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/NativeTransportModule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGzD,eAAO,MAAM,qBAAqB,EAAE,yBACK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,qBAAqB,EAG1B,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,kCAAkC,CAChD,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,GAC3C,oBAAoB,GAAG,IAAI,CAM7B;AAED,wBAAgB,mDAAmD,CACjE,YAAY,EAAE,qBAAqB,EACnC,qBAAqB,EAAE,qBAAqB,GAC3C,yBAAyB,GAAG,IAAI,CAalC;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CA8BpE;AAMD,wBAAgB,2CAA2C,CACzD,MAAM,EAAE,8BAA8B,EACtC,qBAAqB,EAAE,qBAAqB,GAC3C,wBAAwB,CAgB1B;AAED,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAYhB;AAED,wBAAgB,iDAAiD,CAC/D,0BAA0B,EAAE,0BAA0B,GACrD,0BAA0B,CAI5B"}
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,qBAAqB,EAG1B,KAAK,SAAS,EAGd,KAAK,cAAc,EAEnB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,kCAAkC,CAChD,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,GAC3C,oBAAoB,GAAG,IAAI,CAM7B;AAED,wBAAgB,mDAAmD,CACjE,YAAY,EAAE,qBAAqB,EACnC,qBAAqB,EAAE,qBAAqB,GAC3C,yBAAyB,GAAG,IAAI,CAalC;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CA8BpE;AAMD,wBAAgB,2CAA2C,CACzD,MAAM,EAAE,8BAA8B,EACtC,qBAAqB,EAAE,qBAAqB,GAC3C,wBAAwB,CAgB1B;AAED,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CA0BhB;AAED,wBAAgB,iDAAiD,CAC/D,0BAA0B,EAAE,0BAA0B,GACrD,0BAA0B,CAI5B"}
@@ -30,7 +30,7 @@ export type NativeSendApduResult = {
30
30
  apdu: string;
31
31
  } | {
32
32
  success: false;
33
- error: string;
33
+ error: string | "SendApduTimeout";
34
34
  };
35
35
  export type NativeDeviceConnectionLost = {
36
36
  id: string;
@@ -55,7 +55,7 @@ export type NativeTransportModuleType = {
55
55
  stopScan: () => Promise<void>;
56
56
  connectDevice: (uid: string) => Promise<NativeInternalConnectionResult>;
57
57
  disconnectDevice: (sessionId: string) => Promise<void>;
58
- sendApdu: (sessionId: string, apdu: string) => Promise<NativeSendApduResult>;
58
+ sendApdu: (sessionId: string, apdu: string, triggersDisconnection: boolean, abortTimeout: number) => Promise<NativeSendApduResult>;
59
59
  } & NativeModule;
60
60
  export {};
61
61
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,KAAK,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GACtC;IACE,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,kBAAkB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AAEH,wBAAwB;AACxB,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAC5D,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEzE,mBAAmB;AACnB,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AAExC,yBAAyB;AACzB,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAC9D,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACxE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC9E,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/bridge/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,KAAK,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GACtC;IACE,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,kBAAkB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACnC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AAEH,wBAAwB;AACxB,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAC5D,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEzE,mBAAmB;AACnB,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AAExC,yBAAyB;AACzB,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAC9D,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACxE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,EAAE,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,OAAO,EAC9B,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC,GAAG,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { GeneralDmkError } from "@ledgerhq/device-management-kit";
2
- export declare class SendApduError extends GeneralDmkError {
2
+ export declare class HidTransportSendApduUnknownError extends GeneralDmkError {
3
3
  readonly err?: unknown | undefined;
4
4
  readonly _tag = "HidTransportSendApduUnknownError";
5
5
  constructor(err?: unknown | undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/Errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBAAa,aAAc,SAAQ,eAAe;IAEpC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO;IADlC,SAAkB,IAAI,sCAAsC;gBACvC,GAAG,CAAC,EAAE,OAAO,YAAA;CAGnC"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/Errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBAAa,gCAAiC,SAAQ,eAAe;IAEvD,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO;IADlC,SAAkB,IAAI,sCAAsC;gBACvC,GAAG,CAAC,EAAE,OAAO,YAAA;CAGnC"}
@@ -18,6 +18,6 @@ export interface NativeModuleWrapper {
18
18
  subscribeToTransportLogs(): Observable<LogParams>;
19
19
  connectDevice(uid: string): Promise<InternalConnectionResult>;
20
20
  disconnectDevice(uid: string): Promise<void>;
21
- sendApdu(sessionId: string, apdu: Uint8Array): Promise<SendApduResult>;
21
+ sendApdu(sessionId: string, apdu: Uint8Array, triggersDisconnection: boolean, abortTimeout: number): Promise<SendApduResult>;
22
22
  }
23
23
  //# sourceMappingURL=NativeModuleWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeModuleWrapper.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/NativeModuleWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,SAAS,CAAC;AAEjB;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,kCAAkC,IAAI,UAAU,CAC9C,KAAK,CAAC,yBAAyB,CAAC,CACjC,CAAC;IACF,mCAAmC,IAAI,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAC9E,wBAAwB,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IAClD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC9D,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACxE"}
1
+ {"version":3,"file":"NativeModuleWrapper.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/NativeModuleWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,SAAS,CAAC;AAEjB;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,kCAAkC,IAAI,UAAU,CAC9C,KAAK,CAAC,yBAAyB,CAAC,CACjC,CAAC;IACF,mCAAmC,IAAI,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAC9E,wBAAwB,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IAClD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC9D,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,qBAAqB,EAAE,OAAO,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RNHidTransport.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/RNHidTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEb,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAG3B,KAAK,SAAS,EACd,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qBAAa,cAAe,YAAW,SAAS;IAI5C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAJvC,OAAO,CAAC,cAAc,CAAyB;gBAG5B,YAAY,EAAE,OAAO,EACrB,oBAAoB,EAAE,mBAAmB,EAC1D,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAgBhE,aAAa,IAAI,mBAAmB;IAIpC,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,UAAU,CAAC,yBAAyB,CAAC;IAkBzD,eAAe,IAAI,IAAI;IAMvB,wBAAwB,IAAI,UAAU,CAAC,yBAAyB,EAAE,CAAC;IA6BnE,OAAO,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC;QACnB,YAAY,EAAE,iBAAiB,CAAC;KACjC,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAkC3D,UAAU,CAAC,OAAO,EAAE;QAClB,eAAe,EAAE,wBAAwB,CAAC;KAC3C,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;CAQpC"}
1
+ {"version":3,"file":"RNHidTransport.d.ts","sourceRoot":"","sources":["../../../../src/api/transport/RNHidTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEb,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAG3B,KAAK,SAAS,EACd,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qBAAa,cAAe,YAAW,SAAS;IAI5C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAJvC,OAAO,CAAC,cAAc,CAAyB;gBAG5B,YAAY,EAAE,OAAO,EACrB,oBAAoB,EAAE,mBAAmB,EAC1D,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAgBhE,aAAa,IAAI,mBAAmB;IAIpC,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,UAAU,CAAC,yBAAyB,CAAC;IAkBzD,eAAe,IAAI,IAAI;IAMvB,wBAAwB,IAAI,UAAU,CAAC,yBAAyB,EAAE,CAAC;IA6BnE,OAAO,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC;QACnB,YAAY,EAAE,iBAAiB,CAAC;KACjC,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IA2C3D,UAAU,CAAC,OAAO,EAAE;QAClB,eAAe,EAAE,wBAAwB,CAAC;KAC3C,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;CAQpC"}
@@ -1,3 +1,4 @@
1
1
  export { RNHidTransportFactory } from "./api/RNHidTransportFactory";
2
+ export { HidTransportSendApduUnknownError } from "./api/transport/Errors";
2
3
  export { TRANSPORT_IDENTIFIER as rnHidTransportIdentifier } from "./api/transport/rnHidTransportIdentifier";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}