UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

48 lines 1.83 kB
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { TaJson } from "ta-json"; import { BooleanMemberCondition, NoAncestorMemberCondition, RelationMemberCondition, StringMemberCondition, } from "../contracts/base"; import { InvalidOperationError } from "../errors/invalid-operation-error"; export class MemberConditionConverter { /** * Serializes a MemberCondition instance into JSON Value. * * @param value - A MemberCondition instance * * @returns An JSON Value. */ serialize(value) { return TaJson.serialize(value); } /** * Deserializes a JSON Value into a MemberCondition instance. * * @param value - A JSON Value * * @returns A MemberCondition instance. */ deserialize(value) { if (!value) { throw new InvalidOperationError("Can't deserialize falsy value."); } else if (typeof value !== "object" || value instanceof Array) { throw new InvalidOperationError(`Expected a value of type 'object', but value was of type '${typeof value}'.`); } const obj = typeof value === "string" ? JSON.parse(value) : value; if (obj.definitionId) { return TaJson.deserialize(value, NoAncestorMemberCondition); } else if (typeof obj.value === "string") { return TaJson.deserialize(value, StringMemberCondition); } else if (typeof obj.value === "boolean") { return TaJson.deserialize(value, BooleanMemberCondition); } else if (obj.entityId) { return TaJson.deserialize(value, RelationMemberCondition); } else { throw new InvalidOperationError("Not a known condition format"); } } } //# sourceMappingURL=member-condition-converter.js.map