UNPKG

@jahed/firebase-rules

Version:

A type-safe Firebase Real-time Database Security Rules builder.

32 lines (26 loc) 714 B
import type { RuleExpression, RuleObject, Serialised } from "./types.ts"; /** * A Firebase Rule object such as string, data snapshot, auth. */ export const createRuleObject = <T extends RuleObject, P extends object>( name: string, props: P, ): RuleExpression<T, string> & P => { const obj = () => name as Serialised<T>; if ("name" in props) { const n = props.name; Object.defineProperty(obj, "name", { get: () => n, }); delete props.name; } if ("length" in props) { const n = props.length; Object.defineProperty(obj, "length", { get: () => n, }); delete props.length; } Object.assign(obj, props); return obj as RuleExpression<T, string> & P; };