UNPKG

@kontent-ai/delivery-sdk

Version:
65 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypeMapper = void 0; class TypeMapper { mapSingleType(response) { return this.mapType(response); } mapMultipleTypes(response) { return response.types.map((type) => { return this.mapType(type); }); } mapType(type) { if (!type) { throw Error(`Cannot map type`); } if (!type.elements) { throw Error(`Cannot map type elements`); } const system = { codename: type.system.codename, id: type.system.id, name: type.system.name, lastModified: type.system.last_modified }; const elements = []; const elementNames = Object.getOwnPropertyNames(type.elements); elementNames.forEach((elementName) => { const typeElement = type.elements[elementName]; if (!typeElement) { throw Error(`Cannot find element '${elementName}' on type '${type.system.codename}'`); } // use json property as a codename of the type element const elementCodename = elementName; // extra properties for certain element types const options = []; // some elements can contain options const rawOptions = typeElement.options; if (rawOptions) { if (!Array.isArray(rawOptions)) { throw Error(`Content type 'options' property has to be an array`); } rawOptions.forEach((rawOption) => { options.push({ codename: rawOption.codename, name: rawOption.name }); }); } elements.push({ codename: elementCodename, taxonomyGroup: typeElement.taxonomy_group, options: options, name: typeElement.name, type: typeElement.type }); }); return { elements: elements, system: system }; } } exports.TypeMapper = TypeMapper; //# sourceMappingURL=type.mapper.js.map