@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
53 lines • 2.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RelationResourceConverter = void 0;
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
const ta_json_1 = require("ta-json");
const invalid_operation_error_1 = require("../errors/invalid-operation-error");
const link_1 = __importDefault(require("../link"));
const relation_resource_1 = require("../models/relation-resource");
class RelationResourceConverter {
/**
* Serializes a RelationResource or a Link into a JsonValue.
*
* @param value - A RelationResource or a Link
*
* @returns A Json Value.
*/
serialize(value) {
return ta_json_1.TaJson.serialize(value);
}
/**
* Deserializes a JsonValue into a RelationResource or a Link.
*
* @param value - A Json Value
*
* @returns A RelationResource or a Link.
*/
deserialize(value) {
if (!value) {
throw new invalid_operation_error_1.InvalidOperationError("Can't deserialize falsy value.");
}
else if (typeof value !== "object" || value instanceof Array) {
throw new invalid_operation_error_1.InvalidOperationError(`Expected a value of type 'JSON', but value was of type '${typeof value}'.`);
}
const obj = typeof value === "string" ? JSON.parse(value) : JSON.parse(JSON.stringify(value));
if (obj.href) {
return ta_json_1.TaJson.deserialize(obj, link_1.default);
}
else if (this.isRelationResource(obj)) {
return ta_json_1.TaJson.deserialize(value, relation_resource_1.RelationResource);
}
else {
throw new invalid_operation_error_1.InvalidOperationError("Not a known format");
}
}
isRelationResource(arg) {
return arg.self !== undefined;
}
}
exports.RelationResourceConverter = RelationResourceConverter;
//# sourceMappingURL=relation-resource-converter.js.map