firebase-tools
Version:
Command-Line Interface for Firebase
50 lines (49 loc) • 1.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataConnectToolkitController = void 0;
const types_1 = require("./types");
const error_1 = require("../error");
const portUtils = require("./portUtils");
const utils_1 = require("../utils");
const dataconnectEmulator_1 = require("./dataconnectEmulator");
const downloadableEmulators_1 = require("./downloadableEmulators");
const name = "Data Connect Toolkit";
class DataConnectToolkitController {
static async start(args) {
if (this.isRunning || this.instance) {
throw new error_1.FirebaseError(`${name} is already running!`, {});
}
this.instance = new dataconnectEmulator_1.DataConnectEmulator(args);
this.isRunning = true;
await this.instance.start();
const info = this.instance.getInfo();
await portUtils.waitForPortUsed(info.port, (0, utils_1.connectableHostname)(info.host), info.timeout);
}
static async stop() {
if (!this.isRunning) {
return;
}
try {
await this.instance.stop();
this.isRunning = false;
}
catch (e) {
throw new error_1.FirebaseError(`Data Connect Toolkit failed to stop with error: ${e}`);
}
}
static getVersion() {
return (0, downloadableEmulators_1.getDownloadDetails)(types_1.Emulators.DATACONNECT).version;
}
static getInfo() {
return this.instance.getInfo();
}
static getUrl() {
const info = this.instance.getInfo();
if (info.host.includes(":")) {
return `http://[${info.host}]:${info.port}`;
}
return `http://${info.host}:${info.port}`;
}
}
exports.DataConnectToolkitController = DataConnectToolkitController;
DataConnectToolkitController.isRunning = false;
;