sveltekit-sync
Version:
Local-first sync engine for SvelteKit
43 lines (42 loc) • 1.73 kB
TypeScript
import type { QueryOperator } from './operators.js';
export declare const FIELD_SYMBOL: unique symbol;
export interface FieldReference<T, K extends keyof T = keyof T> {
[FIELD_SYMBOL]: true;
fieldName: K;
eq(value: T[K]): FieldCondition<T, K>;
ne(value: T[K]): FieldCondition<T, K>;
gt(value: T[K]): FieldCondition<T, K>;
gte(value: T[K]): FieldCondition<T, K>;
lt(value: T[K]): FieldCondition<T, K>;
lte(value: T[K]): FieldCondition<T, K>;
in(values: T[K][]): FieldCondition<T, K>;
notIn(values: T[K][]): FieldCondition<T, K>;
contains(value: string): FieldCondition<T, K>;
startsWith(value: string): FieldCondition<T, K>;
endsWith(value: string): FieldCondition<T, K>;
between(min: T[K], max: T[K]): FieldCondition<T, K>;
isNull(): FieldCondition<T, K>;
isNotNull(): FieldCondition<T, K>;
asc(): OrderByCondition<T, K>;
desc(): OrderByCondition<T, K>;
}
export interface FieldCondition<T, K extends keyof T = keyof T> {
[FIELD_SYMBOL]: true;
fieldName: K;
operator: QueryOperator;
}
export interface OrderByCondition<T, K extends keyof T = keyof T> {
[FIELD_SYMBOL]: true;
fieldName: K;
direction: 'asc' | 'desc';
}
export declare function isFieldCondition(value: any): value is FieldCondition<any>;
export declare function isOrderByCondition(value: any): value is OrderByCondition<any>;
export declare function isFieldReference(value: any): value is FieldReference<any>;
export type FieldsProxy<T> = {
readonly [K in keyof T]: FieldReference<T, K>;
};
/**
* Creates a proxy that returns typed field references for any property access
*/
export declare function createFieldsProxy<T extends Record<string, any>>(): FieldsProxy<T>;