payload 3.84.1 → 4.0.0-internal.d28e9fb

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 (400) hide show
  1. package/README.md +5 -5
  2. package/dist/admin/elements/Nav.d.ts +13 -0
  3. package/dist/admin/elements/Nav.d.ts.map +1 -1
  4. package/dist/admin/elements/Nav.js.map +1 -1
  5. package/dist/admin/functions/index.d.ts +1 -38
  6. package/dist/admin/functions/index.d.ts.map +1 -1
  7. package/dist/admin/functions/index.js.map +1 -1
  8. package/dist/admin/types.d.ts +5 -4
  9. package/dist/admin/types.d.ts.map +1 -1
  10. package/dist/admin/types.js.map +1 -1
  11. package/dist/admin/views/hierarchyList.d.ts +9 -0
  12. package/dist/admin/views/hierarchyList.d.ts.map +1 -0
  13. package/dist/admin/views/hierarchyList.js +3 -0
  14. package/dist/admin/views/hierarchyList.js.map +1 -0
  15. package/dist/admin/views/index.d.ts +1 -3
  16. package/dist/admin/views/index.d.ts.map +1 -1
  17. package/dist/admin/views/index.js.map +1 -1
  18. package/dist/admin/views/list.d.ts +43 -2
  19. package/dist/admin/views/list.d.ts.map +1 -1
  20. package/dist/admin/views/list.js.map +1 -1
  21. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  22. package/dist/bin/generateImportMap/iterateCollections.js +1 -0
  23. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  24. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  25. package/dist/bin/generateImportMap/iterateConfig.js +7 -0
  26. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  27. package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -1
  28. package/dist/bin/generateImportMap/iterateGlobals.js +20 -8
  29. package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -1
  30. package/dist/bin/index.d.ts.map +1 -1
  31. package/dist/bin/index.js +1 -3
  32. package/dist/bin/index.js.map +1 -1
  33. package/dist/collections/config/client.d.ts +4 -2
  34. package/dist/collections/config/client.d.ts.map +1 -1
  35. package/dist/collections/config/client.js +13 -1
  36. package/dist/collections/config/client.js.map +1 -1
  37. package/dist/collections/config/defaults.js +1 -1
  38. package/dist/collections/config/defaults.js.map +1 -1
  39. package/dist/collections/config/sanitize.d.ts.map +1 -1
  40. package/dist/collections/config/sanitize.js +231 -184
  41. package/dist/collections/config/sanitize.js.map +1 -1
  42. package/dist/collections/config/types.d.ts +76 -91
  43. package/dist/collections/config/types.d.ts.map +1 -1
  44. package/dist/collections/config/types.js.map +1 -1
  45. package/dist/collections/operations/create.d.ts.map +1 -1
  46. package/dist/collections/operations/create.js +24 -19
  47. package/dist/collections/operations/create.js.map +1 -1
  48. package/dist/collections/operations/delete.d.ts.map +1 -1
  49. package/dist/collections/operations/delete.js +7 -2
  50. package/dist/collections/operations/delete.js.map +1 -1
  51. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  52. package/dist/collections/operations/deleteByID.js +7 -2
  53. package/dist/collections/operations/deleteByID.js.map +1 -1
  54. package/dist/collections/operations/find.d.ts.map +1 -1
  55. package/dist/collections/operations/find.js +7 -2
  56. package/dist/collections/operations/find.js.map +1 -1
  57. package/dist/collections/operations/findByID.d.ts.map +1 -1
  58. package/dist/collections/operations/findByID.js +10 -5
  59. package/dist/collections/operations/findByID.js.map +1 -1
  60. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  61. package/dist/collections/operations/findVersionByID.js +6 -4
  62. package/dist/collections/operations/findVersionByID.js.map +1 -1
  63. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  64. package/dist/collections/operations/findVersions.js +6 -4
  65. package/dist/collections/operations/findVersions.js.map +1 -1
  66. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  67. package/dist/collections/operations/restoreVersion.js +7 -2
  68. package/dist/collections/operations/restoreVersion.js.map +1 -1
  69. package/dist/collections/operations/update.d.ts.map +1 -1
  70. package/dist/collections/operations/update.js +7 -2
  71. package/dist/collections/operations/update.js.map +1 -1
  72. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  73. package/dist/collections/operations/updateByID.js +7 -2
  74. package/dist/collections/operations/updateByID.js.map +1 -1
  75. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  76. package/dist/collections/operations/utilities/update.js +5 -4
  77. package/dist/collections/operations/utilities/update.js.map +1 -1
  78. package/dist/config/client.d.ts.map +1 -1
  79. package/dist/config/client.js +0 -10
  80. package/dist/config/client.js.map +1 -1
  81. package/dist/config/defaults.d.ts.map +1 -1
  82. package/dist/config/defaults.js +0 -15
  83. package/dist/config/defaults.js.map +1 -1
  84. package/dist/config/orderable/index.d.ts.map +1 -1
  85. package/dist/config/orderable/index.js +0 -4
  86. package/dist/config/orderable/index.js.map +1 -1
  87. package/dist/config/sanitize.d.ts.map +1 -1
  88. package/dist/config/sanitize.js +252 -266
  89. package/dist/config/sanitize.js.map +1 -1
  90. package/dist/config/types.d.ts +120 -13
  91. package/dist/config/types.d.ts.map +1 -1
  92. package/dist/config/types.js.map +1 -1
  93. package/dist/exports/internal.d.ts +1 -0
  94. package/dist/exports/internal.d.ts.map +1 -1
  95. package/dist/exports/internal.js +1 -0
  96. package/dist/exports/internal.js.map +1 -1
  97. package/dist/exports/shared.d.ts +5 -3
  98. package/dist/exports/shared.d.ts.map +1 -1
  99. package/dist/exports/shared.js +3 -2
  100. package/dist/exports/shared.js.map +1 -1
  101. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  102. package/dist/fields/baseFields/slug/index.js +6 -4
  103. package/dist/fields/baseFields/slug/index.js.map +1 -1
  104. package/dist/fields/config/client.d.ts.map +1 -1
  105. package/dist/fields/config/client.js +3 -2
  106. package/dist/fields/config/client.js.map +1 -1
  107. package/dist/fields/config/sanitize.d.ts.map +1 -1
  108. package/dist/fields/config/sanitize.js +335 -322
  109. package/dist/fields/config/sanitize.js.map +1 -1
  110. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  111. package/dist/fields/config/sanitizeJoinField.js +3 -0
  112. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  113. package/dist/fields/config/types.d.ts +17 -73
  114. package/dist/fields/config/types.d.ts.map +1 -1
  115. package/dist/fields/config/types.js +11 -1
  116. package/dist/fields/config/types.js.map +1 -1
  117. package/dist/fields/isFieldDisabled.d.ts +12 -0
  118. package/dist/fields/isFieldDisabled.d.ts.map +1 -0
  119. package/dist/fields/isFieldDisabled.js +15 -0
  120. package/dist/fields/isFieldDisabled.js.map +1 -0
  121. package/dist/fields/isFieldDisabled.spec.js +134 -0
  122. package/dist/fields/isFieldDisabled.spec.js.map +1 -0
  123. package/dist/fields/validations.js +1 -1
  124. package/dist/fields/validations.js.map +1 -1
  125. package/dist/globals/config/client.d.ts +1 -1
  126. package/dist/globals/config/client.d.ts.map +1 -1
  127. package/dist/globals/config/client.js +2 -1
  128. package/dist/globals/config/client.js.map +1 -1
  129. package/dist/globals/config/sanitize.d.ts.map +1 -1
  130. package/dist/globals/config/sanitize.js +132 -122
  131. package/dist/globals/config/sanitize.js.map +1 -1
  132. package/dist/globals/config/types.d.ts +4 -57
  133. package/dist/globals/config/types.d.ts.map +1 -1
  134. package/dist/globals/config/types.js.map +1 -1
  135. package/dist/globals/operations/findOne.d.ts.map +1 -1
  136. package/dist/globals/operations/findOne.js +7 -2
  137. package/dist/globals/operations/findOne.js.map +1 -1
  138. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  139. package/dist/globals/operations/findVersionByID.js +6 -4
  140. package/dist/globals/operations/findVersionByID.js.map +1 -1
  141. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  142. package/dist/globals/operations/findVersions.js +6 -4
  143. package/dist/globals/operations/findVersions.js.map +1 -1
  144. package/dist/globals/operations/update.d.ts.map +1 -1
  145. package/dist/globals/operations/update.js +7 -2
  146. package/dist/globals/operations/update.js.map +1 -1
  147. package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
  148. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
  149. package/dist/hierarchy/addHierarchyToCollection.js +76 -0
  150. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
  151. package/dist/hierarchy/buildParentField.d.ts +11 -0
  152. package/dist/hierarchy/buildParentField.d.ts.map +1 -0
  153. package/dist/hierarchy/buildParentField.js +42 -0
  154. package/dist/hierarchy/buildParentField.js.map +1 -0
  155. package/dist/hierarchy/constants.d.ts +15 -0
  156. package/dist/hierarchy/constants.d.ts.map +1 -0
  157. package/dist/hierarchy/constants.js +11 -0
  158. package/dist/hierarchy/constants.js.map +1 -0
  159. package/dist/hierarchy/createFolderField.d.ts +39 -0
  160. package/dist/hierarchy/createFolderField.d.ts.map +1 -0
  161. package/dist/hierarchy/createFolderField.js +54 -0
  162. package/dist/hierarchy/createFolderField.js.map +1 -0
  163. package/dist/hierarchy/createTagField.d.ts +44 -0
  164. package/dist/hierarchy/createTagField.d.ts.map +1 -0
  165. package/dist/hierarchy/createTagField.js +48 -0
  166. package/dist/hierarchy/createTagField.js.map +1 -0
  167. package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
  168. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
  169. package/dist/hierarchy/getInitialTreeData.js +125 -0
  170. package/dist/hierarchy/getInitialTreeData.js.map +1 -0
  171. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
  172. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
  173. package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
  174. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
  175. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
  176. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
  177. package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
  178. package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
  179. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
  180. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
  181. package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
  182. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
  183. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
  184. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
  185. package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
  186. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
  187. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
  188. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
  189. package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
  190. package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
  191. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
  192. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  193. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
  194. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
  195. package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
  196. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
  197. package/dist/hierarchy/injectHierarchyButton.js +37 -0
  198. package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
  199. package/dist/hierarchy/presets.d.ts +13 -0
  200. package/dist/hierarchy/presets.d.ts.map +1 -0
  201. package/dist/hierarchy/presets.js +52 -0
  202. package/dist/hierarchy/presets.js.map +1 -0
  203. package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
  204. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
  205. package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
  206. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
  207. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
  208. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
  209. package/dist/hierarchy/sanitizeHierarchyCollection.js +117 -0
  210. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
  211. package/dist/hierarchy/types.d.ts +155 -0
  212. package/dist/hierarchy/types.d.ts.map +1 -0
  213. package/dist/hierarchy/types.js +6 -0
  214. package/dist/hierarchy/types.js.map +1 -0
  215. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
  216. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
  217. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
  218. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
  219. package/dist/hierarchy/utils/computePaths.d.ts +31 -0
  220. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
  221. package/dist/hierarchy/utils/computePaths.js +445 -0
  222. package/dist/hierarchy/utils/computePaths.js.map +1 -0
  223. package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
  224. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
  225. package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
  226. package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
  227. package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
  228. package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
  229. package/dist/hierarchy/utils/getAncestors.js +94 -0
  230. package/dist/hierarchy/utils/getAncestors.js.map +1 -0
  231. package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
  232. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
  233. package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
  234. package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
  235. package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
  236. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
  237. package/dist/index.bundled.d.ts +709 -530
  238. package/dist/index.d.ts +28 -8
  239. package/dist/index.d.ts.map +1 -1
  240. package/dist/index.js +31 -8
  241. package/dist/index.js.map +1 -1
  242. package/dist/preferences/keys.d.ts +8 -4
  243. package/dist/preferences/keys.d.ts.map +1 -1
  244. package/dist/preferences/keys.js +7 -4
  245. package/dist/preferences/keys.js.map +1 -1
  246. package/dist/preferences/types.d.ts +1 -1
  247. package/dist/preferences/types.d.ts.map +1 -1
  248. package/dist/preferences/types.js.map +1 -1
  249. package/dist/query-presets/config.d.ts.map +1 -1
  250. package/dist/query-presets/config.js +5 -1
  251. package/dist/query-presets/config.js.map +1 -1
  252. package/dist/queues/config/types/index.d.ts +0 -21
  253. package/dist/queues/config/types/index.d.ts.map +1 -1
  254. package/dist/queues/config/types/index.js.map +1 -1
  255. package/dist/queues/config/types/taskTypes.d.ts +0 -20
  256. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  257. package/dist/queues/config/types/taskTypes.js.map +1 -1
  258. package/dist/queues/errors/handleWorkflowError.d.ts.map +1 -1
  259. package/dist/queues/errors/handleWorkflowError.js +9 -1
  260. package/dist/queues/errors/handleWorkflowError.js.map +1 -1
  261. package/dist/queues/localAPI.d.ts.map +1 -1
  262. package/dist/queues/localAPI.js +26 -67
  263. package/dist/queues/localAPI.js.map +1 -1
  264. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  265. package/dist/queues/operations/handleSchedules/index.js +1 -4
  266. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  267. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  268. package/dist/queues/operations/runJobs/index.js +40 -37
  269. package/dist/queues/operations/runJobs/index.js.map +1 -1
  270. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  271. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +3 -22
  272. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  273. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  274. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +0 -2
  275. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  276. package/dist/queues/utilities/updateJob.d.ts +1 -3
  277. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  278. package/dist/queues/utilities/updateJob.js +2 -18
  279. package/dist/queues/utilities/updateJob.js.map +1 -1
  280. package/dist/types/index.d.ts +44 -0
  281. package/dist/types/index.d.ts.map +1 -1
  282. package/dist/types/index.js.map +1 -1
  283. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  284. package/dist/uploads/getBaseFields.js +35 -69
  285. package/dist/uploads/getBaseFields.js.map +1 -1
  286. package/dist/uploads/getSafeFilename.d.ts +9 -4
  287. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  288. package/dist/uploads/getSafeFilename.js +5 -5
  289. package/dist/uploads/getSafeFilename.js.map +1 -1
  290. package/dist/utilities/appendDateTimezoneSelectFields.d.ts +13 -0
  291. package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -0
  292. package/dist/utilities/appendDateTimezoneSelectFields.js +47 -0
  293. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -0
  294. package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
  295. package/dist/utilities/appendUploadSelectFields.js +3 -0
  296. package/dist/utilities/appendUploadSelectFields.js.map +1 -1
  297. package/dist/utilities/extractID.js +1 -1
  298. package/dist/utilities/extractID.js.map +1 -1
  299. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  300. package/dist/utilities/flattenAllFields.js +102 -93
  301. package/dist/utilities/flattenAllFields.js.map +1 -1
  302. package/dist/utilities/formatAdminURL.d.ts +13 -2
  303. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  304. package/dist/utilities/formatAdminURL.js.map +1 -1
  305. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  306. package/dist/utilities/handleEndpoints.js +0 -1
  307. package/dist/utilities/handleEndpoints.js.map +1 -1
  308. package/dist/utilities/resolveSelect.d.ts +16 -0
  309. package/dist/utilities/resolveSelect.d.ts.map +1 -0
  310. package/dist/utilities/resolveSelect.js +19 -0
  311. package/dist/utilities/resolveSelect.js.map +1 -0
  312. package/dist/utilities/sanitizeProfiler.d.ts +38 -0
  313. package/dist/utilities/sanitizeProfiler.d.ts.map +1 -0
  314. package/dist/utilities/sanitizeProfiler.js +101 -0
  315. package/dist/utilities/sanitizeProfiler.js.map +1 -0
  316. package/dist/utilities/sanitizeSelect.d.ts +1 -2
  317. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  318. package/dist/utilities/sanitizeSelect.js +19 -25
  319. package/dist/utilities/sanitizeSelect.js.map +1 -1
  320. package/dist/versions/baseFields.d.ts.map +1 -1
  321. package/dist/versions/baseFields.js +3 -2
  322. package/dist/versions/baseFields.js.map +1 -1
  323. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  324. package/dist/versions/buildCollectionFields.js +0 -1
  325. package/dist/versions/buildCollectionFields.js.map +1 -1
  326. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  327. package/dist/versions/buildGlobalFields.js +0 -1
  328. package/dist/versions/buildGlobalFields.js.map +1 -1
  329. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  330. package/dist/versions/payloadPackageList.js +0 -1
  331. package/dist/versions/payloadPackageList.js.map +1 -1
  332. package/package.json +4 -4
  333. package/dist/admin/views/folderList.d.ts +0 -56
  334. package/dist/admin/views/folderList.d.ts.map +0 -1
  335. package/dist/admin/views/folderList.js +0 -3
  336. package/dist/admin/views/folderList.js.map +0 -1
  337. package/dist/folders/addFolderCollection.d.ts +0 -10
  338. package/dist/folders/addFolderCollection.d.ts.map +0 -1
  339. package/dist/folders/addFolderCollection.js +0 -26
  340. package/dist/folders/addFolderCollection.js.map +0 -1
  341. package/dist/folders/addFolderFieldToCollection.d.ts +0 -8
  342. package/dist/folders/addFolderFieldToCollection.d.ts.map +0 -1
  343. package/dist/folders/addFolderFieldToCollection.js +0 -20
  344. package/dist/folders/addFolderFieldToCollection.js.map +0 -1
  345. package/dist/folders/buildFolderField.d.ts +0 -8
  346. package/dist/folders/buildFolderField.d.ts.map +0 -1
  347. package/dist/folders/buildFolderField.js +0 -87
  348. package/dist/folders/buildFolderField.js.map +0 -1
  349. package/dist/folders/constants.d.ts +0 -3
  350. package/dist/folders/constants.d.ts.map +0 -1
  351. package/dist/folders/constants.js +0 -4
  352. package/dist/folders/constants.js.map +0 -1
  353. package/dist/folders/createFolderCollection.d.ts +0 -11
  354. package/dist/folders/createFolderCollection.d.ts.map +0 -1
  355. package/dist/folders/createFolderCollection.js +0 -115
  356. package/dist/folders/createFolderCollection.js.map +0 -1
  357. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +0 -8
  358. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +0 -1
  359. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +0 -15
  360. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +0 -1
  361. package/dist/folders/hooks/dissasociateAfterDelete.d.ts +0 -8
  362. package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +0 -1
  363. package/dist/folders/hooks/dissasociateAfterDelete.js +0 -20
  364. package/dist/folders/hooks/dissasociateAfterDelete.js.map +0 -1
  365. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +0 -5
  366. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
  367. package/dist/folders/hooks/ensureSafeCollectionsChange.js +0 -107
  368. package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +0 -1
  369. package/dist/folders/hooks/reparentChildFolder.d.ts +0 -24
  370. package/dist/folders/hooks/reparentChildFolder.d.ts.map +0 -1
  371. package/dist/folders/hooks/reparentChildFolder.js +0 -72
  372. package/dist/folders/hooks/reparentChildFolder.js.map +0 -1
  373. package/dist/folders/types.d.ts +0 -118
  374. package/dist/folders/types.d.ts.map +0 -1
  375. package/dist/folders/types.js +0 -3
  376. package/dist/folders/types.js.map +0 -1
  377. package/dist/folders/utils/buildFolderWhereConstraints.d.ts +0 -13
  378. package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +0 -1
  379. package/dist/folders/utils/buildFolderWhereConstraints.js +0 -45
  380. package/dist/folders/utils/buildFolderWhereConstraints.js.map +0 -1
  381. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +0 -12
  382. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +0 -1
  383. package/dist/folders/utils/formatFolderOrDocumentItem.js +0 -30
  384. package/dist/folders/utils/formatFolderOrDocumentItem.js.map +0 -1
  385. package/dist/folders/utils/getFolderBreadcrumbs.d.ts +0 -14
  386. package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +0 -1
  387. package/dist/folders/utils/getFolderBreadcrumbs.js +0 -45
  388. package/dist/folders/utils/getFolderBreadcrumbs.js.map +0 -1
  389. package/dist/folders/utils/getFolderData.d.ts +0 -33
  390. package/dist/folders/utils/getFolderData.d.ts.map +0 -1
  391. package/dist/folders/utils/getFolderData.js +0 -88
  392. package/dist/folders/utils/getFolderData.js.map +0 -1
  393. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +0 -24
  394. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +0 -1
  395. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +0 -66
  396. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +0 -1
  397. package/dist/folders/utils/getOrphanedDocs.d.ts +0 -15
  398. package/dist/folders/utils/getOrphanedDocs.d.ts.map +0 -1
  399. package/dist/folders/utils/getOrphanedDocs.js +0 -40
  400. package/dist/folders/utils/getOrphanedDocs.js.map +0 -1
