1- import { ContentTypeProps , EntryProps , TagProps , WebhookProps } from 'contentful-management'
2- import { find , omit , pick , reduce } from 'lodash'
1+ import { omit , pick , find , reduce } from 'lodash'
2+ import { AssetProps , ContentTypeProps , EntryProps , LocaleProps , TagProps , WebhookProps } from 'contentful-management'
3+ import { MetadataProps } from 'contentful-management/dist/typings/common-types'
34
45/**
56 * Default transformer methods for each kind of entity.
@@ -8,19 +9,19 @@ import { find, omit, pick, reduce } from 'lodash'
89 * as the whole upload process needs to be followed again.
910 */
1011
11- export function contentTypes ( contentType : ContentTypeProps ) {
12+ function contentTypes ( contentType : ContentTypeProps ) {
1213 return contentType
1314}
1415
15- export function tags ( tag : TagProps ) {
16+ function tags ( tag : TagProps ) {
1617 return tag
1718}
1819
19- export function entries ( entry : EntryProps , _ , tagsEnabled = false ) {
20+ function entries ( entry : EntryProps , _ , tagsEnabled = false ) {
2021 return removeMetadataTags ( entry , tagsEnabled )
2122}
2223
23- export function webhooks ( webhook : WebhookProps ) {
24+ function webhooks ( webhook : WebhookProps ) {
2425 // Workaround for webhooks with credentials
2526 if ( webhook . httpBasicUsername ) {
2627 delete webhook . httpBasicUsername
@@ -34,17 +35,21 @@ export function webhooks (webhook: WebhookProps) {
3435 return webhook
3536}
3637
37- export function assets ( asset , _ , tagsEnabled = false ) {
38+ function assets ( asset : AssetProps , _ , tagsEnabled = false ) {
3839 const transformedAsset = omit ( asset , 'sys' )
40+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
41+ // @ts -ignore
3942 transformedAsset . sys = pick ( asset . sys , 'id' )
43+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
44+ // @ts -ignore
4045 transformedAsset . fields = pick ( asset . fields , 'title' , 'description' )
4146 transformedAsset . fields . file = reduce (
4247 asset . fields . file ,
4348 ( newFile , localizedFile , locale ) => {
4449 newFile [ locale ] = pick ( localizedFile , 'contentType' , 'fileName' )
4550 if ( ! localizedFile . uploadFrom ) {
4651 const assetUrl = localizedFile . url || localizedFile . upload
47- newFile [ locale ] . upload = `${ / ^ ( h t t p | h t t p s ) : \/ \/ / i. test ( assetUrl ) ? '' : 'https:' } ${ assetUrl } `
52+ newFile [ locale ] . upload = `${ / ^ ( h t t p | h t t p s ) : \/ \/ / i. test ( assetUrl ! ) ? '' : 'https:' } ${ assetUrl } `
4853 } else {
4954 newFile [ locale ] . uploadFrom = localizedFile . uploadFrom
5055 }
@@ -55,7 +60,7 @@ export function assets (asset, _, tagsEnabled = false) {
5560 return removeMetadataTags ( transformedAsset , tagsEnabled )
5661}
5762
58- export function locales ( locale , destinationLocales ) {
63+ function locales ( locale : LocaleProps , destinationLocales : Array < LocaleProps > ) : LocaleProps {
5964 const transformedLocale = pick ( locale , 'code' , 'name' , 'contentManagementApi' , 'contentDeliveryApi' , 'fallbackCode' , 'optional' )
6065 const destinationLocale = find ( destinationLocales , { code : locale . code } )
6166 if ( destinationLocale ) {
@@ -66,12 +71,23 @@ export function locales (locale, destinationLocales) {
6671 transformedLocale . sys = pick ( destinationLocale . sys , 'id' )
6772 }
6873
74+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
75+ // @ts -ignore
6976 return transformedLocale
7077}
7178
72- function removeMetadataTags ( entity , tagsEnabled = false ) {
79+ function removeMetadataTags < T extends { metadata ?: MetadataProps } > ( entity : T , tagsEnabled = false ) : T {
7380 if ( ! tagsEnabled ) {
7481 delete entity . metadata
7582 }
7683 return entity
7784}
85+
86+ export const transformers = {
87+ contentTypes,
88+ tags,
89+ entries,
90+ webhooks,
91+ assets,
92+ locales
93+ }
0 commit comments