UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

78 lines (77 loc) 4.22 kB
import type { FilledContentRelationshipField } from "../types/value/contentRelationship"; import type { PrismicDocument } from "../types/value/document"; import type { FilledLinkToWebField, LinkField } from "../types/value/link"; import type { FilledLinkToMediaField } from "../types/value/linkToMedia"; /** * Resolves a link to a Prismic document to a URL * * @typeParam ReturnType - Return type of your link resolver function, useful if * you prefer to return a complex object * * @param linkToDocumentField - A document link field to resolve * * @returns Resolved URL * * @see Prismic link resolver documentation: {@link https://prismic.io/docs/route-resolver#link-resolver} */ export type LinkResolverFunction<ReturnType = string | null | undefined> = (linkToDocumentField: FilledContentRelationshipField) => ReturnType; /** * Configuration that determines the output of `asLink()`. */ type AsLinkConfig<LinkResolverFunctionReturnType = string | null | undefined> = { /** * An optional link resolver function. Without it, you are expected to use * the `routes` options from the API. */ linkResolver?: LinkResolverFunction<LinkResolverFunctionReturnType> | null; }; /** * @deprecated Use object-style configuration instead. */ type AsLinkDeprecatedTupleConfig<LinkResolverFunctionReturnType = string | null | undefined> = [linkResolver?: LinkResolverFunction<LinkResolverFunctionReturnType> | null]; /** * The return type of `asLink()`. */ export type AsLinkReturnType<LinkResolverFunctionReturnType = string | null | undefined, Field extends LinkField | PrismicDocument | null | undefined = LinkField | PrismicDocument | null | undefined> = Field extends FilledLinkToWebField | FilledLinkToMediaField | FilledContentRelationshipField | PrismicDocument ? LinkResolverFunctionReturnType | string | null : null; export declare const asLink: { /** * Resolves any type of link field or Prismic document to a URL. * * @typeParam LinkResolverFunctionReturnType - link resolver function return * type * @typeParam Field - Link field or Prismic document to resolve to a URL * * @param linkFieldOrDocument - Any kind of link field or a document to * resolve * @param config - Configuration that determines the output of `asLink()` * * @returns Resolved URL or, if the provided link field or document is empty, * `null` * * @see Prismic link resolver documentation: {@link https://prismic.io/docs/route-resolver#link-resolver} * @see Prismic API `routes` options documentation: {@link https://prismic.io/docs/route-resolver} */ <LinkResolverFunctionReturnType = string | null | undefined, Field extends LinkField | PrismicDocument | null | undefined = LinkField | PrismicDocument | null | undefined>(linkFieldOrDocument: Field, config?: AsLinkConfig<LinkResolverFunctionReturnType>): AsLinkReturnType<LinkResolverFunctionReturnType, Field>; /** * Resolves any type of link field or Prismic document to a URL. * * @deprecated Use object-style configuration instead. * * @typeParam LinkResolverFunctionReturnType - link resolver function return * type * @typeParam Field - Link field or Prismic document to resolve to a URL * * @param linkFieldOrDocument - Any kind of link field or a document to * resolve * @param linkResolver - An optional link resolver function. Without it, you * are expected to use the `routes` options from the API * * @returns Resolved URL or, if the provided link field or document is empty, * `null` * * @see Prismic link resolver documentation: {@link https://prismic.io/docs/route-resolver#link-resolver} * @see Prismic API `routes` options documentation: {@link https://prismic.io/docs/route-resolver} */ <LinkResolverFunctionReturnType = string | null | undefined, Field extends LinkField | PrismicDocument | null | undefined = LinkField | PrismicDocument | null | undefined>(linkFieldOrDocument: Field, ...config: AsLinkDeprecatedTupleConfig<LinkResolverFunctionReturnType>): AsLinkReturnType<LinkResolverFunctionReturnType, Field>; }; export {};