UNPKG

@forestadmin/datasource-toolkit

Version:
135 lines 10.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const base_1 = __importDefault(require("./base")); const operators_1 = require("./operators"); const collection_1 = __importDefault(require("../../../../utils/collection")); const record_1 = __importDefault(require("../../../../utils/record")); const projection_1 = __importDefault(require("../../projection")); const equivalence_1 = __importDefault(require("../equivalence")); const factory_1 = __importDefault(require("../factory")); class ConditionTreeLeaf extends base_1.default { get projection() { return new projection_1.default(this.field); } get useIntervalOperator() { return operators_1.intervalOperators.includes(this.operator); } constructor(field, operator, value) { super(); this.field = field; this.operator = operator; this.value = value; } forEachLeaf(handler) { handler(this); } everyLeaf(handler) { return handler(this); } someLeaf(handler) { return handler(this); } inverse() { if (operators_1.allOperators.includes(`Not${this.operator}`)) { return this.override({ operator: `Not${this.operator}` }); } if (this.operator.startsWith('Not')) { return this.override({ operator: this.operator.substring(3) }); } switch (this.operator) { case 'Blank': return this.override({ operator: 'Present' }); case 'Present': return this.override({ operator: 'Blank' }); default: throw new Error(`Operator '${this.operator}' cannot be inverted.`); } } replaceLeafs(handler, bind) { const result = handler.call(bind, this); return result instanceof base_1.default ? result : factory_1.default.fromPlainObject(result); } async replaceLeafsAsync(handler, bind) { const result = await handler.call(bind, this); return result instanceof base_1.default ? result : factory_1.default.fromPlainObject(result); } match(record, collection, timezone) { const fieldValue = record_1.default.getFieldValue(record, this.field); const { columnType } = collection_1.default.getFieldSchema(collection, this.field); const supported = [ ...[ 'In', 'Equal', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'Match', 'StartsWith', 'EndsWith', ], ...[ 'LongerThan', 'ShorterThan', 'IncludesAll', 'IncludesNone', 'NotIn', 'NotEqual', 'NotContains', ], ]; switch (this.operator) { case 'In': return this.value?.includes(fieldValue); case 'Equal': return fieldValue == this.value; // eslint-disable-line eqeqeq case 'LessThan': return fieldValue < this.value; case 'GreaterThan': return fieldValue > this.value; case 'LessThanOrEqual': return fieldValue <= this.value; case 'GreaterThanOrEqual': return fieldValue >= this.value; case 'Match': return typeof fieldValue === 'string' && this.value.test(fieldValue); case 'StartsWith': return typeof fieldValue === 'string' && fieldValue.startsWith(this.value); case 'EndsWith': return typeof fieldValue === 'string' && fieldValue.endsWith(this.value); case 'LongerThan': return typeof fieldValue === 'string' ? fieldValue.length > this.value : false; case 'ShorterThan': return typeof fieldValue === 'string' ? fieldValue.length < this.value : false; case 'IncludesAll': return !!this.value?.every(v => fieldValue?.includes(v)); case 'IncludesNone': return !this.value?.some(v => fieldValue?.includes(v)); case 'NotIn': case 'NotEqual': case 'NotContains': case 'NotIContains': return !this.inverse().match(record, collection, timezone); default: return equivalence_1.default.getEquivalentTree(this, new Set(supported), columnType, timezone).match(record, collection, timezone); } } override(params) { return factory_1.default.fromPlainObject({ ...this, ...params }); } unnest() { return super.unnest(); } toPlainObject() { return { field: this.field, operator: this.operator, value: this.value, }; } } exports.default = ConditionTreeLeaf; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcmZhY2VzL3F1ZXJ5L2NvbmRpdGlvbi10cmVlL25vZGVzL2xlYWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMkQ7QUFDM0QsMkNBQXdFO0FBQ3hFLDhFQUEyRDtBQUMzRCxzRUFBbUQ7QUFJbkQsa0VBQTBDO0FBQzFDLGlFQUFxRDtBQUNyRCx5REFBOEM7QUFVOUMsTUFBcUIsaUJBQWtCLFNBQVEsY0FBYTtJQUsxRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksb0JBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sNkJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUE4QyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELFlBQVksS0FBYSxFQUFFLFFBQWtCLEVBQUUsS0FBZTtRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBcUI7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFtQjtRQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksd0JBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFjLENBQUMsRUFBRTtZQUM1RCxPQUFP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