payload 3.85.0 → 4.0.0-internal.1f9ae9a

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 (641) hide show
  1. package/README.md +5 -5
  2. package/dist/admin/RichText.d.ts +2 -7
  3. package/dist/admin/RichText.d.ts.map +1 -1
  4. package/dist/admin/RichText.js.map +1 -1
  5. package/dist/admin/adapters/cookies.d.ts +21 -0
  6. package/dist/admin/adapters/cookies.d.ts.map +1 -0
  7. package/dist/admin/adapters/cookies.js +3 -0
  8. package/dist/admin/adapters/cookies.js.map +1 -0
  9. package/dist/admin/adapters/index.d.ts +4 -0
  10. package/dist/admin/adapters/index.d.ts.map +1 -0
  11. package/dist/admin/adapters/index.js +3 -0
  12. package/dist/admin/adapters/index.js.map +1 -0
  13. package/dist/admin/adapters/router.d.ts +56 -0
  14. package/dist/admin/adapters/router.d.ts.map +1 -0
  15. package/dist/admin/adapters/router.js +3 -0
  16. package/dist/admin/adapters/router.js.map +1 -0
  17. package/dist/admin/adapters/server.d.ts +23 -0
  18. package/dist/admin/adapters/server.d.ts.map +1 -0
  19. package/dist/admin/adapters/server.js +6 -0
  20. package/dist/admin/adapters/server.js.map +1 -0
  21. package/dist/admin/elements/Nav.d.ts +13 -0
  22. package/dist/admin/elements/Nav.d.ts.map +1 -1
  23. package/dist/admin/elements/Nav.js.map +1 -1
  24. package/dist/admin/elements/Table.d.ts +1 -0
  25. package/dist/admin/elements/Table.d.ts.map +1 -1
  26. package/dist/admin/elements/Table.js.map +1 -1
  27. package/dist/admin/functions/index.d.ts +1 -38
  28. package/dist/admin/functions/index.d.ts.map +1 -1
  29. package/dist/admin/functions/index.js.map +1 -1
  30. package/dist/admin/types.d.ts +5 -4
  31. package/dist/admin/types.d.ts.map +1 -1
  32. package/dist/admin/types.js.map +1 -1
  33. package/dist/admin/views/hierarchyList.d.ts +10 -0
  34. package/dist/admin/views/hierarchyList.d.ts.map +1 -0
  35. package/dist/admin/views/hierarchyList.js +3 -0
  36. package/dist/admin/views/hierarchyList.js.map +1 -0
  37. package/dist/admin/views/index.d.ts +1 -3
  38. package/dist/admin/views/index.d.ts.map +1 -1
  39. package/dist/admin/views/index.js.map +1 -1
  40. package/dist/admin/views/list.d.ts +47 -2
  41. package/dist/admin/views/list.d.ts.map +1 -1
  42. package/dist/admin/views/list.js.map +1 -1
  43. package/dist/auth/cookies.d.ts.map +1 -1
  44. package/dist/auth/defaultAccess.d.ts.map +1 -1
  45. package/dist/auth/ensureUsernameOrEmail.d.ts.map +1 -1
  46. package/dist/auth/executeAccess.d.ts.map +1 -1
  47. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  48. package/dist/auth/extractAccessFromPermission.d.ts.map +1 -1
  49. package/dist/auth/extractJWT.d.ts.map +1 -1
  50. package/dist/auth/getAuthFields.d.ts.map +1 -1
  51. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  52. package/dist/auth/getLoginOptions.d.ts.map +1 -1
  53. package/dist/auth/isUserLocked.d.ts.map +1 -1
  54. package/dist/auth/jwt.d.ts.map +1 -1
  55. package/dist/auth/operations/access.d.ts.map +1 -1
  56. package/dist/auth/operations/auth.d.ts.map +1 -1
  57. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  58. package/dist/auth/operations/init.d.ts.map +1 -1
  59. package/dist/auth/operations/local/auth.d.ts.map +1 -1
  60. package/dist/auth/operations/login.d.ts.map +1 -1
  61. package/dist/auth/operations/logout.d.ts.map +1 -1
  62. package/dist/auth/operations/me.d.ts.map +1 -1
  63. package/dist/auth/operations/refresh.d.ts.map +1 -1
  64. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  65. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  66. package/dist/auth/operations/unlock.d.ts.map +1 -1
  67. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  68. package/dist/auth/sessions.d.ts.map +1 -1
  69. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  70. package/dist/auth/strategies/apiKey.js +6 -17
  71. package/dist/auth/strategies/apiKey.js.map +1 -1
  72. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  73. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
  74. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  75. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  76. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  77. package/dist/bin/build.d.ts +25 -0
  78. package/dist/bin/build.d.ts.map +1 -0
  79. package/dist/bin/build.js +80 -0
  80. package/dist/bin/build.js.map +1 -0
  81. package/dist/bin/build.spec.js +170 -0
  82. package/dist/bin/build.spec.js.map +1 -0
  83. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  84. package/dist/bin/generateImportMap/iterateCollections.js +1 -0
  85. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  86. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  87. package/dist/bin/generateImportMap/iterateConfig.js +7 -0
  88. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  89. package/dist/bin/generateImportMap/iterateFields.d.ts.map +1 -1
  90. package/dist/bin/generateImportMap/iterateFields.js +4 -1
  91. package/dist/bin/generateImportMap/iterateFields.js.map +1 -1
  92. package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -1
  93. package/dist/bin/generateImportMap/iterateGlobals.js +20 -8
  94. package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -1
  95. package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.map +1 -1
  96. package/dist/bin/index.d.ts.map +1 -1
  97. package/dist/bin/index.js +10 -3
  98. package/dist/bin/index.js.map +1 -1
  99. package/dist/bin/migrate.d.ts.map +1 -1
  100. package/dist/collections/config/client.d.ts +4 -2
  101. package/dist/collections/config/client.d.ts.map +1 -1
  102. package/dist/collections/config/client.js +13 -1
  103. package/dist/collections/config/client.js.map +1 -1
  104. package/dist/collections/config/defaults.d.ts.map +1 -1
  105. package/dist/collections/config/defaults.js +1 -1
  106. package/dist/collections/config/defaults.js.map +1 -1
  107. package/dist/collections/config/sanitize.d.ts +10 -1
  108. package/dist/collections/config/sanitize.d.ts.map +1 -1
  109. package/dist/collections/config/sanitize.js +51 -10
  110. package/dist/collections/config/sanitize.js.map +1 -1
  111. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  112. package/dist/collections/config/types.d.ts +76 -91
  113. package/dist/collections/config/types.d.ts.map +1 -1
  114. package/dist/collections/config/types.js.map +1 -1
  115. package/dist/collections/config/useAsTitle.d.ts.map +1 -1
  116. package/dist/collections/dataloader.d.ts.map +1 -1
  117. package/dist/collections/operations/count.d.ts.map +1 -1
  118. package/dist/collections/operations/countVersions.d.ts.map +1 -1
  119. package/dist/collections/operations/create.d.ts.map +1 -1
  120. package/dist/collections/operations/create.js +25 -19
  121. package/dist/collections/operations/create.js.map +1 -1
  122. package/dist/collections/operations/delete.d.ts.map +1 -1
  123. package/dist/collections/operations/delete.js +7 -2
  124. package/dist/collections/operations/delete.js.map +1 -1
  125. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  126. package/dist/collections/operations/deleteByID.js +7 -2
  127. package/dist/collections/operations/deleteByID.js.map +1 -1
  128. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  129. package/dist/collections/operations/find.d.ts.map +1 -1
  130. package/dist/collections/operations/find.js +7 -2
  131. package/dist/collections/operations/find.js.map +1 -1
  132. package/dist/collections/operations/findByID.d.ts.map +1 -1
  133. package/dist/collections/operations/findByID.js +10 -5
  134. package/dist/collections/operations/findByID.js.map +1 -1
  135. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  136. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  137. package/dist/collections/operations/findVersionByID.js +6 -4
  138. package/dist/collections/operations/findVersionByID.js.map +1 -1
  139. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  140. package/dist/collections/operations/findVersions.js +6 -4
  141. package/dist/collections/operations/findVersions.js.map +1 -1
  142. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  143. package/dist/collections/operations/restoreVersion.js +7 -2
  144. package/dist/collections/operations/restoreVersion.js.map +1 -1
  145. package/dist/collections/operations/update.d.ts.map +1 -1
  146. package/dist/collections/operations/update.js +7 -2
  147. package/dist/collections/operations/update.js.map +1 -1
  148. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  149. package/dist/collections/operations/updateByID.js +7 -2
  150. package/dist/collections/operations/updateByID.js.map +1 -1
  151. package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -1
  152. package/dist/collections/operations/utilities/sanitizeSortQuery.d.ts.map +1 -1
  153. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  154. package/dist/collections/operations/utilities/update.js +21 -12
  155. package/dist/collections/operations/utilities/update.js.map +1 -1
  156. package/dist/config/build.d.ts.map +1 -1
  157. package/dist/config/build.js +8 -0
  158. package/dist/config/build.js.map +1 -1
  159. package/dist/config/client.d.ts +1 -1
  160. package/dist/config/client.d.ts.map +1 -1
  161. package/dist/config/client.js +2 -11
  162. package/dist/config/client.js.map +1 -1
  163. package/dist/config/defaults.d.ts.map +1 -1
  164. package/dist/config/defaults.js +0 -15
  165. package/dist/config/defaults.js.map +1 -1
  166. package/dist/config/orderable/index.d.ts.map +1 -1
  167. package/dist/config/orderable/index.js +0 -4
  168. package/dist/config/orderable/index.js.map +1 -1
  169. package/dist/config/sanitize.d.ts.map +1 -1
  170. package/dist/config/sanitize.js +6 -53
  171. package/dist/config/sanitize.js.map +1 -1
  172. package/dist/config/types.d.ts +188 -32
  173. package/dist/config/types.d.ts.map +1 -1
  174. package/dist/config/types.js.map +1 -1
  175. package/dist/database/combineQueries.d.ts.map +1 -1
  176. package/dist/database/migrations/findMigrationDir.d.ts.map +1 -1
  177. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -1
  178. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  179. package/dist/database/migrations/templates/localizeStatus.d.ts.map +1 -1
  180. package/dist/database/migrations/writeMigrationIndex.d.ts.map +1 -1
  181. package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
  182. package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
  183. package/dist/duplicateDocument/index.d.ts.map +1 -1
  184. package/dist/email/getStringifiedToAddress.d.ts.map +1 -1
  185. package/dist/email/types.d.ts +2 -7
  186. package/dist/email/types.d.ts.map +1 -1
  187. package/dist/email/types.js.map +1 -1
  188. package/dist/exports/shared.d.ts +6 -3
  189. package/dist/exports/shared.d.ts.map +1 -1
  190. package/dist/exports/shared.js +4 -2
  191. package/dist/exports/shared.js.map +1 -1
  192. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  193. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  194. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  195. package/dist/fields/baseFields/slug/index.js +7 -5
  196. package/dist/fields/baseFields/slug/index.js.map +1 -1
  197. package/dist/fields/config/client.d.ts +1 -1
  198. package/dist/fields/config/client.d.ts.map +1 -1
  199. package/dist/fields/config/client.js +4 -3
  200. package/dist/fields/config/client.js.map +1 -1
  201. package/dist/fields/config/sanitize.d.ts.map +1 -1
  202. package/dist/fields/config/sanitize.js +13 -20
  203. package/dist/fields/config/sanitize.js.map +1 -1
  204. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  205. package/dist/fields/config/sanitizeJoinField.js +3 -0
  206. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  207. package/dist/fields/config/types.d.ts +40 -114
  208. package/dist/fields/config/types.d.ts.map +1 -1
  209. package/dist/fields/config/types.js +12 -2
  210. package/dist/fields/config/types.js.map +1 -1
  211. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  212. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  213. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  214. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  215. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  216. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  217. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  218. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  219. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
  220. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  222. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  223. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  224. package/dist/fields/hooks/beforeDuplicate/index.d.ts.map +1 -1
  225. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  226. package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
  227. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  228. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  229. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  230. package/dist/fields/isFieldDisabled.d.ts +12 -0
  231. package/dist/fields/isFieldDisabled.d.ts.map +1 -0
  232. package/dist/fields/isFieldDisabled.js +15 -0
  233. package/dist/fields/isFieldDisabled.js.map +1 -0
  234. package/dist/fields/isFieldDisabled.spec.js +134 -0
  235. package/dist/fields/isFieldDisabled.spec.js.map +1 -0
  236. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  237. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  238. package/dist/fields/validations.js +1 -1
  239. package/dist/fields/validations.js.map +1 -1
  240. package/dist/globals/config/client.d.ts +1 -1
  241. package/dist/globals/config/client.d.ts.map +1 -1
  242. package/dist/globals/config/client.js +2 -1
  243. package/dist/globals/config/client.js.map +1 -1
  244. package/dist/globals/config/sanitize.d.ts +6 -1
  245. package/dist/globals/config/sanitize.d.ts.map +1 -1
  246. package/dist/globals/config/sanitize.js +6 -2
  247. package/dist/globals/config/sanitize.js.map +1 -1
  248. package/dist/globals/config/types.d.ts +4 -57
  249. package/dist/globals/config/types.d.ts.map +1 -1
  250. package/dist/globals/config/types.js.map +1 -1
  251. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  252. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  253. package/dist/globals/operations/findOne.d.ts.map +1 -1
  254. package/dist/globals/operations/findOne.js +7 -2
  255. package/dist/globals/operations/findOne.js.map +1 -1
  256. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  257. package/dist/globals/operations/findVersionByID.js +6 -4
  258. package/dist/globals/operations/findVersionByID.js.map +1 -1
  259. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  260. package/dist/globals/operations/findVersions.js +6 -4
  261. package/dist/globals/operations/findVersions.js.map +1 -1
  262. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  263. package/dist/globals/operations/update.d.ts.map +1 -1
  264. package/dist/globals/operations/update.js +7 -2
  265. package/dist/globals/operations/update.js.map +1 -1
  266. package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
  267. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
  268. package/dist/hierarchy/addHierarchyToCollection.js +76 -0
  269. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
  270. package/dist/hierarchy/buildParentField.d.ts +11 -0
  271. package/dist/hierarchy/buildParentField.d.ts.map +1 -0
  272. package/dist/hierarchy/buildParentField.js +42 -0
  273. package/dist/hierarchy/buildParentField.js.map +1 -0
  274. package/dist/hierarchy/constants.d.ts +15 -0
  275. package/dist/hierarchy/constants.d.ts.map +1 -0
  276. package/dist/hierarchy/constants.js +11 -0
  277. package/dist/hierarchy/constants.js.map +1 -0
  278. package/dist/hierarchy/createFolderField.d.ts +39 -0
  279. package/dist/hierarchy/createFolderField.d.ts.map +1 -0
  280. package/dist/hierarchy/createFolderField.js +54 -0
  281. package/dist/hierarchy/createFolderField.js.map +1 -0
  282. package/dist/hierarchy/createTagField.d.ts +44 -0
  283. package/dist/hierarchy/createTagField.d.ts.map +1 -0
  284. package/dist/hierarchy/createTagField.js +48 -0
  285. package/dist/hierarchy/createTagField.js.map +1 -0
  286. package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
  287. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
  288. package/dist/hierarchy/getInitialTreeData.js +125 -0
  289. package/dist/hierarchy/getInitialTreeData.js.map +1 -0
  290. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
  291. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
  292. package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
  293. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
  294. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
  295. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
  296. package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
  297. package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
  298. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
  299. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
  300. package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
  301. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
  302. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
  303. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
  304. package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
  305. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
  306. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
  307. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
  308. package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
  309. package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
  310. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
  311. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  312. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
  313. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
  314. package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
  315. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
  316. package/dist/hierarchy/injectHierarchyButton.js +37 -0
  317. package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
  318. package/dist/hierarchy/presets.d.ts +13 -0
  319. package/dist/hierarchy/presets.d.ts.map +1 -0
  320. package/dist/hierarchy/presets.js +52 -0
  321. package/dist/hierarchy/presets.js.map +1 -0
  322. package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
  323. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
  324. package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
  325. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
  326. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
  327. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
  328. package/dist/hierarchy/sanitizeHierarchyCollection.js +119 -0
  329. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
  330. package/dist/hierarchy/types.d.ts +162 -0
  331. package/dist/hierarchy/types.d.ts.map +1 -0
  332. package/dist/hierarchy/types.js +6 -0
  333. package/dist/hierarchy/types.js.map +1 -0
  334. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
  335. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
  336. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
  337. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
  338. package/dist/hierarchy/utils/computePaths.d.ts +31 -0
  339. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
  340. package/dist/hierarchy/utils/computePaths.js +445 -0
  341. package/dist/hierarchy/utils/computePaths.js.map +1 -0
  342. package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
  343. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
  344. package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
  345. package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
  346. package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
  347. package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
  348. package/dist/hierarchy/utils/getAncestors.js +94 -0
  349. package/dist/hierarchy/utils/getAncestors.js.map +1 -0
  350. package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
  351. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
  352. package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
  353. package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
  354. package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
  355. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
  356. package/dist/index.bundled.d.ts +968 -637
  357. package/dist/index.d.ts +31 -9
  358. package/dist/index.d.ts.map +1 -1
  359. package/dist/index.js +14 -14
  360. package/dist/index.js.map +1 -1
  361. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  362. package/dist/locked-documents/config.d.ts.map +1 -1
  363. package/dist/preferences/config.d.ts.map +1 -1
  364. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  365. package/dist/preferences/keys.d.ts +8 -4
  366. package/dist/preferences/keys.d.ts.map +1 -1
  367. package/dist/preferences/keys.js +7 -4
  368. package/dist/preferences/keys.js.map +1 -1
  369. package/dist/preferences/types.d.ts +1 -1
  370. package/dist/preferences/types.d.ts.map +1 -1
  371. package/dist/preferences/types.js.map +1 -1
  372. package/dist/query-presets/access.d.ts.map +1 -1
  373. package/dist/query-presets/config.d.ts.map +1 -1
  374. package/dist/query-presets/config.js +11 -7
  375. package/dist/query-presets/config.js.map +1 -1
  376. package/dist/query-presets/constraints.d.ts.map +1 -1
  377. package/dist/query-presets/constraints.js +1 -1
  378. package/dist/query-presets/constraints.js.map +1 -1
  379. package/dist/queues/config/types/index.d.ts +0 -21
  380. package/dist/queues/config/types/index.d.ts.map +1 -1
  381. package/dist/queues/config/types/index.js.map +1 -1
  382. package/dist/queues/config/types/taskTypes.d.ts +0 -20
  383. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  384. package/dist/queues/config/types/taskTypes.js.map +1 -1
  385. package/dist/queues/endpoints/run.d.ts.map +1 -1
  386. package/dist/queues/localAPI.d.ts.map +1 -1
  387. package/dist/queues/localAPI.js +26 -67
  388. package/dist/queues/localAPI.js.map +1 -1
  389. package/dist/queues/operations/handleSchedules/getQueuesWithSchedules.d.ts.map +1 -1
  390. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  391. package/dist/queues/operations/handleSchedules/index.js +1 -4
  392. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  393. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  394. package/dist/queues/operations/runJobs/index.js +7 -27
  395. package/dist/queues/operations/runJobs/index.js.map +1 -1
  396. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  397. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  398. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +3 -22
  399. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  400. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  401. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +0 -2
  402. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  403. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
  404. package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -1
  405. package/dist/queues/utilities/updateJob.d.ts +1 -3
  406. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  407. package/dist/queues/utilities/updateJob.js +2 -18
  408. package/dist/queues/utilities/updateJob.js.map +1 -1
  409. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  410. package/dist/types/index.d.ts +54 -5
  411. package/dist/types/index.d.ts.map +1 -1
  412. package/dist/types/index.js.map +1 -1
  413. package/dist/uploads/checkFileAccess.d.ts.map +1 -1
  414. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  415. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  416. package/dist/uploads/endpoints/getFileFromURL.d.ts.map +1 -1
  417. package/dist/uploads/endpoints/getFileFromURL.js +9 -5
  418. package/dist/uploads/endpoints/getFileFromURL.js.map +1 -1
  419. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -1
  420. package/dist/uploads/fetchAPI-multipart/processNested.d.ts.map +1 -1
  421. package/dist/uploads/fetchAPI-multipart/utilities.d.ts.map +1 -1
  422. package/dist/uploads/fileExists.d.ts.map +1 -1
  423. package/dist/uploads/generateFileData.d.ts +2 -1
  424. package/dist/uploads/generateFileData.d.ts.map +1 -1
  425. package/dist/uploads/generateFileData.js +5 -2
  426. package/dist/uploads/generateFileData.js.map +1 -1
  427. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  428. package/dist/uploads/getBaseFields.js +24 -70
  429. package/dist/uploads/getBaseFields.js.map +1 -1
  430. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  431. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  432. package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
  433. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  434. package/dist/uploads/image-resizing/createImageSize.d.ts.map +1 -1
  435. package/dist/uploads/image-resizing/generateImageSizeFilename.d.ts.map +1 -1
  436. package/dist/uploads/image-resizing/getImageResizeAction.d.ts.map +1 -1
  437. package/dist/uploads/image-resizing/parseFilename.d.ts.map +1 -1
  438. package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts.map +1 -1
  439. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  440. package/dist/uploads/safeFetch.d.ts +1 -1
  441. package/dist/uploads/safeFetch.d.ts.map +1 -1
  442. package/dist/uploads/saveBufferToFile.d.ts.map +1 -1
  443. package/dist/uploads/tempFile.d.ts.map +1 -1
  444. package/dist/uploads/types.d.ts +12 -29
  445. package/dist/uploads/types.d.ts.map +1 -1
  446. package/dist/uploads/types.js.map +1 -1
  447. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  448. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  449. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  450. package/dist/utilities/appendDateTimezoneSelectFields.d.ts +13 -0
  451. package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -0
  452. package/dist/utilities/appendDateTimezoneSelectFields.js +47 -0
  453. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -0
  454. package/dist/utilities/appendNonTrashedFilter.d.ts.map +1 -1
  455. package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
  456. package/dist/utilities/appendUploadSelectFields.js +3 -0
  457. package/dist/utilities/appendUploadSelectFields.js.map +1 -1
  458. package/dist/utilities/canAccessAdmin.d.ts.map +1 -1
  459. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  460. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  461. package/dist/utilities/configToJSONSchema.js +46 -28
  462. package/dist/utilities/configToJSONSchema.js.map +1 -1
  463. package/dist/utilities/configToJSONSchema.spec.js +86 -57
  464. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  465. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  466. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  467. package/dist/utilities/dependencies/resolveFrom.d.ts.map +1 -1
  468. package/dist/utilities/escapeRegExp.d.ts.map +1 -1
  469. package/dist/utilities/extractID.d.ts.map +1 -1
  470. package/dist/utilities/extractID.js +1 -1
  471. package/dist/utilities/extractID.js.map +1 -1
  472. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  473. package/dist/utilities/formatAdminURL.d.ts +13 -2
  474. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  475. package/dist/utilities/formatAdminURL.js.map +1 -1
  476. package/dist/utilities/formatErrors.d.ts.map +1 -1
  477. package/dist/utilities/formatLabels.d.ts.map +1 -1
  478. package/dist/utilities/getBestFitFromSizes.d.ts.map +1 -1
  479. package/dist/utilities/getBlockSelect.d.ts.map +1 -1
  480. package/dist/utilities/getDataByPath.d.ts.map +1 -1
  481. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  482. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  483. package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
  484. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  485. package/dist/utilities/getRequestEntity.d.ts.map +1 -1
  486. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  487. package/dist/utilities/getRequestOrigin.d.ts.map +1 -1
  488. package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
  489. package/dist/utilities/getSelectMode.d.ts.map +1 -1
  490. package/dist/utilities/getSiblingData.d.ts.map +1 -1
  491. package/dist/utilities/getTranslatedLabel.d.ts.map +1 -1
  492. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  493. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  494. package/dist/utilities/handleEndpoints.js +0 -2
  495. package/dist/utilities/handleEndpoints.js.map +1 -1
  496. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  497. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  498. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  499. package/dist/utilities/isValidID.d.ts.map +1 -1
  500. package/dist/utilities/logError.d.ts.map +1 -1
  501. package/dist/utilities/logger.d.ts.map +1 -1
  502. package/dist/utilities/mergeHeaders.d.ts.map +1 -1
  503. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -1
  504. package/dist/utilities/optionsAreEqual.d.ts.map +1 -1
  505. package/dist/utilities/parseBooleanString.d.ts.map +1 -1
  506. package/dist/utilities/parseCookies.d.ts.map +1 -1
  507. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  508. package/dist/utilities/profiling.d.ts.map +1 -1
  509. package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
  510. package/dist/utilities/resolveSelect.d.ts +16 -0
  511. package/dist/utilities/resolveSelect.d.ts.map +1 -0
  512. package/dist/utilities/resolveSelect.js +19 -0
  513. package/dist/utilities/resolveSelect.js.map +1 -0
  514. package/dist/utilities/routeError.d.ts.map +1 -1
  515. package/dist/utilities/sanitizeFallbackLocale.d.ts.map +1 -1
  516. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  517. package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
  518. package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
  519. package/dist/utilities/sanitizeSelect.d.ts +1 -2
  520. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  521. package/dist/utilities/sanitizeSelect.js +19 -25
  522. package/dist/utilities/sanitizeSelect.js.map +1 -1
  523. package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
  524. package/dist/utilities/sanitizeSortParams.d.ts.map +1 -1
  525. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  526. package/dist/utilities/slugify.d.ts.map +1 -1
  527. package/dist/utilities/stripUnselectedFields.d.ts.map +1 -1
  528. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  529. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  530. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  531. package/dist/utilities/telemetry/oneWayHash.d.ts.map +1 -1
  532. package/dist/utilities/timestamp.d.ts.map +1 -1
  533. package/dist/utilities/toKebabCase.d.ts.map +1 -1
  534. package/dist/utilities/transformColumnPreferences.d.ts.map +1 -1
  535. package/dist/utilities/transformWhereQuery.d.ts.map +1 -1
  536. package/dist/utilities/traverseFields.d.ts.map +1 -1
  537. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  538. package/dist/utilities/unflatten.d.ts.map +1 -1
  539. package/dist/utilities/validateMimeType.d.ts.map +1 -1
  540. package/dist/utilities/validateTimezones.d.ts.map +1 -1
  541. package/dist/utilities/validateWhereQuery.d.ts.map +1 -1
  542. package/dist/utilities/wordBoundariesRegex.d.ts.map +1 -1
  543. package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
  544. package/dist/versions/baseFields.d.ts.map +1 -1
  545. package/dist/versions/baseFields.js +3 -2
  546. package/dist/versions/baseFields.js.map +1 -1
  547. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  548. package/dist/versions/buildCollectionFields.js +0 -1
  549. package/dist/versions/buildCollectionFields.js.map +1 -1
  550. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  551. package/dist/versions/buildGlobalFields.js +0 -1
  552. package/dist/versions/buildGlobalFields.js.map +1 -1
  553. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  554. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  555. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  556. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  557. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -1
  558. package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
  559. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  560. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  561. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  562. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  563. package/dist/versions/migrations/localizeStatus/shared.d.ts.map +1 -1
  564. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  565. package/dist/versions/payloadPackageList.js +0 -1
  566. package/dist/versions/payloadPackageList.js.map +1 -1
  567. package/dist/versions/saveSnapshot.d.ts.map +1 -1
  568. package/dist/versions/schedule/job.d.ts.map +1 -1
  569. package/package.json +20 -20
  570. package/dist/admin/views/folderList.d.ts +0 -56
  571. package/dist/admin/views/folderList.d.ts.map +0 -1
  572. package/dist/admin/views/folderList.js +0 -3
  573. package/dist/admin/views/folderList.js.map +0 -1
  574. package/dist/email/normalizeSendEmailOptions.d.ts +0 -13
  575. package/dist/email/normalizeSendEmailOptions.d.ts.map +0 -1
  576. package/dist/email/normalizeSendEmailOptions.js +0 -20
  577. package/dist/email/normalizeSendEmailOptions.js.map +0 -1
  578. package/dist/folders/addFolderCollection.d.ts +0 -10
  579. package/dist/folders/addFolderCollection.d.ts.map +0 -1
  580. package/dist/folders/addFolderCollection.js +0 -26
  581. package/dist/folders/addFolderCollection.js.map +0 -1
  582. package/dist/folders/addFolderFieldToCollection.d.ts +0 -8
  583. package/dist/folders/addFolderFieldToCollection.d.ts.map +0 -1
  584. package/dist/folders/addFolderFieldToCollection.js +0 -20
  585. package/dist/folders/addFolderFieldToCollection.js.map +0 -1
  586. package/dist/folders/buildFolderField.d.ts +0 -8
  587. package/dist/folders/buildFolderField.d.ts.map +0 -1
  588. package/dist/folders/buildFolderField.js +0 -87
  589. package/dist/folders/buildFolderField.js.map +0 -1
  590. package/dist/folders/constants.d.ts +0 -3
  591. package/dist/folders/constants.d.ts.map +0 -1
  592. package/dist/folders/constants.js +0 -4
  593. package/dist/folders/constants.js.map +0 -1
  594. package/dist/folders/createFolderCollection.d.ts +0 -11
  595. package/dist/folders/createFolderCollection.d.ts.map +0 -1
  596. package/dist/folders/createFolderCollection.js +0 -115
  597. package/dist/folders/createFolderCollection.js.map +0 -1
  598. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +0 -8
  599. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +0 -1
  600. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +0 -15
  601. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +0 -1
  602. package/dist/folders/hooks/dissasociateAfterDelete.d.ts +0 -8
  603. package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +0 -1
  604. package/dist/folders/hooks/dissasociateAfterDelete.js +0 -20
  605. package/dist/folders/hooks/dissasociateAfterDelete.js.map +0 -1
  606. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +0 -5
  607. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
  608. package/dist/folders/hooks/ensureSafeCollectionsChange.js +0 -107
  609. package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +0 -1
  610. package/dist/folders/hooks/reparentChildFolder.d.ts +0 -24
  611. package/dist/folders/hooks/reparentChildFolder.d.ts.map +0 -1
  612. package/dist/folders/hooks/reparentChildFolder.js +0 -72
  613. package/dist/folders/hooks/reparentChildFolder.js.map +0 -1
  614. package/dist/folders/types.d.ts +0 -118
  615. package/dist/folders/types.d.ts.map +0 -1
  616. package/dist/folders/types.js +0 -3
  617. package/dist/folders/types.js.map +0 -1
  618. package/dist/folders/utils/buildFolderWhereConstraints.d.ts +0 -13
  619. package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +0 -1
  620. package/dist/folders/utils/buildFolderWhereConstraints.js +0 -45
  621. package/dist/folders/utils/buildFolderWhereConstraints.js.map +0 -1
  622. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +0 -12
  623. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +0 -1
  624. package/dist/folders/utils/formatFolderOrDocumentItem.js +0 -30
  625. package/dist/folders/utils/formatFolderOrDocumentItem.js.map +0 -1
  626. package/dist/folders/utils/getFolderBreadcrumbs.d.ts +0 -14
  627. package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +0 -1
  628. package/dist/folders/utils/getFolderBreadcrumbs.js +0 -45
  629. package/dist/folders/utils/getFolderBreadcrumbs.js.map +0 -1
  630. package/dist/folders/utils/getFolderData.d.ts +0 -33
  631. package/dist/folders/utils/getFolderData.d.ts.map +0 -1
  632. package/dist/folders/utils/getFolderData.js +0 -88
  633. package/dist/folders/utils/getFolderData.js.map +0 -1
  634. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +0 -24
  635. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +0 -1
  636. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +0 -66
  637. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +0 -1
  638. package/dist/folders/utils/getOrphanedDocs.d.ts +0 -15
  639. package/dist/folders/utils/getOrphanedDocs.d.ts.map +0 -1
  640. package/dist/folders/utils/getOrphanedDocs.js +0 -40
  641. package/dist/folders/utils/getOrphanedDocs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/shared.ts"],"sourcesContent":["export {\n generateCookie,\n generateExpiredPayloadCookie,\n generatePayloadCookie,\n getCookieExpiration,\n parseCookies,\n} from '../auth/cookies.js'\n\nexport { getLoginOptions } from '../auth/getLoginOptions.js'\nexport { addSessionToUser, removeExpiredSessions } from '../auth/sessions.js'\nexport { getFromImportMap } from '../bin/generateImportMap/utilities/getFromImportMap.js'\nexport { parsePayloadComponent } from '../bin/generateImportMap/utilities/parsePayloadComponent.js'\nexport { defaults as collectionDefaults } from '../collections/config/defaults.js'\nexport {\n BASE_36_DIGITS,\n generateKeyBetween,\n generateNKeysBetween,\n} from '../config/orderable/fractional-indexing.js'\n\nexport { serverProps } from '../config/types.js'\n\nexport { type Slugify } from '../fields/baseFields/slug/index.js'\n\nexport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\n\nexport {\n fieldAffectsData,\n fieldHasMaxDepth,\n fieldHasSubFields,\n fieldIsArrayType,\n fieldIsBlockType,\n fieldIsGroupType,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n fieldIsPresentationalOnly,\n fieldIsSidebar,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n fieldSupportsMany,\n groupHasName,\n optionIsObject,\n optionIsValue,\n optionsAreObjects,\n tabHasName,\n valueIsValueWithRelation,\n} from '../fields/config/types.js'\n\nexport { getFieldPaths } from '../fields/getFieldPaths.js'\nexport * from '../fields/validations.js'\n\nexport type {\n FolderBreadcrumb,\n FolderDocumentItemKey,\n FolderEnabledColection,\n FolderInterface,\n FolderOrDocument,\n GetFolderDataResult,\n Subfolder,\n} from '../folders/types.js'\n\nexport { buildFolderWhereConstraints } from '../folders/utils/buildFolderWhereConstraints.js'\nexport { formatFolderOrDocumentItem } from '../folders/utils/formatFolderOrDocumentItem.js'\nexport { PREFERENCE_KEYS } from '../preferences/keys.js'\n\nexport { validOperators, validOperatorSet } from '../types/constants.js'\n\nexport { formatFilesize } from '../uploads/formatFilesize.js'\nexport { isImage } from '../uploads/isImage.js'\nexport { appendUploadSelectFields } from '../utilities/appendUploadSelectFields.js'\nexport { applyLocaleFiltering } from '../utilities/applyLocaleFiltering.js'\n\nexport { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'\n\nexport {\n deepCopyObject,\n deepCopyObjectComplex,\n deepCopyObjectSimple,\n deepCopyObjectSimpleWithoutReactComponents,\n} from '../utilities/deepCopyObject.js'\nexport {\n deepMerge,\n deepMergeWithCombinedArrays,\n deepMergeWithReactComponents,\n deepMergeWithSourceArrays,\n} from '../utilities/deepMerge.js'\n\nexport { extractID } from '../utilities/extractID.js'\n\nexport { flattenAllFields } from '../utilities/flattenAllFields.js'\nexport { flattenTopLevelFields } from '../utilities/flattenTopLevelFields.js'\nexport { formatAdminURL } from '../utilities/formatAdminURL.js'\nexport { formatLabels, toWords } from '../utilities/formatLabels.js'\n\nexport { getBestFitFromSizes } from '../utilities/getBestFitFromSizes.js'\nexport { getDataByPath } from '../utilities/getDataByPath.js'\nexport { getFieldPermissions } from '../utilities/getFieldPermissions.js'\nexport { getObjectDotNotation } from '../utilities/getObjectDotNotation.js'\n\nexport { getSafeRedirect } from '../utilities/getSafeRedirect.js'\n\nexport { getSelectMode } from '../utilities/getSelectMode.js'\n\nexport { getSiblingData } from '../utilities/getSiblingData.js'\n\nexport { getUniqueListBy } from '../utilities/getUniqueListBy.js'\n\nexport {\n getAutosaveInterval,\n getVersionsMax,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n hasScheduledPublishEnabled,\n} from '../utilities/getVersionsConfig.js'\n\nexport { isNextBuild } from '../utilities/isNextBuild.js'\n\nexport { isNumber } from '../utilities/isNumber.js'\n\nexport { isPlainObject } from '../utilities/isPlainObject.js'\n\nexport {\n isReactClientComponent,\n isReactComponentOrFunction,\n isReactServerComponentOrFunction,\n} from '../utilities/isReactComponent.js'\n\nexport {\n hoistQueryParamsToAnd,\n mergeListSearchAndWhere,\n} from '../utilities/mergeListSearchAndWhere.js'\n\nexport { reduceFieldsToValues } from '../utilities/reduceFieldsToValues.js'\n\nexport { sanitizeFilename } from '../utilities/sanitizeFilename.js'\n\nexport { sanitizeUrl } from '../utilities/sanitizeUrl.js'\n\nexport { sanitizeUserDataForEmail } from '../utilities/sanitizeUserDataForEmail.js'\n\nexport { setsAreEqual } from '../utilities/setsAreEqual.js'\n\nexport { slugify } from '../utilities/slugify.js'\n\nexport { toKebabCase } from '../utilities/toKebabCase.js'\n\nexport {\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from '../utilities/transformColumnPreferences.js'\n\nexport { transformWhereQuery } from '../utilities/transformWhereQuery.js'\nexport { unflatten } from '../utilities/unflatten.js'\nexport { validateMimeType } from '../utilities/validateMimeType.js'\nexport { validateWhereQuery } from '../utilities/validateWhereQuery.js'\nexport { wait } from '../utilities/wait.js'\nexport { wordBoundariesRegex } from '../utilities/wordBoundariesRegex.js'\nexport { versionDefaults } from '../versions/defaults.js'\n\nexport { deepMergeSimple } from '@payloadcms/translations/utilities'\n"],"names":["generateCookie","generateExpiredPayloadCookie","generatePayloadCookie","getCookieExpiration","parseCookies","getLoginOptions","addSessionToUser","removeExpiredSessions","getFromImportMap","parsePayloadComponent","defaults","collectionDefaults","BASE_36_DIGITS","generateKeyBetween","generateNKeysBetween","serverProps","defaultTimezones","fieldAffectsData","fieldHasMaxDepth","fieldHasSubFields","fieldIsArrayType","fieldIsBlockType","fieldIsGroupType","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","fieldIsPresentationalOnly","fieldIsSidebar","fieldIsVirtual","fieldShouldBeLocalized","fieldSupportsMany","groupHasName","optionIsObject","optionIsValue","optionsAreObjects","tabHasName","valueIsValueWithRelation","getFieldPaths","buildFolderWhereConstraints","formatFolderOrDocumentItem","PREFERENCE_KEYS","validOperators","validOperatorSet","formatFilesize","isImage","appendUploadSelectFields","applyLocaleFiltering","combineWhereConstraints","deepCopyObject","deepCopyObjectComplex","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","deepMerge","deepMergeWithCombinedArrays","deepMergeWithReactComponents","deepMergeWithSourceArrays","extractID","flattenAllFields","flattenTopLevelFields","formatAdminURL","formatLabels","toWords","getBestFitFromSizes","getDataByPath","getFieldPermissions","getObjectDotNotation","getSafeRedirect","getSelectMode","getSiblingData","getUniqueListBy","getAutosaveInterval","getVersionsMax","hasAutosaveEnabled","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","hasScheduledPublishEnabled","isNextBuild","isNumber","isPlainObject","isReactClientComponent","isReactComponentOrFunction","isReactServerComponentOrFunction","hoistQueryParamsToAnd","mergeListSearchAndWhere","reduceFieldsToValues","sanitizeFilename","sanitizeUrl","sanitizeUserDataForEmail","setsAreEqual","slugify","toKebabCase","transformColumnsToPreferences","transformColumnsToSearchParams","transformWhereQuery","unflatten","validateMimeType","validateWhereQuery","wait","wordBoundariesRegex","versionDefaults","deepMergeSimple"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/exports/shared.ts"],"sourcesContent":["export { EntityType } from '../admin/views/dashboard.js'\n\nexport {\n generateCookie,\n generateExpiredPayloadCookie,\n generatePayloadCookie,\n getCookieExpiration,\n parseCookies,\n} from '../auth/cookies.js'\nexport { getLoginOptions } from '../auth/getLoginOptions.js'\nexport { addSessionToUser, removeExpiredSessions } from '../auth/sessions.js'\nexport { getFromImportMap } from '../bin/generateImportMap/utilities/getFromImportMap.js'\nexport { parsePayloadComponent } from '../bin/generateImportMap/utilities/parsePayloadComponent.js'\nexport { defaults as collectionDefaults } from '../collections/config/defaults.js'\n\nexport {\n BASE_36_DIGITS,\n generateKeyBetween,\n generateNKeysBetween,\n} from '../config/orderable/fractional-indexing.js'\n\nexport { serverProps } from '../config/types.js'\n\nexport { type Slugify } from '../fields/baseFields/slug/index.js'\n\nexport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\n\nexport {\n fieldAffectsData,\n fieldHasMaxDepth,\n fieldHasSubFields,\n fieldIsArrayType,\n fieldIsBlockType,\n fieldIsGroupType,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n fieldIsPresentationalOnly,\n fieldIsSidebar,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n fieldSupportsMany,\n groupHasName,\n optionIsObject,\n optionIsValue,\n optionsAreObjects,\n tabHasName,\n valueIsValueWithRelation,\n} from '../fields/config/types.js'\n\nexport { getFieldPaths } from '../fields/getFieldPaths.js'\nexport { isFieldDisabled } from '../fields/isFieldDisabled.js'\nexport type { DisabledArea, DisabledOptions } from '../fields/isFieldDisabled.js'\nexport * from '../fields/validations.js'\nexport {\n DEFAULT_HIERARCHY_LIST_LIMIT,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n getHierarchyFieldName,\n} from '../hierarchy/constants.js'\n\nexport type { ClientHierarchyConfig, FolderBreadcrumb } from '../hierarchy/types.js'\n\nexport { PREFERENCE_KEYS } from '../preferences/keys.js'\n\nexport { validOperators, validOperatorSet } from '../types/constants.js'\n\nexport { formatFilesize } from '../uploads/formatFilesize.js'\nexport { isImage } from '../uploads/isImage.js'\nexport { appendDateTimezoneSelectFields } from '../utilities/appendDateTimezoneSelectFields.js'\nexport { appendUploadSelectFields } from '../utilities/appendUploadSelectFields.js'\nexport { applyLocaleFiltering } from '../utilities/applyLocaleFiltering.js'\n\nexport { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'\n\nexport {\n deepCopyObject,\n deepCopyObjectComplex,\n deepCopyObjectSimple,\n deepCopyObjectSimpleWithoutReactComponents,\n} from '../utilities/deepCopyObject.js'\nexport {\n deepMerge,\n deepMergeWithCombinedArrays,\n deepMergeWithReactComponents,\n deepMergeWithSourceArrays,\n} from '../utilities/deepMerge.js'\n\nexport { extractID } from '../utilities/extractID.js'\n\nexport { flattenAllFields } from '../utilities/flattenAllFields.js'\nexport { flattenTopLevelFields } from '../utilities/flattenTopLevelFields.js'\nexport { formatAdminURL } from '../utilities/formatAdminURL.js'\nexport { formatLabels, toWords } from '../utilities/formatLabels.js'\n\nexport { getBestFitFromSizes } from '../utilities/getBestFitFromSizes.js'\nexport { getDataByPath } from '../utilities/getDataByPath.js'\nexport { getFieldPermissions } from '../utilities/getFieldPermissions.js'\nexport { getObjectDotNotation } from '../utilities/getObjectDotNotation.js'\n\nexport { getSafeRedirect } from '../utilities/getSafeRedirect.js'\n\nexport { getSelectMode } from '../utilities/getSelectMode.js'\n\nexport { getSiblingData } from '../utilities/getSiblingData.js'\n\nexport { getUniqueListBy } from '../utilities/getUniqueListBy.js'\n\nexport {\n getAutosaveInterval,\n getVersionsMax,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n hasScheduledPublishEnabled,\n} from '../utilities/getVersionsConfig.js'\n\nexport { isNextBuild } from '../utilities/isNextBuild.js'\n\nexport { isNumber } from '../utilities/isNumber.js'\n\nexport { isPlainObject } from '../utilities/isPlainObject.js'\n\nexport {\n isReactClientComponent,\n isReactComponentOrFunction,\n isReactServerComponentOrFunction,\n} from '../utilities/isReactComponent.js'\n\nexport {\n hoistQueryParamsToAnd,\n mergeListSearchAndWhere,\n} from '../utilities/mergeListSearchAndWhere.js'\n\nexport { reduceFieldsToValues } from '../utilities/reduceFieldsToValues.js'\n\nexport { sanitizeFilename } from '../utilities/sanitizeFilename.js'\n\nexport { sanitizeUrl } from '../utilities/sanitizeUrl.js'\n\nexport { sanitizeUserDataForEmail } from '../utilities/sanitizeUserDataForEmail.js'\n\nexport { setsAreEqual } from '../utilities/setsAreEqual.js'\n\nexport { slugify } from '../utilities/slugify.js'\n\nexport { toKebabCase } from '../utilities/toKebabCase.js'\n\nexport {\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from '../utilities/transformColumnPreferences.js'\n\nexport { transformWhereQuery } from '../utilities/transformWhereQuery.js'\nexport { unflatten } from '../utilities/unflatten.js'\nexport { validateMimeType } from '../utilities/validateMimeType.js'\nexport { validateWhereQuery } from '../utilities/validateWhereQuery.js'\nexport { wait } from '../utilities/wait.js'\nexport { wordBoundariesRegex } from '../utilities/wordBoundariesRegex.js'\nexport { versionDefaults } from '../versions/defaults.js'\n\nexport { deepMergeSimple } from '@payloadcms/translations/utilities'\n"],"names":["EntityType","generateCookie","generateExpiredPayloadCookie","generatePayloadCookie","getCookieExpiration","parseCookies","getLoginOptions","addSessionToUser","removeExpiredSessions","getFromImportMap","parsePayloadComponent","defaults","collectionDefaults","BASE_36_DIGITS","generateKeyBetween","generateNKeysBetween","serverProps","defaultTimezones","fieldAffectsData","fieldHasMaxDepth","fieldHasSubFields","fieldIsArrayType","fieldIsBlockType","fieldIsGroupType","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","fieldIsPresentationalOnly","fieldIsSidebar","fieldIsVirtual","fieldShouldBeLocalized","fieldSupportsMany","groupHasName","optionIsObject","optionIsValue","optionsAreObjects","tabHasName","valueIsValueWithRelation","getFieldPaths","isFieldDisabled","DEFAULT_HIERARCHY_LIST_LIMIT","DEFAULT_HIERARCHY_TREE_LIMIT","getHierarchyFieldName","PREFERENCE_KEYS","validOperators","validOperatorSet","formatFilesize","isImage","appendDateTimezoneSelectFields","appendUploadSelectFields","applyLocaleFiltering","combineWhereConstraints","deepCopyObject","deepCopyObjectComplex","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","deepMerge","deepMergeWithCombinedArrays","deepMergeWithReactComponents","deepMergeWithSourceArrays","extractID","flattenAllFields","flattenTopLevelFields","formatAdminURL","formatLabels","toWords","getBestFitFromSizes","getDataByPath","getFieldPermissions","getObjectDotNotation","getSafeRedirect","getSelectMode","getSiblingData","getUniqueListBy","getAutosaveInterval","getVersionsMax","hasAutosaveEnabled","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","hasScheduledPublishEnabled","isNextBuild","isNumber","isPlainObject","isReactClientComponent","isReactComponentOrFunction","isReactServerComponentOrFunction","hoistQueryParamsToAnd","mergeListSearchAndWhere","reduceFieldsToValues","sanitizeFilename","sanitizeUrl","sanitizeUserDataForEmail","setsAreEqual","slugify","toKebabCase","transformColumnsToPreferences","transformColumnsToSearchParams","transformWhereQuery","unflatten","validateMimeType","validateWhereQuery","wait","wordBoundariesRegex","versionDefaults","deepMergeSimple"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EAEf,MAAM,mBAAmB,CAAA;AAE1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAAgB;IACxC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,MAAM,CA8BjB,CAAA"}
1
+ {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EAEf,MAAM,mBAAmB,CAAA;AAE1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,MAAM,CA8BjB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateSlug.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAW,MAAM,YAAY,CAAA;AAMxD,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAClD,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAChC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;AAoB5C;;;GAGG;AACH,eAAO,MAAM,YAAY,yDACgC,QAAQ,KAAG,SA6EjE,CAAA"}
1
+ {"version":3,"file":"generateSlug.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAW,MAAM,YAAY,CAAA;AAMxD,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAClD,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAChC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;AAoB5C;;;GAGG;AACH,eAAO,MAAM,YAAY,GACtB,sDAAsD,QAAQ,KAAG,SA6EjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;IACvD,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,CAAC,EAAE,GAAG,CAAA;CACrB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAA;IACzC,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,QAAQ,CAAA;AAE1D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;AACvE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,oBAAoB,CAAA;AAElF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,SAuEvB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;IACvD,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,CAAC,EAAE,GAAG,CAAA;CACrB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAA;IACzC,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,QAAQ,CAAA;AAE1D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;AACvE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,oBAAoB,CAAA;AAElF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,SAoEvB,CAAA"}
@@ -26,10 +26,12 @@ import { generateSlug } from './generateSlug.js';
26
26
  type: 'checkbox',
27
27
  admin: {
28
28
  description: 'When enabled, the slug will auto-generate from the title field on save and autosave.',
29
- disableBulkEdit: true,
30
- disableGroupBy: true,
31
- disableListColumn: true,
32
- disableListFilter: true,
29
+ disabled: {
30
+ bulkEdit: true,
31
+ column: true,
32
+ filter: true,
33
+ groupBy: true
34
+ },
33
35
  hidden: true
34
36
  },
35
37
  defaultValue: true,
@@ -53,7 +55,7 @@ import { generateSlug } from './generateSlug.js';
53
55
  clientProps: {
54
56
  useAsSlug
55
57
  },
56
- path: '@payloadcms/next/client#SlugField'
58
+ path: '@payloadcms/ui#SlugField'
57
59
  }
58
60
  },
