payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
109 lines (108 loc) • 13.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _defaultAccess = /*#__PURE__*/ _interop_require_default(require("../../auth/defaultAccess"));
const _sanitize = require("../../fields/config/sanitize");
const _types = require("../../fields/config/types");
const _mergeBaseFields = /*#__PURE__*/ _interop_require_default(require("../../fields/mergeBaseFields"));
const _translations = /*#__PURE__*/ _interop_require_default(require("../../translations"));
const _formatLabels = require("../../utilities/formatLabels");
const _baseFields = /*#__PURE__*/ _interop_require_default(require("../../versions/baseFields"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const sanitizeGlobals = (config)=>{
const { collections, globals } = config;
const sanitizedGlobals = globals.map((global)=>{
const sanitizedGlobal = {
...global
};
sanitizedGlobal.label = sanitizedGlobal.label || (0, _formatLabels.toWords)(sanitizedGlobal.slug);
// /////////////////////////////////
// Ensure that collection has required object structure
// /////////////////////////////////
sanitizedGlobal.endpoints = sanitizedGlobal.endpoints ?? [];
if (!sanitizedGlobal.hooks) sanitizedGlobal.hooks = {};
if (!sanitizedGlobal.access) sanitizedGlobal.access = {};
if (!sanitizedGlobal.admin) sanitizedGlobal.admin = {};
if (!sanitizedGlobal.access.read) sanitizedGlobal.access.read = _defaultAccess.default;
if (!sanitizedGlobal.access.update) sanitizedGlobal.access.update = _defaultAccess.default;
if (!sanitizedGlobal.hooks.beforeValidate) sanitizedGlobal.hooks.beforeValidate = [];
if (!sanitizedGlobal.hooks.beforeChange) sanitizedGlobal.hooks.beforeChange = [];
if (!sanitizedGlobal.hooks.afterChange) sanitizedGlobal.hooks.afterChange = [];
if (!sanitizedGlobal.hooks.beforeRead) sanitizedGlobal.hooks.beforeRead = [];
if (!sanitizedGlobal.hooks.afterRead) sanitizedGlobal.hooks.afterRead = [];
if (sanitizedGlobal.versions) {
if (sanitizedGlobal.versions === true) sanitizedGlobal.versions = {
drafts: false
};
if (sanitizedGlobal.versions.drafts) {
if (sanitizedGlobal.versions.drafts === true) {
sanitizedGlobal.versions.drafts = {
autosave: false
};
}
if (sanitizedGlobal.versions.drafts.autosave === true) {
sanitizedGlobal.versions.drafts.autosave = {
interval: 2000
};
}
sanitizedGlobal.fields = (0, _mergeBaseFields.default)(sanitizedGlobal.fields, _baseFields.default);
}
}
if (!sanitizedGlobal.custom) sanitizedGlobal.custom = {};
// /////////////////////////////////
// Sanitize fields
// /////////////////////////////////
let hasUpdatedAt = null;
let hasCreatedAt = null;
sanitizedGlobal.fields.some((field)=>{
if ((0, _types.fieldAffectsData)(field)) {
if (field.name === 'updatedAt') hasUpdatedAt = true;
if (field.name === 'createdAt') hasCreatedAt = true;
}
return hasCreatedAt && hasUpdatedAt;
});
if (!hasUpdatedAt) {
sanitizedGlobal.fields.push({
name: 'updatedAt',
admin: {
disableBulkEdit: true,
hidden: true
},
label: _translations.default['general:updatedAt'],
type: 'date'
});
}
if (!hasCreatedAt) {
sanitizedGlobal.fields.push({
name: 'createdAt',
admin: {
disableBulkEdit: true,
hidden: true
},
label: _translations.default['general:createdAt'],
type: 'date'
});
}
const validRelationships = collections.map((c)=>c.slug) || [];
sanitizedGlobal.fields = (0, _sanitize.sanitizeFields)({
config,
fields: sanitizedGlobal.fields,
validRelationships
});
return sanitizedGlobal;
});
return sanitizedGlobals;
};
const _default = sanitizeGlobals;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2NvbmZpZy9zYW5pdGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IGRlZmF1bHRBY2Nlc3MgZnJvbSAnLi4vLi4vYXV0aC9kZWZhdWx0QWNjZXNzJ1xuaW1wb3J0IHsgc2FuaXRpemVGaWVsZHMgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3Nhbml0aXplJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgbWVyZ2VCYXNlRmllbGRzIGZyb20gJy4uLy4uL2ZpZWxkcy9tZXJnZUJhc2VGaWVsZHMnXG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4uLy4uL3RyYW5zbGF0aW9ucydcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZm9ybWF0TGFiZWxzJ1xuaW1wb3J0IGJhc2VWZXJzaW9uRmllbGRzIGZyb20gJy4uLy4uL3ZlcnNpb25zL2Jhc2VGaWVsZHMnXG5cbmNvbnN0IHNhbml0aXplR2xvYmFscyA9IChjb25maWc6IENvbmZpZyk6IFNhbml0aXplZEdsb2JhbENvbmZpZ1tdID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9ucywgZ2xvYmFscyB9ID0gY29uZmlnXG5cbiAgY29uc3Qgc2FuaXRpemVkR2xvYmFscyA9IGdsb2JhbHMubWFwKChnbG9iYWwpID0+IHtcbiAgICBjb25zdCBzYW5pdGl6ZWRHbG9iYWwgPSB7IC4uLmdsb2JhbCB9XG5cbiAgICBzYW5pdGl6ZWRHbG9iYWwubGFiZWwgPSBzYW5pdGl6ZWRHbG9iYWwubGFiZWwgfHwgdG9Xb3JkcyhzYW5pdGl6ZWRHbG9iYWwuc2x1ZylcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEVuc3VyZSB0aGF0IGNvbGxlY3Rpb24gaGFzIHJlcXVpcmVkIG9iamVjdCBzdHJ1Y3R1cmVcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHNhbml0aXplZEdsb2JhbC5lbmRwb2ludHMgPSBzYW5pdGl6ZWRHbG9iYWwuZW5kcG9pbnRzID8/IFtdXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuaG9va3MpIHNhbml0aXplZEdsb2JhbC5ob29rcyA9IHt9XG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuYWNjZXNzKSBzYW5pdGl6ZWRHbG9iYWwuYWNjZXNzID0ge31cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5hZG1pbikgc2FuaXRpemVkR2xvYmFsLmFkbWluID0ge31cblxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmFjY2Vzcy5yZWFkKSBzYW5pdGl6ZWRHbG9iYWwuYWNjZXNzLnJlYWQgPSBkZWZhdWx0QWNjZXNzXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuYWNjZXNzLnVwZGF0ZSkgc2FuaXRpemVkR2xvYmFsLmFjY2Vzcy51cGRhdGUgPSBkZWZhdWx0QWNjZXNzXG5cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVWYWxpZGF0ZSkgc2FuaXRpemVkR2xvYmFsLmhvb2tzLmJlZm9yZVZhbGlkYXRlID0gW11cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVDaGFuZ2UpIHNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVDaGFuZ2UgPSBbXVxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmhvb2tzLmFmdGVyQ2hhbmdlKSBzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYWZ0ZXJDaGFuZ2UgPSBbXVxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmhvb2tzLmJlZm9yZVJlYWQpIHNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVSZWFkID0gW11cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5ob29rcy5hZnRlclJlYWQpIHNhbml0aXplZEdsb2JhbC5ob29rcy5hZnRlclJlYWQgPSBbXVxuXG4gICAgaWYgKHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucykge1xuICAgICAgaWYgKHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucyA9PT0gdHJ1ZSkgc2FuaXRpemVkR2xvYmFsLnZlcnNpb25zID0geyBkcmFmdHM6IGZhbHNlIH1cblxuICAgICAgaWYgKHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucy5kcmFmdHMpIHtcbiAgICAgICAgaWYgKHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucy5kcmFmdHMgPT09IHRydWUpIHtcbiAgICAgICAgICBzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMuZHJhZnRzID0ge1xuICAgICAgICAgICAgYXV0b3NhdmU6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMuZHJhZnRzLmF1dG9zYXZlID09PSB0cnVlKSB7XG4gICAgICAgICAgc2FuaXRpemVkR2xvYmFsLnZlcnNpb25zLmRyYWZ0cy5hdXRvc2F2ZSA9IHtcbiAgICAgICAgICAgIGludGVydmFsOiAyMDAwLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNhbml0aXplZEdsb2JhbC5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoc2FuaXRpemVkR2xvYmFsLmZpZWxkcywgYmFzZVZlcnNpb25GaWVsZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuY3VzdG9tKSBzYW5pdGl6ZWRHbG9iYWwuY3VzdG9tID0ge31cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFNhbml0aXplIGZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBoYXNVcGRhdGVkQXQgPSBudWxsXG4gICAgbGV0IGhhc0NyZWF0ZWRBdCA9IG51bGxcbiAgICBzYW5pdGl6ZWRHbG9iYWwuZmllbGRzLnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT09ICd1cGRhdGVkQXQnKSBoYXNVcGRhdGVkQXQgPSB0cnVlXG4gICAgICAgIGlmIChmaWVsZC5uYW1lID09PSAnY3JlYXRlZEF0JykgaGFzQ3JlYXRlZEF0ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0NyZWF0ZWRBdCAmJiBoYXNVcGRhdGVkQXRcbiAgICB9KVxuICAgIGlmICghaGFzVXBkYXRlZEF0KSB7XG4gICAgICBzYW5pdGl6ZWRHbG9iYWwuZmllbGRzLnB1c2goe1xuICAgICAgICBuYW1lOiAndXBkYXRlZEF0JyxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkaXNhYmxlQnVsa0VkaXQ6IHRydWUsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zWydnZW5lcmFsOnVwZGF0ZWRBdCddLFxuICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWhhc0NyZWF0ZWRBdCkge1xuICAgICAgc2FuaXRpemVkR2xvYmFsLmZpZWxkcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ2NyZWF0ZWRBdCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGlzYWJsZUJ1bGtFZGl0OiB0cnVlLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1snZ2VuZXJhbDpjcmVhdGVkQXQnXSxcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZFJlbGF0aW9uc2hpcHMgPSBjb2xsZWN0aW9ucy5tYXAoKGMpID0+IGMuc2x1ZykgfHwgW11cbiAgICBzYW5pdGl6ZWRHbG9iYWwuZmllbGRzID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgY29uZmlnLFxuICAgICAgZmllbGRzOiBzYW5pdGl6ZWRHbG9iYWwuZmllbGRzLFxuICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzLFxuICAgIH0pXG5cbiAgICByZXR1cm4gc2FuaXRpemVkR2xvYmFsIGFzIFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICB9KVxuXG4gIHJldHVybiBzYW5pdGl6ZWRHbG9iYWxzXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNhbml0aXplR2xvYmFsc1xuIl0sIm5hbWVzIjpbInNhbml0aXplR2xvYmFscyIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZ2xvYmFscyIsInNhbml0aXplZEdsb2JhbHMiLCJtYXAiLCJnbG9iYWwiLCJzYW5pdGl6ZWRHbG9iYWwiLCJsYWJlbCIsInRvV29yZHMiLCJzbHVnIiwiZW5kcG9pbnRzIiwiaG9va3MiLCJhY2Nlc3MiLCJhZG1pbiIsInJlYWQiLCJkZWZhdWx0QWNjZXNzIiwidXBkYXRlIiwiYmVmb3JlVmFsaWRhdGUiLCJiZWZvcmVDaGFuZ2UiLCJhZnRlckNoYW5nZSIsImJlZm9yZVJlYWQiLCJhZnRlclJlYWQiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsImF1dG9zYXZlIiwiaW50ZXJ2YWwiLCJmaWVsZHMiLCJtZXJnZUJhc2VGaWVsZHMiLCJiYXNlVmVyc2lvbkZpZWxkcyIsImN1c3RvbSIsImhhc1VwZGF0ZWRBdCIsImhhc0NyZWF0ZWRBdCIsInNvbWUiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwicHVzaCIsImRpc2FibGVCdWxrRWRpdCIsImhpZGRlbiIsInRyYW5zbGF0aW9ucyIsInR5cGUiLCJ2YWxpZFJlbGF0aW9uc2hpcHMiLCJjIiwic2FuaXRpemVGaWVsZHMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBMkdBOzs7ZUFBQTs7O3NFQXhHMEI7MEJBQ0s7dUJBQ0U7d0VBQ0w7cUVBQ0g7OEJB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