@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
48 lines • 1.83 kB
JavaScript
/* 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