@nacelle/compatibility-connector
Version:
Connect @nacelle/client-js-sdk to Nacelle's v2 back end with minimal code changes
47 lines (38 loc) • 1.25 kB
text/typescript
import { isSanityMedia, SanityMedia } from './transformMedia';
import { isObject } from './transformContent';
import type { AnyObject, NacelleContentEntry } from '.';
export function transformSanityMedia(media: SanityMedia): SanityMedia {
const newAsset = { ...media.asset };
if (newAsset.metadata && typeof newAsset.metadata.palette !== 'undefined') {
delete newAsset.metadata.palette;
}
if (typeof media.asset._depth === 'undefined') {
newAsset._depth = 1;
}
return {
...media,
asset: newAsset
};
}
export function transformSanityContent(
content: NacelleContentEntry | NacelleContentEntry[] | SanityMedia
): NacelleContentEntry | NacelleContentEntry[] {
if (Array.isArray(content)) {
return content.map((entry) =>
transformSanityContent(entry)
) as NacelleContentEntry[];
}
if (isObject(content)) {
if (isSanityMedia(content)) {
content = transformSanityMedia(content);
} else {
for (const [property, value] of Object.entries(content)) {
const key = property as keyof NacelleContentEntry;
if (Array.isArray(value) || isObject(value)) {
content[key] = transformSanityContent(value);
}
}
}
}
return content as AnyObject;
}