@trezor/connect 9.2.3 → 9.2.4-beta.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +43 -5
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.d.ts +8 -1
  4. package/lib/api/applyFlags.js +3 -8
  5. package/lib/api/applySettings.d.ts +8 -1
  6. package/lib/api/applySettings.js +3 -8
  7. package/lib/api/backupDevice.d.ts +10 -2
  8. package/lib/api/backupDevice.js +12 -9
  9. package/lib/api/binance/api/binanceGetAddress.d.ts +4 -3
  10. package/lib/api/binance/api/binanceGetAddress.js +8 -22
  11. package/lib/api/binance/api/binanceGetPublicKey.d.ts +4 -2
  12. package/lib/api/binance/api/binanceGetPublicKey.js +6 -18
  13. package/lib/api/cardano/api/cardanoGetAddress.d.ts +4 -3
  14. package/lib/api/cardano/api/cardanoGetAddress.js +8 -22
  15. package/lib/api/cardano/api/cardanoGetPublicKey.d.ts +4 -3
  16. package/lib/api/cardano/api/cardanoGetPublicKey.js +9 -31
  17. package/lib/api/changeLanguage.d.ts +8 -1
  18. package/lib/api/changeLanguage.js +3 -7
  19. package/lib/api/eos/api/eosGetPublicKey.d.ts +4 -2
  20. package/lib/api/eos/api/eosGetPublicKey.js +6 -18
  21. package/lib/api/ethereum/api/ethereumGetAddress.d.ts +4 -3
  22. package/lib/api/ethereum/api/ethereumGetAddress.js +4 -20
  23. package/lib/api/ethereum/api/ethereumGetPublicKey.d.ts +4 -2
  24. package/lib/api/ethereum/api/ethereumGetPublicKey.js +3 -10
  25. package/lib/api/firmware/index.d.ts +2 -0
  26. package/lib/api/firmware/index.js +5 -1
  27. package/lib/api/firmware/parseFirmwareHeaders.d.ts +5 -0
  28. package/lib/api/firmware/parseFirmwareHeaders.js +35 -0
  29. package/lib/api/firmware/uploadFirmware.d.ts +1 -1
  30. package/lib/api/firmware/uploadFirmware.js +9 -1
  31. package/lib/api/getAccountDescriptor.d.ts +5 -3
  32. package/lib/api/getAccountDescriptor.js +8 -21
  33. package/lib/api/getAccountInfo.d.ts +23 -7
  34. package/lib/api/getAccountInfo.js +12 -25
  35. package/lib/api/getAddress.d.ts +4 -3
  36. package/lib/api/getAddress.js +8 -22
  37. package/lib/api/getFeatures.d.ts +1 -0
  38. package/lib/api/getOwnershipId.d.ts +4 -2
  39. package/lib/api/getOwnershipId.js +4 -15
  40. package/lib/api/getOwnershipProof.d.ts +4 -2
  41. package/lib/api/getOwnershipProof.js +4 -15
  42. package/lib/api/getPublicKey.d.ts +5 -4
  43. package/lib/api/getPublicKey.js +12 -35
  44. package/lib/api/index.d.ts +0 -1
  45. package/lib/api/index.js +1 -3
  46. package/lib/api/nem/api/nemGetAddress.d.ts +4 -3
  47. package/lib/api/nem/api/nemGetAddress.js +4 -20
  48. package/lib/api/rebootToBootloader.d.ts +8 -2
  49. package/lib/api/rebootToBootloader.js +3 -10
  50. package/lib/api/recoveryDevice.d.ts +8 -1
  51. package/lib/api/recoveryDevice.js +3 -7
  52. package/lib/api/resetDevice.d.ts +4 -2
  53. package/lib/api/resetDevice.js +3 -10
  54. package/lib/api/ripple/api/rippleGetAddress.d.ts +4 -3
  55. package/lib/api/ripple/api/rippleGetAddress.js +4 -20
  56. package/lib/api/solana/api/solanaGetAddress.d.ts +4 -3
  57. package/lib/api/solana/api/solanaGetAddress.js +7 -28
  58. package/lib/api/solana/api/solanaGetPublicKey.d.ts +4 -3
  59. package/lib/api/solana/api/solanaGetPublicKey.js +7 -27
  60. package/lib/api/stellar/api/stellarGetAddress.d.ts +4 -3
  61. package/lib/api/stellar/api/stellarGetAddress.js +4 -20
  62. package/lib/api/tezos/api/tezosGetAddress.d.ts +4 -3
  63. package/lib/api/tezos/api/tezosGetAddress.js +4 -20
  64. package/lib/api/tezos/api/tezosGetPublicKey.d.ts +4 -2
  65. package/lib/api/tezos/api/tezosGetPublicKey.js +6 -18
  66. package/lib/api/wipeDevice.d.ts +8 -2
  67. package/lib/api/wipeDevice.js +3 -10
  68. package/lib/constants/errors.d.ts +1 -0
  69. package/lib/constants/errors.js +1 -0
  70. package/lib/core/AbstractMethod.d.ts +4 -8
  71. package/lib/core/AbstractMethod.js +6 -28
  72. package/lib/core/index.d.ts +2 -1
  73. package/lib/core/index.js +254 -225
  74. package/lib/core/onCallFirmwareUpdate.d.ts +31 -0
  75. package/lib/core/onCallFirmwareUpdate.js +259 -0
  76. package/lib/data/analyticsInfo.d.ts +2 -2
  77. package/lib/data/analyticsInfo.js +6 -7
  78. package/lib/data/deviceAuthenticityConfig.js +8 -4
  79. package/lib/data/firmwareInfo.js +1 -1
  80. package/lib/data/version.d.ts +1 -1
  81. package/lib/data/version.js +1 -1
  82. package/lib/device/Device.d.ts +1 -1
  83. package/lib/device/Device.js +2 -2
  84. package/lib/device/DeviceCommands.d.ts +2 -14
  85. package/lib/device/DeviceCommands.js +1 -43
  86. package/lib/device/DeviceList.d.ts +1 -1
  87. package/lib/device/DeviceList.js +20 -15
  88. package/lib/events/index.d.ts +1 -0
  89. package/lib/events/ui-request.d.ts +13 -1
  90. package/lib/events/ui-request.js +1 -0
  91. package/lib/index.js +2 -2
  92. package/lib/types/api/backupDevice.d.ts +2 -2
  93. package/lib/types/api/dispose.d.ts +1 -1
  94. package/lib/types/api/firmwareUpdate.d.ts +7 -6
  95. package/lib/types/api/firmwareUpdate.js +1 -3
  96. package/lib/utils/popupPromiseManager.d.ts +8 -0
  97. package/lib/utils/popupPromiseManager.js +21 -0
  98. package/lib/utils/uiPromiseManager.d.ts +38 -0
  99. package/lib/utils/uiPromiseManager.js +47 -0
  100. package/lib/workers/workers-browser.d.ts +3 -1
  101. package/lib/workers/workers-browser.js +2 -2
  102. package/package.json +6 -6
  103. package/lib/api/firmwareUpdate.d.ts +0 -19
  104. package/lib/api/firmwareUpdate.js +0 -78
