UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

48 lines (47 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const link = require("../types/value/link.cjs"); const documentToLinkField = require("./documentToLinkField.cjs"); const asLink = (linkFieldOrDocument, ...configObjectOrTuple) => { if (!linkFieldOrDocument) { return null; } const linkField = ( // prettier-ignore // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - Bug in TypeScript 4.9: https://github.com/microsoft/TypeScript/issues/51501 // TODO: Remove the `prettier-ignore` comment when this bug is fixed. "link_type" in linkFieldOrDocument ? linkFieldOrDocument : documentToLinkField.documentToLinkField(linkFieldOrDocument) ); const [configObjectOrLinkResolver] = configObjectOrTuple; let config; if (typeof configObjectOrLinkResolver === "function" || configObjectOrLinkResolver == null) { config = { linkResolver: configObjectOrLinkResolver }; } else { config = { ...configObjectOrLinkResolver }; } switch (linkField.link_type) { case link.LinkType.Media: case link.LinkType.Web: return "url" in linkField ? linkField.url : null; case link.LinkType.Document: { if ("id" in linkField && config.linkResolver) { const resolvedURL = config.linkResolver(linkField); if (resolvedURL != null) { return resolvedURL; } } if ("url" in linkField && linkField.url) { return linkField.url; } return null; } case link.LinkType.Any: default: return null; } }; exports.asLink = asLink; //# sourceMappingURL=asLink.cjs.map