payload 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd

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 (703) hide show
  1. package/dist/admin/adapters/router.d.ts +1 -1
  2. package/dist/admin/adapters/router.d.ts.map +1 -1
  3. package/dist/admin/adapters/router.js.map +1 -1
  4. package/dist/admin/forms/Diff.d.ts +0 -4
  5. package/dist/admin/forms/Diff.d.ts.map +1 -1
  6. package/dist/admin/forms/Diff.js.map +1 -1
  7. package/dist/admin/forms/Form.d.ts +0 -2
  8. package/dist/admin/forms/Form.d.ts.map +1 -1
  9. package/dist/admin/forms/Form.js.map +1 -1
  10. package/dist/admin/initAdminContext.d.ts.map +1 -1
  11. package/dist/admin/initAdminContext.js +0 -10
  12. package/dist/admin/initAdminContext.js.map +1 -1
  13. package/dist/auth/createAuthToken.d.ts +26 -0
  14. package/dist/auth/createAuthToken.d.ts.map +1 -0
  15. package/dist/auth/createAuthToken.js +39 -0
  16. package/dist/auth/createAuthToken.js.map +1 -0
  17. package/dist/auth/endpoints/refresh.d.ts.map +1 -1
  18. package/dist/auth/endpoints/refresh.js +2 -1
  19. package/dist/auth/endpoints/refresh.js.map +1 -1
  20. package/dist/auth/getFieldsToSign.js.map +1 -1
  21. package/dist/auth/loginWithCookie.d.ts.map +1 -1
  22. package/dist/auth/loginWithCookie.js +1 -0
  23. package/dist/auth/loginWithCookie.js.map +1 -1
  24. package/dist/auth/operations/local/login.d.ts.map +1 -1
  25. package/dist/auth/operations/local/login.js +1 -0
  26. package/dist/auth/operations/local/login.js.map +1 -1
  27. package/dist/auth/operations/login.d.ts +2 -0
  28. package/dist/auth/operations/login.d.ts.map +1 -1
  29. package/dist/auth/operations/login.js +6 -19
  30. package/dist/auth/operations/login.js.map +1 -1
  31. package/dist/auth/operations/refresh.d.ts +8 -0
  32. package/dist/auth/operations/refresh.d.ts.map +1 -1
  33. package/dist/auth/operations/refresh.js +50 -19
  34. package/dist/auth/operations/refresh.js.map +1 -1
  35. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  36. package/dist/auth/operations/resetPassword.js +54 -20
  37. package/dist/auth/operations/resetPassword.js.map +1 -1
  38. package/dist/auth/refreshAuthToken.d.ts +32 -0
  39. package/dist/auth/refreshAuthToken.d.ts.map +1 -0
  40. package/dist/auth/refreshAuthToken.js +113 -0
  41. package/dist/auth/refreshAuthToken.js.map +1 -0
  42. package/dist/auth/serverFunctions/cookies.js.map +1 -1
  43. package/dist/auth/serverFunctions/login.js.map +1 -1
  44. package/dist/auth/sessions.d.ts +9 -2
  45. package/dist/auth/sessions.d.ts.map +1 -1
  46. package/dist/auth/sessions.js +6 -5
  47. package/dist/auth/sessions.js.map +1 -1
  48. package/dist/auth/types.d.ts +25 -1
  49. package/dist/auth/types.d.ts.map +1 -1
  50. package/dist/auth/types.js.map +1 -1
  51. package/dist/cli/commands/data/utilities.d.ts +1 -1
  52. package/dist/cli/commands/data/utilities.d.ts.map +1 -1
  53. package/dist/cli/commands/data/utilities.js.map +1 -1
  54. package/dist/cli/defineCLICommand.js +1 -1
  55. package/dist/cli/defineCLICommand.js.map +1 -1
  56. package/dist/collections/config/client.d.ts +1 -1
  57. package/dist/collections/config/client.d.ts.map +1 -1
  58. package/dist/collections/config/client.js +0 -1
  59. package/dist/collections/config/client.js.map +1 -1
  60. package/dist/collections/config/defaults.d.ts +2 -0
  61. package/dist/collections/config/defaults.d.ts.map +1 -1
  62. package/dist/collections/config/defaults.js +4 -0
  63. package/dist/collections/config/defaults.js.map +1 -1
  64. package/dist/collections/config/sanitize.d.ts.map +1 -1
  65. package/dist/collections/config/sanitize.js +3 -0
  66. package/dist/collections/config/sanitize.js.map +1 -1
  67. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  68. package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
  69. package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
  70. package/dist/collections/config/types.d.ts +4 -21
  71. package/dist/collections/config/types.d.ts.map +1 -1
  72. package/dist/collections/config/types.js.map +1 -1
  73. package/dist/collections/dataloader.d.ts +1 -10
  74. package/dist/collections/dataloader.d.ts.map +1 -1
  75. package/dist/collections/dataloader.js +6 -14
  76. package/dist/collections/dataloader.js.map +1 -1
  77. package/dist/collections/operations/create.d.ts.map +1 -1
  78. package/dist/collections/operations/create.js +0 -13
  79. package/dist/collections/operations/create.js.map +1 -1
  80. package/dist/collections/operations/delete.d.ts.map +1 -1
  81. package/dist/collections/operations/delete.js +121 -638
  82. package/dist/collections/operations/delete.js.map +1 -1
  83. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  84. package/dist/collections/operations/deleteByID.js +32 -238
  85. package/dist/collections/operations/deleteByID.js.map +1 -1
  86. package/dist/collections/operations/findByID.d.ts.map +1 -1
  87. package/dist/collections/operations/findByID.js +0 -6
  88. package/dist/collections/operations/findByID.js.map +1 -1
  89. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  90. package/dist/collections/operations/findDistinct.js +6 -7
  91. package/dist/collections/operations/findDistinct.js.map +1 -1
  92. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  93. package/dist/collections/operations/findVersionByID.js +7 -0
  94. package/dist/collections/operations/findVersionByID.js.map +1 -1
  95. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  96. package/dist/collections/operations/findVersions.js +5 -0
  97. package/dist/collections/operations/findVersions.js.map +1 -1
  98. package/dist/collections/operations/local/count.d.ts +4 -9
  99. package/dist/collections/operations/local/count.d.ts.map +1 -1
  100. package/dist/collections/operations/local/count.js.map +1 -1
  101. package/dist/collections/operations/local/countVersions.d.ts +0 -4
  102. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  103. package/dist/collections/operations/local/countVersions.js.map +1 -1
  104. package/dist/collections/operations/local/create.d.ts +4 -9
  105. package/dist/collections/operations/local/create.d.ts.map +1 -1
  106. package/dist/collections/operations/local/create.js.map +1 -1
  107. package/dist/collections/operations/local/delete.d.ts +4 -9
  108. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  109. package/dist/collections/operations/local/delete.js.map +1 -1
  110. package/dist/collections/operations/local/duplicate.d.ts +0 -5
  111. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  112. package/dist/collections/operations/local/duplicate.js.map +1 -1
  113. package/dist/collections/operations/local/find.d.ts +4 -9
  114. package/dist/collections/operations/local/find.d.ts.map +1 -1
  115. package/dist/collections/operations/local/find.js.map +1 -1
  116. package/dist/collections/operations/local/findByID.d.ts +4 -9
  117. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  118. package/dist/collections/operations/local/findByID.js.map +1 -1
  119. package/dist/collections/operations/local/findDistinct.d.ts +0 -5
  120. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  121. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  122. package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
  123. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  124. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  125. package/dist/collections/operations/local/findVersions.d.ts +0 -5
  126. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  127. package/dist/collections/operations/local/findVersions.js.map +1 -1
  128. package/dist/collections/operations/local/restoreVersion.d.ts +0 -5
  129. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  130. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  131. package/dist/collections/operations/local/update.d.ts +4 -9
  132. package/dist/collections/operations/local/update.d.ts.map +1 -1
  133. package/dist/collections/operations/local/update.js.map +1 -1
  134. package/dist/collections/operations/renameFile.js +1 -1
  135. package/dist/collections/operations/renameFile.js.map +1 -1
  136. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  137. package/dist/collections/operations/restoreVersion.js +76 -157
  138. package/dist/collections/operations/restoreVersion.js.map +1 -1
  139. package/dist/collections/operations/update.d.ts.map +1 -1
  140. package/dist/collections/operations/update.js +171 -357
  141. package/dist/collections/operations/update.js.map +1 -1
  142. package/dist/collections/operations/updateByID.d.ts +0 -15
  143. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  144. package/dist/collections/operations/updateByID.js +60 -265
  145. package/dist/collections/operations/updateByID.js.map +1 -1
  146. package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
  147. package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
  148. package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
  149. package/dist/collections/operations/utilities/update.d.ts +1 -14
  150. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  151. package/dist/collections/operations/utilities/update.js +20 -92
  152. package/dist/collections/operations/utilities/update.js.map +1 -1
  153. package/dist/collections/operations/validate.js +4 -4
  154. package/dist/collections/operations/validate.js.map +1 -1
  155. package/dist/config/client.d.ts +1 -3
  156. package/dist/config/client.d.ts.map +1 -1
  157. package/dist/config/client.js +1 -9
  158. package/dist/config/client.js.map +1 -1
  159. package/dist/config/defaults.d.ts.map +1 -1
  160. package/dist/config/defaults.js +1 -0
  161. package/dist/config/defaults.js.map +1 -1
  162. package/dist/config/definePlugin.js.map +1 -1
  163. package/dist/config/sanitize.d.ts.map +1 -1
  164. package/dist/config/sanitize.js +2 -40
  165. package/dist/config/sanitize.js.map +1 -1
  166. package/dist/config/types.d.ts +13 -21
  167. package/dist/config/types.d.ts.map +1 -1
  168. package/dist/config/types.js.map +1 -1
  169. package/dist/database/defaultCopy.d.ts.map +1 -1
  170. package/dist/database/defaultCopy.js +0 -1
  171. package/dist/database/defaultCopy.js.map +1 -1
  172. package/dist/database/types.d.ts +4 -75
  173. package/dist/database/types.d.ts.map +1 -1
  174. package/dist/database/types.js.map +1 -1
  175. package/dist/exports/build-config.d.ts +9 -0
  176. package/dist/exports/build-config.d.ts.map +1 -0
  177. package/dist/exports/build-config.js +38 -0
  178. package/dist/exports/build-config.js.map +1 -0
  179. package/dist/exports/shared.d.ts +0 -2
  180. package/dist/exports/shared.d.ts.map +1 -1
  181. package/dist/exports/shared.js +0 -2
  182. package/dist/exports/shared.js.map +1 -1
  183. package/dist/fields/baseFields/authorship/index.d.ts +1 -2
  184. package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
  185. package/dist/fields/baseFields/authorship/index.js +0 -12
  186. package/dist/fields/baseFields/authorship/index.js.map +1 -1
  187. package/dist/fields/config/client.js.map +1 -1
  188. package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
  189. package/dist/fields/config/reservedFieldNames.js.map +1 -1
  190. package/dist/fields/config/types.d.ts.map +1 -1
  191. package/dist/fields/config/types.js.map +1 -1
  192. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  193. package/dist/fields/hooks/afterRead/index.d.ts +0 -8
  194. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  195. package/dist/fields/hooks/afterRead/index.js +2 -6
  196. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  197. package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
  198. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  199. package/dist/fields/hooks/afterRead/promise.js +17 -41
  200. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  201. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  202. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
  203. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  204. package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
  205. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  206. package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
  207. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  208. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  209. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
  210. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
  211. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
  212. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
  213. package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
  214. package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
  215. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
  216. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  217. package/dist/fields/hooks/beforeChange/promise.js +96 -22
  218. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  219. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
  220. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
  222. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  223. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  224. package/dist/fields/hooks/beforeValidate/promise.js +0 -8
  225. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  226. package/dist/fields/validations.d.ts.map +1 -1
  227. package/dist/fields/validations.js +4 -1
  228. package/dist/fields/validations.js.map +1 -1
  229. package/dist/globals/config/types.d.ts +2 -6
  230. package/dist/globals/config/types.d.ts.map +1 -1
  231. package/dist/globals/config/types.js.map +1 -1
  232. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  233. package/dist/globals/operations/countGlobalVersions.js +0 -7
  234. package/dist/globals/operations/countGlobalVersions.js.map +1 -1
  235. package/dist/globals/operations/findOne.d.ts.map +1 -1
  236. package/dist/globals/operations/findOne.js +0 -7
  237. package/dist/globals/operations/findOne.js.map +1 -1
  238. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  239. package/dist/globals/operations/findVersionByID.js +6 -6
  240. package/dist/globals/operations/findVersionByID.js.map +1 -1
  241. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  242. package/dist/globals/operations/findVersions.js +4 -6
  243. package/dist/globals/operations/findVersions.js.map +1 -1
  244. package/dist/globals/operations/local/countVersions.d.ts +0 -5
  245. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  246. package/dist/globals/operations/local/countVersions.js.map +1 -1
  247. package/dist/globals/operations/local/findOne.d.ts +0 -5
  248. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  249. package/dist/globals/operations/local/findOne.js.map +1 -1
  250. package/dist/globals/operations/local/findVersionByID.d.ts +0 -5
  251. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  252. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  253. package/dist/globals/operations/local/findVersions.d.ts +0 -5
  254. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  255. package/dist/globals/operations/local/findVersions.js.map +1 -1
  256. package/dist/globals/operations/local/restoreVersion.d.ts +0 -5
  257. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  258. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  259. package/dist/globals/operations/local/update.d.ts +0 -5
  260. package/dist/globals/operations/local/update.d.ts.map +1 -1
  261. package/dist/globals/operations/local/update.js +18 -61
  262. package/dist/globals/operations/local/update.js.map +1 -1
  263. package/dist/globals/operations/restoreVersion.d.ts +2 -3
  264. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  265. package/dist/globals/operations/restoreVersion.js +24 -61
  266. package/dist/globals/operations/restoreVersion.js.map +1 -1
  267. package/dist/globals/operations/update.d.ts.map +1 -1
  268. package/dist/globals/operations/update.js +8 -86
  269. package/dist/globals/operations/update.js.map +1 -1
  270. package/dist/globals/operations/validate.js +1 -1
  271. package/dist/globals/operations/validate.js.map +1 -1
  272. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
  273. package/dist/hierarchy/addHierarchyToCollection.js +32 -21
  274. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
  275. package/dist/hierarchy/createFolderField.js.map +1 -1
  276. package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
  277. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
  278. package/dist/hierarchy/getInitialTreeData.js +1 -4
  279. package/dist/hierarchy/getInitialTreeData.js.map +1 -1
  280. package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
  281. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
  282. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
  283. package/dist/hierarchy/utils/computePaths.js.map +1 -1
  284. package/dist/index.bundled.d.ts +4336 -5501
  285. package/dist/index.d.ts +27 -51
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +14 -37
  288. package/dist/index.js.map +1 -1
  289. package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
  290. package/dist/llm-instructions/getInstructionsCollection.js +2 -0
  291. package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
  292. package/dist/preferences/keys.d.ts +4 -11
  293. package/dist/preferences/keys.d.ts.map +1 -1
  294. package/dist/preferences/keys.js +3 -10
  295. package/dist/preferences/keys.js.map +1 -1
  296. package/dist/preferences/types.d.ts +0 -19
  297. package/dist/preferences/types.d.ts.map +1 -1
  298. package/dist/preferences/types.js.map +1 -1
  299. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
  300. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  301. package/dist/types/index.d.ts +0 -13
  302. package/dist/types/index.d.ts.map +1 -1
  303. package/dist/types/index.js.map +1 -1
  304. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  305. package/dist/uploads/deleteAssociatedFiles.js +29 -108
  306. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  307. package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
  308. package/dist/uploads/endpoints/getFile.js +0 -5
  309. package/dist/uploads/endpoints/getFile.js.map +1 -1
  310. package/dist/uploads/fileExists.d.ts.map +1 -1
  311. package/dist/uploads/fileExists.js +2 -5
  312. package/dist/uploads/fileExists.js.map +1 -1
  313. package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
  314. package/dist/uploads/fileVersioning/archive.js +1 -15
  315. package/dist/uploads/fileVersioning/archive.js.map +1 -1
  316. package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
  317. package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
  318. package/dist/uploads/fileVersioning/cleanup.js +0 -12
  319. package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
  320. package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
  321. package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
  322. package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
  323. package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
  324. package/dist/uploads/formatFilesize.js +1 -1
  325. package/dist/uploads/formatFilesize.js.map +1 -1
  326. package/dist/uploads/generateFileData.d.ts +0 -5
  327. package/dist/uploads/generateFileData.d.ts.map +1 -1
  328. package/dist/uploads/generateFileData.js +2 -74
  329. package/dist/uploads/generateFileData.js.map +1 -1
  330. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  331. package/dist/uploads/getBaseFields.js +29 -46
  332. package/dist/uploads/getBaseFields.js.map +1 -1
  333. package/dist/uploads/getFileContentRequirement.js.map +1 -1
  334. package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
  335. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  336. package/dist/uploads/getSafeFilename.js +3 -5
  337. package/dist/uploads/getSafeFilename.js.map +1 -1
  338. package/dist/uploads/safeFetch.js.map +1 -1
  339. package/dist/uploads/stagedUpload.js.map +1 -1
  340. package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
  341. package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
  342. package/dist/uploads/types.d.ts +0 -11
  343. package/dist/uploads/types.d.ts.map +1 -1
  344. package/dist/uploads/types.js.map +1 -1
  345. package/dist/uploads/uploadFiles.d.ts +1 -4
  346. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  347. package/dist/uploads/uploadFiles.js +5 -29
  348. package/dist/uploads/uploadFiles.js.map +1 -1
  349. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  350. package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
  351. package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
  352. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  353. package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
  354. package/dist/utilities/assertNoValidationWrite.js +0 -4
  355. package/dist/utilities/assertNoValidationWrite.js.map +1 -1
  356. package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
  357. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  358. package/dist/utilities/checkDocumentLockStatus.js +11 -44
  359. package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
  360. package/dist/utilities/cloneValidationRequest.js.map +1 -1
  361. package/dist/utilities/commitTransaction.d.ts +0 -4
  362. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  363. package/dist/utilities/commitTransaction.js +1 -41
  364. package/dist/utilities/commitTransaction.js.map +1 -1
  365. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  366. package/dist/utilities/configToJSONSchema.js +2 -18
  367. package/dist/utilities/configToJSONSchema.js.map +1 -1
  368. package/dist/utilities/createPayloadRequest.d.ts +0 -5
  369. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  370. package/dist/utilities/createPayloadRequest.js +3 -50
  371. package/dist/utilities/createPayloadRequest.js.map +1 -1
  372. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
  373. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
  374. package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
  375. package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
  376. package/dist/utilities/deepCopyObject.js.map +1 -1
  377. package/dist/utilities/documentMatchingWhereExists.js +1 -1
  378. package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
  379. package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
  380. package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
  381. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  382. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  383. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
  384. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  385. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  386. package/dist/utilities/getVersionsConfig.d.ts +4 -0
  387. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  388. package/dist/utilities/getVersionsConfig.js +5 -0
  389. package/dist/utilities/getVersionsConfig.js.map +1 -1
  390. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  391. package/dist/utilities/handleEndpoints.js +10 -9
  392. package/dist/utilities/handleEndpoints.js.map +1 -1
  393. package/dist/utilities/httpStatus.d.ts +0 -2
  394. package/dist/utilities/httpStatus.d.ts.map +1 -1
  395. package/dist/utilities/httpStatus.js +1 -3
  396. package/dist/utilities/httpStatus.js.map +1 -1
  397. package/dist/utilities/initTransaction.d.ts.map +1 -1
  398. package/dist/utilities/initTransaction.js +7 -35
  399. package/dist/utilities/initTransaction.js.map +1 -1
  400. package/dist/utilities/killTransaction.d.ts.map +1 -1
  401. package/dist/utilities/killTransaction.js +0 -27
  402. package/dist/utilities/killTransaction.js.map +1 -1
  403. package/dist/utilities/parseParams/index.js.map +1 -1
  404. package/dist/utilities/parseValidationLocale.js.map +1 -1
  405. package/dist/utilities/sanitizePopulateParam.js.map +1 -1
  406. package/dist/utilities/telemetry/conf/index.d.ts +4 -1
  407. package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
  408. package/dist/utilities/telemetry/conf/index.js.map +1 -1
  409. package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
  410. package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
  411. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  412. package/dist/versions/buildCollectionFields.js +0 -23
  413. package/dist/versions/buildCollectionFields.js.map +1 -1
  414. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  415. package/dist/versions/buildGlobalFields.js +0 -14
  416. package/dist/versions/buildGlobalFields.js.map +1 -1
  417. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  418. package/dist/versions/buildVersionCompoundIndexes.js +2 -8
  419. package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
  420. package/dist/versions/deleteCollectionVersions.d.ts +1 -2
  421. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  422. package/dist/versions/deleteCollectionVersions.js +8 -37
  423. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  424. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  425. package/dist/versions/deleteScheduledPublishJobs.js +0 -4
  426. package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
  427. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  428. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
  429. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
  430. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  431. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
  432. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  433. package/dist/versions/enforceMaxVersions.d.ts +0 -1
  434. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  435. package/dist/versions/enforceMaxVersions.js +6 -22
  436. package/dist/versions/enforceMaxVersions.js.map +1 -1
  437. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  438. package/dist/versions/getLatestCollectionVersion.js +2 -10
  439. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  440. package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
  441. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  442. package/dist/versions/getLatestGlobalVersion.js +21 -65
  443. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  444. package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
  445. package/dist/versions/saveVersion.d.ts +0 -7
  446. package/dist/versions/saveVersion.d.ts.map +1 -1
  447. package/dist/versions/saveVersion.js +4 -27
  448. package/dist/versions/saveVersion.js.map +1 -1
  449. package/dist/versions/updateLatestVersion.d.ts +0 -1
  450. package/dist/versions/updateLatestVersion.d.ts.map +1 -1
  451. package/dist/versions/updateLatestVersion.js +7 -24
  452. package/dist/versions/updateLatestVersion.js.map +1 -1
  453. package/package.json +30 -28
  454. package/skills/payload/reference/ENDPOINTS.md +3 -9
  455. package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
  456. package/dist/admin/getAdminPreferences.d.ts +0 -10
  457. package/dist/admin/getAdminPreferences.d.ts.map +0 -1
  458. package/dist/admin/getAdminPreferences.js +0 -53
  459. package/dist/admin/getAdminPreferences.js.map +0 -1
  460. package/dist/admin/getRequestBranch.d.ts +0 -6
  461. package/dist/admin/getRequestBranch.d.ts.map +0 -1
  462. package/dist/admin/getRequestBranch.js +0 -17
  463. package/dist/admin/getRequestBranch.js.map +0 -1
  464. package/dist/branching/appendBranchFilter.d.ts +0 -30
  465. package/dist/branching/appendBranchFilter.d.ts.map +0 -1
  466. package/dist/branching/appendBranchFilter.js +0 -105
  467. package/dist/branching/appendBranchFilter.js.map +0 -1
  468. package/dist/branching/assertBranchAccess.d.ts +0 -10
  469. package/dist/branching/assertBranchAccess.d.ts.map +0 -1
  470. package/dist/branching/assertBranchAccess.js +0 -36
  471. package/dist/branching/assertBranchAccess.js.map +0 -1
  472. package/dist/branching/assertBranchActionAccess.d.ts +0 -10
  473. package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
  474. package/dist/branching/assertBranchActionAccess.js +0 -15
  475. package/dist/branching/assertBranchActionAccess.js.map +0 -1
  476. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
  477. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
  478. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
  479. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
  480. package/dist/branching/assertBranchReadable.d.ts +0 -36
  481. package/dist/branching/assertBranchReadable.d.ts.map +0 -1
  482. package/dist/branching/assertBranchReadable.js +0 -83
  483. package/dist/branching/assertBranchReadable.js.map +0 -1
  484. package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
  485. package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
  486. package/dist/branching/assertBranchUpdateAccess.js +0 -12
  487. package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
  488. package/dist/branching/assertBranchWritable.d.ts +0 -18
  489. package/dist/branching/assertBranchWritable.d.ts.map +0 -1
  490. package/dist/branching/assertBranchWritable.js +0 -46
  491. package/dist/branching/assertBranchWritable.js.map +0 -1
  492. package/dist/branching/branchIDs.d.ts +0 -38
  493. package/dist/branching/branchIDs.d.ts.map +0 -1
  494. package/dist/branching/branchIDs.js +0 -113
  495. package/dist/branching/branchIDs.js.map +0 -1
  496. package/dist/branching/branchSelect.d.ts +0 -42
  497. package/dist/branching/branchSelect.d.ts.map +0 -1
  498. package/dist/branching/branchSelect.js +0 -97
  499. package/dist/branching/branchSelect.js.map +0 -1
  500. package/dist/branching/checkFieldAccess.d.ts +0 -21
  501. package/dist/branching/checkFieldAccess.d.ts.map +0 -1
  502. package/dist/branching/checkFieldAccess.js +0 -238
  503. package/dist/branching/checkFieldAccess.js.map +0 -1
  504. package/dist/branching/collections.d.ts +0 -14
  505. package/dist/branching/collections.d.ts.map +0 -1
  506. package/dist/branching/collections.js +0 -713
  507. package/dist/branching/collections.js.map +0 -1
  508. package/dist/branching/combineBranchAccess.d.ts +0 -6
  509. package/dist/branching/combineBranchAccess.d.ts.map +0 -1
  510. package/dist/branching/combineBranchAccess.js +0 -22
  511. package/dist/branching/combineBranchAccess.js.map +0 -1
  512. package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
  513. package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
  514. package/dist/branching/copyUploadFilesToBranch.js +0 -126
  515. package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
  516. package/dist/branching/createShadowRow.d.ts +0 -70
  517. package/dist/branching/createShadowRow.d.ts.map +0 -1
  518. package/dist/branching/createShadowRow.js +0 -296
  519. package/dist/branching/createShadowRow.js.map +0 -1
  520. package/dist/branching/discard.d.ts +0 -52
  521. package/dist/branching/discard.d.ts.map +0 -1
  522. package/dist/branching/discard.js +0 -428
  523. package/dist/branching/discard.js.map +0 -1
  524. package/dist/branching/effectiveOperations.d.ts +0 -55
  525. package/dist/branching/effectiveOperations.d.ts.map +0 -1
  526. package/dist/branching/effectiveOperations.js +0 -472
  527. package/dist/branching/effectiveOperations.js.map +0 -1
  528. package/dist/branching/endpoints/discard.d.ts +0 -15
  529. package/dist/branching/endpoints/discard.d.ts.map +0 -1
  530. package/dist/branching/endpoints/discard.js +0 -55
  531. package/dist/branching/endpoints/discard.js.map +0 -1
  532. package/dist/branching/endpoints/merge.d.ts +0 -34
  533. package/dist/branching/endpoints/merge.d.ts.map +0 -1
  534. package/dist/branching/endpoints/merge.js +0 -119
  535. package/dist/branching/endpoints/merge.js.map +0 -1
  536. package/dist/branching/forkDocument.d.ts +0 -20
  537. package/dist/branching/forkDocument.d.ts.map +0 -1
  538. package/dist/branching/forkDocument.js +0 -169
  539. package/dist/branching/forkDocument.js.map +0 -1
  540. package/dist/branching/globalMergeWrites.d.ts +0 -21
  541. package/dist/branching/globalMergeWrites.d.ts.map +0 -1
  542. package/dist/branching/globalMergeWrites.js +0 -146
  543. package/dist/branching/globalMergeWrites.js.map +0 -1
  544. package/dist/branching/globals.d.ts +0 -49
  545. package/dist/branching/globals.d.ts.map +0 -1
  546. package/dist/branching/globals.js +0 -197
  547. package/dist/branching/globals.js.map +0 -1
  548. package/dist/branching/hooks.d.ts +0 -24
  549. package/dist/branching/hooks.d.ts.map +0 -1
  550. package/dist/branching/hooks.js +0 -92
  551. package/dist/branching/hooks.js.map +0 -1
  552. package/dist/branching/injectBranchFields.d.ts +0 -40
  553. package/dist/branching/injectBranchFields.d.ts.map +0 -1
  554. package/dist/branching/injectBranchFields.js +0 -229
  555. package/dist/branching/injectBranchFields.js.map +0 -1
  556. package/dist/branching/merge/applyMergeChange.d.ts +0 -27
  557. package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
  558. package/dist/branching/merge/applyMergeChange.js +0 -853
  559. package/dist/branching/merge/applyMergeChange.js.map +0 -1
  560. package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
  561. package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
  562. package/dist/branching/merge/branchMergeStatus.js +0 -74
  563. package/dist/branching/merge/branchMergeStatus.js.map +0 -1
  564. package/dist/branching/merge/executeMerge.d.ts +0 -22
  565. package/dist/branching/merge/executeMerge.d.ts.map +0 -1
  566. package/dist/branching/merge/executeMerge.js +0 -600
  567. package/dist/branching/merge/executeMerge.js.map +0 -1
  568. package/dist/branching/merge/finalizeMerge.d.ts +0 -40
  569. package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
  570. package/dist/branching/merge/finalizeMerge.js +0 -237
  571. package/dist/branching/merge/finalizeMerge.js.map +0 -1
  572. package/dist/branching/merge/mergeLedger.d.ts +0 -40
  573. package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
  574. package/dist/branching/merge/mergeLedger.js +0 -130
  575. package/dist/branching/merge/mergeLedger.js.map +0 -1
  576. package/dist/branching/merge/prepareMerge.d.ts +0 -41
  577. package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
  578. package/dist/branching/merge/prepareMerge.js +0 -234
  579. package/dist/branching/merge/prepareMerge.js.map +0 -1
  580. package/dist/branching/merge/recoverMerge.d.ts +0 -16
  581. package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
  582. package/dist/branching/merge/recoverMerge.js +0 -199
  583. package/dist/branching/merge/recoverMerge.js.map +0 -1
  584. package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
  585. package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
  586. package/dist/branching/merge/retryFailedCleanups.js +0 -335
  587. package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
  588. package/dist/branching/merge/utilities.d.ts +0 -35
  589. package/dist/branching/merge/utilities.d.ts.map +0 -1
  590. package/dist/branching/merge/utilities.js +0 -54
  591. package/dist/branching/merge/utilities.js.map +0 -1
  592. package/dist/branching/merge.d.ts +0 -88
  593. package/dist/branching/merge.d.ts.map +0 -1
  594. package/dist/branching/merge.js +0 -163
  595. package/dist/branching/merge.js.map +0 -1
  596. package/dist/branching/mergeWriteGuard.d.ts +0 -20
  597. package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
  598. package/dist/branching/mergeWriteGuard.js +0 -27
  599. package/dist/branching/mergeWriteGuard.js.map +0 -1
  600. package/dist/branching/preflight.d.ts +0 -71
  601. package/dist/branching/preflight.d.ts.map +0 -1
  602. package/dist/branching/preflight.js +0 -757
  603. package/dist/branching/preflight.js.map +0 -1
  604. package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
  605. package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
  606. package/dist/branching/readLocalizedBranchWrite.js +0 -90
  607. package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
  608. package/dist/branching/readMergeSnapshot.d.ts +0 -18
  609. package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
  610. package/dist/branching/readMergeSnapshot.js +0 -99
  611. package/dist/branching/readMergeSnapshot.js.map +0 -1
  612. package/dist/branching/resolveBranch.d.ts +0 -153
  613. package/dist/branching/resolveBranch.d.ts.map +0 -1
  614. package/dist/branching/resolveBranch.js +0 -363
  615. package/dist/branching/resolveBranch.js.map +0 -1
  616. package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
  617. package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
  618. package/dist/branching/resolveBranchActionAccess.js +0 -9
  619. package/dist/branching/resolveBranchActionAccess.js.map +0 -1
  620. package/dist/branching/resolveBranchQuery.d.ts +0 -48
  621. package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
  622. package/dist/branching/resolveBranchQuery.js +0 -115
  623. package/dist/branching/resolveBranchQuery.js.map +0 -1
  624. package/dist/branching/resolveBranchRowID.d.ts +0 -22
  625. package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
  626. package/dist/branching/resolveBranchRowID.js +0 -70
  627. package/dist/branching/resolveBranchRowID.js.map +0 -1
  628. package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
  629. package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
  630. package/dist/branching/sanitizeBranchingConfig.js +0 -110
  631. package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
  632. package/dist/branching/schedule/job.d.ts +0 -51
  633. package/dist/branching/schedule/job.d.ts.map +0 -1
  634. package/dist/branching/schedule/job.js +0 -151
  635. package/dist/branching/schedule/job.js.map +0 -1
  636. package/dist/branching/selectBranchChanges.d.ts +0 -8
  637. package/dist/branching/selectBranchChanges.d.ts.map +0 -1
  638. package/dist/branching/selectBranchChanges.js +0 -9
  639. package/dist/branching/selectBranchChanges.js.map +0 -1
  640. package/dist/branching/stripBranchMergeData.d.ts +0 -11
  641. package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
  642. package/dist/branching/stripBranchMergeData.js +0 -20
  643. package/dist/branching/stripBranchMergeData.js.map +0 -1
  644. package/dist/branching/tombstone.d.ts +0 -91
  645. package/dist/branching/tombstone.d.ts.map +0 -1
  646. package/dist/branching/tombstone.js +0 -546
  647. package/dist/branching/tombstone.js.map +0 -1
  648. package/dist/branching/types.d.ts +0 -158
  649. package/dist/branching/types.d.ts.map +0 -1
  650. package/dist/branching/types.js +0 -54
  651. package/dist/branching/types.js.map +0 -1
  652. package/dist/branching/validation.d.ts +0 -47
  653. package/dist/branching/validation.d.ts.map +0 -1
  654. package/dist/branching/validation.js +0 -272
  655. package/dist/branching/validation.js.map +0 -1
  656. package/dist/branching/versions.d.ts +0 -131
  657. package/dist/branching/versions.d.ts.map +0 -1
  658. package/dist/branching/versions.js +0 -572
  659. package/dist/branching/versions.js.map +0 -1
  660. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
  661. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
  662. package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
  663. package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
  664. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
  665. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
  666. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
  667. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
  668. package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
  669. package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
  670. package/dist/uploads/appendBranchToFileURL.js +0 -24
  671. package/dist/uploads/appendBranchToFileURL.js.map +0 -1
  672. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
  673. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
  674. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
  675. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
  676. package/dist/uploads/fileIdentity.d.ts +0 -24
  677. package/dist/uploads/fileIdentity.d.ts.map +0 -1
  678. package/dist/uploads/fileIdentity.js +0 -36
  679. package/dist/uploads/fileIdentity.js.map +0 -1
  680. package/dist/uploads/fileQuarantine.d.ts +0 -17
  681. package/dist/uploads/fileQuarantine.d.ts.map +0 -1
  682. package/dist/uploads/fileQuarantine.js +0 -52
  683. package/dist/uploads/fileQuarantine.js.map +0 -1
  684. package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
  685. package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
  686. package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
  687. package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
  688. package/dist/uploads/uploadFileRollback.d.ts +0 -31
  689. package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
  690. package/dist/uploads/uploadFileRollback.js +0 -269
  691. package/dist/uploads/uploadFileRollback.js.map +0 -1
  692. package/dist/utilities/extractRelationshipID.d.ts +0 -4
  693. package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
  694. package/dist/utilities/extractRelationshipID.js +0 -14
  695. package/dist/utilities/extractRelationshipID.js.map +0 -1
  696. package/dist/utilities/transactionCallbacks.d.ts +0 -77
  697. package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
  698. package/dist/utilities/transactionCallbacks.js +0 -299
  699. package/dist/utilities/transactionCallbacks.js.map +0 -1
  700. package/dist/utilities/transactionMutationTracker.d.ts +0 -21
  701. package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
  702. package/dist/utilities/transactionMutationTracker.js +0 -71
  703. package/dist/utilities/transactionMutationTracker.js.map +0 -1
