tinycoll
Version:
A minimal reactive document store with Mongo-like querying, reactivity, TTL support, and optional persistence.
28 lines (27 loc) • 686 B
TypeScript
export type Query<T> = RootLogical<T> & {
[K in keyof T]?: FieldQuery<T[K]>;
};
type RootLogical<T> = {
$and?: Query<T>[];
$or?: Query<T>[];
$not?: Query<T>;
};
type FieldOps<T> = {
$eq?: T;
$ne?: T;
$gt?: T;
$gte?: T;
$lt?: T;
$lte?: T;
$exists?: boolean;
$regex?: string;
$size?: number;
};
type ArrayOps<T> = {
$in?: T[];
$nin?: T[];
};
type FieldQuery<T> = T | (FieldOps<T> & ArrayOps<T>);
export type Op = '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$in' | '$nin' | '$and' | '$or' | '$not' | '$exists' | '$regex' | '$size';
export declare function matches<TDoc>(doc: TDoc, query: Query<TDoc>): boolean;
export {};