feat(filter): add filter generator