@@ -1 +1 @@
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 { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\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 { 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 { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.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 { mergeLocalizedData } from '../../utilities/mergeLocalizedData.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.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 publishSpecificLocale?: string\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 if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n req,\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeOperation?.length) {\n for (const hook of globalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n let { data } = args\n\n const publishAllLocales =\n !draftArg && (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(globalConfig) ? false : true))\n const unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\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 // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\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: locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\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 data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\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 originalDoc,\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 originalDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: globalJSON,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n (isSavingDraft && !hasDraftValidationEnabled(globalConfig)) ||\n // Skip validation for unpublish operations — they only change _status, not document data\n unpublishAllLocales,\n }\n\n let result: JsonObject = await beforeChange(beforeChangeArgs)\n let snapshotToSave: JsonObject | undefined\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n if (config && config.localization && globalConfig.versions) {\n let currentGlobal: JsonObject | null = null\n let snapshotData: JsonObject | undefined\n\n if (globalConfig.versions.drafts && globalConfig.versions.drafts.localizeStatus) {\n if (publishAllLocales || unpublishAllLocales) {\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 (!isSavingDraft) {\n // publishing a single locale\n currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n req,\n where: query,\n })\n snapshotData = result\n }\n } else if (publishSpecificLocale) {\n // previous way of publishing a single locale\n currentGlobal = (\n await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n ).global\n snapshotData = {\n ...result,\n _status: 'draft',\n }\n }\n\n if (snapshotData) {\n snapshotToSave = deepCopyObjectSimple(snapshotData)\n\n result = mergeLocalizedData({\n configBlockReferences: config.blocks,\n dataWithLocales: result || {},\n docWithLocales: currentGlobal || {},\n fields: globalConfig.fields,\n selectedLocales: [locale!],\n })\n }\n }\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n forceSelect: globalConfig.forceSelect,\n select: incomingSelect,\n })\n\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!result.createdAt) {\n result.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n result.updatedAt = now\n\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: snapshotToSave,\n unpublish: unpublishAllLocales,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['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: result,\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 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","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","mergeLocalizedData","sanitizeSelect","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","publishAllLocales","publishAllLocalesArg","fallbackLocale","payload","config","select","incomingSelect","showHiddenFields","unpublishAllLocales","unpublishAllLocalesArg","shouldCommit","hooks","beforeOperation","length","hook","context","global","operation","data","isSavingDraft","Boolean","_status","accessResults","access","update","query","undefined","globalVersionResult","where","globalExists","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","beforeChangeArgs","docWithLocales","skipValidation","result","snapshotToSave","localization","versions","currentGlobal","snapshotData","drafts","localizeStatus","accessibleLocaleCodes","localeCodes","filterAvailableLocales","filteredLocales","locales","map","code","localeCode","db","findGlobal","published","configBlockReferences","blocks","dataWithLocales","fields","selectedLocales","flattenedFields","forceSelect","now","Date","toISOString","createdAt","updatedAt","updateGlobal","createGlobal","globalType","snapshot","unpublish","selectMode","previousDoc","error"],"mappings":"AAkBA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,WAAW,QAAQ,0CAAyC;AACrE,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,YAAY,QAAQ,2CAA0C;AACvE,SAASC,cAAc,QAAQ,6CAA4C;AAC3E,SAASC,oBAAoB,QAAQ,iBAAgB;AACrD,SAASC,uBAAuB,QAAQ,6CAA4C;AACpF,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SACEC,gBAAgB,EAChBC,yBAAyB,EACzBC,wBAAwB,QACnB,uCAAsC;AAC7C,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,sBAAsB,QAAQ,2CAA0C;AACjF,SAASC,WAAW,QAAQ,gCAA+B;AAmB3D,OAAO,MAAMC,kBAAkB,OAI7BC;IAEA,IAAIA,KAAKC,qBAAqB,EAAE;QAC9BD,KAAKE,GAAG,CAACC,MAAM,GAAGH,KAAKC,qBAAqB;IAC9C;IAEA,MAAM,EACJG,IAAI,EACJC,QAAQ,EACRC,KAAK,EACLC,kBAAkB,EAClBC,OAAOC,QAAQ,EACfC,YAAY,EACZC,cAAc,EACdC,YAAY,EACZC,QAAQ,EACRC,mBAAmBC,oBAAoB,EACvCd,qBAAqB,EACrBC,KAAK,EAAEc,cAAc,EAAEb,MAAM,EAAEc,OAAO,EAAEA,SAAS,EAAEC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAClEhB,GAAG,EACHiB,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,qBAAqBC,sBAAsB,EAC5C,GAAGvB;IAEJ,IAAI;QACF,MAAMwB,eAAe,CAACjB,sBAAuB,MAAMd,gBAAgBS;QAEnE,wCAAwC;QACxC,2BAA2B;QAC3B,wCAAwC;QAExC,IAAIQ,aAAae,KAAK,EAAEC,iBAAiBC,QAAQ;YAC/C,KAAK,MAAMC,QAAQlB,aAAae,KAAK,CAACC,eAAe,CAAE;gBACrD1B,OACE,AAAC,MAAM4B,KAAK;oBACV5B;oBACA6B,SAAS7B,KAAKE,GAAG,CAAC2B,OAAO;oBACzBC,QAAQpB;oBACRqB,WAAW;oBACXpB;oBACAT,KAAKF,KAAKE,GAAG;gBACf,MAAOF;YACX;QACF;QAEA,IAAI,EAAEgC,IAAI,EAAE,GAAGhC;QAEf,MAAMc,oBACJ,CAACL,YAAaM,CAAAA,wBAAyBvB,CAAAA,yBAAyBkB,gBAAgB,QAAQ,IAAG,CAAC;QAC9F,MAAMY,sBACJ,OAAOC,2BAA2B,WAC9BA,2BAA2B,SAC3B,CAAC,CAACA;QACR,MAAMU,gBACJC,QAAQzB,YAAYnB,iBAAiBoB,kBACrCsB,KAAKG,OAAO,KAAK,eACjB,CAACrB;QAEH,IAAImB,eAAe;YACjBD,KAAKG,OAAO,GAAG;QACjB;QAEA,wCAAwC;QACxC,iCAAiC;QACjC,wCAAwC;QAExC,MAAMC,gBAAgB,CAACzB,iBACnB,MAAM9B,cACJ;YACEmD;YACA9B;QACF,GACAQ,aAAa2B,MAAM,CAACC,MAAM,IAE5B;QAEJ,wCAAwC;QACxC,oBAAoB;QACpB,wCAAwC;QAExC,MAAMC,QAAe5B,iBAAiB6B,YAAcJ;QAEpD,wCAAwC;QACxC,uBAAuB;QACvB,wCAAwC;QACxC,MAAMK,sBAAsB,MAAM5C,uBAAuB;YACvDO;YACAc,QAAQR;YACRP,QAAQA;YACRc;YACAf;YACAwC,OAAOH;QACT;QACA,MAAM,EAAET,MAAM,EAAEa,YAAY,EAAE,GAAGF,uBAAuB,CAAC;QAEzD,IAAIG,aAAyB,CAAC;QAE9B,IAAIH,uBAAuBA,oBAAoBX,MAAM,EAAE;YACrDc,aAAa1D,qBAAqB4C;YAElC,IAAIc,WAAWC,GAAG,EAAE;gBAClB,OAAOD,WAAWC,GAAG;YACvB;QACF;QAEA,MAAMC,cAAc,MAAM/D,UAAU;YAClCgE,YAAY;YACZlB,SAAS3B,IAAI2B,OAAO;YACpBvB,OAAO;YACP0C,KAAK9D,qBAAqB0D;YAC1BpC,OAAOC;YACPO,gBAAgBA;YAChBc,QAAQpB;YACRP,QAAQA;YACRQ,gBAAgB;YAChBT;YACAmB,kBAAkBA;QACpB;QAEA,8CAA8C;QAC9C,6CAA6C;QAC7C,8CAA8C;QAE9C,MAAMlC,wBAAwB;YAC5B8D,YAAY7C;YACZ8C,kBAAkB,CAAC,kBAAkB,EAAE9C,KAAK,4DAA4D,CAAC;YACzGQ;YACAV;QACF;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC8B,OAAO,MAAM/C,eAAe;YAC1B8D,YAAY;YACZlB,SAAS3B,IAAI2B,OAAO;YACpBG;YACAgB,KAAKF;YACLhB,QAAQpB;YACRqB,WAAW;YACXpB,gBAAgBA;YAChBT;QACF;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC,IAAIQ,aAAae,KAAK,EAAExC,gBAAgB0C,QAAQ;YAC9C,KAAK,MAAMC,QAAQlB,aAAae,KAAK,CAACxC,cAAc,CAAE;gBACpD+C,OACE,AAAC,MAAMJ,KAAK;oBACVC,SAAS3B,IAAI2B,OAAO;oBACpBG;oBACAF,QAAQpB;oBACRoC;oBACAnC;oBACAT;gBACF,MAAO8B;YACX;QACF;QAEA,wCAAwC;QACxC,wBAAwB;QACxB,wCAAwC;QAExC,IAAItB,aAAae,KAAK,EAAEzC,cAAc2C,QAAQ;YAC5C,KAAK,MAAMC,QAAQlB,aAAae,KAAK,CAACzC,YAAY,CAAE;gBAClDgD,OACE,AAAC,MAAMJ,KAAK;oBACVC,SAAS3B,IAAI2B,OAAO;oBACpBG;oBACAF,QAAQpB;oBACRoC;oBACAnC;oBACAT;gBACF,MAAO8B;YACX;QACF;QAEA,wCAAwC;QACxC,wBAAwB;QACxB,wCAAwC;QAExC,MAAMmB,mBAAmB;YACvBJ,YAAY;YACZlB,SAAS3B,IAAI2B,OAAO;YACpBG;YACAgB,KAAKF;YACLM,gBAAgBR;YAChBd,QAAQpB;YACRqB,WAAW;YACX7B;YACAmD,gBACE,AAACpB,iBAAiB,CAAC1C,0BAA0BmB,iBAC7C,yFAAyF;YACzFY;QACJ;QAEA,IAAIgC,SAAqB,MAAMtE,aAAamE;QAC5C,IAAII;QAEJ,wCAAwC;QACxC,gCAAgC;QAChC,wCAAwC;QAExC,IAAIrC,UAAUA,OAAOsC,YAAY,IAAI9C,aAAa+C,QAAQ,EAAE;YAC1D,IAAIC,gBAAmC;YACvC,IAAIC;YAEJ,IAAIjD,aAAa+C,QAAQ,CAACG,MAAM,IAAIlD,aAAa+C,QAAQ,CAACG,MAAM,CAACC,cAAc,EAAE;gBAC/E,IAAI/C,qBAAqBQ,qBAAqB;oBAC5C,IAAIwC,wBAAwB5C,OAAOsC,YAAY,CAACO,WAAW;oBAE3D,IAAI7C,OAAOsC,YAAY,CAACQ,sBAAsB,EAAE;wBAC9C,MAAMC,kBAAkB,MAAM/C,OAAOsC,YAAY,CAACQ,sBAAsB,CAAC;4BACvEE,SAAShD,OAAOsC,YAAY,CAACU,OAAO;4BACpChE;wBACF;wBACA4D,wBAAwBG,gBAAgBE,GAAG,CAAC,CAAChE,SAC3C,OAAOA,WAAW,WAAWA,SAASA,OAAOiE,IAAI;oBAErD;oBAEA,IAAI,OAAOd,OAAOnB,OAAO,KAAK,YAAYmB,OAAOnB,OAAO,KAAK,MAAM;wBACjEmB,OAAOnB,OAAO,GAAG,CAAC;oBACpB;oBAEA,KAAK,MAAMkC,cAAcP,sBAAuB;wBAC9CR,OAAOnB,OAAO,CAACkC,WAAW,GAAG/C,sBAAsB,UAAU;oBAC/D;gBACF,OAAO,IAAI,CAACW,eAAe;oBACzB,6BAA6B;oBAC7ByB,gBAAgB,MAAMzC,QAAQqD,EAAE,CAACC,UAAU,CAAC;wBAC1CnE,MAAMM,aAAaN,IAAI;wBACvBF;wBACAwC,OAAOH;oBACT;oBACAoB,eAAeL;gBACjB;YACF,OAAO,IAAIrD,uBAAuB;gBAChC,6CAA6C;gBAC7CyD,gBAAgB,AACd,CAAA,MAAM7D,uBAAuB;oBAC3BO;oBACAc,QAAQR;oBACRO;oBACAuD,WAAW;oBACXtE;oBACAwC,OAAOH;gBACT,EAAC,EACDT,MAAM;gBACR6B,eAAe;oBACb,GAAGL,MAAM;oBACTnB,SAAS;gBACX;YACF;YAEA,IAAIwB,cAAc;gBAChBJ,iBAAiBrE,qBAAqByE;gBAEtCL,SAAS3D,mBAAmB;oBAC1B8E,uBAAuBvD,OAAOwD,MAAM;oBACpCC,iBAAiBrB,UAAU,CAAC;oBAC5BF,gBAAgBM,iBAAiB,CAAC;oBAClCkB,QAAQlE,aAAakE,MAAM;oBAC3BC,iBAAiB;wBAAC1E;qBAAQ;gBAC5B;YACF;QACF;QACA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,MAAMgB,SAASvB,eAAe;YAC5BgF,QAAQlE,aAAaoE,eAAe;YACpCC,aAAarE,aAAaqE,WAAW;YACrC5D,QAAQC;QACV;QAEA,IAAI,CAACa,eAAe;YAClB,MAAM+C,MAAM,IAAIC,OAAOC,WAAW;YAClC,8BAA8B;YAC9B,IAAI,CAAC5B,OAAO6B,SAAS,EAAE;gBACrB7B,OAAO6B,SAAS,GAAGH;YACrB;YAEA,0CAA0C;YAC1C1B,OAAO8B,SAAS,GAAGJ;YAEnB,IAAIrC,cAAc;gBAChBW,SAAS,MAAMrC,QAAQqD,EAAE,CAACe,YAAY,CAAC;oBACrCjF;oBACA4B,MAAMsB;oBACNpD;oBACAiB;gBACF;YACF,OAAO;gBACLmC,SAAS,MAAMrC,QAAQqD,EAAE,CAACgB,YAAY,CAAC;oBACrClF;oBACA4B,MAAMsB;oBACNpD;gBACF;YACF;QACF;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QACxC,IAAIQ,aAAa+C,QAAQ,EAAE;YACzB,MAAM,EAAE8B,UAAU,EAAE,GAAGjC;YACvBA,SAAS,MAAMxD,YAAY;gBACzBO;gBACA+C,gBAAgBE;gBAChB9C,OAAOyB;gBACPH,QAAQpB;gBACRqB,WAAW;gBACXd;gBACAhB;gBACAC;gBACAiB;gBACAqE,UAAUjC;gBACVkC,WAAWnE;YACb;YAEAgC,SAAS;gBACP,GAAGA,MAAM;gBACTiC;YACF;QACF;QAEA,wCAAwC;QACxC,2CAA2C;QAC3C,wCAAwC;QACxC,IAAIpE,UAAUmC,OAAOiC,UAAU,EAAE;YAC/B,MAAMG,aAAarG,cAAc8B;YACjC,IACE,AAACuE,eAAe,aAAa,CAACvE,MAAM,CAAC,aAAa,IACjDuE,eAAe,aAAavE,MAAM,CAAC,aAAa,KAAK,OACtD;gBACA,OAAOmC,MAAM,CAAC,aAAa;YAC7B;QACF;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExCA,SAAS,MAAMvE,UAAU;YACvBgE,YAAY;YACZlB,SAAS3B,IAAI2B,OAAO;YACpBvB,OAAOA;YACP0C,KAAKM;YACL9C,OAAOC;YACPO,gBAAgB;YAChBc,QAAQpB;YACRP,QAAQA;YACRQ,gBAAgBA;YAChBE;YACAX;YACAiB;YACAE,kBAAkBA;QACpB;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,IAAIX,aAAae,KAAK,EAAE1C,WAAW4C,QAAQ;YACzC,KAAK,MAAMC,QAAQlB,aAAae,KAAK,CAAC1C,SAAS,CAAE;gBAC/CuE,SACE,AAAC,MAAM1B,KAAK;oBACVC,SAAS3B,IAAI2B,OAAO;oBACpBmB,KAAKM;oBACLxB,QAAQpB;oBACRC;oBACAT;gBACF,MAAOoD;YACX;QACF;QAEA,wCAAwC;QACxC,uBAAuB;QACvB,wCAAwC;QAExCA,SAAS,MAAMxE,YAAY;YACzBiE,YAAY;YACZlB,SAAS3B,IAAI2B,OAAO;YACpBG;YACAgB,KAAKM;YACLxB,QAAQpB;YACRqB,WAAW;YACX4D,aAAa7C;YACb5C;QACF;QAEA,wCAAwC;QACxC,uBAAuB;QACvB,wCAAwC;QAExC,IAAIQ,aAAae,KAAK,EAAE3C,aAAa6C,QAAQ;YAC3C,KAAK,MAAMC,QAAQlB,aAAae,KAAK,CAAC3C,WAAW,CAAE;gBACjDwE,SACE,AAAC,MAAM1B,KAAK;oBACVC,SAAS3B,IAAI2B,OAAO;oBACpBG;oBACAgB,KAAKM;oBACLxB,QAAQpB;oBACRC;oBACAgF,aAAa7C;oBACb5C;gBACF,MAAOoD;YACX;QACF;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,IAAI9B,cAAc;YAChB,MAAMpC,kBAAkBc;QAC1B;QAEA,OAAOoD;IACT,EAAE,OAAOsC,OAAgB;QACvB,MAAMlG,gBAAgBQ;QACtB,MAAM0F;IACR;AACF,EAAC"}
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 { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\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 { 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 { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.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 { mergeLocalizedData } from '../../utilities/mergeLocalizedData.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.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 publishSpecificLocale?: string\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 if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n req,\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeOperation?.length) {\n for (const hook of globalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n let { data } = args\n\n const publishAllLocales =\n !draftArg && (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(globalConfig) ? false : true))\n const unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\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 // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\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: locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\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 data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\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 originalDoc,\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 originalDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: globalJSON,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n (isSavingDraft && !hasDraftValidationEnabled(globalConfig)) ||\n // Skip validation for unpublish operations — they only change _status, not document data\n unpublishAllLocales,\n }\n\n let result: JsonObject = await beforeChange(beforeChangeArgs)\n let snapshotToSave: JsonObject | undefined\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n if (config && config.localization && globalConfig.versions) {\n let currentGlobal: JsonObject | null = null\n let snapshotData: JsonObject | undefined\n\n if (globalConfig.versions.drafts && globalConfig.versions.drafts.localizeStatus) {\n if (publishAllLocales || unpublishAllLocales) {\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 (!isSavingDraft) {\n // publishing a single locale\n currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n req,\n where: query,\n })\n snapshotData = result\n }\n } else if (publishSpecificLocale) {\n // previous way of publishing a single locale\n currentGlobal = (\n await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n ).global\n snapshotData = {\n ...result,\n _status: 'draft',\n }\n }\n\n if (snapshotData) {\n snapshotToSave = deepCopyObjectSimple(snapshotData)\n\n result = mergeLocalizedData({\n configBlockReferences: config.blocks,\n dataWithLocales: result || {},\n docWithLocales: currentGlobal || {},\n fields: globalConfig.fields,\n selectedLocales: [locale!],\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 if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!result.createdAt) {\n result.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n result.updatedAt = now\n\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: snapshotToSave,\n unpublish: unpublishAllLocales,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['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: result,\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 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","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","mergeLocalizedData","resolveSelect","sanitizeSelect","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","publishAllLocales","publishAllLocalesArg","fallbackLocale","payload","config","select","incomingSelect","showHiddenFields","unpublishAllLocales","unpublishAllLocalesArg","shouldCommit","hooks","beforeOperation","length","hook","context","global","operation","data","isSavingDraft","Boolean","_status","accessResults","access","update","query","undefined","globalVersionResult","where","globalExists","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","beforeChangeArgs","docWithLocales","skipValidation","result","snapshotToSave","localization","versions","currentGlobal","snapshotData","drafts","localizeStatus","accessibleLocaleCodes","localeCodes","filterAvailableLocales","filteredLocales","locales","map","code","localeCode","db","findGlobal","published","configBlockReferences","blocks","dataWithLocales","fields","selectedLocales","flattenedFields","now","Date","toISOString","createdAt","updatedAt","updateGlobal","createGlobal","globalType","snapshot","unpublish","selectMode","previousDoc","error"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CollectionConfig } from '../collections/config/types.js';
2
+ export declare const addHierarchyToCollection: ({ collectionConfig, parentFieldName, slugFieldName, slugPathFieldName, titlePathFieldName, }: {
3
+ collectionConfig: CollectionConfig;
4
+ parentFieldName: string;
5
+ slugFieldName?: string;
6
+ slugPathFieldName: string;
7
+ titlePathFieldName: string;
8
+ }) => void;
9
+ //# sourceMappingURL=addHierarchyToCollection.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,76 @@
1
+ import { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js';
2
+ import { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js';
3
+ import { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js';
4
+ import { hierarchyCollectionBeforeOperation } from './hooks/collectionBeforeOperation.js';
5
+ import { findFieldByName, findUseAsTitleField } from './utils/findUseAsTitle.js';
6
+ export const addHierarchyToCollection = ({ collectionConfig, parentFieldName, slugFieldName, slugPathFieldName, titlePathFieldName })=>{
7
+ const { titleFieldName } = findUseAsTitleField(collectionConfig);
8
+ // Verify slug field exists if configured
9
+ const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined;
10
+ 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
+ readOnly: true
17
+ },
18
+ index: true,
19
+ label: 'Slug Path',
20
+ virtual: true
21
+ }, {
22
+ name: titlePathFieldName,
23
+ type: 'text',
24
+ admin: {
25
+ readOnly: true
26
+ },
27
+ index: true,
28
+ label: 'Title Path',
29
+ virtual: true
30
+ });
31
+ if (!collectionConfig.admin) {
32
+ collectionConfig.admin = {};
33
+ }
34
+ if (!collectionConfig.admin.listSearchableFields) {
35
+ collectionConfig.admin.listSearchableFields = [
36
+ titleFieldName
37
+ ];
38
+ } else if (!collectionConfig.admin.listSearchableFields.includes(titleFieldName)) {
39
+ collectionConfig.admin.listSearchableFields.push(titleFieldName);
40
+ }
41
+ collectionConfig.hooks = {
42
+ ...collectionConfig.hooks || {},
43
+ afterRead: [
44
+ ...collectionConfig.hooks?.afterRead || [],
45
+ hierarchyCollectionAfterRead({
46
+ parentFieldName,
47
+ slugPathFieldName,
48
+ titlePathFieldName
49
+ })
50
+ ],
51
+ beforeChange: [
52
+ ...collectionConfig.hooks?.beforeChange || [],
53
+ hierarchyCollectionBeforeChange({
54
+ parentFieldName
55
+ })
56
+ ],
57
+ beforeDelete: [
58
+ ...collectionConfig.hooks?.beforeDelete || [],
59
+ hierarchyCollectionBeforeDelete({
60
+ parentFieldName
61
+ })
62
+ ],
63
+ beforeOperation: [
64
+ ...collectionConfig.hooks?.beforeOperation || [],
65
+ hierarchyCollectionBeforeOperation({
66
+ parentFieldName,
67
+ slugFieldName: validatedSlugFieldName,
68
+ slugPathFieldName,
69
+ titleFieldName,
70
+ titlePathFieldName
71
+ })
72
+ ]
73
+ };
74
+ };
75
+
76
+ //# sourceMappingURL=addHierarchyToCollection.js.map
@@ -0,0 +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 readOnly: true,\n // hidden: true,\n },\n index: true,\n label: 'Slug Path',\n virtual: true,\n },\n {\n name: titlePathFieldName,\n type: 'text',\n admin: {\n readOnly: true,\n // hidden: 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","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,UAAU;QAEZ;QACAC,OAAO;QACPC,OAAO;QACPC,SAAS;IACX,GACA;QACEN,MAAMP;QACNQ,MAAM;QACNC,OAAO;YACLC,UAAU;QAEZ;QACAC,OAAO;QACPC,OAAO;QACPC,SAAS;IACX;IAGF,IAAI,CAACjB,iBAAiBa,KAAK,EAAE;QAC3Bb,iBAAiBa,KAAK,GAAG,CAAC;IAC5B;IACA,IAAI,CAACb,iBAAiBa,KAAK,CAACK,oBAAoB,EAAE;QAChDlB,iBAAiBa,KAAK,CAACK,oBAAoB,GAAG;YAACb;SAAe;IAChE,OAAO,IAAI,CAACL,iBAAiBa,KAAK,CAACK,oBAAoB,CAACC,QAAQ,CAACd,iBAAiB;QAChFL,iBAAiBa,KAAK,CAACK,oBAAoB,CAACR,IAAI,CAACL;IACnD;IAEAL,iBAAiBoB,KAAK,GAAG;QACvB,GAAIpB,iBAAiBoB,KAAK,IAAI,CAAC,CAAC;QAChCC,WAAW;eACLrB,iBAAiBoB,KAAK,EAAEC,aAAa,EAAE;YAC3C5B,6BAA6B;gBAAEQ;gBAAiBE;gBAAmBC;YAAmB;SACvF;QACDkB,cAAc;eACRtB,iBAAiBoB,KAAK,EAAEE,gBAAgB,EAAE;YAC9C5B,gCAAgC;gBAAEO;YAAgB;SACnD;QACDsB,cAAc;eACRvB,iBAAiBoB,KAAK,EAAEG,gBAAgB,EAAE;YAC9C5B,gCAAgC;gBAAEM;YAAgB;SACnD;QACDuB,iBAAiB;eACXxB,iBAAiBoB,KAAK,EAAEI,mBAAmB,EAAE;YACjD5B,mCAAmC;gBACjCK;gBACAC,eAAeM;gBACfL;gBACAE;gBACAD;YACF;SACD;IACH;AACF,EAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SingleRelationshipField } from '../fields/config/types.js';
2
+ export declare const buildParentField: ({ collectionSlug, injectHeaderButton, overrides, parentFieldName, }: {
3
+ collectionSlug: string;
4
+ /**
5
+ * When true, uses NullField and injects a header button for parent selection
6
+ */
7
+ injectHeaderButton?: boolean;
8
+ overrides?: Partial<SingleRelationshipField>;
9
+ parentFieldName: string;
10
+ }) => SingleRelationshipField;
11
+ //# sourceMappingURL=buildParentField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildParentField.d.ts","sourceRoot":"","sources":["../../src/hierarchy/buildParentField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAExE,eAAO,MAAM,gBAAgB,wEAK1B;IACD,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC5C,eAAe,EAAE,MAAM,CAAA;CACxB,KAAG,uBA0CH,CAAA"}
@@ -0,0 +1,42 @@
1
+ export const buildParentField = ({ collectionSlug, injectHeaderButton = false, overrides = {}, parentFieldName })=>{
2
+ const field = {
3
+ name: parentFieldName,
4
+ type: 'relationship',
5
+ admin: {
6
+ ...injectHeaderButton && {
7
+ components: {
8
+ Field: '@payloadcms/ui#NullField'
9
+ }
10
+ },
11
+ position: 'sidebar'
12
+ },
13
+ hasMany: false,
14
+ index: true,
15
+ label: 'Parent',
16
+ localized: false,
17
+ relationTo: collectionSlug,
18
+ ...injectHeaderButton && {
19
+ custom: {
20
+ hierarchy: {
21
+ // Inform hierarchy UI to inject the header button for this parent field
22
+ injectHeaderButton: true
23
+ }
24
+ }
25
+ }
26
+ };
27
+ if (overrides?.admin) {
28
+ field.admin = {
29
+ ...field.admin || {},
30
+ ...overrides.admin
31
+ };
32
+ if (overrides.admin.components && field.admin) {
33
+ field.admin.components = {
34
+ ...field.admin.components || {},
35
+ ...overrides.admin.components
36
+ };
37
+ }
38
+ }
39
+ return field;
40
+ };
41
+
42
+ //# sourceMappingURL=buildParentField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hierarchy/buildParentField.ts"],"sourcesContent":["import type { SingleRelationshipField } from '../fields/config/types.js'\n\nexport const buildParentField = ({\n collectionSlug,\n injectHeaderButton = false,\n overrides = {},\n parentFieldName,\n}: {\n collectionSlug: string\n /**\n * When true, uses NullField and injects a header button for parent selection\n */\n injectHeaderButton?: boolean\n overrides?: Partial<SingleRelationshipField>\n parentFieldName: string\n}): SingleRelationshipField => {\n const field: SingleRelationshipField = {\n name: parentFieldName,\n type: 'relationship',\n admin: {\n ...(injectHeaderButton && {\n components: {\n Field: '@payloadcms/ui#NullField',\n },\n }),\n position: 'sidebar',\n },\n hasMany: false,\n index: true,\n label: 'Parent',\n localized: false,\n relationTo: collectionSlug, // Always self-referential\n ...(injectHeaderButton && {\n custom: {\n hierarchy: {\n // Inform hierarchy UI to inject the header button for this parent field\n injectHeaderButton: true,\n },\n },\n }),\n }\n\n if (overrides?.admin) {\n field.admin = {\n ...(field.admin || {}),\n ...overrides.admin,\n }\n\n if (overrides.admin.components && field.admin) {\n field.admin.components = {\n ...(field.admin.components || {}),\n ...overrides.admin.components,\n }\n }\n }\n\n return field\n}\n"],"names":["buildParentField","collectionSlug","injectHeaderButton","overrides","parentFieldName","field","name","type","admin","components","Field","position","hasMany","index","label","localized","relationTo","custom","hierarchy"],"mappings":"AAEA,OAAO,MAAMA,mBAAmB,CAAC,EAC/BC,cAAc,EACdC,qBAAqB,KAAK,EAC1BC,YAAY,CAAC,CAAC,EACdC,eAAe,EAShB;IACC,MAAMC,QAAiC;QACrCC,MAAMF;QACNG,MAAM;QACNC,OAAO;YACL,GAAIN,sBAAsB;gBACxBO,YAAY;oBACVC,OAAO;gBACT;YACF,CAAC;YACDC,UAAU;QACZ;QACAC,SAAS;QACTC,OAAO;QACPC,OAAO;QACPC,WAAW;QACXC,YAAYf;QACZ,GAAIC,sBAAsB;YACxBe,QAAQ;gBACNC,WAAW;oBACT,wEAAwE;oBACxEhB,oBAAoB;gBACtB;YACF;QACF,CAAC;IACH;IAEA,IAAIC,WAAWK,OAAO;QACpBH,MAAMG,KAAK,GAAG;YACZ,GAAIH,MAAMG,KAAK,IAAI,CAAC,CAAC;YACrB,GAAGL,UAAUK,KAAK;QACpB;QAEA,IAAIL,UAAUK,KAAK,CAACC,UAAU,IAAIJ,MAAMG,KAAK,EAAE;YAC7CH,MAAMG,KAAK,CAACC,UAAU,GAAG;gBACvB,GAAIJ,MAAMG,KAAK,CAACC,UAAU,IAAI,CAAC,CAAC;gBAChC,GAAGN,UAAUK,KAAK,CAACC,UAAU;YAC/B;QACF;IACF;IAEA,OAAOJ;AACT,EAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default field names and constants for hierarchy feature
3
+ */
4
+ export declare const HIERARCHY_SLUG_PATH_FIELD = "_h_slugPath";
5
+ export declare const HIERARCHY_TITLE_PATH_FIELD = "_h_titlePath";
6
+ export declare const HIERARCHY_DEFAULT_LOCALE = "en";
7
+ /** Default limit for hierarchy tree queries */
8
+ export declare const DEFAULT_HIERARCHY_TREE_LIMIT = 100;
9
+ /** Default limit for hierarchy list view table queries */
10
+ export declare const DEFAULT_HIERARCHY_LIST_LIMIT = 25;
11
+ /** Default value for allowing hasMany on hierarchy fields */
12
+ export declare const DEFAULT_ALLOW_HAS_MANY = true;
13
+ /** Generate a hierarchy field name from a hierarchy slug (e.g., 'folders' -> '_h_folders') */
14
+ export declare const getHierarchyFieldName: (hierarchySlug: string) => string;
15
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/hierarchy/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AACtD,eAAO,MAAM,0BAA0B,iBAAiB,CAAA;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAA;AAE5C,+CAA+C;AAC/C,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C,0DAA0D;AAC1D,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,kBAAmB,MAAM,KAAG,MAA+B,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default field names and constants for hierarchy feature
3
+ */ export const HIERARCHY_SLUG_PATH_FIELD = '_h_slugPath';
4
+ export const HIERARCHY_TITLE_PATH_FIELD = '_h_titlePath';
5
+ export const HIERARCHY_DEFAULT_LOCALE = 'en';
6
+ /** Default limit for hierarchy tree queries */ export const DEFAULT_HIERARCHY_TREE_LIMIT = 100;
7
+ /** Default limit for hierarchy list view table queries */ export const DEFAULT_HIERARCHY_LIST_LIMIT = 25;
8
+ /** Default value for allowing hasMany on hierarchy fields */ export const DEFAULT_ALLOW_HAS_MANY = true;
9
+ /** Generate a hierarchy field name from a hierarchy slug (e.g., 'folders' -> '_h_folders') */ export const getHierarchyFieldName = (hierarchySlug)=>`_h_${hierarchySlug}`;
10
+
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hierarchy/constants.ts"],"sourcesContent":["/**\n * Default field names and constants for hierarchy feature\n */\n\nexport const HIERARCHY_SLUG_PATH_FIELD = '_h_slugPath'\nexport const HIERARCHY_TITLE_PATH_FIELD = '_h_titlePath'\nexport const HIERARCHY_DEFAULT_LOCALE = 'en'\n\n/** Default limit for hierarchy tree queries */\nexport const DEFAULT_HIERARCHY_TREE_LIMIT = 100\n\n/** Default limit for hierarchy list view table queries */\nexport const DEFAULT_HIERARCHY_LIST_LIMIT = 25\n\n/** Default value for allowing hasMany on hierarchy fields */\nexport const DEFAULT_ALLOW_HAS_MANY = true\n\n/** Generate a hierarchy field name from a hierarchy slug (e.g., 'folders' -> '_h_folders') */\nexport const getHierarchyFieldName = (hierarchySlug: string): string => `_h_${hierarchySlug}`\n"],"names":["HIERARCHY_SLUG_PATH_FIELD","HIERARCHY_TITLE_PATH_FIELD","HIERARCHY_DEFAULT_LOCALE","DEFAULT_HIERARCHY_TREE_LIMIT","DEFAULT_HIERARCHY_LIST_LIMIT","DEFAULT_ALLOW_HAS_MANY","getHierarchyFieldName","hierarchySlug"],"mappings":"AAAA;;CAEC,GAED,OAAO,MAAMA,4BAA4B,cAAa;AACtD,OAAO,MAAMC,6BAA6B,eAAc;AACxD,OAAO,MAAMC,2BAA2B,KAAI;AAE5C,6CAA6C,GAC7C,OAAO,MAAMC,+BAA+B,IAAG;AAE/C,wDAAwD,GACxD,OAAO,MAAMC,+BAA+B,GAAE;AAE9C,2DAA2D,GAC3D,OAAO,MAAMC,yBAAyB,KAAI;AAE1C,4FAA4F,GAC5F,OAAO,MAAMC,wBAAwB,CAACC,gBAAkC,CAAC,GAAG,EAAEA,eAAe,CAAA"}
@@ -0,0 +1,39 @@
1
+ import type { RelationshipField, SingleRelationshipField } from '../fields/config/types.js';
2
+ /**
3
+ * Options for creating a folder relationship field.
4
+ * All SingleRelationshipField properties are available except name, type, relationTo, and hasMany
5
+ * which are managed by the folder system.
6
+ */
7
+ export type CreateFolderFieldOptions = {
8
+ /**
9
+ * The slug of the hierarchy collection this field references (e.g., 'folders')
10
+ */
11
+ relationTo: string;
12
+ } & Pick<Partial<SingleRelationshipField>, 'admin' | 'label' | 'required'>;
13
+ /**
14
+ * Creates a relationship field for folder-style hierarchies (single-select).
15
+ *
16
+ * This field:
17
+ * - Has hasMany:false (single folder selection)
18
+ * - Uses NullField to render nothing in the form (no DOM output)
19
+ * - Injects a header button for folder selection via miller columns UI
20
+ *
21
+ * Use this in your collection's fields array to add a folder relationship.
22
+ * The field name is automatically generated based on the hierarchy slug.
23
+ *
24
+ * @example
25
+ * import { createFolderField } from 'payload'
26
+ *
27
+ * const Posts: CollectionConfig = {
28
+ * slug: 'posts',
29
+ * fields: [
30
+ * { name: 'title', type: 'text' },
31
+ * createFolderField({
32
+ * relationTo: 'folders',
33
+ * label: 'Folder',
34
+ * }),
35
+ * ],
36
+ * }
37
+ */
38
+ export declare function createFolderField(options: CreateFolderFieldOptions): RelationshipField;
39
+ //# sourceMappingURL=createFolderField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFolderField.d.ts","sourceRoot":"","sources":["../../src/hierarchy/createFolderField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAI3F;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CA2BtF"}
@@ -0,0 +1,54 @@
1
+ import { getHierarchyFieldName } from './constants.js';
2
+ /**
3
+ * Creates a relationship field for folder-style hierarchies (single-select).
4
+ *
5
+ * This field:
6
+ * - Has hasMany:false (single folder selection)
7
+ * - Uses NullField to render nothing in the form (no DOM output)
8
+ * - Injects a header button for folder selection via miller columns UI
9
+ *
10
+ * Use this in your collection's fields array to add a folder relationship.
11
+ * The field name is automatically generated based on the hierarchy slug.
12
+ *
13
+ * @example
14
+ * import { createFolderField } from 'payload'
15
+ *
16
+ * const Posts: CollectionConfig = {
17
+ * slug: 'posts',
18
+ * fields: [
19
+ * { name: 'title', type: 'text' },
20
+ * createFolderField({
21
+ * relationTo: 'folders',
22
+ * label: 'Folder',
23
+ * }),
24
+ * ],
25
+ * }
26
+ */ export function createFolderField(options) {
27
+ const { admin: adminOverrides, label, relationTo, ...restOptions } = options;
28
+ const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {};
29
+ return {
30
+ name: getHierarchyFieldName(relationTo),
31
+ type: 'relationship',
32
+ admin: {
33
+ position: 'sidebar',
34
+ ...restAdminOverrides,
35
+ components: {
36
+ // NullField renders nothing - the header button handles the UI
37
+ Field: '@payloadcms/ui#NullField',
38
+ ...componentOverrides
39
+ }
40
+ },
41
+ custom: {
42
+ hierarchy: {
43
+ injectHeaderButton: true
44
+ }
45
+ },
46
+ hasMany: false,
47
+ index: true,
48
+ label: label ?? 'Folder',
49
+ relationTo,
50
+ ...restOptions
51
+ };
52
+ }
53
+
54
+ //# sourceMappingURL=createFolderField.js.map
@@ -0,0 +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"}
@@ -0,0 +1,44 @@
1
+ import type { RelationshipField } from '../fields/config/types.js';
2
+ /**
3
+ * Options for creating a tag relationship field.
4
+ * All RelationshipFieldMany properties are available except name, type, and relationTo
5
+ * which are managed by the tag system.
6
+ */
7
+ export type CreateTagFieldOptions = {
8
+ /**
9
+ * Whether to allow multiple tags (defaults to true)
10
+ * @default true
11
+ */
12
+ hasMany?: boolean;
13
+ /**
14
+ * The slug of the hierarchy collection this field references (e.g., 'tags')
15
+ */
16
+ relationTo: string;
17
+ } & Pick<Partial<RelationshipField>, 'admin' | 'label' | 'required'>;
18
+ /**
19
+ * Creates a relationship field for tag-style hierarchies (multi-select by default).
20
+ *
21
+ * This field:
22
+ * - Has hasMany:true by default (multiple tag selection)
23
+ * - Is positioned in the sidebar by default
24
+ * - Does NOT inject a header button (tags use standard relationship UI)
25
+ *
26
+ * Use this in your collection's fields array to add a tag relationship.
27
+ * The field name is automatically generated based on the hierarchy slug.
28
+ *
29
+ * @example
30
+ * import { createTagField } from 'payload'
31
+ *
32
+ * const Posts: CollectionConfig = {
33
+ * slug: 'posts',
34
+ * fields: [
35
+ * { name: 'title', type: 'text' },
36
+ * createTagField({
37
+ * relationTo: 'tags',
38
+ * label: 'Tags',
39
+ * }),
40
+ * ],
41
+ * }
42
+ */
43
+ export declare function createTagField(options: CreateTagFieldOptions): RelationshipField;
44
+ //# sourceMappingURL=createTagField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTagField.d.ts","sourceRoot":"","sources":["../../src/hierarchy/createTagField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAIlE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAqBhF"}
@@ -0,0 +1,48 @@
1
+ import { getHierarchyFieldName } from './constants.js';
2
+ /**
3
+ * Creates a relationship field for tag-style hierarchies (multi-select by default).
4
+ *
5
+ * This field:
6
+ * - Has hasMany:true by default (multiple tag selection)
7
+ * - Is positioned in the sidebar by default
8
+ * - Does NOT inject a header button (tags use standard relationship UI)
9
+ *
10
+ * Use this in your collection's fields array to add a tag relationship.
11
+ * The field name is automatically generated based on the hierarchy slug.
12
+ *
13
+ * @example
14
+ * import { createTagField } from 'payload'
15
+ *
16
+ * const Posts: CollectionConfig = {
17
+ * slug: 'posts',
18
+ * fields: [
19
+ * { name: 'title', type: 'text' },
20
+ * createTagField({
21
+ * relationTo: 'tags',
22
+ * label: 'Tags',
23
+ * }),
24
+ * ],
25
+ * }
26
+ */ export function createTagField(options) {
27
+ const { admin: adminOverrides, hasMany = true, label, relationTo, ...restOptions } = options;
28
+ const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {};
29
+ return {
30
+ name: getHierarchyFieldName(relationTo),
31
+ type: 'relationship',
32
+ admin: {
33
+ position: 'sidebar',
34
+ ...restAdminOverrides,
35
+ components: {
36
+ Field: '@payloadcms/ui/rsc#HierarchyField',
37
+ ...componentOverrides
38
+ }
39
+ },
40
+ hasMany,
41
+ index: true,
42
+ label: label ?? 'Tags',
43
+ relationTo,
44
+ ...restOptions
45
+ };
46
+ }
47
+
48
+ //# sourceMappingURL=createTagField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hierarchy/createTagField.ts"],"sourcesContent":["import type { RelationshipField } from '../fields/config/types.js'\n\nimport { getHierarchyFieldName } from './constants.js'\n\n/**\n * Options for creating a tag relationship field.\n * All RelationshipFieldMany properties are available except name, type, and relationTo\n * which are managed by the tag system.\n */\nexport type CreateTagFieldOptions = {\n /**\n * Whether to allow multiple tags (defaults to true)\n * @default true\n */\n hasMany?: boolean\n /**\n * The slug of the hierarchy collection this field references (e.g., 'tags')\n */\n relationTo: string\n} & Pick<Partial<RelationshipField>, 'admin' | 'label' | 'required'>\n\n/**\n * Creates a relationship field for tag-style hierarchies (multi-select by default).\n *\n * This field:\n * - Has hasMany:true by default (multiple tag selection)\n * - Is positioned in the sidebar by default\n * - Does NOT inject a header button (tags use standard relationship UI)\n *\n * Use this in your collection's fields array to add a tag relationship.\n * The field name is automatically generated based on the hierarchy slug.\n *\n * @example\n * import { createTagField } from 'payload'\n *\n * const Posts: CollectionConfig = {\n * slug: 'posts',\n * fields: [\n * { name: 'title', type: 'text' },\n * createTagField({\n * relationTo: 'tags',\n * label: 'Tags',\n * }),\n * ],\n * }\n */\nexport function createTagField(options: CreateTagFieldOptions): RelationshipField {\n const { admin: adminOverrides, hasMany = true, 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 Field: '@payloadcms/ui/rsc#HierarchyField',\n ...componentOverrides,\n },\n },\n hasMany,\n index: true,\n label: label ?? 'Tags',\n relationTo,\n ...restOptions,\n } as RelationshipField\n}\n"],"names":["getHierarchyFieldName","createTagField","options","admin","adminOverrides","hasMany","label","relationTo","restOptions","components","componentOverrides","restAdminOverrides","name","type","position","Field","index"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iBAAgB;AAmBtD;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASC,eAAeC,OAA8B;IAC3D,MAAM,EAAEC,OAAOC,cAAc,EAAEC,UAAU,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGC,aAAa,GAAGN;IACrF,MAAM,EAAEO,YAAYC,kBAAkB,EAAE,GAAGC,oBAAoB,GAAGP,kBAAkB,CAAC;IAErF,OAAO;QACLQ,MAAMZ,sBAAsBO;QAC5BM,MAAM;QACNV,OAAO;YACLW,UAAU;YACV,GAAGH,kBAAkB;YACrBF,YAAY;gBACVM,OAAO;gBACP,GAAGL,kBAAkB;YACvB;QACF;QACAL;QACAW,OAAO;QACPV,OAAOA,SAAS;QAChBC;QACA,GAAGC,WAAW;IAChB;AACF"}
@@ -0,0 +1,27 @@
1
+ import type { TypeWithID } from '../collections/config/types.js';
2
+ import type { PayloadRequest, Where } from '../types/index.js';
3
+ export type GetInitialTreeDataArgs = {
4
+ /** Base filter to apply to all queries (e.g., tenant filter) */
5
+ baseFilter?: null | Where;
6
+ collectionSlug: string;
7
+ expandedNodeIds?: (number | string)[];
8
+ /** Filter tree to only show folders that allow these collection types (or are unrestricted) */
9
+ filterByCollections?: string[];
10
+ limit?: number;
11
+ payload: PayloadRequest['payload'];
12
+ /** The currently selected node ID. When provided, ensures siblings are loaded to include this node. */
13
+ selectedNodeId?: null | number | string;
14
+ /** The parent ID of the selected node. Required when selectedNodeId is provided. */
15
+ selectedNodeParentId?: null | number | string;
16
+ user: PayloadRequest['user'];
17
+ };
18
+ export type InitialTreeData = {
19
+ docs: TypeWithID[];
20
+ loadedParents: Record<string, {
21
+ hasMore: boolean;
22
+ loadedCount?: number;
23
+ totalDocs: number;
24
+ }>;
25
+ };
26
+ export declare const getInitialTreeData: ({ baseFilter, collectionSlug, expandedNodeIds, filterByCollections, limit, payload, selectedNodeId, selectedNodeParentId, user, }: GetInitialTreeDataArgs) => Promise<InitialTreeData>;
27
+ //# sourceMappingURL=getInitialTreeData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInitialTreeData.d.ts","sourceRoot":"","sources":["../../src/hierarchy/getInitialTreeData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAI9D,MAAM,MAAM,sBAAsB,GAAG;IACnC,gEAAgE;IAChE,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACrC,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IAClC,uGAAuG;IACvG,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7C,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,EAAE,CAAA;IAElB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7F,CAAA;AAED,eAAO,MAAM,kBAAkB,sIAU5B,sBAAsB,KAAG,OAAO,CAAC,eAAe,CA0IlD,CAAA"}