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