payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
95 lines (94 loc) • 9.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "fieldSchemaToJSON", {
enumerable: true,
get: function() {
return fieldSchemaToJSON;
}
});
const fieldSchemaToJSON = (fields)=>{
return fields.reduce((acc, field)=>{
let result = acc;
switch(field.type){
case 'group':
acc.push({
name: field.name,
fields: fieldSchemaToJSON(field.fields),
type: field.type
});
break;
case 'array':
acc.push({
name: field.name,
fields: fieldSchemaToJSON([
...field.fields,
{
name: 'id',
type: 'text'
}
]),
type: field.type
});
break;
case 'blocks':
acc.push({
name: field.name,
blocks: field.blocks.reduce((acc, block)=>{
acc[block.slug] = {
fields: fieldSchemaToJSON([
...block.fields,
{
name: 'id',
type: 'text'
}
])
};
return acc;
}, {}),
type: field.type
});
break;
case 'row':
case 'collapsible':
result = result.concat(fieldSchemaToJSON(field.fields));
break;
case 'tabs':
{
let tabFields = [];
field.tabs.forEach((tab)=>{
if ('name' in tab) {
tabFields.push({
name: tab.name,
fields: fieldSchemaToJSON(tab.fields),
type: field.type
});
return;
}
tabFields = tabFields.concat(fieldSchemaToJSON(tab.fields));
});
result = result.concat(tabFields);
break;
}
case 'relationship':
case 'upload':
acc.push({
name: field.name,
hasMany: 'hasMany' in field ? Boolean(field.hasMany) : false,
relationTo: field.relationTo,
type: field.type
});
break;
default:
if ('name' in field) {
acc.push({
name: field.name,
type: field.type
});
}
}
return result;
}, []);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmllbGRTY2hlbWFUb0pTT04udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZFR5cGVzIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IHR5cGUgRmllbGRTY2hlbWFKU09OID0ge1xuICBibG9ja3M/OiBGaWVsZFNjaGVtYUpTT04gLy8gVE9ETzogY29uZGl0aW9uYWxseSBhZGQgYmFzZWQgb24gYHR5cGVgXG4gIGZpZWxkcz86IEZpZWxkU2NoZW1hSlNPTiAvLyBUT0RPOiBjb25kaXRpb25hbGx5IGFkZCBiYXNlZCBvbiBgdHlwZWBcbiAgaGFzTWFueT86IGJvb2xlYW4gLy8gVE9ETzogY29uZGl0aW9uYWxseSBhZGQgYmFzZWQgb24gYHR5cGVgXG4gIG5hbWU6IHN0cmluZ1xuICByZWxhdGlvblRvPzogc3RyaW5nIC8vIFRPRE86IGNvbmRpdGlvbmFsbHkgYWRkIGJhc2VkIG9uIGB0eXBlYFxuICBzbHVnPzogc3RyaW5nIC8vIFRPRE86IGNvbmRpdGlvbmFsbHkgYWRkIGJhc2VkIG9uIGB0eXBlYFxuICB0eXBlOiBrZXlvZiBGaWVsZFR5cGVzXG59W11cblxuZXhwb3J0IGNvbnN0IGZpZWxkU2NoZW1hVG9KU09OID0gKGZpZWxkczogRmllbGRbXSk6IEZpZWxkU2NoZW1hSlNPTiA9PiB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGFjY1xuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICdncm91cCc6XG4gICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIGZpZWxkczogZmllbGRTY2hlbWFUb0pTT04oZmllbGQuZmllbGRzKSxcbiAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZFNjaGVtYVRvSlNPTihbXG4gICAgICAgICAgICAuLi5maWVsZC5maWVsZHMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgfSlcblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdibG9ja3MnOlxuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBibG9ja3M6IGZpZWxkLmJsb2Nrcy5yZWR1Y2UoKGFjYywgYmxvY2spID0+IHtcbiAgICAgICAgICAgIGFjY1tibG9jay5zbHVnXSA9IHtcbiAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZFNjaGVtYVRvSlNPTihbXG4gICAgICAgICAgICAgICAgLi4uYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgfSlcblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOlxuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZpZWxkU2NoZW1hVG9KU09OKGZpZWxkLmZpZWxkcykpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGxldCB0YWJGaWVsZHMgPSBbXVxuXG4gICAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgaWYgKCduYW1lJyBpbiB0YWIpIHtcbiAgICAgICAgICAgIHRhYkZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogdGFiLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGRTY2hlbWFUb0pTT04odGFiLmZpZWxkcyksXG4gICAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFiRmllbGRzID0gdGFiRmllbGRzLmNvbmNhdChmaWVsZFNjaGVtYVRvSlNPTih0YWIuZmllbGRzKSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRhYkZpZWxkcylcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgaGFzTWFueTogJ2hhc01hbnknIGluIGZpZWxkID8gQm9vbGVhbihmaWVsZC5oYXNNYW55KSA6IGZhbHNlLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICByZWxhdGlvblRvOiBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCduYW1lJyBpbiBmaWVsZCkge1xuICAgICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIFtdKVxufVxuIl0sIm5hbWVzIjpbImZpZWxkU2NoZW1hVG9KU09OIiwiZmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJyZXN1bHQiLCJ0eXBlIiwicHVzaCIsIm5hbWUiLCJibG9ja3MiLCJibG9jayIsInNsdWciLCJjb25jYXQiLCJ0YWJGaWVsZHMiLCJ0YWJzIiwiZm9yRWFjaCIsInRhYiIsImhhc01hbnkiLCJCb29sZWFuIiwicmVsYXRpb25UbyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFhYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsb0JBQW9CLENBQUNDO0lBQ2hDLE9BQU9BLE9BQU9DLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQztRQUN6QixJQUFJQyxTQUFTRjtRQUViLE9BQVFDLE1BQU1FLElBQUk7WUFDaEIsS0FBSztnQkFDSEgsSUFBSUksSUFBSSxDQUFDO29CQUNQQyxNQUFNSixNQUFNSSxJQUFJO29CQUNoQlAsUUFBUUQsa0JBQWtCSSxNQUFNSCxNQUFNO29CQUN0Q0ssTUFBTUYsTUFBTUUsSUFBSTtnQkFDbEI7Z0JBRUE7WUFFRixLQUFLO2dCQUNISCxJQUFJSSxJQUFJLENBQUM7b0JBQ1BDLE1BQU1KLE1BQU1JLElBQUk7b0JBQ2hCUCxRQUFRRCxrQkFBa0I7MkJBQ3JCSSxNQUFNSCxNQUFNO3dCQUNmOzRCQUNFTyxNQUFNOzRCQUNORixNQUFNO3dCQUNSO3FCQUNEO29CQUNEQSxNQUFNRixNQUFNRSxJQUFJO2dCQUNsQjtnQkFFQTtZQUVGLEtBQUs7Z0JBQ0hILElBQUlJLElBQUksQ0FBQztvQkFDUEMsTUFBTUosTUFBTUksSUFBSTtvQkFDaEJDLFFBQVFMLE1BQU1LLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDLENBQUNDLEtBQUtPO3dCQUNoQ1AsR0FBRyxDQUFDTyxNQUFNQyxJQUFJLENBQUMsR0FBRzs0QkFDaEJWLFFBQVFELGtCQUFrQjttQ0FDckJVLE1BQU1ULE1BQU07Z0NBQ2Y7b0NBQ0VPLE1BQU07b0NBQ05GLE1BQU07Z0NBQ1I7NkJBQ0Q7d0JBQ0g7d0JBRUEsT0FBT0g7b0JBQ1QsR0FBRyxDQUFDO29CQUNKRyxNQUFNRixNQUFNRSxJQUFJO2dCQUNsQjtnQkFFQTtZQUVGLEtBQUs7WUFDTCxLQUFLO2dCQUNIRCxTQUFTQSxPQUFPTyxNQUFNLENBQUNaLGtCQUFrQkksTUFBTUgsTUFBTTtnQkFDckQ7WUFFRixLQUFLO2dCQUFRO29CQUNYLElBQUlZLFlBQVksRUFBRTtvQkFFbEJULE1BQU1VLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUNDO3dCQUNsQixJQUFJLFVBQVVBLEtBQUs7NEJBQ2pCSCxVQUFVTixJQUFJLENBQUM7Z0NBQ2JDLE1BQU1RLElBQUlSLElBQUk7Z0NBQ2RQLFFBQVFELGtCQUFrQmdCLElBQUlmLE1BQU07Z0NBQ3BDSyxNQUFNRixNQUFNRSxJQUFJOzRCQUNsQjs0QkFDQTt3QkFDRjt3QkFFQU8sWUFBWUEsVUFBVUQsTUFBTSxDQUFDWixrQkFBa0JnQixJQUFJZixNQUFNO29CQUMzRDtvQkFFQUksU0FBU0EsT0FBT08sTUFBTSxDQUFDQztvQkFFdkI7Z0JBQ0Y7WUFFQSxLQUFLO1lBQ0wsS0FBSztnQkFDSFYsSUFBSUksSUFBSSxDQUFDO29CQUNQQyxNQUFNSixNQUFNSSxJQUFJO29CQUNoQlMsU0FBUyxhQUFhYixRQUFRYyxRQUFRZCxNQUFNYSxPQUFPLElBQUk7b0JBQ3ZERSxZQUFZZixNQUFNZSxVQUFVO29CQUM1QmIsTUFBTUYsTUFBTUUsSUFBSTtnQkFDbEI7Z0JBRUE7WUFFRjtnQkFDRSxJQUFJLFVBQVVGLE9BQU87b0JBQ25CRCxJQUFJSSxJQUFJLENBQUM7d0JBQ1BDLE1BQU1KLE1BQU1JLElBQUk7d0JBQ2hCRixNQUFNRixNQUFNRSxJQUFJO29CQUNsQjtnQkFDRjtRQUNKO1FBRUEsT0FBT0Q7SUFDVCxHQUFHLEVBQUU7QUFDUCJ9