From aff2133a93a7a128bd653e9be8256e24734476f6 Mon Sep 17 00:00:00 2001 From: Simon Warta <2603011+webmaster128@users.noreply.github.com> Date: Thu, 5 Sep 2019 19:46:43 +0200 Subject: [PATCH] Two updates to @ledgerhq/hw-transport (#38001) * Make data and statusList optional in Transport.send See https://github.com/LedgerHQ/ledgerjs/blob/v4.68.4/packages/hw-transport/src/Transport.js#L165-L182 * Add Transport.decorateAppAPIMethods See https://github.com/LedgerHQ/ledgerjs/blob/v4.68.4/packages/hw-transport/src/Transport.js#L274-L278 * Run prettier on 'types/ledgerhq__hw-transport/*' --- types/ledgerhq__hw-transport/index.d.ts | 34 +++++++++++-------- .../ledgerhq__hw-transport-tests.ts | 15 +++++--- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/types/ledgerhq__hw-transport/index.d.ts b/types/ledgerhq__hw-transport/index.d.ts index b62d66c5b2..d491102e72 100644 --- a/types/ledgerhq__hw-transport/index.d.ts +++ b/types/ledgerhq__hw-transport/index.d.ts @@ -10,17 +10,9 @@ declare class Transport { constructor(); static isSupported(): Promise; static list(): Promise>; - static listen( - observer: Observer> - ): Subscription; - static open( - descriptor: Descriptor, - timeout?: number - ): Promise>; - static create( - openTimeout?: number, - listenTimeout?: number - ): Promise>; + static listen(observer: Observer>): Subscription; + static open(descriptor: Descriptor, timeout?: number): Promise>; + static create(openTimeout?: number, listenTimeout?: number): Promise>; exchange(apdu: Buffer): Promise; setScrambleKey(key: string): void; close(): Promise; @@ -28,13 +20,27 @@ declare class Transport { off(eventName: string, cb: any): void; setDebugMode(debug: boolean | ((log: string) => void)): void; setExchangeTimeout(exchangeTimeout: number): void; - send(cla: number, ins: number, p1: number, p2: number, data: Buffer, statusList: ReadonlyArray): Promise; + /** + * A wrapper around exchange to simplify work of the implementation. + * @param data The data to be sent. Defaults to a zero-length Buffer. + * @param statusList A list of accepted status code (shorts). [0x9000] by default. + * @return A Promise of the response Buffer + */ + send( + cla: number, + ins: number, + p1: number, + p2: number, + data?: Buffer, + statusList?: ReadonlyArray, + ): Promise; + decorateAppAPIMethods(self: any, methods: string[], scrambleKey: string): void; } export type Device = any; export type Descriptor = string; // ? export interface DescriptorEvent { - type: "add" | "remove"; + type: 'add' | 'remove'; descriptor: Descriptor; device?: Device; } @@ -47,6 +53,6 @@ export interface Subscription { readonly unsubscribe: () => void; } export function getAltStatusMessage(code: number): string; -export const StatusCodes: {[k in string]: number}; +export const StatusCodes: { [k in string]: number }; export default Transport; diff --git a/types/ledgerhq__hw-transport/ledgerhq__hw-transport-tests.ts b/types/ledgerhq__hw-transport/ledgerhq__hw-transport-tests.ts index 0f1b289976..4b33722371 100644 --- a/types/ledgerhq__hw-transport/ledgerhq__hw-transport-tests.ts +++ b/types/ledgerhq__hw-transport/ledgerhq__hw-transport-tests.ts @@ -1,18 +1,25 @@ -import Transport from "@ledgerhq/hw-transport"; +import Transport from '@ledgerhq/hw-transport'; // $ExpectType Promise Transport.isSupported(); // $ExpectType Promise> Transport.list(); // $ExpectType Promise> -Transport.open("test"); +Transport.open('test'); -const test = Transport.open("test").then(transport => { +const test = Transport.open('test').then(transport => { // $ExpectType void transport.setScrambleKey('test'); // $ExpectType Promise - transport.exchange(Buffer.from("test", "hex")); + transport.exchange(Buffer.from('test', 'hex')); + + // $ExpectType Promise + transport.send(0, 1, 2, 3); + // $ExpectType Promise + transport.send(0, 1, 2, 3, Buffer.from('abcd', 'hex')); + // $ExpectType Promise + transport.send(0, 1, 2, 3, Buffer.from('abcd', 'hex'), [0x1111, 0x9000]); // $ExpectType Promise transport.close();