@onekeyfe/hwk-ledger-connector-ble 1.1.26-alpha.8 → 1.1.26-patch.1
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 +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +57 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +58 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -4
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
|
-
|
|
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
|
-
|
|
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
|
-
{
|
|
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
|
-
|
|
51
|
-
|
|
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
|
|
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 {
|
|
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
|
-
{
|
|
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
|
-
|
|
14
|
-
|
|
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
|
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/LedgerBleConnector.ts","../src/index.ts"],"sourcesContent":["import { LedgerConnectorBase
|
|
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-
|
|
3
|
+
"version": "1.1.26-patch.1",
|
|
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-
|
|
55
|
-
"@onekeyfe/hwk-ledger-adapter": "1.1.26-
|
|
54
|
+
"@onekeyfe/hwk-adapter-core": "1.1.26-patch.1",
|
|
55
|
+
"@onekeyfe/hwk-ledger-adapter": "1.1.26-patch.1"
|
|
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": "
|
|
65
|
+
"gitHead": "ff7a6e1c632a9409042abeaf3d36b9a5d980b1bd"
|
|
63
66
|
}
|