payload 3.84.1 → 4.0.0-internal.38b7f1d

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 (441) 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 +51 -10
  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 +3 -38
  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/database/migrations/config/batchTransform.d.ts +16 -0
  94. package/dist/database/migrations/config/batchTransform.d.ts.map +1 -0
  95. package/dist/database/migrations/config/batchTransform.js +17 -0
  96. package/dist/database/migrations/config/batchTransform.js.map +1 -0
  97. package/dist/database/migrations/config/batchTransform.spec.js +68 -0
  98. package/dist/database/migrations/config/batchTransform.spec.js.map +1 -0
  99. package/dist/database/migrations/config/bootstrapConfigState.d.ts +4 -0
  100. package/dist/database/migrations/config/bootstrapConfigState.d.ts.map +1 -0
  101. package/dist/database/migrations/config/bootstrapConfigState.js +10 -0
  102. package/dist/database/migrations/config/bootstrapConfigState.js.map +1 -0
  103. package/dist/database/migrations/config/configStateStore.d.ts +4 -0
  104. package/dist/database/migrations/config/configStateStore.d.ts.map +1 -0
  105. package/dist/database/migrations/config/configStateStore.js +29 -0
  106. package/dist/database/migrations/config/configStateStore.js.map +1 -0
  107. package/dist/database/migrations/config/diffConfig.d.ts +3 -0
  108. package/dist/database/migrations/config/diffConfig.d.ts.map +1 -0
  109. package/dist/database/migrations/config/diffConfig.js +123 -0
  110. package/dist/database/migrations/config/diffConfig.js.map +1 -0
  111. package/dist/database/migrations/config/diffConfig.spec.js +136 -0
  112. package/dist/database/migrations/config/diffConfig.spec.js.map +1 -0
  113. package/dist/database/migrations/config/generateDataMigrationCode.d.ts +11 -0
  114. package/dist/database/migrations/config/generateDataMigrationCode.d.ts.map +1 -0
  115. package/dist/database/migrations/config/generateDataMigrationCode.js +28 -0
  116. package/dist/database/migrations/config/generateDataMigrationCode.js.map +1 -0
  117. package/dist/database/migrations/config/generateDataMigrationCode.spec.js +52 -0
  118. package/dist/database/migrations/config/generateDataMigrationCode.spec.js.map +1 -0
  119. package/dist/database/migrations/config/index.d.ts +9 -0
  120. package/dist/database/migrations/config/index.d.ts.map +1 -0
  121. package/dist/database/migrations/config/index.js +9 -0
  122. package/dist/database/migrations/config/index.js.map +1 -0
  123. package/dist/database/migrations/config/prompts.d.ts +5 -0
  124. package/dist/database/migrations/config/prompts.d.ts.map +1 -0
  125. package/dist/database/migrations/config/prompts.js +49 -0
  126. package/dist/database/migrations/config/prompts.js.map +1 -0
  127. package/dist/database/migrations/config/serializeConfig.d.ts +4 -0
  128. package/dist/database/migrations/config/serializeConfig.d.ts.map +1 -0
  129. package/dist/database/migrations/config/serializeConfig.js +65 -0
  130. package/dist/database/migrations/config/serializeConfig.js.map +1 -0
  131. package/dist/database/migrations/config/serializeConfig.spec.js +146 -0
  132. package/dist/database/migrations/config/serializeConfig.spec.js.map +1 -0
  133. package/dist/database/migrations/config/types.d.ts +66 -0
  134. package/dist/database/migrations/config/types.d.ts.map +1 -0
  135. package/dist/database/migrations/config/types.js.map +1 -0
  136. package/dist/database/migrations/migrate.d.ts.map +1 -1
  137. package/dist/database/migrations/migrate.js +3 -0
  138. package/dist/database/migrations/migrate.js.map +1 -1
  139. package/dist/database/types.d.ts +29 -0
  140. package/dist/database/types.d.ts.map +1 -1
  141. package/dist/database/types.js.map +1 -1
  142. package/dist/exports/migrations.d.ts +1 -0
  143. package/dist/exports/migrations.d.ts.map +1 -1
  144. package/dist/exports/migrations.js +2 -1
  145. package/dist/exports/migrations.js.map +1 -1
  146. package/dist/exports/shared.d.ts +6 -3
  147. package/dist/exports/shared.d.ts.map +1 -1
  148. package/dist/exports/shared.js +4 -2
  149. package/dist/exports/shared.js.map +1 -1
  150. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  151. package/dist/fields/baseFields/slug/index.js +6 -4
  152. package/dist/fields/baseFields/slug/index.js.map +1 -1
  153. package/dist/fields/config/client.d.ts.map +1 -1
  154. package/dist/fields/config/client.js +3 -2
  155. package/dist/fields/config/client.js.map +1 -1
  156. package/dist/fields/config/sanitize.d.ts.map +1 -1
  157. package/dist/fields/config/sanitize.js +12 -10
  158. package/dist/fields/config/sanitize.js.map +1 -1
  159. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  160. package/dist/fields/config/sanitizeJoinField.js +3 -0
  161. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  162. package/dist/fields/config/types.d.ts +17 -73
  163. package/dist/fields/config/types.d.ts.map +1 -1
  164. package/dist/fields/config/types.js +11 -1
  165. package/dist/fields/config/types.js.map +1 -1
  166. package/dist/fields/isFieldDisabled.d.ts +12 -0
  167. package/dist/fields/isFieldDisabled.d.ts.map +1 -0
  168. package/dist/fields/isFieldDisabled.js +15 -0
  169. package/dist/fields/isFieldDisabled.js.map +1 -0
  170. package/dist/fields/isFieldDisabled.spec.js +134 -0
  171. package/dist/fields/isFieldDisabled.spec.js.map +1 -0
  172. package/dist/fields/validations.js +1 -1
  173. package/dist/fields/validations.js.map +1 -1
  174. package/dist/globals/config/client.d.ts +1 -1
  175. package/dist/globals/config/client.d.ts.map +1 -1
  176. package/dist/globals/config/client.js +2 -1
  177. package/dist/globals/config/client.js.map +1 -1
  178. package/dist/globals/config/sanitize.js +6 -2
  179. package/dist/globals/config/sanitize.js.map +1 -1
  180. package/dist/globals/config/types.d.ts +4 -57
  181. package/dist/globals/config/types.d.ts.map +1 -1
  182. package/dist/globals/config/types.js.map +1 -1
  183. package/dist/globals/operations/findOne.d.ts.map +1 -1
  184. package/dist/globals/operations/findOne.js +7 -2
  185. package/dist/globals/operations/findOne.js.map +1 -1
  186. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  187. package/dist/globals/operations/findVersionByID.js +6 -4
  188. package/dist/globals/operations/findVersionByID.js.map +1 -1
  189. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  190. package/dist/globals/operations/findVersions.js +6 -4
  191. package/dist/globals/operations/findVersions.js.map +1 -1
  192. package/dist/globals/operations/update.d.ts.map +1 -1
  193. package/dist/globals/operations/update.js +7 -2
  194. package/dist/globals/operations/update.js.map +1 -1
  195. package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
  196. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
  197. package/dist/hierarchy/addHierarchyToCollection.js +76 -0
  198. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
  199. package/dist/hierarchy/buildParentField.d.ts +11 -0
  200. package/dist/hierarchy/buildParentField.d.ts.map +1 -0
  201. package/dist/hierarchy/buildParentField.js +42 -0
  202. package/dist/hierarchy/buildParentField.js.map +1 -0
  203. package/dist/hierarchy/constants.d.ts +15 -0
  204. package/dist/hierarchy/constants.d.ts.map +1 -0
  205. package/dist/hierarchy/constants.js +11 -0
  206. package/dist/hierarchy/constants.js.map +1 -0
  207. package/dist/hierarchy/createFolderField.d.ts +39 -0
  208. package/dist/hierarchy/createFolderField.d.ts.map +1 -0
  209. package/dist/hierarchy/createFolderField.js +54 -0
  210. package/dist/hierarchy/createFolderField.js.map +1 -0
  211. package/dist/hierarchy/createTagField.d.ts +44 -0
  212. package/dist/hierarchy/createTagField.d.ts.map +1 -0
  213. package/dist/hierarchy/createTagField.js +48 -0
  214. package/dist/hierarchy/createTagField.js.map +1 -0
  215. package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
  216. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
  217. package/dist/hierarchy/getInitialTreeData.js +125 -0
  218. package/dist/hierarchy/getInitialTreeData.js.map +1 -0
  219. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
  220. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
  221. package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
  222. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
  223. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
  224. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
  225. package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
  226. package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
  227. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
  228. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
  229. package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
  230. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
  231. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
  232. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
  233. package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
  234. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
  235. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
  236. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
  237. package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
  238. package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
  239. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
  240. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  241. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
  242. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
  243. package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
  244. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
  245. package/dist/hierarchy/injectHierarchyButton.js +37 -0
  246. package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
  247. package/dist/hierarchy/presets.d.ts +13 -0
  248. package/dist/hierarchy/presets.d.ts.map +1 -0
  249. package/dist/hierarchy/presets.js +52 -0
  250. package/dist/hierarchy/presets.js.map +1 -0
  251. package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
  252. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
  253. package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
  254. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
  255. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
  256. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
  257. package/dist/hierarchy/sanitizeHierarchyCollection.js +117 -0
  258. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
  259. package/dist/hierarchy/types.d.ts +155 -0
  260. package/dist/hierarchy/types.d.ts.map +1 -0
  261. package/dist/hierarchy/types.js +6 -0
  262. package/dist/hierarchy/types.js.map +1 -0
  263. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
  264. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
  265. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
  266. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
  267. package/dist/hierarchy/utils/computePaths.d.ts +31 -0
  268. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
  269. package/dist/hierarchy/utils/computePaths.js +445 -0
  270. package/dist/hierarchy/utils/computePaths.js.map +1 -0
  271. package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
  272. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
  273. package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
  274. package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
  275. package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
  276. package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
  277. package/dist/hierarchy/utils/getAncestors.js +94 -0
  278. package/dist/hierarchy/utils/getAncestors.js.map +1 -0
  279. package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
  280. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
  281. package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
  282. package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
  283. package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
  284. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
  285. package/dist/index.bundled.d.ts +856 -558
  286. package/dist/index.d.ts +29 -8
  287. package/dist/index.d.ts.map +1 -1
  288. package/dist/index.js +13 -8
  289. package/dist/index.js.map +1 -1
  290. package/dist/preferences/keys.d.ts +8 -4
  291. package/dist/preferences/keys.d.ts.map +1 -1
  292. package/dist/preferences/keys.js +7 -4
  293. package/dist/preferences/keys.js.map +1 -1
  294. package/dist/preferences/types.d.ts +1 -1
  295. package/dist/preferences/types.d.ts.map +1 -1
  296. package/dist/preferences/types.js.map +1 -1
  297. package/dist/query-presets/config.d.ts.map +1 -1
  298. package/dist/query-presets/config.js +5 -1
  299. package/dist/query-presets/config.js.map +1 -1
  300. package/dist/queues/config/types/index.d.ts +0 -21
  301. package/dist/queues/config/types/index.d.ts.map +1 -1
  302. package/dist/queues/config/types/index.js.map +1 -1
  303. package/dist/queues/config/types/taskTypes.d.ts +0 -20
  304. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  305. package/dist/queues/config/types/taskTypes.js.map +1 -1
  306. package/dist/queues/errors/handleWorkflowError.d.ts.map +1 -1
  307. package/dist/queues/errors/handleWorkflowError.js +9 -1
  308. package/dist/queues/errors/handleWorkflowError.js.map +1 -1
  309. package/dist/queues/localAPI.d.ts.map +1 -1
  310. package/dist/queues/localAPI.js +26 -67
  311. package/dist/queues/localAPI.js.map +1 -1
  312. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  313. package/dist/queues/operations/handleSchedules/index.js +1 -4
  314. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  315. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  316. package/dist/queues/operations/runJobs/index.js +40 -37
  317. package/dist/queues/operations/runJobs/index.js.map +1 -1
  318. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  319. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +3 -22
  320. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  321. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  322. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +0 -2
  323. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  324. package/dist/queues/utilities/updateJob.d.ts +1 -3
  325. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  326. package/dist/queues/utilities/updateJob.js +2 -18
  327. package/dist/queues/utilities/updateJob.js.map +1 -1
  328. package/dist/types/index.d.ts +44 -0
  329. package/dist/types/index.d.ts.map +1 -1
  330. package/dist/types/index.js.map +1 -1
  331. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  332. package/dist/uploads/getBaseFields.js +35 -69
  333. package/dist/uploads/getBaseFields.js.map +1 -1
  334. package/dist/uploads/getSafeFilename.d.ts +9 -4
  335. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  336. package/dist/uploads/getSafeFilename.js +5 -5
  337. package/dist/uploads/getSafeFilename.js.map +1 -1
  338. package/dist/utilities/appendDateTimezoneSelectFields.d.ts +13 -0
  339. package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -0
  340. package/dist/utilities/appendDateTimezoneSelectFields.js +47 -0
  341. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -0
  342. package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
  343. package/dist/utilities/appendUploadSelectFields.js +3 -0
  344. package/dist/utilities/appendUploadSelectFields.js.map +1 -1
  345. package/dist/utilities/extractID.js +1 -1
  346. package/dist/utilities/extractID.js.map +1 -1
  347. package/dist/utilities/formatAdminURL.d.ts +13 -2
  348. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  349. package/dist/utilities/formatAdminURL.js.map +1 -1
  350. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  351. package/dist/utilities/handleEndpoints.js +0 -1
  352. package/dist/utilities/handleEndpoints.js.map +1 -1
  353. package/dist/utilities/resolveSelect.d.ts +16 -0
  354. package/dist/utilities/resolveSelect.d.ts.map +1 -0
  355. package/dist/utilities/resolveSelect.js +19 -0
  356. package/dist/utilities/resolveSelect.js.map +1 -0
  357. package/dist/utilities/sanitizeSelect.d.ts +1 -2
  358. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  359. package/dist/utilities/sanitizeSelect.js +19 -25
  360. package/dist/utilities/sanitizeSelect.js.map +1 -1
  361. package/dist/versions/baseFields.d.ts.map +1 -1
  362. package/dist/versions/baseFields.js +3 -2
  363. package/dist/versions/baseFields.js.map +1 -1
  364. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  365. package/dist/versions/buildCollectionFields.js +0 -1
  366. package/dist/versions/buildCollectionFields.js.map +1 -1
  367. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  368. package/dist/versions/buildGlobalFields.js +0 -1
  369. package/dist/versions/buildGlobalFields.js.map +1 -1
  370. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  371. package/dist/versions/payloadPackageList.js +0 -1
  372. package/dist/versions/payloadPackageList.js.map +1 -1
  373. package/package.json +4 -4
  374. package/dist/admin/views/folderList.d.ts +0 -56
  375. package/dist/admin/views/folderList.d.ts.map +0 -1
  376. package/dist/admin/views/folderList.js +0 -3
  377. package/dist/admin/views/folderList.js.map +0 -1
  378. package/dist/folders/addFolderCollection.d.ts +0 -10
  379. package/dist/folders/addFolderCollection.d.ts.map +0 -1
  380. package/dist/folders/addFolderCollection.js +0 -26
  381. package/dist/folders/addFolderCollection.js.map +0 -1
  382. package/dist/folders/addFolderFieldToCollection.d.ts +0 -8
  383. package/dist/folders/addFolderFieldToCollection.d.ts.map +0 -1
  384. package/dist/folders/addFolderFieldToCollection.js +0 -20
  385. package/dist/folders/addFolderFieldToCollection.js.map +0 -1
  386. package/dist/folders/buildFolderField.d.ts +0 -8
  387. package/dist/folders/buildFolderField.d.ts.map +0 -1
  388. package/dist/folders/buildFolderField.js +0 -87
  389. package/dist/folders/buildFolderField.js.map +0 -1
  390. package/dist/folders/constants.d.ts +0 -3
  391. package/dist/folders/constants.d.ts.map +0 -1
  392. package/dist/folders/constants.js +0 -4
  393. package/dist/folders/constants.js.map +0 -1
  394. package/dist/folders/createFolderCollection.d.ts +0 -11
  395. package/dist/folders/createFolderCollection.d.ts.map +0 -1
  396. package/dist/folders/createFolderCollection.js +0 -115
  397. package/dist/folders/createFolderCollection.js.map +0 -1
  398. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +0 -8
  399. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +0 -1
  400. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +0 -15
  401. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +0 -1
  402. package/dist/folders/hooks/dissasociateAfterDelete.d.ts +0 -8
  403. package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +0 -1
  404. package/dist/folders/hooks/dissasociateAfterDelete.js +0 -20
  405. package/dist/folders/hooks/dissasociateAfterDelete.js.map +0 -1
  406. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +0 -5
  407. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
  408. package/dist/folders/hooks/ensureSafeCollectionsChange.js +0 -107
  409. package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +0 -1
  410. package/dist/folders/hooks/reparentChildFolder.d.ts +0 -24
  411. package/dist/folders/hooks/reparentChildFolder.d.ts.map +0 -1
  412. package/dist/folders/hooks/reparentChildFolder.js +0 -72
  413. package/dist/folders/hooks/reparentChildFolder.js.map +0 -1
  414. package/dist/folders/types.d.ts +0 -118
  415. package/dist/folders/types.d.ts.map +0 -1
  416. package/dist/folders/types.js.map +0 -1
  417. package/dist/folders/utils/buildFolderWhereConstraints.d.ts +0 -13
  418. package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +0 -1
  419. package/dist/folders/utils/buildFolderWhereConstraints.js +0 -45
  420. package/dist/folders/utils/buildFolderWhereConstraints.js.map +0 -1
  421. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +0 -12
  422. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +0 -1
  423. package/dist/folders/utils/formatFolderOrDocumentItem.js +0 -30
  424. package/dist/folders/utils/formatFolderOrDocumentItem.js.map +0 -1
  425. package/dist/folders/utils/getFolderBreadcrumbs.d.ts +0 -14
  426. package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +0 -1
  427. package/dist/folders/utils/getFolderBreadcrumbs.js +0 -45
  428. package/dist/folders/utils/getFolderBreadcrumbs.js.map +0 -1
  429. package/dist/folders/utils/getFolderData.d.ts +0 -33
  430. package/dist/folders/utils/getFolderData.d.ts.map +0 -1
  431. package/dist/folders/utils/getFolderData.js +0 -88
  432. package/dist/folders/utils/getFolderData.js.map +0 -1
  433. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +0 -24
  434. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +0 -1
  435. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +0 -66
  436. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +0 -1
  437. package/dist/folders/utils/getOrphanedDocs.d.ts +0 -15
  438. package/dist/folders/utils/getOrphanedDocs.d.ts.map +0 -1
  439. package/dist/folders/utils/getOrphanedDocs.js +0 -40
  440. package/dist/folders/utils/getOrphanedDocs.js.map +0 -1
  441. /package/dist/{folders → database/migrations/config}/types.js +0 -0
