forked from dienianindya/gsi_ess_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.
54 lines
1.9 KiB
54 lines
1.9 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.prepare = void 0;
|
|
const clc = require("colorette");
|
|
const path = require("path");
|
|
const error_1 = require("../../error");
|
|
const parseBoltRules_1 = require("../../parseBoltRules");
|
|
const rtdb = require("../../rtdb");
|
|
const utils = require("../../utils");
|
|
const dbRulesConfig = require("../../database/rulesConfig");
|
|
function prepare(context, options) {
|
|
const rulesConfig = dbRulesConfig.getRulesConfig(context.projectId, options);
|
|
const next = Promise.resolve();
|
|
if (!rulesConfig || rulesConfig.length === 0) {
|
|
return next;
|
|
}
|
|
const ruleFiles = {};
|
|
const deploys = [];
|
|
rulesConfig.forEach((ruleConfig) => {
|
|
if (!ruleConfig.rules) {
|
|
return;
|
|
}
|
|
ruleFiles[ruleConfig.rules] = null;
|
|
deploys.push(ruleConfig);
|
|
});
|
|
for (const file of Object.keys(ruleFiles)) {
|
|
switch (path.extname(file)) {
|
|
case ".json":
|
|
ruleFiles[file] = options.config.readProjectFile(file);
|
|
break;
|
|
case ".bolt":
|
|
ruleFiles[file] = (0, parseBoltRules_1.parseBoltRules)(file);
|
|
break;
|
|
default:
|
|
throw new error_1.FirebaseError("Unexpected rules format " + path.extname(file));
|
|
}
|
|
}
|
|
context.database = {
|
|
deploys: deploys,
|
|
ruleFiles: ruleFiles,
|
|
};
|
|
utils.logBullet(clc.bold(clc.cyan("database: ")) + "checking rules syntax...");
|
|
return Promise.all(deploys.map((deploy) => {
|
|
return rtdb
|
|
.updateRules(context.projectId, deploy.instance, ruleFiles[deploy.rules], { dryRun: true })
|
|
.then(() => {
|
|
utils.logSuccess(clc.bold(clc.green("database: ")) +
|
|
"rules syntax for database " +
|
|
clc.bold(deploy.instance) +
|
|
" is valid");
|
|
});
|
|
}));
|
|
}
|
|
exports.prepare = prepare;
|