firebase-rules-parser
Version:
Parser for Firebase rule files
76 lines • 5.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Convert string and float values into integer.
*/
const int = (context, closure, self) => {
const intWannabe = closure.getValue('value');
if (intWannabe === undefined) {
throw new Error(`int() -method did not have an argument.`);
}
switch (typeof intWannabe) {
case 'string':
const value = parseInt(intWannabe, 0);
if (value === undefined || isNaN(value)) {
throw new Error(`Can not conver ${intWannabe} to an integer value.`);
}
return value;
case 'number':
return Math.floor(intWannabe);
default:
throw new Error(`Can not convert type of: ${typeof intWannabe} to an integer.`);
}
};
/**
* Conver string and int values into float.
*/
const float = (context, closure, self) => {
const floatWannabe = closure.getValue('value');
if (floatWannabe === undefined) {
throw new Error(`float() -method did not have an argument.`);
}
switch (typeof floatWannabe) {
case 'string':
const value = parseFloat(floatWannabe);
if (value === undefined || isNaN(value)) {
throw new Error(`Can not conver ${floatWannabe} to an float value.`);
}
return value;
case 'number':
return floatWannabe;
default:
throw new Error(`Can not convert type of: ${typeof floatWannabe} to an float.`);
}
};
/**
* Conver string values to boolean
*/
const bool = (context, closure, self) => {
const booleanWannabe = closure.getValue('value');
if (booleanWannabe === undefined) {
throw new Error(`bool() -method did not have an argument.`);
}
if (typeof booleanWannabe === 'string') {
return JSON.parse(booleanWannabe);
}
throw new Error(`Can not convert type of: ${typeof booleanWannabe} to a boolean.`);
};
function registerNumberFunctions(closure) {
const numberFunctions = {
int: {
callback: int,
argNames: ['value'],
},
float: {
callback: float,
argNames: ['value'],
},
bool: {
callback: bool,
argNames: ['value'],
},
};
closure.self = Object.assign({}, closure.self, numberFunctions);
}
exports.default = registerNumberFunctions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcHJldGVyL3N5c3RlbS9udW1iZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0E7O0dBRUc7QUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQTZCLEVBQUUsT0FBOEIsRUFBRSxJQUFTLEVBQU8sRUFBRTtJQUM1RixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7S0FDNUQ7SUFDRCxRQUFRLE9BQU8sVUFBVSxFQUFFO1FBQ3pCLEtBQUssUUFBUTtZQUNYLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLFFBQVE7WUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixPQUFPLFVBQVUsaUJBQWlCLENBQUMsQ0FBQztLQUNuRjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUE2QixFQUFFLE9BQThCLEVBQUUsSUFBVSxFQUFPLEVBQUU7SUFDL0YsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0tBQzlEO0lBQ0QsUUFBUSxPQUFPLFlBQVksRUFBRTtRQUMzQixLQUFLLFFBQVE7WUFDWCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsWUFBWSxxQkFBcUIsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLFFBQVE7WUFDWCxPQUFPLFlBQVksQ0FBQztRQUV0QjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLE9BQU8sWUFBWSxlQUFlLENBQUMsQ0FBQztLQUNuRjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUE2QixFQUFFLE9BQThCLEVBQUUsSUFBVSxFQUFPLEVBQUU7SUFDOUYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0tBQzdEO0lBQ0QsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUU7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsT0FBTyxjQUFjLGdCQUFnQixDQUFDLENBQUM7QUFDckYsQ0FBQyxDQUFDO0FBRUYsU0FBd0IsdUJBQXVCLENBQUMsT0FBOEI7SUFDNUUsTUFBTSxlQUFlLEdBQXlEO1FBQzVFLEdBQUcsRUFBRTtZQUNILFFBQVEsRUFBRSxHQUFHO1lBQ2IsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQ3BCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDcEI7UUFDRCxJQUFJLEVBQUU7WUFDSixRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUNwQjtLQUNGLENBQUM7SUFFRixPQUFPLENBQUMsSUFBSSxxQkFBUSxPQUFPLENBQUMsSUFBSSxFQUFLLGVBQWUsQ0FBRSxDQUFDO0FBQ3pELENBQUM7QUFqQkQsMENBaUJDIn0=