UNPKG

firebase-rules-parser

Version:
116 lines 8.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Determine whether the list contains all elements in another list. */ const hasAll = (context, closure, self) => { if (self === undefined) { throw new Error(`hasAll() -member function did not found refering object.`); } const list = closure.self.list; if (!list) { throw new Error(`hasAll() -member function did get an list argument.`); } if (!Array.isArray(list)) { throw new Error(`hasAll() -member function expects list argument to be an array, but got an ${typeof list}.`); } if (Array.isArray(self)) { for (const element of self) { if (!list.includes(element)) { return false; } } return true; } throw new Error(`hasAll() can only be called for an array, Found type : ${typeof self} .`); }; /** * Determine whether the list contains any element in another list. */ const hasAny = (context, closure, self) => { if (self === undefined) { throw new Error(`hasAny() -member function did not found refering object.`); } const list = closure.self.list; if (!list) { throw new Error(`hasAny() -member function did get an list argument.`); } if (!Array.isArray(list)) { throw new Error(`hasAny() -member function expects list argument to be an array, but got an ${typeof list}.`); } if (Array.isArray(self)) { for (const element of self) { if (list.includes(element)) { return true; } } return false; } throw new Error(`hasAny() can only be called for an array, Found type : ${typeof self} .`); }; /** * Determine whether all elements in the list are present in another list. */ const hasOnly = (context, closure, self) => { if (self === undefined) { throw new Error(`hasOnly() -member function did not found refering object.`); } const list = closure.self.list; if (!list) { throw new Error(`hasOnly() -member function did get an list argument.`); } if (!Array.isArray(list)) { throw new Error(`hasOnly() -member function expects list argument to be an array, but got an ${typeof list}.`); } if (Array.isArray(self)) { for (const element of self) { if (!list.includes(element)) { return false; } } return true; } throw new Error(`hasOnly() can only be called for an array, Found type : ${typeof self} .`); }; /** * Join the elements in the list into a string, with a separator. */ const join = (context, closure, self) => { if (self === undefined) { throw new Error(`join() -member function did not found refering object.`); } const separator = closure.self.separator; if (!separator) { throw new Error(`join() -member function did get an separator argument.`); } if (typeof separator !== 'string') { throw new Error(`join() -member function expects separator argument to be a string, but got an ${typeof separator}.`); } if (Array.isArray(self)) { return self.reduce((tail, value) => (tail ? tail + ',' + value : value), ''); } throw new Error(`join() can only be called for an array, Found type : ${typeof self} .`); }; function registerListFunctions(closure) { const mapFunctions = { hasAll: { callback: hasAll, argNames: ['list'], }, hasAny: { callback: hasAny, argNames: ['list'], }, hasOnly: { callback: hasOnly, argNames: ['list'], }, join: { callback: join, argNames: ['separator'], }, }; closure.self = Object.assign({}, closure.self, mapFunctions); } exports.default = registerListFunctions; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXByZXRlci9zeXN0ZW0vbGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7R0FFRztBQUNILE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBNkIsRUFBRSxPQUE4QixFQUFFLElBQVMsRUFBTyxFQUFFO0lBQy9GLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7S0FDN0U7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0tBQ3hFO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQy9HO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQzdGLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUE2QixFQUFFLE9BQThCLEVBQUUsSUFBVSxFQUFPLEVBQUU7SUFDaEcsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxL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