import { RelatorOptions } from '../interfaces/relator.interface'; import { SerializerOptions } from '../interfaces/serializer.interface'; import Link from '../models/link.model'; import Meta from '../models/meta.model'; import Relationship from '../models/relationship.model'; import ResourceIdentifier from '../models/resource-identifier.model'; import Resource from '../models/resource.model'; import { Dictionary, nullish } from '../types/global.types'; import { Helpers } from '../utils/serializer.utils'; import Serializer from './serializer'; /** * The {@link Relator} class is used to generate top-level [included data](https://jsonapi.org/format/#document-top-level) * as well as resource-level [relationships](https://jsonapi.org/format/#document-resource-object-relationships). * * Example: * ```typescript * [[include:relator.example.ts]] * ``` */ export default class Relator = any> { /** * Default options. Can be edited to change default options globally. */ static defaultOptions: { linkers: {}; }; /** * Options for relator. */ private options; relatedName: string; private internalSerializer; private _serializer; /** * Creates a {@link Relator}. * * @param fetch - Fetches related data from primary data. * @param serializer - The `Serializer` to use for related data. * @param options - Options for the relator. */ constructor(fetch: (data: PrimaryType) => Promise, serializer: Serializer, options?: Partial>); /** * Creates a {@link Relator}. * * @param fetch - Fetches related data from primary data. * @param serializer - A getter for the `Serializer` to use for related data. * @param options - Options for the relator, a `relatedName` is required * as it cannot always be loaded from the serializer. */ constructor(fetch: (data: PrimaryType) => Promise, serializer: () => Serializer, options: Partial> & Required, 'relatedName'>>); get serializer(): Serializer; /** @internal Gets related data from primary data. */ getRelatedData: (data: PrimaryType) => Promise; /** @internal Gets related relators */ getRelatedRelators(): Record> | undefined; /** @internal Creates related identifiers */ getRelatedIdentifier(data: RelatedType, options?: SerializerOptions | undefined): ResourceIdentifier; /** @internal Creates related resources */ getRelatedResource(data: RelatedType, options?: Partial>, helpers?: Helpers, relatorDataCache?: Map, Dictionary[]>): Promise>; /** @internal Gets related links from primary data and related data */ getRelatedLinks(data: PrimaryType, relatedData: RelatedType | RelatedType[] | nullish): Dictionary | undefined; /** @internal Gets related meta from primary data and related data */ getRelatedMeta(data: PrimaryType, relatedData: RelatedType | RelatedType[] | nullish): Meta | undefined; /** @internal Creates a {@link Relationship}. */ getRelationship(data: PrimaryType, relatedDataCache?: Dictionary[]): Promise; } //# sourceMappingURL=relator.d.ts.map