@becklyn/contentful-adapter
Version:
[](https://github.com/Becklyn-Studios/contentful-adapter/actions/workflows/ci.yml)
119 lines (118 loc) • 4.7 kB
JavaScript
;
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;