@bytezhang/hardware-ledger-connector-ble 0.0.21 → 0.0.22

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.js CHANGED
@@ -59,6 +59,23 @@ var LedgerBleConnector = class extends import_ledger_adapter.LedgerConnectorBase
59
59
  _resolveConnectId(descriptor) {
60
60
  return extractBleHexId(descriptor.name) || descriptor.path;
61
61
  }
62
+ /**
63
+ * Override SOL signer creation for Metro (React Native).
64
+ * `@ledgerhq/device-signer-kit-solana` has no `main` field — Metro can't
65
+ * resolve it via the bare specifier. Use the explicit CJS path instead.
66
+ */
67
+ async _createSolSigner(sessionId) {
68
+ const dmk = await this._getOrCreateDmk();
69
+ const { SignerSolanaBuilder } = await import(
70
+ // @ts-ignore Metro needs explicit CJS path; no "main" field in package
71
+ "@ledgerhq/device-signer-kit-solana/lib/cjs/index.js"
72
+ );
73
+ const sdkSigner = new SignerSolanaBuilder({
74
+ dmk,
75
+ sessionId
76
+ }).build();
77
+ return new import_ledger_adapter.SignerSol(sdkSigner);
78
+ }
62
79
  };
63
80
 
64
81
  // src/index.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/LedgerBleConnector.ts"],"sourcesContent":["import type { IConnector } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\n\nimport {\n LedgerBleConnector,\n} from './LedgerBleConnector';\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?: IDmk): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n","import type { DeviceDescriptor } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\nimport { LedgerConnectorBase } from '@bytezhang/ledger-adapter';\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Extract the stable 4-digit HEX identifier from a Ledger BLE device name.\n * e.g., \"Nano X 123A\" -> \"123A\", \"Ledger Nano X AB12\" -> \"AB12\"\n * Returns undefined if no valid HEX suffix found.\n */\nfunction extractBleHexId(name?: string): string | undefined {\n if (!name) return undefined;\n const match = name.match(/\\b([0-9A-Fa-f]{4})$/);\n return match ? match[1].toUpperCase() : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// LedgerBleConnector\n// ---------------------------------------------------------------------------\n\nexport interface LedgerBleConnectorOptions {\n /**\n * Pre-built DMK instance. If not provided, a DMK will be created\n * lazily on first use via `@ledgerhq/device-management-kit` and\n * `@ledgerhq/device-transport-kit-react-native-ble`.\n */\n dmk?: IDmk;\n}\n\n/**\n * IConnector implementation for Ledger hardware wallets via React Native BLE.\n *\n * Extends LedgerConnectorBase with the React Native BLE transport factory.\n * Overrides connectId resolution to extract the stable BLE hex identifier\n * from the device name.\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 /**\n * Override connectId resolution for BLE devices.\n * Always attempts to extract the stable 4-digit HEX from the device name.\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;;;ACEA,4BAAoC;AAWpC,SAAS,gBAAgB,MAAmC;AAC1D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,SAAO,QAAQ,MAAM,CAAC,EAAE,YAAY,IAAI;AAC1C;AAsBO,IAAM,qBAAN,cAAiC,0CAAoB;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;AAAA;AAAA;AAAA;AAAA,EAMmB,kBAAkB,YAAsC;AACzE,WAAO,gBAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AACF;;;ADzCO,SAAS,yBAAyB,KAAwB;AAC/D,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/LedgerBleConnector.ts"],"sourcesContent":["import type { IConnector } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\n\nimport {\n LedgerBleConnector,\n} from './LedgerBleConnector';\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?: IDmk): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n","import type { DeviceDescriptor } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\nimport { LedgerConnectorBase, SignerSol } from '@bytezhang/ledger-adapter';\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Extract the stable 4-digit HEX identifier from a Ledger BLE device name.\n * e.g., \"Nano X 123A\" -> \"123A\", \"Ledger Nano X AB12\" -> \"AB12\"\n * Returns undefined if no valid HEX suffix found.\n */\nfunction extractBleHexId(name?: string): string | undefined {\n if (!name) return undefined;\n const match = name.match(/\\b([0-9A-Fa-f]{4})$/);\n return match ? match[1].toUpperCase() : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// LedgerBleConnector\n// ---------------------------------------------------------------------------\n\nexport interface LedgerBleConnectorOptions {\n /**\n * Pre-built DMK instance. If not provided, a DMK will be created\n * lazily on first use via `@ledgerhq/device-management-kit` and\n * `@ledgerhq/device-transport-kit-react-native-ble`.\n */\n dmk?: IDmk;\n}\n\n/**\n * IConnector implementation for Ledger hardware wallets via React Native BLE.\n *\n * Extends LedgerConnectorBase with the React Native BLE transport factory.\n * Overrides connectId resolution to extract the stable BLE hex identifier\n * from the device name.\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 /**\n * Override connectId resolution for BLE devices.\n * Always attempts to extract the stable 4-digit HEX from the device name.\n */\n protected override _resolveConnectId(descriptor: DeviceDescriptor): string {\n return extractBleHexId(descriptor.name) || descriptor.path;\n }\n\n /**\n * Override SOL signer creation for Metro (React Native).\n * `@ledgerhq/device-signer-kit-solana` has no `main` field — Metro can't\n * resolve it via the bare specifier. Use the explicit CJS path instead.\n */\n protected override async _createSolSigner(\n sessionId: string,\n ): Promise<SignerSol> {\n const dmk = await this._getOrCreateDmk();\n const { SignerSolanaBuilder } = await import(\n // @ts-ignore Metro needs explicit CJS path; no \"main\" field in package\n '@ledgerhq/device-signer-kit-solana/lib/cjs/index.js'\n );\n const sdkSigner = new SignerSolanaBuilder({\n dmk: dmk as any,\n sessionId,\n }).build();\n return new SignerSol(sdkSigner as any);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,4BAA+C;AAW/C,SAAS,gBAAgB,MAAmC;AAC1D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,SAAO,QAAQ,MAAM,CAAC,EAAE,YAAY,IAAI;AAC1C;AAsBO,IAAM,qBAAN,cAAiC,0CAAoB;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;AAAA;AAAA;AAAA;AAAA,EAMmB,kBAAkB,YAAsC;AACzE,WAAO,gBAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAyB,iBACvB,WACoB;AACpB,UAAM,MAAM,MAAM,KAAK,gBAAgB;AACvC,UAAM,EAAE,oBAAoB,IAAI,MAAM;AAAA;AAAA,MAEpC;AAAA,IACF;AACA,UAAM,YAAY,IAAI,oBAAoB;AAAA,MACxC;AAAA,MACA;AAAA,IACF,CAAC,EAAE,MAAM;AACT,WAAO,IAAI,gCAAU,SAAgB;AAAA,EACvC;AACF;;;AD7DO,SAAS,yBAAyB,KAAwB;AAC/D,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/LedgerBleConnector.ts
