@baqhub/sdk
Version:
The official JavaScript SDK for the BAQ federated app platform.
37 lines (36 loc) • 1.96 kB
TypeScript
import * as IO from "../../helpers/io.js";
import { AnyRecord, CleanRecordType, Record } from "../records/record.js";
import { RecordKey } from "../records/recordKey.js";
import { RAnyRecordType, RRecordType, RecordType } from "../records/recordType.js";
export interface RecordLink<T extends AnyRecord> {
entity: string;
originalEntity?: string;
versionCreatedAt?: Date;
recordId: string;
_type?: T;
}
export type AnyRecordLink = RecordLink<AnyRecord>;
export declare class RRecordLinkClass<T extends RAnyRecordType> extends IO.Type<RecordLink<Record<IO.TypeOf<T>, any>>, unknown, unknown> {
constructor(_type?: T);
}
declare function recordLink<T extends AnyRecord>(type?: CleanRecordType<T>): RRecordLinkClass<IO.Type<T["type"], any, unknown>>;
declare function recordLinkOf<E extends string, R extends string>(_entity: E, _recordId: R): RRecordLinkClass<RRecordType<any, any, E, R>>;
export type RecordLinkOf<E extends string, R extends string> = RecordLink<Record<RecordType<any, any, E, R>, any>>;
declare function buildRecordLink(entity: string, recordId: string): AnyRecordLink;
declare function linkToKey<T extends AnyRecord>(link: RecordLink<T>): RecordKey<T>;
declare function isLinkedRecord<R extends AnyRecord, L extends R>(record: R, recordLink: RecordLink<L>): record is L;
declare function findLinkedRecord<R extends AnyRecord, L extends R>(records: ReadonlyArray<R>, link: RecordLink<L>): L | undefined;
declare function isSameRecordLink(link1: AnyRecordLink, link2: AnyRecordLink): boolean;
export declare const RecordLink: {
io: typeof recordLink;
ioOf: typeof recordLinkOf;
new: typeof buildRecordLink;
toKey: typeof linkToKey;
isRecord: typeof isLinkedRecord;
findRecord: typeof findLinkedRecord;
isSame: typeof isSameRecordLink;
};
export declare const AnyRecordLink: {
io: () => RRecordLinkClass<IO.Type<import("../records/recordType.js").AnyRecordType, any, unknown>>;
};
export {};