import { contentTypes } from '@strapi/utils'; import { getDefaultMainField } from '../../services/utils/configuration/attributes.mjs'; const FALLBACK_MAIN_FIELD = 'documentId'; /** * Removes invalid entries left in the fields array after permission sanitization. */ const compactSanitizedFields = (fields)=>{ if (!Array.isArray(fields)) { return undefined; } return fields.filter((field)=>typeof field === 'string'); }; /** * Resolves the main field used for homepage widgets, falling back when the user cannot read it. */ const resolveReadableMainField = (contentType, configuration, permissionChecker)=>{ const candidateMainField = configuration?.settings?.mainField ?? getDefaultMainField(contentType); if (permissionChecker.cannot.read(null, candidateMainField)) { return FALLBACK_MAIN_FIELD; } return candidateMainField; }; /** * Builds the fields array requested before permission sanitization. */ const buildHomepageQueryFields = (contentType, mainField)=>{ const fields = [ FALLBACK_MAIN_FIELD, 'updatedAt' ]; if (contentTypes.hasDraftAndPublish(contentType)) { fields.push('publishedAt'); } if (mainField !== FALLBACK_MAIN_FIELD && !fields.includes(mainField)) { fields.push(mainField); } if (contentType.pluginOptions?.i18n?.localized) { fields.push('locale'); } return fields; }; /** * Picks a main field that is present in the sanitized fields selection. */ const resolveTitleField = (mainField, sanitizedFields)=>{ if (sanitizedFields?.includes(mainField)) { return mainField; } return FALLBACK_MAIN_FIELD; }; export { FALLBACK_MAIN_FIELD, buildHomepageQueryFields, compactSanitizedFields, resolveReadableMainField, resolveTitleField }; //# sourceMappingURL=homepage-query-utils.mjs.map