firebase-tools
Version:
Command-Line Interface for Firebase
88 lines (87 loc) • 3.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.maybeUsePortForwarding = exports.getCredentialsEnvironment = exports.setEnvVarsForEmulators = void 0;
const constants_1 = require("./constants");
const types_1 = require("./types");
const functionsEmulatorShared_1 = require("./functionsEmulatorShared");
const defaultCredentials_1 = require("../defaultCredentials");
function setEnvVarsForEmulators(env, emulators) {
for (const emu of emulators) {
const host = (0, functionsEmulatorShared_1.formatHost)(emu);
switch (emu.name) {
case types_1.Emulators.FIRESTORE:
env[constants_1.Constants.FIRESTORE_EMULATOR_HOST] = host;
env[constants_1.Constants.FIRESTORE_EMULATOR_ENV_ALT] = host;
break;
case types_1.Emulators.DATABASE:
env[constants_1.Constants.FIREBASE_DATABASE_EMULATOR_HOST] = host;
break;
case types_1.Emulators.STORAGE:
env[constants_1.Constants.FIREBASE_STORAGE_EMULATOR_HOST] = host;
env[constants_1.Constants.CLOUD_STORAGE_EMULATOR_HOST] = `http://${host}`;
break;
case types_1.Emulators.AUTH:
env[constants_1.Constants.FIREBASE_AUTH_EMULATOR_HOST] = host;
break;
case types_1.Emulators.HUB:
env[constants_1.Constants.FIREBASE_EMULATOR_HUB] = host;
break;
case types_1.Emulators.PUBSUB:
env[constants_1.Constants.PUBSUB_EMULATOR_HOST] = host;
break;
case types_1.Emulators.EVENTARC:
env[constants_1.Constants.CLOUD_EVENTARC_EMULATOR_HOST] = `http://${host}`;
break;
case types_1.Emulators.TASKS:
env[constants_1.Constants.CLOUD_TASKS_EMULATOR_HOST] = host;
break;
case types_1.Emulators.DATACONNECT:
env[constants_1.Constants.FIREBASE_DATACONNECT_EMULATOR_HOST] = `http://${host}`;
env[constants_1.Constants.FIREBASE_DATACONNECT_ENV_ALT] = host;
env["FIREBASE_DATACONNECT_EMULATOR_HOST"] = host;
}
}
}
exports.setEnvVarsForEmulators = setEnvVarsForEmulators;
async function getCredentialsEnvironment(account, logger, logLabel, silent = false) {
const credentialEnv = {};
if (await (0, defaultCredentials_1.hasDefaultCredentials)()) {
!silent &&
logger.logLabeled("WARN", logLabel, `Application Default Credentials detected. Non-emulated services will access production using these credentials. Be careful!`);
}
else if (account) {
const defaultCredPath = await (0, defaultCredentials_1.getCredentialPathAsync)(account);
if (defaultCredPath) {
logger.log("DEBUG", `Setting GAC to ${defaultCredPath}`);
credentialEnv.GOOGLE_APPLICATION_CREDENTIALS = defaultCredPath;
}
}
return credentialEnv;
}
exports.getCredentialsEnvironment = getCredentialsEnvironment;
function maybeUsePortForwarding(i) {
var _a;
const portForwardingHost = process.env.WEB_HOST;
if (portForwardingHost) {
const info = Object.assign({}, i);
if (info.host.includes(portForwardingHost)) {
return info;
}
const url = `${info.port}-${portForwardingHost}`;
info.host = url;
info.listen = (_a = info.listen) === null || _a === void 0 ? void 0 : _a.map((l) => {
l.address = url;
l.port = 443;
return l;
});
info.port = 443;
const fsInfo = info;
if (fsInfo.webSocketPort) {
fsInfo.webSocketHost = `${fsInfo.webSocketPort}-${portForwardingHost}`;
fsInfo.webSocketPort = 443;
}
return info;
}
return i;
}
exports.maybeUsePortForwarding = maybeUsePortForwarding;
;