UNPKG

@baqhub/sdk

Version:

The official JavaScript SDK for the BAQ federated app platform.

58 lines (57 loc) 2.65 kB
import { AnyRecord, NoContentRecord, RecordMode, RecordSource } from "../records/record.js"; import { RecordKey } from "../records/recordKey.js"; import { QueryDate } from "./queryDate.js"; import { QueryFilter } from "./queryFilter.js"; import { QuerySort } from "./querySort.js"; type IncludeLink = "entity" | "standing" | "existential" | (string & NonNullable<unknown>); interface StaticQueryBase { proxyTo?: string; } export interface LiveSingleQuery { includeLinks?: ReadonlyArray<IncludeLink>; includeDeleted?: boolean; } export interface SingleQuery extends LiveSingleQuery, StaticQueryBase { } export interface LiveQuery<T extends AnyRecord> extends LiveSingleQuery { sort?: QuerySort; min?: QueryDate; max?: QueryDate; pageStart?: QueryDate; pageSize?: number; distinct?: string; sources?: ReadonlyArray<`${RecordSource}`>; filter?: QueryFilter<T>; mode?: `${RecordMode}`; } export interface Query<T extends AnyRecord> extends LiveQuery<T>, StaticQueryBase { } declare function queryNew<T extends AnyRecord>(query: Query<T>): Query<T>; declare function queryOfKey<T extends AnyRecord>(key: RecordKey<T>, baseQuery?: SingleQuery): Query<T>; declare function querySingleToQueryString(query: SingleQuery | undefined): string; declare function queryToQueryString<T extends AnyRecord>(query: Query<T>): string; declare function queryToSync<T extends AnyRecord>(query: Query<T>, boundary: QueryDate): Query<T>; declare function queryFindBoundary<T extends AnyRecord>(query: Query<T>, record: T): QueryDate; interface QueryFilterOptions { ignorePageSize?: boolean; boundary?: QueryDate; } declare function queryFilter<R extends AnyRecord, T extends R>(query: Query<T>, records: ReadonlyArray<R | NoContentRecord>, { ignorePageSize, boundary }?: QueryFilterOptions): readonly T[]; declare function queryIsMatch(query1: Query<AnyRecord>, query2: Query<AnyRecord>): boolean; declare function queryIsSuperset(query1: Query<AnyRecord>, query2: Query<AnyRecord>): boolean; declare function queryIsSyncSuperset(query1: Query<AnyRecord>, query2: Query<AnyRecord>): boolean; export declare const Query: { new: typeof queryNew; ofKey: typeof queryOfKey; singleToQueryString: typeof querySingleToQueryString; toQueryString: typeof queryToQueryString; toSync: typeof queryToSync; findBoundary: typeof queryFindBoundary; filter: typeof queryFilter; isMatch: typeof queryIsMatch; isSuperset: typeof queryIsSuperset; isSyncSuperset: typeof queryIsSyncSuperset; defaultIncludeLinks: readonly IncludeLink[]; defaultSources: readonly RecordSource[]; }; export {};