UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

42 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.RelationMapResourceConverter = void 0; /* eslint-disable @typescript-eslint/no-unsafe-argument,@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 RelationMapResourceConverter { serialize(value) { // eslint-disable-next-line @typescript-eslint/no-unsafe-return return ta_json_1.TaJson.serialize(value); } 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}'.`); } let obj = null; // eslint-disable-next-line @typescript-eslint/no-unused-expressions typeof value === "string" ? (obj = JSON.parse(value)) : (obj = JSON.parse(JSON.stringify(value))); try { return Object.keys(obj).reduce((map, relationName) => { const resource = obj[relationName]; map[relationName] = resource.href ? ta_json_1.TaJson.deserialize(resource, link_1.default) : ta_json_1.TaJson.deserialize(resource, relation_resource_1.RelationResource); return map; }, {}); } catch (ex) { throw new invalid_operation_error_1.InvalidOperationError(`Couldn't deserialize this JsonValue - ${ex}.`); } } } exports.RelationMapResourceConverter = RelationMapResourceConverter; //# sourceMappingURL=relation-map-resource-converter.js.map