Core types and utilities for filter-def
npm install @filter-def/coreCore types and utilities for the filter-def ecosystem.
This package provides the shared type definitions and utilities used by filter-def adapters (@filter-def/in-memory, @filter-def/drizzle, etc.). It is a types-only package with no runtime code.
``bash`
pnpm add @filter-def/core
> Note: Most users should install an adapter package (@filter-def/in-memory, @filter-def/drizzle, or @filter-def/bigquery) which re-exports core types automatically.
`typescript
import type {
CoreFilterKind,
PrimitiveFilterKind,
BooleanFilterKind,
} from "@filter-def/core";
// PrimitiveFilterKind = "eq" | "neq" | "contains" | "inArray" | "isNull" | "isNotNull" | "gt" | "gte" | "lt" | "lte"
// BooleanFilterKind = "and" | "or"
// CoreFilterKind = PrimitiveFilterKind | BooleanFilterKind
`
`typescript
import type {
CoreFilter,
PrimitiveFilter,
BooleanFilter,
} from "@filter-def/core";
// CoreFilter
// PrimitiveFilter
// BooleanFilter
`
`typescript`
import type {
EqFilter,
NeqFilter,
ContainsFilter,
InArrayFilter,
IsNullFilter,
IsNotNullFilter,
GTFilter,
GTEFilter,
LTFilter,
LTEFilter,
} from "@filter-def/core";
`typescript`
import type { AndFilter, OrFilter } from "@filter-def/core";
`typescript
import type { CoreFilterInput } from "@filter-def/core";
// CoreFilterInput
`
`typescript
import type { ValidateFilterDef } from "@filter-def/core";
// ValidateFilterDef
`
For adapter authors building custom filter-def backends:
`typescript
import type { GetFieldForFilter, Simplify, TypeError } from "@filter-def/core";
// GetFieldForFilter
// Simplify
// TypeError
`
If you're building a custom adapter for filter-def, import core types from this package and define adapter-specific types for filter definitions, custom filters, and input types:
`typescript
import type {
CoreFilter,
CoreFilterInput,
PrimitiveFilter,
BooleanFilter,
Simplify,
ValidateFilterDef,
} from "@filter-def/core";
// Define your adapter's custom filter type
type MyCustomFilter = (input: Input) => MyOutput;
// Define your adapter's filter field (core filters + custom)
type MyFilterField
| PrimitiveFilter
| BooleanFilter
| MyCustomFilter
// Define your adapter's filter definition
type MyFilterDef
// Define your adapter's input extraction
type MyFilterDefInput
[K in keyof TFilterDef]?: TFilterDef[K] extends MyCustomFilter
? I
: TFilterDef[K] extends CoreFilter
? CoreFilterInput
: never;
};
// Create your adapter entry point
export const myAdapter =
const def =
filtersDef: TFilterDef & ValidateFilterDef
): MyFilter
// Implement filter compilation
};
return { def };
};
`
- @filter-def/in-memory - In-memory filtering with native array methods
- @filter-def/drizzle - Drizzle ORM adapter for SQL databases
- @filter-def/bigquery` - BigQuery adapter for parameterized SQL