Switching to new security rules
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
30
src/rules/index.ts
Normal file
30
src/rules/index.ts
Normal 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 };
|
||||
}
|
Reference in New Issue
Block a user