2
- import { LedgerConnectorBase } from "@bytezhang/ledger-adapter";
2
+ import { LedgerConnectorBase, SignerSol } from "@bytezhang/ledger-adapter";
3
3
  function extractBleHexId(name) {
4
4
  if (!name) return void 0;
5
5
  const match = name.match(/\b([0-9A-Fa-f]{4})$/);
@@ -22,6 +22,23 @@ var LedgerBleConnector = class extends LedgerConnectorBase {
22
22
  _resolveConnectId(descriptor) {
23
23
  return extractBleHexId(descriptor.name) || descriptor.path;
24
24
  }
25
+ /**
26
+ * Override SOL signer creation for Metro (React Native).
27
+ * `@ledgerhq/device-signer-kit-solana` has no `main` field — Metro can't
28
+ * resolve it via the bare specifier. Use the explicit CJS path instead.
29
+ */
30
+ async _createSolSigner(sessionId) {
31
+ const dmk = await this._getOrCreateDmk();
32
+ const { SignerSolanaBuilder } = await import(
33
+ // @ts-ignore Metro needs explicit CJS path; no "main" field in package
34
+ "@ledgerhq/device-signer-kit-solana/lib/cjs/index.js"
35
+ );
36
+ const sdkSigner = new SignerSolanaBuilder({
37
+ dmk,
38
+ sessionId
39
+ }).build();
40
+ return new SignerSol(sdkSigner);
41
+ }
25
42
  };
26
43
 
27
44
  // src/index.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/LedgerBleConnector.ts","../src/index.ts"],"sourcesContent":["import type { DeviceDescriptor } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\nimport { LedgerConnectorBase } from '@bytezhang/ledger-adapter';\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Extract the stable 4-digit HEX identifier from a Ledger BLE device name.\n * e.g., \"Nano X 123A\" -> \"123A\", \"Ledger Nano X AB12\" -> \"AB12\"\n * Returns undefined if no valid HEX suffix found.\n */\nfunction extractBleHexId(name?: string): string | undefined {\n if (!name) return undefined;\n const match = name.match(/\\b([0-9A-Fa-f]{4})$/);\n return match ? match[1].toUpperCase() : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// LedgerBleConnector\n// ---------------------------------------------------------------------------\n\nexport interface LedgerBleConnectorOptions {\n /**\n * Pre-built DMK instance. If not provided, a DMK will be created\n * lazily on first use via `@ledgerhq/device-management-kit` and\n * `@ledgerhq/device-transport-kit-react-native-ble`.\n */\n dmk?: IDmk;\n}\n\n/**\n * IConnector implementation for Ledger hardware wallets via React Native BLE.\n *\n * Extends LedgerConnectorBase with the React Native BLE transport factory.\n * Overrides connectId resolution to extract the stable BLE hex identifier\n * from the device name.\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 /**\n * Override connectId resolution for BLE devices.\n * Always attempts to extract the stable 4-digit HEX from the device name.\n */\n protected override _resolveConnectId(descriptor: DeviceDescriptor): string {\n return extractBleHexId(descriptor.name) || descriptor.path;\n }\n}\n","import type { IConnector } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\n\nimport {\n LedgerBleConnector,\n} from './LedgerBleConnector';\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?: IDmk): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n"],"mappings":";AAEA,SAAS,2BAA2B;AAWpC,SAAS,gBAAgB,MAAmC;AAC1D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,SAAO,QAAQ,MAAM,CAAC,EAAE,YAAY,IAAI;AAC1C;AAsBO,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;AAAA;AAAA;AAAA;AAAA,EAMmB,kBAAkB,YAAsC;AACzE,WAAO,gBAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AACF;;;ACzCO,SAAS,yBAAyB,KAAwB;AAC/D,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
1
+ {"version":3,"sources":["../src/LedgerBleConnector.ts","../src/index.ts"],"sourcesContent":["import type { DeviceDescriptor } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\nimport { LedgerConnectorBase, SignerSol } from '@bytezhang/ledger-adapter';\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Extract the stable 4-digit HEX identifier from a Ledger BLE device name.\n * e.g., \"Nano X 123A\" -> \"123A\", \"Ledger Nano X AB12\" -> \"AB12\"\n * Returns undefined if no valid HEX suffix found.\n */\nfunction extractBleHexId(name?: string): string | undefined {\n if (!name) return undefined;\n const match = name.match(/\\b([0-9A-Fa-f]{4})$/);\n return match ? match[1].toUpperCase() : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// LedgerBleConnector\n// ---------------------------------------------------------------------------\n\nexport interface LedgerBleConnectorOptions {\n /**\n * Pre-built DMK instance. If not provided, a DMK will be created\n * lazily on first use via `@ledgerhq/device-management-kit` and\n * `@ledgerhq/device-transport-kit-react-native-ble`.\n */\n dmk?: IDmk;\n}\n\n/**\n * IConnector implementation for Ledger hardware wallets via React Native BLE.\n *\n * Extends LedgerConnectorBase with the React Native BLE transport factory.\n * Overrides connectId resolution to extract the stable BLE hex identifier\n * from the device name.\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 /**\n * Override connectId resolution for BLE devices.\n * Always attempts to extract the stable 4-digit HEX from the device name.\n */\n protected override _resolveConnectId(descriptor: DeviceDescriptor): string {\n return extractBleHexId(descriptor.name) || descriptor.path;\n }\n\n /**\n * Override SOL signer creation for Metro (React Native).\n * `@ledgerhq/device-signer-kit-solana` has no `main` field — Metro can't\n * resolve it via the bare specifier. Use the explicit CJS path instead.\n */\n protected override async _createSolSigner(\n sessionId: string,\n ): Promise<SignerSol> {\n const dmk = await this._getOrCreateDmk();\n const { SignerSolanaBuilder } = await import(\n // @ts-ignore Metro needs explicit CJS path; no \"main\" field in package\n '@ledgerhq/device-signer-kit-solana/lib/cjs/index.js'\n );\n const sdkSigner = new SignerSolanaBuilder({\n dmk: dmk as any,\n sessionId,\n }).build();\n return new SignerSol(sdkSigner as any);\n }\n}\n","import type { IConnector } from '@bytezhang/hardware-wallet-core';\nimport type { IDmk } from '@bytezhang/ledger-adapter';\n\nimport {\n LedgerBleConnector,\n} from './LedgerBleConnector';\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?: IDmk): IConnector {\n return new LedgerBleConnector({ dmk });\n}\n"],"mappings":";AAEA,SAAS,qBAAqB,iBAAiB;AAW/C,SAAS,gBAAgB,MAAmC;AAC1D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,SAAO,QAAQ,MAAM,CAAC,EAAE,YAAY,IAAI;AAC1C;AAsBO,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;AAAA;AAAA;AAAA;AAAA,EAMmB,kBAAkB,YAAsC;AACzE,WAAO,gBAAgB,WAAW,IAAI,KAAK,WAAW;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAyB,iBACvB,WACoB;AACpB,UAAM,MAAM,MAAM,KAAK,gBAAgB;AACvC,UAAM,EAAE,oBAAoB,IAAI,MAAM;AAAA;AAAA,MAEpC;AAAA,IACF;AACA,UAAM,YAAY,IAAI,oBAAoB;AAAA,MACxC;AAAA,MACA;AAAA,IACF,CAAC,EAAE,MAAM;AACT,WAAO,IAAI,UAAU,SAAgB;AAAA,EACvC;AACF;;;AC7DO,SAAS,yBAAyB,KAAwB;AAC/D,SAAO,IAAI,mBAAmB,EAAE,IAAI,CAAC;AACvC;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytezhang/hardware-ledger-connector-ble",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "IConnector implementation for Ledger hardware wallets via React Native BLE",
5
5
  "author": "OneKey",
6
6
  "license": "MIT",
@@ -46,8 +46,8 @@
46
46
  "connector"
47
47
  ],
48
48
  "dependencies": {
49
- "@bytezhang/hardware-wallet-core": "0.0.21",
50
- "@bytezhang/ledger-adapter": "0.0.21",
49
+ "@bytezhang/hardware-wallet-core": "0.0.22",
50
+ "@bytezhang/ledger-adapter": "0.0.22",
51
51
  "@ledgerhq/device-management-kit": "^1.1.0",
52
52
  "@ledgerhq/device-signer-kit-ethereum": "^1.9.0",
53
53
  "@ledgerhq/device-signer-kit-bitcoin": "^1.0.0",