@reef-knot/ledger-connector 3.0.0 → 4.0.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.
@@ -23,22 +23,9 @@ function __awaiter(thisArg, _arguments, P, generator) {
23
23
  });
24
24
  }
25
25
 
26
- function __classPrivateFieldGet(receiver, state, kind, f) {
27
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
28
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
29
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
30
- }
31
-
32
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
33
- if (kind === "m") throw new TypeError("Private method is not writable");
34
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
35
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
36
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
37
- }
38
-
39
26
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
40
27
  var e = new Error(message);
41
28
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
42
29
  };
43
30
 
44
- export { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet };
31
+ export { __awaiter };
@@ -1,24 +1,12 @@
1
- import { Address, Chain, Connector, ConnectorData } from 'wagmi';
2
- export declare class LedgerHIDConnector<Options = any> extends Connector {
3
- #private;
4
- readonly id = "ledgerHID";
5
- readonly name = "Ledger";
6
- ready: boolean;
7
- constructor({ defaultChain, chains, rpc, options, }: {
8
- defaultChain: Chain;
9
- chains?: Chain[];
10
- rpc: Record<number, string>;
11
- options?: Options;
12
- });
13
- connect(): Promise<Required<ConnectorData>>;
14
- disconnect(): Promise<void>;
15
- getAccount(): Promise<Address>;
16
- getChainId(): Promise<number>;
17
- getProvider(): Promise<any>;
18
- getSigner(): Promise<any>;
19
- isAuthorized(): Promise<boolean>;
20
- protected onDisconnect: () => void;
21
- protected onAccountsChanged: () => void;
22
- protected onChainChanged: () => void;
1
+ import { Chain } from 'wagmi/chains';
2
+ import type { LedgerHQProvider } from './provider';
3
+ export declare const idLedgerHid = "ledgerHID";
4
+ export declare const name = "Ledger";
5
+ export declare function ledgerHIDConnector({ rpc, defaultChain, }: {
6
+ rpc: Record<number, string>;
7
+ defaultChain: Chain;
8
+ }): import("wagmi").CreateConnectorFn<LedgerHQProvider, Record<string, unknown>, Record<string, unknown>>;
9
+ export declare namespace ledgerHIDConnector {
10
+ var type: "ledgerHID";
23
11
  }
24
12
  //# sourceMappingURL=connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/hid/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,SAAS,EACT,aAAa,EAEd,MAAM,OAAO,CAAC;AAGf,qBAAa,kBAAkB,CAAC,OAAO,GAAG,GAAG,CAAE,SAAQ,SAAS;;IAC9D,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,YAAY;IAEzB,KAAK,UAAS;gBAIF,EACV,YAAY,EACZ,MAAM,EACN,GAAG,EACH,OAAO,GACR,EAAE;QACD,YAAY,EAAE,KAAK,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IAMK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAsBjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAOvB,WAAW;IAYjB,SAAS;IAKH,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAWtC,SAAS,CAAC,YAAY,QAAO,IAAI,CAK/B;IAEF,SAAS,CAAC,iBAAiB,QAAO,IAAI,CAEpC;IAEF,SAAS,CAAC,cAAc,QAAO,IAAI,CAEjC;CACH"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/hid/connector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,IAAI,WAAW,CAAC;AAG7B,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,YAAY,GACb,EAAE;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,KAAK,CAAC;CACrB,yGAoFA;yBA1Fe,kBAAkB"}
@@ -1,106 +1,105 @@
1
- import { __classPrivateFieldSet, __awaiter, __classPrivateFieldGet } from '../_virtual/_tslib.js';
2
- import { Connector, ConnectorNotFoundError } from 'wagmi';
1
+ import { __awaiter } from '../_virtual/_tslib.js';
2
+ import { createConnector, ChainNotConfiguredError, ConnectorNotFoundError } from 'wagmi';
3
3
  import { checkError } from './helpers.js';
4
4
 
5
- var _LedgerHIDConnector_chain, _LedgerHIDConnector_provider, _LedgerHIDConnector_rpc;
6
- class LedgerHIDConnector extends Connector {
7
- constructor({
8
- defaultChain,
5
+ const idLedgerHid = 'ledgerHID';
6
+ const name = 'Ledger';
7
+ ledgerHIDConnector.type = 'ledgerHID';
8
+ function ledgerHIDConnector({
9
+ rpc,
10
+ defaultChain
11
+ }) {
12
+ const providers = {};
13
+ return createConnector(({
9
14
  chains,
10
- rpc,
11
- options
12
- }) {
13
- super({
14
- chains,
15
- options
16
- });
17
- this.id = 'ledgerHID';
18
- this.name = 'Ledger';
19
- _LedgerHIDConnector_chain.set(this, void 0);
20
- this.ready = false;
21
- _LedgerHIDConnector_provider.set(this, void 0);
22
- _LedgerHIDConnector_rpc.set(this, void 0);
23
- this.onDisconnect = () => {
15
+ emitter
16
+ }) => ({
17
+ id: idLedgerHid,
18
+ name,
19
+ type: ledgerHIDConnector.type,
20
+ getProvider() {
21
+ return __awaiter(this, arguments, void 0, function* ({
22
+ chainId
23
+ } = {}) {
24
+ var _a;
25
+ const chain = (_a = chains.find(x => x.id === chainId)) !== null && _a !== void 0 ? _a : defaultChain;
26
+ if (!providers[chain.id]) {
27
+ const {
28
+ LedgerHQProvider
29
+ } = yield import('./provider.js');
30
+ providers[chain.id] = new LedgerHQProvider({
31
+ url: rpc === null || rpc === void 0 ? void 0 : rpc[chain.id]
32
+ }, chain.id);
33
+ }
34
+ return providers[chain.id];
35
+ });
36
+ },
37
+ connect() {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ try {
40
+ const provider = yield this.getProvider();
41
+ provider.on('disconnect', this.onDisconnect);
42
+ const account = yield provider.enable();
43
+ const chainId = yield this.getChainId();
44
+ return {
45
+ accounts: [account],
46
+ chainId
47
+ };
48
+ } catch (error) {
49
+ return checkError(error);
50
+ }
51
+ });
52
+ },
53
+ disconnect() {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ // Handles programmatic disconnect.
56
+ // We don't need to do anything specific for HID Ledger connection in this case.
57
+ const provider = yield this.getProvider();
58
+ provider.removeListener('disconnect', this.onDisconnect);
59
+ });
60
+ },
61
+ getAccounts() {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const provider = yield this.getProvider();
64
+ const address = yield provider.getAddress();
65
+ return [address];
66
+ });
67
+ },
68
+ getChainId() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const provider = yield this.getProvider();
71
+ const {
72
+ chainId
73
+ } = yield provider.getNetwork();
74
+ if (chainId) return chainId;
75
+ throw new ChainNotConfiguredError();
76
+ });
77
+ },
78
+ isAuthorized() {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ try {
81
+ const provider = yield this.getProvider();
82
+ if (!provider) throw new ConnectorNotFoundError();
83
+ const [account] = yield this.getAccounts();
84
+ return !!account;
85
+ } catch (_a) {
86
+ return false;
87
+ }
88
+ });
89
+ },
90
+ onDisconnect() {
24
91
  // Is called when HID API emits 'disconnect' event for some reason.
25
92
  // For example, the device was manually unplugged.
26
93
  // It is common to emit 'disconnect' from connector in this case.
27
- this.emit('disconnect');
28
- };
29
- this.onAccountsChanged = () => {
94
+ emitter.emit('disconnect');
95
+ },
96
+ onAccountsChanged() {
30
97
  // NOOP
31
- };
32
- this.onChainChanged = () => {
98
+ },
99
+ onChainChanged() {
33
100
  // NOOP
34
- };
35
- __classPrivateFieldSet(this, _LedgerHIDConnector_chain, defaultChain, "f");
36
- __classPrivateFieldSet(this, _LedgerHIDConnector_rpc, rpc === null || rpc === void 0 ? void 0 : rpc[defaultChain.id], "f");
37
- }
38
- connect() {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- try {
41
- __classPrivateFieldSet(this, _LedgerHIDConnector_provider, yield this.getProvider(), "f");
42
- __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f").on('disconnect', this.onDisconnect);
43
- const account = yield __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f").enable();
44
- const chainId = yield this.getChainId();
45
- const chainUnsupported = this.isChainUnsupported(chainId);
46
- this.ready = !!__classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f");
47
- return {
48
- account,
49
- provider: __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f"),
50
- chain: {
51
- id: chainId,
52
- unsupported: chainUnsupported
53
- }
54
- };
55
- } catch (error) {
56
- return checkError(error);
57
- }
58
- });
59
- }
60
- disconnect() {
61
- // Handles programmatic disconnect.
62
- // We don't need to do anything specific for HID Ledger connection in this case.
63
- __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f").removeListener('disconnect', this.onDisconnect);
64
- return Promise.resolve();
65
- }
66
- getAccount() {
67
- return __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f").getAddress();
68
- }
69
- getChainId() {
70
- if (__classPrivateFieldGet(this, _LedgerHIDConnector_chain, "f")) {
71
- return Promise.resolve(__classPrivateFieldGet(this, _LedgerHIDConnector_chain, "f").id);
72
101
  }
73
- return Promise.reject('The chain must be set');
74
- }
75
- getProvider() {
76
- return __awaiter(this, void 0, void 0, function* () {
77
- if (__classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f")) return __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f");
78
- const {
79
- LedgerHQProvider
80
- } = yield import('./provider.js');
81
- const chainId = yield this.getChainId();
82
- return new LedgerHQProvider({
83
- url: __classPrivateFieldGet(this, _LedgerHIDConnector_rpc, "f")
84
- }, chainId);
85
- });
86
- }
87
- getSigner() {
88
- const signer = __classPrivateFieldGet(this, _LedgerHIDConnector_provider, "f").signer;
89
- return Promise.resolve(signer);
90
- }
91
- isAuthorized() {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- try {
94
- const provider = yield this.getProvider();
95
- if (!provider) throw new ConnectorNotFoundError();
96
- const account = yield this.getAccount();
97
- return !!account;
98
- } catch (_a) {
99
- return false;
100
- }
101
- });
102
- }
102
+ }));
103
103
  }
