payload 4.0.0-internal.2fddfc0 → 4.0.0-internal.3aa3d85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +11 -0
  3. package/dist/admin/RichText.d.ts +1 -21
  4. package/dist/admin/RichText.d.ts.map +1 -1
  5. package/dist/admin/RichText.js.map +1 -1
  6. package/dist/admin/forms/Field.d.ts +2 -2
  7. package/dist/admin/forms/Field.d.ts.map +1 -1
  8. package/dist/admin/forms/Field.js.map +1 -1
  9. package/dist/admin/forms/Form.d.ts +0 -29
  10. package/dist/admin/forms/Form.d.ts.map +1 -1
  11. package/dist/admin/forms/Form.js.map +1 -1
  12. package/dist/admin/functions/index.d.ts +1 -1
  13. package/dist/admin/functions/index.js.map +1 -1
  14. package/dist/admin/types.d.ts +1 -0
  15. package/dist/admin/types.d.ts.map +1 -1
  16. package/dist/admin/types.js.map +1 -1
  17. package/dist/auth/operations/auth.d.ts +2 -2
  18. package/dist/auth/operations/auth.d.ts.map +1 -1
  19. package/dist/auth/operations/auth.js.map +1 -1
  20. package/dist/auth/operations/login.d.ts +2 -1
  21. package/dist/auth/operations/login.d.ts.map +1 -1
  22. package/dist/auth/operations/login.js.map +1 -1
  23. package/dist/auth/operations/me.js.map +1 -1
  24. package/dist/auth/operations/refresh.d.ts.map +1 -1
  25. package/dist/auth/operations/refresh.js +9 -3
  26. package/dist/auth/operations/refresh.js.map +1 -1
  27. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  28. package/dist/auth/operations/resetPassword.js.map +1 -1
  29. package/dist/auth/sendVerificationEmail.d.ts +2 -2
  30. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  31. package/dist/auth/sendVerificationEmail.js +1 -1
  32. package/dist/auth/sendVerificationEmail.js.map +1 -1
  33. package/dist/auth/sessions.d.ts +4 -5
  34. package/dist/auth/sessions.d.ts.map +1 -1
  35. package/dist/auth/sessions.js +5 -3
  36. package/dist/auth/sessions.js.map +1 -1
  37. package/dist/auth/strategies/apiKey.js.map +1 -1
  38. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  39. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  40. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  41. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  42. package/dist/auth/types.d.ts +28 -21
  43. package/dist/auth/types.d.ts.map +1 -1
  44. package/dist/auth/types.js.map +1 -1
  45. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  46. package/dist/bin/generateImportMap/iterateCollections.js +10 -0
  47. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  48. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
  49. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +11 -3
  50. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
  51. package/dist/collections/config/client.d.ts +1 -1
  52. package/dist/collections/config/client.d.ts.map +1 -1
  53. package/dist/collections/config/client.js +1 -0
  54. package/dist/collections/config/client.js.map +1 -1
  55. package/dist/collections/config/defaults.d.ts +0 -4
  56. package/dist/collections/config/defaults.d.ts.map +1 -1
  57. package/dist/collections/config/defaults.js +0 -15
  58. package/dist/collections/config/defaults.js.map +1 -1
  59. package/dist/collections/config/types.d.ts +6 -0
  60. package/dist/collections/config/types.d.ts.map +1 -1
  61. package/dist/collections/config/types.js.map +1 -1
  62. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  63. package/dist/collections/operations/findDistinct.js +1 -0
  64. package/dist/collections/operations/findDistinct.js.map +1 -1
  65. package/dist/collections/operations/local/count.d.ts +3 -3
  66. package/dist/collections/operations/local/count.d.ts.map +1 -1
  67. package/dist/collections/operations/local/count.js.map +1 -1
  68. package/dist/collections/operations/local/countVersions.d.ts +3 -3
  69. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  70. package/dist/collections/operations/local/countVersions.js.map +1 -1
  71. package/dist/collections/operations/local/create.d.ts +3 -3
  72. package/dist/collections/operations/local/create.d.ts.map +1 -1
  73. package/dist/collections/operations/local/create.js.map +1 -1
  74. package/dist/collections/operations/local/delete.d.ts +3 -3
  75. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  76. package/dist/collections/operations/local/delete.js.map +1 -1
  77. package/dist/collections/operations/local/duplicate.d.ts +3 -3
  78. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  79. package/dist/collections/operations/local/duplicate.js.map +1 -1
  80. package/dist/collections/operations/local/find.d.ts +3 -3
  81. package/dist/collections/operations/local/find.d.ts.map +1 -1
  82. package/dist/collections/operations/local/find.js.map +1 -1
  83. package/dist/collections/operations/local/findByID.d.ts +3 -3
  84. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  85. package/dist/collections/operations/local/findByID.js.map +1 -1
  86. package/dist/collections/operations/local/findDistinct.d.ts +2 -2
  87. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  88. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  89. package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
  90. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  91. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  92. package/dist/collections/operations/local/findVersions.d.ts +3 -3
  93. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  94. package/dist/collections/operations/local/findVersions.js.map +1 -1
  95. package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
  96. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  97. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  98. package/dist/collections/operations/local/update.d.ts +3 -3
  99. package/dist/collections/operations/local/update.d.ts.map +1 -1
  100. package/dist/collections/operations/local/update.js.map +1 -1
  101. package/dist/collections/operations/utilities/types.d.ts +0 -9
  102. package/dist/collections/operations/utilities/types.d.ts.map +1 -1
  103. package/dist/collections/operations/utilities/types.js.map +1 -1
  104. package/dist/config/client.d.ts +2 -2
  105. package/dist/config/client.d.ts.map +1 -1
  106. package/dist/config/client.js.map +1 -1
  107. package/dist/config/defaults.d.ts +0 -4
  108. package/dist/config/defaults.d.ts.map +1 -1
  109. package/dist/config/defaults.js +0 -78
  110. package/dist/config/defaults.js.map +1 -1
  111. package/dist/config/definePlugin.d.ts +10 -10
  112. package/dist/config/definePlugin.d.ts.map +1 -1
  113. package/dist/config/definePlugin.js +7 -11
  114. package/dist/config/definePlugin.js.map +1 -1
  115. package/dist/config/sanitize.d.ts.map +1 -1
  116. package/dist/config/sanitize.js +137 -13
  117. package/dist/config/sanitize.js.map +1 -1
  118. package/dist/config/types.d.ts +35 -3
  119. package/dist/config/types.d.ts.map +1 -1
  120. package/dist/config/types.js.map +1 -1
  121. package/dist/exports/internal.d.ts +1 -0
  122. package/dist/exports/internal.d.ts.map +1 -1
  123. package/dist/exports/internal.js +1 -0
  124. package/dist/exports/internal.js.map +1 -1
  125. package/dist/exports/shared.d.ts +3 -2
  126. package/dist/exports/shared.d.ts.map +1 -1
  127. package/dist/exports/shared.js +2 -1
  128. package/dist/exports/shared.js.map +1 -1
  129. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  130. package/dist/fields/baseFields/slug/countVersions.js +6 -8
  131. package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
  132. package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
  133. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  134. package/dist/fields/baseFields/slug/generateSlug.js +53 -73
  135. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  136. package/dist/fields/baseFields/slug/types.d.ts +14 -0
  137. package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
  138. package/dist/fields/baseFields/slug/types.js +6 -0
  139. package/dist/fields/baseFields/slug/types.js.map +1 -0
  140. package/dist/fields/config/client.d.ts +1 -1
  141. package/dist/fields/config/client.d.ts.map +1 -1
  142. package/dist/fields/config/client.js +2 -1
  143. package/dist/fields/config/client.js.map +1 -1
  144. package/dist/fields/config/sanitize.d.ts.map +1 -1
  145. package/dist/fields/config/sanitize.js +39 -0
  146. package/dist/fields/config/sanitize.js.map +1 -1
  147. package/dist/fields/config/types.d.ts +44 -8
  148. package/dist/fields/config/types.d.ts.map +1 -1
  149. package/dist/fields/config/types.js.map +1 -1
  150. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  151. package/dist/fields/hooks/afterRead/promise.js +11 -1
  152. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  153. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  154. package/dist/fields/hooks/beforeValidate/promise.js +10 -1
  155. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  156. package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
  157. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  158. package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
  159. package/dist/fields/sortableFieldTypes.js +1 -0
  160. package/dist/fields/sortableFieldTypes.js.map +1 -1
  161. package/dist/fields/validations.d.ts +4 -1
  162. package/dist/fields/validations.d.ts.map +1 -1
  163. package/dist/fields/validations.js +7 -0
  164. package/dist/fields/validations.js.map +1 -1
  165. package/dist/globals/operations/local/countVersions.d.ts +3 -3
  166. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  167. package/dist/globals/operations/local/countVersions.js.map +1 -1
  168. package/dist/globals/operations/local/findOne.d.ts +3 -3
  169. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  170. package/dist/globals/operations/local/findOne.js.map +1 -1
  171. package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
  172. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  173. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  174. package/dist/globals/operations/local/findVersions.d.ts +3 -3
  175. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  176. package/dist/globals/operations/local/findVersions.js.map +1 -1
  177. package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
  178. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  179. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  180. package/dist/globals/operations/local/update.d.ts +3 -3
  181. package/dist/globals/operations/local/update.d.ts.map +1 -1
  182. package/dist/globals/operations/local/update.js.map +1 -1
  183. package/dist/index.bundled.d.ts +365 -300
  184. package/dist/index.d.ts +59 -15
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +1 -2
  187. package/dist/index.js.map +1 -1
  188. package/dist/preferences/keys.d.ts +4 -0
  189. package/dist/preferences/keys.d.ts.map +1 -1
  190. package/dist/preferences/keys.js +4 -1
  191. package/dist/preferences/keys.js.map +1 -1
  192. package/dist/preferences/types.d.ts +15 -0
  193. package/dist/preferences/types.d.ts.map +1 -1
  194. package/dist/preferences/types.js +3 -1
  195. package/dist/preferences/types.js.map +1 -1
  196. package/dist/types/index.d.ts +8 -3
  197. package/dist/types/index.d.ts.map +1 -1
  198. package/dist/types/index.js.map +1 -1
  199. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  200. package/dist/uploads/fetchAPI-multipart/processMultipart.js +1 -14
  201. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  202. package/dist/uploads/matchMimeType.d.ts +8 -0
  203. package/dist/uploads/matchMimeType.d.ts.map +1 -0
  204. package/dist/uploads/matchMimeType.js +19 -0
  205. package/dist/uploads/matchMimeType.js.map +1 -0
  206. package/dist/uploads/matchMimeType.spec.js +66 -0
  207. package/dist/uploads/matchMimeType.spec.js.map +1 -0
  208. package/dist/uploads/types.d.ts +21 -0
  209. package/dist/uploads/types.d.ts.map +1 -1
  210. package/dist/uploads/types.js.map +1 -1
  211. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  212. package/dist/utilities/addDataAndFileToRequest.js +6 -0
  213. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  214. package/dist/utilities/configToJSONSchema.d.ts +13 -4
  215. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  216. package/dist/utilities/configToJSONSchema.js +139 -61
  217. package/dist/utilities/configToJSONSchema.js.map +1 -1
  218. package/dist/utilities/configToJSONSchema.spec.js +319 -0
  219. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  220. package/dist/utilities/createLocalReq.d.ts +2 -2
  221. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  222. package/dist/utilities/createLocalReq.js.map +1 -1
  223. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  224. package/dist/utilities/createPayloadRequest.js +1 -0
  225. package/dist/utilities/createPayloadRequest.js.map +1 -1
  226. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  227. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  228. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  229. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
  230. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  231. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +19 -2
  232. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  233. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  234. package/dist/utilities/isURLAllowed.js +9 -3
  235. package/dist/utilities/isURLAllowed.js.map +1 -1
  236. package/dist/utilities/isURLAllowed.spec.js +78 -0
  237. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  238. package/dist/utilities/telemetry/conf/envPaths.d.ts.map +1 -1
  239. package/dist/utilities/telemetry/conf/envPaths.js +40 -31
  240. package/dist/utilities/telemetry/conf/envPaths.js.map +1 -1
  241. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  242. package/dist/utilities/telemetry/events/adminInit.js +2 -3
  243. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  244. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  245. package/dist/utilities/telemetry/events/serverInit.js +2 -3
  246. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  247. package/dist/utilities/telemetry/index.d.ts +14 -3
  248. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  249. package/dist/utilities/telemetry/index.js +6 -1
  250. package/dist/utilities/telemetry/index.js.map +1 -1
  251. package/dist/utilities/telemetry/index.spec.js +43 -0
  252. package/dist/utilities/telemetry/index.spec.js.map +1 -0
  253. package/dist/versions/schedule/job.js.map +1 -1
  254. package/package.json +3 -3
  255. package/dist/fields/baseFields/slug/index.d.ts +0 -89
  256. package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
  257. package/dist/fields/baseFields/slug/index.js +0 -81
  258. package/dist/fields/baseFields/slug/index.js.map +0 -1
  259. package/dist/utilities/isRSCEnabled.d.ts +0 -12
  260. package/dist/utilities/isRSCEnabled.d.ts.map +0 -1
  261. package/dist/utilities/isRSCEnabled.js +0 -14
  262. package/dist/utilities/isRSCEnabled.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext, TypedFallbackLocale } from '../../../index.js'\nimport type {\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Block, Field, TabAsField } from '../../config/types.js'\nimport type { AfterReadArgs } from './index.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { getBlockSelect } from '../../../utilities/getBlockSelect.js'\nimport { stripUnselectedFields } from '../../../utilities/stripUnselectedFields.js'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\nimport { virtualFieldPopulationPromise } from './virtualFieldPopulationPromise.js'\n\ntype Args = {\n /**\n * Data of the nearest parent block. If no parent block exists, this will be the `undefined`\n */\n blockData?: JsonObject\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: TypedFallbackLocale\n field: Field | TabAsField\n /**\n * The depth of the current field being processed.\n * Fields without names (i.e. rows, collapsibles, unnamed groups)\n * simply pass this value through\n *\n * @default 0\n */\n fieldDepth: number\n fieldIndex: number\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n parentIndexPath: string\n /**\n * @todo make required in v4.0\n */\n parentIsLocalized?: boolean\n parentPath: string\n parentSchemaPath: string\n populate?: PopulateType\n populationPromises: Promise<void>[]\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n siblingFields?: (Field | TabAsField)[]\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n} & Required<Pick<AfterReadArgs<JsonObject>, 'flattenLocales'>>\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldDepth,\n fieldIndex,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n siblingFields,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const fieldAffectsDataResult = fieldAffectsData(field)\n const pathSegments = path ? path.split('.') : []\n const schemaPathSegments = schemaPath ? schemaPath.split('.') : []\n const indexPathSegments = indexPath ? indexPath.split('-').filter(Boolean)?.map(Number) : []\n let removedFieldValue = false\n\n const isTopLevelIDField = fieldAffectsDataResult && field.name === 'id' && fieldDepth === 0\n\n if (\n fieldAffectsDataResult &&\n field.hidden &&\n typeof siblingDoc[field.name!] !== 'undefined' &&\n !showHiddenFields &&\n !isTopLevelIDField\n ) {\n removedFieldValue = true\n delete siblingDoc[field.name!]\n }\n\n if (path !== 'id') {\n const shouldContinue = stripUnselectedFields({\n field,\n select: select!,\n selectMode: selectMode!,\n siblingDoc,\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n const shouldLocalizeField = fieldShouldBeLocalized({\n field,\n parentIsLocalized: parentIsLocalized!,\n })\n\n const shouldHoistLocalizedValue: boolean = Boolean(\n flattenLocales &&\n fieldAffectsDataResult &&\n typeof siblingDoc[field.name!] === 'object' &&\n siblingDoc[field.name!] !== null &&\n shouldLocalizeField &&\n locale !== 'all' &&\n req.payload.config.localization,\n )\n\n if (fieldAffectsDataResult && shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name!][locale!]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n let fallbackValue\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (Array.isArray(fallbackLocale)) {\n for (const locale of fallbackLocale) {\n const val = siblingDoc[field.name!]?.[locale]\n if (val !== undefined && val !== null && val !== '') {\n fallbackValue = val\n break\n }\n }\n } else {\n fallbackValue = siblingDoc[field.name!][fallbackLocale]\n }\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name!] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (fieldAffectsDataResult && typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n default: {\n break\n }\n }\n\n // If locale is `all`, siblingDoc[field.name] will be an object mapping locales to values - locales won't be flattened.\n // In this case, run the hook for each locale and value pair\n const shouldRunHookOnAllLocales =\n locale === 'all' &&\n 'name' in field &&\n typeof field.name === 'string' &&\n // If localized values were hoisted, siblingDoc[field.name] will not be an object mapping locales to values\n // => Object.entries(siblingDoc[field.name]) will be the value of a single locale, not all locales\n // => do not run the hook for each locale\n !shouldHoistLocalizedValue &&\n shouldLocalizeField &&\n typeof siblingDoc[field.name] === 'object'\n\n if (fieldAffectsDataResult) {\n // Execute hooks\n if (triggerHooks && 'hooks' in field && field.hooks?.afterRead) {\n for (const hook of field.hooks.afterRead) {\n if (shouldRunHookOnAllLocales) {\n const localesAndValues = Object.entries(siblingDoc[field.name])\n await Promise.all(\n localesAndValues.map(async ([localeKey, value]) => {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n indexPath: indexPathSegments,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n siblingFields: siblingFields!,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][localeKey] = hookedValue\n }\n }),\n )\n } else {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n indexPath: indexPathSegments,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n siblingFields: siblingFields!,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }\n }\n\n if (\n 'virtual' in field &&\n typeof field.virtual === 'string' &&\n (!field.hidden || showHiddenFields)\n ) {\n populationPromises.push(\n virtualFieldPopulationPromise({\n name: field.name,\n draft,\n fallbackLocale: fallbackLocale!,\n fields: (collection || global)!.flattenedFields,\n locale: locale!,\n overrideAccess,\n ref: doc,\n req,\n segments: field.virtual.split('.'),\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const canReadField = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n blockData,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!canReadField) {\n allowDefaultValue = false\n delete siblingDoc[field.name!]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default.\n if (\n !removedFieldValue &&\n allowDefaultValue &&\n typeof siblingDoc[field.name!] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name!] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale: locale!,\n req,\n user: req.user,\n value: siblingDoc[field.name!],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n populate,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n let arraySelect = select?.[field.name]\n\n if (selectMode === 'include' && typeof arraySelect === 'object') {\n arraySelect = {\n ...arraySelect,\n id: true,\n }\n }\n\n if (Array.isArray(rows) && rows.length > 0) {\n rows.forEach((row, rowIndex) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, rowIndex) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else if (shouldHoistLocalizedValue && (!rows || rows.length === 0)) {\n siblingDoc[field.name] = null\n } else if (field.hidden !== true || showHiddenFields === true) {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows) && rows.length > 0) {\n rows.forEach((row, rowIndex) => {\n const blockTypeToMatch = (row as JsonObject).blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block: block!,\n // TODO: fix this\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n select: select?.[field.name]!,\n selectMode: selectMode!,\n })\n\n if (block) {\n traverseFields({\n blockData: row,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n populate,\n populationPromises,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, rowIndex) => {\n const blockTypeToMatch = row.blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n if (block) {\n traverseFields({\n blockData: row,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n populate,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else if (shouldHoistLocalizedValue && (!rows || rows.length === 0)) {\n siblingDoc[field.name] = null\n } else if (field.hidden !== true || showHiddenFields === true) {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'collapsible':\n case 'row': {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'group': {\n if (fieldAffectsDataResult) {\n const groupSelect =\n typeof select?.[field.name] === 'object'\n ? (select?.[field.name] as SelectType)\n : undefined\n\n if (shouldLocalizeField && !shouldHoistLocalizedValue) {\n Object.values(siblingDoc[field.name] || {}).forEach((localizedData) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: groupSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: localizedData || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: groupSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: typeof siblingDoc[field.name] !== 'object' ? {} : siblingDoc[field.name],\n triggerAccessControl,\n triggerHooks,\n })\n }\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n for (const hook of editor.hooks.afterRead) {\n if (shouldRunHookOnAllLocales) {\n const localesAndValues = Object.entries(siblingDoc[field.name])\n\n await Promise.all(\n localesAndValues.map(async ([locale, value]) => {\n const hookedValue = await hook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale: fallbackLocale!,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath: indexPathSegments,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n path: pathSegments,\n populate,\n populationPromises,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n }),\n )\n } else {\n const hookedValue = await hook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale: fallbackLocale!,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath: indexPathSegments,\n locale: locale!,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n path: pathSegments,\n populate,\n populationPromises,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }\n }\n break\n }\n\n case 'tab': {\n const tabDoc = siblingDoc\n\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n const tabSelect: SelectType | undefined =\n typeof select?.[field.name] === 'object'\n ? (select?.[field.name] as SelectType)\n : undefined\n if (shouldLocalizeField && !shouldHoistLocalizedValue) {\n Object.values(siblingDoc[field.name] || {}).forEach((localizedData) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: localizedData || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: typeof siblingDoc[field.name] !== 'object' ? {} : siblingDoc[field.name],\n triggerAccessControl,\n triggerHooks,\n })\n }\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedTab ? path : parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n }\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","getBlockSelect","stripUnselectedFields","fieldAffectsData","fieldShouldBeLocalized","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","virtualFieldPopulationPromise","promise","blockData","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldDepth","fieldIndex","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","populate","populationPromises","req","select","selectMode","showHiddenFields","siblingDoc","siblingFields","triggerAccessControl","triggerHooks","indexPath","path","schemaPath","index","fieldAffectsDataResult","pathSegments","split","schemaPathSegments","indexPathSegments","filter","Boolean","map","Number","removedFieldValue","isTopLevelIDField","name","hidden","shouldContinue","shouldLocalizeField","shouldHoistLocalizedValue","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","Array","isArray","val","undefined","type","pointDoc","coordinates","length","editor","Error","tabs","forEach","tab","shouldRunHookOnAllLocales","hooks","afterRead","hook","localesAndValues","Object","entries","Promise","all","localeKey","hookedValue","data","operation","originalDoc","siblingData","virtual","push","fields","flattenedFields","ref","segments","allowDefaultValue","access","read","canReadField","id","defaultValue","user","rows","arraySelect","row","rowIndex","localized","values","localeRows","blockTypeToMatch","blockType","block","blocks","find","curBlock","slug","blockSelect","blockSelectMode","groupSelect","localizedData","tabDoc","isNamedTab","tabSelect"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext, TypedFallbackLocale } from '../../../index.js'\nimport type {\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Block, Field, TabAsField } from '../../config/types.js'\nimport type { AfterReadArgs } from './index.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { getBlockSelect } from '../../../utilities/getBlockSelect.js'\nimport { stripUnselectedFields } from '../../../utilities/stripUnselectedFields.js'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\nimport { virtualFieldPopulationPromise } from './virtualFieldPopulationPromise.js'\n\ntype Args = {\n /**\n * Data of the nearest parent block. If no parent block exists, this will be the `undefined`\n */\n blockData?: JsonObject\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: TypedFallbackLocale\n field: Field | TabAsField\n /**\n * The depth of the current field being processed.\n * Fields without names (i.e. rows, collapsibles, unnamed groups)\n * simply pass this value through\n *\n * @default 0\n */\n fieldDepth: number\n fieldIndex: number\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n parentIndexPath: string\n /**\n * @todo make required in v4.0\n */\n parentIsLocalized?: boolean\n parentPath: string\n parentSchemaPath: string\n populate?: PopulateType\n populationPromises: Promise<void>[]\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n siblingFields?: (Field | TabAsField)[]\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n} & Required<Pick<AfterReadArgs<JsonObject>, 'flattenLocales'>>\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldDepth,\n fieldIndex,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n siblingFields,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const fieldAffectsDataResult = fieldAffectsData(field)\n const pathSegments = path ? path.split('.') : []\n const schemaPathSegments = schemaPath ? schemaPath.split('.') : []\n const indexPathSegments = indexPath ? indexPath.split('-').filter(Boolean)?.map(Number) : []\n let removedFieldValue = false\n\n const isTopLevelIDField = fieldAffectsDataResult && field.name === 'id' && fieldDepth === 0\n\n if (\n fieldAffectsDataResult &&\n field.hidden &&\n typeof siblingDoc[field.name!] !== 'undefined' &&\n !showHiddenFields &&\n !isTopLevelIDField\n ) {\n removedFieldValue = true\n delete siblingDoc[field.name!]\n }\n\n if (path !== 'id') {\n const shouldContinue = stripUnselectedFields({\n field,\n select: select!,\n selectMode: selectMode!,\n siblingDoc,\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n const shouldLocalizeField = fieldShouldBeLocalized({\n field,\n parentIsLocalized: parentIsLocalized!,\n })\n\n const shouldHoistLocalizedValue: boolean = Boolean(\n flattenLocales &&\n fieldAffectsDataResult &&\n typeof siblingDoc[field.name!] === 'object' &&\n siblingDoc[field.name!] !== null &&\n shouldLocalizeField &&\n locale !== 'all' &&\n req.payload.config.localization,\n )\n\n if (fieldAffectsDataResult && shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name!][locale!]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n let fallbackValue\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (Array.isArray(fallbackLocale)) {\n for (const locale of fallbackLocale) {\n const val = siblingDoc[field.name!]?.[locale]\n if (val !== undefined && val !== null && val !== '') {\n fallbackValue = val\n break\n }\n }\n } else {\n fallbackValue = siblingDoc[field.name!][fallbackLocale]\n }\n\n if (fallbackValue) {\n switch (field.type) {\n case 'slug':\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name!] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (fieldAffectsDataResult && typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n default: {\n break\n }\n }\n\n // If locale is `all`, siblingDoc[field.name] will be an object mapping locales to values - locales won't be flattened.\n // In this case, run the hook for each locale and value pair\n const shouldRunHookOnAllLocales =\n locale === 'all' &&\n 'name' in field &&\n typeof field.name === 'string' &&\n // If localized values were hoisted, siblingDoc[field.name] will not be an object mapping locales to values\n // => Object.entries(siblingDoc[field.name]) will be the value of a single locale, not all locales\n // => do not run the hook for each locale\n !shouldHoistLocalizedValue &&\n shouldLocalizeField &&\n typeof siblingDoc[field.name] === 'object'\n\n if (fieldAffectsDataResult) {\n // Execute hooks\n if (triggerHooks && 'hooks' in field && field.hooks?.afterRead) {\n for (const hook of field.hooks.afterRead) {\n if (shouldRunHookOnAllLocales) {\n const localesAndValues = Object.entries(siblingDoc[field.name])\n await Promise.all(\n localesAndValues.map(async ([localeKey, value]) => {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n indexPath: indexPathSegments,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n siblingFields: siblingFields!,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][localeKey] = hookedValue\n }\n }),\n )\n } else {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n indexPath: indexPathSegments,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n siblingFields: siblingFields!,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }\n }\n\n if (\n 'virtual' in field &&\n typeof field.virtual === 'string' &&\n (!field.hidden || showHiddenFields)\n ) {\n populationPromises.push(\n virtualFieldPopulationPromise({\n name: field.name,\n draft,\n fallbackLocale: fallbackLocale!,\n fields: (collection || global)!.flattenedFields,\n locale: locale!,\n overrideAccess,\n ref: doc,\n req,\n segments: field.virtual.split('.'),\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const canReadField = overrideAccess\n ? true\n : await field.access.read(\n collection\n ? {\n id: doc.id as number | string,\n blockData,\n collection,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n }\n : {\n id: doc.id as number | string,\n blockData,\n data: doc,\n doc,\n global: global!,\n req,\n siblingData: siblingDoc,\n },\n )\n\n if (!canReadField) {\n allowDefaultValue = false\n delete siblingDoc[field.name!]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default.\n if (\n !removedFieldValue &&\n allowDefaultValue &&\n typeof siblingDoc[field.name!] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name!] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale: locale!,\n req,\n user: req.user,\n value: siblingDoc[field.name!],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n populate,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n let arraySelect = select?.[field.name]\n\n if (selectMode === 'include' && typeof arraySelect === 'object') {\n arraySelect = {\n ...arraySelect,\n id: true,\n }\n }\n\n if (Array.isArray(rows) && rows.length > 0) {\n rows.forEach((row, rowIndex) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, rowIndex) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else if (shouldHoistLocalizedValue && (!rows || rows.length === 0)) {\n siblingDoc[field.name] = null\n } else if (field.hidden !== true || showHiddenFields === true) {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows) && rows.length > 0) {\n rows.forEach((row, rowIndex) => {\n const blockTypeToMatch = (row as JsonObject).blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block: block!,\n // TODO: fix this\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n select: select?.[field.name]!,\n selectMode: selectMode!,\n })\n\n if (block) {\n traverseFields({\n blockData: row,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n populate,\n populationPromises,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, rowIndex) => {\n const blockTypeToMatch = row.blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n if (block) {\n traverseFields({\n blockData: row,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n populate,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else if (shouldHoistLocalizedValue && (!rows || rows.length === 0)) {\n siblingDoc[field.name] = null\n } else if (field.hidden !== true || showHiddenFields === true) {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'collapsible':\n case 'row': {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'group': {\n if (fieldAffectsDataResult) {\n const groupSelect =\n typeof select?.[field.name] === 'object'\n ? (select?.[field.name] as SelectType)\n : undefined\n\n if (shouldLocalizeField && !shouldHoistLocalizedValue) {\n Object.values(siblingDoc[field.name] || {}).forEach((localizedData) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: groupSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: localizedData || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: groupSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: typeof siblingDoc[field.name] !== 'object' ? {} : siblingDoc[field.name],\n triggerAccessControl,\n triggerHooks,\n })\n }\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n for (const hook of editor.hooks.afterRead) {\n if (shouldRunHookOnAllLocales) {\n const localesAndValues = Object.entries(siblingDoc[field.name])\n\n await Promise.all(\n localesAndValues.map(async ([locale, value]) => {\n const hookedValue = await hook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale: fallbackLocale!,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath: indexPathSegments,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n path: pathSegments,\n populate,\n populationPromises,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n }),\n )\n } else {\n const hookedValue = await hook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale: fallbackLocale!,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath: indexPathSegments,\n locale: locale!,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized: parentIsLocalized!,\n path: pathSegments,\n populate,\n populationPromises,\n req,\n schemaPath: schemaPathSegments,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }\n }\n break\n }\n\n case 'tab': {\n const tabDoc = siblingDoc\n\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n const tabSelect: SelectType | undefined =\n typeof select?.[field.name] === 'object'\n ? (select?.[field.name] as SelectType)\n : undefined\n if (shouldLocalizeField && !shouldHoistLocalizedValue) {\n Object.values(siblingDoc[field.name] || {}).forEach((localizedData) => {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: localizedData || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth: fieldDepth + 1,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: typeof siblingDoc[field.name] !== 'object' ? {} : siblingDoc[field.name],\n triggerAccessControl,\n triggerHooks,\n })\n }\n } else {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedTab ? path : parentPath,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n }\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n blockData,\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldDepth,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","getBlockSelect","stripUnselectedFields","fieldAffectsData","fieldShouldBeLocalized","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","virtualFieldPopulationPromise","promise","blockData","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldDepth","fieldIndex","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","populate","populationPromises","req","select","selectMode","showHiddenFields","siblingDoc","siblingFields","triggerAccessControl","triggerHooks","indexPath","path","schemaPath","index","fieldAffectsDataResult","pathSegments","split","schemaPathSegments","indexPathSegments","filter","Boolean","map","Number","removedFieldValue","isTopLevelIDField","name","hidden","shouldContinue","shouldLocalizeField","shouldHoistLocalizedValue","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","Array","isArray","val","undefined","type","pointDoc","coordinates","length","editor","Error","tabs","forEach","tab","shouldRunHookOnAllLocales","hooks","afterRead","hook","localesAndValues","Object","entries","Promise","all","localeKey","hookedValue","data","operation","originalDoc","siblingData","virtual","push","fields","flattenedFields","ref","segments","allowDefaultValue","access","read","canReadField","id","defaultValue","user","rows","arraySelect","row","rowIndex","localized","values","localeRows","blockTypeToMatch","blockType","block","blocks","find","curBlock","slug","blockSelect","blockSelectMode","groupSelect","localizedData","tabDoc","isNamedTab","tabSelect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAc,MAAM,sCAAsC,CAAA;AACjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAS,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AASrE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP;;OAEG;IACH,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;CACvC,CAAA;AASD,eAAO,MAAM,OAAO,GAAU,CAAC,EAAE,yNAoB9B,IAAI,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CA0hBxB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAc,MAAM,sCAAsC,CAAA;AACjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAS,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AASrE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP;;OAEG;IACH,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;CACvC,CAAA;AASD,eAAO,MAAM,OAAO,GAAU,CAAC,EAAE,yNAoB9B,IAAI,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAuiBxB,CAAA"}
