UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

53 lines 2.1 kB
"use strict"; 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