trezor-link
Version:
Trezor Link for browser
35 lines (26 loc) • 1.01 kB
Flow
/* @flow */
;
// This is a simple class that represents information about messages,
// as they are loaded from the protobuf definition,
// so they are understood by both sending and recieving code.
import * as ProtoBuf from "protobufjs-old-fixed-webpack";
type MessageArray<KeyType> = { [key: KeyType]: ProtoBuf.Bulder.Message };
export class Messages {
messagesByName: MessageArray<string>;
messagesByType: MessageArray<number>;
messageTypes: { [key: string]: number };
constructor(messages: MessageArray<string>) {
this.messagesByName = messages;
const messagesByType: MessageArray<number> = {};
Object.keys(messages.MessageType).forEach(longName => {
const typeId = messages.MessageType[longName];
const shortName = longName.split(`_`)[1];
messagesByType[typeId] = {
name: shortName,
constructor: messages[shortName],
};
});
this.messagesByType = messagesByType;
this.messageTypes = messages.MessageType;
}
}