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/*'
This commit is contained in:
Simon Warta
2019-09-05 10:46:43 -07:00
committed by Andrew Casey
parent a819fdd3bc
commit aff2133a93
2 changed files with 31 additions and 18 deletions
+20 -14
View File
@@ -10,17 +10,9 @@ declare class Transport<TDescriptor extends Descriptor = string> {
constructor();
static isSupported(): Promise<boolean>;
static list(): Promise<ReadonlyArray<Descriptor>>;
static listen(
observer: Observer<DescriptorEvent<Descriptor>>
): Subscription;
static open(
descriptor: Descriptor,
timeout?: number
): Promise<Transport<typeof descriptor>>;
static create(
openTimeout?: number,
listenTimeout?: number
): Promise<Transport<Descriptor>>;
static listen(observer: Observer<DescriptorEvent<Descriptor>>): Subscription;
static open(descriptor: Descriptor, timeout?: number): Promise<Transport<typeof descriptor>>;
static create(openTimeout?: number, listenTimeout?: number): Promise<Transport<Descriptor>>;
exchange(apdu: Buffer): Promise<Buffer>;
setScrambleKey(key: string): void;
close(): Promise<void>;
@@ -28,13 +20,27 @@ declare class Transport<TDescriptor extends Descriptor = string> {
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<number>): Promise<Buffer>;
/**
* 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<number>,
): Promise<Buffer>;
decorateAppAPIMethods(self: any, methods: string[], scrambleKey: string): void;
}
export type Device = any;
export type Descriptor = string; // ?
export interface DescriptorEvent<Descriptor> {
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;
@@ -1,18 +1,25 @@
import Transport from "@ledgerhq/hw-transport";
import Transport from '@ledgerhq/hw-transport';
// $ExpectType Promise<boolean>
Transport.isSupported();
// $ExpectType Promise<ReadonlyArray<string>>
Transport.list();
// $ExpectType Promise<Transport<string>>
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<Buffer>
transport.exchange(Buffer.from("test", "hex"));
transport.exchange(Buffer.from('test', 'hex'));
// $ExpectType Promise<Buffer>
transport.send(0, 1, 2, 3);
// $ExpectType Promise<Buffer>
transport.send(0, 1, 2, 3, Buffer.from('abcd', 'hex'));
// $ExpectType Promise<Buffer>
transport.send(0, 1, 2, 3, Buffer.from('abcd', 'hex'), [0x1111, 0x9000]);
// $ExpectType Promise<void>
transport.close();