import type { RelatorOptions } from "../interfaces/relator.interface"; import type { SerializerOptions } from "../interfaces/serializer.interface"; import type Link from "../models/link.model"; import type Meta from "../models/meta.model"; import Relationship from "../models/relationship.model"; import type Resource from "../models/resource.model"; import type ResourceIdentifier from "../models/resource-identifier.model"; import type { Dictionary, nullish } from "../types/global.types"; import type { 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