@@ -18,6 +18,7 @@ export declare const UI_REQUEST: {
18
18
  readonly FIRMWARE_NOT_COMPATIBLE: "ui-device_firmware_not_compatible";
19
19
  readonly FIRMWARE_NOT_INSTALLED: "ui-device_firmware_not_installed";
20
20
  readonly FIRMWARE_PROGRESS: "ui-firmware-progress";
21
+ readonly FIRMWARE_RECONNECT: "ui-firmware_reconnect";
21
22
  readonly DEVICE_NEEDS_BACKUP: "ui-device_needs_backup";
22
23
  readonly REQUEST_UI_WINDOW: "ui-request_window";
23
24
  readonly CLOSE_UI_WINDOW: "ui-close_window";
@@ -196,10 +197,21 @@ export interface FirmwareProgress {
196
197
  type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
197
198
  payload: {
198
199
  device: Device;
200
+ operation: 'downloading' | 'flashing' | 'validating';
199
201
  progress: number;
200
202
  };
201
203
  }
202
- export type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton | UiRequestPermission | UiRequestConfirmation | UiRequestSelectDevice | UiRequestUnexpectedDeviceMode | UiRequestSelectAccount | UiRequestSelectFee | UpdateCustomFee | BundleProgress<any> | FirmwareProgress | FirmwareException | UiRequestAddressValidation | UiRequestSetOperation;
204
+ export interface FirmwareReconnect {
205
+ type: typeof UI_REQUEST.FIRMWARE_RECONNECT;
206
+ payload: {
207
+ device: Device;
208
+ disconnected: boolean;
209
+ method: 'manual' | 'auto' | 'wait';
210
+ target: 'normal' | 'bootloader';
211
+ i: number;
212
+ };
213
+ }
214
+ export type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton | UiRequestPermission | UiRequestConfirmation | UiRequestSelectDevice | UiRequestUnexpectedDeviceMode | UiRequestSelectAccount | UiRequestSelectFee | UpdateCustomFee | BundleProgress<any> | FirmwareProgress | FirmwareException | FirmwareReconnect | UiRequestAddressValidation | UiRequestSetOperation;
203
215
  export type UiEventMessage = UiEvent & {
204
216
  event: typeof UI_EVENT;
205
217
  };
@@ -15,6 +15,7 @@ exports.UI_REQUEST = {
15
15
  FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',
16
16
  FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',
17
17
  FIRMWARE_PROGRESS: 'ui-firmware-progress',
18
+ FIRMWARE_RECONNECT: 'ui-firmware_reconnect',
18
19
  DEVICE_NEEDS_BACKUP: 'ui-device_needs_backup',
19
20
  REQUEST_UI_WINDOW: 'ui-request_window',
20
21
  CLOSE_UI_WINDOW: 'ui-close_window',
package/lib/index.js CHANGED
@@ -21,11 +21,11 @@ const manifest = (data) => {
21
21
  manifest: data,
22
22
  });
23
23
  };
