UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

61 lines (51 loc) 1.45 kB
import { MissingWorkspaceError, cmsRestApi, } from 'scrivito_sdk/client/cms_rest_api'; import { ObjSpaceId, asBackendObjSpaceId, } from 'scrivito_sdk/client/obj_space_id'; import { CmsAttributeType } from 'scrivito_sdk/models'; export interface ObjFieldDiffs extends WidgetPoolDiffs { [attributeNameOrSpecialKeys: string]: | FieldDiffs[keyof FieldDiffs] | WidgetPoolDiffs[keyof WidgetPoolDiffs]; } interface WidgetPoolDiffs { _widget_pool?: { [widgetId: string]: FieldDiffs | undefined; }; } export interface FieldDiffs { [attributeName: string]: [CmsAttributeType, FieldDiff]; } export type FieldDiff = HtmlDiff | WidgetlistDiff; interface HtmlDiff { format: 'html'; content: HtmlDiffContent; } export type HtmlDiffContent = string; export interface WidgetlistDiff { format: 'widgetlist_diff'; content: WidgetlistDiffContent; } export type WidgetlistDiffContent = Array<[WidgetlistModification, WidgetId]>; export type WidgetlistModification = '+' | '-' | '='; type WidgetId = string; export async function retrieveObjFieldDiffs( from: ObjSpaceId, to: ObjSpaceId, objId: string ): Promise<ObjFieldDiffs> { try { const response = await cmsRestApi.get(`objs/${objId}/diff`, { from: asBackendObjSpaceId(from), to: asBackendObjSpaceId(to), }); return response as ObjFieldDiffs; } catch (error) { if (error instanceof MissingWorkspaceError) return {}; throw error; } }