UNPKG

@dexpenses/rule-conditions

Version:

Condition engine and parser for Dexpenses rules

56 lines 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const AndCondition_1 = require("./condition/bool/AndCondition"); const OrCondition_1 = require("./condition/bool/OrCondition"); const NotCondition_1 = require("./condition/bool/NotCondition"); const HeaderCondition_1 = require("./condition/HeaderCondition"); const AmountCondition_1 = require("./condition/AmountCondition"); const CurrencyCondition_1 = require("./condition/CurrencyCondition"); const DateCondition_1 = require("./condition/DateCondition"); const TimeCondition_1 = require("./condition/TimeCondition"); const PaymentMethodCondition_1 = require("./condition/PaymentMethodCondition"); const core_1 = require("@dexpenses/core"); const PlaceTypeCondition_1 = require("./condition/PlaceTypeCondition"); const PlaceTypeCategoryCondition_1 = require("./condition/PlaceTypeCategoryCondition"); function parseCondition(json) { const entries = Object.entries(json); if (entries.length === 0) { throw new Error('Expected condition but got {}'); } if (entries.length > 1) { throw new Error('Condition can only have a single entry'); } const [key, value] = entries[0]; switch (key) { case '$and': return new AndCondition_1.default(value.map(parseCondition)); case '$or': return new OrCondition_1.default(value.map(parseCondition)); case '$not': return new NotCondition_1.default(parseCondition(value)); case 'header': const [searchString, caseSensitive] = value; return new HeaderCondition_1.default(searchString, caseSensitive); case 'amount': const [aop, n] = value; return new AmountCondition_1.default(aop, n); case 'currency': return new CurrencyCondition_1.default(value); case 'paymentMethod': return new PaymentMethodCondition_1.default(value); case 'date': const [dateField, dop, dn] = value; return new DateCondition_1.default(dateField, dop, dn); case 'time': const [type, tn] = value; return new TimeCondition_1.default(core_1.Time.parse(tn), type); case 'placeType': return new PlaceTypeCondition_1.default(value); case 'placeTypeCategory': return new PlaceTypeCategoryCondition_1.default(value); default: throw new Error('unknown key: ' + key); } } exports.parseCondition = parseCondition; //# sourceMappingURL=parse.js.map