@trezor/connect 9.1.2 → 9.1.4

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 (59) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +3 -1
  3. package/lib/api/bitcoin/TransactionComposer.js +1 -9
  4. package/lib/api/bitcoin/inputs.d.ts +2 -2
  5. package/lib/api/bitcoin/outputs.d.ts +2 -2
  6. package/lib/api/cardanoGetPublicKey.d.ts +6 -2
  7. package/lib/api/cardanoGetPublicKey.js +8 -2
  8. package/lib/api/checkFirmwareAuthenticity.js +2 -3
  9. package/lib/api/common/paramsValidator.js +7 -7
  10. package/lib/api/eos/eosSignTx.js +1 -1
  11. package/lib/api/ethereumSignTypedData.js +1 -1
  12. package/lib/api/firmwareUpdate.js +2 -3
  13. package/lib/api/getAccountInfo.d.ts +1 -1
  14. package/lib/api/getAccountInfo.js +5 -1
  15. package/lib/api/getPublicKey.d.ts +2 -1
  16. package/lib/api/getPublicKey.js +8 -2
  17. package/lib/api/signTransaction.js +1 -1
  18. package/lib/core/AbstractMethod.d.ts +4 -4
  19. package/lib/core/AbstractMethod.js +4 -3
  20. package/lib/core/index.js +12 -9
  21. package/lib/data/coinInfo.d.ts +5 -5
  22. package/lib/data/coinInfo.js +1 -1
  23. package/lib/data/config.js +4 -5
  24. package/lib/data/firmwareInfo.js +2 -3
  25. package/lib/data/models.d.ts +18 -0
  26. package/lib/data/models.js +21 -0
  27. package/lib/data/version.d.ts +1 -1
  28. package/lib/data/version.js +1 -1
  29. package/lib/device/Device.d.ts +4 -2
  30. package/lib/device/Device.js +29 -14
  31. package/lib/device/DeviceCommands.js +4 -4
  32. package/lib/device/DeviceList.d.ts +1 -1
  33. package/lib/device/DeviceList.js +6 -0
  34. package/lib/events/ui-promise.d.ts +10 -2
  35. package/lib/types/api/authorizeCoinjoin.d.ts +2 -2
  36. package/lib/types/api/binance/index.d.ts +2 -1
  37. package/lib/types/api/bitcoin/index.d.ts +6 -5
  38. package/lib/types/api/cardano/index.d.ts +12 -12
  39. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  40. package/lib/types/api/eos/index.d.ts +3 -2
  41. package/lib/types/api/ethereum/index.d.ts +5 -4
  42. package/lib/types/api/getAccountInfo.d.ts +1 -0
  43. package/lib/types/api/getOwnershipId.d.ts +2 -2
  44. package/lib/types/api/getOwnershipProof.d.ts +2 -2
  45. package/lib/types/api/nem/index.d.ts +2 -1
  46. package/lib/types/api/ripple/index.d.ts +2 -1
  47. package/lib/types/api/stellar/index.d.ts +2 -1
  48. package/lib/types/api/tezos/index.d.ts +3 -2
  49. package/lib/types/api/unlockPath.d.ts +2 -2
  50. package/lib/types/device.d.ts +6 -0
  51. package/lib/types/firmware.d.ts +2 -2
  52. package/lib/types/params.d.ts +14 -2
  53. package/lib/utils/deviceFeaturesUtils.js +4 -4
  54. package/lib/utils/pathUtils.d.ts +3 -3
  55. package/package.json +11 -13
  56. package/lib/utils/deferred.d.ts +0 -18
  57. package/lib/utils/deferred.js +0 -66
  58. package/lib/utils/versionUtils.d.ts +0 -8
  59. package/lib/utils/versionUtils.js +0 -75
@@ -34,8 +34,19 @@ export interface Success<T> {
34
34
  payload: T;
35
35
  }
36
36
  export type Response<T> = Promise<Success<T> | Unsuccessful>;
37
+ export type DerivationPath = string | number[];
38
+ type ProtoWithExtendedAddressN<T, A, R> = Omit<Extract<T, {
39
+ address_n: A;
40
+ }>, 'address_n'> & {
41
+ address_n: R;
42
+ };
43
+ type ProtoWithoutAddressN<T, A> = Exclude<T, {
44
+ address_n: A;
45
+ }>;
46
+ export type ProtoWithDerivationPath<T> = ProtoWithoutAddressN<T, number[]> | ProtoWithExtendedAddressN<T, number[], DerivationPath>;
47
+ export type ProtoWithAddressN<P extends ProtoWithDerivationPath<any>> = P extends ProtoWithDerivationPath<infer T> ? T : unknown;
37
48
  export interface GetAddress {
38
- path: string | number[];
49
+ path: DerivationPath;
39
50
  address?: string;
40
51
  showOnTrezor?: boolean;
41
52
  }
