UNPKG

@itxch/contentful-import

Version:

This tool allows you to import JSON dump exported by contentful-export

62 lines (61 loc) 1.87 kB
import { omit, pick, reduce, find } from "lodash-es"; function contentTypes(contentType) { return contentType; } function tags(tag) { return tag; } function entries(entry, _, tagsEnabled = false) { return removeMetadataTags(entry, tagsEnabled); } function webhooks(webhook) { if (webhook.httpBasicUsername) { delete webhook.httpBasicUsername; } if (webhook.headers) { webhook.headers = webhook.headers.filter((header) => !header.secret); } return webhook; } function assets(asset, _, tagsEnabled = false) { const transformedAsset = omit(asset, "sys"); transformedAsset.sys = pick(asset.sys, "id"); transformedAsset.fields = pick(asset.fields, "title", "description"); transformedAsset.fields.file = reduce( asset.fields.file, (newFile, localizedFile, locale) => { newFile[locale] = pick(localizedFile, "contentType", "fileName"); if (!localizedFile.uploadFrom) { const assetUrl = localizedFile.url || localizedFile.upload; newFile[locale].upload = `${/^(http|https):\/\//i.test(assetUrl) ? "" : "https:"}${assetUrl}`; } else { newFile[locale].uploadFrom = localizedFile.uploadFrom; } return newFile; }, {} ); return removeMetadataTags(transformedAsset, tagsEnabled); } function locales(locale, destinationLocales) { const transformedLocale = pick(locale, "code", "name", "contentManagementApi", "contentDeliveryApi", "fallbackCode", "optional"); const destinationLocale = find(destinationLocales, { code: locale.code }); if (destinationLocale) { transformedLocale.sys = pick(destinationLocale.sys, "id"); } return transformedLocale; } function removeMetadataTags(entity, tagsEnabled = false) { if (!tagsEnabled) { delete entity.metadata; } return entity; } export { assets, contentTypes, entries, locales, tags, webhooks };