@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
48 lines (47 loc) • 1.65 kB
JavaScript
;
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