@@ -1,11 +1,5 @@
1
- import { isDeepStrictEqual } from 'node:util';
2
1
  import { executeAccess } from '../../auth/executeAccess.js';
3
2
  import { hasWhereAccessResult } from '../../auth/types.js';
4
- import { assertBranchReadable } from '../../branching/assertBranchReadable.js';
5
- import { recordBranchGlobalChange, resolveBranchGlobalWrite } from '../../branching/globals.js';
6
- import { assertBranchMergeValidationWriteAllowed, runBranchMergeWriteGuard } from '../../branching/mergeWriteGuard.js';
7
- import { branchField, MAIN_BRANCH } from '../../branching/types.js';
8
- import { combineQueries } from '../../database/combineQueries.js';
9
3
  import { Forbidden, ValidationError } from '../../errors/index.js';
10
4
  import { afterChange } from '../../fields/hooks/afterChange/index.js';
11
5
  import { afterRead } from '../../fields/hooks/afterRead/index.js';
@@ -23,7 +17,6 @@ import { killTransaction } from '../../utilities/killTransaction.js';
23
17
  import { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js';
24
18
  import { resolveSelect } from '../../utilities/resolveSelect.js';
25
19
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
26
- import { markTransactionWrite } from '../../utilities/transactionMutationTracker.js';
27
20
  import { buildAllLocalesPublicationHookDoc, getAllLocalesPublicationStatus, hasAuthorizedAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
28
21
  import { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js';
29
22
  import { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js';
@@ -33,15 +26,7 @@ export const updateOperation = async (args)=>{
33
26
  assertNoValidationWrite(args.req);
34
27
  const req = args.req;
35
28
  const initialGlobalConfig = args.globalConfig;
36
- assertBranchMergeValidationWriteAllowed({
37
- req
38
- });
39
- if (!args.overrideAccess) {
40
- await assertBranchReadable({
41
- globalSlug: initialGlobalConfig.slug,
42
- req
43
- });
44
- }
29
+ assertNoValidationWrite(req);
45
30
  validateAllLocalesPublicationFlags({
46
31
  publishAllLocales: args.publishAllLocales,
47
32
  unpublishAllLocales: args.unpublishAllLocales
@@ -61,9 +46,8 @@ export const updateOperation = async (args)=>{
61
46
  data: args.data,
62
47
  status: initialAllLocalesPublicationStatus
63
48
  });
64
- let shouldCommit = false;
65
49
  try {
66
- shouldCommit = !args.disableTransaction && await initTransaction(req);
50
+ const shouldCommit = !args.disableTransaction && await initTransaction(req);
67
51
  // /////////////////////////////////////
68
52
  // beforeOperation - Global
69
53
  // /////////////////////////////////////
@@ -110,8 +94,7 @@ export const updateOperation = async (args)=>{
110
94
  if (isSavingDraft) {
111
95
  data._status = 'draft';
112
96
  }
113
- const incomingTopLevelFieldNames = getTopLevelFieldNames(data);
114
- const submittedTopLevelFieldNames = unpublishAllLocales ? incomingTopLevelFieldNames : undefined;
97
+ const submittedTopLevelFieldNames = unpublishAllLocales ? getTopLevelFieldNames(data) : undefined;
115
98
  // /////////////////////////////////////
116
99
  // 1. Retrieve and execute access
117
100
  // /////////////////////////////////////
@@ -124,15 +107,6 @@ export const updateOperation = async (args)=>{
124
107
  // Retrieve document
125
108
  // /////////////////////////////////////
126
109
  const query = overrideAccess ? undefined : accessResults;
127
- const writeBranch = resolveBranchGlobalWrite({
128
- globalSlug: slug,
129
- req
130
- });
131
- const mainStorageQuery = !writeBranch && config?.branching?.branchableGlobals.has(slug) ? {
132
- [branchField]: {
133
- equals: MAIN_BRANCH
134
- }
135
- } : undefined;
136
110
  // /////////////////////////////////////
137
111
  // 2. Retrieve document
138
112
  // /////////////////////////////////////
@@ -142,10 +116,9 @@ export const updateOperation = async (args)=>{
142
116
  locale: publishAllLocales || unpublishAllLocales ? 'all' : locale,
143
117
  payload,
144
118
  req,
145
- storageWhere: mainStorageQuery,
146
119
  where: query
147
120
  });
148
- const { global, globalExists, hasLiveGlobal } = globalVersionResult || {};
121
+ const { global, globalExists } = globalVersionResult || {};
149
122
  if (hasWhereAccessResult(accessResults) && globalExists && (!global || Object.keys(global).length === 0)) {
150
123
  throw new Forbidden(req.t);
151
124
  }
@@ -176,8 +149,7 @@ export const updateOperation = async (args)=>{
176
149
  globalSlug: slug,
177
150
  lockErrorMessage: `Global with slug "${slug}" is currently locked by another user and cannot be updated.`,
178
151
  overrideLock,
179
- req,
180
- shouldDeleteLock: false
152
+ req
181
153
  });
182
154
  // /////////////////////////////////////
183
155
  // beforeValidate - Fields
@@ -319,7 +291,7 @@ export const updateOperation = async (args)=>{
319
291
  slug: globalConfig.slug,
320
292
  locale: 'all',
321
293
  req,
322
- where: mainStorageQuery === undefined ? query : combineQueries(query, mainStorageQuery)
294
+ where: query
323
295
  });
324
296
  localizedPublishData = buildLocalizedPublishData({
325
297
  config,
@@ -360,24 +332,6 @@ export const updateOperation = async (args)=>{
360
332
  const dataToUpdate = {
361
333
  ...localizedPublishData ?? result
362
334
  };
363
- await runBranchMergeWriteGuard({
364
- data: dataToUpdate,
365
- globalSlug: slug,
366
- req
367
- });
368
- if (localizedPublishData) {
369
- await runBranchMergeWriteGuard({
370
- data: result,
371
- globalSlug: slug,
372
- req
373
- });
374
- }
375
- const branchConflictFieldNames = new Set(incomingTopLevelFieldNames);
376
- for (const [fieldName, value] of Object.entries(dataToUpdate)){
377
- if (!isDeepStrictEqual(value, globalJSON[fieldName])) {
378
- branchConflictFieldNames.add(fieldName);
379
- }
380
- }
381
335
  // /////////////////////////////////////
382
336
  // Update
383
337
  // /////////////////////////////////////
@@ -390,12 +344,6 @@ export const updateOperation = async (args)=>{
390
344
  select: incomingSelect
391
345
  })
392
346
  });
393
- await checkDocumentLockStatus({
394
- globalSlug: slug,
395
- lockErrorMessage: `Global with slug "${slug}" is currently locked by another user and cannot be updated.`,
396
- overrideLock,
397
- req
398
- });
399
347
  let resultWithLocales = result;
400
348
  if (!isSavingDraft) {
401
349
  const now = new Date().toISOString();
@@ -405,17 +353,9 @@ export const updateOperation = async (args)=>{
405
353
  }
406
354
  // Ensure updatedAt date is always updated
407
355
  dataToUpdate.updatedAt = now;
408
- const branchConflictData = deepCopyObjectSimple(Object.fromEntries([
409
- ...branchConflictFieldNames
410
- ].filter((fieldName)=>Object.hasOwn(dataToUpdate, fieldName)).map((fieldName)=>[
411
- fieldName,
412
- dataToUpdate[fieldName]
413
- ])));
414
- branchConflictData.updatedAt = now;
415
- if (hasLiveGlobal || writeBranch) {
356
+ if (globalExists) {
416
357
  resultWithLocales = await payload.db.updateGlobal({
417
358
  slug,
418
- branchConflictData,
419
359
  data: dataToUpdate,
420
360
  req,
421
361
  select
@@ -427,9 +367,6 @@ export const updateOperation = async (args)=>{
427
367
  req
428
368
  });
429
369
  }
430
- markTransactionWrite({
431
- req
432
- });
433
370
  resultWithLocales.updatedAt = now;
434
371
  if (localizedPublishData) {
435
372
  // Keep full locale payload for version writes during single-locale publish.
@@ -444,9 +381,6 @@ export const updateOperation = async (args)=>{
444
381
  // Create version
445
382
  // /////////////////////////////////////
446
383
  if (globalConfig.versions) {
447
- if (config?.branching?.branchableGlobals.has(slug)) {
448
- resultWithLocales[branchField] = writeBranch ?? MAIN_BRANCH;
449
- }
450
384
  const { globalType } = resultWithLocales;
451
385
  resultWithLocales = await saveVersion({
452
386
  autosave,
@@ -459,21 +393,11 @@ export const updateOperation = async (args)=>{
459
393
  select,
460
394
  unpublish: unpublishAllLocales
461
395
  });
462
- markTransactionWrite({
463
- req
464
- });
465
396
  resultWithLocales = {
466
397
  ...resultWithLocales,
467
398
  globalType
468
399
  };
469
400
  }
470
- if (writeBranch) {
471
- await recordBranchGlobalChange({
472
- branch: writeBranch,
473
- globalSlug: slug,
474
- req
475
- });
476
- }
477
401
  // /////////////////////////////////////
478
402
  // Execute globalType field if not selected
479
403
  // /////////////////////////////////////
@@ -553,9 +477,7 @@ export const updateOperation = async (args)=>{
553
477
  }
554
478
  return result;
555
479
  } catch (error) {
556
- if (shouldCommit) {
557
- await killTransaction(req);
558
- }
480
+ await killTransaction(req);
559
481
  throw error;
560
482
  }
561
483
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { isDeepStrictEqual } from 'node:util'\n\nimport type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { Args as BeforeChangeArgs } from '../../fields/hooks/beforeChange/index.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { assertBranchReadable } from '../../branching/assertBranchReadable.js'\nimport { recordBranchGlobalChange, resolveBranchGlobalWrite } from '../../branching/globals.js'\nimport {\n assertBranchMergeValidationWriteAllowed,\n runBranchMergeWriteGuard,\n} from '../../branching/mergeWriteGuard.js'\nimport { branchField, MAIN_BRANCH } from '../../branching/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { Forbidden, ValidationError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { assertNoValidationWrite } from '../../utilities/assertNoValidationWrite.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { getTopLevelFieldNames } from '../../utilities/getTopLevelFieldNames.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { markTransactionWrite } from '../../utilities/transactionMutationTracker.js'\nimport {\n buildAllLocalesPublicationHookDoc,\n getAllLocalesPublicationStatus,\n hasAuthorizedAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { validateGlobalLocalWithLocaleKeyedData } from './local/validate.js'\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n assertNoValidationWrite(args.req)\n\n const req = args.req\n const initialGlobalConfig = args.globalConfig\n\n assertBranchMergeValidationWriteAllowed({ req })\n\n if (!args.overrideAccess) {\n await assertBranchReadable({ globalSlug: initialGlobalConfig.slug, req })\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialPublishAllLocales = resolvePublishAllLocales({\n draft: args.draft,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(initialGlobalConfig),\n locale: req.locale,\n publishAllLocalesArg: args.publishAllLocales,\n })\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n req.payload.config.localization && hasLocalizeStatusEnabled(initialGlobalConfig),\n ),\n publishAllLocales: initialPublishAllLocales,\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n let shouldCommit = false\n\n try {\n shouldCommit = !args.disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (initialGlobalConfig.hooks?.beforeOperation?.length) {\n for (const hook of initialGlobalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: initialGlobalConfig,\n operation: 'update',\n overrideAccess: args.overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n const {\n slug,\n autosave,\n depth,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n let publishAllLocales = resolvePublishAllLocales({\n draft: draftArg,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(globalConfig),\n locale,\n publishAllLocalesArg,\n })\n let unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(config?.localization && hasLocalizeStatusEnabled(globalConfig)),\n publishAllLocales,\n unpublishAllLocales,\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n\n if (requestedAllLocalesPublicationStatus && !allLocalesPublicationStatus) {\n publishAllLocales = false\n unpublishAllLocales = false\n }\n\n const isSavingDraft =\n Boolean(draftArg && hasDraftsEnabled(globalConfig)) &&\n data._status !== 'published' &&\n !publishAllLocales\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n const incomingTopLevelFieldNames = getTopLevelFieldNames(data)\n const submittedTopLevelFieldNames = unpublishAllLocales ? incomingTopLevelFieldNames : undefined\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n slug: globalConfig.slug,\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n const writeBranch = resolveBranchGlobalWrite({\n globalSlug: slug,\n req,\n })\n const mainStorageQuery =\n !writeBranch && config?.branching?.branchableGlobals.has(slug)\n ? { [branchField]: { equals: MAIN_BRANCH } }\n : undefined\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: publishAllLocales || unpublishAllLocales ? 'all' : locale!,\n payload,\n req,\n storageWhere: mainStorageQuery,\n where: query,\n })\n const { global, globalExists, hasLiveGlobal } = globalVersionResult || {}\n\n if (\n hasWhereAccessResult(accessResults) &&\n globalExists &&\n (!global || Object.keys(global).length === 0)\n ) {\n throw new Forbidden(req.t)\n }\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n shouldDeleteLock: false,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n let statusFieldAccess = false\n const publicationFieldPolicyDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n data._status === allLocalesPublicationStatus ? allLocalesPublicationStatus : undefined,\n })\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docForHooks: publicationFieldPolicyDoc,\n global: globalConfig,\n onFieldAccess: ({ accessResult, path }) => {\n if (path === '_status') {\n statusFieldAccess = accessResult\n }\n },\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n const publicationHookDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n statusFieldAccess && data._status === allLocalesPublicationStatus\n ? allLocalesPublicationStatus\n : undefined,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n const publicationData = { ...data }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: publicationHookDoc,\n docWithLocales: globalJSON,\n fieldsToValidate: submittedTopLevelFieldNames,\n global: globalConfig,\n operation: 'update',\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig),\n } satisfies BeforeChangeArgs<JsonObject>\n\n let statusFieldValue: unknown\n\n let result: JsonObject = await beforeChange({\n ...beforeChangeArgs,\n onDataProcessed: (processedData) => {\n statusFieldValue = processedData._status\n },\n })\n\n const hasAuthorizedPublicationStatus = hasAuthorizedAllLocalesPublicationStatus({\n data: publicationData,\n fieldAccessDenied: !statusFieldAccess,\n fieldValue: statusFieldValue,\n status: allLocalesPublicationStatus,\n })\n\n if (\n allLocalesPublicationStatus &&\n !hasAuthorizedPublicationStatus &&\n typeof statusFieldValue === 'undefined' &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n }\n\n if (\n config?.localization &&\n hasLocalizeStatusEnabled(globalConfig) &&\n typeof result._status === 'string'\n ) {\n const statusStr = result._status\n\n if (\n hasAuthorizedPublicationStatus &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n } else {\n result._status = {}\n }\n\n if (!hasAuthorizedPublicationStatus) {\n for (const localeCode of config.localization.localeCodes) {\n ;(result._status as Record<string, unknown>)[localeCode] = statusStr\n }\n }\n }\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n let localizedPublishData: JsonObject | null = null\n\n if (config && config.localization && globalConfig.versions) {\n if (hasLocalizeStatusEnabled(globalConfig)) {\n if (hasAuthorizedPublicationStatus) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof result._status !== 'object' || result._status === null) {\n result._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published'\n }\n } else if (\n !isSavingDraft &&\n result._status &&\n typeof result._status === 'object' &&\n !Array.isArray(result._status) &&\n (result._status as Record<string, unknown>)[locale!] === 'published'\n ) {\n const currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n locale: 'all',\n req,\n where: mainStorageQuery === undefined ? query : combineQueries(query, mainStorageQuery),\n })\n\n localizedPublishData = buildLocalizedPublishData({\n config,\n currentDoc: currentGlobal as JsonObject,\n fields: globalConfig.fields,\n locale: locale!,\n result,\n })\n }\n }\n }\n\n if (\n config?.localization &&\n hasDraftsEnabled(globalConfig) &&\n publishAllLocales &&\n !unpublishAllLocales &&\n (!hasLocalizeStatusEnabled(globalConfig) || hasAuthorizedPublicationStatus)\n ) {\n const validationResult = await validateGlobalLocalWithLocaleKeyedData({\n operation: 'update',\n options: {\n slug: globalConfig.slug,\n data: result,\n draft: true,\n locale: 'all',\n overrideAccess,\n req,\n },\n payload,\n sourceData: {\n docWithLocales: globalJSON,\n originalDoc: publicationHookDoc,\n originalLocale: locale!,\n },\n })\n\n if (!validationResult.valid) {\n throw new ValidationError(\n {\n errors: validationResult.errors,\n global: globalConfig.slug,\n req,\n },\n req.t,\n )\n }\n }\n\n const dataToUpdate: JsonObject = { ...(localizedPublishData ?? result) }\n\n await runBranchMergeWriteGuard({ data: dataToUpdate, globalSlug: slug, req })\n\n if (localizedPublishData) {\n await runBranchMergeWriteGuard({ data: result, globalSlug: slug, req })\n }\n\n const branchConflictFieldNames = new Set(incomingTopLevelFieldNames)\n\n for (const [fieldName, value] of Object.entries(dataToUpdate)) {\n if (!isDeepStrictEqual(value, globalJSON[fieldName])) {\n branchConflictFieldNames.add(fieldName)\n }\n }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n select: resolveSelect({\n config: globalConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n let resultWithLocales: JsonObject = result\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!dataToUpdate.createdAt) {\n dataToUpdate.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n dataToUpdate.updatedAt = now\n\n const branchConflictData = deepCopyObjectSimple(\n Object.fromEntries(\n [...branchConflictFieldNames]\n .filter((fieldName) => Object.hasOwn(dataToUpdate, fieldName))\n .map((fieldName) => [fieldName, dataToUpdate[fieldName]]),\n ),\n )\n branchConflictData.updatedAt = now\n\n if (hasLiveGlobal || writeBranch) {\n resultWithLocales = await payload.db.updateGlobal({\n slug,\n branchConflictData,\n data: dataToUpdate,\n req,\n select,\n })\n } else {\n resultWithLocales = await payload.db.createGlobal({\n slug,\n data: dataToUpdate,\n req,\n })\n }\n markTransactionWrite({ req })\n\n resultWithLocales.updatedAt = now\n\n if (localizedPublishData) {\n // Keep full locale payload for version writes during single-locale publish.\n resultWithLocales = {\n ...result,\n createdAt: resultWithLocales.createdAt ?? result.createdAt ?? now,\n updatedAt: now,\n }\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n if (config?.branching?.branchableGlobals.has(slug)) {\n resultWithLocales[branchField] = writeBranch ?? MAIN_BRANCH\n }\n\n const { globalType } = resultWithLocales\n resultWithLocales = await saveVersion({\n autosave,\n docWithLocales: resultWithLocales,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n req,\n select,\n unpublish: unpublishAllLocales,\n })\n markTransactionWrite({ req })\n\n resultWithLocales = {\n ...resultWithLocales,\n globalType,\n }\n }\n\n if (writeBranch) {\n await recordBranchGlobalChange({ branch: writeBranch, globalSlug: slug, req })\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && resultWithLocales.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete resultWithLocales['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: resultWithLocales,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n if (shouldCommit) {\n await killTransaction(req)\n }\n throw error\n }\n}\n"],"names":["isDeepStrictEqual","executeAccess","hasWhereAccessResult","assertBranchReadable","recordBranchGlobalChange","resolveBranchGlobalWrite","assertBranchMergeValidationWriteAllowed","runBranchMergeWriteGuard","branchField","MAIN_BRANCH","combineQueries","Forbidden","ValidationError","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","assertNoValidationWrite","checkDocumentLockStatus","commitTransaction","getSelectMode","getTopLevelFieldNames","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","resolvePublishAllLocales","resolveSelect","sanitizeSelect","markTransactionWrite","buildAllLocalesPublicationHookDoc","getAllLocalesPublicationStatus","hasAuthorizedAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildLocalizedPublishData","getLatestGlobalVersion","saveVersion","validateGlobalLocalWithLocaleKeyedData","updateOperation","args","req","initialGlobalConfig","globalConfig","overrideAccess","globalSlug","slug","publishAllLocales","unpublishAllLocales","initialPublishAllLocales","draft","locale","publishAllLocalesArg","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","config","localization","initialAllLocalesPublicationIntent","data","status","shouldCommit","disableTransaction","hooks","beforeOperation","length","hook","context","global","operation","autosave","depth","draftArg","overrideLock","populate","fallbackLocale","select","incomingSelect","showHiddenFields","unpublishAllLocalesArg","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","isSavingDraft","_status","incomingTopLevelFieldNames","submittedTopLevelFieldNames","undefined","accessResults","access","update","query","writeBranch","mainStorageQuery","branching","branchableGlobals","has","equals","globalVersionResult","storageWhere","where","globalExists","hasLiveGlobal","Object","keys","t","globalJSON","_id","originalDoc","collection","doc","lockErrorMessage","shouldDeleteLock","statusFieldAccess","publicationFieldPolicyDoc","docWithLocales","docForHooks","onFieldAccess","accessResult","path","publicationHookDoc","publicationData","beforeChangeArgs","fieldsToValidate","skipValidation","statusFieldValue","result","onDataProcessed","processedData","hasAuthorizedPublicationStatus","fieldAccessDenied","fieldValue","statusStr","localeCode","localeCodes","localizedPublishData","versions","accessibleLocaleCodes","filterAvailableLocales","filteredLocales","locales","map","code","Array","isArray","currentGlobal","db","findGlobal","currentDoc","fields","validationResult","options","sourceData","originalLocale","valid","errors","dataToUpdate","branchConflictFieldNames","Set","fieldName","value","entries","add","flattenedFields","resultWithLocales","now","Date","toISOString","createdAt","updatedAt","branchConflictData","fromEntries","filter","hasOwn","updateGlobal","createGlobal","globalType","unpublish","branch","selectMode","previousDoc","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { Args as BeforeChangeArgs } from '../../fields/hooks/beforeChange/index.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden, ValidationError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { assertNoValidationWrite } from '../../utilities/assertNoValidationWrite.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { getTopLevelFieldNames } from '../../utilities/getTopLevelFieldNames.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n buildAllLocalesPublicationHookDoc,\n getAllLocalesPublicationStatus,\n hasAuthorizedAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { validateGlobalLocalWithLocaleKeyedData } from './local/validate.js'\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n assertNoValidationWrite(args.req)\n\n const req = args.req\n const initialGlobalConfig = args.globalConfig\n\n assertNoValidationWrite(req)\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialPublishAllLocales = resolvePublishAllLocales({\n draft: args.draft,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(initialGlobalConfig),\n locale: req.locale,\n publishAllLocalesArg: args.publishAllLocales,\n })\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n req.payload.config.localization && hasLocalizeStatusEnabled(initialGlobalConfig),\n ),\n publishAllLocales: initialPublishAllLocales,\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (initialGlobalConfig.hooks?.beforeOperation?.length) {\n for (const hook of initialGlobalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: initialGlobalConfig,\n operation: 'update',\n overrideAccess: args.overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n const {\n slug,\n autosave,\n depth,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n let publishAllLocales = resolvePublishAllLocales({\n draft: draftArg,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(globalConfig),\n locale,\n publishAllLocalesArg,\n })\n let unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(config?.localization && hasLocalizeStatusEnabled(globalConfig)),\n publishAllLocales,\n unpublishAllLocales,\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n\n if (requestedAllLocalesPublicationStatus && !allLocalesPublicationStatus) {\n publishAllLocales = false\n unpublishAllLocales = false\n }\n\n const isSavingDraft =\n Boolean(draftArg && hasDraftsEnabled(globalConfig)) &&\n data._status !== 'published' &&\n !publishAllLocales\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n const submittedTopLevelFieldNames = unpublishAllLocales\n ? getTopLevelFieldNames(data)\n : undefined\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n slug: globalConfig.slug,\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: publishAllLocales || unpublishAllLocales ? 'all' : locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\n\n if (\n hasWhereAccessResult(accessResults) &&\n globalExists &&\n (!global || Object.keys(global).length === 0)\n ) {\n throw new Forbidden(req.t)\n }\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n let statusFieldAccess = false\n const publicationFieldPolicyDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n data._status === allLocalesPublicationStatus ? allLocalesPublicationStatus : undefined,\n })\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docForHooks: publicationFieldPolicyDoc,\n global: globalConfig,\n onFieldAccess: ({ accessResult, path }) => {\n if (path === '_status') {\n statusFieldAccess = accessResult\n }\n },\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n const publicationHookDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n statusFieldAccess && data._status === allLocalesPublicationStatus\n ? allLocalesPublicationStatus\n : undefined,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n const publicationData = { ...data }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: publicationHookDoc,\n docWithLocales: globalJSON,\n fieldsToValidate: submittedTopLevelFieldNames,\n global: globalConfig,\n operation: 'update',\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig),\n } satisfies BeforeChangeArgs<JsonObject>\n\n let statusFieldValue: unknown\n\n let result: JsonObject = await beforeChange({\n ...beforeChangeArgs,\n onDataProcessed: (processedData) => {\n statusFieldValue = processedData._status\n },\n })\n\n const hasAuthorizedPublicationStatus = hasAuthorizedAllLocalesPublicationStatus({\n data: publicationData,\n fieldAccessDenied: !statusFieldAccess,\n fieldValue: statusFieldValue,\n status: allLocalesPublicationStatus,\n })\n\n if (\n allLocalesPublicationStatus &&\n !hasAuthorizedPublicationStatus &&\n typeof statusFieldValue === 'undefined' &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n }\n\n if (\n config?.localization &&\n hasLocalizeStatusEnabled(globalConfig) &&\n typeof result._status === 'string'\n ) {\n const statusStr = result._status\n\n if (\n hasAuthorizedPublicationStatus &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n } else {\n result._status = {}\n }\n\n if (!hasAuthorizedPublicationStatus) {\n for (const localeCode of config.localization.localeCodes) {\n ;(result._status as Record<string, unknown>)[localeCode] = statusStr\n }\n }\n }\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n let localizedPublishData: JsonObject | null = null\n\n if (config && config.localization && globalConfig.versions) {\n if (hasLocalizeStatusEnabled(globalConfig)) {\n if (hasAuthorizedPublicationStatus) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof result._status !== 'object' || result._status === null) {\n result._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published'\n }\n } else if (\n !isSavingDraft &&\n result._status &&\n typeof result._status === 'object' &&\n !Array.isArray(result._status) &&\n (result._status as Record<string, unknown>)[locale!] === 'published'\n ) {\n const currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n locale: 'all',\n req,\n where: query,\n })\n\n localizedPublishData = buildLocalizedPublishData({\n config,\n currentDoc: currentGlobal as JsonObject,\n fields: globalConfig.fields,\n locale: locale!,\n result,\n })\n }\n }\n }\n\n if (\n config?.localization &&\n hasDraftsEnabled(globalConfig) &&\n publishAllLocales &&\n !unpublishAllLocales &&\n (!hasLocalizeStatusEnabled(globalConfig) || hasAuthorizedPublicationStatus)\n ) {\n const validationResult = await validateGlobalLocalWithLocaleKeyedData({\n operation: 'update',\n options: {\n slug: globalConfig.slug,\n data: result,\n draft: true,\n locale: 'all',\n overrideAccess,\n req,\n },\n payload,\n sourceData: {\n docWithLocales: globalJSON,\n originalDoc: publicationHookDoc,\n originalLocale: locale!,\n },\n })\n\n if (!validationResult.valid) {\n throw new ValidationError(\n {\n errors: validationResult.errors,\n global: globalConfig.slug,\n req,\n },\n req.t,\n )\n }\n }\n\n const dataToUpdate: JsonObject = { ...(localizedPublishData ?? result) }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n select: resolveSelect({\n config: globalConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n let resultWithLocales: JsonObject = result\n\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!dataToUpdate.createdAt) {\n dataToUpdate.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n dataToUpdate.updatedAt = now\n\n if (globalExists) {\n resultWithLocales = await payload.db.updateGlobal({\n slug,\n data: dataToUpdate,\n req,\n select,\n })\n } else {\n resultWithLocales = await payload.db.createGlobal({\n slug,\n data: dataToUpdate,\n req,\n })\n }\n\n resultWithLocales.updatedAt = now\n\n if (localizedPublishData) {\n // Keep full locale payload for version writes during single-locale publish.\n resultWithLocales = {\n ...result,\n createdAt: resultWithLocales.createdAt ?? result.createdAt ?? now,\n updatedAt: now,\n }\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = resultWithLocales\n resultWithLocales = await saveVersion({\n autosave,\n docWithLocales: resultWithLocales,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n req,\n select,\n unpublish: unpublishAllLocales,\n })\n\n resultWithLocales = {\n ...resultWithLocales,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && resultWithLocales.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete resultWithLocales['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: resultWithLocales,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","hasWhereAccessResult","Forbidden","ValidationError","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","assertNoValidationWrite","checkDocumentLockStatus","commitTransaction","getSelectMode","getTopLevelFieldNames","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","resolvePublishAllLocales","resolveSelect","sanitizeSelect","buildAllLocalesPublicationHookDoc","getAllLocalesPublicationStatus","hasAuthorizedAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildLocalizedPublishData","getLatestGlobalVersion","saveVersion","validateGlobalLocalWithLocaleKeyedData","updateOperation","args","req","initialGlobalConfig","globalConfig","publishAllLocales","unpublishAllLocales","initialPublishAllLocales","draft","locale","publishAllLocalesArg","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","config","localization","initialAllLocalesPublicationIntent","data","status","shouldCommit","disableTransaction","hooks","beforeOperation","length","hook","context","global","operation","overrideAccess","slug","autosave","depth","draftArg","overrideLock","populate","fallbackLocale","select","incomingSelect","showHiddenFields","unpublishAllLocalesArg","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","isSavingDraft","_status","submittedTopLevelFieldNames","undefined","accessResults","access","update","query","globalVersionResult","where","globalExists","Object","keys","t","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","statusFieldAccess","publicationFieldPolicyDoc","docWithLocales","docForHooks","onFieldAccess","accessResult","path","publicationHookDoc","publicationData","beforeChangeArgs","fieldsToValidate","skipValidation","statusFieldValue","result","onDataProcessed","processedData","hasAuthorizedPublicationStatus","fieldAccessDenied","fieldValue","statusStr","localeCode","localeCodes","localizedPublishData","versions","accessibleLocaleCodes","filterAvailableLocales","filteredLocales","locales","map","code","Array","isArray","currentGlobal","db","findGlobal","currentDoc","fields","validationResult","options","sourceData","originalLocale","valid","errors","dataToUpdate","flattenedFields","resultWithLocales","now","Date","toISOString","createdAt","updatedAt","updateGlobal","createGlobal","globalType","unpublish","selectMode","previousDoc","error"],"mappings":"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"}
@@ -55,7 +55,7 @@ async function validateOperationWithScopedRequest({ slug, data: incomingData, dr
55
55
  collection: null,
56
56
  docWithLocales,
57
57
  global: globalConfig,
58
- incomingData: incomingData,
58
+ incomingData,
59
59
  onValidationData,
60
60
  originalDoc,
61
61
  overrideAccess,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/operations/validate.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ValidationResult } from '../../types/validation.js'\nimport type { ValidationSourceData } from '../../utilities/runValidationLifecycle.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport { flattenDataByLocale } from '../../utilities/flattenDataByLocale.js'\nimport { runValidationLifecycle } from '../../utilities/runValidationLifecycle.js'\nimport {\n findDraftVersion,\n getDocumentFromDraftVersion,\n} from '../../versions/drafts/replaceWithDraftIfAvailable.js'\n\nexport type Arguments<TSlug extends GlobalSlug> = {\n data?: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n onValidationData?: (data: JsonObject) => void\n overrideAccess: boolean\n req: PayloadRequest\n skipAccessControl?: boolean\n skipMutationHooks?: boolean\n slug: string\n sourceData?: ValidationSourceData\n validationOperation?: 'update' | 'validate'\n}\n\nexport async function validateOperation<TSlug extends GlobalSlug>(\n args: Arguments<TSlug>,\n): Promise<ValidationResult> {\n const previousOperation = args.req.operation\n args.req.operation = args.validationOperation ?? 'validate'\n\n try {\n return await validateOperationWithScopedRequest(args)\n } finally {\n args.req.operation = previousOperation\n }\n}\n\nasync function validateOperationWithScopedRequest<TSlug extends GlobalSlug>({\n slug,\n data: incomingData,\n draft,\n globalConfig,\n onValidationData,\n overrideAccess,\n req,\n skipAccessControl = false,\n skipMutationHooks = false,\n sourceData,\n validationOperation = 'validate',\n}: Arguments<TSlug>): Promise<ValidationResult> {\n const accessResult =\n !skipAccessControl && !overrideAccess\n ? await executeAccess({ slug, data: incomingData, req }, globalConfig.access.validate)\n : true\n const storedGlobal = sourceData\n ? sourceData.docWithLocales\n : await resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n })\n\n const docWithLocales: JsonObject = deepCopyObjectSimple(storedGlobal)\n\n if (docWithLocales._id) {\n delete docWithLocales._id\n }\n\n const originalDoc = sourceData\n ? req.locale === sourceData.originalLocale\n ? deepCopyObjectSimple(sourceData.originalDoc)\n : flattenDataByLocale({\n configBlockReferences: req.payload.config.blocks,\n docWithLocales,\n fields: globalConfig.fields,\n locale: req.locale!,\n })\n : await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(docWithLocales),\n draft,\n fallbackLocale: req.fallbackLocale!,\n global: globalConfig,\n locale: req.locale!,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n return runValidationLifecycle({\n collection: null,\n docWithLocales,\n global: globalConfig,\n incomingData: incomingData as JsonObject | undefined,\n onValidationData,\n originalDoc,\n overrideAccess,\n req,\n skipMutationHooks,\n validationOperation,\n })\n}\n\n/**\n * Selects the newest stored source before it applies a `where` access policy. This prevents an\n * older accessible draft from replacing a newer restricted draft. If no draft exists, the main\n * global remains the validation source.\n */\nasync function resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n}: {\n accessResult: AccessResult\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess: boolean\n req: PayloadRequest\n slug: string\n}): Promise<JsonObject> {\n const main = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n })\n const hasMain = hasGlobalSource(main)\n const base = (hasMain ? main : { globalType: slug }) as JsonObject & TypeWithID\n\n if (draft && globalConfig.versions?.drafts) {\n const newestDraft = await findDraftVersion({\n accessResult: true,\n doc: base,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess: true,\n req,\n })\n\n if (newestDraft) {\n if (hasWhereAccessResult(accessResult)) {\n const accessibleDraft = await findDraftVersion({\n accessResult,\n doc: base,\n draftVersionID: newestDraft.id,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess,\n req,\n })\n\n if (!accessibleDraft) {\n throw new Forbidden(req.t)\n }\n }\n\n return getDocumentFromDraftVersion({\n doc: base,\n draftVersion: newestDraft,\n entityType: 'global',\n })\n }\n }\n\n if (!hasMain) {\n return {}\n }\n\n if (!hasWhereAccessResult(accessResult)) {\n return main\n }\n\n const accessibleMain = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n where: accessResult,\n })\n\n if (!hasGlobalSource(accessibleMain)) {\n throw new Forbidden(req.t)\n }\n\n return accessibleMain\n}\n\nfunction hasGlobalSource(source: JsonObject | null | undefined): source is JsonObject {\n return Boolean(source && Object.keys(source).length > 0)\n}\n"],"names":["executeAccess","hasWhereAccessResult","Forbidden","afterRead","deepCopyObjectSimple","flattenDataByLocale","runValidationLifecycle","findDraftVersion","getDocumentFromDraftVersion","validateOperation","args","previousOperation","req","operation","validationOperation","validateOperationWithScopedRequest","slug","data","incomingData","draft","globalConfig","onValidationData","overrideAccess","skipAccessControl","skipMutationHooks","sourceData","accessResult","access","validate","storedGlobal","docWithLocales","resolveValidationGlobalSource","_id","originalDoc","locale","originalLocale","configBlockReferences","payload","config","blocks","fields","collection","context","depth","doc","fallbackLocale","global","showHiddenFields","main","db","findGlobal","hasMain","hasGlobalSource","base","globalType","versions","drafts","newestDraft","entity","entityType","accessibleDraft","draftVersionID","id","t","draftVersion","accessibleMain","where","source","Boolean","Object","keys","length"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/globals/operations/validate.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ValidationResult } from '../../types/validation.js'\nimport type { ValidationSourceData } from '../../utilities/runValidationLifecycle.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport { flattenDataByLocale } from '../../utilities/flattenDataByLocale.js'\nimport { runValidationLifecycle } from '../../utilities/runValidationLifecycle.js'\nimport {\n findDraftVersion,\n getDocumentFromDraftVersion,\n} from '../../versions/drafts/replaceWithDraftIfAvailable.js'\n\nexport type Arguments<TSlug extends GlobalSlug> = {\n data?: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n onValidationData?: (data: JsonObject) => void\n overrideAccess: boolean\n req: PayloadRequest\n skipAccessControl?: boolean\n skipMutationHooks?: boolean\n slug: string\n sourceData?: ValidationSourceData\n validationOperation?: 'update' | 'validate'\n}\n\nexport async function validateOperation<TSlug extends GlobalSlug>(\n args: Arguments<TSlug>,\n): Promise<ValidationResult> {\n const previousOperation = args.req.operation\n args.req.operation = args.validationOperation ?? 'validate'\n\n try {\n return await validateOperationWithScopedRequest(args)\n } finally {\n args.req.operation = previousOperation\n }\n}\n\nasync function validateOperationWithScopedRequest<TSlug extends GlobalSlug>({\n slug,\n data: incomingData,\n draft,\n globalConfig,\n onValidationData,\n overrideAccess,\n req,\n skipAccessControl = false,\n skipMutationHooks = false,\n sourceData,\n validationOperation = 'validate',\n}: Arguments<TSlug>): Promise<ValidationResult> {\n const accessResult =\n !skipAccessControl && !overrideAccess\n ? await executeAccess({ slug, data: incomingData, req }, globalConfig.access.validate)\n : true\n const storedGlobal = sourceData\n ? sourceData.docWithLocales\n : await resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n })\n\n const docWithLocales: JsonObject = deepCopyObjectSimple(storedGlobal)\n\n if (docWithLocales._id) {\n delete docWithLocales._id\n }\n\n const originalDoc = sourceData\n ? req.locale === sourceData.originalLocale\n ? deepCopyObjectSimple(sourceData.originalDoc)\n : flattenDataByLocale({\n configBlockReferences: req.payload.config.blocks,\n docWithLocales,\n fields: globalConfig.fields,\n locale: req.locale!,\n })\n : await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(docWithLocales),\n draft,\n fallbackLocale: req.fallbackLocale!,\n global: globalConfig,\n locale: req.locale!,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n return runValidationLifecycle({\n collection: null,\n docWithLocales,\n global: globalConfig,\n incomingData,\n onValidationData,\n originalDoc,\n overrideAccess,\n req,\n skipMutationHooks,\n validationOperation,\n })\n}\n\n/**\n * Selects the newest stored source before it applies a `where` access policy. This prevents an\n * older accessible draft from replacing a newer restricted draft. If no draft exists, the main\n * global remains the validation source.\n */\nasync function resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n}: {\n accessResult: AccessResult\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess: boolean\n req: PayloadRequest\n slug: string\n}): Promise<JsonObject> {\n const main = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n })\n const hasMain = hasGlobalSource(main)\n const base = (hasMain ? main : { globalType: slug }) as JsonObject & TypeWithID\n\n if (draft && globalConfig.versions?.drafts) {\n const newestDraft = await findDraftVersion({\n accessResult: true,\n doc: base,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess: true,\n req,\n })\n\n if (newestDraft) {\n if (hasWhereAccessResult(accessResult)) {\n const accessibleDraft = await findDraftVersion({\n accessResult,\n doc: base,\n draftVersionID: newestDraft.id,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess,\n req,\n })\n\n if (!accessibleDraft) {\n throw new Forbidden(req.t)\n }\n }\n\n return getDocumentFromDraftVersion({\n doc: base,\n draftVersion: newestDraft,\n entityType: 'global',\n })\n }\n }\n\n if (!hasMain) {\n return {}\n }\n\n if (!hasWhereAccessResult(accessResult)) {\n return main\n }\n\n const accessibleMain = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n where: accessResult,\n })\n\n if (!hasGlobalSource(accessibleMain)) {\n throw new Forbidden(req.t)\n }\n\n return accessibleMain\n}\n\nfunction hasGlobalSource(source: JsonObject | null | undefined): source is JsonObject {\n return Boolean(source && Object.keys(source).length > 0)\n}\n"],"names":["executeAccess","hasWhereAccessResult","Forbidden","afterRead","deepCopyObjectSimple","flattenDataByLocale","runValidationLifecycle","findDraftVersion","getDocumentFromDraftVersion","validateOperation","args","previousOperation","req","operation","validationOperation","validateOperationWithScopedRequest","slug","data","incomingData","draft","globalConfig","onValidationData","overrideAccess","skipAccessControl","skipMutationHooks","sourceData","accessResult","access","validate","storedGlobal","docWithLocales","resolveValidationGlobalSource","_id","originalDoc","locale","originalLocale","configBlockReferences","payload","config","blocks","fields","collection","context","depth","doc","fallbackLocale","global","showHiddenFields","main","db","findGlobal","hasMain","hasGlobalSource","base","globalType","versions","drafts","newestDraft","entity","entityType","accessibleDraft","draftVersionID","id","t","draftVersion","accessibleMain","where","source","Boolean","Object","keys","length"],"mappings":"AAUA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,oBAAoB,QAAQ,sBAAqB;AAC1D,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,oBAAoB,QAAQ,oCAAmC;AACxE,SAASC,mBAAmB,QAAQ,yCAAwC;AAC5E,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SACEC,gBAAgB,EAChBC,2BAA2B,QACtB,uDAAsD;AAgB7D,OAAO,eAAeC,kBACpBC,IAAsB;IAEtB,MAAMC,oBAAoBD,KAAKE,GAAG,CAACC,SAAS;IAC5CH,KAAKE,GAAG,CAACC,SAAS,GAAGH,KAAKI,mBAAmB,IAAI;IAEjD,IAAI;QACF,OAAO,MAAMC,mCAAmCL;IAClD,SAAU;QACRA,KAAKE,GAAG,CAACC,SAAS,GAAGF;IACvB;AACF;AAEA,eAAeI,mCAA6D,EAC1EC,IAAI,EACJC,MAAMC,YAAY,EAClBC,KAAK,EACLC,YAAY,EACZC,gBAAgB,EAChBC,cAAc,EACdV,GAAG,EACHW,oBAAoB,KAAK,EACzBC,oBAAoB,KAAK,EACzBC,UAAU,EACVX,sBAAsB,UAAU,EACf;IACjB,MAAMY,eACJ,CAACH,qBAAqB,CAACD,iBACnB,MAAMtB,cAAc;QAAEgB;QAAMC,MAAMC;QAAcN;IAAI,GAAGQ,aAAaO,MAAM,CAACC,QAAQ,IACnF;IACN,MAAMC,eAAeJ,aACjBA,WAAWK,cAAc,GACzB,MAAMC,8BAA8B;QAClCf;QACAU;QACAP;QACAC;QACAE;QACAV;IACF;IAEJ,MAAMkB,iBAA6B1B,qBAAqByB;IAExD,IAAIC,eAAeE,GAAG,EAAE;QACtB,OAAOF,eAAeE,GAAG;IAC3B;IAEA,MAAMC,cAAcR,aAChBb,IAAIsB,MAAM,KAAKT,WAAWU,cAAc,GACtC/B,qBAAqBqB,WAAWQ,WAAW,IAC3C5B,oBAAoB;QAClB+B,uBAAuBxB,IAAIyB,OAAO,CAACC,MAAM,CAACC,MAAM;QAChDT;QACAU,QAAQpB,aAAaoB,MAAM;QAC3BN,QAAQtB,IAAIsB,MAAM;IACpB,KACF,MAAM/B,UAAU;QACdsC,YAAY;QACZC,SAAS9B,IAAI8B,OAAO;QACpBC,OAAO;QACPC,KAAKxC,qBAAqB0B;QAC1BX;QACA0B,gBAAgBjC,IAAIiC,cAAc;QAClCC,QAAQ1B;QACRc,QAAQtB,IAAIsB,MAAM;QAClBZ,gBAAgB;QAChBV;QACAmC,kBAAkB;IACpB;IAEJ,OAAOzC,uBAAuB;QAC5BmC,YAAY;QACZX;QACAgB,QAAQ1B;QACRF;QACAG;QACAY;QACAX;QACAV;QACAY;QACAV;IACF;AACF;AAEA;;;;CAIC,GACD,eAAeiB,8BAA8B,EAC3Cf,IAAI,EACJU,YAAY,EACZP,KAAK,EACLC,YAAY,EACZE,cAAc,EACdV,GAAG,EAQJ;IACC,MAAMoC,OAAO,MAAMpC,IAAIyB,OAAO,CAACY,EAAE,CAACC,UAAU,CAAC;QAC3ClC;QACAkB,QAAQtB,IAAIsB,MAAM;QAClBtB;IACF;IACA,MAAMuC,UAAUC,gBAAgBJ;IAChC,MAAMK,OAAQF,UAAUH,OAAO;QAAEM,YAAYtC;IAAK;IAElD,IAAIG,SAASC,aAAamC,QAAQ,EAAEC,QAAQ;QAC1C,MAAMC,cAAc,MAAMlD,iBAAiB;YACzCmB,cAAc;YACdkB,KAAKS;YACLK,QAAQtC;YACRuC,YAAY;YACZrC,gBAAgB;YAChBV;QACF;QAEA,IAAI6C,aAAa;YACf,IAAIxD,qBAAqByB,eAAe;gBACtC,MAAMkC,kBAAkB,MAAMrD,iBAAiB;oBAC7CmB;oBACAkB,KAAKS;oBACLQ,gBAAgBJ,YAAYK,EAAE;oBAC9BJ,QAAQtC;oBACRuC,YAAY;oBACZrC;oBACAV;gBACF;gBAEA,IAAI,CAACgD,iBAAiB;oBACpB,MAAM,IAAI1D,UAAUU,IAAImD,CAAC;gBAC3B;YACF;YAEA,OAAOvD,4BAA4B;gBACjCoC,KAAKS;gBACLW,cAAcP;gBACdE,YAAY;YACd;QACF;IACF;IAEA,IAAI,CAACR,SAAS;QACZ,OAAO,CAAC;IACV;IAEA,IAAI,CAAClD,qBAAqByB,eAAe;QACvC,OAAOsB;IACT;IAEA,MAAMiB,iBAAiB,MAAMrD,IAAIyB,OAAO,CAACY,EAAE,CAACC,UAAU,CAAC;QACrDlC;QACAkB,QAAQtB,IAAIsB,MAAM;QAClBtB;QACAsD,OAAOxC;IACT;IAEA,IAAI,CAAC0B,gBAAgBa,iBAAiB;QACpC,MAAM,IAAI/D,UAAUU,IAAImD,CAAC;IAC3B;IAEA,OAAOE;AACT;AAEA,SAASb,gBAAgBe,MAAqC;IAC5D,OAAOC,QAAQD,UAAUE,OAAOC,IAAI,CAACH,QAAQI,MAAM,GAAG;AACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"addHierarchyToCollection.d.ts","sourceRoot":"","sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAQtE,eAAO,MAAM,wBAAwB,iGAMlC;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,SAkEA,CAAA"}
