@baqhub/sdk
Version:
The official JavaScript SDK for the BAQ federated app platform.
58 lines (57 loc) • 2.65 kB
TypeScript
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 {};