UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

135 lines (134 loc) 5.11 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const Asset = require("../types/migration/Asset.cjs"); const Document = require("../types/migration/Document.cjs"); const link = require("../types/value/link.cjs"); const richText = require("../types/value/richText.cjs"); const isFilled = require("../helpers/isFilled.cjs"); const isMigrationValue = require("./isMigrationValue.cjs"); const getOptionalLinkProperties = require("./getOptionalLinkProperties.cjs"); async function resolveMigrationContentRelationship(relation) { if (typeof relation === "function") { return resolveMigrationContentRelationship(await relation()); } if (relation instanceof Document.PrismicMigrationDocument) { return relation.document.id ? { link_type: link.LinkType.Document, id: relation.document.id } : { link_type: link.LinkType.Any }; } const optionalLinkProperties = relation && "link_type" in relation ? getOptionalLinkProperties.getOptionalLinkProperties(relation) : void 0; if (relation) { if (isMigrationValue.contentRelationship(relation.id) || typeof relation.id !== "string") { return { ...optionalLinkProperties, ...await resolveMigrationContentRelationship(relation.id) }; } return { ...optionalLinkProperties, link_type: link.LinkType.Document, id: relation.id }; } return { ...optionalLinkProperties, link_type: link.LinkType.Any }; } const resolveMigrationImage = (image, migration, withThumbnails) => { var _a; const { id: master, ...thumbnails } = image instanceof Asset.PrismicMigrationAsset ? { id: image } : image; const asset = (_a = migration._assets.get(master.config.id)) == null ? void 0 : _a.asset; const maybeInitialField = master.originalField; if (asset) { const parameters = ((maybeInitialField == null ? void 0 : maybeInitialField.url) || asset.url).split("?")[1]; const url = `${asset.url.split("?")[0]}${parameters ? `?${parameters}` : ""}`; const dimensions = { width: asset.width, height: asset.height }; const edit = maybeInitialField && "edit" in maybeInitialField ? maybeInitialField == null ? void 0 : maybeInitialField.edit : { x: 0, y: 0, zoom: 1, background: "transparent" }; const alt = master.config.alt || asset.alt || null; const resolvedThumbnails = {}; if (withThumbnails) { for (const [name, thumbnail] of Object.entries(thumbnails)) { const resolvedThumbnail = resolveMigrationImage(thumbnail, migration); if (resolvedThumbnail) { resolvedThumbnails[name] = resolvedThumbnail; } } } return { id: asset.id, url, dimensions, edit, alt, copyright: asset.credits || null, ...resolvedThumbnails }; } }; const resolveMigrationRTImageNode = async (rtImageNode, migration) => { const image = resolveMigrationImage(rtImageNode.id, migration); if (image) { const linkTo = await resolveMigrationDocumentData(rtImageNode.linkTo, migration); return { ...image, type: richText.RichTextNodeType.image, linkTo: isFilled.link(linkTo) ? linkTo : void 0 }; } }; const resolveMigrationLinkToMedia = (linkToMedia, migration) => { var _a; const asset = (_a = migration._assets.get(linkToMedia.id.config.id)) == null ? void 0 : _a.asset; const optionalLinkProperties = getOptionalLinkProperties.getOptionalLinkProperties(linkToMedia); if (asset) { return { ...optionalLinkProperties, id: asset.id, link_type: link.LinkType.Media }; } return { ...optionalLinkProperties, link_type: link.LinkType.Any }; }; async function resolveMigrationDocumentData(input, migration) { if (isMigrationValue.contentRelationship(input)) { return resolveMigrationContentRelationship(input); } if (isMigrationValue.image(input)) { return resolveMigrationImage(input, migration, true); } if (isMigrationValue.linkToMedia(input)) { return resolveMigrationLinkToMedia(input, migration); } if (isMigrationValue.rtImageNode(input)) { return resolveMigrationRTImageNode(input, migration); } if (typeof input === "function") { return await resolveMigrationDocumentData(await input(), migration); } if (Array.isArray(input)) { const res = []; for (const element of input) { res.push(await resolveMigrationDocumentData(element, migration)); } return res.filter(Boolean); } if (input && typeof input === "object") { const res = {}; for (const key in input) { res[key] = await resolveMigrationDocumentData(input[key], migration); } return res; } return input; } exports.resolveMigrationContentRelationship = resolveMigrationContentRelationship; exports.resolveMigrationDocumentData = resolveMigrationDocumentData; exports.resolveMigrationImage = resolveMigrationImage; exports.resolveMigrationLinkToMedia = resolveMigrationLinkToMedia; exports.resolveMigrationRTImageNode = resolveMigrationRTImageNode; //# sourceMappingURL=resolveMigrationDocumentData.cjs.map