@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
78 lines (77 loc) • 4.22 kB
TypeScript
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 {};