@onekeyfe/hwk-ledger-connector-ble 1.1.26-alpha.9 → 1.1.26-patch.2

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.
package/dist/index.d.mts CHANGED
@@ -1,13 +1,17 @@
1
- import { LedgerConnectorBase } from '@onekeyfe/hwk-ledger-adapter';
1
+ import { LedgerConnectorBase, LedgerDeviceManager } from '@onekeyfe/hwk-ledger-adapter';
2
2
  import { DeviceDescriptor, IConnector } from '@onekeyfe/hwk-adapter-core';
3
3
  import { DeviceManagementKit } from '@ledgerhq/device-management-kit';
4
4
 
5
5
  interface LedgerBleConnectorOptions {
6
6
  dmk?: DeviceManagementKit;
7
+ /** Fresh-scan window for liveness probe (default 800ms; ~2+ adv intervals). */
8
+ livenessProbeTimeoutMs?: number;
7
9
  }
8
10
  declare class LedgerBleConnector extends LedgerConnectorBase {
11
+ private readonly _livenessProbeTimeoutMs;
9
12
  constructor(options?: LedgerBleConnectorOptions);
10
- protected _resolveConnectId(descriptor: DeviceDescriptor): string;
13
+ /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */
14
+ protected _discoverDescriptors(dm: LedgerDeviceManager): Promise<DeviceDescriptor[]>;
11
15
  }
12
16
 
13
17
  /**
package/dist/index.d.ts CHANGED
@@ -1,13 +1,17 @@
1
- import { LedgerConnectorBase } from '@onekeyfe/hwk-ledger-adapter';
1
+ import { LedgerConnectorBase, LedgerDeviceManager } from '@onekeyfe/hwk-ledger-adapter';
2
2
  import { DeviceDescriptor, IConnector } from '@onekeyfe/hwk-adapter-core';
3
3
  import { DeviceManagementKit } from '@ledgerhq/device-management-kit';
4
4
 
5
5
  interface LedgerBleConnectorOptions {
6
6
  dmk?: DeviceManagementKit;
7
+ /** Fresh-scan window for liveness probe (default 800ms; ~2+ adv intervals). */
8
+ livenessProbeTimeoutMs?: number;
7
9
  }
8
10
  declare class LedgerBleConnector extends LedgerConnectorBase {
11
+ private readonly _livenessProbeTimeoutMs;
9
12
  constructor(options?: LedgerBleConnectorOptions);
10
- protected _resolveConnectId(descriptor: DeviceDescriptor): string;
13
+ /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */
14
+ protected _discoverDescriptors(dm: LedgerDeviceManager): Promise<DeviceDescriptor[]>;
11
15
  }
12
16
 
