tinycoll
Version:
A minimal reactive document store with Mongo-like querying, reactivity, TTL support, and optional persistence.
24 lines (23 loc) • 689 B
TypeScript
import { Document } from '../collection.js';
export type Modifier<T> = {
$set?: Partial<T>;
$unset?: Partial<Record<keyof T, true>>;
$push?: Arrays<T>;
$pull?: Arrays<T>;
$inc?: Numbers<T>;
$min?: Numbers<T>;
$max?: Numbers<T>;
$mul?: Numbers<T>;
$setOnInsert?: Partial<T>;
$addToSet?: Arrays<T>;
};
type Numbers<T> = {
[K in keyof T as T[K] extends number ? K : never]?: number;
};
type Arrays<T> = {
[K in keyof T as T[K] extends any[] ? K : never]?: T[K] extends (infer U)[] ? U : never;
};
export declare function applyModifier<TDoc extends Document>(doc: TDoc, mod: Modifier<TDoc>, ctx?: {
inserting?: boolean;
}): TDoc;
export {};