Files
klz-cables.com/.pnpm-store/v10/files/d6/9aa83942efa5c5043034e2ec58ccc277b654e7d4bad18a3958bd834caf737bf567ece3ad0264f649eb4aa84f3dc6f6af67f80742f6837c40321c676d3ea5b6
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

1 line
17 KiB
Plaintext

{"version":3,"sources":["../../../src/collections/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type {\n CollectionConfig,\n SanitizedCollectionConfig,\n SanitizedJoin,\n SanitizedJoins,\n} from './types.js'\n\nimport { authCollectionEndpoints } from '../../auth/endpoints/index.js'\nimport { getBaseAuthFields } from '../../auth/getAuthFields.js'\nimport { TimestampsRequired } from '../../errors/TimestampsRequired.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { mergeBaseFields } from '../../fields/mergeBaseFields.js'\nimport { uploadCollectionEndpoints } from '../../uploads/endpoints/index.js'\nimport { getBaseUploadFields } from '../../uploads/getBaseFields.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { formatLabels } from '../../utilities/formatLabels.js'\nimport { miniChalk } from '../../utilities/miniChalk.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { baseVersionFields } from '../../versions/baseFields.js'\nimport { versionDefaults } from '../../versions/defaults.js'\nimport { defaultCollectionEndpoints } from '../endpoints/index.js'\nimport {\n addDefaultsToAuthConfig,\n addDefaultsToCollectionConfig,\n addDefaultsToLoginWithUsernameConfig,\n} from './defaults.js'\nimport { sanitizeCompoundIndexes } from './sanitizeCompoundIndexes.js'\nimport { validateUseAsTitle } from './useAsTitle.js'\n\nexport const sanitizeCollection = async (\n config: Config,\n collection: CollectionConfig,\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>,\n _validRelationships?: string[],\n): Promise<SanitizedCollectionConfig> => {\n if (collection._sanitized) {\n return collection as SanitizedCollectionConfig\n }\n\n collection._sanitized = true\n\n // /////////////////////////////////\n // Make copy of collection config\n // /////////////////////////////////\n\n const sanitized: CollectionConfig = addDefaultsToCollectionConfig(collection)\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n\n const validRelationships = _validRelationships ?? config.collections!.map((c) => c.slug) ?? []\n\n const joins: SanitizedJoins = {}\n\n const polymorphicJoins: SanitizedJoin[] = []\n\n sanitized.fields = await sanitizeFields({\n collectionConfig: sanitized,\n config,\n fields: sanitized.fields,\n joinPath: '',\n joins,\n parentIsLocalized: false,\n polymorphicJoins,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n if (sanitized.endpoints !== false) {\n if (!sanitized.endpoints) {\n sanitized.endpoints = []\n }\n\n if (sanitized.auth) {\n for (const endpoint of authCollectionEndpoints) {\n sanitized.endpoints.push(endpoint)\n }\n }\n\n if (sanitized.upload) {\n for (const endpoint of uploadCollectionEndpoints) {\n sanitized.endpoints.push(endpoint)\n }\n }\n\n for (const endpoint of defaultCollectionEndpoints) {\n sanitized.endpoints.push(endpoint)\n }\n }\n\n if (sanitized.timestamps !== false) {\n // add default timestamps fields only as needed\n let hasUpdatedAt: boolean | null = null\n let hasCreatedAt: boolean | null = null\n let hasDeletedAt: boolean | null = null\n\n sanitized.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') {\n hasUpdatedAt = true\n }\n\n if (field.name === 'createdAt') {\n hasCreatedAt = true\n }\n\n if (field.name === 'deletedAt') {\n hasDeletedAt = true\n }\n }\n\n return hasCreatedAt && hasUpdatedAt && (!sanitized.trash || hasDeletedAt)\n })\n\n if (!hasUpdatedAt) {\n sanitized.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n index: true,\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n\n if (!hasCreatedAt) {\n sanitized.fields.push({\n name: 'createdAt',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.\n type: 'date',\n index: true,\n label: ({ t }) => t('general:createdAt'),\n })\n }\n\n if (sanitized.trash && !hasDeletedAt) {\n sanitized.fields.push({\n name: 'deletedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n index: true,\n label: ({ t }) => t('general:deletedAt'),\n })\n }\n }\n\n const defaultLabels = formatLabels(sanitized.slug)\n\n sanitized.labels = {\n plural: sanitized.labels?.plural || defaultLabels.plural,\n singular: sanitized.labels?.singular || defaultLabels.singular,\n }\n\n if (sanitized.versions) {\n if (sanitized.timestamps === false) {\n throw new TimestampsRequired(collection)\n }\n\n if (sanitized.versions === true) {\n sanitized.versions = {\n drafts: false,\n maxPerDoc: 100,\n }\n }\n\n sanitized.versions.maxPerDoc =\n typeof sanitized.versions.maxPerDoc === 'number' ? sanitized.versions.maxPerDoc : 100\n\n if (sanitized.versions.drafts) {\n if (sanitized.versions.drafts === true) {\n sanitized.versions.drafts = {\n autosave: false,\n validate: false,\n }\n }\n\n const hasLocalizedFields = traverseForLocalizedFields(sanitized.fields)\n\n if (config.localization) {\n if (hasLocalizedFields && sanitized.versions.drafts.localizeStatus === undefined) {\n sanitized.versions.drafts.localizeStatus = false\n }\n }\n\n // TODO v4: remove this sanitization check, should not need to enable the experimental flag\n if (sanitized.versions.drafts.localizeStatus && !config.experimental?.localizeStatus) {\n sanitized.versions.drafts.localizeStatus = false\n console.log(\n miniChalk.yellowBold(\n `Warning: \"localizeStatus\" for drafts is an experimental feature. To enable, set \"experimental.localizeStatus\" to true in your Payload config.`,\n ),\n )\n }\n\n if (sanitized.versions.drafts.autosave === true) {\n sanitized.versions.drafts.autosave = {\n interval: versionDefaults.autosaveInterval,\n }\n }\n\n if (sanitized.versions.drafts.validate === undefined) {\n sanitized.versions.drafts.validate = false\n }\n\n sanitized.fields = mergeBaseFields(\n sanitized.fields,\n baseVersionFields({\n localized: sanitized.versions.drafts.localizeStatus ?? false,\n }),\n )\n }\n } else {\n delete sanitized.versions\n }\n\n if (sanitized.folders === true) {\n sanitized.folders = {\n browseByFolder: true,\n }\n } else if (sanitized.folders) {\n sanitized.folders.browseByFolder = sanitized.folders.browseByFolder ?? true\n }\n\n if (sanitized.upload) {\n if (sanitized.upload === true) {\n sanitized.upload = {}\n }\n\n sanitized.upload.cacheTags = sanitized.upload?.cacheTags ?? true\n sanitized.upload.bulkUpload = sanitized.upload?.bulkUpload ?? true\n sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug\n sanitized.admin!.useAsTitle =\n sanitized.admin?.useAsTitle && sanitized.admin.useAsTitle !== 'id'\n ? sanitized.admin.useAsTitle\n : 'filename'\n\n const uploadFields = getBaseUploadFields({\n collection: sanitized,\n config,\n })\n\n sanitized.fields = mergeBaseFields(sanitized.fields, uploadFields)\n }\n\n if (sanitized.auth) {\n sanitized.auth = addDefaultsToAuthConfig(\n typeof sanitized.auth === 'boolean' ? {} : sanitized.auth,\n )\n\n // disable duplicate for auth enabled collections by default\n sanitized.disableDuplicate = sanitized.disableDuplicate ?? true\n\n if (sanitized.auth.loginWithUsername) {\n if (sanitized.auth.loginWithUsername === true) {\n sanitized.auth.loginWithUsername = addDefaultsToLoginWithUsernameConfig({})\n } else {\n const loginWithUsernameWithDefaults = addDefaultsToLoginWithUsernameConfig(\n sanitized.auth.loginWithUsername,\n )\n\n // if allowEmailLogin is false, requireUsername must be true\n if (loginWithUsernameWithDefaults.allowEmailLogin === false) {\n loginWithUsernameWithDefaults.requireUsername = true\n }\n sanitized.auth.loginWithUsername = loginWithUsernameWithDefaults\n }\n } else {\n sanitized.auth.loginWithUsername = false\n }\n\n if (!collection?.admin?.useAsTitle) {\n sanitized.admin!.useAsTitle = sanitized.auth.loginWithUsername ? 'username' : 'email'\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, getBaseAuthFields(sanitized.auth))\n }\n\n if (collection?.admin?.pagination?.limits?.length) {\n sanitized.admin!.pagination!.limits = collection.admin.pagination.limits\n }\n\n validateUseAsTitle(sanitized)\n\n const sanitizedConfig = sanitized as SanitizedCollectionConfig\n\n sanitizedConfig.joins = joins\n sanitizedConfig.polymorphicJoins = polymorphicJoins\n\n sanitizedConfig.flattenedFields = flattenAllFields({ fields: sanitizedConfig.fields })\n\n sanitizedConfig.sanitizedIndexes = sanitizeCompoundIndexes({\n fields: sanitizedConfig.flattenedFields,\n indexes: sanitizedConfig.indexes,\n })\n\n return sanitizedConfig\n}\n"],"names":["authCollectionEndpoints","getBaseAuthFields","TimestampsRequired","sanitizeFields","fieldAffectsData","mergeBaseFields","uploadCollectionEndpoints","getBaseUploadFields","flattenAllFields","formatLabels","miniChalk","traverseForLocalizedFields","baseVersionFields","versionDefaults","defaultCollectionEndpoints","addDefaultsToAuthConfig","addDefaultsToCollectionConfig","addDefaultsToLoginWithUsernameConfig","sanitizeCompoundIndexes","validateUseAsTitle","sanitizeCollection","config","collection","richTextSanitizationPromises","_validRelationships","_sanitized","sanitized","validRelationships","collections","map","c","slug","joins","polymorphicJoins","fields","collectionConfig","joinPath","parentIsLocalized","endpoints","auth","endpoint","push","upload","timestamps","hasUpdatedAt","hasCreatedAt","hasDeletedAt","some","field","name","trash","type","admin","disableBulkEdit","hidden","index","label","t","defaultLabels","labels","plural","singular","versions","drafts","maxPerDoc","autosave","validate","hasLocalizedFields","localization","localizeStatus","undefined","experimental","console","log","yellowBold","interval","autosaveInterval","localized","folders","browseByFolder","cacheTags","bulkUpload","staticDir","useAsTitle","uploadFields","disableDuplicate","loginWithUsername","loginWithUsernameWithDefaults","allowEmailLogin","requireUsername","pagination","limits","length","sanitizedConfig","flattenedFields","sanitizedIndexes","indexes"],"mappings":"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"}