13
17
  /**
package/dist/index.js CHANGED
@@ -36,19 +36,72 @@ __export(index_exports, {
36
36
  module.exports = __toCommonJS(index_exports);
37
37
 
38
38
  // src/LedgerBleConnector.ts
39
+ var import_react_native = require("react-native");
39
40
  var import_hwk_ledger_adapter = require("@onekeyfe/hwk-ledger-adapter");
41
+ var rnBleMetadataByPath = /* @__PURE__ */ new Map();
42
+ function patchLedgerRnBleTransportMetadata(transport) {
43
+ const target = transport;
44
+ const original = target._mapDeviceToTransportDiscoveredDevice;
45
+ if (typeof original !== "function") {
46
+ return transport;
47
+ }
48
+ target._mapDeviceToTransportDiscoveredDevice = function patchedMapDevice(device, services) {
49
+ if (device.id) {
50
+ rnBleMetadataByPath.set(device.id, {
51
+ // RN BLE exposes the raw advertisement name separately from localName.
52
+ // Keep both for diagnostics/display, but do not use either as connectId.
53
+ bleName: device.name ?? void 0,
54
+ localName: device.localName ?? void 0,
55
+ rssi: device.rssi,
56
+ serviceUUIDs: device.serviceUUIDs,
57
+ isConnectable: device.isConnectable
58
+ });
59
+ }
60
+ const result = original.call(this, device, services);
61
+ if (!result.map) {
62
+ return result;
63
+ }
64
+ return result.map((mappedDevice) => ({
65
+ ...mappedDevice,
66
+ localName: device.localName || mappedDevice.localName
67
+ }));
68
+ };
69
+ return transport;
70
+ }
40
71
  var LedgerBleConnector = class extends import_hwk_ledger_adapter.LedgerConnectorBase {
41
72
  constructor(options) {
42
73
  super(
43
74
  async () => {
44
75
  const { RNBleTransportFactory } = await import("@ledgerhq/device-transport-kit-react-native-ble");
45
- return RNBleTransportFactory;
76
+ return ((args) => patchLedgerRnBleTransportMetadata(RNBleTransportFactory(args)));
46
77
  },
47
- { connectionType: "ble", dmk: options?.dmk }
78
+ {
79
+ connectionType: "ble",
80
+ dmk: options?.dmk,
81
+ // iOS Core Bluetooth wedges ~30s on connect to non-advertising peripherals.
82
+ requirePreFlightScan: import_react_native.Platform.OS === "ios"
83
+ }
48
84
  );
85
+ this._livenessProbeTimeoutMs = options?.livenessProbeTimeoutMs ?? 800;
49
86
  }
50
- _resolveConnectId(descriptor) {
51
- return (0, import_hwk_ledger_adapter.extractBleHexId)(descriptor.name) || descriptor.path;
87
+ /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */
88
+ async _discoverDescriptors(dm) {
89
+ const live = await dm.getLiveDevices(this._livenessProbeTimeoutMs);
90
+ return live.map((d) => {
91
+ const metadata = rnBleMetadataByPath.get(d.id);
92
+ return {
93
+ path: d.id,
94
+ type: d.deviceModel.model,
95
+ modelName: d.deviceModel.name,
96
+ name: metadata?.localName || d.name,
97
+ bleName: metadata?.bleName || d.name,
98
+ localName: metadata?.localName,
99
+ serviceUUIDs: metadata?.serviceUUIDs,
100
+ isConnectable: metadata?.isConnectable,
101
+ transport: d.transport,
102
+ rssi: d.rssi
103
+ };
104
+ });
52
105
  }
53
106
  };
54
107
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/LedgerBleConnector.ts"],"sourcesContent":["import { LedgerBleConnector } from './LedgerBleConnector';\n\nimport type { IConnector } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\nimport type { LedgerBleConnectorOptions } from './LedgerBleConnector';\n\nexport { LedgerBleConnector };\nexport type { LedgerBleConnectorOptions };\n\n/**\n * Create a LedgerBleConnector.\n *\n * @param dmk - Optional pre-built DMK instance. If omitted, the connector\n * will lazily create one using `@ledgerhq/device-management-kit`\n * and `@ledgerhq/device-transport-kit-react-native-ble`.\n */\nexport function createLedgerBleConnector(dmk?: DeviceManagementKit): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n","import { LedgerConnectorBase, extractBleHexId } from '@onekeyfe/hwk-ledger-adapter';\n\nimport type { DeviceDescriptor } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\n\nexport interface LedgerBleConnectorOptions {\n dmk?: DeviceManagementKit;\n}\n\nexport class LedgerBleConnector extends LedgerConnectorBase {\n constructor(options?: LedgerBleConnectorOptions) {\n super(\n async () => {\n const { RNBleTransportFactory } = await import(\n '@ledgerhq/device-transport-kit-react-native-ble'\n );\n return RNBleTransportFactory;\n },\n { connectionType: 'ble', dmk: options?.dmk }\n );\n }\n\n protected override _resolveConnectId(descriptor: DeviceDescriptor): string {\n return extractBleHexId(descriptor.name) || descriptor.path;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,gCAAqD;AAS9C,IAAM,qBAAN,cAAiC,8CAAoB;AAAA,EAC1D,YAAY,SAAqC;AAC/C;AAAA,MACE,YAAY;AACV,cAAM,EAAE,sBAAsB,IAAI,MAAM,OACtC,iDACF;AACA,eAAO;AAAA,MACT;AAAA,MACA,EAAE,gBAAgB,OAAO,KAAK,SAAS,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEmB,kBAAkB,YAAsC;AACzE,eAAO,2CAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AACF;;;ADTO,SAAS,yBAAyB,KAAuC;AAC9E,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/LedgerBleConnector.ts"],"sourcesContent":["import { LedgerBleConnector } from './LedgerBleConnector';\n\nimport type { IConnector } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\nimport type { LedgerBleConnectorOptions } from './LedgerBleConnector';\n\nexport { LedgerBleConnector };\nexport type { LedgerBleConnectorOptions };\n\n/**\n * Create a LedgerBleConnector.\n *\n * @param dmk - Optional pre-built DMK instance. If omitted, the connector\n * will lazily create one using `@ledgerhq/device-management-kit`\n * and `@ledgerhq/device-transport-kit-react-native-ble`.\n */\nexport function createLedgerBleConnector(dmk?: DeviceManagementKit): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n","import { Platform } from 'react-native';\nimport { LedgerConnectorBase } from '@onekeyfe/hwk-ledger-adapter';\n\nimport type { LedgerDeviceManager } from '@onekeyfe/hwk-ledger-adapter';\nimport type { DeviceDescriptor } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit, TransportFactory } from '@ledgerhq/device-management-kit';\n\ntype RnBleRawDevice = {\n id?: string;\n name?: string | null;\n localName?: string | null;\n rssi?: number | null;\n serviceUUIDs?: string[] | null;\n isConnectable?: boolean | null;\n};\n\ntype RnBleTransportDiscoveredDevice = {\n id?: string;\n name?: string;\n localName?: string;\n};\n\ntype RnBleMapResult = {\n map?: (\n fn: (device: RnBleTransportDiscoveredDevice) => RnBleTransportDiscoveredDevice\n ) => RnBleMapResult;\n};\n\ntype RnBleTransportWithMapper = {\n _mapDeviceToTransportDiscoveredDevice?: (\n device: RnBleRawDevice,\n services?: string[]\n ) => RnBleMapResult;\n};\n\ntype RnBleMetadata = {\n bleName?: string;\n localName?: string;\n rssi?: number | null;\n serviceUUIDs?: string[] | null;\n isConnectable?: boolean | null;\n};\n\nconst rnBleMetadataByPath = new Map<string, RnBleMetadata>();\n\nfunction patchLedgerRnBleTransportMetadata(transport: unknown): unknown {\n const target = transport as RnBleTransportWithMapper;\n const original = target._mapDeviceToTransportDiscoveredDevice;\n if (typeof original !== 'function') {\n return transport;\n }\n\n target._mapDeviceToTransportDiscoveredDevice = function patchedMapDevice(\n this: RnBleTransportWithMapper,\n device: RnBleRawDevice,\n services?: string[]\n ) {\n if (device.id) {\n rnBleMetadataByPath.set(device.id, {\n // RN BLE exposes the raw advertisement name separately from localName.\n // Keep both for diagnostics/display, but do not use either as connectId.\n bleName: device.name ?? undefined,\n localName: device.localName ?? undefined,\n rssi: device.rssi,\n serviceUUIDs: device.serviceUUIDs,\n isConnectable: device.isConnectable,\n });\n }\n\n const result = original.call(this, device, services);\n if (!result.map) {\n return result;\n }\n return result.map((mappedDevice: RnBleTransportDiscoveredDevice) => ({\n ...mappedDevice,\n localName: device.localName || mappedDevice.localName,\n }));\n };\n\n return transport;\n}\n\nexport interface LedgerBleConnectorOptions {\n dmk?: DeviceManagementKit;\n /** Fresh-scan window for liveness probe (default 800ms; ~2+ adv intervals). */\n livenessProbeTimeoutMs?: number;\n}\n\nexport class LedgerBleConnector extends LedgerConnectorBase {\n private readonly _livenessProbeTimeoutMs: number;\n\n constructor(options?: LedgerBleConnectorOptions) {\n super(\n async () => {\n const { RNBleTransportFactory } = await import(\n '@ledgerhq/device-transport-kit-react-native-ble'\n );\n return ((args: Parameters<TransportFactory>[0]) =>\n patchLedgerRnBleTransportMetadata(RNBleTransportFactory(args))) as TransportFactory;\n },\n {\n connectionType: 'ble',\n dmk: options?.dmk,\n // iOS Core Bluetooth wedges ~30s on connect to non-advertising peripherals.\n requirePreFlightScan: Platform.OS === 'ios',\n }\n );\n this._livenessProbeTimeoutMs = options?.livenessProbeTimeoutMs ?? 800;\n }\n\n /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */\n protected override async _discoverDescriptors(\n dm: LedgerDeviceManager\n ): Promise<DeviceDescriptor[]> {\n const live = await dm.getLiveDevices(this._livenessProbeTimeoutMs);\n return live.map(d => {\n const metadata = rnBleMetadataByPath.get(d.id);\n return {\n path: d.id,\n type: d.deviceModel.model,\n modelName: d.deviceModel.name,\n name: metadata?.localName || d.name,\n bleName: metadata?.bleName || d.name,\n localName: metadata?.localName,\n serviceUUIDs: metadata?.serviceUUIDs,\n isConnectable: metadata?.isConnectable,\n transport: d.transport,\n rssi: d.rssi,\n };\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,0BAAyB;AACzB,gCAAoC;AA0CpC,IAAM,sBAAsB,oBAAI,IAA2B;AAE3D,SAAS,kCAAkC,WAA6B;AACtE,QAAM,SAAS;AACf,QAAM,WAAW,OAAO;AACxB,MAAI,OAAO,aAAa,YAAY;AAClC,WAAO;AAAA,EACT;AAEA,SAAO,wCAAwC,SAAS,iBAEtD,QACA,UACA;AACA,QAAI,OAAO,IAAI;AACb,0BAAoB,IAAI,OAAO,IAAI;AAAA;AAAA;AAAA,QAGjC,SAAS,OAAO,QAAQ;AAAA,QACxB,WAAW,OAAO,aAAa;AAAA,QAC/B,MAAM,OAAO;AAAA,QACb,cAAc,OAAO;AAAA,QACrB,eAAe,OAAO;AAAA,MACxB,CAAC;AAAA,IACH;AAEA,UAAM,SAAS,SAAS,KAAK,MAAM,QAAQ,QAAQ;AACnD,QAAI,CAAC,OAAO,KAAK;AACf,aAAO;AAAA,IACT;AACA,WAAO,OAAO,IAAI,CAAC,kBAAkD;AAAA,MACnE,GAAG;AAAA,MACH,WAAW,OAAO,aAAa,aAAa;AAAA,IAC9C,EAAE;AAAA,EACJ;AAEA,SAAO;AACT;AAQO,IAAM,qBAAN,cAAiC,8CAAoB;AAAA,EAG1D,YAAY,SAAqC;AAC/C;AAAA,MACE,YAAY;AACV,cAAM,EAAE,sBAAsB,IAAI,MAAM,OACtC,iDACF;AACA,gBAAQ,CAAC,SACP,kCAAkC,sBAAsB,IAAI,CAAC;AAAA,MACjE;AAAA,MACA;AAAA,QACE,gBAAgB;AAAA,QAChB,KAAK,SAAS;AAAA;AAAA,QAEd,sBAAsB,6BAAS,OAAO;AAAA,MACxC;AAAA,IACF;AACA,SAAK,0BAA0B,SAAS,0BAA0B;AAAA,EACpE;AAAA;AAAA,EAGA,MAAyB,qBACvB,IAC6B;AAC7B,UAAM,OAAO,MAAM,GAAG,eAAe,KAAK,uBAAuB;AACjE,WAAO,KAAK,IAAI,OAAK;AACnB,YAAM,WAAW,oBAAoB,IAAI,EAAE,EAAE;AAC7C,aAAO;AAAA,QACL,MAAM,EAAE;AAAA,QACR,MAAM,EAAE,YAAY;AAAA,QACpB,WAAW,EAAE,YAAY;AAAA,QACzB,MAAM,UAAU,aAAa,EAAE;AAAA,QAC/B,SAAS,UAAU,WAAW,EAAE;AAAA,QAChC,WAAW,UAAU;AAAA,QACrB,cAAc,UAAU;AAAA,QACxB,eAAe,UAAU;AAAA,QACzB,WAAW,EAAE;AAAA,QACb,MAAM,EAAE;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ADnHO,SAAS,yBAAyB,KAAuC;AAC9E,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
package/dist/index.mjs CHANGED
@@ -1,17 +1,70 @@
1
1
  // src/LedgerBleConnector.ts
2
- import { LedgerConnectorBase, extractBleHexId } from "@onekeyfe/hwk-ledger-adapter";
2
+ import { Platform } from "react-native";
3
+ import { LedgerConnectorBase } from "@onekeyfe/hwk-ledger-adapter";
4
+ var rnBleMetadataByPath = /* @__PURE__ */ new Map();
5
+ function patchLedgerRnBleTransportMetadata(transport) {
6
+ const target = transport;
7
+ const original = target._mapDeviceToTransportDiscoveredDevice;
8
+ if (typeof original !== "function") {
9
+ return transport;
10
+ }
11
+ target._mapDeviceToTransportDiscoveredDevice = function patchedMapDevice(device, services) {
12
+ if (device.id) {
13
+ rnBleMetadataByPath.set(device.id, {
14
+ // RN BLE exposes the raw advertisement name separately from localName.
15
+ // Keep both for diagnostics/display, but do not use either as connectId.
16
+ bleName: device.name ?? void 0,
17
+ localName: device.localName ?? void 0,
18
+ rssi: device.rssi,
19
+ serviceUUIDs: device.serviceUUIDs,
20
+ isConnectable: device.isConnectable
21
+ });
22
+ }
23
+ const result = original.call(this, device, services);
24
+ if (!result.map) {
25
+ return result;
26
+ }
27
+ return result.map((mappedDevice) => ({
28
+ ...mappedDevice,
29
+ localName: device.localName || mappedDevice.localName
30
+ }));
31
+ };
32
+ return transport;
33
+ }
3
34
  var LedgerBleConnector = class extends LedgerConnectorBase {
4
35
  constructor(options) {
5
36
  super(
6
37
  async () => {
7
38
  const { RNBleTransportFactory } = await import("@ledgerhq/device-transport-kit-react-native-ble");
8
- return RNBleTransportFactory;
39
+ return ((args) => patchLedgerRnBleTransportMetadata(RNBleTransportFactory(args)));
9
40
  },
10
- { connectionType: "ble", dmk: options?.dmk }
41
+ {
42
+ connectionType: "ble",
43
+ dmk: options?.dmk,
44
+ // iOS Core Bluetooth wedges ~30s on connect to non-advertising peripherals.
45
+ requirePreFlightScan: Platform.OS === "ios"
46
+ }
11
47
  );
48
+ this._livenessProbeTimeoutMs = options?.livenessProbeTimeoutMs ?? 800;
12
49
  }
13
- _resolveConnectId(descriptor) {
14
- return extractBleHexId(descriptor.name) || descriptor.path;
50
+ /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */
51
+ async _discoverDescriptors(dm) {
52
+ const live = await dm.getLiveDevices(this._livenessProbeTimeoutMs);
53
+ return live.map((d) => {
54
+ const metadata = rnBleMetadataByPath.get(d.id);
55
+ return {
56
+ path: d.id,
57
+ type: d.deviceModel.model,
58
+ modelName: d.deviceModel.name,
59
+ name: metadata?.localName || d.name,
60
+ bleName: metadata?.bleName || d.name,
61
+ localName: metadata?.localName,
62
+ serviceUUIDs: metadata?.serviceUUIDs,
63
+ isConnectable: metadata?.isConnectable,
64
+ transport: d.transport,
65
+ rssi: d.rssi
66
+ };
67
+ });
15
68
  }
16
69
  };
17
70
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/LedgerBleConnector.ts","../src/index.ts"],"sourcesContent":["import { LedgerConnectorBase, extractBleHexId } from '@onekeyfe/hwk-ledger-adapter';\n\nimport type { DeviceDescriptor } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\n\nexport interface LedgerBleConnectorOptions {\n dmk?: DeviceManagementKit;\n}\n\nexport class LedgerBleConnector extends LedgerConnectorBase {\n constructor(options?: LedgerBleConnectorOptions) {\n super(\n async () => {\n const { RNBleTransportFactory } = await import(\n '@ledgerhq/device-transport-kit-react-native-ble'\n );\n return RNBleTransportFactory;\n },\n { connectionType: 'ble', dmk: options?.dmk }\n );\n }\n\n protected override _resolveConnectId(descriptor: DeviceDescriptor): string {\n return extractBleHexId(descriptor.name) || descriptor.path;\n }\n}\n","import { LedgerBleConnector } from './LedgerBleConnector';\n\nimport type { IConnector } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\nimport type { LedgerBleConnectorOptions } from './LedgerBleConnector';\n\nexport { LedgerBleConnector };\nexport type { LedgerBleConnectorOptions };\n\n/**\n * Create a LedgerBleConnector.\n *\n * @param dmk - Optional pre-built DMK instance. If omitted, the connector\n * will lazily create one using `@ledgerhq/device-management-kit`\n * and `@ledgerhq/device-transport-kit-react-native-ble`.\n */\nexport function createLedgerBleConnector(dmk?: DeviceManagementKit): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n"],"mappings":";AAAA,SAAS,qBAAqB,uBAAuB;AAS9C,IAAM,qBAAN,cAAiC,oBAAoB;AAAA,EAC1D,YAAY,SAAqC;AAC/C;AAAA,MACE,YAAY;AACV,cAAM,EAAE,sBAAsB,IAAI,MAAM,OACtC,iDACF;AACA,eAAO;AAAA,MACT;AAAA,MACA,EAAE,gBAAgB,OAAO,KAAK,SAAS,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEmB,kBAAkB,YAAsC;AACzE,WAAO,gBAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AACF;;;ACTO,SAAS,yBAAyB,KAAuC;AAC9E,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
1
+ {"version":3,"sources":["../src/LedgerBleConnector.ts","../src/index.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport { LedgerConnectorBase } from '@onekeyfe/hwk-ledger-adapter';\n\nimport type { LedgerDeviceManager } from '@onekeyfe/hwk-ledger-adapter';\nimport type { DeviceDescriptor } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit, TransportFactory } from '@ledgerhq/device-management-kit';\n\ntype RnBleRawDevice = {\n id?: string;\n name?: string | null;\n localName?: string | null;\n rssi?: number | null;\n serviceUUIDs?: string[] | null;\n isConnectable?: boolean | null;\n};\n\ntype RnBleTransportDiscoveredDevice = {\n id?: string;\n name?: string;\n localName?: string;\n};\n\ntype RnBleMapResult = {\n map?: (\n fn: (device: RnBleTransportDiscoveredDevice) => RnBleTransportDiscoveredDevice\n ) => RnBleMapResult;\n};\n\ntype RnBleTransportWithMapper = {\n _mapDeviceToTransportDiscoveredDevice?: (\n device: RnBleRawDevice,\n services?: string[]\n ) => RnBleMapResult;\n};\n\ntype RnBleMetadata = {\n bleName?: string;\n localName?: string;\n rssi?: number | null;\n serviceUUIDs?: string[] | null;\n isConnectable?: boolean | null;\n};\n\nconst rnBleMetadataByPath = new Map<string, RnBleMetadata>();\n\nfunction patchLedgerRnBleTransportMetadata(transport: unknown): unknown {\n const target = transport as RnBleTransportWithMapper;\n const original = target._mapDeviceToTransportDiscoveredDevice;\n if (typeof original !== 'function') {\n return transport;\n }\n\n target._mapDeviceToTransportDiscoveredDevice = function patchedMapDevice(\n this: RnBleTransportWithMapper,\n device: RnBleRawDevice,\n services?: string[]\n ) {\n if (device.id) {\n rnBleMetadataByPath.set(device.id, {\n // RN BLE exposes the raw advertisement name separately from localName.\n // Keep both for diagnostics/display, but do not use either as connectId.\n bleName: device.name ?? undefined,\n localName: device.localName ?? undefined,\n rssi: device.rssi,\n serviceUUIDs: device.serviceUUIDs,\n isConnectable: device.isConnectable,\n });\n }\n\n const result = original.call(this, device, services);\n if (!result.map) {\n return result;\n }\n return result.map((mappedDevice: RnBleTransportDiscoveredDevice) => ({\n ...mappedDevice,\n localName: device.localName || mappedDevice.localName,\n }));\n };\n\n return transport;\n}\n\nexport interface LedgerBleConnectorOptions {\n dmk?: DeviceManagementKit;\n /** Fresh-scan window for liveness probe (default 800ms; ~2+ adv intervals). */\n livenessProbeTimeoutMs?: number;\n}\n\nexport class LedgerBleConnector extends LedgerConnectorBase {\n private readonly _livenessProbeTimeoutMs: number;\n\n constructor(options?: LedgerBleConnectorOptions) {\n super(\n async () => {\n const { RNBleTransportFactory } = await import(\n '@ledgerhq/device-transport-kit-react-native-ble'\n );\n return ((args: Parameters<TransportFactory>[0]) =>\n patchLedgerRnBleTransportMetadata(RNBleTransportFactory(args))) as TransportFactory;\n },\n {\n connectionType: 'ble',\n dmk: options?.dmk,\n // iOS Core Bluetooth wedges ~30s on connect to non-advertising peripherals.\n requirePreFlightScan: Platform.OS === 'ios',\n }\n );\n this._livenessProbeTimeoutMs = options?.livenessProbeTimeoutMs ?? 800;\n }\n\n /** BLE discovery uses a fresh scan window; enumerate cache is ignored. */\n protected override async _discoverDescriptors(\n dm: LedgerDeviceManager\n ): Promise<DeviceDescriptor[]> {\n const live = await dm.getLiveDevices(this._livenessProbeTimeoutMs);\n return live.map(d => {\n const metadata = rnBleMetadataByPath.get(d.id);\n return {\n path: d.id,\n type: d.deviceModel.model,\n modelName: d.deviceModel.name,\n name: metadata?.localName || d.name,\n bleName: metadata?.bleName || d.name,\n localName: metadata?.localName,\n serviceUUIDs: metadata?.serviceUUIDs,\n isConnectable: metadata?.isConnectable,\n transport: d.transport,\n rssi: d.rssi,\n };\n });\n }\n}\n","import { LedgerBleConnector } from './LedgerBleConnector';\n\nimport type { IConnector } from '@onekeyfe/hwk-adapter-core';\nimport type { DeviceManagementKit } from '@ledgerhq/device-management-kit';\nimport type { LedgerBleConnectorOptions } from './LedgerBleConnector';\n\nexport { LedgerBleConnector };\nexport type { LedgerBleConnectorOptions };\n\n/**\n * Create a LedgerBleConnector.\n *\n * @param dmk - Optional pre-built DMK instance. If omitted, the connector\n * will lazily create one using `@ledgerhq/device-management-kit`\n * and `@ledgerhq/device-transport-kit-react-native-ble`.\n */\nexport function createLedgerBleConnector(dmk?: DeviceManagementKit): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AA0CpC,IAAM,sBAAsB,oBAAI,IAA2B;AAE3D,SAAS,kCAAkC,WAA6B;AACtE,QAAM,SAAS;AACf,QAAM,WAAW,OAAO;AACxB,MAAI,OAAO,aAAa,YAAY;AAClC,WAAO;AAAA,EACT;AAEA,SAAO,wCAAwC,SAAS,iBAEtD,QACA,UACA;AACA,QAAI,OAAO,IAAI;AACb,0BAAoB,IAAI,OAAO,IAAI;AAAA;AAAA;AAAA,QAGjC,SAAS,OAAO,QAAQ;AAAA,QACxB,WAAW,OAAO,aAAa;AAAA,QAC/B,MAAM,OAAO;AAAA,QACb,cAAc,OAAO;AAAA,QACrB,eAAe,OAAO;AAAA,MACxB,CAAC;AAAA,IACH;AAEA,UAAM,SAAS,SAAS,KAAK,MAAM,QAAQ,QAAQ;AACnD,QAAI,CAAC,OAAO,KAAK;AACf,aAAO;AAAA,IACT;AACA,WAAO,OAAO,IAAI,CAAC,kBAAkD;AAAA,MACnE,GAAG;AAAA,MACH,WAAW,OAAO,aAAa,aAAa;AAAA,IAC9C,EAAE;AAAA,EACJ;AAEA,SAAO;AACT;AAQO,IAAM,qBAAN,cAAiC,oBAAoB;AAAA,EAG1D,YAAY,SAAqC;AAC/C;AAAA,MACE,YAAY;AACV,cAAM,EAAE,sBAAsB,IAAI,MAAM,OACtC,iDACF;AACA,gBAAQ,CAAC,SACP,kCAAkC,sBAAsB,IAAI,CAAC;AAAA,MACjE;AAAA,MACA;AAAA,QACE,gBAAgB;AAAA,QAChB,KAAK,SAAS;AAAA;AAAA,QAEd,sBAAsB,SAAS,OAAO;AAAA,MACxC;AAAA,IACF;AACA,SAAK,0BAA0B,SAAS,0BAA0B;AAAA,EACpE;AAAA;AAAA,EAGA,MAAyB,qBACvB,IAC6B;AAC7B,UAAM,OAAO,MAAM,GAAG,eAAe,KAAK,uBAAuB;AACjE,WAAO,KAAK,IAAI,OAAK;AACnB,YAAM,WAAW,oBAAoB,IAAI,EAAE,EAAE;AAC7C,aAAO;AAAA,QACL,MAAM,EAAE;AAAA,QACR,MAAM,EAAE,YAAY;AAAA,QACpB,WAAW,EAAE,YAAY;AAAA,QACzB,MAAM,UAAU,aAAa,EAAE;AAAA,QAC/B,SAAS,UAAU,WAAW,EAAE;AAAA,QAChC,WAAW,UAAU;AAAA,QACrB,cAAc,UAAU;AAAA,QACxB,eAAe,UAAU;AAAA,QACzB,WAAW,EAAE;AAAA,QACb,MAAM,EAAE;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACnHO,SAAS,yBAAyB,KAAuC;AAC9E,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hwk-ledger-connector-ble",
3
- "version": "1.1.26-alpha.9",
3
+ "version": "1.1.26-patch.2",
4
4
  "description": "IConnector implementation for Ledger hardware wallets via React Native BLE",
5
5
  "author": "OneKey",
6
6
  "license": "MIT",
@@ -51,13 +51,16 @@
51
51
  "@ledgerhq/device-signer-kit-ethereum": "^1.9.0",
52
52
  "@ledgerhq/device-signer-kit-solana": "^1.7.0",
53
53
  "@ledgerhq/device-transport-kit-react-native-ble": "^1.0.0",
54
- "@onekeyfe/hwk-adapter-core": "1.1.26-alpha.9",
55
- "@onekeyfe/hwk-ledger-adapter": "1.1.26-alpha.9"
54
+ "@onekeyfe/hwk-adapter-core": "1.1.26-patch.2",
55
+ "@onekeyfe/hwk-ledger-adapter": "1.1.26-patch.2"
56
+ },
57
+ "peerDependencies": {
58
+ "react-native": "*"
56
59
  },
57
60
  "devDependencies": {
58
61
  "rimraf": "^5.0.0",
59
62
  "tsup": "^8.0.0",
60
63
  "typescript": "^5.4.0"
61
64
  },
62
- "gitHead": "73b45490c5e909cca5724989b4d1317a58e28913"
65
+ "gitHead": "85eeac7fe16589ca6610d7543f6791d1b4bad516"
63
66
  }