@metamask/eth-ledger-bridge-keyring 5.0.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/{index.js → index.cjs} +6 -6
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +8 -0
  5. package/dist/index.d.cts.map +1 -0
  6. package/dist/index.d.mts +8 -0
  7. package/dist/index.d.mts.map +1 -0
  8. package/dist/index.mjs +6 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/{ledger-bridge.js → ledger-bridge.cjs} +1 -1
  11. package/dist/ledger-bridge.cjs.map +1 -0
  12. package/dist/{ledger-bridge.d.ts → ledger-bridge.d.cts} +3 -2
  13. package/dist/ledger-bridge.d.cts.map +1 -0
  14. package/dist/ledger-bridge.d.mts +45 -0
  15. package/dist/ledger-bridge.d.mts.map +1 -0
  16. package/dist/ledger-bridge.mjs +2 -0
  17. package/dist/ledger-bridge.mjs.map +1 -0
  18. package/dist/{ledger-hw-app.js → ledger-hw-app.cjs} +2 -1
  19. package/dist/ledger-hw-app.cjs.map +1 -0
  20. package/dist/{ledger-hw-app.d.ts → ledger-hw-app.d.cts} +3 -2
  21. package/dist/ledger-hw-app.d.cts.map +1 -0
  22. package/dist/ledger-hw-app.d.mts +24 -0
  23. package/dist/ledger-hw-app.d.mts.map +1 -0
  24. package/dist/ledger-hw-app.mjs +59 -0
  25. package/dist/ledger-hw-app.mjs.map +1 -0
  26. package/dist/{ledger-iframe-bridge.js → ledger-iframe-bridge.cjs} +2 -1
  27. package/dist/ledger-iframe-bridge.cjs.map +1 -0
  28. package/dist/{ledger-iframe-bridge.d.ts → ledger-iframe-bridge.d.cts} +2 -2
  29. package/dist/ledger-iframe-bridge.d.cts.map +1 -0
  30. package/dist/ledger-iframe-bridge.d.mts +83 -0
  31. package/dist/ledger-iframe-bridge.d.mts.map +1 -0
  32. package/dist/ledger-iframe-bridge.mjs +172 -0
  33. package/dist/ledger-iframe-bridge.mjs.map +1 -0
  34. package/dist/{ledger-keyring.js → ledger-keyring.cjs} +4 -1
  35. package/dist/ledger-keyring.cjs.map +1 -0
  36. package/dist/{ledger-keyring.d.ts → ledger-keyring.d.cts} +7 -7
  37. package/dist/ledger-keyring.d.cts.map +1 -0
  38. package/dist/ledger-keyring.d.mts +82 -0
  39. package/dist/ledger-keyring.d.mts.map +1 -0
  40. package/dist/ledger-keyring.mjs +509 -0
  41. package/dist/ledger-keyring.mjs.map +1 -0
  42. package/dist/{ledger-mobile-bridge.js → ledger-mobile-bridge.cjs} +6 -2
  43. package/dist/ledger-mobile-bridge.cjs.map +1 -0
  44. package/dist/{ledger-mobile-bridge.d.ts → ledger-mobile-bridge.d.cts} +5 -4
  45. package/dist/ledger-mobile-bridge.d.cts.map +1 -0
  46. package/dist/ledger-mobile-bridge.d.mts +109 -0
  47. package/dist/ledger-mobile-bridge.d.mts.map +1 -0
  48. package/dist/ledger-mobile-bridge.mjs +179 -0
  49. package/dist/ledger-mobile-bridge.mjs.map +1 -0
  50. package/dist/{ledger-transport-middleware.js → ledger-transport-middleware.cjs} +2 -2
  51. package/dist/ledger-transport-middleware.cjs.map +1 -0
  52. package/dist/{ledger-transport-middleware.d.ts → ledger-transport-middleware.d.cts} +3 -2
  53. package/dist/ledger-transport-middleware.d.cts.map +1 -0
  54. package/dist/ledger-transport-middleware.d.mts +40 -0
  55. package/dist/ledger-transport-middleware.d.mts.map +1 -0
  56. package/dist/ledger-transport-middleware.mjs +60 -0
  57. package/dist/ledger-transport-middleware.mjs.map +1 -0
  58. package/dist/{type.js → type.cjs} +1 -1
  59. package/dist/type.cjs.map +1 -0
  60. package/dist/{type.d.ts → type.d.cts} +1 -0
  61. package/dist/type.d.cts.map +1 -0
  62. package/dist/type.d.mts +6 -0
  63. package/dist/type.d.mts.map +1 -0
  64. package/dist/type.mjs +2 -0
  65. package/dist/type.mjs.map +1 -0
  66. package/package.json +20 -10
  67. package/dist/index.d.ts +0 -7
  68. package/dist/index.js.map +0 -1
  69. package/dist/ledger-bridge.js.map +0 -1
  70. package/dist/ledger-hw-app.js.map +0 -1
  71. package/dist/ledger-iframe-bridge.js.map +0 -1
  72. package/dist/ledger-keyring.js.map +0 -1
  73. package/dist/ledger-mobile-bridge.js.map +0 -1
  74. package/dist/ledger-transport-middleware.js.map +0 -1
  75. package/dist/type.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [7.0.0]
