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.
 
 
 
 
 

79 lines
2.7 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRulesConfig = exports.normalizeRulesConfig = void 0;
const error_1 = require("../error");
const logger_1 = require("../logger");
const utils = require("../utils");
function normalizeRulesConfig(rulesConfig, options) {
const config = options.config;
return rulesConfig.map((rc) => {
return {
instance: rc.instance,
rules: config.path(rc.rules),
};
});
}
exports.normalizeRulesConfig = normalizeRulesConfig;
function getRulesConfig(projectId, options) {
const dbConfig = options.config.src.database;
if (dbConfig === undefined) {
return [];
}
const rc = options.rc;
let allDatabases = !options.only;
const onlyDatabases = new Set();
if (options.only) {
const split = options.only.split(",");
if (split.includes("database")) {
allDatabases = true;
}
else {
for (const value of split) {
if (value.startsWith("database:")) {
const target = value.split(":")[1];
onlyDatabases.add(target);
}
}
}
}
if (!Array.isArray(dbConfig)) {
if (dbConfig && dbConfig.rules) {
utils.assertIsStringOrUndefined(options.instance);
const instance = options.instance || `${options.project}-default-rtdb`;
return [{ rules: dbConfig.rules, instance }];
}
else {
logger_1.logger.debug("Possibly invalid database config: ", JSON.stringify(dbConfig));
return [];
}
}
const results = [];
for (const c of dbConfig) {
const { instance, target } = c;
if (target) {
if (allDatabases || onlyDatabases.has(target)) {
rc.requireTarget(projectId, "database", target);
const instances = rc.target(projectId, "database", target);
for (const i of instances) {
results.push({ instance: i, rules: c.rules });
}
onlyDatabases.delete(target);
}
}
else if (instance) {
if (allDatabases) {
results.push(c);
}
}
else {
throw new error_1.FirebaseError('Must supply either "target" or "instance" in database config');
}
}
if (!allDatabases && onlyDatabases.size !== 0) {
throw new error_1.FirebaseError(`Could not find configurations in firebase.json for the following database targets: ${[
...onlyDatabases,
].join(", ")}`);
}
return results;
}
exports.getRulesConfig = getRulesConfig;