24
- const dispose = async () => {
24
+ const dispose = () => {
25
25
  exports.eventEmitter.removeAllListeners();
26
26
  _settings = (0, connectSettings_1.parseConnectSettings)();
27
27
  if (_core) {
28
- await _core.dispose();
28
+ _core.dispose();
29
29
  _core = null;
30
30
  }
31
31
  };
@@ -1,4 +1,4 @@
1
1
  import type { PROTO } from '../../constants';
2
- import type { CommonParams, Response } from '../params';
3
- export declare function backupDevice(params?: CommonParams): Response<PROTO.Success>;
2
+ import type { Params, Response } from '../params';
3
+ export declare function backupDevice(params?: Params<PROTO.BackupDevice>): Response<PROTO.Success>;
4
4
  //# sourceMappingURL=backupDevice.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function dispose(): Promise<void>;
1
+ export declare function dispose(): void;
2
2
  //# sourceMappingURL=dispose.d.ts.map
@@ -3,16 +3,17 @@ import type { Params, Response } from '../params';
3
3
  export type FirmwareUpdate = Static<typeof FirmwareUpdate>;
4
4
  export declare const FirmwareUpdate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
5
5
  binary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUndefined>;
6
- version: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
7
6
  btcOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
8
7
  baseUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
- intermediaryVersion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<1>, import("@sinclair/typebox").TLiteral<2>, import("@sinclair/typebox").TLiteral<3>]>>;
8
+ language: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
9
  }>, import("@sinclair/typebox").TObject<{
11
10
  binary: import("@trezor/schema-utils/lib/custom-types/array-buffer").TArrayBuffer;
12
11
  }>]>;
13
- export interface FirmwareUpdateResponse {
14
- hash: string;
15
- challenge: string;
16
- }
12
+ export type FirmwareUpdateResponse = {
13
+ check: 'mismatch' | 'valid' | 'omitted';
14
+ } | {
15
+ check: 'other-error';
16
+ checkError: string;
17
+ };
17
18
  export declare function firmwareUpdate(params: Params<FirmwareUpdate>): Response<FirmwareUpdateResponse>;
18
19
  //# sourceMappingURL=firmwareUpdate.d.ts.map
@@ -2,14 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FirmwareUpdate = void 0;
4
4
  const schema_utils_1 = require("@trezor/schema-utils");
5
- const firmware_1 = require("../firmware");
6
5
  exports.FirmwareUpdate = schema_utils_1.Type.Union([
7
6
  schema_utils_1.Type.Object({
8
7
  binary: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),
9
- version: schema_utils_1.Type.Array(schema_utils_1.Type.Number(), { minItems: 3, maxItems: 3 }),
10
8
  btcOnly: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),
11
9
  baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),
12
- intermediaryVersion: schema_utils_1.Type.Optional(firmware_1.IntermediaryVersion),
10
+ language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),
13
11
  }),
