UNPKG

firebase-rules-parser

Version:
74 lines (73 loc) 2.67 kB
import { FirebasePathAccessRights } from './FirebasePathAccessRights'; import { FirebaseRulesContext } from './FirebaseRulesContext'; import { FirestoreRulesClosure } from './FirestoreRuleClosure'; import { MockFirestoreRequest } from './MockFirestoreRequest'; import { MockFirestoreResource } from './MockFirestoreResource'; import { MatchPattern } from './utils/patternMatch'; export declare type AllowKey = 'create' | 'read' | 'write' | 'update' | 'list' | 'delete'; export interface AllowRule { pattern: MatchPattern; allowKeys: AllowKey[]; if: ExpressionCallback; } export declare type ExpressionCallback = (context: ExtendedFirebaseRulesContext, closure: FirestoreRulesClosure) => any; interface ExtendedFirebaseRulesContext extends FirebaseRulesContext { exit: boolean; hasAccess: { create?: boolean; read?: boolean; write?: boolean; update?: boolean; list?: boolean; delete?: boolean; }; path: string; } export interface FirestoreRulesFunctionDescriptor { callback: (context: FirebaseRulesContext, closure: FirestoreRulesClosure, self?: any) => any; argNames: string[]; } export declare const defaultFirebaseRulesContext: Partial<FirebaseRulesContext>; /** * Create a default firebare rule context to be used when calling rules rights. * * Function uses deep merge, so you can set needed values in sub objects like, * ```typescript * createFirebaseRulesContext({ * auth: { * uid: '123' * } * }); * ``` * This will override only the uid property and will leave other properties intact. * * @export * @param {Partial<FirebaseRulesContext>} [overrides] Values, to be overrided from default values. * @param {boolean} authenticated When true, a default mock user info is given for context. Default value is `false`. * @returns {FirebaseRulesContext} */ export declare function createFirebaseRulesContext(overrides?: Partial<FirebaseRulesContext>, authenticated?: boolean): FirebaseRulesContext; /** * Firebase Rules Intepreter testing user rights based on rules script */ export declare class FirebaseRulesIntepreter { private _parser; request: MockFirestoreRequest; resource: MockFirestoreResource; /** * Get the namespace used in rules -file * * @readonly * @memberof RulesParser */ readonly namespace: string; constructor(); init: (rulesFile: string) => FirebaseRulesIntepreter; /** * Elaborate access rights for given path within given context * * @memberof RulesParser */ hasAccess: (path: string, context: FirebaseRulesContext) => FirebasePathAccessRights; } export {};