UNPKG

@data-client/endpoint

Version:

Declarative Network Interface Definitions

86 lines (85 loc) 3.88 kB
import { GetEntity, PolymorphicInterface } from '../interface.js'; import { Values, Array as ArraySchema } from '../schema.js'; import type { DefaultArgs } from '../schemaTypes.js'; /** * Entities but for Arrays instead of classes * @see https://dataclient.io/rest/api/Collection */ export default class CollectionSchema<S extends PolymorphicInterface = any, Args extends any[] = DefaultArgs, Parent = any> { protected nestKey: (parent: any, key: string) => Record<string, any>; protected argsKey?: (...args: any) => Record<string, any>; readonly schema: S; readonly key: string; push: S extends ArraySchema<any> ? CollectionSchema<S, Args, Parent> : undefined; unshift: S extends ArraySchema<any> ? CollectionSchema<S, Args, Parent> : undefined; assign: S extends Values<any> ? CollectionSchema<S, Args, Parent> : undefined; addWith<P extends any[] = Args>(merge: (existing: any, incoming: any) => any, createCollectionFilter?: (...args: P) => (collectionKey: Record<string, string>) => boolean): CollectionSchema<S, P>; protected createCollectionFilter(...args: Args): (collectionKey: Record<string, string>) => boolean; protected nonFilterArgumentKeys(key: string): boolean; constructor(schema: S, options?: CollectionOptions<Args, Parent>); get cacheWith(): object; toString(): string; toJSON(): { key: string; schema: any; }; pk(value: any, parent: any, key: string, args: readonly any[]): string; normalize(input: any, parent: Parent, key: string, args: any[], visit: (...args: any) => any, addEntity: (...args: any) => any, getEntity: any, checkLoop: any): string; merge(existing: any, incoming: any): any; shouldReorder(existingMeta: { date: number; fetchedAt: number; }, incomingMeta: { date: number; fetchedAt: number; }, existing: any, incoming: any): boolean; mergeWithStore(existingMeta: { date: number; fetchedAt: number; }, incomingMeta: { date: number; fetchedAt: number; }, existing: any, incoming: any): any; mergeMetaWithStore(existingMeta: { fetchedAt: number; date: number; expiresAt: number; }, incomingMeta: { fetchedAt: number; date: number; expiresAt: number; }, existing: any, incoming: any): { fetchedAt: number; date: number; expiresAt: number; }; queryKey(args: Args, queryKey: unknown, getEntity: GetEntity, getIndex: unknown): any; createIfValid: (value: any) => any | undefined; denormalize(input: any, args: readonly any[], unvisit: (schema: any, input: any) => any): ReturnType<S['denormalize']>; } export type CollectionOptions<Args extends any[] = DefaultArgs, Parent = any> = ({ /** Defines lookups for Collections nested in other schemas. * * @see https://dataclient.io/rest/api/Collection#nestKey */ nestKey?: (parent: Parent, key: string) => Record<string, any>; } | { /** Defines lookups top-level Collections using ...args. * * @see https://dataclient.io/rest/api/Collection#argsKey */ argsKey?: (...args: Args) => Record<string, any>; }) & ({ /** Sets a default createCollectionFilter for addWith(), push, unshift, and assign. * * @see https://dataclient.io/rest/api/Collection#createcollectionfilter */ createCollectionFilter?: (...args: Args) => (collectionKey: Record<string, string>) => boolean; } | { /** Test to determine which arg keys should **not** be used for filtering results. * * @see https://dataclient.io/rest/api/Collection#nonfilterargumentkeys */ nonFilterArgumentKeys?: ((key: string) => boolean) | string[] | RegExp; }); //# sourceMappingURL=Collection.d.ts.map