14
12
  schema_utils_1.Type.Object({
15
13
  binary: schema_utils_1.Type.ArrayBuffer(),
@@ -0,0 +1,8 @@
1
+ export declare const createPopupPromiseManager: () => {
2
+ wait: () => Promise<void>;
3
+ isWaiting: () => boolean;
4
+ clear: () => void;
5
+ resolve: () => void;
6
+ reject: (error: Error) => void;
7
+ };
8
+ //# sourceMappingURL=popupPromiseManager.d.ts.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPopupPromiseManager = void 0;
4
+ const utils_1 = require("@trezor/utils");
5
+ const createPopupPromiseManager = () => {
6
+ let _popupPromise;
7
+ const ensure = () => _popupPromise !== null && _popupPromise !== void 0 ? _popupPromise : (_popupPromise = (0, utils_1.createDeferred)());
8
+ const wait = () => ensure().promise;
9
+ const resolve = () => ensure().resolve();
10
+ const isWaiting = () => !!_popupPromise;
11
+ const reject = (error) => {
12
+ _popupPromise === null || _popupPromise === void 0 ? void 0 : _popupPromise.reject(error);
13
+ _popupPromise = undefined;
14
+ };
15
+ const clear = () => {
16
+ _popupPromise = undefined;
17
+ };
18
+ return { wait, isWaiting, clear, resolve, reject };
19
+ };
20
+ exports.createPopupPromiseManager = createPopupPromiseManager;
21
+ //# sourceMappingURL=popupPromiseManager.js.map
@@ -0,0 +1,38 @@
1
+ import { UiPromiseCreator, UiPromiseResponse } from '../events';
2
+ export declare const createUiPromiseManager: (interactionTimeout: () => void) => {
3
+ exists: (type: UiPromiseResponse['type']) => boolean;
4
+ create: UiPromiseCreator;
5
+ resolve: (event: UiPromiseResponse) => boolean;
6
+ rejectAll: (error: Error) => void;
7
+ disconnected: (devicePath: string) => boolean;
8
+ get: <T extends "device-disconnect" | "popup-handshake" | "ui-receive_permission" | "ui-receive_confirmation" | "ui-receive_pin" | "ui-receive_passphrase" | "ui-receive_device" | "ui-receive_account" | "ui-receive_fee" | "ui-receive_word" | "ui-invalid_passphrase_action" | "ui-login_challenge_response">(type: T) => Promise<Extract<import("../events").UiResponsePopupHandshake, {
9
+ type: T;
10
+ }> | Extract<import("../events").UiResponsePermission, {
11
+ type: T;
12
+ }> | Extract<import("../events").UiResponseConfirmation, {
13
+ type: T;
14
+ }> | Extract<import("../events").UiResponseDevice, {
15
+ type: T;
16
+ }> | Extract<import("../events").UiResponsePin, {
17
+ type: T;
18
+ }> | Extract<import("../events").UiResponseWord, {
19
+ type: T;
20
+ }> | Extract<import("../events").UiResponsePassphrase, {
21
+ type: T;
22
+ }> | Extract<import("../events").UiResponsePassphraseAction, {
23
+ type: T;
24
+ }> | Extract<import("../events").UiResponseAccount, {
25
+ type: T;
26
+ }> | Extract<import("../events").UiResponseFee, {
27
+ type: T;
28
+ }> | Extract<import("../events").UiResponseLoginChallenge, {
29
+ type: T;
30
+ }> | Extract<{
31
+ type: "device-disconnect";
32
+ payload?: undefined;
33
+ }, {
34
+ type: T;
35
+ }>>;
36
+ clear: () => void;
37
+ };
38
+ //# sourceMappingURL=uiPromiseManager.d.ts.map
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUiPromiseManager = void 0;
4
+ const events_1 = require("../events");
5
+ const utils_1 = require("@trezor/utils");
6
+ const createUiPromiseManager = (interactionTimeout) => {
7
+ let _uiPromises = [];
8
+ const exists = (type) => _uiPromises.some(p => p.id === type);
9
+ const create = (promiseEvent, device) => {
10
+ const uiPromise = {
11
+ ...(0, utils_1.createDeferred)(promiseEvent),
12
+ device,
13
+ };
14
+ _uiPromises.push(uiPromise);
15
+ interactionTimeout();
16
+ return uiPromise;
17
+ };
18
+ const resolve = (event) => {
19
+ const uiPromise = _uiPromises.find(p => p.id === event.type);
20
+ if (!uiPromise)
21
+ return false;
22
+ uiPromise.resolve(event);
23
+ _uiPromises = _uiPromises.filter(p => p !== uiPromise);
24
+ return true;
25
+ };
26
+ const rejectAll = (error) => {
27
+ _uiPromises.forEach(p => p.reject(error));
28
+ _uiPromises = [];
29
+ };
30
+ const disconnected = (devicePath) => {
31
+ const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, (p) => { var _a; return ((_a = p.device) === null || _a === void 0 ? void 0 : _a.getDevicePath()) === devicePath && p.id === events_1.DEVICE.DISCONNECT; });
32
+ toResolve.forEach(p => p.resolve({ type: events_1.DEVICE.DISCONNECT }));
33
+ _uiPromises = toKeep;
34
+ return !!toResolve.length || toKeep.some(p => { var _a; return ((_a = p.device) === null || _a === void 0 ? void 0 : _a.getDevicePath()) === devicePath; });
35
+ };
36
+ const get = (type) => {
37
+ var _a;
38
+ const uiPromise = _uiPromises.find(p => p.id === type);
39
+ return (_a = uiPromise === null || uiPromise === void 0 ? void 0 : uiPromise.promise) !== null && _a !== void 0 ? _a : Promise.reject(new Error(`UiPromise ${type} doesn't exist`));
40
+ };
41
+ const clear = () => {
42
+ _uiPromises = [];
43
+ };
44
+ return { exists, create, resolve, rejectAll, disconnected, get, clear };
45
+ };
46
+ exports.createUiPromiseManager = createUiPromiseManager;
47
+ //# sourceMappingURL=uiPromiseManager.js.map
@@ -1,7 +1,9 @@
1
1
  import BlockbookWorker from '@trezor/blockchain-link/lib/workers/blockbook';
2
2
  import RippleWorker from '@trezor/blockchain-link/lib/workers/ripple';
3
3
  import BlockfrostWorker from '@trezor/blockchain-link/lib/workers/blockfrost';
4
- import SolanaWorker from '@trezor/blockchain-link/lib/workers/solana';
4
+ import type { BaseWorker } from '@trezor/blockchain-link/lib/workers/baseWorker';
5
+ type WorkerAsyncImporter = () => Promise<BaseWorker<unknown>>;
6
+ declare const SolanaWorker: WorkerAsyncImporter;
5
7
  declare const ElectrumWorker: undefined;
6
8
  export { BlockbookWorker, RippleWorker, BlockfrostWorker, ElectrumWorker, SolanaWorker };
7
9
  //# sourceMappingURL=workers-browser.d.ts.map
@@ -8,8 +8,8 @@ const ripple_1 = tslib_1.__importDefault(require("@trezor/blockchain-link/lib/wo
8
8
  exports.RippleWorker = ripple_1.default;
9
9
  const blockfrost_1 = tslib_1.__importDefault(require("@trezor/blockchain-link/lib/workers/blockfrost"));
10
10
  exports.BlockfrostWorker = blockfrost_1.default;
11
- const solana_1 = tslib_1.__importDefault(require("@trezor/blockchain-link/lib/workers/solana"));
12
- exports.SolanaWorker = solana_1.default;
11
+ const SolanaWorker = () => Promise.resolve().then(() => tslib_1.__importStar(require('@trezor/blockchain-link/lib/workers/solana'))).then(w => w.default());
12
+ exports.SolanaWorker = SolanaWorker;
13
13
  const ElectrumWorker = undefined;
14
14
  exports.ElectrumWorker = ElectrumWorker;
15
15
  //# sourceMappingURL=workers-browser.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trezor/connect",
3
- "version": "9.2.3",
3
+ "version": "9.2.4-beta.1",
4
4
  "author": "Trezor <info@trezor.io>",
5
5
  "homepage": "https://github.com/trezor/trezor-suite/tree/develop/packages/connect",
6
6
  "description": "High-level javascript interface for Trezor hardware wallet.",
@@ -71,12 +71,12 @@
71
71
  "@ethereumjs/tx": "^5.2.1",
72
72
  "@fivebinaries/coin-selection": "2.2.1",
73
73
  "@trezor/blockchain-link": "2.1.29",
74
- "@trezor/blockchain-link-types": "1.0.16",
74
+ "@trezor/blockchain-link-types": "1.0.17-beta.1",
75
75
  "@trezor/connect-analytics": "1.0.14",
76
- "@trezor/connect-common": "0.0.32",
77
- "@trezor/protobuf": "1.0.12",
78
- "@trezor/protocol": "1.0.8",
79
- "@trezor/schema-utils": "1.0.3",
76
+ "@trezor/connect-common": "0.0.33-beta.1",
77
+ "@trezor/protobuf": "1.0.13-beta.1",
78
+ "@trezor/protocol": "1.0.9-beta.1",
79
+ "@trezor/schema-utils": "1.0.4-beta.1",
80
80
  "@trezor/transport": "1.1.28",
81
81
  "@trezor/utils": "9.0.23",
82
82
  "@trezor/utxo-lib": "2.0.9",
@@ -1,19 +0,0 @@
1
- import { AbstractMethod } from '../core/AbstractMethod';
2
- import { IntermediaryVersion } from '../types';
3
- type Params = {
4
- binary?: ArrayBuffer;
5
- version?: number[];
6
- btcOnly?: boolean;
7
- baseUrl: string;
8
- intermediaryVersion?: IntermediaryVersion;
9
- };
10
- export default class FirmwareUpdate extends AbstractMethod<'firmwareUpdate', Params> {
11
- init(): void;
12
- confirmation(): Promise<boolean>;
13
- run(): Promise<{
14
- hash: string;
15
- challenge: string;
16
- }>;
17
- }
18
- export {};
19
- //# sourceMappingURL=firmwareUpdate.d.ts.map
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const crypto_1 = require("crypto");
4
- const AbstractMethod_1 = require("../core/AbstractMethod");
5
- const constants_1 = require("../constants");
6
- const events_1 = require("../events");
7
- const firmware_1 = require("./firmware");
8
- const firmwareInfo_1 = require("../data/firmwareInfo");
9
- const schema_utils_1 = require("@trezor/schema-utils");
10
- const firmwareUpdate_1 = require("../types/api/firmwareUpdate");
11
- class FirmwareUpdate extends AbstractMethod_1.AbstractMethod {
12
- init() {
13
- this.useEmptyPassphrase = true;
14
- this.requiredPermissions = ['management'];
15
- this.allowDeviceMode = [events_1.UI.BOOTLOADER, events_1.UI.INITIALIZE];
16
- this.requireDeviceMode = [events_1.UI.BOOTLOADER];
17
- this.useDeviceState = false;
18
- this.skipFirmwareCheck = true;
19
- const { payload } = this;
20
- (0, schema_utils_1.Assert)(firmwareUpdate_1.FirmwareUpdate, payload);
21
- if (payload.binary) {
22
- this.params = {
23
- ...this.params,
24
- binary: payload.binary,
25
- };
26
- }
27
- else {
28
- this.params = {
29
- version: payload.version,
30
- btcOnly: payload.btcOnly,
31
- baseUrl: payload.baseUrl || 'https://data.trezor.io',
32
- intermediaryVersion: payload.intermediaryVersion,
33
- };
34
- }
35
- }
36
- async confirmation() {
37
- await this.getPopupPromise().promise;
38
- const uiPromise = this.createUiPromise(events_1.UI.RECEIVE_CONFIRMATION);
39
- this.postMessage((0, events_1.createUiMessage)(events_1.UI.REQUEST_CONFIRMATION, {
40
- view: 'device-management',
41
- customConfirmButton: {
42
- className: 'wipe',
43
- label: 'Proceed',
44
- },
45
- label: 'Do you want to update firmware? Never do this without your recovery card.',
46
- }));
47
- const uiResp = await uiPromise.promise;
48
- return uiResp.payload;
49
- }
50
- async run() {
51
- var _a;
52
- const { device, params } = this;
53
- let binary;
54
- try {
55
- if (params.binary) {
56
- binary = params.binary;
57
- }
58
- else {
59
- binary = await (0, firmware_1.getBinary)({
60
- features: device.features,
61
- releases: (0, firmwareInfo_1.getReleases)((_a = device.features) === null || _a === void 0 ? void 0 : _a.internal_model),
62
- version: params.version,
63
- btcOnly: params.btcOnly,
64
- baseUrl: params.baseUrl,
65
- intermediaryVersion: params.intermediaryVersion,
66
- });
67
- }
68
- }
69
- catch (err) {
70
- throw constants_1.ERRORS.TypedError('Method_FirmwareUpdate_DownloadFailed', `Failed to download firmware binary ${err.message}`);
71
- }
72
- const stripped = (0, firmware_1.stripFwHeaders)(binary);
73
- await (0, firmware_1.uploadFirmware)(this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: (0, firmware_1.shouldStripFwHeaders)(device.features) ? stripped : binary });
74
- return (0, firmware_1.calculateFirmwareHash)(device.features.major_version, stripped, (0, crypto_1.randomBytes)(32));
75
- }
76
- }
77
- exports.default = FirmwareUpdate;
78
- //# sourceMappingURL=firmwareUpdate.js.map