11
+
12
+ ### Added
13
+
14
+ - **BREAKING:** Add ESM build ([#40](https://github.com/MetaMask/accounts/pull/40))
15
+ - It's no longer possible to import files from `./dist` directly.
16
+
17
+ ## [6.0.0]
18
+
19
+ ### Changed
20
+
21
+ - **BREAKING**: Bump `@metamask/eth-sig-util` dependency from `^7.0.3` to `^8.0.0` ([#79](https://github.com/MetaMask/accounts/pull/79))
22
+ - `signTypedData` no longer support `number` for addresses, see [here](https://github.com/MetaMask/eth-sig-util/blob/main/CHANGELOG.md#800).
23
+
24
+ ### Fixed
25
+
26
+ - Device ID will now be cleared up when forgetting a device ([#86](https://github.com/MetaMask/accounts/pull/86))
27
+
10
28
  ## [5.0.1]
11
29
 
12
30
  ### Changed
@@ -198,7 +216,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
198
216
 
199
217
  - Support new versions of ethereumjs/tx ([#68](https://github.com/MetaMask/eth-ledger-bridge-keyring/pull/68))
200
218
 
201
- [Unreleased]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@5.0.1...HEAD
219
+ [Unreleased]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@7.0.0...HEAD
220
+ [7.0.0]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@6.0.0...@metamask/eth-ledger-bridge-keyring@7.0.0
221
+ [6.0.0]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@5.0.1...@metamask/eth-ledger-bridge-keyring@6.0.0
202
222
  [5.0.1]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@5.0.0...@metamask/eth-ledger-bridge-keyring@5.0.1
203
223
  [5.0.0]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@4.1.4...@metamask/eth-ledger-bridge-keyring@5.0.0
204
224
  [4.1.4]: https://github.com/MetaMask/accounts/compare/@metamask/eth-ledger-bridge-keyring@4.1.3...@metamask/eth-ledger-bridge-keyring@4.1.4
@@ -14,9 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ledger-keyring"), exports);
18
- __exportStar(require("./ledger-iframe-bridge"), exports);
19
- __exportStar(require("./ledger-mobile-bridge"), exports);
20
- __exportStar(require("./ledger-transport-middleware"), exports);
21
- __exportStar(require("./ledger-hw-app"), exports);
22
- //# sourceMappingURL=index.js.map
17
+ __exportStar(require("./ledger-keyring.cjs"), exports);
18
+ __exportStar(require("./ledger-iframe-bridge.cjs"), exports);
19
+ __exportStar(require("./ledger-mobile-bridge.cjs"), exports);
20
+ __exportStar(require("./ledger-transport-middleware.cjs"), exports);
21
+ __exportStar(require("./ledger-hw-app.cjs"), exports);
22
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,6DAAuC;AACvC,6DAAuC;AAEvC,oEAA8C;AAE9C,sDAAgC","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\n"]}
@@ -0,0 +1,8 @@
1
+ export * from "./ledger-keyring.cjs";
2
+ export * from "./ledger-iframe-bridge.cjs";
3
+ export * from "./ledger-mobile-bridge.cjs";
4
+ export type * from "./ledger-bridge.cjs";
5
+ export * from "./ledger-transport-middleware.cjs";
6
+ export type * from "./type.cjs";
7
+ export * from "./ledger-hw-app.cjs";
8
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC"}
@@ -0,0 +1,8 @@
1
+ export * from "./ledger-keyring.mjs";
2
+ export * from "./ledger-iframe-bridge.mjs";
3
+ export * from "./ledger-mobile-bridge.mjs";
4
+ export type * from "./ledger-bridge.mjs";
5
+ export * from "./ledger-transport-middleware.mjs";
6
+ export type * from "./type.mjs";
7
+ export * from "./ledger-hw-app.mjs";
8
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./ledger-keyring.mjs";
2
+ export * from "./ledger-iframe-bridge.mjs";
3
+ export * from "./ledger-mobile-bridge.mjs";
4
+ export * from "./ledger-transport-middleware.mjs";
5
+ export * from "./ledger-hw-app.mjs";
6
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AAEvC,kDAA8C;AAE9C,oCAAgC","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\n"]}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ledger-bridge.js.map
3
+ //# sourceMappingURL=ledger-bridge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-bridge.cjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n domainSeparatorHex: string;\n hashStructMessageHex: string;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n};\n"]}
@@ -1,5 +1,5 @@
1
- import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';
2
- import type Transport from '@ledgerhq/hw-transport';
1
+ import type LedgerHwAppEth from "@ledgerhq/hw-app-eth";
2
+ import type Transport from "@ledgerhq/hw-transport";
3
3
  export type GetPublicKeyParams = {
4
4
  hdPath: string;
5
5
  };
@@ -42,3 +42,4 @@ export type LedgerBridge<T extends LedgerBridgeOptions> = {
42
42
  deviceSignMessage(params: LedgerSignMessageParams): Promise<LedgerSignMessageResponse>;
43
43
  deviceSignTypedData(params: LedgerSignTypedDataParams): Promise<LedgerSignTypedDataResponse>;
44
44
  };
45
+ //# sourceMappingURL=ledger-bridge.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-bridge.d.cts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,6BAA6B;AACvD,OAAO,KAAK,SAAS,+BAA+B;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CACzC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,6BAA6B,GAAG,OAAO,CACjD,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAC9C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAC7C,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,mBAAmB,IAAI;IACxD,iBAAiB,EAAE,OAAO,CAAC;IAE3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAExE,qBAAqB,CACnB,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,iBAAiB,CACf,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEtC,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACzC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type LedgerHwAppEth from "@ledgerhq/hw-app-eth";
2
+ import type Transport from "@ledgerhq/hw-transport";
3
+ export type GetPublicKeyParams = {
4
+ hdPath: string;
5
+ };
6
+ export type GetPublicKeyResponse = Awaited<ReturnType<LedgerHwAppEth['getAddress']>>;
7
+ export type LedgerSignTransactionParams = {
8
+ hdPath: string;
9
+ tx: string;
10
+ };
11
+ export type LedgerSignTransactionResponse = Awaited<ReturnType<LedgerHwAppEth['signTransaction']>>;
12
+ export type LedgerSignMessageParams = {
13
+ hdPath: string;
14
+ message: string;
15
+ };
16
+ export type LedgerSignMessageResponse = Awaited<ReturnType<LedgerHwAppEth['signPersonalMessage']>>;
17
+ export type LedgerSignTypedDataParams = {
18
+ hdPath: string;
19
+ domainSeparatorHex: string;
20
+ hashStructMessageHex: string;
21
+ };
22
+ export type LedgerSignTypedDataResponse = Awaited<ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>>;
23
+ export type LedgerBridgeOptions = Record<string, unknown>;
24
+ export type LedgerBridge<T extends LedgerBridgeOptions> = {
25
+ isDeviceConnected: boolean;
26
+ init(): Promise<void>;
27
+ destroy(): Promise<void>;
28
+ /**
29
+ * Method to get the current configuration of the ledger bridge keyring.
30
+ */
31
+ getOptions(): Promise<T>;
32
+ /**
33
+ * Method to set the current configuration of the ledger bridge keyring.
34
+ *
35
+ * @param opts - An object contains configuration of the bridge.
36
+ */
37
+ setOptions(opts: T): Promise<void>;
38
+ attemptMakeApp(): Promise<boolean>;
39
+ updateTransportMethod(transportType: string | Transport): Promise<boolean>;
40
+ getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;
41
+ deviceSignTransaction(params: LedgerSignTransactionParams): Promise<LedgerSignTransactionResponse>;
42
+ deviceSignMessage(params: LedgerSignMessageParams): Promise<LedgerSignMessageResponse>;
43
+ deviceSignTypedData(params: LedgerSignTypedDataParams): Promise<LedgerSignTypedDataResponse>;
44
+ };
45
+ //# sourceMappingURL=ledger-bridge.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-bridge.d.mts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,6BAA6B;AACvD,OAAO,KAAK,SAAS,+BAA+B;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CACzC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,6BAA6B,GAAG,OAAO,CACjD,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAC9C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAC7C,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,mBAAmB,IAAI;IACxD,iBAAiB,EAAE,OAAO,CAAC;IAE3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAExE,qBAAqB,CACnB,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,iBAAiB,CACf,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEtC,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-bridge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-bridge.mjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n domainSeparatorHex: string;\n hashStructMessageHex: string;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n};\n"]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MetaMaskLedgerHwAppEth = void 0;
7
7
  const hw_app_eth_1 = __importDefault(require("@ledgerhq/hw-app-eth"));
8
8
  const buffer_1 = require("buffer");
9
+ const type_1 = require("./type.cjs");
9
10
  class MetaMaskLedgerHwAppEth extends hw_app_eth_1.default {
10
11
  constructor() {
11
12
  super(...arguments);
@@ -55,4 +56,4 @@ class MetaMaskLedgerHwAppEth extends hw_app_eth_1.default {
55
56
  }
56
57
  }
57
58
  exports.MetaMaskLedgerHwAppEth = MetaMaskLedgerHwAppEth;
58
- //# sourceMappingURL=ledger-hw-app.js.map
59
+ //# sourceMappingURL=ledger-hw-app.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-hw-app.cjs","sourceRoot":"","sources":["../src/ledger-hw-app.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAkD;AAClD,mCAAgC;AAEhC,qCAAsD;AAEtD,MAAa,sBACX,SAAQ,oBAAc;IADxB;;QAIW,gBAAW,GAAG,OAAO,CAAC;QAEtB,eAAU,GAAG,UAAU,CAAC;QAExB,sBAAiB,GAAG,OAAO,CAAC;IAuDvC,CAAC;IArDC;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,IAAI,CAAC,CAAC;QAEP,MAAM,OAAO,GAAG,QAAQ;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;aAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,IAAI,CAAC,CAAC;QAEP,MAAM,OAAO,GAAG,QAAQ;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;aAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpC,OAAO;YACL,OAAO;YACP,OAAO;SACR,CAAC;IACJ,CAAC;CACF;AA/DD,wDA+DC","sourcesContent":["import LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport { Buffer } from 'buffer';\n\nimport { GetAppNameAndVersionResponse } from './type';\n\nexport class MetaMaskLedgerHwAppEth\n extends LedgerHwAppEth\n implements MetaMaskLedgerHwAppEth\n{\n readonly mainAppName = 'BOLOS';\n\n readonly ethAppName = 'Ethereum';\n\n readonly transportEncoding = 'ascii';\n\n /**\n * Method to open ethereum application on ledger device.\n *\n */\n async openEthApp(): Promise<void> {\n await this.transport.send(\n 0xe0,\n 0xd8,\n 0x00,\n 0x00,\n Buffer.from(this.ethAppName, this.transportEncoding),\n );\n }\n\n /**\n * Method to close all running application on ledger device.\n *\n */\n async closeApps(): Promise<void> {\n await this.transport.send(0xb0, 0xa7, 0x00, 0x00);\n }\n\n /**\n * Method to retrieve the name and version of the running application in ledger device.\n *\n * @returns An object contains appName and version.\n */\n async getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse> {\n const response = await this.transport.send(0xb0, 0x01, 0x00, 0x00);\n if (response[0] !== 1) {\n throw new Error('Incorrect format return from getAppNameAndVersion.');\n }\n\n let i = 1;\n const nameLength = response[i] ?? 0;\n i += 1;\n\n const appName = response\n .slice(i, (i += nameLength))\n .toString(this.transportEncoding);\n\n const versionLength = response[i] ?? 0;\n i += 1;\n\n const version = response\n .slice(i, (i += versionLength))\n .toString(this.transportEncoding);\n\n return {\n appName,\n version,\n };\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import LedgerHwAppEth from '@ledgerhq/hw-app-eth';
2
- import { GetAppNameAndVersionResponse } from './type';
1
+ import LedgerHwAppEth from "@ledgerhq/hw-app-eth";
2
+ import { GetAppNameAndVersionResponse } from "./type.cjs";
3
3
  export declare class MetaMaskLedgerHwAppEth extends LedgerHwAppEth implements MetaMaskLedgerHwAppEth {
4
4
  readonly mainAppName = "BOLOS";
5
5
  readonly ethAppName = "Ethereum";
@@ -21,3 +21,4 @@ export declare class MetaMaskLedgerHwAppEth extends LedgerHwAppEth implements Me
21
21
  */
22
22
  getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;
23
23
  }
24
+ //# sourceMappingURL=ledger-hw-app.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-hw-app.d.cts","sourceRoot":"","sources":["../src/ledger-hw-app.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,6BAA6B;AAGlD,OAAO,EAAE,4BAA4B,EAAE,mBAAe;AAEtD,qBAAa,sBACX,SAAQ,cACR,YAAW,sBAAsB;IAEjC,QAAQ,CAAC,WAAW,WAAW;IAE/B,QAAQ,CAAC,UAAU,cAAc;IAEjC,QAAQ,CAAC,iBAAiB,WAAW;IAErC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,4BAA4B,CAAC;CA0BpE"}
@@ -0,0 +1,24 @@
1
+ import LedgerHwAppEth from "@ledgerhq/hw-app-eth";
2
+ import { GetAppNameAndVersionResponse } from "./type.mjs";
3
+ export declare class MetaMaskLedgerHwAppEth extends LedgerHwAppEth implements MetaMaskLedgerHwAppEth {
4
+ readonly mainAppName = "BOLOS";
5
+ readonly ethAppName = "Ethereum";
6
+ readonly transportEncoding = "ascii";
7
+ /**
8
+ * Method to open ethereum application on ledger device.
9
+ *
10
+ */
11
+ openEthApp(): Promise<void>;
12
+ /**
13
+ * Method to close all running application on ledger device.
14
+ *
15
+ */
16
+ closeApps(): Promise<void>;
17
+ /**
18
+ * Method to retrieve the name and version of the running application in ledger device.
19
+ *
20
+ * @returns An object contains appName and version.
21
+ */
22
+ getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;
23
+ }
24
+ //# sourceMappingURL=ledger-hw-app.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-hw-app.d.mts","sourceRoot":"","sources":["../src/ledger-hw-app.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,6BAA6B;AAGlD,OAAO,EAAE,4BAA4B,EAAE,mBAAe;AAEtD,qBAAa,sBACX,SAAQ,cACR,YAAW,sBAAsB;IAEjC,QAAQ,CAAC,WAAW,WAAW;IAE/B,QAAQ,CAAC,UAAU,cAAc;IAEjC,QAAQ,CAAC,iBAAiB,WAAW;IAErC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,4BAA4B,CAAC;CA0BpE"}
@@ -0,0 +1,59 @@
1
+ function $importDefault(module) {
2
+ if (module?.__esModule) {
3
+ return module.default;
4
+ }
5
+ return module;
6
+ }
7
+ import $LedgerHwAppEth from "@ledgerhq/hw-app-eth";
8
+ const LedgerHwAppEth = $importDefault($LedgerHwAppEth);
9
+ import { Buffer } from "buffer";
10
+ import { GetAppNameAndVersionResponse } from "./type.mjs";
11
+ export class MetaMaskLedgerHwAppEth extends LedgerHwAppEth {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.mainAppName = 'BOLOS';
15
+ this.ethAppName = 'Ethereum';
16
+ this.transportEncoding = 'ascii';
17
+ }
18
+ /**
19
+ * Method to open ethereum application on ledger device.
20
+ *
21
+ */
22
+ async openEthApp() {
23
+ await this.transport.send(0xe0, 0xd8, 0x00, 0x00, Buffer.from(this.ethAppName, this.transportEncoding));
24
+ }
25
+ /**
26
+ * Method to close all running application on ledger device.
27
+ *
28
+ */
29
+ async closeApps() {
30
+ await this.transport.send(0xb0, 0xa7, 0x00, 0x00);
31
+ }
32
+ /**
33
+ * Method to retrieve the name and version of the running application in ledger device.
34
+ *
35
+ * @returns An object contains appName and version.
36
+ */
37
+ async getAppNameAndVersion() {
38
+ const response = await this.transport.send(0xb0, 0x01, 0x00, 0x00);
39
+ if (response[0] !== 1) {
40
+ throw new Error('Incorrect format return from getAppNameAndVersion.');
41
+ }
42
+ let i = 1;
43
+ const nameLength = response[i] ?? 0;
44
+ i += 1;
45
+ const appName = response
46
+ .slice(i, (i += nameLength))
47
+ .toString(this.transportEncoding);
48
+ const versionLength = response[i] ?? 0;
49
+ i += 1;
50
+ const version = response
51
+ .slice(i, (i += versionLength))
52
+ .toString(this.transportEncoding);
53
+ return {
54
+ appName,
55
+ version,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=ledger-hw-app.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-hw-app.mjs","sourceRoot":"","sources":["../src/ledger-hw-app.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,eAAc,6BAA6B;;AAClD,OAAO,EAAE,MAAM,EAAE,eAAe;AAEhC,OAAO,EAAE,4BAA4B,EAAE,mBAAe;AAEtD,MAAM,OAAO,sBACX,SAAQ,cAAc;IADxB;;QAIW,gBAAW,GAAG,OAAO,CAAC;QAEtB,eAAU,GAAG,UAAU,CAAC;QAExB,sBAAiB,GAAG,OAAO,CAAC;IAuDvC,CAAC;IArDC;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,IAAI,CAAC,CAAC;QAEP,MAAM,OAAO,GAAG,QAAQ;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;aAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,IAAI,CAAC,CAAC;QAEP,MAAM,OAAO,GAAG,QAAQ;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;aAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpC,OAAO;YACL,OAAO;YACP,OAAO;SACR,CAAC;IACJ,CAAC;CACF","sourcesContent":["import LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport { Buffer } from 'buffer';\n\nimport { GetAppNameAndVersionResponse } from './type';\n\nexport class MetaMaskLedgerHwAppEth\n extends LedgerHwAppEth\n implements MetaMaskLedgerHwAppEth\n{\n readonly mainAppName = 'BOLOS';\n\n readonly ethAppName = 'Ethereum';\n\n readonly transportEncoding = 'ascii';\n\n /**\n * Method to open ethereum application on ledger device.\n *\n */\n async openEthApp(): Promise<void> {\n await this.transport.send(\n 0xe0,\n 0xd8,\n 0x00,\n 0x00,\n Buffer.from(this.ethAppName, this.transportEncoding),\n );\n }\n\n /**\n * Method to close all running application on ledger device.\n *\n */\n async closeApps(): Promise<void> {\n await this.transport.send(0xb0, 0xa7, 0x00, 0x00);\n }\n\n /**\n * Method to retrieve the name and version of the running application in ledger device.\n *\n * @returns An object contains appName and version.\n */\n async getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse> {\n const response = await this.transport.send(0xb0, 0x01, 0x00, 0x00);\n if (response[0] !== 1) {\n throw new Error('Incorrect format return from getAppNameAndVersion.');\n }\n\n let i = 1;\n const nameLength = response[i] ?? 0;\n i += 1;\n\n const appName = response\n .slice(i, (i += nameLength))\n .toString(this.transportEncoding);\n\n const versionLength = response[i] ?? 0;\n i += 1;\n\n const version = response\n .slice(i, (i += versionLength))\n .toString(this.transportEncoding);\n\n return {\n appName,\n version,\n };\n }\n}\n"]}
@@ -13,6 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var _LedgerIframeBridge_instances, _LedgerIframeBridge_opts, _LedgerIframeBridge_deviceActionMessage, _LedgerIframeBridge_setupIframe, _LedgerIframeBridge_getOrigin, _LedgerIframeBridge_eventListener, _LedgerIframeBridge_sendMessage, _LedgerIframeBridge_validateConfiguration;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.LedgerIframeBridge = exports.IFrameMessageAction = void 0;
16
+ const ledger_bridge_1 = require("./ledger-bridge.cjs");
16
17
  const LEDGER_IFRAME_ID = 'LEDGER-IFRAME';
17
18
  var IFrameMessageAction;
18
19
  (function (IFrameMessageAction) {
@@ -172,4 +173,4 @@ _LedgerIframeBridge_opts = new WeakMap(), _LedgerIframeBridge_instances = new We
172
173
  throw new Error('bridgeURL is not a valid URL');
173
174
  }
174
175
  };
175
- //# sourceMappingURL=ledger-iframe-bridge.js.map
176
+ //# sourceMappingURL=ledger-iframe-bridge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-iframe-bridge.cjs","sourceRoot":"","sources":["../src/ledger-iframe-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n GetPublicKeyParams,\n GetPublicKeyResponse,\n LedgerBridge,\n LedgerSignMessageParams,\n LedgerSignMessageResponse,\n LedgerSignTransactionParams,\n LedgerSignTransactionResponse,\n LedgerSignTypedDataParams,\n LedgerSignTypedDataResponse,\n} from './ledger-bridge';\n\nconst LEDGER_IFRAME_ID = 'LEDGER-IFRAME';\n\nexport enum IFrameMessageAction {\n LedgerConnectionChange = 'ledger-connection-change',\n LedgerUnlock = 'ledger-unlock',\n LedgerMakeApp = 'ledger-make-app',\n LedgerUpdateTransport = 'ledger-update-transport',\n LedgerSignTransaction = 'ledger-sign-transaction',\n LedgerSignPersonalMessage = 'ledger-sign-personal-message',\n LedgerSignTypedData = 'ledger-sign-typed-data',\n}\n\ntype IFrameMessageResponseStub<\n SuccessResult extends Record<string, unknown>,\n FailureResult = Error,\n> = {\n messageId: number;\n} & (\n | { success: true; payload: SuccessResult }\n | { success: false; payload: { error: FailureResult } }\n);\n\ntype LedgerConnectionChangeActionResponse = {\n messageId: number;\n action: IFrameMessageAction.LedgerConnectionChange;\n payload: { connected: boolean };\n};\n\ntype LedgerMakeAppActionResponse = {\n messageId: number;\n action: IFrameMessageAction.LedgerMakeApp;\n} & ({ success: true } | { success: false; error?: unknown });\n\ntype LedgerUpdateTransportActionResponse = {\n messageId: number;\n action: IFrameMessageAction.LedgerUpdateTransport;\n success: boolean;\n};\n\ntype LedgerUnlockActionResponse = {\n action: IFrameMessageAction.LedgerUnlock;\n} & IFrameMessageResponseStub<GetPublicKeyResponse>;\n\ntype LedgerSignTransactionActionResponse = {\n action: IFrameMessageAction.LedgerSignTransaction;\n} & IFrameMessageResponseStub<LedgerSignTransactionResponse>;\n\ntype LedgerSignPersonalMessageActionResponse = {\n action: IFrameMessageAction.LedgerSignPersonalMessage;\n} & IFrameMessageResponseStub<LedgerSignMessageResponse>;\n\ntype LedgerSignTypedDataActionResponse = {\n action: IFrameMessageAction.LedgerSignTypedData;\n} & IFrameMessageResponseStub<LedgerSignTypedDataResponse>;\n\nexport type IFrameMessageResponse =\n | LedgerConnectionChangeActionResponse\n | LedgerMakeAppActionResponse\n | LedgerUpdateTransportActionResponse\n | LedgerUnlockActionResponse\n | LedgerSignTransactionActionResponse\n | LedgerSignPersonalMessageActionResponse\n | LedgerSignTypedDataActionResponse;\n\ntype IFrameMessage<TAction extends IFrameMessageAction> = {\n action: TAction;\n params?: Readonly<Record<string, unknown>>;\n};\n\ntype IFramePostMessage<TAction extends IFrameMessageAction> =\n IFrameMessage<TAction> & {\n messageId: number;\n target: typeof LEDGER_IFRAME_ID;\n };\n\nexport type LedgerIframeBridgeOptions = {\n bridgeUrl: string;\n};\n\nexport class LedgerIframeBridge\n implements LedgerBridge<LedgerIframeBridgeOptions>\n{\n iframe?: HTMLIFrameElement;\n\n iframeLoaded = false;\n\n readonly #opts: LedgerIframeBridgeOptions;\n\n eventListener?: (eventMessage: {\n origin: string;\n data: IFrameMessageResponse;\n }) => void;\n\n isDeviceConnected = false;\n\n currentMessageId = 0;\n\n messageCallbacks: Record<number, (response: IFrameMessageResponse) => void> =\n {};\n\n constructor(\n opts: LedgerIframeBridgeOptions = {\n bridgeUrl: 'https://metamask.github.io/eth-ledger-bridge-keyring',\n },\n ) {\n this.#validateConfiguration(opts);\n this.#opts = {\n bridgeUrl: opts?.bridgeUrl,\n };\n }\n\n async init(): Promise<void> {\n await this.#setupIframe(this.#opts.bridgeUrl);\n\n this.eventListener = this.#eventListener.bind(this, this.#opts.bridgeUrl);\n\n window.addEventListener('message', this.eventListener);\n }\n\n async destroy(): Promise<void> {\n if (this.eventListener) {\n window.removeEventListener('message', this.eventListener);\n }\n }\n\n async getOptions(): Promise<LedgerIframeBridgeOptions> {\n return this.#opts;\n }\n\n async setOptions(opts: LedgerIframeBridgeOptions): Promise<void> {\n this.#validateConfiguration(opts);\n if (this.#opts?.bridgeUrl !== opts.bridgeUrl) {\n this.#opts.bridgeUrl = opts.bridgeUrl;\n await this.destroy();\n await this.init();\n }\n }\n\n async attemptMakeApp(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n this.#sendMessage(\n {\n action: IFrameMessageAction.LedgerMakeApp,\n },\n (response) => {\n if ('success' in response && response.success) {\n resolve(true);\n } else if ('error' in response) {\n // Assuming this is using an `Error` type:\n reject(response.error as Error);\n } else {\n reject(new Error('Unknown error occurred'));\n }\n },\n );\n });\n }\n\n async updateTransportMethod(transportType: string): Promise<boolean> {\n return new Promise((resolve, reject) => {\n // If the iframe isn't loaded yet, let's store the desired transportType value and\n // optimistically return a successful promise\n if (!this.iframeLoaded) {\n throw new Error('The iframe is not loaded yet');\n }\n\n this.#sendMessage(\n {\n action: IFrameMessageAction.LedgerUpdateTransport,\n params: { transportType },\n },\n (response) => {\n if ('success' in response && response.success) {\n return resolve(true);\n }\n return reject(new Error('Ledger transport could not be updated'));\n },\n );\n });\n }\n\n async getPublicKey(\n params: GetPublicKeyParams,\n ): Promise<GetPublicKeyResponse> {\n return this.#deviceActionMessage(IFrameMessageAction.LedgerUnlock, params);\n }\n\n async deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse> {\n return this.#deviceActionMessage(\n IFrameMessageAction.LedgerSignTransaction,\n params,\n );\n }\n\n async deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse> {\n return this.#deviceActionMessage(\n IFrameMessageAction.LedgerSignPersonalMessage,\n params,\n );\n }\n\n async deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse> {\n return this.#deviceActionMessage(\n IFrameMessageAction.LedgerSignTypedData,\n params,\n );\n }\n\n async #deviceActionMessage(\n action: IFrameMessageAction.LedgerUnlock,\n params: GetPublicKeyParams,\n ): Promise<GetPublicKeyResponse>;\n\n async #deviceActionMessage(\n action: IFrameMessageAction.LedgerSignTransaction,\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n async #deviceActionMessage(\n action: IFrameMessageAction.LedgerSignPersonalMessage,\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n async #deviceActionMessage(\n action: IFrameMessageAction.LedgerSignTypedData,\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n\n async #deviceActionMessage(\n ...[action, params]:\n | [IFrameMessageAction.LedgerUnlock, GetPublicKeyParams]\n | [IFrameMessageAction.LedgerSignTransaction, LedgerSignTransactionParams]\n | [IFrameMessageAction.LedgerSignPersonalMessage, LedgerSignMessageParams]\n | [IFrameMessageAction.LedgerSignTypedData, LedgerSignTypedDataParams]\n ): Promise<\n | GetPublicKeyResponse\n | LedgerSignTransactionResponse\n | LedgerSignMessageResponse\n | LedgerSignTypedDataResponse\n > {\n return new Promise((resolve, reject) => {\n this.#sendMessage(\n {\n action,\n params,\n },\n (response) => {\n if ('payload' in response && response.payload) {\n if ('success' in response && response.success) {\n return resolve(response.payload);\n }\n if ('error' in response.payload) {\n return reject(response.payload.error);\n }\n }\n return reject(new Error('Unknown error occurred'));\n },\n );\n });\n }\n\n async #setupIframe(bridgeUrl: string): Promise<void> {\n return new Promise((resolve) => {\n this.iframe = document.createElement('iframe');\n this.iframe.src = bridgeUrl;\n this.iframe.allow = `hid 'src'`;\n this.iframe.onload = async (): Promise<void> => {\n this.iframeLoaded = true;\n resolve();\n };\n document.head.appendChild(this.iframe);\n });\n }\n\n #getOrigin(bridgeUrl: string): string {\n const tmp = bridgeUrl.split('/');\n tmp.splice(-1, 1);\n return tmp.join('/');\n }\n\n #eventListener(\n bridgeUrl: string,\n eventMessage: {\n origin: string;\n data: IFrameMessageResponse;\n },\n ): void {\n if (eventMessage.origin !== this.#getOrigin(bridgeUrl)) {\n return;\n }\n\n if (eventMessage.data) {\n const messageCallback =\n this.messageCallbacks[eventMessage.data.messageId];\n if (messageCallback) {\n messageCallback(eventMessage.data);\n } else if (\n eventMessage.data.action === IFrameMessageAction.LedgerConnectionChange\n ) {\n this.isDeviceConnected = eventMessage.data.payload.connected;\n }\n }\n }\n\n #sendMessage<TAction extends IFrameMessageAction>(\n message: IFrameMessage<TAction>,\n callback: (response: IFrameMessageResponse) => void,\n ): void {\n this.currentMessageId += 1;\n\n const postMsg: IFramePostMessage<TAction> = {\n ...message,\n messageId: this.currentMessageId,\n target: LEDGER_IFRAME_ID,\n };\n\n this.messageCallbacks[this.currentMessageId] = callback;\n\n if (!this.iframeLoaded || !this.iframe?.contentWindow) {\n throw new Error('The iframe is not loaded yet');\n }\n\n this.iframe.contentWindow.postMessage(postMsg, '*');\n }\n\n #validateConfiguration(opts: LedgerIframeBridgeOptions): void {\n if (typeof opts.bridgeUrl !== 'string' || opts.bridgeUrl.length === 0) {\n throw new Error('bridgeURL is not a valid URL');\n }\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- /// <reference types="web" />
2
- import { GetPublicKeyParams, GetPublicKeyResponse, LedgerBridge, LedgerSignMessageParams, LedgerSignMessageResponse, LedgerSignTransactionParams, LedgerSignTransactionResponse, LedgerSignTypedDataParams, LedgerSignTypedDataResponse } from './ledger-bridge';
1
+ import { GetPublicKeyParams, GetPublicKeyResponse, LedgerBridge, LedgerSignMessageParams, LedgerSignMessageResponse, LedgerSignTransactionParams, LedgerSignTransactionResponse, LedgerSignTypedDataParams, LedgerSignTypedDataResponse } from "./ledger-bridge.cjs";
3
2
  export declare enum IFrameMessageAction {
4
3
  LedgerConnectionChange = "ledger-connection-change",
5
4
  LedgerUnlock = "ledger-unlock",
@@ -81,3 +80,4 @@ export declare class LedgerIframeBridge implements LedgerBridge<LedgerIframeBrid
81
80
  deviceSignTypedData(params: LedgerSignTypedDataParams): Promise<LedgerSignTypedDataResponse>;
82
81
  }
83
82
  export {};
83
+ //# sourceMappingURL=ledger-iframe-bridge.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-iframe-bridge.d.cts","sourceRoot":"","sources":["../src/ledger-iframe-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { GetPublicKeyParams, GetPublicKeyResponse, LedgerBridge, LedgerSignMessageParams, LedgerSignMessageResponse, LedgerSignTransactionParams, LedgerSignTransactionResponse, LedgerSignTypedDataParams, LedgerSignTypedDataResponse } from "./ledger-bridge.mjs";
2
+ export declare enum IFrameMessageAction {
3
+ LedgerConnectionChange = "ledger-connection-change",
4
+ LedgerUnlock = "ledger-unlock",
5
+ LedgerMakeApp = "ledger-make-app",
6
+ LedgerUpdateTransport = "ledger-update-transport",
7
+ LedgerSignTransaction = "ledger-sign-transaction",
8
+ LedgerSignPersonalMessage = "ledger-sign-personal-message",
9
+ LedgerSignTypedData = "ledger-sign-typed-data"
10
+ }
11
+ type IFrameMessageResponseStub<SuccessResult extends Record<string, unknown>, FailureResult = Error> = {
12
+ messageId: number;
13
+ } & ({
14
+ success: true;
15
+ payload: SuccessResult;
16
+ } | {
17
+ success: false;
18
+ payload: {
19
+ error: FailureResult;
20
+ };
21
+ });
22
+ type LedgerConnectionChangeActionResponse = {
23
+ messageId: number;
24
+ action: IFrameMessageAction.LedgerConnectionChange;
25
+ payload: {
26
+ connected: boolean;
27
+ };
28
+ };
29
+ type LedgerMakeAppActionResponse = {
30
+ messageId: number;
31
+ action: IFrameMessageAction.LedgerMakeApp;
32
+ } & ({
33
+ success: true;
34
+ } | {
35
+ success: false;
36
+ error?: unknown;
37
+ });
38
+ type LedgerUpdateTransportActionResponse = {
39
+ messageId: number;
40
+ action: IFrameMessageAction.LedgerUpdateTransport;
41
+ success: boolean;
42
+ };
43
+ type LedgerUnlockActionResponse = {
44
+ action: IFrameMessageAction.LedgerUnlock;
45
+ } & IFrameMessageResponseStub<GetPublicKeyResponse>;
46
+ type LedgerSignTransactionActionResponse = {
47
+ action: IFrameMessageAction.LedgerSignTransaction;
48
+ } & IFrameMessageResponseStub<LedgerSignTransactionResponse>;
49
+ type LedgerSignPersonalMessageActionResponse = {
50
+ action: IFrameMessageAction.LedgerSignPersonalMessage;
51
+ } & IFrameMessageResponseStub<LedgerSignMessageResponse>;
52
+ type LedgerSignTypedDataActionResponse = {
53
+ action: IFrameMessageAction.LedgerSignTypedData;
54
+ } & IFrameMessageResponseStub<LedgerSignTypedDataResponse>;
55
+ export type IFrameMessageResponse = LedgerConnectionChangeActionResponse | LedgerMakeAppActionResponse | LedgerUpdateTransportActionResponse | LedgerUnlockActionResponse | LedgerSignTransactionActionResponse | LedgerSignPersonalMessageActionResponse | LedgerSignTypedDataActionResponse;
56
+ export type LedgerIframeBridgeOptions = {
57
+ bridgeUrl: string;
58
+ };
59
+ export declare class LedgerIframeBridge implements LedgerBridge<LedgerIframeBridgeOptions> {
60
+ #private;
61
+ iframe?: HTMLIFrameElement;
62
+ iframeLoaded: boolean;
63
+ eventListener?: (eventMessage: {
64
+ origin: string;
65
+ data: IFrameMessageResponse;
66
+ }) => void;
67
+ isDeviceConnected: boolean;
68
+ currentMessageId: number;
69
+ messageCallbacks: Record<number, (response: IFrameMessageResponse) => void>;
70
+ constructor(opts?: LedgerIframeBridgeOptions);
71
+ init(): Promise<void>;
72
+ destroy(): Promise<void>;
73
+ getOptions(): Promise<LedgerIframeBridgeOptions>;
74
+ setOptions(opts: LedgerIframeBridgeOptions): Promise<void>;
75
+ attemptMakeApp(): Promise<boolean>;
76
+ updateTransportMethod(transportType: string): Promise<boolean>;
77
+ getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;
78
+ deviceSignTransaction(params: LedgerSignTransactionParams): Promise<LedgerSignTransactionResponse>;
79
+ deviceSignMessage(params: LedgerSignMessageParams): Promise<LedgerSignMessageResponse>;
80
+ deviceSignTypedData(params: LedgerSignTypedDataParams): Promise<LedgerSignTypedDataResponse>;
81
+ }
82
+ export {};
83
+ //# sourceMappingURL=ledger-iframe-bridge.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-iframe-bridge.d.mts","sourceRoot":"","sources":["../src/ledger-iframe-bridge.ts"],"names":[],"mappings":"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"}