@@ -45,8 +56,9 @@ export interface Address {
45
56
  serializedPath: string;
46
57
  }
47
58
  export interface GetPublicKey {
48
- path: string | number[];
59
+ path: DerivationPath;
49
60
  showOnTrezor?: boolean;
61
+ suppressBackupWarning?: boolean;
50
62
  }
51
63
  export interface PublicKey {
52
64
  publicKey: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensureInternalModelFeature = exports.parseRevision = exports.getUnavailableCapabilities = exports.parseCapabilities = void 0;
4
- const versionUtils_1 = require("./versionUtils");
4
+ const utils_1 = require("@trezor/utils");
5
5
  const config_1 = require("../data/config");
6
6
  const types_1 = require("../types");
7
7
  const DEFAULT_CAPABILITIES_T1 = [
@@ -78,7 +78,7 @@ const getUnavailableCapabilities = (features, coins) => {
78
78
  supported
79
79
  .filter(info => !unavailable.includes(info))
80
80
  .forEach(info => {
81
- if ((0, versionUtils_1.versionCompare)(info.support[key], fw) > 0) {
81
+ if (utils_1.versionUtils.isNewer(info.support[key], fw.join('.'))) {
82
82
  list[info.shortcut.toLowerCase()] = 'update-required';
83
83
  unavailable.push(info);
84
84
  }
@@ -88,13 +88,13 @@ const getUnavailableCapabilities = (features, coins) => {
88
88
  return;
89
89
  const min = s.min ? s.min[fw[0] - 1] : null;
90
90
  const max = s.max ? s.max[fw[0] - 1] : null;
91
- if (min && (min === '0' || (0, versionUtils_1.versionCompare)(min, fw) > 0)) {
91
+ if (min && (min === '0' || utils_1.versionUtils.isNewer(min, fw.join('.')))) {
92
92
  const value = min === '0' ? 'no-support' : 'update-required';
93
93
  s.capabilities.forEach(m => {
94
94
  list[m] = value;
95
95
  });
96
96
  }
97
- if (max && (0, versionUtils_1.versionCompare)(max, fw) < 0) {
97
+ if (max && !utils_1.versionUtils.isNewerOrEqual(max, fw.join('.'))) {
98
98
  s.capabilities.forEach(m => {
99
99
  list[m] = 'trezor-connect-outdated';
100
100
  });
@@ -1,5 +1,5 @@
1
1
  import { PROTO } from '../constants';
2
- import type { CoinInfo } from '../types';
2
+ import type { CoinInfo, DerivationPath, ProtoWithDerivationPath, ProtoWithAddressN } from '../types';
3
3
  export declare const HD_HARDENED = 2147483648;
4
4
  export declare const toHardened: (n: number) => number;
5
5
  export declare const fromHardened: (n: number) => number;
@@ -11,10 +11,10 @@ export declare const isTaprootPath: (path: number[] | undefined) => boolean;
11
11
  export declare const getAccountType: (path: number[] | undefined) => "p2pkh" | "p2sh" | "p2tr" | "p2wpkh";
12
12
  export declare const getScriptType: (path: number[] | undefined) => PROTO.InternalInputScriptType | undefined;
13
13
  export declare const getOutputScriptType: (path?: number[]) => PROTO.ChangeOutputScriptType | undefined;
14
- export declare const validatePath: (path: string | number[], length?: number, base?: boolean) => number[];
14
+ export declare const validatePath: (path: DerivationPath, length?: number, base?: boolean) => number[];
15
15
  export declare const getSerializedPath: (path: number[]) => string;
16
16
  export declare const getPathFromIndex: (bip44purpose: number, bip44cointype: number, index: number) => number[];
17
17
  export declare const getIndexFromPath: (path: number[]) => number;
18
- export declare const fixPath: <T extends PROTO.TxInputType | PROTO.TxOutputType>(utxo: T) => T;
18
+ export declare const fixPath: <T extends ProtoWithDerivationPath<PROTO.TxInputType> | ProtoWithDerivationPath<PROTO.TxOutputType>>(utxo: T) => ProtoWithAddressN<T>;
19
19
  export declare const getLabel: (label: string, coinInfo?: CoinInfo) => string;
20
20
  //# sourceMappingURL=pathUtils.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trezor/connect",
3
- "version": "9.1.2",
3
+ "version": "9.1.4",
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.",
@@ -49,28 +49,26 @@
49
49
  "prepublish": "yarn tsx ../../scripts/prepublish.js"
50
50
  },
51
51
  "dependencies": {
52
- "@trezor/blockchain-link": "2.1.16",
53
- "@trezor/blockchain-link-types": "1.0.5",
54
- "@trezor/connect-analytics": "1.0.5",
55
- "@trezor/connect-common": "0.0.19",
56
- "@trezor/protobuf": "1.0.0",
57
- "@trezor/protocol": "1.0.0",
58
- "@trezor/transport": "1.1.15",
59
- "@trezor/utils": "9.0.12",
60
- "@trezor/utxo-lib": "1.0.10",
52
+ "@trezor/blockchain-link": "2.1.17",
53
+ "@trezor/blockchain-link-types": "1.0.6",
54
+ "@trezor/connect-analytics": "1.0.7",
55
+ "@trezor/connect-common": "0.0.21",
56
+ "@trezor/protobuf": "1.0.1",
57
+ "@trezor/protocol": "1.0.1",
58
+ "@trezor/transport": "1.1.16",
59
+ "@trezor/utils": "9.0.13",
60
+ "@trezor/utxo-lib": "1.0.11",
61
61
  "bignumber.js": "^9.1.1",
62
62
  "blakejs": "^1.2.1",
63
63
  "bs58": "^5.0.0",
64
64
  "bs58check": "^3.0.1",
65
65
  "cross-fetch": "^3.1.6",
66
- "events": "^3.3.0",
67
- "randombytes": "2.1.0"
66
+ "events": "^3.3.0"
68
67
  },
69
68
  "devDependencies": {
70
69
  "@trezor/trezor-user-env-link": "1.0.2",
71
70
  "@types/karma": "^6.3.4",
72
71
  "@types/parse-uri": "^1.0.0",
73
- "@types/randombytes": "^2.0.0",
74
72
  "jest": "^29.5.0",
75
73
  "jest-environment-jsdom": "^29.5.0",
76
74
  "karma": "^6.4.2",
@@ -1,18 +0,0 @@
1
- export type Deferred<T, I = any, D = any> = {
2
- id?: I;
3
- data?: D;
4
- promise: Promise<T>;
5
- resolve: (t: T) => void;
6
- reject: (e: Error) => void;
7
- };
8
- export type AsyncDeferred<T> = {
9
- promise: Promise<T>;
10
- resolve: (t: T) => void;
11
- reject: (e: Error) => void;
12
- run: (...args: any[]) => any;
13
- };
14
- export declare function create<T, I = any, D = any>(arg?: I, data?: D): Deferred<T, I, D>;
15
- export declare function createAsync<T>(innerFn: (...args: any[]) => any): AsyncDeferred<T>;
16
- export declare function resolveTimeoutPromise<T>(delay: number, result: T): Promise<T>;
17
- export declare const rejectTimeoutPromise: (delay: number, error: Error) => Promise<any>;
18
- //# sourceMappingURL=deferred.d.ts.map
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rejectTimeoutPromise = exports.resolveTimeoutPromise = exports.createAsync = exports.create = void 0;
4
- function create(arg, data) {
5
- let localResolve = (_t) => { };
6
- let localReject = (_e) => { };
7
- let id;
8
- const promise = new Promise(async (resolve, reject) => {
9
- localResolve = resolve;
10
- localReject = reject;
11
- if (typeof arg === 'function') {
12
- try {
13
- await arg();
14
- }
15
- catch (error) {
16
- reject(error);
17
- }
18
- }
19
- if (typeof arg === 'string')
20
- id = arg;
21
- });
22
- return {
23
- id,
24
- data,
25
- resolve: localResolve,
26
- reject: localReject,
27
- promise,
28
- };
29
- }
30
- exports.create = create;
31
- function createAsync(innerFn) {
32
- let localResolve = (_t) => { };
33
- let localReject = _e => { };
34
- const promise = new Promise((resolve, reject) => {
35
- localResolve = resolve;
36
- localReject = reject;
37
- });
38
- const inner = async () => {
39
- await innerFn();
40
- };
41
- return {
42
- resolve: localResolve,
43
- reject: localReject,
44
- promise,
45
- run: () => {
46
- inner();
47
- return promise;
48
- },
49
- };
50
- }
51
- exports.createAsync = createAsync;
52
- function resolveTimeoutPromise(delay, result) {
53
- return new Promise(resolve => {
54
- setTimeout(() => {
55
- resolve(result);
56
- }, delay);
57
- });
58
- }
59
- exports.resolveTimeoutPromise = resolveTimeoutPromise;
60
- const rejectTimeoutPromise = (delay, error) => new Promise((_resolve, reject) => {
61
- setTimeout(() => {
62
- reject(error);
63
- }, delay);
64
- });
65
- exports.rejectTimeoutPromise = rejectTimeoutPromise;
66
- //# sourceMappingURL=deferred.js.map
@@ -1,8 +0,0 @@
1
- import type { VersionArray } from '../types';
2
- export declare const isValidVersionString: (version: string) => boolean;
3
- export declare const isValidVersionArray: (version: (number | null)[]) => boolean;
4
- export declare const isVersionArray: (arr: (number | null)[]) => arr is VersionArray;
5
- export declare const normalizeVersionArray: (version: number[]) => number[];
6
- export declare const versionSplit: (version: string) => number[];
7
- export declare const versionCompare: (a: string | number[], b: string | number[]) => 1 | 0 | -1;
8
- //# sourceMappingURL=versionUtils.d.ts.map
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.versionCompare = exports.versionSplit = exports.normalizeVersionArray = exports.isVersionArray = exports.isValidVersionArray = exports.isValidVersionString = void 0;
4
- const VER_NUMS = 3;
5
- const versionRegex = new RegExp(/^[0-9]{1,3}(\.[0-9]{1,3}){0,2}$/);
6
- const isValidVersionString = (version) => versionRegex.test(version);
7
- exports.isValidVersionString = isValidVersionString;
8
- const isValidVersionArray = (version) => {
9
- if (!Array.isArray(version)) {
10
- return false;
11
- }
12
- if (version.length === 0 || version.length > VER_NUMS) {
13
- return false;
14
- }
15
- if (version[0] === 0) {
16
- return false;
17
- }
18
- for (let i = 0; i < version.length; i++) {
19
- const versionNumber = version[i];
20
- if (typeof versionNumber !== 'number' || versionNumber === null || versionNumber < 0) {
21
- return false;
22
- }
23
- }
24
- return true;
25
- };
26
- exports.isValidVersionArray = isValidVersionArray;
27
- const isVersionArray = (arr) => (0, exports.isValidVersionArray)(arr);
28
- exports.isVersionArray = isVersionArray;
29
- const normalizeVersionArray = (version) => {
30
- if (version.length === VER_NUMS) {
31
- return version;
32
- }
33
- const partialVersion = [...version];
34
- for (let i = version.length; i < VER_NUMS; i++) {
35
- partialVersion.push(0);
36
- }
37
- return partialVersion;
38
- };
39
- exports.normalizeVersionArray = normalizeVersionArray;
40
- const versionSplit = (version) => {
41
- if (!(0, exports.isValidVersionString)(version)) {
42
- return [0, 0, 0];
43
- }
44
- return version.split('.').map(v => Number(v));
45
- };
46
- exports.versionSplit = versionSplit;
47
- const versionCompare = (a, b) => {
48
- if (typeof a === 'string' && typeof b === 'string' && a === b) {
49
- return 0;
50
- }
51
- const pa = typeof a === 'string' ? (0, exports.versionSplit)(a) : a;
52
- const pb = typeof b === 'string' ? (0, exports.versionSplit)(b) : b;
53
- const vpa = (0, exports.isValidVersionArray)(pa);
54
- const vpb = (0, exports.isValidVersionArray)(pb);
55
- if (!vpa && !vpb) {
56
- return 0;
57
- }
58
- if (!vpa && vpb) {
59
- return -1;
60
- }
61
- if (vpa && !vpb) {
62
- return 1;
63
- }
64
- const npa = (0, exports.normalizeVersionArray)(pa);
65
- const npb = (0, exports.normalizeVersionArray)(pb);
66
- for (let i = 0; i < VER_NUMS; i++) {
67
- if (npa[i] > npb[i])
68
- return 1;
69
- if (npb[i] > npa[i])
70
- return -1;
71
- }
72
- return 0;
73
- };
74
- exports.versionCompare = versionCompare;
75
- //# sourceMappingURL=versionUtils.js.map