trpc-browser
Version:
tRPC adapters and links for everywhere in the browser
36 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.autoReconnect = exports.autoConnect = void 0;
const retry_1 = require("./retry");
/**
* Creates a port and recreates a new port if the old one disconnects
*
* @param createPort - function to create a port
* @param onConnect - callback when connected
*/
async function autoConnect(createPort, onConnect) {
const port = await (0, retry_1.retry)(createPort, 3, // 3 retries plus the initial try, so 4 total tries
(retry) => (0, retry_1.wait)(retry * 100));
console.log('Port connected');
const cleanUp = onConnect(port);
port.onDisconnect.addListener(() => {
cleanUp === null || cleanUp === void 0 ? void 0 : cleanUp();
console.log('Port disconnected, reconnecting...');
void autoConnect(createPort, onConnect);
});
}
exports.autoConnect = autoConnect;
/**
* Reconnects a port if it disconnects
* @param port - port to reconnect
* @param createPort - function to create a port
* @param onConnect - callback when connected
*/
function autoReconnect(port, createPort, onReconnect) {
port.onDisconnect.addListener(() => {
console.log('Port disconnected, reconnecting...');
void autoConnect(createPort, onReconnect);
});
}
exports.autoReconnect = autoReconnect;
//# sourceMappingURL=chrome.js.map