59
61
  width: '100%'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/baseFields/slug/index.ts"],"sourcesContent":["import type { TextFieldClientProps } from '../../../admin/types.js'\nimport type { TypeWithID } from '../../../collections/config/types.js'\nimport type { FieldAdmin, RowField, TextField } from '../../../fields/config/types.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { generateSlug } from './generateSlug.js'\n\nexport type Slugify<T extends TypeWithID = any> = (args: {\n data: T\n req: PayloadRequest\n valueToSlugify?: any\n}) => Promise<string | undefined> | string | undefined\n\nexport type SlugFieldArgs = {\n /**\n * Override for the `generateSlug` checkbox field name.\n * @default 'generateSlug'\n */\n checkboxName?: string\n /**\n * Disables the unique index on the field.\n * This is useful if instead, you want to add a compound unique index to the collection `indexes` config,\n * for example with the multi tenant plugin, where the slug is only unique per tenant, not globally.\n * @default false\n */\n disableUnique?: boolean\n /**\n * @deprecated use `useAsSlug` instead.\n */\n fieldToUse?: string\n /**\n * Enable localization for the slug field.\n */\n localized?: TextField['localized']\n /**\n * Override for the `slug` field name.\n * @default 'slug'\n */\n name?: string\n /**\n * A function used to override the slug field(s) at a granular level.\n * Passes the row field to you to manipulate beyond the exposed options.\n * @example\n * ```ts\n * slugField({\n * overrides: (field) => {\n * field.fields[1].label = 'Custom Slug Label'\n * return field\n * }\n * })\n * ```\n */\n overrides?: (field: RowField) => RowField\n position?: FieldAdmin['position']\n /**\n * Whether or not the `slug` field is required.\n * @default true\n */\n required?: TextField['required']\n /**\n * Provide your own slugify function to override the default.\n */\n slugify?: Slugify\n /**\n * The name of the top-level field to generate the slug from, when applicable.\n * @default 'title'\n */\n useAsSlug?: string\n}\n\nexport type SlugField = (args?: SlugFieldArgs) => RowField\n\nexport type SlugFieldClientPropsOnly = Pick<SlugFieldArgs, 'useAsSlug'>\n/**\n * These are the props that the `SlugField` client component accepts.\n * The `SlugField` server component is responsible for passing down the `slugify` function.\n */\nexport type SlugFieldClientProps = SlugFieldClientPropsOnly & TextFieldClientProps\n\n/**\n * A slug is a unique, indexed, URL-friendly string that identifies a particular document, often used to construct the URL of a webpage.\n * The `slug` field auto-generates its value based on another field, e.g. \"My Title\" → \"my-title\".\n *\n * The slug should continue to be generated through:\n * 1. The `create` operation, unless the user has modified the slug manually\n * 2. The `update` operation, if:\n * a. Autosave is _not_ enabled and there is no slug\n * b. Autosave _is_ enabled, the doc is unpublished, and the user has not modified the slug manually\n *\n * The slug should stabilize after all above criteria have been met, because the URL is typically derived from the slug.\n * This is to protect modifying potentially live URLs, breaking links, etc. without explicit intent.\n *\n * @experimental This field is experimental and may change or be removed in the future. Use at your own risk.\n */\nexport const slugField: SlugField = ({\n name: slugFieldName = 'slug',\n checkboxName = 'generateSlug',\n disableUnique = false,\n fieldToUse,\n localized,\n overrides,\n position = 'sidebar',\n required = true,\n slugify,\n useAsSlug: useAsSlugFromArgs = 'title',\n} = {}) => {\n const useAsSlug = fieldToUse || useAsSlugFromArgs\n\n const baseField: RowField = {\n type: 'row',\n admin: {\n position,\n },\n fields: [\n {\n name: checkboxName,\n type: 'checkbox',\n admin: {\n description:\n 'When enabled, the slug will auto-generate from the title field on save and autosave.',\n disableBulkEdit: true,\n disableGroupBy: true,\n disableListColumn: true,\n disableListFilter: true,\n hidden: true,\n },\n defaultValue: true,\n hooks: {\n beforeChange: [generateSlug({ slugFieldName, slugify, useAsSlug })],\n },\n localized,\n },\n {\n name: slugFieldName,\n type: 'text',\n admin: {\n components: {\n Field: {\n clientProps: {\n useAsSlug,\n } satisfies SlugFieldClientPropsOnly,\n path: '@payloadcms/next/client#SlugField',\n },\n },\n width: '100%',\n },\n custom: {\n /**\n * This is needed so we can access it from the `slugifyHandler` server function.\n */\n slugify,\n },\n index: true,\n localized,\n required,\n unique: !disableUnique,\n },\n ],\n }\n\n if (typeof overrides === 'function') {\n return overrides(baseField)\n }\n\n return baseField\n}\n"],"names":["generateSlug","slugField","name","slugFieldName","checkboxName","disableUnique","fieldToUse","localized","overrides","position","required","slugify","useAsSlug","useAsSlugFromArgs","baseField","type","admin","fields","description","disableBulkEdit","disableGroupBy","disableListColumn","disableListFilter","hidden","defaultValue","hooks","beforeChange","components","Field","clientProps","path","width","custom","index","unique"],"mappings":"AAKA,SAASA,YAAY,QAAQ,oBAAmB;AA0EhD;;;;;;;;;;;;;;CAcC,GACD,OAAO,MAAMC,YAAuB,CAAC,EACnCC,MAAMC,gBAAgB,MAAM,EAC5BC,eAAe,cAAc,EAC7BC,gBAAgB,KAAK,EACrBC,UAAU,EACVC,SAAS,EACTC,SAAS,EACTC,WAAW,SAAS,EACpBC,WAAW,IAAI,EACfC,OAAO,EACPC,WAAWC,oBAAoB,OAAO,EACvC,GAAG,CAAC,CAAC;IACJ,MAAMD,YAAYN,cAAcO;IAEhC,MAAMC,YAAsB;QAC1BC,MAAM;QACNC,OAAO;YACLP;QACF;QACAQ,QAAQ;YACN;gBACEf,MAAME;gBACNW,MAAM;gBACNC,OAAO;oBACLE,aACE;oBACFC,iBAAiB;oBACjBC,gBAAgB;oBAChBC,mBAAmB;oBACnBC,mBAAmB;oBACnBC,QAAQ;gBACV;gBACAC,cAAc;gBACdC,OAAO;oBACLC,cAAc;wBAAC1B,aAAa;4BAAEG;4BAAeQ;4BAASC;wBAAU;qBAAG;gBACrE;gBACAL;YACF;YACA;gBACEL,MAAMC;gBACNY,MAAM;gBACNC,OAAO;oBACLW,YAAY;wBACVC,OAAO;4BACLC,aAAa;gCACXjB;4BACF;4BACAkB,MAAM;wBACR;oBACF;oBACAC,OAAO;gBACT;gBACAC,QAAQ;oBACN;;WAEC,GACDrB;gBACF;gBACAsB,OAAO;gBACP1B;gBACAG;gBACAwB,QAAQ,CAAC7B;YACX;SACD;IACH;IAEA,IAAI,OAAOG,cAAc,YAAY;QACnC,OAAOA,UAAUM;IACnB;IAEA,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/baseFields/slug/index.ts"],"sourcesContent":["import type { TextFieldClientProps } from '../../../admin/types.js'\nimport type { TypeWithID } from '../../../collections/config/types.js'\nimport type { FieldAdmin, RowField, TextField } from '../../../fields/config/types.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { generateSlug } from './generateSlug.js'\n\nexport type Slugify<T extends TypeWithID = any> = (args: {\n data: T\n req: PayloadRequest\n valueToSlugify?: any\n}) => Promise<string | undefined> | string | undefined\n\nexport type SlugFieldArgs = {\n /**\n * Override for the `generateSlug` checkbox field name.\n * @default 'generateSlug'\n */\n checkboxName?: string\n /**\n * Disables the unique index on the field.\n * This is useful if instead, you want to add a compound unique index to the collection `indexes` config,\n * for example with the multi tenant plugin, where the slug is only unique per tenant, not globally.\n * @default false\n */\n disableUnique?: boolean\n /**\n * @deprecated use `useAsSlug` instead.\n */\n fieldToUse?: string\n /**\n * Enable localization for the slug field.\n */\n localized?: TextField['localized']\n /**\n * Override for the `slug` field name.\n * @default 'slug'\n */\n name?: string\n /**\n * A function used to override the slug field(s) at a granular level.\n * Passes the row field to you to manipulate beyond the exposed options.\n * @example\n * ```ts\n * slugField({\n * overrides: (field) => {\n * field.fields[1].label = 'Custom Slug Label'\n * return field\n * }\n * })\n * ```\n */\n overrides?: (field: RowField) => RowField\n position?: FieldAdmin['position']\n /**\n * Whether or not the `slug` field is required.\n * @default true\n */\n required?: TextField['required']\n /**\n * Provide your own slugify function to override the default.\n */\n slugify?: Slugify\n /**\n * The name of the top-level field to generate the slug from, when applicable.\n * @default 'title'\n */\n useAsSlug?: string\n}\n\nexport type SlugField = (args?: SlugFieldArgs) => RowField\n\nexport type SlugFieldClientPropsOnly = Pick<SlugFieldArgs, 'useAsSlug'>\n/**\n * These are the props that the `SlugField` client component accepts.\n * The `SlugField` server component is responsible for passing down the `slugify` function.\n */\nexport type SlugFieldClientProps = SlugFieldClientPropsOnly & TextFieldClientProps\n\n/**\n * A slug is a unique, indexed, URL-friendly string that identifies a particular document, often used to construct the URL of a webpage.\n * The `slug` field auto-generates its value based on another field, e.g. \"My Title\" → \"my-title\".\n *\n * The slug should continue to be generated through:\n * 1. The `create` operation, unless the user has modified the slug manually\n * 2. The `update` operation, if:\n * a. Autosave is _not_ enabled and there is no slug\n * b. Autosave _is_ enabled, the doc is unpublished, and the user has not modified the slug manually\n *\n * The slug should stabilize after all above criteria have been met, because the URL is typically derived from the slug.\n * This is to protect modifying potentially live URLs, breaking links, etc. without explicit intent.\n *\n * @experimental This field is experimental and may change or be removed in the future. Use at your own risk.\n */\nexport const slugField: SlugField = ({\n name: slugFieldName = 'slug',\n checkboxName = 'generateSlug',\n disableUnique = false,\n fieldToUse,\n localized,\n overrides,\n position = 'sidebar',\n required = true,\n slugify,\n useAsSlug: useAsSlugFromArgs = 'title',\n} = {}) => {\n const useAsSlug = fieldToUse || useAsSlugFromArgs\n\n const baseField: RowField = {\n type: 'row',\n admin: {\n position,\n },\n fields: [\n {\n name: checkboxName,\n type: 'checkbox',\n admin: {\n description:\n 'When enabled, the slug will auto-generate from the title field on save and autosave.',\n disabled: { bulkEdit: true, column: true, filter: true, groupBy: true },\n hidden: true,\n },\n defaultValue: true,\n hooks: {\n beforeChange: [generateSlug({ slugFieldName, slugify, useAsSlug })],\n },\n localized,\n },\n {\n name: slugFieldName,\n type: 'text',\n admin: {\n components: {\n Field: {\n clientProps: {\n useAsSlug,\n } satisfies SlugFieldClientPropsOnly,\n path: '@payloadcms/ui#SlugField',\n },\n },\n width: '100%',\n },\n custom: {\n /**\n * This is needed so we can access it from the `slugifyHandler` server function.\n */\n slugify,\n },\n index: true,\n localized,\n required,\n unique: !disableUnique,\n },\n ],\n }\n\n if (typeof overrides === 'function') {\n return overrides(baseField)\n }\n\n return baseField\n}\n"],"names":["generateSlug","slugField","name","slugFieldName","checkboxName","disableUnique","fieldToUse","localized","overrides","position","required","slugify","useAsSlug","useAsSlugFromArgs","baseField","type","admin","fields","description","disabled","bulkEdit","column","filter","groupBy","hidden","defaultValue","hooks","beforeChange","components","Field","clientProps","path","width","custom","index","unique"],"mappings":"AAKA,SAASA,YAAY,QAAQ,oBAAmB;AA0EhD;;;;;;;;;;;;;;CAcC,GACD,OAAO,MAAMC,YAAuB,CAAC,EACnCC,MAAMC,gBAAgB,MAAM,EAC5BC,eAAe,cAAc,EAC7BC,gBAAgB,KAAK,EACrBC,UAAU,EACVC,SAAS,EACTC,SAAS,EACTC,WAAW,SAAS,EACpBC,WAAW,IAAI,EACfC,OAAO,EACPC,WAAWC,oBAAoB,OAAO,EACvC,GAAG,CAAC,CAAC;IACJ,MAAMD,YAAYN,cAAcO;IAEhC,MAAMC,YAAsB;QAC1BC,MAAM;QACNC,OAAO;YACLP;QACF;QACAQ,QAAQ;YACN;gBACEf,MAAME;gBACNW,MAAM;gBACNC,OAAO;oBACLE,aACE;oBACFC,UAAU;wBAAEC,UAAU;wBAAMC,QAAQ;wBAAMC,QAAQ;wBAAMC,SAAS;oBAAK;oBACtEC,QAAQ;gBACV;gBACAC,cAAc;gBACdC,OAAO;oBACLC,cAAc;wBAAC3B,aAAa;4BAAEG;4BAAeQ;4BAASC;wBAAU;qBAAG;gBACrE;gBACAL;YACF;YACA;gBACEL,MAAMC;gBACNY,MAAM;gBACNC,OAAO;oBACLY,YAAY;wBACVC,OAAO;4BACLC,aAAa;gCACXlB;4BACF;4BACAmB,MAAM;wBACR;oBACF;oBACAC,OAAO;gBACT;gBACAC,QAAQ;oBACN;;WAEC,GACDtB;gBACF;gBACAuB,OAAO;gBACP3B;gBACAG;gBACAyB,QAAQ,CAAC9B;YACX;SACD;IACH;IAEA,IAAI,OAAOG,cAAc,YAAY;QACnC,OAAOA,UAAUM;IACnB;IAEA,OAAOA;AACT,EAAC"}