1
+ {"version":3,"file":"addHierarchyToCollection.d.ts","sourceRoot":"","sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAUtE,eAAO,MAAM,wBAAwB,iGAMlC;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,SA6EA,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { fieldAffectsData } from '../fields/config/types.js';
1
2
  import { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js';
2
3
  import { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js';
3
4
  import { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js';
@@ -8,28 +9,38 @@ export const addHierarchyToCollection = ({ collectionConfig, parentFieldName, sl
8
9
  // Verify slug field exists if configured
9
10
  const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined;
10
11
  const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined;
11
- // Add virtual path fields (computed in afterRead)
12
- collectionConfig.fields.push({
13
- name: slugPathFieldName,
14
- type: 'text',
15
- admin: {
16
- hidden: true,
17
- readOnly: true
12
+ // Add virtual path fields (computed in afterRead). This can run again on the same
13
+ // `fields` array, so skip fields that already exist
14
+ const pathFields = [
15
+ {
16
+ name: slugPathFieldName,
17
+ type: 'text',
18
+ admin: {
19
+ hidden: true,
20
+ readOnly: true
21
+ },
22
+ index: true,
23
+ label: 'Slug Path',
24
+ virtual: true
18
25
  },
19
- index: true,
20
- label: 'Slug Path',
21
- virtual: true
22
- }, {
23
- name: titlePathFieldName,
24
- type: 'text',
25
- admin: {
26
- hidden: true,
27
- readOnly: true
28
- },
29
- index: true,
30
- label: 'Title Path',
31
- virtual: true
32
- });
26
+ {
27
+ name: titlePathFieldName,
28
+ type: 'text',
29
+ admin: {
30
+ hidden: true,
31
+ readOnly: true
32
+ },
33
+ index: true,
34
+ label: 'Title Path',
35
+ virtual: true
36
+ }
37
+ ];
38
+ for (const pathField of pathFields){
39
+ const hasPathField = collectionConfig.fields.some((field)=>fieldAffectsData(field) && field.name === pathField.name);
40
+ if (!hasPathField) {
41
+ collectionConfig.fields.push(pathField);
42
+ }
43
+ }
33
44
  if (!collectionConfig.admin) {
34
45
  collectionConfig.admin = {};
35
46
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\n\nimport { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js'\nimport { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js'\nimport { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js'\nimport { hierarchyCollectionBeforeOperation } from './hooks/collectionBeforeOperation.js'\nimport { findFieldByName, findUseAsTitleField } from './utils/findUseAsTitle.js'\n\nexport const addHierarchyToCollection = ({\n collectionConfig,\n parentFieldName,\n slugFieldName,\n slugPathFieldName,\n titlePathFieldName,\n}: {\n collectionConfig: CollectionConfig\n parentFieldName: string\n slugFieldName?: string\n slugPathFieldName: string\n titlePathFieldName: string\n}) => {\n const { titleFieldName } = findUseAsTitleField(collectionConfig)\n // Verify slug field exists if configured\n const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined\n const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined\n\n // Add virtual path fields (computed in afterRead)\n collectionConfig.fields.push(\n {\n name: slugPathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Slug Path',\n virtual: true,\n },\n {\n name: titlePathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Title Path',\n virtual: true,\n },\n )\n\n if (!collectionConfig.admin) {\n collectionConfig.admin = {}\n }\n if (!collectionConfig.admin.listSearchableFields) {\n collectionConfig.admin.listSearchableFields = [titleFieldName]\n } else if (!collectionConfig.admin.listSearchableFields.includes(titleFieldName)) {\n collectionConfig.admin.listSearchableFields.push(titleFieldName)\n }\n\n collectionConfig.hooks = {\n ...(collectionConfig.hooks || {}),\n afterRead: [\n ...(collectionConfig.hooks?.afterRead || []),\n hierarchyCollectionAfterRead({ parentFieldName, slugPathFieldName, titlePathFieldName }),\n ],\n beforeChange: [\n ...(collectionConfig.hooks?.beforeChange || []),\n hierarchyCollectionBeforeChange({ parentFieldName }),\n ],\n beforeDelete: [\n ...(collectionConfig.hooks?.beforeDelete || []),\n hierarchyCollectionBeforeDelete({ parentFieldName }),\n ],\n beforeOperation: [\n ...(collectionConfig.hooks?.beforeOperation || []),\n hierarchyCollectionBeforeOperation({\n parentFieldName,\n slugFieldName: validatedSlugFieldName,\n slugPathFieldName,\n titleFieldName,\n titlePathFieldName,\n }),\n ],\n }\n}\n"],"names":["hierarchyCollectionAfterRead","hierarchyCollectionBeforeChange","hierarchyCollectionBeforeDelete","hierarchyCollectionBeforeOperation","findFieldByName","findUseAsTitleField","addHierarchyToCollection","collectionConfig","parentFieldName","slugFieldName","slugPathFieldName","titlePathFieldName","titleFieldName","slugFieldInfo","undefined","validatedSlugFieldName","fields","push","name","type","admin","hidden","readOnly","index","label","virtual","listSearchableFields","includes","hooks","afterRead","beforeChange","beforeDelete","beforeOperation"],"mappings":"AAEA,SAASA,4BAA4B,QAAQ,iCAAgC;AAC7E,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,kCAAkC,QAAQ,uCAAsC;AACzF,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,4BAA2B;AAEhF,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,gBAAgB,EAChBC,eAAe,EACfC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAOnB;IACC,MAAM,EAAEC,cAAc,EAAE,GAAGP,oBAAoBE;IAC/C,yCAAyC;IACzC,MAAMM,gBAAgBJ,gBAAgBL,gBAAgBG,kBAAkBE,iBAAiBK;IACzF,MAAMC,yBAAyBF,gBAAgBJ,gBAAgBK;IAE/D,kDAAkD;IAClDP,iBAAiBS,MAAM,CAACC,IAAI,CAC1B;QACEC,MAAMR;QACNS,MAAM;QACNC,OAAO;YACLC,QAAQ;YACRC,UAAU;QACZ;QACAC,OAAO;QACPC,OAAO;QACPC,SAAS;IACX,GACA;QACEP,MAAMP;QACNQ,MAAM;QACNC,OAAO;YACLC,QAAQ;YACRC,UAAU;QACZ;QACAC,OAAO;QACPC,OAAO;QACPC,SAAS;IACX;IAGF,IAAI,CAAClB,iBAAiBa,KAAK,EAAE;QAC3Bb,iBAAiBa,KAAK,GAAG,CAAC;IAC5B;IACA,IAAI,CAACb,iBAAiBa,KAAK,CAACM,oBAAoB,EAAE;QAChDnB,iBAAiBa,KAAK,CAACM,oBAAoB,GAAG;YAACd;SAAe;IAChE,OAAO,IAAI,CAACL,iBAAiBa,KAAK,CAACM,oBAAoB,CAACC,QAAQ,CAACf,iBAAiB;QAChFL,iBAAiBa,KAAK,CAACM,oBAAoB,CAACT,IAAI,CAACL;IACnD;IAEAL,iBAAiBqB,KAAK,GAAG;QACvB,GAAIrB,iBAAiBqB,KAAK,IAAI,CAAC,CAAC;QAChCC,WAAW;eACLtB,iBAAiBqB,KAAK,EAAEC,aAAa,EAAE;YAC3C7B,6BAA6B;gBAAEQ;gBAAiBE;gBAAmBC;YAAmB;SACvF;QACDmB,cAAc;eACRvB,iBAAiBqB,KAAK,EAAEE,gBAAgB,EAAE;YAC9C7B,gCAAgC;gBAAEO;YAAgB;SACnD;QACDuB,cAAc;eACRxB,iBAAiBqB,KAAK,EAAEG,gBAAgB,EAAE;YAC9C7B,gCAAgC;gBAAEM;YAAgB;SACnD;QACDwB,iBAAiB;eACXzB,iBAAiBqB,KAAK,EAAEI,mBAAmB,EAAE;YACjD7B,mCAAmC;gBACjCK;gBACAC,eAAeM;gBACfL;gBACAE;gBACAD;YACF;SACD;IACH;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\nimport type { TextField } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js'\nimport { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js'\nimport { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js'\nimport { hierarchyCollectionBeforeOperation } from './hooks/collectionBeforeOperation.js'\nimport { findFieldByName, findUseAsTitleField } from './utils/findUseAsTitle.js'\n\nexport const addHierarchyToCollection = ({\n collectionConfig,\n parentFieldName,\n slugFieldName,\n slugPathFieldName,\n titlePathFieldName,\n}: {\n collectionConfig: CollectionConfig\n parentFieldName: string\n slugFieldName?: string\n slugPathFieldName: string\n titlePathFieldName: string\n}) => {\n const { titleFieldName } = findUseAsTitleField(collectionConfig)\n // Verify slug field exists if configured\n const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined\n const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined\n\n // Add virtual path fields (computed in afterRead). This can run again on the same\n // `fields` array, so skip fields that already exist\n const pathFields: TextField[] = [\n {\n name: slugPathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Slug Path',\n virtual: true,\n },\n {\n name: titlePathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Title Path',\n virtual: true,\n },\n ]\n\n for (const pathField of pathFields) {\n const hasPathField = collectionConfig.fields.some(\n (field) => fieldAffectsData(field) && field.name === pathField.name,\n )\n\n if (!hasPathField) {\n collectionConfig.fields.push(pathField)\n }\n }\n\n if (!collectionConfig.admin) {\n collectionConfig.admin = {}\n }\n if (!collectionConfig.admin.listSearchableFields) {\n collectionConfig.admin.listSearchableFields = [titleFieldName]\n } else if (!collectionConfig.admin.listSearchableFields.includes(titleFieldName)) {\n collectionConfig.admin.listSearchableFields.push(titleFieldName)\n }\n\n collectionConfig.hooks = {\n ...(collectionConfig.hooks || {}),\n afterRead: [\n ...(collectionConfig.hooks?.afterRead || []),\n hierarchyCollectionAfterRead({ parentFieldName, slugPathFieldName, titlePathFieldName }),\n ],\n beforeChange: [\n ...(collectionConfig.hooks?.beforeChange || []),\n hierarchyCollectionBeforeChange({ parentFieldName }),\n ],\n beforeDelete: [\n ...(collectionConfig.hooks?.beforeDelete || []),\n hierarchyCollectionBeforeDelete({ parentFieldName }),\n ],\n beforeOperation: [\n ...(collectionConfig.hooks?.beforeOperation || []),\n hierarchyCollectionBeforeOperation({\n parentFieldName,\n slugFieldName: validatedSlugFieldName,\n slugPathFieldName,\n titleFieldName,\n titlePathFieldName,\n }),\n ],\n }\n}\n"],"names":["fieldAffectsData","hierarchyCollectionAfterRead","hierarchyCollectionBeforeChange","hierarchyCollectionBeforeDelete","hierarchyCollectionBeforeOperation","findFieldByName","findUseAsTitleField","addHierarchyToCollection","collectionConfig","parentFieldName","slugFieldName","slugPathFieldName","titlePathFieldName","titleFieldName","slugFieldInfo","undefined","validatedSlugFieldName","pathFields","name","type","admin","hidden","readOnly","index","label","virtual","pathField","hasPathField","fields","some","field","push","listSearchableFields","includes","hooks","afterRead","beforeChange","beforeDelete","beforeOperation"],"mappings":"AAGA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,SAASC,4BAA4B,QAAQ,iCAAgC;AAC7E,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,kCAAkC,QAAQ,uCAAsC;AACzF,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,4BAA2B;AAEhF,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,gBAAgB,EAChBC,eAAe,EACfC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAOnB;IACC,MAAM,EAAEC,cAAc,EAAE,GAAGP,oBAAoBE;IAC/C,yCAAyC;IACzC,MAAMM,gBAAgBJ,gBAAgBL,gBAAgBG,kBAAkBE,iBAAiBK;IACzF,MAAMC,yBAAyBF,gBAAgBJ,gBAAgBK;IAE/D,kFAAkF;IAClF,oDAAoD;IACpD,MAAME,aAA0B;QAC9B;YACEC,MAAMP;YACNQ,MAAM;YACNC,OAAO;gBACLC,QAAQ;gBACRC,UAAU;YACZ;YACAC,OAAO;YACPC,OAAO;YACPC,SAAS;QACX;QACA;YACEP,MAAMN;YACNO,MAAM;YACNC,OAAO;gBACLC,QAAQ;gBACRC,UAAU;YACZ;YACAC,OAAO;YACPC,OAAO;YACPC,SAAS;QACX;KACD;IAED,KAAK,MAAMC,aAAaT,WAAY;QAClC,MAAMU,eAAenB,iBAAiBoB,MAAM,CAACC,IAAI,CAC/C,CAACC,QAAU9B,iBAAiB8B,UAAUA,MAAMZ,IAAI,KAAKQ,UAAUR,IAAI;QAGrE,IAAI,CAACS,cAAc;YACjBnB,iBAAiBoB,MAAM,CAACG,IAAI,CAACL;QAC/B;IACF;IAEA,IAAI,CAAClB,iBAAiBY,KAAK,EAAE;QAC3BZ,iBAAiBY,KAAK,GAAG,CAAC;IAC5B;IACA,IAAI,CAACZ,iBAAiBY,KAAK,CAACY,oBAAoB,EAAE;QAChDxB,iBAAiBY,KAAK,CAACY,oBAAoB,GAAG;YAACnB;SAAe;IAChE,OAAO,IAAI,CAACL,iBAAiBY,KAAK,CAACY,oBAAoB,CAACC,QAAQ,CAACpB,iBAAiB;QAChFL,iBAAiBY,KAAK,CAACY,oBAAoB,CAACD,IAAI,CAAClB;IACnD;IAEAL,iBAAiB0B,KAAK,GAAG;QACvB,GAAI1B,iBAAiB0B,KAAK,IAAI,CAAC,CAAC;QAChCC,WAAW;eACL3B,iBAAiB0B,KAAK,EAAEC,aAAa,EAAE;YAC3ClC,6BAA6B;gBAAEQ;gBAAiBE;gBAAmBC;YAAmB;SACvF;QACDwB,cAAc;eACR5B,iBAAiB0B,KAAK,EAAEE,gBAAgB,EAAE;YAC9ClC,gCAAgC;gBAAEO;YAAgB;SACnD;QACD4B,cAAc;eACR7B,iBAAiB0B,KAAK,EAAEG,gBAAgB,EAAE;YAC9ClC,gCAAgC;gBAAEM;YAAgB;SACnD;QACD6B,iBAAiB;eACX9B,iBAAiB0B,KAAK,EAAEI,mBAAmB,EAAE;YACjDlC,mCAAmC;gBACjCK;gBACAC,eAAeM;gBACfL;gBACAE;gBACAD;YACF;SACD;IACH;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hierarchy/createFolderField.ts"],"sourcesContent":["import type { RelationshipField, SingleRelationshipField } from '../fields/config/types.js'\n\nimport { getHierarchyFieldName } from './constants.js'\n\n/**\n * Options for creating a folder relationship field.\n * All SingleRelationshipField properties are available except name, type, relationTo, and hasMany\n * which are managed by the folder system.\n */\nexport type CreateFolderFieldOptions = {\n /**\n * The slug of the hierarchy collection this field references (e.g., 'folders')\n */\n relationTo: string\n} & Pick<Partial<SingleRelationshipField>, 'admin' | 'label' | 'required'>\n\n/**\n * Creates a relationship field for folder-style hierarchies (single-select).\n *\n * This field:\n * - Has hasMany:false (single folder selection)\n * - Uses NullField to render nothing in the form (no DOM output)\n * - Injects a header button for folder selection via miller columns UI\n *\n * Use this in your collection's fields array to add a folder relationship.\n * The field name is automatically generated based on the hierarchy slug.\n *\n * @example\n * import { createFolderField } from 'payload'\n *\n * const Posts: CollectionConfig = {\n * slug: 'posts',\n * fields: [\n * { name: 'title', type: 'text' },\n * createFolderField({\n * relationTo: 'folders',\n * label: 'Folder',\n * }),\n * ],\n * }\n */\nexport function createFolderField(options: CreateFolderFieldOptions): RelationshipField {\n const { admin: adminOverrides, label, relationTo, ...restOptions } = options\n const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {}\n\n return {\n name: getHierarchyFieldName(relationTo),\n type: 'relationship',\n admin: {\n position: 'sidebar',\n ...restAdminOverrides,\n components: {\n // NullField renders nothing - the header button handles the UI\n Field: '@payloadcms/ui#NullField',\n ...componentOverrides,\n },\n },\n custom: {\n hierarchy: {\n injectHeaderButton: true,\n },\n },\n hasMany: false,\n index: true,\n label: label ?? 'Folder',\n relationTo,\n ...restOptions,\n } as RelationshipField\n}\n"],"names":["getHierarchyFieldName","createFolderField","options","admin","adminOverrides","label","relationTo","restOptions","components","componentOverrides","restAdminOverrides","name","type","position","Field","custom","hierarchy","injectHeaderButton","hasMany","index"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iBAAgB;AActD;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASC,kBAAkBC,OAAiC;IACjE,MAAM,EAAEC,OAAOC,cAAc,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGC,aAAa,GAAGL;IACrE,MAAM,EAAEM,YAAYC,kBAAkB,EAAE,GAAGC,oBAAoB,GAAGN,kBAAkB,CAAC;IAErF,OAAO;QACLO,MAAMX,sBAAsBM;QAC5BM,MAAM;QACNT,OAAO;YACLU,UAAU;YACV,GAAGH,kBAAkB;YACrBF,YAAY;gBACV,+DAA+D;gBAC/DM,OAAO;gBACP,GAAGL,kBAAkB;YACvB;QACF;QACAM,QAAQ;YACNC,WAAW;gBACTC,oBAAoB;YACtB;QACF;QACAC,SAAS;QACTC,OAAO;QACPd,OAAOA,SAAS;QAChBC;QACA,GAAGC,WAAW;IAChB;AACF"}
1
+ {"version":3,"sources":["../../src/hierarchy/createFolderField.ts"],"sourcesContent":["import type { RelationshipField, SingleRelationshipField } from '../fields/config/types.js'\n\nimport { getHierarchyFieldName } from './constants.js'\n\n/**\n * Options for creating a folder relationship field.\n * All SingleRelationshipField properties are available except name, type, relationTo, and hasMany\n * which are managed by the folder system.\n */\nexport type CreateFolderFieldOptions = {\n /**\n * The slug of the hierarchy collection this field references (e.g., 'folders')\n */\n relationTo: string\n} & Pick<Partial<SingleRelationshipField>, 'admin' | 'label' | 'required'>\n\n/**\n * Creates a relationship field for folder-style hierarchies (single-select).\n *\n * This field:\n * - Has hasMany:false (single folder selection)\n * - Uses NullField to render nothing in the form (no DOM output)\n * - Injects a header button for folder selection via miller columns UI\n *\n * Use this in your collection's fields array to add a folder relationship.\n * The field name is automatically generated based on the hierarchy slug.\n *\n * @example\n * import { createFolderField } from 'payload'\n *\n * const Posts: CollectionConfig = {\n * slug: 'posts',\n * fields: [\n * { name: 'title', type: 'text' },\n * createFolderField({\n * relationTo: 'folders',\n * label: 'Folder',\n * }),\n * ],\n * }\n */\nexport function createFolderField(options: CreateFolderFieldOptions): RelationshipField {\n const { admin: adminOverrides, label, relationTo, ...restOptions } = options\n const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {}\n\n return {\n name: getHierarchyFieldName(relationTo),\n type: 'relationship',\n admin: {\n position: 'sidebar',\n ...restAdminOverrides,\n components: {\n // NullField renders nothing - the header button handles the UI\n Field: '@payloadcms/ui#NullField',\n ...componentOverrides,\n },\n },\n custom: {\n hierarchy: {\n injectHeaderButton: true,\n },\n },\n hasMany: false,\n index: true,\n label: label ?? 'Folder',\n relationTo,\n ...restOptions,\n }\n}\n"],"names":["getHierarchyFieldName","createFolderField","options","admin","adminOverrides","label","relationTo","restOptions","components","componentOverrides","restAdminOverrides","name","type","position","Field","custom","hierarchy","injectHeaderButton","hasMany","index"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iBAAgB;AActD;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASC,kBAAkBC,OAAiC;IACjE,MAAM,EAAEC,OAAOC,cAAc,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGC,aAAa,GAAGL;IACrE,MAAM,EAAEM,YAAYC,kBAAkB,EAAE,GAAGC,oBAAoB,GAAGN,kBAAkB,CAAC;IAErF,OAAO;QACLO,MAAMX,sBAAsBM;QAC5BM,MAAM;QACNT,OAAO;YACLU,UAAU;YACV,GAAGH,kBAAkB;YACrBF,YAAY;gBACV,+DAA+D;gBAC/DM,OAAO;gBACP,GAAGL,kBAAkB;YACvB;QACF;QACAM,QAAQ;YACNC,WAAW;gBACTC,oBAAoB;YACtB;QACF;QACAC,SAAS;QACTC,OAAO;QACPd,OAAOA,SAAS;QAChBC;QACA,GAAGC,WAAW;IAChB;AACF"}