@baqhub/sdk-react
Version:
The official React SDK for the BAQ federated app platform.
84 lines (83 loc) • 6.66 kB
TypeScript
import { AnyBlobLink, AnyRecord, CleanRecordType, EntityRecord, Handler, IO, LiveQuery, Query, RecordKey, StandingDecision, StandingRecord, SubscriptionRecord, VersionHash } from "@baqhub/sdk";
import { FC, PropsWithChildren, ReactNode } from "react";
import { StoreIdentity } from "./storeIdentity.js";
import { UseRecordQueryOptions, UseRecordsQueryOptions, UseStaticRecordQueryOptions, UseStaticRecordsQueryOptions } from "./storeQuery.js";
export interface StoreEntityProviderProps extends PropsWithChildren {
entity: string;
}
export interface StoreProps extends PropsWithChildren {
identity?: StoreIdentity;
onDisconnectRequest?: Handler;
}
export declare function createStore<R extends CleanRecordType<AnyRecord>[]>(...types: R): {
RKnownRecord: IO.UnionC<[IO.UnionC<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R]>, CleanRecordType<StandingRecord>, CleanRecordType<SubscriptionRecord>]>;
ProxyStore: FC<StoreEntityProviderProps>;
Store: FC<StoreProps>;
wrapInProxyStore: (entity: string) => (children: ReactNode) => import("react/jsx-runtime").JSX.Element;
useRecordsQuery: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(requestedQuery: LiveQuery<Q>, options?: UseRecordsQueryOptions) => {
isLoading: boolean;
error: unknown;
isLoadingMore: boolean;
loadMoreError: unknown;
loadMore: (() => void) | undefined;
records: readonly Q[];
deferredRecords: readonly Q[];
getRecords: () => readonly Q[];
getDeferredRecords: () => readonly Q[];
query: Query<Q>;
deferredQuery: Query<Q>;
};
useStaticRecordsQuery: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(requestedQuery: Query<Q>, options?: UseStaticRecordsQueryOptions) => {
isLoading: boolean;
isRefreshing: boolean;
error: unknown;
isLoadingMore: boolean;
loadMoreError: unknown;
loadMore: (() => void) | undefined;
hasResults: boolean;
records: readonly Q[];
deferredRecords: readonly Q[];
getRecords: () => readonly Q[];
getDeferredRecords: () => readonly Q[];
query: Query<Q>;
deferredQuery: Query<Q>;
};
useRecordQuery: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(requestedQuery: LiveQuery<Q>, options?: UseRecordQueryOptions) => {
isLoading: boolean;
record: Q | undefined;
deferredRecord: Q | undefined;
getRecord: (() => Q | undefined) & import("lodash").MemoizedFunction;
getDeferredRecord: (() => Q | undefined) & import("lodash").MemoizedFunction;
};
useStaticRecordQuery: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(requestedQuery: Query<Q>, { refreshIntervalSeconds }?: UseStaticRecordQueryOptions) => {
isLoading: boolean;
record: Q | undefined;
deferredRecord: Q | undefined;
getRecord: (() => Q | undefined) & import("lodash").MemoizedFunction;
getDeferredRecord: (() => Q | undefined) & import("lodash").MemoizedFunction;
};
useRecordHelpers: () => {
isAuthenticated: boolean;
entity: string;
proxyEntity: string;
discover: (entity: string, signal?: AbortSignal) => Promise<EntityRecord>;
downloadBlob: (record: AnyRecord, blob: AnyBlobLink, signal?: AbortSignal) => Promise<Blob>;
recordByVersion: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(version: VersionHash<Q>) => Extract<StandingRecord, Q> | Extract<IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]>, Q> | Extract<SubscriptionRecord, Q>;
recordByKey: <Q extends AnyRecord>(key: RecordKey<Q>) => Extract<AnyRecord, Q>;
findRecordByKey: <Q extends AnyRecord>(key: RecordKey<Q>) => Extract<AnyRecord, Q> | undefined;
findRecordByQuery: <Q extends AnyRecord>(query: Query<Q>) => Q | undefined;
findEntityRecord: (targetEntity: string) => EntityRecord | undefined;
findStandingDecision: (publisherEntity: string) => `${StandingDecision}`;
updateStandingDecision: (publisherEntity: string, decision: StandingDecision) => void;
updateRecords: import("./storeTypes.js").UpdateRecords<StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>;
uploadBlob: (blob: Blob, signal?: AbortSignal) => Promise<import("@baqhub/sdk").BlobResponse>;
buildBlobUrl: <R_1 extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(record: R_1, blob: AnyBlobLink, expiresInSeconds?: number) => string;
onDisconnectRequest: Handler;
};
useRecordByVersion: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord, K extends RecordKey<Q> | undefined>(version: VersionHash<Q> | K) => (undefined extends K ? undefined : never) | Extract<StandingRecord, Q> | Extract<IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]>, Q> | Extract<SubscriptionRecord, Q>;
useRecordByKey: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord, K extends RecordKey<Q> | undefined>(key: RecordKey<Q> | K) => (undefined extends K ? undefined : never) | Extract<StandingRecord, Q> | Extract<IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]>, Q> | Extract<SubscriptionRecord, Q>;
useFindRecordByKey: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(key: RecordKey<Q> | undefined) => Extract<AnyRecord, Q> | undefined;
useFindRecordByQuery: <Q extends StandingRecord | IO.TypeOf<[CleanRecordType<EntityRecord>, CleanRecordType<EntityRecord>, ...R][number]> | SubscriptionRecord>(query: Query<Q> | undefined) => Q | undefined;
useFindEntityRecord: (entity: string | undefined) => EntityRecord | undefined;
useFindStandingDecision: (entity: string | undefined) => "undecided" | "allow" | "block";
};