@@ -3,7 +3,7 @@ import type { Block, ClientBlock, ClientField, Field, FieldBase } from '../../fi
3
3
  import type { Payload } from '../../types/index.js';
4
4
  import { type ImportMap } from '../../index.js';
5
5
  export { ClientField };
6
- export type ServerOnlyFieldProperties = 'dbName' | 'editor' | 'enumName' | 'filterOptions' | 'graphQL' | 'label' | 'typescriptSchema' | 'validate' | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>;
6
+ export type ServerOnlyFieldProperties = 'dbName' | 'editor' | 'enumName' | 'filterOptions' | 'graphQL' | 'jsonSchema' | 'label' | 'validate' | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>;
7
7
  export type ServerOnlyFieldAdminProperties = keyof Pick<FieldBase['admin'], 'components' | 'condition'>;
8
8
  export declare const createClientBlocks: ({ blocks, defaultIDType, i18n, importMap, }: {
9
9
  blocks: (Block | string)[];
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EAEX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKtE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,OAAO,GACP,kBAAkB,GAClB,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AA+BD,eAAO,MAAM,kBAAkB,gDAK5B;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,EAiFzC,CAAA;AAED,eAAO,MAAM,iBAAiB,8DAK3B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAoSH,CAAA;AAED,eAAO,MAAM,kBAAkB,iEAM5B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAAW,EAkCd,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EAEX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKtE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,OAAO,GACP,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AA+BD,eAAO,MAAM,kBAAkB,GAAI,6CAKhC;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,EAiFzC,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,2DAK/B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAoSH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,8DAMhC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAAW,EAiCd,CAAA"}
@@ -12,7 +12,7 @@ const serverOnlyFieldProperties = [
12
12
  'filterOptions',
13
13
  'editor',
14
14
  'custom',
15
- 'typescriptSchema',
15
+ 'jsonSchema',
16
16
  'dbName',
17
17
  'enumName',
18
18
  'graphQL'
@@ -384,8 +384,9 @@ export const createClientFields = ({ defaultIDType, disableAddingID, fields, i18
384
384
  type: defaultIDType,
385
385
  admin: {
386
386
  description: 'The unique identifier for this document',
387
- disableBulkEdit: true,
388
- disabled: true,
387
+ disabled: {
388
+ bulkEdit: true
389
+ },
389
390
  hidden: true
390
391
  },
391
392
  hidden: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["// @ts-strict-ignore\n/* eslint-disable perfectionist/sort-switch-case */\n// Keep perfectionist/sort-switch-case disabled - it incorrectly messes up the ordering of the switch cases, causing it to break\nimport type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport type {\n AdminClient,\n ArrayFieldClient,\n Block,\n BlockJSX,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n DateFieldClient,\n Field,\n FieldBase,\n JoinFieldClient,\n LabelsClient,\n RadioFieldClient,\n RowFieldClient,\n SelectFieldClient,\n TabsFieldClient,\n} from '../../fields/config/types.js'\nimport type { Payload } from '../../types/index.js'\n\nimport { getFromImportMap } from '../../bin/generateImportMap/utilities/getFromImportMap.js'\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { flattenTopLevelFields, type ImportMap } from '../../index.js'\n\n// Should not be used - ClientField should be used instead. This is why we don't export ClientField, we don't want people\n// to accidentally use it instead of ClientField and get confused\n\nexport { ClientField }\n\nexport type ServerOnlyFieldProperties =\n | 'dbName' // can be a function\n | 'editor' // This is a `richText` only property\n | 'enumName' // can be a function\n | 'filterOptions' // This is a `relationship`, `upload`, and `select` only property\n | 'graphQL'\n | 'label'\n | 'typescriptSchema'\n | 'validate'\n | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n 'components' | 'condition'\n>\n\nconst serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship`, `upload`, and `select` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n 'graphQL', // client does not need graphQL\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n]\n\nconst serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'condition',\n 'components',\n]\n\ntype FieldWithDescription = {\n admin: AdminClient\n} & ClientField\n\nexport const createClientBlocks = ({\n blocks,\n defaultIDType,\n i18n,\n importMap,\n}: {\n blocks: (Block | string)[]\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): (ClientBlock | string)[] | ClientBlock[] => {\n const clientBlocks: (ClientBlock | string)[] = []\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i]!\n\n if (typeof block === 'string') {\n // Do not process blocks that are just strings - they are processed once in the client config\n clientBlocks.push(block)\n continue\n }\n\n const clientBlock: ClientBlock = {\n slug: block.slug,\n fields: [],\n }\n if (block.imageAltText) {\n clientBlock.imageAltText = block.imageAltText\n }\n if (block.imageURL) {\n clientBlock.imageURL = block.imageURL\n }\n\n if (block.admin?.custom || block.admin?.group || block.admin?.images) {\n clientBlock.admin = {}\n if (block.admin.custom) {\n clientBlock.admin.custom = block.admin.custom\n }\n if (block.admin.group) {\n clientBlock.admin.group = block.admin.group\n }\n if (block.admin.images) {\n clientBlock.admin.images = block.admin.images\n }\n }\n\n if (block?.admin?.jsx) {\n const jsxResolved = getFromImportMap<BlockJSX>({\n importMap,\n PayloadComponent: block.admin.jsx,\n schemaPath: '',\n })\n clientBlock.jsx = jsxResolved\n }\n\n if (block?.admin?.disableBlockName) {\n // Check for existing admin object, this way we don't have to spread it in\n if (clientBlock.admin) {\n clientBlock.admin.disableBlockName = block.admin.disableBlockName\n } else {\n clientBlock.admin = { disableBlockName: block.admin.disableBlockName }\n }\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n clientBlock.fields = createClientFields({\n defaultIDType,\n fields: block.fields,\n i18n,\n importMap,\n })\n\n clientBlocks.push(clientBlock)\n }\n\n return clientBlocks\n}\n\nexport const createClientField = ({\n defaultIDType,\n field: incomingField,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField => {\n const clientField: ClientField = {} as ClientField\n\n for (const key in incomingField) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n switch (key) {\n case 'admin':\n if (!incomingField.admin) {\n break\n }\n\n clientField.admin = {} as AdminClient\n\n for (const adminKey in incomingField.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in incomingField.admin) {\n if (typeof incomingField.admin?.description !== 'function') {\n ;(clientField as FieldWithDescription).admin.description =\n incomingField.admin.description\n }\n }\n\n break\n\n default:\n ;(clientField.admin as any)[adminKey] =\n incomingField.admin[adminKey as keyof typeof incomingField.admin]\n }\n }\n\n break\n\n case 'blocks':\n case 'fields':\n case 'tabs':\n // Skip - we handle sub-fields in the switch below\n break\n\n case 'options':\n // Skip - we handle options in the radio/select switch below to avoid mutating the global config\n break\n\n case 'label':\n //@ts-expect-error - would need to type narrow\n if (typeof incomingField.label === 'function') {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label({ i18n, t: i18n.t })\n } else {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label\n }\n\n break\n\n default:\n ;(clientField as any)[key] = incomingField[key as keyof Field]\n }\n }\n\n switch (incomingField.type) {\n case 'array': {\n if (incomingField.labels) {\n const field = clientField as unknown as ArrayFieldClient\n\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n }\n // falls through\n case 'collapsible':\n case 'group':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n if (!field.fields) {\n field.fields = []\n }\n\n field.fields = createClientFields({\n defaultIDType,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n })\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.labels) {\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n\n if (incomingField.blockReferences?.length) {\n field.blockReferences = createClientBlocks({\n blocks: incomingField.blockReferences,\n defaultIDType,\n i18n,\n importMap,\n })\n }\n\n if (incomingField.blocks?.length) {\n field.blocks = createClientBlocks({\n blocks: incomingField.blocks,\n defaultIDType,\n i18n,\n importMap,\n }) as ClientBlock[]\n }\n\n break\n }\n\n case 'date': {\n // Strip the `override` function from timezone config as it cannot be serialized\n if (\n incomingField.timezone &&\n typeof incomingField.timezone === 'object' &&\n 'override' in incomingField.timezone\n ) {\n const field = clientField as DateFieldClient\n const { override: _, ...timezoneConfigWithoutOverride } = incomingField.timezone\n field.timezone = timezoneConfigWithoutOverride\n }\n\n break\n }\n\n case 'join': {\n const field = clientField as JoinFieldClient\n\n field.targetField = {\n relationTo: field.targetField?.relationTo,\n }\n\n break\n }\n\n case 'radio':\n // falls through\n case 'select': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n field.options = [] // Create new array to avoid mutating global config\n\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ i18n, t: i18n.t as TFunction }),\n value: option.value,\n }\n } else if (typeof option === 'object') {\n field.options[i] = {\n label: option.label,\n value: option.value,\n }\n } else if (typeof option === 'string') {\n field.options[i] = option\n }\n }\n }\n\n break\n }\n\n case 'richText': {\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n field.tabs = []\n\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = {} as unknown as TabsFieldClient['tabs'][0]\n\n for (const key in tab) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n const tabProp = tab[key as keyof typeof tab]\n\n if (key === 'fields') {\n clientTab.fields = createClientFields({\n defaultIDType,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n })\n } else if (\n (key === 'label' || key === 'description') &&\n typeof tabProp === 'function'\n ) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n clientTab[key] = tabProp({ t: i18n.t })\n } else if (key === 'admin') {\n clientTab.admin = {} as AdminClient\n\n for (const adminKey in tab.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in tab.admin) {\n if (typeof tab.admin?.description === 'function') {\n clientTab.admin.description = tab.admin.description({\n i18n,\n t: i18n.t as TFunction,\n })\n } else {\n clientTab.admin.description = tab.admin.description\n }\n }\n\n break\n\n default:\n ;(clientTab.admin as any)[adminKey] =\n tab.admin[adminKey as keyof typeof tab.admin]\n }\n }\n } else {\n ;(clientTab as any)[key] = tabProp\n }\n }\n field.tabs[i] = clientTab\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n defaultIDType,\n disableAddingID,\n fields,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField[] => {\n const clientFields: ClientField[] = []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n\n const clientField = createClientField({\n defaultIDType,\n field,\n i18n,\n importMap,\n })\n\n clientFields.push(clientField)\n }\n\n const hasID = flattenTopLevelFields(fields).some((f) => fieldAffectsData(f) && f.name === 'id')\n\n if (!disableAddingID && !hasID) {\n clientFields.push({\n name: 'id',\n type: defaultIDType,\n admin: {\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n disabled: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n } as ClientField)\n }\n\n return clientFields\n}\n"],"names":["getFromImportMap","MissingEditorProp","fieldAffectsData","flattenTopLevelFields","serverOnlyFieldProperties","serverOnlyFieldAdminProperties","createClientBlocks","blocks","defaultIDType","i18n","importMap","clientBlocks","i","length","block","push","clientBlock","slug","fields","imageAltText","imageURL","admin","custom","group","images","jsx","jsxResolved","PayloadComponent","schemaPath","disableBlockName","labels","singular","t","plural","createClientFields","createClientField","field","incomingField","clientField","key","includes","adminKey","description","label","type","disableAddingID","blockReferences","timezone","override","_","timezoneConfigWithoutOverride","targetField","relationTo","options","option","value","editor","Error","tabs","tab","clientTab","tabProp","clientFields","hasID","some","f","name","disableBulkEdit","disabled","hidden"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["// @ts-strict-ignore\n/* eslint-disable perfectionist/sort-switch-case */\n// Keep perfectionist/sort-switch-case disabled - it incorrectly messes up the ordering of the switch cases, causing it to break\nimport type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport type {\n AdminClient,\n ArrayFieldClient,\n Block,\n BlockJSX,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n DateFieldClient,\n Field,\n FieldBase,\n JoinFieldClient,\n LabelsClient,\n RadioFieldClient,\n RowFieldClient,\n SelectFieldClient,\n TabsFieldClient,\n} from '../../fields/config/types.js'\nimport type { Payload } from '../../types/index.js'\n\nimport { getFromImportMap } from '../../bin/generateImportMap/utilities/getFromImportMap.js'\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { flattenTopLevelFields, type ImportMap } from '../../index.js'\n\n// Should not be used - ClientField should be used instead. This is why we don't export ClientField, we don't want people\n// to accidentally use it instead of ClientField and get confused\n\nexport { ClientField }\n\nexport type ServerOnlyFieldProperties =\n | 'dbName' // can be a function\n | 'editor' // This is a `richText` only property\n | 'enumName' // can be a function\n | 'filterOptions' // This is a `relationship`, `upload`, and `select` only property\n | 'graphQL'\n | 'jsonSchema'\n | 'label'\n | 'validate'\n | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n 'components' | 'condition'\n>\n\nconst serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship`, `upload`, and `select` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'jsonSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n 'graphQL', // client does not need graphQL\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n]\n\nconst serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'condition',\n 'components',\n]\n\ntype FieldWithDescription = {\n admin: AdminClient\n} & ClientField\n\nexport const createClientBlocks = ({\n blocks,\n defaultIDType,\n i18n,\n importMap,\n}: {\n blocks: (Block | string)[]\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): (ClientBlock | string)[] | ClientBlock[] => {\n const clientBlocks: (ClientBlock | string)[] = []\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i]!\n\n if (typeof block === 'string') {\n // Do not process blocks that are just strings - they are processed once in the client config\n clientBlocks.push(block)\n continue\n }\n\n const clientBlock: ClientBlock = {\n slug: block.slug,\n fields: [],\n }\n if (block.imageAltText) {\n clientBlock.imageAltText = block.imageAltText\n }\n if (block.imageURL) {\n clientBlock.imageURL = block.imageURL\n }\n\n if (block.admin?.custom || block.admin?.group || block.admin?.images) {\n clientBlock.admin = {}\n if (block.admin.custom) {\n clientBlock.admin.custom = block.admin.custom\n }\n if (block.admin.group) {\n clientBlock.admin.group = block.admin.group\n }\n if (block.admin.images) {\n clientBlock.admin.images = block.admin.images\n }\n }\n\n if (block?.admin?.jsx) {\n const jsxResolved = getFromImportMap<BlockJSX>({\n importMap,\n PayloadComponent: block.admin.jsx,\n schemaPath: '',\n })\n clientBlock.jsx = jsxResolved\n }\n\n if (block?.admin?.disableBlockName) {\n // Check for existing admin object, this way we don't have to spread it in\n if (clientBlock.admin) {\n clientBlock.admin.disableBlockName = block.admin.disableBlockName\n } else {\n clientBlock.admin = { disableBlockName: block.admin.disableBlockName }\n }\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n clientBlock.fields = createClientFields({\n defaultIDType,\n fields: block.fields,\n i18n,\n importMap,\n })\n\n clientBlocks.push(clientBlock)\n }\n\n return clientBlocks\n}\n\nexport const createClientField = ({\n defaultIDType,\n field: incomingField,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField => {\n const clientField: ClientField = {} as ClientField\n\n for (const key in incomingField) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n switch (key) {\n case 'admin':\n if (!incomingField.admin) {\n break\n }\n\n clientField.admin = {} as AdminClient\n\n for (const adminKey in incomingField.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in incomingField.admin) {\n if (typeof incomingField.admin?.description !== 'function') {\n ;(clientField as FieldWithDescription).admin.description =\n incomingField.admin.description\n }\n }\n\n break\n\n default:\n ;(clientField.admin as any)[adminKey] =\n incomingField.admin[adminKey as keyof typeof incomingField.admin]\n }\n }\n\n break\n\n case 'blocks':\n case 'fields':\n case 'tabs':\n // Skip - we handle sub-fields in the switch below\n break\n\n case 'options':\n // Skip - we handle options in the radio/select switch below to avoid mutating the global config\n break\n\n case 'label':\n //@ts-expect-error - would need to type narrow\n if (typeof incomingField.label === 'function') {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label({ i18n, t: i18n.t })\n } else {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label\n }\n\n break\n\n default:\n ;(clientField as any)[key] = incomingField[key as keyof Field]\n }\n }\n\n switch (incomingField.type) {\n case 'array': {\n if (incomingField.labels) {\n const field = clientField as unknown as ArrayFieldClient\n\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n }\n // falls through\n case 'collapsible':\n case 'group':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n if (!field.fields) {\n field.fields = []\n }\n\n field.fields = createClientFields({\n defaultIDType,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n })\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.labels) {\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n\n if (incomingField.blockReferences?.length) {\n field.blockReferences = createClientBlocks({\n blocks: incomingField.blockReferences,\n defaultIDType,\n i18n,\n importMap,\n })\n }\n\n if (incomingField.blocks?.length) {\n field.blocks = createClientBlocks({\n blocks: incomingField.blocks,\n defaultIDType,\n i18n,\n importMap,\n }) as ClientBlock[]\n }\n\n break\n }\n\n case 'date': {\n // Strip the `override` function from timezone config as it cannot be serialized\n if (\n incomingField.timezone &&\n typeof incomingField.timezone === 'object' &&\n 'override' in incomingField.timezone\n ) {\n const field = clientField as DateFieldClient\n const { override: _, ...timezoneConfigWithoutOverride } = incomingField.timezone\n field.timezone = timezoneConfigWithoutOverride\n }\n\n break\n }\n\n case 'join': {\n const field = clientField as JoinFieldClient\n\n field.targetField = {\n relationTo: field.targetField?.relationTo,\n }\n\n break\n }\n\n case 'radio':\n // falls through\n case 'select': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n field.options = [] // Create new array to avoid mutating global config\n\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ i18n, t: i18n.t as TFunction }),\n value: option.value,\n }\n } else if (typeof option === 'object') {\n field.options[i] = {\n label: option.label,\n value: option.value,\n }\n } else if (typeof option === 'string') {\n field.options[i] = option\n }\n }\n }\n\n break\n }\n\n case 'richText': {\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n field.tabs = []\n\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = {} as unknown as TabsFieldClient['tabs'][0]\n\n for (const key in tab) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n const tabProp = tab[key as keyof typeof tab]\n\n if (key === 'fields') {\n clientTab.fields = createClientFields({\n defaultIDType,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n })\n } else if (\n (key === 'label' || key === 'description') &&\n typeof tabProp === 'function'\n ) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n clientTab[key] = tabProp({ t: i18n.t })\n } else if (key === 'admin') {\n clientTab.admin = {} as AdminClient\n\n for (const adminKey in tab.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in tab.admin) {\n if (typeof tab.admin?.description === 'function') {\n clientTab.admin.description = tab.admin.description({\n i18n,\n t: i18n.t as TFunction,\n })\n } else {\n clientTab.admin.description = tab.admin.description\n }\n }\n\n break\n\n default:\n ;(clientTab.admin as any)[adminKey] =\n tab.admin[adminKey as keyof typeof tab.admin]\n }\n }\n } else {\n ;(clientTab as any)[key] = tabProp\n }\n }\n field.tabs[i] = clientTab\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n defaultIDType,\n disableAddingID,\n fields,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField[] => {\n const clientFields: ClientField[] = []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n\n const clientField = createClientField({\n defaultIDType,\n field,\n i18n,\n importMap,\n })\n\n clientFields.push(clientField)\n }\n\n const hasID = flattenTopLevelFields(fields).some((f) => fieldAffectsData(f) && f.name === 'id')\n\n if (!disableAddingID && !hasID) {\n clientFields.push({\n name: 'id',\n type: defaultIDType,\n admin: {\n description: 'The unique identifier for this document',\n disabled: { bulkEdit: true },\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n } as ClientField)\n }\n\n return clientFields\n}\n"],"names":["getFromImportMap","MissingEditorProp","fieldAffectsData","flattenTopLevelFields","serverOnlyFieldProperties","serverOnlyFieldAdminProperties","createClientBlocks","blocks","defaultIDType","i18n","importMap","clientBlocks","i","length","block","push","clientBlock","slug","fields","imageAltText","imageURL","admin","custom","group","images","jsx","jsxResolved","PayloadComponent","schemaPath","disableBlockName","labels","singular","t","plural","createClientFields","createClientField","field","incomingField","clientField","key","includes","adminKey","description","label","type","disableAddingID","blockReferences","timezone","override","_","timezoneConfigWithoutOverride","targetField","relationTo","options","option","value","editor","Error","tabs","tab","clientTab","tabProp","clientFields","hasID","some","f","name","disabled","bulkEdit","hidden"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACf,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AA8BvC,KAAK,kBAAkB,GAAG;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC,+BAA+B,EAAE,OAAO,CAAA;IACxC,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,EAAE,CAAA;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,+RAkBvB,iBAAiB,KAAG,OAAO,CAAC,mBAAmB,CA4cjD,CAAA;AAED,eAAO,MAAM,cAAc,yRAiBxB,kBAAkB,KAAG,OAAO,CAAC,KAAK,EAAE,CAqCtC,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACf,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AA8BvC,KAAK,kBAAkB,GAAG;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC,+BAA+B,EAAE,OAAO,CAAA;IACxC,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,EAAE,CAAA;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAU,4RAkBjC,iBAAiB,KAAG,OAAO,CAAC,mBAAmB,CAwbjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,sRAiBlC,kBAAkB,KAAG,OAAO,CAAC,KAAK,EAAE,CAqCtC,CAAA"}
@@ -1,4 +1,3 @@
1
- import { deepMergeSimple } from '@payloadcms/translations/utilities';
2
1
  import { DuplicateFieldName, InvalidConfiguration, InvalidFieldName, InvalidFieldRelationship, MissingEditorProp, MissingFieldType } from '../../errors/index.js';
3
2
  import { ReservedFieldName } from '../../errors/ReservedFieldName.js';
4
3
  import { flattenAllFields } from '../../utilities/flattenAllFields.js';
@@ -102,14 +101,6 @@ import { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } f
102
101
  }
103
102
  });
104
103
  }
105
- if (field.min && !field.minRows) {
106
- console.warn(`(payload): The "min" property is deprecated for the Relationship field "${field.name}" and will be removed in a future version. Please use "minRows" instead.`);
107
- field.minRows = field.min;
108
- }
109
- if (field.max && !field.maxRows) {
110
- console.warn(`(payload): The "max" property is deprecated for the Relationship field "${field.name}" and will be removed in a future version. Please use "maxRows" instead.`);
111
- field.maxRows = field.max;
112
- }
113
104
  }
114
105
  // Upload isSortable default
115
106
  if (field.type === 'upload') {
@@ -141,12 +132,7 @@ import { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } f
141
132
  existingFieldNames.add(field.name);
142
133
  }
143
134
  if (typeof field.localized !== 'undefined') {
144
- let shouldDisableLocalized = !config.localization;
145
- if (process.env.NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized !== 'true' && parentIsLocalized && // @todo PAYLOAD_DO_NOT_SANITIZE_LOCALIZED_PROPERTY=true will be the default in 4.0
146
- process.env.PAYLOAD_DO_NOT_SANITIZE_LOCALIZED_PROPERTY !== 'true') {
147
- shouldDisableLocalized = true;
148
- }
149
- if (shouldDisableLocalized) {
135
+ if (!config.localization) {
150
136
  delete field.localized;
151
137
  }
152
138
  }
@@ -198,9 +184,6 @@ import { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } f
198
184
  parentIsLocalized: parentIsLocalized || field.localized
199
185
  });
200
186
  }
