@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
42 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.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