@@ -0,0 +1,155 @@
1
+ import type { PayloadComponent } from '../config/types.js';
2
+ import type { JoinField } from '../fields/config/types.js';
3
+ /**
4
+ * User-configurable options for the hierarchy join field.
5
+ * Excludes properties that are auto-generated: type, collection, on, hasMany
6
+ */
7
+ export type HierarchyJoinFieldConfig = {
8
+ name: string;
9
+ } & Omit<Partial<JoinField>, 'collection' | 'hasMany' | 'name' | 'on' | 'type'>;
10
+ /**
11
+ * Configuration options for hierarchy feature
12
+ *
13
+ * Hierarchies are always self-referential - documents can only nest under other documents
14
+ * from the same collection.
15
+ */
16
+ export type HierarchyConfig = {
17
+ /**
18
+ * UI configuration for hierarchy
19
+ */
20
+ admin?: {
21
+ /**
22
+ * Custom components for hierarchy UI
23
+ */
24
+ components?: {
25
+ /**
26
+ * Custom icon component for hierarchy items
27
+ */
28
+ Icon?: PayloadComponent;
29
+ };
30
+ /**
31
+ * Whether to inject a sidebar tab for this hierarchy collection
32
+ * @default true
33
+ */
34
+ injectSidebarTab?: boolean;
35
+ /**
36
+ * Maximum number of items to load in tree views
37
+ * @default 100
38
+ */
39
+ treeLimit?: number;
40
+ /**
41
+ * Whether to use a header button for parent selection instead of inline field.
42
+ * When true, the parent field is hidden and a button is injected into the document header.
43
+ * @default true
44
+ */
45
+ useHeaderButton?: boolean;
46
+ };
47
+ /**
48
+ * Whether related documents can have multiple values of this hierarchy
49
+ * Set to false for folder-like behavior (single parent), true for tag-like behavior (multiple)
50
+ * @default true
51
+ */
52
+ allowHasMany?: boolean;
53
+ /**
54
+ * Whether this hierarchy is scoped to specific collections
55
+ * When true or an object, hierarchy items can be restricted to certain collections
56
+ * @default false
57
+ */
58
+ collectionSpecific?: {
59
+ /**
60
+ * Name of the select field for specifying allowed collections
61
+ * @default 'hierarchyType'
62
+ */
63
+ fieldName?: string;
64
+ } | boolean;
65
+ /**
66
+ * Configure a join field to query all children (nested hierarchy items and related documents)
67
+ * If not set, no join field is created.
68
+ * You can pass additional JoinField options (admin, defaultLimit, defaultSort, etc.)
69
+ * that will be merged with the auto-generated config.
70
+ */
71
+ joinField?: HierarchyJoinFieldConfig;
72
+ /**
73
+ * Name of the field that references the parent document
74
+ * Will automatically create this field if it does not exist
75
+ * @default '_h_${collectionSlug}' (e.g., '_h_folders' for a collection with slug 'folders')
76
+ */
77
+ parentFieldName: string;
78
+ /**
79
+ * Name of the field to use for slug path generation.
80
+ * When set, uses this field's value directly instead of slugifying the title.
81
+ * Useful when you have a dedicated slug field (e.g., 'slug') separate from the title.
82
+ * @example 'slug' - uses the 'slug' field value as-is for path segments
83
+ */
84
+ slugField?: string;
85
+ /**
86
+ * Custom function to slugify text for path generation
87
+ * Used by computeSlugPath() utility for generating slug-based breadcrumb paths
88
+ * Only used when slugField is not set.
89
+ * Defaults to internal slugify implementation
90
+ */
91
+ slugify?: (text: string) => string;
92
+ /**
93
+ * Name of the virtual field that will contain the slug-based breadcrumb path
94
+ * @default HIERARCHY_SLUG_PATH_FIELD ('_h_slugPath')
95
+ */
96
+ slugPathFieldName?: string;
97
+ /**
98
+ * Name of the virtual field that will contain the title-based breadcrumb path
99
+ * @default HIERARCHY_TITLE_PATH_FIELD ('_h_titlePath')
100
+ */
101
+ titlePathFieldName?: string;
102
+ };
103
+ /**
104
+ * Sanitized hierarchy configuration with all defaults applied
105
+ */
106
+ export type SanitizedHierarchyConfig = {
107
+ admin: {
108
+ components: {
109
+ Icon: PayloadComponent;
110
+ };
111
+ injectSidebarTab: boolean;
112
+ treeLimit: number;
113
+ useHeaderButton: boolean;
114
+ };
115
+ allowHasMany: boolean;
116
+ collectionSpecific: {
117
+ fieldName: string;
118
+ } | false;
119
+ /**
120
+ * Join field configuration, or undefined if not enabled
121
+ */
122
+ joinField?: HierarchyJoinFieldConfig;
123
+ parentFieldName: string;
124
+ /**
125
+ * Auto-populated during validation - maps collection slug to field info
126
+ */
127
+ relatedCollections: Record<string, SanitizedHierarchyRelatedCollection>;
128
+ /**
129
+ * Field name for slug values, or undefined to use slugified title
130
+ */
131
+ slugField?: string;
132
+ slugify: (text: string) => string;
133
+ slugPathFieldName: string;
134
+ titlePathFieldName: string;
135
+ };
136
+ /**
137
+ * Information about how a collection relates to this hierarchy
138
+ */
139
+ export type SanitizedHierarchyRelatedCollection = {
140
+ fieldName: string;
141
+ hasMany: boolean;
142
+ };
143
+ /**
144
+ * Client-safe hierarchy configuration (excludes functions that can't cross server-client boundary)
145
+ */
146
+ export type ClientHierarchyConfig = Omit<SanitizedHierarchyConfig, 'slugify'>;
147
+ /**
148
+ * Breadcrumb item for folder hierarchies
149
+ * @deprecated Use hierarchy breadcrumbs instead
150
+ */
151
+ export type FolderBreadcrumb = {
152
+ id: number | string;
153
+ name: string;
154
+ };
155
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hierarchy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE;QACN;;WAEG;QACH,UAAU,CAAC,EAAE;YACX;;eAEG;YACH,IAAI,CAAC,EAAE,gBAAgB,CAAA;SACxB,CAAA;QACD;;;WAGG;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB;;;;WAIG;QACH,eAAe,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EACf;QACE;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACD,OAAO,CAAA;IACX;;;;;OAKG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAA;IACpC;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE;QACL,UAAU,EAAE;YACV,IAAI,EAAE,gBAAgB,CAAA;SACvB,CAAA;QACD,gBAAgB,EAAE,OAAO,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,eAAe,EAAE,OAAO,CAAA;KACzB,CAAA;IACD,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EACd;QACE,SAAS,EAAE,MAAM,CAAA;KAClB,GACD,KAAK,CAAA;IACT;;OAEG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAA;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAA;IACvE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACjC,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;AAE7E;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Breadcrumb item for folder hierarchies
3
+ * @deprecated Use hierarchy breadcrumbs instead
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hierarchy/types.ts"],"sourcesContent":["import type { PayloadComponent } from '../config/types.js'\nimport type { JoinField } from '../fields/config/types.js'\n\n/**\n * User-configurable options for the hierarchy join field.\n * Excludes properties that are auto-generated: type, collection, on, hasMany\n */\nexport type HierarchyJoinFieldConfig = {\n name: string\n} & Omit<Partial<JoinField>, 'collection' | 'hasMany' | 'name' | 'on' | 'type'>\n\n/**\n * Configuration options for hierarchy feature\n *\n * Hierarchies are always self-referential - documents can only nest under other documents\n * from the same collection.\n */\nexport type HierarchyConfig = {\n /**\n * UI configuration for hierarchy\n */\n admin?: {\n /**\n * Custom components for hierarchy UI\n */\n components?: {\n /**\n * Custom icon component for hierarchy items\n */\n Icon?: PayloadComponent\n }\n /**\n * Whether to inject a sidebar tab for this hierarchy collection\n * @default true\n */\n injectSidebarTab?: boolean\n /**\n * Maximum number of items to load in tree views\n * @default 100\n */\n treeLimit?: number\n /**\n * Whether to use a header button for parent selection instead of inline field.\n * When true, the parent field is hidden and a button is injected into the document header.\n * @default true\n */\n useHeaderButton?: boolean\n }\n /**\n * Whether related documents can have multiple values of this hierarchy\n * Set to false for folder-like behavior (single parent), true for tag-like behavior (multiple)\n * @default true\n */\n allowHasMany?: boolean\n /**\n * Whether this hierarchy is scoped to specific collections\n * When true or an object, hierarchy items can be restricted to certain collections\n * @default false\n */\n collectionSpecific?:\n | {\n /**\n * Name of the select field for specifying allowed collections\n * @default 'hierarchyType'\n */\n fieldName?: string\n }\n | boolean\n /**\n * Configure a join field to query all children (nested hierarchy items and related documents)\n * If not set, no join field is created.\n * You can pass additional JoinField options (admin, defaultLimit, defaultSort, etc.)\n * that will be merged with the auto-generated config.\n */\n joinField?: HierarchyJoinFieldConfig\n /**\n * Name of the field that references the parent document\n * Will automatically create this field if it does not exist\n * @default '_h_${collectionSlug}' (e.g., '_h_folders' for a collection with slug 'folders')\n */\n parentFieldName: string\n /**\n * Name of the field to use for slug path generation.\n * When set, uses this field's value directly instead of slugifying the title.\n * Useful when you have a dedicated slug field (e.g., 'slug') separate from the title.\n * @example 'slug' - uses the 'slug' field value as-is for path segments\n */\n slugField?: string\n /**\n * Custom function to slugify text for path generation\n * Used by computeSlugPath() utility for generating slug-based breadcrumb paths\n * Only used when slugField is not set.\n * Defaults to internal slugify implementation\n */\n slugify?: (text: string) => string\n /**\n * Name of the virtual field that will contain the slug-based breadcrumb path\n * @default HIERARCHY_SLUG_PATH_FIELD ('_h_slugPath')\n */\n slugPathFieldName?: string\n /**\n * Name of the virtual field that will contain the title-based breadcrumb path\n * @default HIERARCHY_TITLE_PATH_FIELD ('_h_titlePath')\n */\n titlePathFieldName?: string\n}\n\n/**\n * Sanitized hierarchy configuration with all defaults applied\n */\nexport type SanitizedHierarchyConfig = {\n admin: {\n components: {\n Icon: PayloadComponent\n }\n injectSidebarTab: boolean\n treeLimit: number\n useHeaderButton: boolean\n }\n allowHasMany: boolean\n collectionSpecific:\n | {\n fieldName: string\n }\n | false\n /**\n * Join field configuration, or undefined if not enabled\n */\n joinField?: HierarchyJoinFieldConfig\n parentFieldName: string\n /**\n * Auto-populated during validation - maps collection slug to field info\n */\n relatedCollections: Record<string, SanitizedHierarchyRelatedCollection>\n /**\n * Field name for slug values, or undefined to use slugified title\n */\n slugField?: string\n slugify: (text: string) => string\n slugPathFieldName: string\n titlePathFieldName: string\n}\n\n/**\n * Information about how a collection relates to this hierarchy\n */\nexport type SanitizedHierarchyRelatedCollection = {\n fieldName: string\n hasMany: boolean\n}\n\n/**\n * Client-safe hierarchy configuration (excludes functions that can't cross server-client boundary)\n */\nexport type ClientHierarchyConfig = Omit<SanitizedHierarchyConfig, 'slugify'>\n\n/**\n * Breadcrumb item for folder hierarchies\n * @deprecated Use hierarchy breadcrumbs instead\n */\nexport type FolderBreadcrumb = {\n id: number | string\n name: string\n}\n"],"names":[],"mappings":"AA4JA;;;CAGC,GACD,WAGC"}
@@ -0,0 +1,77 @@
1
+ import type { PayloadRequest } from '../../types/index.js';
2
+ type BuildLocalizedPathsArgs = {
3
+ /**
4
+ * Optional parent's slug paths by locale (e.g., { en: "/blog/tech", es: "/blog/tecnologia" })
5
+ * If provided, these paths will be prepended to the generated slug segments
6
+ */
7
+ parentSlugPath?: Record<string, string>;
8
+ /**
9
+ * Optional parent's title paths by locale (e.g., { en: "Blog / Tech", es: "Blog / Tecnología" })
10
+ * If provided, these paths will be prepended to the generated title segments
11
+ */
12
+ parentTitlePath?: Record<string, string>;
13
+ /**
14
+ * The Payload request object - used to access locale configuration and fallback settings
15
+ */
16
+ req: PayloadRequest;
17
+ /**
18
+ * Function to convert title text into URL-safe slug segments.
19
+ * Only used when slugValue is not provided.
20
+ */
21
+ slugify: (val: string) => string;
22
+ /**
23
+ * Optional pre-computed slug value by locale.
24
+ * When provided, uses these values directly instead of slugifying the title.
25
+ */
26
+ slugValue?: Record<string, string>;
27
+ /**
28
+ * The localized title value object (e.g., { en: "Home", es: "Inicio", de: "Startseite" })
29
+ */
30
+ titleValue: Record<string, string>;
31
+ };
32
+ type BuildLocalizedPathsResult = {
33
+ slugPath: Record<string, string>;
34
+ titlePath: Record<string, string>;
35
+ };
36
+ /**
37
+ * Builds localized slug and title paths for all configured locales.
38
+ * Applies proper fallback locale handling and optionally prepends parent paths.
39
+ *
40
+ * This utility is used when `locale: 'all'` is requested and the title field is localized,
41
+ * generating a path for each locale with proper fallback handling.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // Without parent (root document)
46
+ * buildLocalizedPaths({
47
+ * req,
48
+ * slugify: (val) => val.toLowerCase().replace(/\s/g, '-'),
49
+ * titleValue: { en: "Home", es: "Inicio", de: "" }
50
+ * })
51
+ * // Returns:
52
+ * // {
53
+ * // slugPath: { en: "home", es: "inicio", de: "home" }, // 'de' falls back to 'en'
54
+ * // titlePath: { en: "Home", es: "Inicio", de: "Home" }
55
+ * // }
56
+ *
57
+ * // With parent paths
58
+ * buildLocalizedPaths({
59
+ * parentSlugPath: { en: "/blog", es: "/blog" },
60
+ * parentTitlePath: { en: "Blog", es: "Blog" },
61
+ * req,
62
+ * slugify: (val) => val.toLowerCase().replace(/\s/g, '-'),
63
+ * titleValue: { en: "Tech News", es: "Noticias Tecnológicas" }
64
+ * })
65
+ * // Returns:
66
+ * // {
67
+ * // slugPath: { en: "/blog/tech-news", es: "/blog/noticias-tecnologicas" },
68
+ * // titlePath: { en: "Blog / Tech News", es: "Blog / Noticias Tecnológicas" }
69
+ * // }
70
+ * ```
71
+ *
72
+ * @param args - Configuration for building localized paths
73
+ * @returns Object containing slugPath and titlePath, each mapping locale codes to path strings
74
+ */
75
+ export declare function buildLocalizedHierarchyPaths(args: BuildLocalizedPathsArgs): BuildLocalizedPathsResult;
76
+ export {};
77
+ //# sourceMappingURL=buildLocalizedHierarchyPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildLocalizedHierarchyPaths.d.ts","sourceRoot":"","sources":["../../../src/hierarchy/utils/buildLocalizedHierarchyPaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D,KAAK,uBAAuB,GAAG;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC;;OAEG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB;;;OAGG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,uBAAuB,GAC5B,yBAAyB,CA6C3B"}
@@ -0,0 +1,77 @@
1
+ import { getLocalizedValue } from './getLocalizedValue.js';
2
+ /**
3
+ * Builds localized slug and title paths for all configured locales.
4
+ * Applies proper fallback locale handling and optionally prepends parent paths.
5
+ *
6
+ * This utility is used when `locale: 'all'` is requested and the title field is localized,
7
+ * generating a path for each locale with proper fallback handling.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * // Without parent (root document)
12
+ * buildLocalizedPaths({
13
+ * req,
14
+ * slugify: (val) => val.toLowerCase().replace(/\s/g, '-'),
15
+ * titleValue: { en: "Home", es: "Inicio", de: "" }
16
+ * })
17
+ * // Returns:
18
+ * // {
19
+ * // slugPath: { en: "home", es: "inicio", de: "home" }, // 'de' falls back to 'en'
20
+ * // titlePath: { en: "Home", es: "Inicio", de: "Home" }
21
+ * // }
22
+ *
23
+ * // With parent paths
24
+ * buildLocalizedPaths({
25
+ * parentSlugPath: { en: "/blog", es: "/blog" },
26
+ * parentTitlePath: { en: "Blog", es: "Blog" },
27
+ * req,
28
+ * slugify: (val) => val.toLowerCase().replace(/\s/g, '-'),
29
+ * titleValue: { en: "Tech News", es: "Noticias Tecnológicas" }
30
+ * })
31
+ * // Returns:
32
+ * // {
33
+ * // slugPath: { en: "/blog/tech-news", es: "/blog/noticias-tecnologicas" },
34
+ * // titlePath: { en: "Blog / Tech News", es: "Blog / Noticias Tecnológicas" }
35
+ * // }
36
+ * ```
37
+ *
38
+ * @param args - Configuration for building localized paths
39
+ * @returns Object containing slugPath and titlePath, each mapping locale codes to path strings
40
+ */ export function buildLocalizedHierarchyPaths(args) {
41
+ const { parentSlugPath, parentTitlePath, req, slugify, slugValue, titleValue } = args;
42
+ const slugPathsByLocale = {};
43
+ const titlePathsByLocale = {};
44
+ const locales = req.payload.config.localization ? req.payload.config.localization.localeCodes : [];
45
+ for (const loc of locales){
46
+ const localizedTitle = getLocalizedValue({
47
+ fallbackLocale: req.fallbackLocale,
48
+ fieldType: 'text',
49
+ locale: loc,
50
+ value: titleValue
51
+ });
52
+ if (localizedTitle) {
53
+ // Use provided slugValue if available, otherwise slugify the title
54
+ let slugSegment;
55
+ if (slugValue) {
56
+ const localizedSlug = getLocalizedValue({
57
+ fallbackLocale: req.fallbackLocale,
58
+ fieldType: 'text',
59
+ locale: loc,
60
+ value: slugValue
61
+ });
62
+ slugSegment = localizedSlug || slugify(localizedTitle);
63
+ } else {
64
+ slugSegment = slugify(localizedTitle);
65
+ }
66
+ const titleSegment = localizedTitle;
67
+ slugPathsByLocale[loc] = parentSlugPath ? `${parentSlugPath[loc]}/${slugSegment}` : slugSegment;
68
+ titlePathsByLocale[loc] = parentTitlePath ? `${parentTitlePath[loc]}/${titleSegment}` : titleSegment;
69
+ }
70
+ }
71
+ return {
72
+ slugPath: slugPathsByLocale,
73
+ titlePath: titlePathsByLocale
74
+ };
75
+ }
76
+
77
+ //# sourceMappingURL=buildLocalizedHierarchyPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hierarchy/utils/buildLocalizedHierarchyPaths.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\n\nimport { getLocalizedValue } from './getLocalizedValue.js'\n\ntype BuildLocalizedPathsArgs = {\n /**\n * Optional parent's slug paths by locale (e.g., { en: \"/blog/tech\", es: \"/blog/tecnologia\" })\n * If provided, these paths will be prepended to the generated slug segments\n */\n parentSlugPath?: Record<string, string>\n /**\n * Optional parent's title paths by locale (e.g., { en: \"Blog / Tech\", es: \"Blog / Tecnología\" })\n * If provided, these paths will be prepended to the generated title segments\n */\n parentTitlePath?: Record<string, string>\n /**\n * The Payload request object - used to access locale configuration and fallback settings\n */\n req: PayloadRequest\n /**\n * Function to convert title text into URL-safe slug segments.\n * Only used when slugValue is not provided.\n */\n slugify: (val: string) => string\n /**\n * Optional pre-computed slug value by locale.\n * When provided, uses these values directly instead of slugifying the title.\n */\n slugValue?: Record<string, string>\n /**\n * The localized title value object (e.g., { en: \"Home\", es: \"Inicio\", de: \"Startseite\" })\n */\n titleValue: Record<string, string>\n}\n\ntype BuildLocalizedPathsResult = {\n slugPath: Record<string, string>\n titlePath: Record<string, string>\n}\n\n/**\n * Builds localized slug and title paths for all configured locales.\n * Applies proper fallback locale handling and optionally prepends parent paths.\n *\n * This utility is used when `locale: 'all'` is requested and the title field is localized,\n * generating a path for each locale with proper fallback handling.\n *\n * @example\n * ```ts\n * // Without parent (root document)\n * buildLocalizedPaths({\n * req,\n * slugify: (val) => val.toLowerCase().replace(/\\s/g, '-'),\n * titleValue: { en: \"Home\", es: \"Inicio\", de: \"\" }\n * })\n * // Returns:\n * // {\n * // slugPath: { en: \"home\", es: \"inicio\", de: \"home\" }, // 'de' falls back to 'en'\n * // titlePath: { en: \"Home\", es: \"Inicio\", de: \"Home\" }\n * // }\n *\n * // With parent paths\n * buildLocalizedPaths({\n * parentSlugPath: { en: \"/blog\", es: \"/blog\" },\n * parentTitlePath: { en: \"Blog\", es: \"Blog\" },\n * req,\n * slugify: (val) => val.toLowerCase().replace(/\\s/g, '-'),\n * titleValue: { en: \"Tech News\", es: \"Noticias Tecnológicas\" }\n * })\n * // Returns:\n * // {\n * // slugPath: { en: \"/blog/tech-news\", es: \"/blog/noticias-tecnologicas\" },\n * // titlePath: { en: \"Blog / Tech News\", es: \"Blog / Noticias Tecnológicas\" }\n * // }\n * ```\n *\n * @param args - Configuration for building localized paths\n * @returns Object containing slugPath and titlePath, each mapping locale codes to path strings\n */\nexport function buildLocalizedHierarchyPaths(\n args: BuildLocalizedPathsArgs,\n): BuildLocalizedPathsResult {\n const { parentSlugPath, parentTitlePath, req, slugify, slugValue, titleValue } = args\n\n const slugPathsByLocale: Record<string, string> = {}\n const titlePathsByLocale: Record<string, string> = {}\n\n const locales = req.payload.config.localization ? req.payload.config.localization.localeCodes : []\n\n for (const loc of locales) {\n const localizedTitle = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: loc,\n value: titleValue,\n })\n\n if (localizedTitle) {\n // Use provided slugValue if available, otherwise slugify the title\n let slugSegment: string\n if (slugValue) {\n const localizedSlug = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: loc,\n value: slugValue,\n })\n slugSegment = localizedSlug || slugify(localizedTitle)\n } else {\n slugSegment = slugify(localizedTitle)\n }\n const titleSegment = localizedTitle\n\n slugPathsByLocale[loc] = parentSlugPath\n ? `${parentSlugPath[loc]}/${slugSegment}`\n : slugSegment\n titlePathsByLocale[loc] = parentTitlePath\n ? `${parentTitlePath[loc]}/${titleSegment}`\n : titleSegment\n }\n }\n\n return {\n slugPath: slugPathsByLocale,\n titlePath: titlePathsByLocale,\n }\n}\n"],"names":["getLocalizedValue","buildLocalizedHierarchyPaths","args","parentSlugPath","parentTitlePath","req","slugify","slugValue","titleValue","slugPathsByLocale","titlePathsByLocale","locales","payload","config","localization","localeCodes","loc","localizedTitle","fallbackLocale","fieldType","locale","value","slugSegment","localizedSlug","titleSegment","slugPath","titlePath"],"mappings":"AAEA,SAASA,iBAAiB,QAAQ,yBAAwB;AAsC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCC,GACD,OAAO,SAASC,6BACdC,IAA6B;IAE7B,MAAM,EAAEC,cAAc,EAAEC,eAAe,EAAEC,GAAG,EAAEC,OAAO,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGN;IAEjF,MAAMO,oBAA4C,CAAC;IACnD,MAAMC,qBAA6C,CAAC;IAEpD,MAAMC,UAAUN,IAAIO,OAAO,CAACC,MAAM,CAACC,YAAY,GAAGT,IAAIO,OAAO,CAACC,MAAM,CAACC,YAAY,CAACC,WAAW,GAAG,EAAE;IAElG,KAAK,MAAMC,OAAOL,QAAS;QACzB,MAAMM,iBAAiBjB,kBAAkB;YACvCkB,gBAAgBb,IAAIa,cAAc;YAClCC,WAAW;YACXC,QAAQJ;YACRK,OAAOb;QACT;QAEA,IAAIS,gBAAgB;YAClB,mEAAmE;YACnE,IAAIK;YACJ,IAAIf,WAAW;gBACb,MAAMgB,gBAAgBvB,kBAAkB;oBACtCkB,gBAAgBb,IAAIa,cAAc;oBAClCC,WAAW;oBACXC,QAAQJ;oBACRK,OAAOd;gBACT;gBACAe,cAAcC,iBAAiBjB,QAAQW;YACzC,OAAO;gBACLK,cAAchB,QAAQW;YACxB;YACA,MAAMO,eAAeP;YAErBR,iBAAiB,CAACO,IAAI,GAAGb,iBACrB,GAAGA,cAAc,CAACa,IAAI,CAAC,CAAC,EAAEM,aAAa,GACvCA;YACJZ,kBAAkB,CAACM,IAAI,GAAGZ,kBACtB,GAAGA,eAAe,CAACY,IAAI,CAAC,CAAC,EAAEQ,cAAc,GACzCA;QACN;IACF;IAEA,OAAO;QACLC,UAAUhB;QACViB,WAAWhB;IACb;AACF"}
@@ -0,0 +1,31 @@
1
+ import type { SanitizedCollectionConfig } from '../../collections/config/types.js';
2
+ import type { Document, PayloadRequest } from '../../types/index.js';
3
+ type ComputePathsArgs = {
4
+ collection: SanitizedCollectionConfig;
5
+ doc: Document;
6
+ draft?: boolean;
7
+ locale?: string;
8
+ parentFieldName: string;
9
+ req: PayloadRequest;
10
+ slugPathFieldName?: string;
11
+ titlePathFieldName?: string;
12
+ };
13
+ type ComputePathsResult = {
14
+ slugPath: Record<string, string> | string;
15
+ titlePath: Record<string, string> | string;
16
+ };
17
+ /**
18
+ * Computes both slug and title breadcrumb paths for a document by walking up the parent chain.
19
+ * More efficient than computing them separately since it only walks the chain once.
20
+ *
21
+ * Note: Ancestor fetches always use `overrideAccess: true` to ensure paths are complete.
22
+ * If a user can read a document, they should see its full breadcrumb path even if they
23
+ * cannot read all ancestor documents. This prevents broken breadcrumbs and provides
24
+ * better UX at the cost of minimal information leakage (ancestor titles in paths).
25
+ *
26
+ * @param args - Configuration for path computation
27
+ * @returns Object with slugPath and titlePath
28
+ */
29
+ export declare function computePaths(args: ComputePathsArgs): Promise<ComputePathsResult>;
30
+ export {};
31
+ //# sourceMappingURL=computePaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computePaths.d.ts","sourceRoot":"","sources":["../../../src/hierarchy/utils/computePaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQpE,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;CAC3C,CAAA;AAgFD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2dtF"}