alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
35 lines (34 loc) • 1.16 kB
TypeScript
import { Callable } from 'rado/util/Callable';
import { Cursor } from './Cursor.js';
import { EV } from './Expr.js';
import { ExprData } from './ExprData.js';
import { Fields } from './Fields.js';
import { TargetData } from './TargetData.js';
export declare class TargetI<Row = object> {
get [Target.IsTarget](): true;
get [Target.Data](): TargetData;
}
export interface TargetI<Row = object> extends Callable {
(conditions?: {
[K in keyof Row]?: EV<Row[K]>;
}): Cursor.Find<Row>;
}
export type Target<Row> = Target.Definition<Row> & TargetI<Row>;
export declare namespace Target {
type Definition<Row> = {
[K in keyof Row as K extends string ? K : never]: Fields<Row[K]>;
};
}
export declare const Target: {
new (data: TargetData): {
cache: any;
data: TargetData;
call(...input: Array<any>): Cursor.Find<unknown>;
condition(input: Array<any>): ExprData | undefined;
get(field: string): any;
};
readonly Data: unique symbol;
readonly IsTarget: unique symbol;
isTarget<T>(target: any): target is TargetI<T>;
create<T_1>(data: TargetData): Target<T_1>;
};