@trezor/connect
Version:
High-level javascript interface for Trezor hardware wallet.
46 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTransportList = void 0;
const transport_1 = require("@trezor/transport");
const constants_1 = require("../constants");
const tryGetTransport = (transports, name) => transports.find(t => t.name === name);
const getOrCreateTransport = (transports, transportType, params) => {
if (typeof transportType === 'string') {
const existing = tryGetTransport(transports, transportType);
if (existing)
return existing;
switch (transportType) {
case 'WebUsbTransport':
return new transport_1.WebUsbTransport(params);
case 'NodeUsbTransport':
return new transport_1.NodeUsbTransport(params);
case 'BridgeTransport':
return new transport_1.BridgeTransport(params);
case 'UdpTransport':
return new transport_1.UdpTransport(params);
}
}
else if (typeof transportType === 'function' && 'prototype' in transportType) {
const transportInstance = new transportType(params);
if ((0, transport_1.isTransportInstance)(transportInstance)) {
return tryGetTransport(transports, transportInstance.name) ?? transportInstance;
}
}
else if ((0, transport_1.isTransportInstance)(transportType)) {
if (tryGetTransport(transports, transportType.name)) {
return transportType;
}
if (!transportType.getMessage()) {
transportType.updateMessages(params.messages);
}
return transportType;
}
throw constants_1.ERRORS.TypedError('Runtime', `DeviceList.init: transports[] of unexpected type: ${transportType}`);
};
const createTransports = (existing, transports = [], params) => {
const transportTypes = transports?.length ? transports : ['BridgeTransport'];
return transportTypes.map(type => getOrCreateTransport(existing, type, params));
};
const createTransportList = (params) => (existing, transports) => createTransports(existing, transports, params);
exports.createTransportList = createTransportList;
//# sourceMappingURL=TransportList.js.map