GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

141 lines
4.8 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateDotenvFilename = exports.toDotenvFormat = exports.hydrateEnvs = exports.configToEnv = exports.convertKey = exports.hydrateConfigs = exports.getProjectInfos = void 0;
const clc = require("colorette");
const env = require("./env");
const functionsConfig = require("../functionsConfig");
const error_1 = require("../error");
const logger_1 = require("../logger");
const projectUtils_1 = require("../projectUtils");
const rc_1 = require("../rc");
const utils_1 = require("../utils");
const functional_1 = require("../functional");
function getProjectInfos(options) {
const result = {};
const rc = (0, rc_1.loadRC)(options);
if (rc.projects) {
for (const [alias, projectId] of Object.entries(rc.projects)) {
if (Object.keys(result).includes(projectId)) {
(0, utils_1.logWarning)(`Multiple aliases found for ${clc.bold(projectId)}. ` +
`Preferring alias (${clc.bold(result[projectId])}) over (${clc.bold(alias)}).`);
continue;
}
result[projectId] = alias;
}
}
const projectId = (0, projectUtils_1.getProjectId)(options);
if (projectId && !Object.keys(result).includes(projectId)) {
result[projectId] = projectId;
}
return Object.entries(result).map(([k, v]) => {
const result = { projectId: k };
if (k !== v) {
result.alias = v;
}
return result;
});
}
exports.getProjectInfos = getProjectInfos;
async function hydrateConfigs(pInfos) {
const hydrate = pInfos.map((info) => {
return functionsConfig
.materializeAll(info.projectId)
.then((config) => {
info.config = config;
return;
})
.catch((err) => {
logger_1.logger.debug(`Failed to fetch runtime config for project ${info.projectId}: ${err.message}`);
});
});
await Promise.all(hydrate);
}
exports.hydrateConfigs = hydrateConfigs;
function convertKey(configKey, prefix) {
const baseKey = configKey
.toUpperCase()
.replace(/\./g, "_")
.replace(/-/g, "_");
let envKey = baseKey;
try {
env.validateKey(envKey);
}
catch (err) {
if (err instanceof env.KeyValidationError) {
envKey = prefix + envKey;
env.validateKey(envKey);
}
}
return envKey;
}
exports.convertKey = convertKey;
function configToEnv(configs, prefix) {
const success = [];
const errors = [];
for (const [configKey, value] of (0, functional_1.flatten)(configs)) {
try {
const envKey = convertKey(configKey, prefix);
success.push({ origKey: configKey, newKey: envKey, value: value });
}
catch (err) {
if (err instanceof env.KeyValidationError) {
errors.push({
origKey: configKey,
newKey: err.key,
err: err.message,
value: value,
});
}
else {
throw new error_1.FirebaseError("Unexpected error while converting config", {
exit: 2,
original: err,
});
}
}
}
return { success, errors };
}
exports.configToEnv = configToEnv;
function hydrateEnvs(pInfos, prefix) {
let errMsg = "";
for (const pInfo of pInfos) {
const { success, errors } = configToEnv(pInfo.config, prefix);
if (errors.length > 0) {
const msg = `${pInfo.projectId} ` +
`${pInfo.alias ? "(" + pInfo.alias + ")" : ""}:\n` +
errors.map((err) => `\t${err.origKey} => ${clc.bold(err.newKey)} (${err.err})`).join("\n") +
"\n";
errMsg += msg;
}
else {
pInfo.envs = success;
}
}
return errMsg;
}
exports.hydrateEnvs = hydrateEnvs;
const CHARACTERS_TO_ESCAPE_SEQUENCES = {
"\n": "\\n",
"\r": "\\r",
"\t": "\\t",
"\v": "\\v",
"\\": "\\\\",
'"': '\\"',
"'": "\\'",
};
function escape(s) {
return s.replace(/[\n\r\t\v\\"']/g, (ch) => CHARACTERS_TO_ESCAPE_SEQUENCES[ch]);
}
function toDotenvFormat(envs, header = "") {
const lines = envs.map(({ newKey, value }) => `${newKey}="${escape(value)}"`);
const maxLineLen = Math.max(...lines.map((l) => l.length));
return (`${header}\n` +
lines.map((line, idx) => `${line.padEnd(maxLineLen)} # from ${envs[idx].origKey}`).join("\n"));
}
exports.toDotenvFormat = toDotenvFormat;
function generateDotenvFilename(pInfo) {
var _a;
return `.env.${(_a = pInfo.alias) !== null && _a !== void 0 ? _a : pInfo.projectId}`;
}
exports.generateDotenvFilename = generateDotenvFilename;