@@ -214,13 +214,22 @@ export const promise = async ({ id, blockData, collection, context, data, doc, f
214
214
  }
215
215
  // Execute access control
216
216
  if (field.access && field.access[operation]) {
217
- const result = overrideAccess ? true : await field.access[operation]({
217
+ const result = overrideAccess ? true : await field.access[operation](collection ? {
218
218
  id,
219
219
  blockData,
220
+ collection,
220
221
  data: data,
221
222
  doc,
222
223
  req,
223
224
  siblingData
225
+ } : {
226
+ id,
227
+ blockData,
228
+ data: data,
229
+ doc,
230
+ global: global,
231
+ req,
232
+ siblingData
224
233
  });
225
234
  if (!result) {
226
235
  delete siblingData[field.name];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, JsonValue, PayloadRequest } from '../../../types/index.js'\nimport type { Block, Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { getExistingRowDoc } from '../beforeChange/getExistingRowDoc.js'\nimport { getFallbackValue } from './getFallbackValue.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n /**\n * Data of the nearest parent block. If no parent block exists, this will be the `undefined`\n */\n blockData?: JsonObject\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: T\n /**\n * The original data (not modified by any hooks)\n */\n doc: T\n field: Field | TabAsField\n fieldIndex: number\n global: null | SanitizedGlobalConfig\n id?: number | string\n operation: 'create' | 'update'\n overrideAccess: boolean\n parentIndexPath: string\n parentIsLocalized: boolean\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n siblingData: JsonObject\n /**\n * The original siblingData (not modified by any hooks)\n */\n siblingDoc: JsonObject\n siblingFields?: (Field | TabAsField)[]\n}\n\n// This function is responsible for the following actions, in order:\n// - Sanitize incoming data\n// - Execute field hooks\n// - Execute field access control\n// - Merge original document data into incoming data\n// - Compute default values for undefined fields\n\nexport const promise = async <T>({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n field,\n fieldIndex,\n global,\n operation,\n overrideAccess,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n req,\n siblingData,\n siblingDoc,\n siblingFields,\n}: Args<T>): Promise<void> => {\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const pathSegments = path ? path.split('.') : []\n const schemaPathSegments = schemaPath ? schemaPath.split('.') : []\n const indexPathSegments = indexPath ? indexPath.split('-').filter(Boolean)?.map(Number) : []\n\n if (fieldAffectsData(field)) {\n if (field.name === 'id') {\n if (field.type === 'number' && typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n\n siblingData[field.name] = parseFloat(value)\n }\n\n if (\n field.type === 'text' &&\n typeof siblingData[field.name]?.toString === 'function' &&\n typeof siblingData[field.name] !== 'string'\n ) {\n siblingData[field.name] = siblingData[field.name].toString()\n }\n }\n\n // Sanitize incoming data\n switch (field.type) {\n case 'array':\n case 'blocks': {\n // Handle cases of arrays being intentionally set to 0\n if (siblingData[field.name] === '0' || siblingData[field.name] === 0) {\n siblingData[field.name] = []\n }\n\n break\n }\n\n case 'checkbox': {\n if (siblingData[field.name] === 'true') {\n siblingData[field.name] = true\n }\n if (siblingData[field.name] === 'false') {\n siblingData[field.name] = false\n }\n if (siblingData[field.name] === '') {\n siblingData[field.name] = false\n }\n\n break\n }\n\n case 'number': {\n if (typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n const trimmed = value.trim()\n siblingData[field.name] = trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n\n break\n }\n\n case 'point': {\n if (Array.isArray(siblingData[field.name])) {\n siblingData[field.name] = (siblingData[field.name] as string[]).map((coordinate, i) => {\n if (typeof coordinate === 'string') {\n const value = siblingData[field.name][i] as string\n const trimmed = value.trim()\n return trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n return coordinate\n })\n }\n\n break\n }\n case 'relationship':\n case 'upload': {\n if (\n siblingData[field.name] === '' ||\n siblingData[field.name] === 'none' ||\n siblingData[field.name] === 'null' ||\n siblingData[field.name] === null\n ) {\n if (field.hasMany === true) {\n siblingData[field.name] = []\n } else {\n siblingData[field.name] = null\n }\n }\n\n const value = siblingData[field.name]\n\n if (Array.isArray(field.relationTo)) {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: { relationTo: string; value: JsonValue }, i) => {\n const relatedCollection = req.payload.collections?.[relatedDoc.relationTo]?.config\n\n if (\n typeof relatedDoc.value === 'object' &&\n relatedDoc.value &&\n 'id' in relatedDoc.value\n ) {\n relatedDoc.value = relatedDoc.value.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = {\n ...relatedDoc,\n value: parseFloat(relatedDoc.value as string),\n }\n }\n }\n })\n }\n if (field.hasMany !== true && valueIsValueWithRelation(value)) {\n const relatedCollection = req.payload.collections?.[value.relationTo]?.config\n\n if (typeof value.value === 'object' && value.value && 'id' in value.value) {\n value.value = (value.value as TypeWithID).id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = { ...value, value: parseFloat(value.value as string) }\n }\n }\n }\n } else {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: unknown, i) => {\n const relatedCollection = Array.isArray(field.relationTo)\n ? undefined\n : req.payload.collections?.[field.relationTo]?.config\n\n if (typeof relatedDoc === 'object' && relatedDoc && 'id' in relatedDoc) {\n value[i] = relatedDoc.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = parseFloat(relatedDoc as string)\n }\n }\n })\n }\n if (field.hasMany !== true && value) {\n const relatedCollection = req.payload.collections?.[field.relationTo]?.config\n\n if (typeof value === 'object' && value && 'id' in value) {\n siblingData[field.name] = value.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = parseFloat(value as string)\n }\n }\n }\n }\n break\n }\n case 'richText': {\n if (typeof siblingData[field.name] === 'string') {\n try {\n const richTextJSON = JSON.parse(siblingData[field.name] as string)\n siblingData[field.name] = richTextJSON\n } catch {\n // Disregard this data as it is not valid.\n // Will be reported to user by field validation\n }\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n // ensure the fallback value is only computed one time\n // either here or when access control returns false\n const fallbackResult: { executed: boolean; value: unknown } = {\n executed: false,\n value: undefined,\n }\n if (typeof siblingData[field.name!] === 'undefined' && !req.context?.isRestoringVersion) {\n fallbackResult.value = await getFallbackValue({ field, req, siblingDoc })\n fallbackResult.executed = true\n }\n\n // Execute hooks\n if ('hooks' in field && field.hooks?.beforeValidate) {\n for (const hook of field.hooks.beforeValidate) {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n data: data as Partial<T>,\n field,\n global,\n indexPath: indexPathSegments,\n operation,\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n previousSiblingDoc: siblingDoc,\n previousValue: siblingDoc[field.name],\n req,\n schemaPath: schemaPathSegments,\n siblingData,\n siblingFields: siblingFields!,\n value:\n typeof siblingData[field.name] === 'undefined'\n ? fallbackResult.value\n : siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }\n }\n\n // Execute access control\n if (field.access && field.access[operation]) {\n const result = overrideAccess\n ? true\n : await field.access[operation]({\n id,\n blockData,\n data: data as Partial<T>,\n doc,\n req,\n siblingData,\n })\n\n if (!result) {\n delete siblingData[field.name!]\n }\n }\n\n if (typeof siblingData[field.name!] === 'undefined' && !req.context?.isRestoringVersion) {\n siblingData[field.name!] = !fallbackResult.executed\n ? await getFallbackValue({ field, req, siblingDoc })\n : fallbackResult.value\n }\n }\n\n // Traverse subfields\n switch (field.type) {\n case 'array': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises: Promise<void>[] = []\n\n rows.forEach((row, rowIndex) => {\n promises.push(\n traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n req,\n siblingData: row as JsonObject,\n siblingDoc: getExistingRowDoc(row as JsonObject, siblingDoc[field.name]),\n }),\n )\n })\n\n await Promise.all(promises)\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises: Promise<void>[] = []\n\n rows.forEach((row, rowIndex) => {\n const rowSiblingDoc = getExistingRowDoc(row as JsonObject, siblingDoc[field.name])\n const blockTypeToMatch = (row as JsonObject).blockType || rowSiblingDoc.blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n if (block) {\n ;(row as JsonObject).blockType = blockTypeToMatch\n\n promises.push(\n traverseFields({\n id,\n blockData: row,\n collection,\n context,\n data,\n doc,\n fields: block.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n req,\n siblingData: row as JsonObject,\n siblingDoc: rowSiblingDoc,\n }),\n )\n }\n })\n\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'collapsible':\n case 'row': {\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n case 'group': {\n let groupSiblingData = siblingData\n let groupSiblingDoc = siblingDoc\n\n const isNamedGroup = fieldAffectsData(field)\n\n if (isNamedGroup) {\n if (typeof siblingData[field.name] !== 'object') {\n siblingData[field.name] = {}\n }\n\n if (typeof siblingDoc[field.name] !== 'object') {\n siblingDoc[field.name] = {}\n }\n\n groupSiblingData = siblingData[field.name] as Record<string, unknown>\n groupSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n }\n\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: isNamedGroup ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedGroup ? path : parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData: groupSiblingData,\n siblingDoc: groupSiblingDoc,\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.beforeValidate?.length) {\n for (const hook of editor.hooks.beforeValidate) {\n const hookedValue = await hook({\n collection,\n context,\n data: data as Partial<T>,\n field,\n global,\n indexPath: indexPathSegments,\n operation,\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized,\n path: pathSegments,\n previousSiblingDoc: siblingDoc,\n previousValue: siblingData[field.name],\n req,\n schemaPath: schemaPathSegments,\n siblingData,\n value: siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }\n }\n break\n }\n\n case 'tab': {\n let tabSiblingData\n let tabSiblingDoc\n\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n if (typeof siblingData[field.name] !== 'object') {\n siblingData[field.name] = {}\n }\n\n if (typeof siblingDoc[field.name] !== 'object') {\n siblingDoc[field.name] = {}\n }\n\n tabSiblingData = siblingData[field.name] as Record<string, unknown>\n tabSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n } else {\n tabSiblingData = siblingData\n tabSiblingDoc = siblingDoc\n }\n\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedTab ? path : parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n operation,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","valueIsValueWithRelation","getFieldPaths","getExistingRowDoc","getFallbackValue","traverseFields","promise","id","blockData","collection","context","data","doc","field","fieldIndex","global","operation","overrideAccess","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","req","siblingData","siblingDoc","siblingFields","indexPath","path","schemaPath","index","pathSegments","split","schemaPathSegments","indexPathSegments","filter","Boolean","map","Number","name","type","value","parseFloat","toString","trimmed","trim","length","Array","isArray","coordinate","i","hasMany","relationTo","forEach","relatedDoc","relatedCollection","payload","collections","config","fields","relationshipIDField","find","collectionField","undefined","richTextJSON","JSON","parse","fallbackResult","executed","isRestoringVersion","hooks","beforeValidate","hook","hookedValue","originalDoc","previousSiblingDoc","previousValue","access","result","rows","promises","row","rowIndex","push","localized","Promise","all","rowSiblingDoc","blockTypeToMatch","blockType","block","blocks","curBlock","slug","groupSiblingData","groupSiblingDoc","isNamedGroup","editor","Error","tabSiblingData","tabSiblingDoc","isNamedTab","tabs","tab"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, JsonValue, PayloadRequest } from '../../../types/index.js'\nimport type { Block, Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { getExistingRowDoc } from '../beforeChange/getExistingRowDoc.js'\nimport { getFallbackValue } from './getFallbackValue.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n /**\n * Data of the nearest parent block. If no parent block exists, this will be the `undefined`\n */\n blockData?: JsonObject\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: T\n /**\n * The original data (not modified by any hooks)\n */\n doc: T\n field: Field | TabAsField\n fieldIndex: number\n global: null | SanitizedGlobalConfig\n id?: number | string\n operation: 'create' | 'update'\n overrideAccess: boolean\n parentIndexPath: string\n parentIsLocalized: boolean\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n siblingData: JsonObject\n /**\n * The original siblingData (not modified by any hooks)\n */\n siblingDoc: JsonObject\n siblingFields?: (Field | TabAsField)[]\n}\n\n// This function is responsible for the following actions, in order:\n// - Sanitize incoming data\n// - Execute field hooks\n// - Execute field access control\n// - Merge original document data into incoming data\n// - Compute default values for undefined fields\n\nexport const promise = async <T>({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n field,\n fieldIndex,\n global,\n operation,\n overrideAccess,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n req,\n siblingData,\n siblingDoc,\n siblingFields,\n}: Args<T>): Promise<void> => {\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const pathSegments = path ? path.split('.') : []\n const schemaPathSegments = schemaPath ? schemaPath.split('.') : []\n const indexPathSegments = indexPath ? indexPath.split('-').filter(Boolean)?.map(Number) : []\n\n if (fieldAffectsData(field)) {\n if (field.name === 'id') {\n if (field.type === 'number' && typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n\n siblingData[field.name] = parseFloat(value)\n }\n\n if (\n field.type === 'text' &&\n typeof siblingData[field.name]?.toString === 'function' &&\n typeof siblingData[field.name] !== 'string'\n ) {\n siblingData[field.name] = siblingData[field.name].toString()\n }\n }\n\n // Sanitize incoming data\n switch (field.type) {\n case 'array':\n case 'blocks': {\n // Handle cases of arrays being intentionally set to 0\n if (siblingData[field.name] === '0' || siblingData[field.name] === 0) {\n siblingData[field.name] = []\n }\n\n break\n }\n\n case 'checkbox': {\n if (siblingData[field.name] === 'true') {\n siblingData[field.name] = true\n }\n if (siblingData[field.name] === 'false') {\n siblingData[field.name] = false\n }\n if (siblingData[field.name] === '') {\n siblingData[field.name] = false\n }\n\n break\n }\n\n case 'number': {\n if (typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n const trimmed = value.trim()\n siblingData[field.name] = trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n\n break\n }\n\n case 'point': {\n if (Array.isArray(siblingData[field.name])) {\n siblingData[field.name] = (siblingData[field.name] as string[]).map((coordinate, i) => {\n if (typeof coordinate === 'string') {\n const value = siblingData[field.name][i] as string\n const trimmed = value.trim()\n return trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n return coordinate\n })\n }\n\n break\n }\n case 'relationship':\n case 'upload': {\n if (\n siblingData[field.name] === '' ||\n siblingData[field.name] === 'none' ||\n siblingData[field.name] === 'null' ||\n siblingData[field.name] === null\n ) {\n if (field.hasMany === true) {\n siblingData[field.name] = []\n } else {\n siblingData[field.name] = null\n }\n }\n\n const value = siblingData[field.name]\n\n if (Array.isArray(field.relationTo)) {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: { relationTo: string; value: JsonValue }, i) => {\n const relatedCollection = req.payload.collections?.[relatedDoc.relationTo]?.config\n\n if (\n typeof relatedDoc.value === 'object' &&\n relatedDoc.value &&\n 'id' in relatedDoc.value\n ) {\n relatedDoc.value = relatedDoc.value.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = {\n ...relatedDoc,\n value: parseFloat(relatedDoc.value as string),\n }\n }\n }\n })\n }\n if (field.hasMany !== true && valueIsValueWithRelation(value)) {\n const relatedCollection = req.payload.collections?.[value.relationTo]?.config\n\n if (typeof value.value === 'object' && value.value && 'id' in value.value) {\n value.value = (value.value as TypeWithID).id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = { ...value, value: parseFloat(value.value as string) }\n }\n }\n }\n } else {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: unknown, i) => {\n const relatedCollection = Array.isArray(field.relationTo)\n ? undefined\n : req.payload.collections?.[field.relationTo]?.config\n\n if (typeof relatedDoc === 'object' && relatedDoc && 'id' in relatedDoc) {\n value[i] = relatedDoc.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = parseFloat(relatedDoc as string)\n }\n }\n })\n }\n if (field.hasMany !== true && value) {\n const relatedCollection = req.payload.collections?.[field.relationTo]?.config\n\n if (typeof value === 'object' && value && 'id' in value) {\n siblingData[field.name] = value.id\n }\n\n if (relatedCollection?.fields) {\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = parseFloat(value as string)\n }\n }\n }\n }\n break\n }\n case 'richText': {\n if (typeof siblingData[field.name] === 'string') {\n try {\n const richTextJSON = JSON.parse(siblingData[field.name] as string)\n siblingData[field.name] = richTextJSON\n } catch {\n // Disregard this data as it is not valid.\n // Will be reported to user by field validation\n }\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n // ensure the fallback value is only computed one time\n // either here or when access control returns false\n const fallbackResult: { executed: boolean; value: unknown } = {\n executed: false,\n value: undefined,\n }\n if (typeof siblingData[field.name!] === 'undefined' && !req.context?.isRestoringVersion) {\n fallbackResult.value = await getFallbackValue({ field, req, siblingDoc })\n fallbackResult.executed = true\n }\n\n // Execute hooks\n if ('hooks' in field && field.hooks?.beforeValidate) {\n for (const hook of field.hooks.beforeValidate) {\n const hookedValue = await hook({\n blockData,\n collection,\n context,\n data: data as Partial<T>,\n field,\n global,\n indexPath: indexPathSegments,\n operation,\n originalDoc: doc,\n overrideAccess,\n path: pathSegments,\n previousSiblingDoc: siblingDoc,\n previousValue: siblingDoc[field.name],\n req,\n schemaPath: schemaPathSegments,\n siblingData,\n siblingFields: siblingFields!,\n value:\n typeof siblingData[field.name] === 'undefined'\n ? fallbackResult.value\n : siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }\n }\n\n // Execute access control\n if (field.access && field.access[operation]) {\n const result = overrideAccess\n ? true\n : await field.access[operation](\n collection\n ? {\n id,\n blockData,\n collection,\n data: data as Partial<T>,\n doc,\n req,\n siblingData,\n }\n : {\n id,\n blockData,\n data: data as Partial<T>,\n doc,\n global: global!,\n req,\n siblingData,\n },\n )\n\n if (!result) {\n delete siblingData[field.name!]\n }\n }\n\n if (typeof siblingData[field.name!] === 'undefined' && !req.context?.isRestoringVersion) {\n siblingData[field.name!] = !fallbackResult.executed\n ? await getFallbackValue({ field, req, siblingDoc })\n : fallbackResult.value\n }\n }\n\n // Traverse subfields\n switch (field.type) {\n case 'array': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises: Promise<void>[] = []\n\n rows.forEach((row, rowIndex) => {\n promises.push(\n traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath,\n req,\n siblingData: row as JsonObject,\n siblingDoc: getExistingRowDoc(row as JsonObject, siblingDoc[field.name]),\n }),\n )\n })\n\n await Promise.all(promises)\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises: Promise<void>[] = []\n\n rows.forEach((row, rowIndex) => {\n const rowSiblingDoc = getExistingRowDoc(row as JsonObject, siblingDoc[field.name])\n const blockTypeToMatch = (row as JsonObject).blockType || rowSiblingDoc.blockType\n\n const block: Block | undefined =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (curBlock) => typeof curBlock !== 'string' && curBlock.slug === blockTypeToMatch,\n ) as Block | undefined)\n\n if (block) {\n ;(row as JsonObject).blockType = blockTypeToMatch\n\n promises.push(\n traverseFields({\n id,\n blockData: row,\n collection,\n context,\n data,\n doc,\n fields: block.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + rowIndex,\n parentSchemaPath: schemaPath + '.' + block.slug,\n req,\n siblingData: row as JsonObject,\n siblingDoc: rowSiblingDoc,\n }),\n )\n }\n })\n\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'collapsible':\n case 'row': {\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n case 'group': {\n let groupSiblingData = siblingData\n let groupSiblingDoc = siblingDoc\n\n const isNamedGroup = fieldAffectsData(field)\n\n if (isNamedGroup) {\n if (typeof siblingData[field.name] !== 'object') {\n siblingData[field.name] = {}\n }\n\n if (typeof siblingDoc[field.name] !== 'object') {\n siblingDoc[field.name] = {}\n }\n\n groupSiblingData = siblingData[field.name] as Record<string, unknown>\n groupSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n }\n\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: isNamedGroup ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedGroup ? path : parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData: groupSiblingData,\n siblingDoc: groupSiblingDoc,\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.beforeValidate?.length) {\n for (const hook of editor.hooks.beforeValidate) {\n const hookedValue = await hook({\n collection,\n context,\n data: data as Partial<T>,\n field,\n global,\n indexPath: indexPathSegments,\n operation,\n originalDoc: doc,\n overrideAccess,\n parentIsLocalized,\n path: pathSegments,\n previousSiblingDoc: siblingDoc,\n previousValue: siblingData[field.name],\n req,\n schemaPath: schemaPathSegments,\n siblingData,\n value: siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }\n }\n break\n }\n\n case 'tab': {\n let tabSiblingData\n let tabSiblingDoc\n\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n if (typeof siblingData[field.name] !== 'object') {\n siblingData[field.name] = {}\n }\n\n if (typeof siblingDoc[field.name] !== 'object') {\n siblingDoc[field.name] = {}\n }\n\n tabSiblingData = siblingData[field.name] as Record<string, unknown>\n tabSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n } else {\n tabSiblingData = siblingData\n tabSiblingDoc = siblingDoc\n }\n\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: isNamedTab ? path : parentPath,\n parentSchemaPath: schemaPath,\n req,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n id,\n blockData,\n collection,\n context,\n data,\n doc,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n operation,\n overrideAccess,\n parentIndexPath: indexPath,\n parentIsLocalized,\n parentPath: path,\n parentSchemaPath: schemaPath,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","valueIsValueWithRelation","getFieldPaths","getExistingRowDoc","getFallbackValue","traverseFields","promise","id","blockData","collection","context","data","doc","field","fieldIndex","global","operation","overrideAccess","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","req","siblingData","siblingDoc","siblingFields","indexPath","path","schemaPath","index","pathSegments","split","schemaPathSegments","indexPathSegments","filter","Boolean","map","Number","name","type","value","parseFloat","toString","trimmed","trim","length","Array","isArray","coordinate","i","hasMany","relationTo","forEach","relatedDoc","relatedCollection","payload","collections","config","fields","relationshipIDField","find","collectionField","undefined","richTextJSON","JSON","parse","fallbackResult","executed","isRestoringVersion","hooks","beforeValidate","hook","hookedValue","originalDoc","previousSiblingDoc","previousValue","access","result","rows","promises","row","rowIndex","push","localized","Promise","all","rowSiblingDoc","blockTypeToMatch","blockType","block","blocks","curBlock","slug","groupSiblingData","groupSiblingDoc","isNamedGroup","editor","Error","tabSiblingData","tabSiblingDoc","isNamedTab","tabs","tab"],"mappings":"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"}
@@ -21,6 +21,7 @@ export const setDefaultBeforeDuplicate = (field, parentIsLocalized)=>{
21
21
  } else if ([
22
22
  'code',
23
23
  'json',
24
+ 'slug',
24
25
  'text',
25
26
  'textarea'
26
27
  ].includes(field.type)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/setDefaultBeforeDuplicate.ts"],"sourcesContent":["// @ts-strict-ignore\n// default beforeDuplicate hook for required and unique fields\nimport { type FieldAffectingData, type FieldHook, fieldShouldBeLocalized } from './config/types.js'\n\nconst isStringValue = (value: unknown) => typeof value === 'string' && value.trim() !== ''\nconst unique: FieldHook = ({ value }) => (isStringValue(value) ? `${value} - Copy` : undefined)\nconst localizedUnique: FieldHook = ({ req, value }) =>\n isStringValue(value) ? `${value} - ${req?.t('general:copy') ?? 'Copy'}` : undefined\n\nexport const setDefaultBeforeDuplicate = (\n field: FieldAffectingData,\n parentIsLocalized: boolean,\n) => {\n if (\n (('required' in field && field.required) || field.unique) &&\n 'hooks' in field &&\n (!field.hooks?.beforeDuplicate ||\n (Array.isArray(field.hooks.beforeDuplicate) && field.hooks.beforeDuplicate.length === 0))\n ) {\n if (field.unique) {\n if (['email', 'number', 'point', 'relationship', 'select', 'upload'].includes(field.type)) {\n field.hooks!.beforeDuplicate = [() => undefined]\n } else if (['code', 'json', 'text', 'textarea'].includes(field.type)) {\n field.hooks!.beforeDuplicate = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? [localizedUnique]\n : [unique]\n }\n }\n }\n}\n"],"names":["fieldShouldBeLocalized","isStringValue","value","trim","unique","undefined","localizedUnique","req","t","setDefaultBeforeDuplicate","field","parentIsLocalized","required","hooks","beforeDuplicate","Array","isArray","length","includes","type"],"mappings":"AAAA,oBAAoB;AACpB,8DAA8D;AAC9D,SAAkDA,sBAAsB,QAAQ,oBAAmB;AAEnG,MAAMC,gBAAgB,CAACC,QAAmB,OAAOA,UAAU,YAAYA,MAAMC,IAAI,OAAO;AACxF,MAAMC,SAAoB,CAAC,EAAEF,KAAK,EAAE,GAAMD,cAAcC,SAAS,GAAGA,MAAM,OAAO,CAAC,GAAGG;AACrF,MAAMC,kBAA6B,CAAC,EAAEC,GAAG,EAAEL,KAAK,EAAE,GAChDD,cAAcC,SAAS,GAAGA,MAAM,GAAG,EAAEK,KAAKC,EAAE,mBAAmB,QAAQ,GAAGH;AAE5E,OAAO,MAAMI,4BAA4B,CACvCC,OACAC;IAEA,IACE,AAAC,CAAA,AAAC,cAAcD,SAASA,MAAME,QAAQ,IAAKF,MAAMN,MAAM,AAAD,KACvD,WAAWM,SACV,CAAA,CAACA,MAAMG,KAAK,EAAEC,mBACZC,MAAMC,OAAO,CAACN,MAAMG,KAAK,CAACC,eAAe,KAAKJ,MAAMG,KAAK,CAACC,eAAe,CAACG,MAAM,KAAK,CAAC,GACzF;QACA,IAAIP,MAAMN,MAAM,EAAE;YAChB,IAAI;gBAAC;gBAAS;gBAAU;gBAAS;gBAAgB;gBAAU;aAAS,CAACc,QAAQ,CAACR,MAAMS,IAAI,GAAG;gBACzFT,MAAMG,KAAK,CAAEC,eAAe,GAAG;oBAAC,IAAMT;iBAAU;YAClD,OAAO,IAAI;gBAAC;gBAAQ;gBAAQ;gBAAQ;aAAW,CAACa,QAAQ,CAACR,MAAMS,IAAI,GAAG;gBACpET,MAAMG,KAAK,CAAEC,eAAe,GAAGd,uBAAuB;oBAAEU;oBAAOC;gBAAkB,KAC7E;oBAACL;iBAAgB,GACjB;oBAACF;iBAAO;YACd;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/fields/setDefaultBeforeDuplicate.ts"],"sourcesContent":["// @ts-strict-ignore\n// default beforeDuplicate hook for required and unique fields\nimport { type FieldAffectingData, type FieldHook, fieldShouldBeLocalized } from './config/types.js'\n\nconst isStringValue = (value: unknown) => typeof value === 'string' && value.trim() !== ''\nconst unique: FieldHook = ({ value }) => (isStringValue(value) ? `${value} - Copy` : undefined)\nconst localizedUnique: FieldHook = ({ req, value }) =>\n isStringValue(value) ? `${value} - ${req?.t('general:copy') ?? 'Copy'}` : undefined\n\nexport const setDefaultBeforeDuplicate = (\n field: FieldAffectingData,\n parentIsLocalized: boolean,\n) => {\n if (\n (('required' in field && field.required) || field.unique) &&\n 'hooks' in field &&\n (!field.hooks?.beforeDuplicate ||\n (Array.isArray(field.hooks.beforeDuplicate) && field.hooks.beforeDuplicate.length === 0))\n ) {\n if (field.unique) {\n if (['email', 'number', 'point', 'relationship', 'select', 'upload'].includes(field.type)) {\n field.hooks!.beforeDuplicate = [() => undefined]\n } else if (['code', 'json', 'slug', 'text', 'textarea'].includes(field.type)) {\n field.hooks!.beforeDuplicate = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? [localizedUnique]\n : [unique]\n }\n }\n }\n}\n"],"names":["fieldShouldBeLocalized","isStringValue","value","trim","unique","undefined","localizedUnique","req","t","setDefaultBeforeDuplicate","field","parentIsLocalized","required","hooks","beforeDuplicate","Array","isArray","length","includes","type"],"mappings":"AAAA,oBAAoB;AACpB,8DAA8D;AAC9D,SAAkDA,sBAAsB,QAAQ,oBAAmB;AAEnG,MAAMC,gBAAgB,CAACC,QAAmB,OAAOA,UAAU,YAAYA,MAAMC,IAAI,OAAO;AACxF,MAAMC,SAAoB,CAAC,EAAEF,KAAK,EAAE,GAAMD,cAAcC,SAAS,GAAGA,MAAM,OAAO,CAAC,GAAGG;AACrF,MAAMC,kBAA6B,CAAC,EAAEC,GAAG,EAAEL,KAAK,EAAE,GAChDD,cAAcC,SAAS,GAAGA,MAAM,GAAG,EAAEK,KAAKC,EAAE,mBAAmB,QAAQ,GAAGH;AAE5E,OAAO,MAAMI,4BAA4B,CACvCC,OACAC;IAEA,IACE,AAAC,CAAA,AAAC,cAAcD,SAASA,MAAME,QAAQ,IAAKF,MAAMN,MAAM,AAAD,KACvD,WAAWM,SACV,CAAA,CAACA,MAAMG,KAAK,EAAEC,mBACZC,MAAMC,OAAO,CAACN,MAAMG,KAAK,CAACC,eAAe,KAAKJ,MAAMG,KAAK,CAACC,eAAe,CAACG,MAAM,KAAK,CAAC,GACzF;QACA,IAAIP,MAAMN,MAAM,EAAE;YAChB,IAAI;gBAAC;gBAAS;gBAAU;gBAAS;gBAAgB;gBAAU;aAAS,CAACc,QAAQ,CAACR,MAAMS,IAAI,GAAG;gBACzFT,MAAMG,KAAK,CAAEC,eAAe,GAAG;oBAAC,IAAMT;iBAAU;YAClD,OAAO,IAAI;gBAAC;gBAAQ;gBAAQ;gBAAQ;gBAAQ;aAAW,CAACa,QAAQ,CAACR,MAAMS,IAAI,GAAG;gBAC5ET,MAAMG,KAAK,CAAEC,eAAe,GAAGd,uBAAuB;oBAAEU;oBAAOC;gBAAkB,KAC7E;oBAACL;iBAAgB,GACjB;oBAACF;iBAAO;YACd;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortableFieldTypes.d.ts","sourceRoot":"","sources":["../../src/fields/sortableFieldTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAU9B,CAAA"}
1
+ {"version":3,"file":"sortableFieldTypes.d.ts","sourceRoot":"","sources":["../../src/fields/sortableFieldTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAW9B,CAAA"}
@@ -5,6 +5,7 @@ export const sortableFieldTypes = [
5
5
  'json',
6
6
  'number',
7
7
  'email',
8
+ 'slug',
8
9
  'radio',
9
10
  'select',
10
11
  'date'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/sortableFieldTypes.ts"],"sourcesContent":["export const sortableFieldTypes = [\n 'text',\n 'textarea',\n 'code',\n 'json',\n 'number',\n 'email',\n 'radio',\n 'select',\n 'date',\n]\n"],"names":["sortableFieldTypes"],"mappings":"AAAA,OAAO,MAAMA,qBAAqB;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
1
+ {"version":3,"sources":["../../src/fields/sortableFieldTypes.ts"],"sourcesContent":["export const sortableFieldTypes = [\n 'text',\n 'textarea',\n 'code',\n 'json',\n 'number',\n 'email',\n 'slug',\n 'radio',\n 'select',\n 'date',\n]\n"],"names":["sortableFieldTypes"],"mappings":"AAAA,OAAO,MAAMA,qBAAqB;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
@@ -1,8 +1,10 @@
1
- import type { ArrayField, BlocksField, CheckboxField, CodeField, DateField, EmailField, JSONField, NumberField, PointField, RadioField, RelationshipField, RelationshipValue, RelationshipValueMany, RelationshipValueSingle, RichTextField, SelectField, TextareaField, TextField, UploadField, Validate } from './config/types.js';
1
+ import type { ArrayField, BlocksField, CheckboxField, CodeField, DateField, EmailField, JSONField, NumberField, PointField, RadioField, RelationshipField, RelationshipValue, RelationshipValueMany, RelationshipValueSingle, RichTextField, SelectField, SlugField, TextareaField, TextField, UploadField, Validate } from './config/types.js';
2
2
  export type TextFieldValidation = Validate<string, unknown, unknown, TextField>;
3
3
  export type TextFieldManyValidation = Validate<string[], unknown, unknown, TextField>;
4
4
  export type TextFieldSingleValidation = Validate<string, unknown, unknown, TextField>;
5
5
  export declare const text: TextFieldValidation;
6
+ export type SlugFieldValidation = Validate<string, unknown, unknown, SlugField>;
7
+ export declare const slug: SlugFieldValidation;
6
8
  export type PasswordFieldValidation = Validate<string, unknown, unknown, TextField>;
7
9
  export declare const password: PasswordFieldValidation;
8
10
  export type ConfirmPasswordFieldValidation = Validate<string, unknown, {
@@ -87,6 +89,7 @@ export declare const point: PointFieldValidation;
87
89
  * These can be re-used in custom validations
88
90
  */
89
91
  export declare const validations: {
92
+ slug: SlugFieldValidation;
90
93
  array: ArrayFieldValidation;
91
94
  blocks: BlocksFieldValidation;
92
95
  checkbox: CheckboxFieldValidation;
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,12 @@ export const text = (value, { hasMany, maxLength: fieldMaxLength, maxRows, minLe
53
53
  }
54
54
  return true;
55
55
  };
56
+ export const slug = (value, { req: { t }, required })=>{
57
+ if (required && !value) {
58
+ return t('validation:required');
59
+ }
60
+ return true;
61
+ };
56
62
  export const password = (value, { maxLength: fieldMaxLength, minLength = 3, req: { payload: { config }, t }, required })=>{
57
63
  let maxLength;
58
64
  if (typeof config?.defaultMaxTextLength === 'number') {
@@ -700,6 +706,7 @@ export const point = (value = [
700
706
  *
701
707
  * These can be re-used in custom validations
702
708
  */ export const validations = {
709
+ slug,
703
710
  array,
704
711
  blocks,
705
712
  checkbox,