Switching to new security rules
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Fabian Stamm
2020-10-28 01:00:39 +01:00
parent b3465ea96d
commit 22cb90b6f6
18 changed files with 1094 additions and 301 deletions

30
src/rules/index.ts Normal file
View File

@ -0,0 +1,30 @@
import { RuleError, transformError } from "./error";
import parse, { ParserError } from "./parser";
import tokenize, { TokenizerError } from "./tokenise";
import { getRuleRunner, RuleRunner } from "./compile";
import { inspect } from "util";
export default function compileRule(rule: string) {
let runner: RuleRunner | undefined;
let error: RuleError | undefined;
try {
const tokenised = tokenize(rule);
// console.log(tokenised);
const parsed = parse(tokenised);
const dbservice = parsed.find((e) => e.name === "realtimedb");
if (!dbservice) throw new Error("No realtimedb service available!");
runner = getRuleRunner(dbservice);
} catch (err) {
if (err instanceof TokenizerError) {
error = transformError(err, rule, err.index);
} else if (err instanceof ParserError) {
error = transformError(err, rule, err.token.startIdx);
} else {
throw err;
}
}
return { runner, error };
}