@swell/cli
Version:
Swell's command line interface/utility
30 lines (29 loc) • 963 B
JavaScript
import localtunnel from 'localtunnel';
import ngrok from 'ngrok';
import { LOCAL_PROXY_PROVIDER } from './constants.js';
export async function getProxyUrl(port) {
const provider = LOCAL_PROXY_PROVIDER || 'localtunnel';
try {
switch (provider) {
case 'local': {
return `http://localhost:${port}`;
}
case 'ngrok': {
return await ngrok.connect({
addr: port,
region: 'us', // TODO: make it configurable
});
}
// eslint-disable-next-line unicorn/no-useless-switch-case
case 'localtunnel':
default: {
const tunnel = await localtunnel({ port });
return tunnel.url;
}
}
}
catch (error) {
console.log(error);
throw new Error(`Unable to start tunnel on port ${port} (${provider}): ${error.message}`);
}
}