104
- _LedgerHIDConnector_chain = new WeakMap(), _LedgerHIDConnector_provider = new WeakMap(), _LedgerHIDConnector_rpc = new WeakMap();
105
104
 
106
- export { LedgerHIDConnector };
105
+ export { idLedgerHid, ledgerHIDConnector, name };
@@ -1,3 +1,3 @@
1
- export { LedgerHIDConnector } from './connector';
1
+ export { idLedgerHid, ledgerHIDConnector } from './connector';
2
2
  export { LS_KEY_DERIVATION_PATH } from './signer';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
@@ -19,8 +19,8 @@ class LedgerHQProvider extends JsonRpcBatchProvider {
19
19
  return Promise.resolve(this._network);
20
20
  }
21
21
  getTransport() {
22
- var _a;
23
22
  return __awaiter(this, void 0, void 0, function* () {
23
+ var _a;
24
24
  invariant(this.transport, 'Transport is not defined');
25
25
  try {
26
26
  const transportInstance = yield (_a = this.transport) === null || _a === void 0 ? void 0 : _a.create();
@@ -63,11 +63,11 @@ class LedgerHQProvider extends JsonRpcBatchProvider {
63
63
  return yield this.signer.getAddress();
64
64
  });
65
65
  }
66
- request({
67
- method,
68
- params
69
- }) {
70
- return __awaiter(this, void 0, void 0, function* () {
66
+ request(_a) {
67
+ return __awaiter(this, arguments, void 0, function* ({
68
+ method,
69
+ params
70
+ }) {
71
71
  invariant(this.signer, 'Signer is not defined');
72
72
  switch (method) {
73
73
  case 'eth_sendTransaction':
@@ -92,8 +92,8 @@ class LedgerHQSigner extends Signer {
92
92
  });
93
93
  });
94
94
  }
95
- signTransaction(transaction, loadConfig = {}, resolutionConfig = {}) {
96
- return __awaiter(this, void 0, void 0, function* () {
95
+ signTransaction(transaction_1) {
96
+ return __awaiter(this, arguments, void 0, function* (transaction, loadConfig = {}, resolutionConfig = {}) {
97
97
  const unsignedTx = yield convertToUnsigned(transaction);
98
98
  const populatedTx = yield this.populateUnsigned(unsignedTx);
99
99
  const serializedTx = serialize(populatedTx).substring(2);
@@ -1,35 +1,14 @@
1
- import { Address, Chain, Connector } from 'wagmi';
2
- import { IFrameEthereumProvider } from '@ledgerhq/iframe-provider';
3
- import type { IFrameEthereumProviderOptions } from '@ledgerhq/iframe-provider';
4
- export declare class LedgerLiveConnector extends Connector<IFrameEthereumProvider, IFrameEthereumProviderOptions> {
5
- #private;
6
- readonly id = "ledgerLive";
7
- readonly name = "Ledger Live";
8
- readonly ready: boolean;
9
- constructor({ chains, options, }: {
10
- chains?: Chain[];
11
- options?: IFrameEthereumProviderOptions;
12
- });
13
- connect({ chainId }: {
14
- chainId?: number;
15
- }): Promise<{
16
- account: `0x${string}`;
17
- chain: {
18
- id: number;
19
- unsupported: boolean;
20
- };
21
- provider: IFrameEthereumProvider;
22
- }>;
23
- disconnect(): Promise<void>;
24
- getAccount(): Promise<`0x${string}`>;
25
- getChainId(): Promise<number>;
26
- getProvider(): Promise<IFrameEthereumProvider>;
27
- getSigner(): Promise<import("@ethersproject/providers").JsonRpcSigner>;
28
- isAuthorized(): Promise<boolean>;
29
- switchChain(chainId: number): Promise<Chain>;
30
- protected onAccountsChanged(accounts: Address[]): void;
31
- protected onChainChanged(chainId: number | string): void;
32
- protected onDisconnect(): void;
33
- protected isUserRejectedRequestError(error: unknown): boolean;
1
+ import { Chain } from 'wagmi/chains';
2
+ import type { IFrameEthereumProvider, IFrameEthereumProviderOptions } from '@ledgerhq/iframe-provider';
3
+ export declare const idLedgerLive = "ledgerLive";
4
+ export declare const name = "Ledger Live";
5
+ type LedgerLiveConnectorArgs = {
6
+ options?: IFrameEthereumProviderOptions;
7
+ defaultChain: Chain;
8
+ };
9
+ export declare function ledgerLiveConnector({ options, defaultChain, }: LedgerLiveConnectorArgs): import("wagmi").CreateConnectorFn<IFrameEthereumProvider, Record<string, unknown>, Record<string, unknown>>;
10
+ export declare namespace ledgerLiveConnector {
11
+ var type: string;
34
12
  }
13
+ export {};
35
14
  //# sourceMappingURL=connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/iframe/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAO/E,qBAAa,mBAAoB,SAAQ,SAAS,CAChD,sBAAsB,EACtB,6BAA6B,CAC9B;;IACC,QAAQ,CAAC,EAAE,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAS;gBAGpB,EACV,MAAM,EACN,OAAY,GACb,EAAE;QACD,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,EAAE,6BAA6B,CAAC;KACzC;IAMK,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;IA4BzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,UAAU;IAOV,UAAU;IAKhB,WAAW;IAOL,SAAS;IAUT,YAAY;IAWZ,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IA2BlD,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE;IAQ/C,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMjD,SAAS,CAAC,YAAY;IAItB,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO;CAGpD"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/iframe/connector.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAIrC,OAAO,KAAK,EACV,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,YAAY,eAAe,CAAC;AACzC,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAElC,KAAK,uBAAuB,GAAG;IAC7B,OAAO,CAAC,EAAE,6BAA6B,CAAC;IACxC,YAAY,EAAE,KAAK,CAAC;CACrB,CAAC;AAGF,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,YAAY,GACb,EAAE,uBAAuB,+GAkJzB;yBArJe,mBAAmB"}
@@ -1,168 +1,180 @@
1
- import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from '../_virtual/_tslib.js';
2
- import { Connector, UserRejectedRequestError, ResourceUnavailableError, SwitchChainError } from 'wagmi';
3
- import { normalizeChainId } from '@wagmi/core';
4
- import { IFrameEthereumProvider } from '@ledgerhq/iframe-provider';
1
+ import { __awaiter } from '../_virtual/_tslib.js';
2
+ import { createConnector, SwitchChainNotSupportedError } from 'wagmi';
3
+ import { UserRejectedRequestError, ResourceUnavailableRpcError } from 'viem';
5
4
  import { getAddress } from '@ethersproject/address';
6
5
  import { hexValue } from '@ethersproject/bytes';
7
6
  import { Web3Provider } from '@ethersproject/providers';
8
7
 
9
- var _LedgerLiveConnector_provider;
10
- /* eslint-disable @typescript-eslint/unbound-method */
11
- class LedgerLiveConnector extends Connector {
12
- constructor({
8
+ const idLedgerLive = 'ledgerLive';
9
+ const name = 'Ledger Live';
10
+ ledgerLiveConnector.type = 'ledgerLive';
11
+ function ledgerLiveConnector({
12
+ options,
13
+ defaultChain
14
+ }) {
15
+ const providers = {};
16
+ return createConnector(({
13
17
  chains,
14
- options = {}
15
- }) {
16
- super({
17
- chains,
18
- options
19
- });
20
- this.id = 'ledgerLive';
21
- this.name = 'Ledger Live';
22
- this.ready = false;
23
- _LedgerLiveConnector_provider.set(this, void 0);
24
- this.onAccountsChanged = this.onAccountsChanged.bind(this);
25
- this.onChainChanged = this.onChainChanged.bind(this);
26
- }
27
- connect({
28
- chainId
29
- }) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- try {
32
- const provider = yield this.getProvider();
33
- provider.on('accountsChanged', this.onAccountsChanged);
34
- provider.on('chainChanged', this.onChainChanged);
35
- this.emit('message', {
36
- type: 'connecting'
37
- });
38
- const account = yield this.getAccount();
39
- let currentChainId = yield this.getChainId();
40
- let unsupported = this.isChainUnsupported(currentChainId);
41
- if (chainId && currentChainId !== chainId) {
42
- const chain = yield this.switchChain(chainId);
43
- currentChainId = chain.id;
44
- unsupported = this.isChainUnsupported(currentChainId);
18
+ emitter
19
+ }) => ({
20
+ id: idLedgerLive,
21
+ name,
22
+ type: ledgerLiveConnector.type,
23
+ getProvider() {
24
+ return __awaiter(this, arguments, void 0, function* ({
25
+ chainId
26
+ } = {}) {
27
+ var _a;
28
+ const chain = (_a = chains.find(x => x.id === chainId)) !== null && _a !== void 0 ? _a : defaultChain;
29
+ if (!providers[chain.id]) {
30
+ const {
31
+ IFrameEthereumProvider
32
+ } = yield import('@ledgerhq/iframe-provider');
33
+ providers[chain.id] = new IFrameEthereumProvider(options);
45
34
  }
46
- return {
47
- account,
48
- chain: {
49
- id: currentChainId,
50
- unsupported
51
- },
52
- provider
53
- };
54
- } catch (error) {
55
- if (this.isUserRejectedRequestError(error)) throw new UserRejectedRequestError(error);
56
- if (error.code === -32002) throw new ResourceUnavailableError(error);
57
- throw error;
58
- }
59
- });
60
- }
61
- disconnect() {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- const provider = yield this.getProvider();
64
- provider.removeListener('accountsChanged', this.onAccountsChanged);
65
- provider.removeListener('chainChanged', this.onChainChanged);
66
- });
67
- }
68
- getAccount() {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const provider = yield this.getProvider();
71
- const accounts = yield provider.send('eth_requestAccounts');
72
- // return checksum address
73
- return getAddress(accounts[0]);
74
- });
75
- }
76
- getChainId() {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- const provider = yield this.getProvider();
79
- return provider.send('eth_chainId').then(normalizeChainId);
80
- });
81
- }
82
- getProvider() {
83
- if (!__classPrivateFieldGet(this, _LedgerLiveConnector_provider, "f")) {
84
- __classPrivateFieldSet(this, _LedgerLiveConnector_provider, new IFrameEthereumProvider(this.options), "f");
85
- }
86
- return Promise.resolve(__classPrivateFieldGet(this, _LedgerLiveConnector_provider, "f"));
87
- }
88
- getSigner() {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- const [provider, account] = yield Promise.all([this.getProvider(), this.getAccount()]);
91
- return new Web3Provider(provider).getSigner(account);
92
- });
93
- }
94
- isAuthorized() {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- try {
35
+ return providers[chain.id];
36
+ });
37
+ },
38
+ connect() {
39
+ return __awaiter(this, arguments, void 0, function* ({
40
+ chainId
41
+ } = {}) {
42
+ try {
43
+ const provider = yield this.getProvider();
44
+ provider.on('accountsChanged', this.onAccountsChanged);
45
+ provider.on('chainChanged', this.onChainChanged);
46
+ emitter.emit('message', {
47
+ type: 'connecting'
48
+ });
49
+ const accounts = yield this.getAccounts();
50
+ let currentChainId = yield this.getChainId();
51
+ if (chainId && currentChainId !== chainId && this.switchChain) {
52
+ const chain = yield this.switchChain({
53
+ chainId
54
+ });
55
+ currentChainId = chain.id;
56
+ }
57
+ return {
58
+ accounts,
59
+ chainId: currentChainId
60
+ };
61
+ } catch (error) {
62
+ if (error instanceof Error) {
63
+ if (error.code === 4001) {
64
+ throw new UserRejectedRequestError(error);
65
+ }
66
+ throw new ResourceUnavailableRpcError(error);
67
+ }
68
+ throw error;
69
+ }
70
+ });
71
+ },
72
+ switchChain(_a) {
73
+ return __awaiter(this, arguments, void 0, function* ({
74
+ chainId
75
+ }) {
76
+ var _b;
97
77
  const provider = yield this.getProvider();
98
- const accounts = yield provider.send('eth_accounts');
99
- const account = accounts[0];
100
- return !!account;
101
- } catch (_a) {
102
- return false;
103
- }
104
- });
105
- }
106
- switchChain(chainId) {
107
- var _a;
108
- return __awaiter(this, void 0, void 0, function* () {
109
- const provider = yield this.getProvider();
110
- const id = hexValue(chainId);
111
- try {
112
- yield provider.send('wallet_switchEthereumChain', [{
113
- chainId: id
114
- }]);
115
- return (_a = this.chains.find(x => x.id === chainId)) !== null && _a !== void 0 ? _a : {
116
- id: chainId,
117
- name: `Chain ${id}`,
118
- network: `${id}`,
119
- nativeCurrency: {
120
- decimals: 18,
121
- name: 'Ether',
122
- symbol: 'ETH'
123
- },
124
- rpcUrls: {
125
- default: {
126
- http: ['']
78
+ const id = hexValue(chainId);
79
+ try {
80
+ yield provider.send('wallet_switchEthereumChain', [{
81
+ chainId: id
82
+ }]);
83
+ return (_b = chains.find(x => x.id === chainId)) !== null && _b !== void 0 ? _b : {
84
+ id: chainId,
85
+ name: `Chain ${id}`,
86
+ network: `${id}`,
87
+ nativeCurrency: {
88
+ decimals: 18,
89
+ name: 'Ether',
90
+ symbol: 'ETH'
127
91
  },
128
- public: {
129
- http: ['']
92
+ rpcUrls: {
93
+ default: {
94
+ http: ['']
95
+ },
96
+ public: {
97
+ http: ['']
98
+ }
130
99
  }
100
+ };
101
+ } catch (error) {
102
+ const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
103
+ if (/user rejected request/i.test(message)) {
104
+ throw new UserRejectedRequestError(error);
131
105
  }
132
- };
133
- } catch (error) {
134
- const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
135
- if (/user rejected request/i.test(message)) throw new UserRejectedRequestError(error);
136
- throw new SwitchChainError(error);
106
+ throw new SwitchChainNotSupportedError({
107
+ connector: {
108
+ name
109
+ } // only name is needed to generate an error message
110
+ });
111
+ }
112
+ });
113
+ },
114
+ getAccounts() {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const provider = yield this.getProvider();
117
+ const accounts = yield provider.send('eth_requestAccounts');
118
+ // return checksum address
119
+ return accounts.map(getAddress);
120
+ });
121
+ },
122
+ getChainId() {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const provider = yield this.getProvider();
125
+ const chainId = yield provider.send('eth_chainId');
126
+ return Number(chainId);
127
+ });
128
+ },
129
+ getSigner() {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const [provider, accounts] = yield Promise.all([this.getProvider(), this.getAccounts()]);
132
+ return new Web3Provider(provider).getSigner(accounts[0]);
133
+ });
134
+ },
135
+ isAuthorized() {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ try {
138
+ const provider = yield this.getProvider();
139
+ const accounts = yield provider.send('eth_accounts');
140
+ const account = accounts[0];
141
+ return !!account;
142
+ } catch (_a) {
143
+ return false;
144
+ }
145
+ });
146
+ },
147
+ AccountsChanged(accounts) {
148
+ if (accounts.length === 0 || !accounts[0]) {
149
+ emitter.emit('disconnect');
150
+ } else {
151
+ emitter.emit('change', {
152
+ accounts
153
+ });
137
154
  }
138
- });
139
- }
140
- onAccountsChanged(accounts) {
141
- if (accounts.length === 0 || !accounts[0]) {
142
- this.emit('disconnect');
143
- } else {
144
- this.emit('change', {
145
- account: getAddress(accounts[0])
155
+ },
156
+ ChainChanged(chainId) {
157
+ emitter.emit('change', {
158
+ chainId: Number(chainId)
146
159
  });
160
+ },
161
+ disconnect() {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ const provider = yield this.getProvider();
164
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
165
+ provider.removeListener('chainChanged', this.onChainChanged);
166
+ });
167
+ },
168
+ onDisconnect() {
169
+ emitter.emit('disconnect');
170
+ },
171
+ onAccountsChanged() {
172
+ // NOOP
173
+ },
174
+ onChainChanged() {
175
+ // NOOP
147
176
  }
148
- }
149
- onChainChanged(chainId) {
150
- const id = normalizeChainId(chainId);
151
- const unsupported = this.isChainUnsupported(id);
152
- this.emit('change', {
153
- chain: {
154
- id,
155
- unsupported
156
- }
157
- });
158
- }
159
- onDisconnect() {
160
- this.emit('disconnect');
161
- }
162
- isUserRejectedRequestError(error) {
163
- return error.code === 4001;
164
- }
177
+ }));
165
178
  }
