UNPKG

@becklyn/contentful-adapter

Version:

[![CI](https://github.com/Becklyn-Studios/contentful-adapter/actions/workflows/ci.yml/badge.svg)](https://github.com/Becklyn-Studios/contentful-adapter/actions/workflows/ci.yml)

119 lines (118 loc) 4.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getValueOfField = exports.isSingleRelationType = exports.isArrayRelationType = exports.isRelationType = exports.isBaseComponentConfig = exports.isArray = exports.getContentTypeFromComponentKey = exports.getContentTypeFromData = exports.getComponentKeyFromData = exports.getIdFromData = exports.getDataConfigForContentType = exports.getDataFieldNames = void 0; const ui_types_1 = require("@becklyn/ui-types"); const getDataFieldNames = (data, dataConfig) => { const fieldNames = []; if (!data.fields) { return fieldNames; } const dataFields = Object.keys(data.fields); const customFields = getCustomDataTypeFields(dataConfig); return dataFields.concat(...customFields.filter(field => !dataFields.includes(field))); }; exports.getDataFieldNames = getDataFieldNames; const getCustomDataTypeFields = (dataConfig) => { return Object.keys(dataConfig).filter(key => { const dataType = dataConfig[key]; if ("string" !== typeof dataType) { return false; } return (dataType !== ui_types_1.TYPE_STRING && dataType !== ui_types_1.TYPE_BOOL && dataType !== ui_types_1.TYPE_NUMBER && dataType !== ui_types_1.TYPE_RTE && dataType !== ui_types_1.TYPE_ASSET && dataType !== ui_types_1.TYPE_LABELED_LINK); }); }; const getDataConfigForContentType = (contentType, service) => { var _a; for (let i = 0; i < service.allUiComponents.length; i++) { const component = service.allUiComponents[i]; if (component.contentType === contentType) { return (_a = component.data) !== null && _a !== void 0 ? _a : null; } } return null; }; exports.getDataConfigForContentType = getDataConfigForContentType; const getIdFromData = (data) => { return data && data.sys ? data.sys.id : null; }; exports.getIdFromData = getIdFromData; const getComponentKeyFromData = (data, service) => { const contentType = (0, exports.getContentTypeFromData)(data); if (!contentType) { return null; } for (let i = 0; i < service.allUiComponents.length; i++) { const component = service.allUiComponents[i]; if (component.contentType === data.sys.contentType.sys.id) { return component.key; } } return null; }; exports.getComponentKeyFromData = getComponentKeyFromData; const getContentTypeFromData = (data) => { if (!data || !data.sys || !data.sys.contentType || !data.sys.contentType.sys || !data.sys.contentType.sys.id) { return null; } return data.sys.contentType.sys.id; }; exports.getContentTypeFromData = getContentTypeFromData; const getContentTypeFromComponentKey = (componentKey, service) => { if ("string" !== typeof componentKey) { return null; } for (let i = 0; i < service.allUiComponents.length; i++) { const component = service.allUiComponents[i]; if (component.key === componentKey) { return component.contentType; } } return null; }; exports.getContentTypeFromComponentKey = getContentTypeFromComponentKey; const isArray = (dataType) => { return Array.isArray(dataType); }; exports.isArray = isArray; const isBaseComponentConfig = (dataType) => { return !Array.isArray(dataType) && "object" === typeof dataType; }; exports.isBaseComponentConfig = isBaseComponentConfig; const isRelationType = (dataType) => { return (0, exports.isArrayRelationType)(dataType) || (0, exports.isSingleRelationType)(dataType); }; exports.isRelationType = isRelationType; const isArrayRelationType = (dataType) => { if (!dataType || !dataType.multiple) { return false; } if (ui_types_1.TYPE_STRING === dataType.data || ui_types_1.TYPE_ASSET === dataType.data || ui_types_1.TYPE_LABELED_LINK === dataType.data) { return true; } const typeOfData = typeof dataType.data; return (!Array.isArray(dataType) && "object" === typeOfData) || (0, exports.isArray)(typeOfData); }; exports.isArrayRelationType = isArrayRelationType; const isSingleRelationType = (dataType) => { if (!dataType || !!dataType.multiple) { return false; } const typeOfData = typeof dataType.data; return (!Array.isArray(dataType) && "object" === typeOfData) || (0, exports.isArray)(typeOfData); }; exports.isSingleRelationType = isSingleRelationType; const getValueOfField = (data, locale) => { return "object" === typeof data && Object.keys(data).includes(locale) ? data[locale] : data; }; exports.getValueOfField = getValueOfField;