UNPKG

tunnelmole

Version:

Tunnelmole, an open source ngrok alternative. Instant public URLs for any http/https based application. Available as a command line application or as an NPM dependency for your code. Stable and maintained. Good test coverage. Works behind firewalls

37 lines 1.62 kB
import { initialiseClientId } from './identity/client-id-service.js'; import { initStorage } from './node-persist/storage.js'; import { eventHandler, URL_ASSIGNED } from './events/event-handler.js'; import { setUpAutoReconnect } from './websocket/setup-auto-reconnect.js'; import { connect } from './websocket/connect.js'; import { setIsCli } from './websocket/connection-info-service.js'; import detectPort from 'detect-port'; import chalk from 'chalk'; export default async function tunnelmole(options, isCli = false) { await initStorage(); await initialiseClientId(); setIsCli(isCli); const { port } = options; // Set port to 3000 if port is not specified if (port === undefined) { options.port = 3000; } if (options.setApiKey) { return "We are simply setting the API key here. No need to set up a tunnel"; } const availablePort = await detectPort(options.port); if (availablePort == options.port) { console.warn(` ${chalk.yellow.bold(`You currently don't have anything running on port ${port}`)}. Please start your service on port ${chalk.bold(port)} so that requests can reach your service. You may have also chosen the wrong port, in which case, find out what port your service is actually running on. `); } const websocket = await connect(options); // Set up auto reconnect setUpAutoReconnect(options, websocket); // Return the URL as soon as its assigned return new Promise((resolve) => { eventHandler.on(URL_ASSIGNED, (url) => { resolve(url); }); }); } //# sourceMappingURL=tunnelmole.js.map