166
- _LedgerLiveConnector_provider = new WeakMap();
167
179
 
168
- export { LedgerLiveConnector };
180
+ export { idLedgerLive, ledgerLiveConnector, name };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { LedgerLiveConnector } from './iframe/connector.js';
1
+ export { idLedgerLive, ledgerLiveConnector, name } from './iframe/connector.js';
2
2
  export { isIframe, isLedgerLive } from './iframe/helpers.js';
3
- export { LedgerHIDConnector } from './hid/connector.js';
3
+ export { idLedgerHid, ledgerHIDConnector } from './hid/connector.js';
4
4
  export { LS_KEY_DERIVATION_PATH } from './hid/signer.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reef-knot/ledger-connector",
3
- "version": "3.0.0",
3
+ "version": "4.0.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -33,7 +33,8 @@
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/w3c-web-hid": "^1.0.2",
36
- "wagmi": "^0.12.19",
36
+ "viem": "2.13.3",
37
+ "wagmi": "2.11.2",
37
38
  "eslint-config-custom": "*"
38
39
  },
39
40
  "dependencies": {
@@ -55,6 +56,8 @@
55
56
  "tiny-invariant": "^1.2.0"
56
57
  },
57
58
  "peerDependencies": {
58
- "wagmi": "^0.12.19"
59
+ "viem": "2.13.3",
60
+ "wagmi": "2.11.2",
61
+ "@tanstack/react-query": "^5.29.0"
59
62
  }
60
63
  }