MetaFor - v0.3.1
    Preparing search index...

    Type Alias ReactionFilterConditions

    Декларативные условия фильтрации реакций

    Плоская структура с расширенными возможностями для meta и patch. Позволяет фильтровать события по различным критериям.

    const conditions: ReactionFilterConditions = {
    tag: "user", // Фильтр по тегу
    op: "replace", // Фильтр по операции
    path: "/context", // Фильтр по пути
    value: { gt: 0 }, // Фильтр по значению
    index: { gte: 0 }, // Фильтр по индексу
    timestamp: { gt: Date.now() } // Фильтр по временной метке
    }
    type ReactionFilterConditions = {
        tag?: CondStringRequired;
        index?: CondNumberRequired;
        timestamp?: CondNumberRequired;
        op?: "replace" | "add" | "remove" | "test";
        path?: "/context" | "/state" | "/";
        value?: Condition<any> | ConditionOptional<any>;
    }
    Index

    Properties

    Фильтрация по тегу

    1. Прямое сравнение строки с условием
    • tag: "test" - тег должен быть равен "test"
    • tag: /test/ - тег должен соответствовать регулярному выражению /test/ (без кавычек)
    1. Сравнение с условием
    • tag: { eq: "test" } - тег должен быть равен "test"
    • tag: { pattern: /test/ } - тег должен соответствовать регулярному выражению /test/

    Условия сравнения:

    Параметр Тип Описание
    startsWith string Начинается ли с указанной строки
    endsWith string Заканчивается ли на указанную строку
    include string Включает ли указанную подстроку
    pattern RegExp Шаблон регулярного выражения
    eq string Равно указанной строке
    notEq string Не равно указанной строке
    notInclude string Не включает указанную подстроку
    notStartsWith string Не начинается с указанной строки
    notEndsWith string Не заканчивается на указанную строку
    length number | { min?: number; max?: number } Длина строки
    between [string, string] Должно быть между двумя строками
    // Простые фильтры
    tag: "user"
    tag: /^user_/

    // Сложные фильтры
    tag: {
    startsWith: "user",
    notInclude: "admin"
    }
    tag: {
    pattern: /^[a-z]+_[0-9]+$/,
    length: { min: 3, max: 20 }
    }

    Фильтрация по индексу

    1. Прямое сравнение числа с условием
    • index: 5 - индекс должен быть равен 5
    1. Сравнение с условием
    • index: { eq: 5 } - индекс должен быть равен 5
    • index: { gt: 3 } - индекс должен быть больше 3

    Условия сравнения:

    Параметр Тип Описание
    eq number Равно указанному числу
    notEq number Не равно указанному числу
    gt number Больше указанного числа
    gte number Больше или равно указанному числу
    lt number Меньше указанного числа
    lte number Меньше или равно указанному числу
    notGt number Не больше указанного числа
    notGte number Не больше или равно указанному числу
    notLt number Не меньше указанного числа
    notLte number Не меньше или равно указанному числу
    between [number, number] Должно быть между двумя числами
    // Простые фильтры
    index: 0
    index: { gt: 10 }

    // Сложные фильтры
    index: {
    gte: 0,
    lte: 100
    }
    index: {
    between: [1, 10],
    notEq: 5
    }
    timestamp?: CondNumberRequired

    Фильтрация по временной метке

    1. Прямое сравнение числа с условием
    • timestamp: 1640995200000 - временная метка должна быть равна 1640995200000
    1. Сравнение с условием
    • timestamp: { eq: 1640995200000 } - временная метка должна быть равна 1640995200000
    • timestamp: { gt: 1640995200000 } - временная метка должна быть больше 1640995200000

    Условия сравнения:

    Параметр Тип Описание
    eq number Равно указанному числу
    notEq number Не равно указанному числу
    gt number Больше указанного числа
    gte number Больше или равно указанному числу
    lt number Меньше указанного числа
    lte number Меньше или равно указанному числу
    notGt number Не больше указанного числа
    notGte number Не больше или равно указанному числу
    notLt number Не меньше указанного числа
    notLte number Не меньше или равно указанному числу
    between [number, number] Должно быть между двумя числами
    // Фильтры по времени
    timestamp: { gt: Date.now() - 60000 } // Последняя минута
    timestamp: {
    gte: Date.now() - 3600000, // Последний час
    lte: Date.now()
    }
    op?: "replace" | "add" | "remove" | "test"

    Фильтрация по операции патча

    Доступные операции:

    Операция Описание
    replace Замена значения по указанному пути
    add Добавление нового значения по пути
    remove Удаление значения по указанному пути
    test Проверка значения по указанному пути

    Примеры использования:

    • op: "replace" - операция должна быть replace
    • op: "add" - операция должна быть add
    // Фильтры по операции
    op: "replace" // Только замены
    op: "add" // Только добавления
    op: "remove" // Только удаления
    path?: "/context" | "/state" | "/"

    Фильтрация по пути патча

    Доступные пути:

    Путь Описание
    /context Путь к контексту актора
    /state Путь к состоянию актора
    / Корневой путь (полный объект актора)

    Примеры использования:

    • path: "/context" - путь должен быть /context
    • path: "/state" - путь должен быть /state
    // Фильтры по пути
    path: "/context" // Только изменения контекста
    path: "/state" // Только изменения состояния
    path: "/" // Любые изменения
    value?: Condition<any> | ConditionOptional<any>

    Фильтрация по значению патча

    Поддерживает все типы значений с расширенными условиями сравнения.

    1. Прямое сравнение
    • value: "active" - значение должно быть равно "active"
    • value: /test/ - значение должно соответствовать регулярному выражению
    1. Расширенные условия
    Параметр Тип Описание
    eq string Равно указанной строке
    notEq string Не равно указанной строке
    startsWith string Начинается ли с указанной строки
    endsWith string Заканчивается ли на указанную строку
    include string Включает ли указанную подстроку
    notInclude string Не включает указанную подстроку
    notStartsWith string Не начинается с указанной строки
    notEndsWith string Не заканчивается на указанную строку
    pattern RegExp Шаблон регулярного выражения
    length number | { min?: number; max?: number } Длина строки
    between [string, string] Должно быть между двумя строками
    1. Прямое сравнение
    • value: 42 - значение должно быть равно 42
    1. Расширенные условия
    Параметр Тип Описание
    eq number Равно указанному числу
    notEq number Не равно указанному числу
    gt number Больше указанного числа
    gte number Больше или равно указанному числу
    lt number Меньше указанного числа
    lte number Меньше или равно указанному числу
    notGt number Не больше указанного числа
    notGte number Не больше или равно указанному числу
    notLt number Не меньше указанного числа
    notLte number Не меньше или равно указанному числу
    between [number, number] Должно быть между двумя числами
    1. Прямое сравнение
    • value: true - значение должно быть true
    1. Расширенные условия
    Параметр Тип Описание
    eq boolean Равно указанному булеву значению
    notEq boolean Не равно указанному булеву значению
    logicalEq boolean Логическое равенство
    1. Прямое сравнение
    • value: [1, 2, 3] - массив должен быть равен [1, 2, 3]
    1. Расширенные условия
    Параметр Тип Описание
    length number | { min?: number; max?: number } Длина массива
    includes any Содержит ли массив указанный элемент
    notIncludes any Не содержит ли массив указанный элемент
    every { gt?: number; gte?: number; lt?: number; lte?: number; eq?: number; include?: string } Все элементы удовлетворяют условию
    some { gt?: number; gte?: number; lt?: number; lte?: number; eq?: number; include?: string } Хотя бы один элемент удовлетворяет условию
    isEmpty boolean Является ли массив пустым
    Параметр Тип Описание
    null boolean Является ли значение null
    • value: { name: "test" } - объект должен быть равен { name: "test" }

    Можно комбинировать с другими фильтрами:

    filter({
    value: { gt: 10, lt: 100 },
    op: "replace",
    path: "/context"
    })
    // Простые фильтры
    value: "active"
    value: 42
    value: true
    value: [1, 2, 3]

    // Сложные фильтры
    value: {
    gt: 0,
    lt: 100
    }
    value: {
    startsWith: "user",
    length: { min: 3 }
    }
    value: {
    includes: "admin",
    length: { min: 1 }
    }