201
- if (field.editor.i18n && Object.keys(field.editor.i18n).length >= 0) {
202
- config.i18n.translations = deepMergeSimple(config.i18n.translations, field.editor.i18n);
203
- }
204
187
  };
205
188
  if (richTextSanitizationPromises) {
206
189
  richTextSanitizationPromises.push(sanitizeRichText);
@@ -298,8 +281,18 @@ import { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } f
298
281
  field.tabs[j] = tab;
299
282
  }
300
283
  }
301
- if (field.type === 'ui' && typeof field.admin.disableBulkEdit === 'undefined') {
302
- field.admin.disableBulkEdit = true;
284
+ if (field.type === 'ui') {
285
+ const existing = field.admin.disabled;
286
+ if (existing === undefined) {
287
+ field.admin.disabled = {
288
+ bulkEdit: true
289
+ };
290
+ } else if (existing !== true && typeof existing === 'object' && existing.bulkEdit === undefined) {
291
+ field.admin.disabled = {
292
+ ...existing,
293
+ bulkEdit: true
294
+ };
295
+ }
303
296
  }
304
297
  // Timezone field insertion
305
298
  if (field.type === 'date' && field.timezone) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type {\n CollectionConfig,\n SanitizedJoin,\n SanitizedJoins,\n} from '../../collections/config/types.js'\nimport type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { GlobalConfig } from '../../globals/config/types.js'\nimport type { OrderableJoinInfo } from './sanitizeJoinField.js'\nimport type { Field } from './types.js'\n\nimport {\n DuplicateFieldName,\n InvalidConfiguration,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingEditorProp,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { ReservedFieldName } from '../../errors/ReservedFieldName.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { validateTimezones } from '../../utilities/validateTimezones.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { baseTimezoneField } from '../baseFields/timezone/baseField.js'\nimport { defaultTimezones } from '../baseFields/timezone/defaultTimezones.js'\nimport { getFieldPaths } from '../getFieldPaths.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport { validations } from '../validations.js'\nimport {\n reservedAPIKeyFieldNames,\n reservedBaseAuthFieldNames,\n reservedBaseUploadFieldNames,\n reservedVerifyFieldNames,\n} from './reservedFieldNames.js'\nimport { sanitizeJoinField } from './sanitizeJoinField.js'\nimport { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } from './types.js'\n\ntype SanitizeFieldsArgs = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n globalConfig?: GlobalConfig\n /**\n * Used to prevent unnecessary sanitization of fields that are not top-level.\n */\n isTopLevelField?: boolean\n joinPath?: string\n /**\n * When not passed in, assume that join are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n /**\n * Tracker for orderable join fields - populated during sanitization\n */\n orderableJoins?: OrderableJoinInfo[]\n /**\n * A string of '-' separated indexes representing where\n * to find this field in a given field schema array.\n */\n parentIndexPath?: string\n parentIsLocalized: boolean\n /**\n * Path for parent fields relative to their position in the schema.\n */\n parentSchemaPath?: string\n polymorphicJoins?: SanitizedJoin[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport type SanitizeFieldArgs = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames: Set<string>\n field: Field\n globalConfig?: GlobalConfig\n /**\n * The index of this field in the parent fields array\n */\n index: number\n /**\n * Used to prevent unnecessary sanitization of fields that are not top-level.\n */\n isTopLevelField: boolean\n joinPath: string\n /**\n * When not passed in, assume that joins are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n /**\n * Tracker for orderable join fields - populated during sanitization\n */\n orderableJoins?: OrderableJoinInfo[]\n parentIndexPath: string\n parentIsLocalized: boolean\n parentSchemaPath: string\n polymorphicJoins?: SanitizedJoin[]\n requireFieldLevelRichTextEditor: boolean\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n validRelationships: null | string[]\n}\n\ntype SanitizeFieldResult = {\n /**\n * Fields to insert after this field (e.g., timezone field)\n */\n fieldsToInsert?: Field[]\n}\n\n/**\n * Sanitize a single field. Handles all per-field logic including:\n * - Validation setup\n * - Hooks/access/admin defaults\n * - Type-specific handling\n * - Recursive sanitization of nested fields\n *\n * @returns Result containing any fields to insert after this one\n */\nexport const sanitizeField = async ({\n collectionConfig,\n config,\n existingFieldNames,\n field,\n globalConfig,\n index,\n isTopLevelField,\n joinPath,\n joins,\n orderableJoins,\n parentIndexPath,\n parentIsLocalized,\n parentSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n}: SanitizeFieldArgs): Promise<SanitizeFieldResult> => {\n const result: SanitizeFieldResult = {}\n\n if ('_sanitized' in field && field._sanitized === true) {\n return result\n }\n\n if ('_sanitized' in field) {\n field._sanitized = true\n }\n\n if (!field.type) {\n throw new MissingFieldType(field)\n }\n\n const fieldAffectsData = _fieldAffectsData(field)\n\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath,\n parentSchemaPath,\n })\n\n // Reserved field name checks\n if (isTopLevelField && fieldAffectsData && field.name) {\n if (collectionConfig && collectionConfig.upload) {\n if (reservedBaseUploadFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n }\n\n if (\n collectionConfig &&\n collectionConfig.auth &&\n typeof collectionConfig.auth === 'object' &&\n !collectionConfig.auth.disableLocalStrategy\n ) {\n if (reservedBaseAuthFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n\n if (collectionConfig.auth.verify) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n if (reservedAPIKeyFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n if (reservedVerifyFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n }\n }\n }\n\n // Invalid field name check\n if (fieldAffectsData && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n typeof field.label !== 'function' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n // Checkbox default\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n // Join field sanitization\n if (field.type === 'join') {\n sanitizeJoinField({\n config,\n field,\n joinPath,\n joins,\n orderableJoins,\n parentIsLocalized,\n polymorphicJoins,\n })\n }\n\n // Relationship/upload validation\n if (field.type === 'relationship' || field.type === 'upload') {\n if (Array.isArray(field.relationTo) && field.relationTo.length === 0) {\n throw new Error(\n `Field \"${field.name}\" of type \"${field.type}\" has an empty relationTo array. At least one collection must be specified.`,\n )\n }\n\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]\n\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n field.minRows = field.min\n }\n\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n field.maxRows = field.max\n }\n }\n\n // Upload isSortable default\n if (field.type === 'upload') {\n if (!field.admin || !('isSortable' in field.admin)) {\n field.admin = {\n isSortable: true,\n ...field.admin,\n }\n }\n }\n\n // Array ID field\n if (field.type === 'array' && field.fields) {\n const hasCustomID = field.fields.some((f) => 'name' in f && f.name === 'id')\n if (!hasCustomID) {\n field.fields.push(baseIDField)\n }\n }\n\n // Blocks/array labels\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (typeof field.localized !== 'undefined') {\n let shouldDisableLocalized = !config.localization\n\n if (\n process.env.NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized !== 'true' &&\n parentIsLocalized &&\n // @todo PAYLOAD_DO_NOT_SANITIZE_LOCALIZED_PROPERTY=true will be the default in 4.0\n process.env.PAYLOAD_DO_NOT_SANITIZE_LOCALIZED_PROPERTY !== 'true'\n ) {\n shouldDisableLocalized = true\n }\n\n if (shouldDisableLocalized) {\n delete field.localized\n }\n }\n\n if (typeof field.validate === 'undefined') {\n if ('virtual' in field && field.virtual) {\n field.validate = (): true => true\n } else {\n const defaultValidate = validations[field.type as keyof typeof validations]\n if (defaultValidate) {\n field.validate = (val: any, options: any) =>\n defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = (): true => true\n }\n }\n }\n\n if (!field.hooks) {\n field.hooks = {}\n }\n\n if (!field.access) {\n field.access = {}\n }\n\n setDefaultBeforeDuplicate(field, parentIsLocalized)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if ('virtual' in field && field.virtual && field.admin.readOnly !== false && fieldAffectsData) {\n field.admin.readOnly = true\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({\n config: _config,\n isRoot: requireFieldLevelRichTextEditor,\n parentIsLocalized: (parentIsLocalized || field.localized)!,\n })\n }\n\n if (field.editor.i18n && Object.keys(field.editor.i18n).length >= 0) {\n config.i18n!.translations = deepMergeSimple(config.i18n!.translations!, field.editor.i18n)\n }\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n if (field.blockReferences && field.blocks?.length) {\n throw new Error('You cannot have both blockReferences and blocks in the same blocks field')\n }\n\n const blockSlugs: string[] = []\n\n for (const block of field.blockReferences ?? field.blocks) {\n const blockSlug = typeof block === 'string' ? block : block.slug\n\n if (blockSlugs.includes(blockSlug)) {\n throw new DuplicateFieldName(blockSlug)\n }\n\n blockSlugs.push(blockSlug)\n\n if (typeof block === 'string') {\n continue\n }\n\n if (block._sanitized === true) {\n continue\n }\n\n block._sanitized = true\n block.fields = block.fields.concat(baseBlockFields)\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n isTopLevelField: false,\n parentIndexPath: '',\n parentIsLocalized: (parentIsLocalized || field.localized)!,\n parentSchemaPath: schemaPath + '.' + block.slug,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: fieldAffectsData ? new Set() : existingFieldNames,\n fields: field.fields,\n isTopLevelField: isTopLevelField && !fieldAffectsData,\n joinPath: fieldAffectsData ? `${joinPath ? joinPath + '.' : ''}${field.name}` : joinPath,\n joins,\n orderableJoins,\n parentIndexPath: fieldAffectsData ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || fieldIsLocalized(field),\n parentSchemaPath: schemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]!\n\n const isNamedTab = tabHasName(tab)\n\n if (isNamedTab && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n const { indexPath: tabIndexPath, schemaPath: tabSchemaPath } = getFieldPaths({\n field: tab,\n index: j,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n })\n\n if (\n 'admin' in tab &&\n tab.admin?.condition &&\n typeof tab.admin.condition === 'function' &&\n !tab.id\n ) {\n tab.id = tabSchemaPath\n }\n\n tab.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: isNamedTab ? new Set() : existingFieldNames,\n fields: tab.fields,\n isTopLevelField: isTopLevelField && !isNamedTab,\n joinPath: isNamedTab ? `${joinPath ? joinPath + '.' : ''}${tab.name}` : joinPath,\n joins,\n orderableJoins,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentIsLocalized: parentIsLocalized || (isNamedTab && tab.localized)!,\n parentSchemaPath: tabSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n field.tabs[j] = tab\n }\n }\n\n if (field.type === 'ui' && typeof field.admin.disableBulkEdit === 'undefined') {\n field.admin.disableBulkEdit = true\n }\n\n // Timezone field insertion\n if (field.type === 'date' && field.timezone) {\n const name = field.name + '_tz'\n\n let defaultTimezone =\n field.timezone && typeof field.timezone === 'object'\n ? field.timezone.defaultTimezone\n : config.admin?.timezones?.defaultTimezone\n\n const required =\n field.required ||\n (field.timezone && typeof field.timezone === 'object' && field.timezone.required)\n\n const supportedTimezones =\n field.timezone && typeof field.timezone === 'object' && field.timezone.supportedTimezones\n ? field.timezone.supportedTimezones\n : config.admin?.timezones?.supportedTimezones\n\n const options =\n typeof supportedTimezones === 'function'\n ? supportedTimezones({ defaultTimezones })\n : supportedTimezones\n\n validateTimezones({\n source: `field \"${field.name}\" timezone.supportedTimezones`,\n timezones: options,\n })\n\n if (options && options.length === 1 && options[0]?.value) {\n defaultTimezone = options[0].value\n }\n\n // Generate label for timezone field\n const timezoneLabel = typeof field.label === 'string' ? `${field.label} Tz` : toWords(name)\n\n const baseField = baseTimezoneField({\n name,\n defaultValue: defaultTimezone,\n label: timezoneLabel,\n options,\n required,\n })\n\n // Apply override if provided\n const timezoneField =\n typeof field.timezone === 'object' && typeof field.timezone.override === 'function'\n ? field.timezone.override({ baseField })\n : baseField\n\n result.fieldsToInsert = [timezoneField]\n }\n\n // Virtual field handling\n if ('virtual' in field && typeof field.virtual === 'string') {\n const virtualField = field\n const configFields = (collectionConfig || globalConfig)?.fields\n if (configFields) {\n let flattenFields = flattenAllFields({ fields: configFields })\n const paths = field.virtual.split('.')\n let isHasMany = false\n\n for (const [idx, segment] of paths.entries()) {\n const foundField = flattenFields.find((e) => e.name === segment)\n if (!foundField) {\n break\n }\n\n if (\n foundField.type === 'group' ||\n foundField.type === 'tab' ||\n foundField.type === 'array'\n ) {\n flattenFields = foundField.flattenedFields\n } else if (\n (foundField.type === 'relationship' || foundField.type === 'upload') &&\n idx !== paths.length - 1 &&\n typeof foundField.relationTo === 'string'\n ) {\n if (\n foundField.hasMany &&\n (virtualField.type === 'text' ||\n virtualField.type === 'number' ||\n virtualField.type === 'select')\n ) {\n if (isHasMany) {\n throw new InvalidConfiguration(\n `Virtual field ${virtualField.name} in ${globalConfig ? `global ${globalConfig.slug}` : `collection ${collectionConfig?.slug}`} references 2 or more hasMany relationships on the path ${virtualField.virtual} which is not allowed.`,\n )\n }\n\n isHasMany = true\n virtualField.hasMany = true\n }\n const relatedCollection = config.collections?.find(\n (e) => e.slug === foundField.relationTo,\n )\n if (relatedCollection) {\n flattenFields = flattenAllFields({ fields: relatedCollection.fields })\n }\n }\n }\n }\n }\n\n return result\n}\n\nexport const sanitizeFields = async ({\n collectionConfig,\n config,\n existingFieldNames = new Set(),\n fields,\n globalConfig,\n isTopLevelField = true,\n joinPath = '',\n joins,\n orderableJoins,\n parentIndexPath = '',\n parentIsLocalized,\n parentSchemaPath = '',\n polymorphicJoins,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: SanitizeFieldsArgs): Promise<Field[]> => {\n if (!fields) {\n return []\n }\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n\n const result = await sanitizeField({\n collectionConfig,\n config,\n existingFieldNames,\n field,\n globalConfig,\n index: i,\n isTopLevelField,\n joinPath,\n joins,\n orderableJoins,\n parentIndexPath,\n parentIsLocalized,\n parentSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n fields[i] = field\n\n if (result.fieldsToInsert?.length) {\n fields.splice(i + 1, 0, ...result.fieldsToInsert)\n i += result.fieldsToInsert.length\n }\n }\n\n return fields\n}\n"],"names":["deepMergeSimple","DuplicateFieldName","InvalidConfiguration","InvalidFieldName","InvalidFieldRelationship","MissingEditorProp","MissingFieldType","ReservedFieldName","flattenAllFields","formatLabels","toWords","validateTimezones","baseBlockFields","baseIDField","baseTimezoneField","defaultTimezones","getFieldPaths","setDefaultBeforeDuplicate","validations","reservedAPIKeyFieldNames","reservedBaseAuthFieldNames","reservedBaseUploadFieldNames","reservedVerifyFieldNames","sanitizeJoinField","fieldAffectsData","_fieldAffectsData","fieldIsLocalized","tabHasName","sanitizeField","collectionConfig","config","existingFieldNames","field","globalConfig","index","isTopLevelField","joinPath","joins","orderableJoins","parentIndexPath","parentIsLocalized","parentSchemaPath","polymorphicJoins","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","result","_sanitized","type","indexPath","schemaPath","name","upload","includes","auth","disableLocalStrategy","verify","label","defaultValue","required","Array","isArray","relationTo","length","Error","relationships","forEach","relationship","min","minRows","console","warn","max","maxRows","admin","isSortable","fields","hasCustomID","some","f","push","labels","has","add","localized","shouldDisableLocalized","localization","process","env","NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized","PAYLOAD_DO_NOT_SANITIZE_LOCALIZED_PROPERTY","validate","virtual","defaultValidate","val","options","hooks","access","readOnly","sanitizeRichText","_config","editor","isRoot","i18n","Object","keys","translations","blocks","blockReferences","blockSlugs","block","blockSlug","slug","concat","sanitizeFields","Set","j","tabs","tab","isNamedTab","tabIndexPath","tabSchemaPath","condition","id","disableBulkEdit","timezone","defaultTimezone","timezones","supportedTimezones","source","value","timezoneLabel","baseField","timezoneField","override","fieldsToInsert","virtualField","configFields","flattenFields","paths","split","isHasMany","idx","segment","entries","foundField","find","e","flattenedFields","hasMany","relatedCollection","collections","i","splice"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type {\n CollectionConfig,\n SanitizedJoin,\n SanitizedJoins,\n} from '../../collections/config/types.js'\nimport type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { GlobalConfig } from '../../globals/config/types.js'\nimport type { OrderableJoinInfo } from './sanitizeJoinField.js'\nimport type { Field } from './types.js'\n\nimport {\n DuplicateFieldName,\n InvalidConfiguration,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingEditorProp,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { ReservedFieldName } from '../../errors/ReservedFieldName.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { validateTimezones } from '../../utilities/validateTimezones.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { baseTimezoneField } from '../baseFields/timezone/baseField.js'\nimport { defaultTimezones } from '../baseFields/timezone/defaultTimezones.js'\nimport { getFieldPaths } from '../getFieldPaths.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport { validations } from '../validations.js'\nimport {\n reservedAPIKeyFieldNames,\n reservedBaseAuthFieldNames,\n reservedBaseUploadFieldNames,\n reservedVerifyFieldNames,\n} from './reservedFieldNames.js'\nimport { sanitizeJoinField } from './sanitizeJoinField.js'\nimport { fieldAffectsData as _fieldAffectsData, fieldIsLocalized, tabHasName } from './types.js'\n\ntype SanitizeFieldsArgs = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n globalConfig?: GlobalConfig\n /**\n * Used to prevent unnecessary sanitization of fields that are not top-level.\n */\n isTopLevelField?: boolean\n joinPath?: string\n /**\n * When not passed in, assume that join are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n /**\n * Tracker for orderable join fields - populated during sanitization\n */\n orderableJoins?: OrderableJoinInfo[]\n /**\n * A string of '-' separated indexes representing where\n * to find this field in a given field schema array.\n */\n parentIndexPath?: string\n parentIsLocalized: boolean\n /**\n * Path for parent fields relative to their position in the schema.\n */\n parentSchemaPath?: string\n polymorphicJoins?: SanitizedJoin[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport type SanitizeFieldArgs = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames: Set<string>\n field: Field\n globalConfig?: GlobalConfig\n /**\n * The index of this field in the parent fields array\n */\n index: number\n /**\n * Used to prevent unnecessary sanitization of fields that are not top-level.\n */\n isTopLevelField: boolean\n joinPath: string\n /**\n * When not passed in, assume that joins are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n /**\n * Tracker for orderable join fields - populated during sanitization\n */\n orderableJoins?: OrderableJoinInfo[]\n parentIndexPath: string\n parentIsLocalized: boolean\n parentSchemaPath: string\n polymorphicJoins?: SanitizedJoin[]\n requireFieldLevelRichTextEditor: boolean\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n validRelationships: null | string[]\n}\n\ntype SanitizeFieldResult = {\n /**\n * Fields to insert after this field (e.g., timezone field)\n */\n fieldsToInsert?: Field[]\n}\n\n/**\n * Sanitize a single field. Handles all per-field logic including:\n * - Validation setup\n * - Hooks/access/admin defaults\n * - Type-specific handling\n * - Recursive sanitization of nested fields\n *\n * @returns Result containing any fields to insert after this one\n */\nexport const sanitizeField = async ({\n collectionConfig,\n config,\n existingFieldNames,\n field,\n globalConfig,\n index,\n isTopLevelField,\n joinPath,\n joins,\n orderableJoins,\n parentIndexPath,\n parentIsLocalized,\n parentSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n}: SanitizeFieldArgs): Promise<SanitizeFieldResult> => {\n const result: SanitizeFieldResult = {}\n\n if ('_sanitized' in field && field._sanitized === true) {\n return result\n }\n\n if ('_sanitized' in field) {\n field._sanitized = true\n }\n\n if (!field.type) {\n throw new MissingFieldType(field)\n }\n\n const fieldAffectsData = _fieldAffectsData(field)\n\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath,\n parentSchemaPath,\n })\n\n // Reserved field name checks\n if (isTopLevelField && fieldAffectsData && field.name) {\n if (collectionConfig && collectionConfig.upload) {\n if (reservedBaseUploadFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n }\n\n if (\n collectionConfig &&\n collectionConfig.auth &&\n typeof collectionConfig.auth === 'object' &&\n !collectionConfig.auth.disableLocalStrategy\n ) {\n if (reservedBaseAuthFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n\n if (collectionConfig.auth.verify) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n if (reservedAPIKeyFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n if (reservedVerifyFieldNames.includes(field.name)) {\n throw new ReservedFieldName(field, field.name)\n }\n }\n }\n }\n\n // Invalid field name check\n if (fieldAffectsData && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n typeof field.label !== 'function' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n // Checkbox default\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n // Join field sanitization\n if (field.type === 'join') {\n sanitizeJoinField({\n config,\n field,\n joinPath,\n joins,\n orderableJoins,\n parentIsLocalized,\n polymorphicJoins,\n })\n }\n\n // Relationship/upload validation\n if (field.type === 'relationship' || field.type === 'upload') {\n if (Array.isArray(field.relationTo) && field.relationTo.length === 0) {\n throw new Error(\n `Field \"${field.name}\" of type \"${field.type}\" has an empty relationTo array. At least one collection must be specified.`,\n )\n }\n\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]\n\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n }\n\n // Upload isSortable default\n if (field.type === 'upload') {\n if (!field.admin || !('isSortable' in field.admin)) {\n field.admin = {\n isSortable: true,\n ...field.admin,\n }\n }\n }\n\n // Array ID field\n if (field.type === 'array' && field.fields) {\n const hasCustomID = field.fields.some((f) => 'name' in f && f.name === 'id')\n if (!hasCustomID) {\n field.fields.push(baseIDField)\n }\n }\n\n // Blocks/array labels\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (typeof field.localized !== 'undefined') {\n if (!config.localization) {\n delete field.localized\n }\n }\n\n if (typeof field.validate === 'undefined') {\n if ('virtual' in field && field.virtual) {\n field.validate = (): true => true\n } else {\n const defaultValidate = validations[field.type as keyof typeof validations]\n if (defaultValidate) {\n field.validate = (val: any, options: any) =>\n defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = (): true => true\n }\n }\n }\n\n if (!field.hooks) {\n field.hooks = {}\n }\n\n if (!field.access) {\n field.access = {}\n }\n\n setDefaultBeforeDuplicate(field, parentIsLocalized)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if ('virtual' in field && field.virtual && field.admin.readOnly !== false && fieldAffectsData) {\n field.admin.readOnly = true\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({\n config: _config,\n isRoot: requireFieldLevelRichTextEditor,\n parentIsLocalized: (parentIsLocalized || field.localized)!,\n })\n }\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n if (field.blockReferences && field.blocks?.length) {\n throw new Error('You cannot have both blockReferences and blocks in the same blocks field')\n }\n\n const blockSlugs: string[] = []\n\n for (const block of field.blockReferences ?? field.blocks) {\n const blockSlug = typeof block === 'string' ? block : block.slug\n\n if (blockSlugs.includes(blockSlug)) {\n throw new DuplicateFieldName(blockSlug)\n }\n\n blockSlugs.push(blockSlug)\n\n if (typeof block === 'string') {\n continue\n }\n\n if (block._sanitized === true) {\n continue\n }\n\n block._sanitized = true\n block.fields = block.fields.concat(baseBlockFields)\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n isTopLevelField: false,\n parentIndexPath: '',\n parentIsLocalized: (parentIsLocalized || field.localized)!,\n parentSchemaPath: schemaPath + '.' + block.slug,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: fieldAffectsData ? new Set() : existingFieldNames,\n fields: field.fields,\n isTopLevelField: isTopLevelField && !fieldAffectsData,\n joinPath: fieldAffectsData ? `${joinPath ? joinPath + '.' : ''}${field.name}` : joinPath,\n joins,\n orderableJoins,\n parentIndexPath: fieldAffectsData ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || fieldIsLocalized(field),\n parentSchemaPath: schemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]!\n\n const isNamedTab = tabHasName(tab)\n\n if (isNamedTab && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n const { indexPath: tabIndexPath, schemaPath: tabSchemaPath } = getFieldPaths({\n field: tab,\n index: j,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n })\n\n if (\n 'admin' in tab &&\n tab.admin?.condition &&\n typeof tab.admin.condition === 'function' &&\n !tab.id\n ) {\n tab.id = tabSchemaPath\n }\n\n tab.fields = await sanitizeFields({\n collectionConfig,\n config,\n existingFieldNames: isNamedTab ? new Set() : existingFieldNames,\n fields: tab.fields,\n isTopLevelField: isTopLevelField && !isNamedTab,\n joinPath: isNamedTab ? `${joinPath ? joinPath + '.' : ''}${tab.name}` : joinPath,\n joins,\n orderableJoins,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentIsLocalized: parentIsLocalized || (isNamedTab && tab.localized)!,\n parentSchemaPath: tabSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n field.tabs[j] = tab\n }\n }\n\n if (field.type === 'ui') {\n const existing = field.admin.disabled\n if (existing === undefined) {\n field.admin.disabled = { bulkEdit: true }\n } else if (\n existing !== true &&\n typeof existing === 'object' &&\n existing.bulkEdit === undefined\n ) {\n field.admin.disabled = { ...existing, bulkEdit: true }\n }\n }\n\n // Timezone field insertion\n if (field.type === 'date' && field.timezone) {\n const name = field.name + '_tz'\n\n let defaultTimezone =\n field.timezone && typeof field.timezone === 'object'\n ? field.timezone.defaultTimezone\n : config.admin?.timezones?.defaultTimezone\n\n const required =\n field.required ||\n (field.timezone && typeof field.timezone === 'object' && field.timezone.required)\n\n const supportedTimezones =\n field.timezone && typeof field.timezone === 'object' && field.timezone.supportedTimezones\n ? field.timezone.supportedTimezones\n : config.admin?.timezones?.supportedTimezones\n\n const options =\n typeof supportedTimezones === 'function'\n ? supportedTimezones({ defaultTimezones })\n : supportedTimezones\n\n validateTimezones({\n source: `field \"${field.name}\" timezone.supportedTimezones`,\n timezones: options,\n })\n\n if (options && options.length === 1 && options[0]?.value) {\n defaultTimezone = options[0].value\n }\n\n // Generate label for timezone field\n const timezoneLabel = typeof field.label === 'string' ? `${field.label} Tz` : toWords(name)\n\n const baseField = baseTimezoneField({\n name,\n defaultValue: defaultTimezone,\n label: timezoneLabel,\n options,\n required,\n })\n\n // Apply override if provided\n const timezoneField =\n typeof field.timezone === 'object' && typeof field.timezone.override === 'function'\n ? field.timezone.override({ baseField })\n : baseField\n\n result.fieldsToInsert = [timezoneField]\n }\n\n // Virtual field handling\n if ('virtual' in field && typeof field.virtual === 'string') {\n const virtualField = field\n const configFields = (collectionConfig || globalConfig)?.fields\n if (configFields) {\n let flattenFields = flattenAllFields({ fields: configFields })\n const paths = field.virtual.split('.')\n let isHasMany = false\n\n for (const [idx, segment] of paths.entries()) {\n const foundField = flattenFields.find((e) => e.name === segment)\n if (!foundField) {\n break\n }\n\n if (\n foundField.type === 'group' ||\n foundField.type === 'tab' ||\n foundField.type === 'array'\n ) {\n flattenFields = foundField.flattenedFields\n } else if (\n (foundField.type === 'relationship' || foundField.type === 'upload') &&\n idx !== paths.length - 1 &&\n typeof foundField.relationTo === 'string'\n ) {\n if (\n foundField.hasMany &&\n (virtualField.type === 'text' ||\n virtualField.type === 'number' ||\n virtualField.type === 'select')\n ) {\n if (isHasMany) {\n throw new InvalidConfiguration(\n `Virtual field ${virtualField.name} in ${globalConfig ? `global ${globalConfig.slug}` : `collection ${collectionConfig?.slug}`} references 2 or more hasMany relationships on the path ${virtualField.virtual} which is not allowed.`,\n )\n }\n\n isHasMany = true\n virtualField.hasMany = true\n }\n const relatedCollection = config.collections?.find(\n (e) => e.slug === foundField.relationTo,\n )\n if (relatedCollection) {\n flattenFields = flattenAllFields({ fields: relatedCollection.fields })\n }\n }\n }\n }\n }\n\n return result\n}\n\nexport const sanitizeFields = async ({\n collectionConfig,\n config,\n existingFieldNames = new Set(),\n fields,\n globalConfig,\n isTopLevelField = true,\n joinPath = '',\n joins,\n orderableJoins,\n parentIndexPath = '',\n parentIsLocalized,\n parentSchemaPath = '',\n polymorphicJoins,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: SanitizeFieldsArgs): Promise<Field[]> => {\n if (!fields) {\n return []\n }\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n\n const result = await sanitizeField({\n collectionConfig,\n config,\n existingFieldNames,\n field,\n globalConfig,\n index: i,\n isTopLevelField,\n joinPath,\n joins,\n orderableJoins,\n parentIndexPath,\n parentIsLocalized,\n parentSchemaPath,\n polymorphicJoins,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n fields[i] = field\n\n if (result.fieldsToInsert?.length) {\n fields.splice(i + 1, 0, ...result.fieldsToInsert)\n i += result.fieldsToInsert.length\n }\n }\n\n return fields\n}\n"],"names":["DuplicateFieldName","InvalidConfiguration","InvalidFieldName","InvalidFieldRelationship","MissingEditorProp","MissingFieldType","ReservedFieldName","flattenAllFields","formatLabels","toWords","validateTimezones","baseBlockFields","baseIDField","baseTimezoneField","defaultTimezones","getFieldPaths","setDefaultBeforeDuplicate","validations","reservedAPIKeyFieldNames","reservedBaseAuthFieldNames","reservedBaseUploadFieldNames","reservedVerifyFieldNames","sanitizeJoinField","fieldAffectsData","_fieldAffectsData","fieldIsLocalized","tabHasName","sanitizeField","collectionConfig","config","existingFieldNames","field","globalConfig","index","isTopLevelField","joinPath","joins","orderableJoins","parentIndexPath","parentIsLocalized","parentSchemaPath","polymorphicJoins","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","result","_sanitized","type","indexPath","schemaPath","name","upload","includes","auth","disableLocalStrategy","verify","label","defaultValue","required","Array","isArray","relationTo","length","Error","relationships","forEach","relationship","admin","isSortable","fields","hasCustomID","some","f","push","labels","has","add","localized","localization","validate","virtual","defaultValidate","val","options","hooks","access","readOnly","sanitizeRichText","_config","editor","isRoot","blocks","blockReferences","blockSlugs","block","blockSlug","slug","concat","sanitizeFields","Set","j","tabs","tab","isNamedTab","tabIndexPath","tabSchemaPath","condition","id","existing","disabled","undefined","bulkEdit","timezone","defaultTimezone","timezones","supportedTimezones","source","value","timezoneLabel","baseField","timezoneField","override","fieldsToInsert","virtualField","configFields","flattenFields","paths","split","isHasMany","idx","segment","entries","foundField","find","e","flattenedFields","hasMany","relatedCollection","collections","i","splice"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeJoinField.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitizeJoinField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI/D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAA;IACtB,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAKD,eAAO,MAAM,iBAAiB,2GAS3B;IACD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,SA8GA,CAAA"}
1
+ {"version":3,"file":"sanitizeJoinField.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitizeJoinField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI/D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAA;IACtB,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAKD,eAAO,MAAM,iBAAiB,GAAI,wGAS/B;IACD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAA;IAClC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,SAiHA,CAAA"}
@@ -7,6 +7,9 @@ export const sanitizeJoinField = ({ config, field, joinPath, joins, orderableJoi
7
7
  if (typeof joins === 'undefined') {
8
8
  throw new APIError('Join fields cannot be added to arrays, blocks or globals.');
9
9
  }
10
+ if (!field.admin) {
11
+ field.admin = {};
12
+ }
10
13
  if (typeof field.maxDepth === 'undefined') {
11
14
  field.maxDepth = 1;
12
15
  }