Filter 
Для определения полной логики фильтра тех или иных получаемых с api данных необходимо создать класс следующим образом:
ts
import Filter from "nuxoblivius/filter";
export default class FilterFilms extends Filter {
  protected static globalName = "FilterFilms";
  protected setup() {
    this.createFilter({
      name: this.type.string(),
      category: this.type.array(),
      rating: this.type.number(),
      hideNsfw: this.type.boolean(),
    });
    this.setDefault({
      rating: 5,
    });
    this.setPrefix("filter[", "]");
  }
}Импортируемый по умолчанию из "nuxoblivius/filter" класс Filter предоставляет следующие функции:
- createFilter ({ Object }) - функция, определяющая параметры фильтра. Здесь также нужно осуществить и типизацию параметров.
 - setDefault ({ Object }) - функция для записи значений параметров фильтра по умолчанию
 - setPrefix (start: string, end: string) - функция, позволяющая установить префикс и суффикс ко всем параметрам фильтра (чтобы не дублировать их написание много раз).
 
Данной логики достаточно для работы фильтра, если он будет работать по принципу emit-always - т.е., по сути, нужно лишь дописывать нужные query-параметры в api-запросах. Непосредственно же фильтрацию будет осуществлять backend.
В случае локальной фильтрации в классе фильтра необходимо создать функцию resolve (el: Element), по возвращаемому значению которой (true / false) и будет определяться, "отсекается" элемент, или нет. Простейший пример:
ts
export default class FilterFilmLocal extends Filter {
  protected static globalName = "FilterFilmsLocal";
  protected resolve(el: IFilmResponse) {
    return Boolean(el.nsfw == true); // Hide it
  }
}Объект state-менеджера использует класс фильтра следующим образом:
ts
public schedules = state<IFilmResponse>([])
	.api("/api/films")
	.template('my-template')
	.filter(FilterPost.ref(), 'emit-always')